diff --git a/.eslintignore b/.eslintignore index 0dfc523d92..b616521ccc 100644 --- a/.eslintignore +++ b/.eslintignore @@ -1,8 +1,8 @@ missing-translations-strings.js language-mapping-list.js +*.d.ts scripts/extensions/*/node_modules scripts/extensions/**/dist -scripts/extensions/**/refs.d.ts end-to-end-testing-helpers/dist end-to-end-testing-helpers/node_modules spec/**/*.js \ No newline at end of file diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index cf1cc9b465..c9656cf040 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -14,18 +14,12 @@ jobs: - uses: actions/setup-node@v1 with: - node-version: '12.x' + node-version: '10.x' # avoid file watch limit error - run: echo fs.inotify.max_user_watches=524288 | sudo tee -a /etc/sysctl.conf && sudo sysctl -p - run: npm ci - - # running @superdesk/build-tools is required to generate instance configuration schema - # otherwise imports would not be found and linting/unit tests would fail - - run: npm install && npm run build - working-directory: e2e/client - - run: npm run test e2e: @@ -41,7 +35,7 @@ jobs: - uses: actions/setup-node@v1 with: - node-version: '12.x' + node-version: '10.x' - name: Start e2e server diff --git a/.gitignore b/.gitignore index bca1114cb0..f8e7def41f 100644 --- a/.gitignore +++ b/.gitignore @@ -12,7 +12,6 @@ e2e-test-results templates-cache.generated.js styles/extension-styles.generated.css e2e/client/specs/**/*.js -*.generated.ts .env npm-debug.log index.html diff --git a/CHANGELOG.md b/CHANGELOG.md index 99c17b68fd..0966fb1ff6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,6 @@ # Superdesk Client Changelog -## [2.2.0] 2021-05-04 +## [2.2.0] 2021-05-05 [Changes](https://github.com/superdesk/superdesk-client-core/milestone/87?closed=1) diff --git a/build-tools/package-lock.json b/build-tools/package-lock.json index 1555ea6e65..5a526be68d 100644 --- a/build-tools/package-lock.json +++ b/build-tools/package-lock.json @@ -1,6 +1,6 @@ { "name": "@superdesk/build-tools", - "version": "2.0.1", + "version": "1.0.16", "lockfileVersion": 1, "requires": true, "dependencies": { @@ -202,9 +202,9 @@ "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=" }, "lodash": { - "version": "4.17.19", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.19.tgz", - "integrity": "sha512-JNvd8XER9GQX0v2qJgsaN/mzFCNA5BRe/j8JN9d+tWyGLSodKQHKFicdwNYzWwI3wjRnaKPsGj1XkBjx/F96DQ==" + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" }, "minimatch": { "version": "3.0.4", diff --git a/build-tools/package.json b/build-tools/package.json index 9c45ee1f66..1f36604f05 100644 --- a/build-tools/package.json +++ b/build-tools/package.json @@ -1,6 +1,6 @@ { "name": "@superdesk/build-tools", - "version": "2.0.1", + "version": "1.0.16", "publishConfig": { "access": "public" }, diff --git a/build-tools/src/extensions/extract-translations.js b/build-tools/src/extensions/extract-translations.js index fa72431578..bd6a9bf9c8 100644 --- a/build-tools/src/extensions/extract-translations.js +++ b/build-tools/src/extensions/extract-translations.js @@ -3,7 +3,7 @@ const fs = require('fs'); const path = require('path'); const getExtensionDirectoriesSync = require('./get-extension-directories-sync'); -const {GettextExtractor, JsExtractors, HtmlExtractors} = require('gettext-extractor'); +const {GettextExtractor, JsExtractors} = require('gettext-extractor'); const extractor = new GettextExtractor(); function extractTranslations(clientDir) { @@ -11,9 +11,8 @@ function extractTranslations(clientDir) { const package = JSON.parse(fs.readFileSync(path.join(extensionRootPath, 'package.json'), 'utf-8')); const paths = _.get(package, 'superdeskExtension.translations-extract-paths'); - if (paths == null || !Array.isArray(paths)) { - continue; + return null; } const pathsAbsolute = paths.map((p) => path.join(extensionRootPath, p)); @@ -39,19 +38,6 @@ function extractTranslations(clientDir) { jsParser.parseFilesGlob(`${_path}/**/*.@(ts|js|tsx|jsx)`); } - const htmlParser = extractor - .createHtmlParser([ - HtmlExtractors.elementContent('[translate]', { - attributes: { - textPlural: 'translate-plural', - }, - }), - ]); - - for (const _path of pathsAbsolute) { - htmlParser.parseFilesGlob(`${_path}/**/*.@(html)`); - } - extractor.savePotFile(`${extensionRootPath}/translations.generated.pot`); } } diff --git a/build-tools/src/generate-instance-configuration-schema.js b/build-tools/src/generate-instance-configuration-schema.js deleted file mode 100644 index ff4f9085e7..0000000000 --- a/build-tools/src/generate-instance-configuration-schema.js +++ /dev/null @@ -1,71 +0,0 @@ -const fs = require('fs'); -const path = require('path'); -var execSync = require('child_process').execSync; -var _ = require('lodash'); - -function escapeSingleQuoteAsHtml(str) { - return str.replace(/'/g, '''); -} - -function unescapeSingleQuoteAsHtml(str) { - return str.replace(/'/g, '\\\''); -} - -function addTranslations(branch) { - if (branch.properties == null) { - return branch; - } - - branch.translations = Object.keys(branch.properties).reduce((acc, property) => { - // gettext call will be unwrapped from the string later with regex - acc[property] = `gettext('${_.lowerCase(escapeSingleQuoteAsHtml(property))}')`; - - return acc; - }, {}); - - for (const property of Object.keys(branch.properties)) { - // handle nested properties - branch.properties[property] = addTranslations(branch.properties[property]); - - // handle nested properties inside arrays - if (branch.properties[property].items != null && branch.properties[property].items.properties != null) { - branch.properties[property].items = addTranslations(branch.properties[property].items); - } - - // translate description - if (typeof branch.properties[property].description === 'string') { - branch.properties[property].description = - `gettext('${escapeSingleQuoteAsHtml(branch.properties[property].description)}')`; - } - } - - return branch; -} - -function generateInstanceConfigurationSchema(clientDirAbs) { - const file = path.join(clientDirAbs, 'node_modules/superdesk-core/scripts/core/superdesk-api.d.ts'); - const configFile = path.join( - clientDirAbs, - 'node_modules/superdesk-core/scripts/instance-settings.generated.ts' - ); - const generatedSchema = JSON.parse( - execSync(`npx typescript-json-schema "${file}" IInstanceSettings --strictNullChecks --required`).toString() - ); - const schemaWithTranslations = unescapeSingleQuoteAsHtml( - JSON.stringify(addTranslations(generatedSchema), null, 4) - .replace(/"(gettext.+?)"/g, '$1') - ); - - const contents = -`/* eslint-disable quotes, comma-dangle */ -/* tslint:disable: trailing-comma max-line-length */ - -export const getInstanceConfigSchema = (gettext) => (${schemaWithTranslations}); -`; - - fs.writeFileSync(configFile, contents, 'utf-8'); -} - -module.exports = { - generateInstanceConfigurationSchema, -}; \ No newline at end of file diff --git a/build-tools/src/index.js b/build-tools/src/index.js index 3db2acd4ea..1dc5675b1e 100755 --- a/build-tools/src/index.js +++ b/build-tools/src/index.js @@ -9,7 +9,6 @@ const installExtensions = require('./extensions/install-extensions'); const {mergeTranslationsFromExtensions} = require('./extensions/translations'); const {extractTranslations} = require('./extensions/extract-translations'); const {namespaceCSS, watchCSS} = require('./extensions/css'); -const {generateInstanceConfigurationSchema} = require('./generate-instance-configuration-schema'); const {Command} = require('commander'); const program = new Command(); @@ -27,14 +26,6 @@ program.configureHelp({ }, }); -program.command('generate-instance-configuration-schema ') - .description('reads typescript interfaces and generates JSON schema that will be used to generate the UI') - .action((mainClientDir) => { - const clientDirAbs = path.join(currentDir, mainClientDir); - - generateInstanceConfigurationSchema(clientDirAbs); - }); - program.command('po-to-json ') .description('convert .po files in the directory to .json format that is used by Superdesk') .action((sourcePo, outputJson) => { @@ -48,8 +39,8 @@ program.command('build-root-repo ') .description('executes all actions required to prepare the main repo for usage') .action((mainClientDir) => { const clientDirAbs = path.join(currentDir, mainClientDir); - - generateInstanceConfigurationSchema(clientDirAbs); + const poDir = path.join(clientDirAbs, 'node_modules/superdesk-core/po'); + const translationsDir = path.join(currentDir, mainClientDir, 'dist/languages'); // build will fail if extensions are not installed installExtensions(clientDirAbs); @@ -60,9 +51,6 @@ program.command('build-root-repo ') {stdio: 'inherit'} ); - const poDir = path.join(clientDirAbs, 'node_modules/superdesk-core/po'); - const translationsDir = path.join(currentDir, mainClientDir, 'dist/languages'); - // translationsDir is only created after the build and would get removed if created before build poToJson(poDir, translationsDir); mergeTranslationsFromExtensions(clientDirAbs); diff --git a/e2e/client/specs/globals.d.ts b/e2e/client/specs/globals.d.ts index 29be44a903..2beb0b1f15 100644 --- a/e2e/client/specs/globals.d.ts +++ b/e2e/client/specs/globals.d.ts @@ -1,18 +1,10 @@ // testing declare const describe: any; - declare const xdescribe: any; - declare const fdescribe: any; - declare const beforeEach: any; - declare const afterEach: any; - declare const expect: any; - declare const it: any; - declare const fit: any; - declare const xit: any; diff --git a/e2e/client/specs/users_spec.ts b/e2e/client/specs/users_spec.ts index fb4a2265d4..5b48dbcb2c 100644 --- a/e2e/client/specs/users_spec.ts +++ b/e2e/client/specs/users_spec.ts @@ -39,7 +39,7 @@ describe('users', () => { it('can save and use language preferences', () => { userPreferences.setLang('Deutsch'); - browser.wait(ECE.elementToBeClickable(userPreferences.btnSave), 3000); + browser.wait(() => userPreferences.btnSave.isDisplayed(), 3000); userPreferences.btnSave.click(); browser.sleep(500); // wait for modal diff --git a/package-lock.json b/package-lock.json index 6d0dab5f5a..da34cf9f12 100644 --- a/package-lock.json +++ b/package-lock.json @@ -13,9 +13,9 @@ } }, "@babel/helper-validator-identifier": { - "version": "7.14.9", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.9.tgz", - "integrity": "sha512-pQYxPY0UP6IHISRitNe8bsijHex4TWZXi2HwKVsjPiltzlhse2znVcm9Ace510VT1kxIHjGJCZZQBX2gJDbo0g==" + "version": "7.15.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz", + "integrity": "sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w==" }, "@babel/highlight": { "version": "7.14.5", @@ -61,14 +61,14 @@ } }, "@babel/parser": { - "version": "7.15.3", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.15.3.tgz", - "integrity": "sha512-O0L6v/HvqbdJawj0iBEfVQMc3/6WP+AeOsovsIgBFyJaG+W2w7eqvZB7puddATmWuARlm1SX7DwxJ/JJUnDpEA==" + "version": "7.15.7", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.15.7.tgz", + "integrity": "sha512-rycZXvQ+xS9QyIcJ9HXeDWf1uxqlbVFAUq0Rq0dbc50Zb/+wUe/ehyfzGfm9KZZF0kBejYgxltBXocP+gKdL2g==" }, "@babel/runtime": { - "version": "7.15.3", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.15.3.tgz", - "integrity": "sha512-OvwMLqNXkCXSz1kSm58sEsNuhqOx/fKpnUnKnFB5v8uDda5bLNEHNgKPvhDN6IU0LDcnHQ90LlJ0Q6jnyBSIBA==", + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.15.4.tgz", + "integrity": "sha512-99catp6bHCaxr4sJ/DbTGgHS4+Rs2RVd2g7iOap6SLGPDknRK9ztKNsE/Fg6QhSeh1FGE5f6gHGQmvvn3I3xhw==", "requires": { "regenerator-runtime": "^0.13.4" }, @@ -140,33 +140,10 @@ "version": "github:superdesk/exif#431066d5930de646ceb96e48b57eaf76b0144223", "from": "github:superdesk/exif#431066d" }, - "@nodelib/fs.scandir": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", - "requires": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" - } - }, - "@nodelib/fs.stat": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==" - }, - "@nodelib/fs.walk": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", - "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", - "requires": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" - } - }, "@popperjs/core": { - "version": "2.9.3", - "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.9.3.tgz", - "integrity": "sha512-xDu17cEfh7Kid/d95kB6tZsLOmSWKCZKtprnhVepjsSaCij+lM3mItSJDuuHDMbCWTh8Ejmebwb+KONcCJ0eXQ==" + "version": "2.10.2", + "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.10.2.tgz", + "integrity": "sha512-IXf3XA7+XyN7CP9gGh/XB0UxVMlvARGEgGXLubFICsUMGz6Q+DU+i4gGlpOxTjKvXjkJDJC8YdqdKkDj9qZHEQ==" }, "@superdesk/build-tools": { "version": "file:build-tools", @@ -188,6 +165,18 @@ "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", "dev": true }, + "css": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/css/-/css-2.2.4.tgz", + "integrity": "sha512-oUnjmWpy0niI3x/mPL8dVEI1l7MnG3+HHyRPHf+YFSbK+svOhXpmSOcDURUh2aOCgl2grzrOPt1nHLuCVFULLw==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "source-map": "^0.6.1", + "source-map-resolve": "^0.5.2", + "urix": "^0.1.0" + } + }, "css-selector-tokenizer": { "version": "0.7.1", "resolved": "https://registry.npmjs.org/css-selector-tokenizer/-/css-selector-tokenizer-0.7.1.tgz", @@ -205,6 +194,50 @@ "integrity": "sha1-yBSQPkViM3GgR3tAEJqq++6t27Q=", "dev": true }, + "gettext-extractor": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/gettext-extractor/-/gettext-extractor-3.5.3.tgz", + "integrity": "sha512-9EgJ+hmbtAbATdMIvCj4WnrkeDWH6fv1z+IJJ1XCxdcUMGx6JQdVVFTdzJkSyIHh4td53ngoB5EQbavbKJU9Og==", + "dev": true, + "requires": { + "@types/glob": "5 - 7", + "@types/parse5": "^5", + "css-selector-parser": "^1.3", + "glob": "5 - 7", + "parse5": "5 - 6", + "pofile": "1.0.x", + "typescript": "2 - 4" + } + }, + "gettext.js": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/gettext.js/-/gettext.js-0.9.0.tgz", + "integrity": "sha512-24rhQBLGHxUM36Ma+VU3h4VRsSoFuGkdFGBQPiMr2Nw0LndKb4VxZbOQ1XiETPYEIiRm/wW4Rh3XYPKNTPXyWQ==", + "dev": true, + "requires": { + "po2json": "^0.4.0" + } + }, + "glob": { + "version": "7.1.7", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", + "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "lodash": { + "version": "4.17.19", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.19.tgz", + "integrity": "sha512-JNvd8XER9GQX0v2qJgsaN/mzFCNA5BRe/j8JN9d+tWyGLSodKQHKFicdwNYzWwI3wjRnaKPsGj1XkBjx/F96DQ==", + "dev": true + }, "rimraf": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", @@ -213,6 +246,12 @@ "requires": { "glob": "^7.1.3" } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true } } }, @@ -225,9 +264,9 @@ }, "dependencies": { "csstype": { - "version": "3.0.8", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.0.8.tgz", - "integrity": "sha512-jXKhWqXPmlUeoQnF/EhTtTl4C9SnrxSH/jZUih3jmO6lBKr99rP3/+FmrMj4EFpOXzMtXHAZkd3x0E6h6Fgflw==" + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.0.9.tgz", + "integrity": "sha512-rpw6JPxK6Rfg1zLOYCSwle2GFOOsnjmDYDaBwEcwoOg4qlsIVCN789VkBZDJAGi4T07gI4YSutR43t9Zz4Lzuw==" }, "dom-helpers": { "version": "5.2.1", @@ -298,14 +337,19 @@ } }, "@types/enzyme": { - "version": "3.10.9", - "resolved": "https://registry.npmjs.org/@types/enzyme/-/enzyme-3.10.9.tgz", - "integrity": "sha512-dx5UvcWe2Vtye6S9Hw2rFB7Ul9uMXOAje2FAbXvVYieQDNle9qPAo7DfvFMSztZ9NFiD3dVZ4JsRYGTrSLynJg==", + "version": "3.9.1", + "resolved": "https://registry.npmjs.org/@types/enzyme/-/enzyme-3.9.1.tgz", + "integrity": "sha512-CasnOP73BFE3/5JvGkod+oQtGOD1+CVWz9BV2iAqDFJ+sofL5gTiizSr8ZM3lpDY27ptC8yjAdrUCdv8diKKqw==", "requires": { "@types/cheerio": "*", "@types/react": "*" } }, + "@types/eslint-visitor-keys": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@types/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz", + "integrity": "sha512-OCutwjDZ4aFS6PB1UZ988C4YgwlBHJd6wCeQqaLdmadZ/7e+w79+hbMUFC1QXDNCmdyoRfAFdm0RypzwR+Qpag==" + }, "@types/glob": { "version": "7.1.4", "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.1.4.tgz", @@ -325,6 +369,11 @@ "hoist-non-react-statics": "^3.3.0" } }, + "@types/json-schema": { + "version": "7.0.9", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.9.tgz", + "integrity": "sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ==" + }, "@types/lodash": { "version": "4.14.117", "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.117.tgz", @@ -355,9 +404,9 @@ } }, "@types/node": { - "version": "16.9.1", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.9.1.tgz", - "integrity": "sha512-QpLcX9ZSsq3YYUUnD3nFDY8H7wctAhQj/TFKL8Ya8v5fMm3CFXxo8zStsLAl780ltoYoo1WvKUVGBQK+1ifr7g==" + "version": "16.10.2", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.10.2.tgz", + "integrity": "sha512-zCclL4/rx+W5SQTzFs9wyvvyCwoK9QtBpratqz2IYJ3O8Umrn0m3nsTv0wQBk9sRGpvUe9CwPDrQFB10f1FIjQ==" }, "@types/parse5": { "version": "5.0.3", @@ -412,110 +461,39 @@ "integrity": "sha512-vKx7WNQNZDyJveYcHAm9ZxhqSGLYwoyLhrHjLBOkw3a7cT76sTdjgtwyijhk1MaHyRIuSztcVwrUOO/NEu68Dw==", "dev": true }, - "@typescript-eslint/parser": { - "version": "4.30.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-4.30.0.tgz", - "integrity": "sha512-HJ0XuluSZSxeboLU7Q2VQ6eLlCwXPBOGnA7CqgBnz2Db3JRQYyBDJgQnop6TZ+rsbSx5gEdWhw4rE4mDa1FnZg==", + "@typescript-eslint/experimental-utils": { + "version": "2.16.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-2.16.0.tgz", + "integrity": "sha512-bXTmAztXpqxliDKZgvWkl+5dHeRN+jqXVZ16peKKFzSXVzT6mz8kgBpHiVzEKO2NZ8OCU7dG61K9sRS/SkUUFQ==", "requires": { - "@typescript-eslint/scope-manager": "4.30.0", - "@typescript-eslint/types": "4.30.0", - "@typescript-eslint/typescript-estree": "4.30.0", - "debug": "^4.3.1" + "@types/json-schema": "^7.0.3", + "@typescript-eslint/typescript-estree": "2.16.0", + "eslint-scope": "^5.0.0" } }, - "@typescript-eslint/scope-manager": { - "version": "4.30.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-4.30.0.tgz", - "integrity": "sha512-VJ/jAXovxNh7rIXCQbYhkyV2Y3Ac/0cVHP/FruTJSAUUm4Oacmn/nkN5zfWmWFEanN4ggP0vJSHOeajtHq3f8A==", + "@typescript-eslint/parser": { + "version": "2.16.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-2.16.0.tgz", + "integrity": "sha512-+w8dMaYETM9v6il1yYYkApMSiwgnqXWJbXrA94LAWN603vXHACsZTirJduyeBOJjA9wT6xuXe5zZ1iCUzoxCfw==", "requires": { - "@typescript-eslint/types": "4.30.0", - "@typescript-eslint/visitor-keys": "4.30.0" + "@types/eslint-visitor-keys": "^1.0.0", + "@typescript-eslint/experimental-utils": "2.16.0", + "@typescript-eslint/typescript-estree": "2.16.0", + "eslint-visitor-keys": "^1.1.0" } }, - "@typescript-eslint/types": { - "version": "4.30.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-4.30.0.tgz", - "integrity": "sha512-YKldqbNU9K4WpTNwBqtAerQKLLW/X2A/j4yw92e3ZJYLx+BpKLeheyzoPfzIXHfM8BXfoleTdiYwpsvVPvHrDw==" - }, "@typescript-eslint/typescript-estree": { - "version": "4.30.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-4.30.0.tgz", - "integrity": "sha512-6WN7UFYvykr/U0Qgy4kz48iGPWILvYL34xXJxvDQeiRE018B7POspNRVtAZscWntEPZpFCx4hcz/XBT+erenfg==", - "requires": { - "@typescript-eslint/types": "4.30.0", - "@typescript-eslint/visitor-keys": "4.30.0", - "debug": "^4.3.1", - "globby": "^11.0.3", - "is-glob": "^4.0.1", - "semver": "^7.3.5", - "tsutils": "^3.21.0" - }, - "dependencies": { - "array-union": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", - "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==" - }, - "globby": { - "version": "11.0.4", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.0.4.tgz", - "integrity": "sha512-9O4MVG9ioZJ08ffbcyVYyLOJLk5JQ688pJ4eMGLpdWLHq/Wr1D9BlriLQyL0E+jbkuePVZXYFj47QM/v093wHg==", - "requires": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.1.1", - "ignore": "^5.1.4", - "merge2": "^1.3.0", - "slash": "^3.0.0" - } - }, - "ignore": { - "version": "5.1.8", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz", - "integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==" - }, - "lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "requires": { - "yallist": "^4.0.0" - } - }, - "semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", - "requires": { - "lru-cache": "^6.0.0" - } - }, - "slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==" - }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" - } - } - }, - "@typescript-eslint/visitor-keys": { - "version": "4.30.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-4.30.0.tgz", - "integrity": "sha512-pNaaxDt/Ol/+JZwzP7MqWc8PJQTUhZwoee/PVlQ+iYoYhagccvoHnC9e4l+C/krQYYkENxznhVSDwClIbZVxRw==", + "version": "2.16.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-2.16.0.tgz", + "integrity": "sha512-hyrCYjFHISos68Bk5KjUAXw0pP/455qq9nxqB1KkT67Pxjcfw+r6Yhcmqnp8etFL45UexCHUMrADHH7dI/m2WQ==", "requires": { - "@typescript-eslint/types": "4.30.0", - "eslint-visitor-keys": "^2.0.0" - }, - "dependencies": { - "eslint-visitor-keys": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", - "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==" - } + "debug": "^4.1.1", + "eslint-visitor-keys": "^1.1.0", + "glob": "^7.1.6", + "is-glob": "^4.0.1", + "lodash": "^4.17.15", + "semver": "^6.3.0", + "tsutils": "^3.17.1" } }, "@yarnpkg/lockfile": { @@ -1011,9 +989,9 @@ "integrity": "sha1-+cjBN1fMHde8N5rHeyxipcKGjEA=" }, "are-we-there-yet": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz", - "integrity": "sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w==", + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.7.tgz", + "integrity": "sha512-nxwy40TuMiUGqMyRHgCSWZ9FM4VAoRP4xUYSTv5ImRog+h9yISPbVH7H8fASCIzYn9wlEv4zvFL7uKDMCFQm3g==", "requires": { "delegates": "^1.0.0", "readable-stream": "^2.0.6" @@ -1092,15 +1070,15 @@ "integrity": "sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==" }, "array-includes": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.3.tgz", - "integrity": "sha512-gcem1KlBU7c9rB+Rq8/3PPKsK2kjqeEBa3bD5kkQo4nYlOHQCJqIJFqBXDEfwaRuYTT4E+FxA9xez7Gf/e3Q7A==", + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.4.tgz", + "integrity": "sha512-ZTNSQkmWumEbiHO2GF4GmWxYVTiQyJy2XOTa15sdQSrvKn7l+180egQMqlrMOUMCyLMD7pmyQe4mMDUT6Behrw==", "requires": { "call-bind": "^1.0.2", "define-properties": "^1.1.3", - "es-abstract": "^1.18.0-next.2", + "es-abstract": "^1.19.1", "get-intrinsic": "^1.1.1", - "is-string": "^1.0.5" + "is-string": "^1.0.7" } }, "array-slice": { @@ -1127,37 +1105,38 @@ "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=" }, "array.prototype.filter": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/array.prototype.filter/-/array.prototype.filter-1.0.0.tgz", - "integrity": "sha512-TfO1gz+tLm+Bswq0FBOXPqAchtCr2Rn48T8dLJoRFl8NoEosjZmzptmuo1X8aZBzZcqsR1W8U761tjACJtngTQ==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/array.prototype.filter/-/array.prototype.filter-1.0.1.tgz", + "integrity": "sha512-Dk3Ty7N42Odk7PjU/Ci3zT4pLj20YvuVnneG/58ICM6bt4Ij5kZaJTVQ9TSaWaIECX2sFyz4KItkVZqHNnciqw==", "dev": true, "requires": { "call-bind": "^1.0.2", "define-properties": "^1.1.3", - "es-abstract": "^1.18.0", + "es-abstract": "^1.19.0", "es-array-method-boxes-properly": "^1.0.0", - "is-string": "^1.0.5" + "is-string": "^1.0.7" } }, "array.prototype.find": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/array.prototype.find/-/array.prototype.find-2.1.1.tgz", - "integrity": "sha512-mi+MYNJYLTx2eNYy+Yh6raoQacCsNeeMUaspFPh9Y141lFSsWxxB8V9mM2ye+eqiRs917J6/pJ4M9ZPzenWckA==", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/array.prototype.find/-/array.prototype.find-2.1.2.tgz", + "integrity": "sha512-00S1O4ewO95OmmJW7EesWfQlrCrLEL8kZ40w3+GkLX2yTt0m2ggcePPa2uHPJ9KUmJvwRq+lCV9bD8Yim23x/Q==", "dev": true, "requires": { + "call-bind": "^1.0.2", "define-properties": "^1.1.3", - "es-abstract": "^1.17.4" + "es-abstract": "^1.19.0" } }, "array.prototype.flat": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.2.4.tgz", - "integrity": "sha512-4470Xi3GAPAjZqFcljX2xzckv1qeKPizoNkiS0+O4IoPR2ZNpcjE0pkhdihlDouK+x6QOast26B4Q/O9DJnwSg==", + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.2.5.tgz", + "integrity": "sha512-KaYU+S+ndVqyUnignHftkwc58o3uVU1jzczILJ1tN2YaIZpFIKBiP/x/j97E5MVPsaCloPbqWLB/8qCTVvT2qg==", "dev": true, "requires": { - "call-bind": "^1.0.0", + "call-bind": "^1.0.2", "define-properties": "^1.1.3", - "es-abstract": "^1.18.0-next.1" + "es-abstract": "^1.19.0" } }, "arraybuffer.slice": { @@ -2070,9 +2049,9 @@ } }, "caniuse-db": { - "version": "1.0.30001252", - "resolved": "https://registry.npmjs.org/caniuse-db/-/caniuse-db-1.0.30001252.tgz", - "integrity": "sha512-+Vyv92BCj8QTH3pxlxmhXdwqAD+OngU5Ev7OiXG/cfNhJIP3lSE5wxIwW2TFpRj02PE/mAZF8po6/ZTYEa9/tg==" + "version": "1.0.30001264", + "resolved": "https://registry.npmjs.org/caniuse-db/-/caniuse-db-1.0.30001264.tgz", + "integrity": "sha512-KwFcCSAaHNukq2lVN/rkxbagGmQKHNwBHZj5ThnEP0bqAIJdIk9pULCbkL9rs0Nf4RSI0zTzl4fmsTg1Pp0Jdg==" }, "caseless": { "version": "0.12.0", @@ -2262,9 +2241,9 @@ "dev": true }, "nth-check": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.0.0.tgz", - "integrity": "sha512-i4sc/Kj8htBrAiH1viZ0TgU8Y5XqCaV/FziYK6TBczxmeKm3AEFWqqF3195yKudrarqy7Zu80Ra5dobFjn9X/Q==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.0.1.tgz", + "integrity": "sha512-it1vE95zF6dTT9lBsYbxvqh0Soy4SPowchj0UBGj/V6cTPnXXtQOPUbhZ6CmGzAD/rW22LQK6E96pcdJXk4A4w==", "dev": true, "requires": { "boolbase": "^1.0.0" @@ -2861,9 +2840,9 @@ "integrity": "sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==" }, "core-util-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" }, "crc": { "version": "3.3.0", @@ -3002,26 +2981,6 @@ "uid-safe": "2.1.4" } }, - "css": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/css/-/css-2.2.4.tgz", - "integrity": "sha512-oUnjmWpy0niI3x/mPL8dVEI1l7MnG3+HHyRPHf+YFSbK+svOhXpmSOcDURUh2aOCgl2grzrOPt1nHLuCVFULLw==", - "dev": true, - "requires": { - "inherits": "^2.0.3", - "source-map": "^0.6.1", - "source-map-resolve": "^0.5.2", - "urix": "^0.1.0" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } - } - }, "css-color-names": { "version": "0.0.4", "resolved": "https://registry.npmjs.org/css-color-names/-/css-color-names-0.0.4.tgz", @@ -3147,9 +3106,9 @@ } }, "csstype": { - "version": "2.6.17", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-2.6.17.tgz", - "integrity": "sha512-u1wmTI1jJGzCJzWndZo8mk4wnPTZd1eOIYTYvuEyOQGfmDl3TrabCCfKnOC86FZwW/9djqTl933UF/cS425i9A==" + "version": "2.6.18", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-2.6.18.tgz", + "integrity": "sha512-RSU6Hyeg14am3Ah4VZEmeX8H7kLwEEirXe6aU2IPfKNvhXwTflK5HQRDNI0ypQXoqmm+QPyG2IaPuQE5zMwSIQ==" }, "csurf": { "version": "1.8.3", @@ -3282,9 +3241,9 @@ } }, "deep-is": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", - "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=" + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==" }, "deepmerge": { "version": "0.2.10", @@ -3440,9 +3399,9 @@ "integrity": "sha1-gGZJMmzqp8qjMG112YXqJ0i6kTw=" }, "diff": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", - "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==" + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", + "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==" }, "diff-match-patch": { "version": "1.0.0", @@ -3466,21 +3425,6 @@ } } }, - "dir-glob": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", - "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", - "requires": { - "path-type": "^4.0.0" - }, - "dependencies": { - "path-type": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==" - } - } - }, "discontinuous-range": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/discontinuous-range/-/discontinuous-range-1.0.0.tgz", @@ -3672,9 +3616,9 @@ "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" }, "electron-to-chromium": { - "version": "1.3.824", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.824.tgz", - "integrity": "sha512-Fk+5aD0HDi9i9ZKt9n2VPOZO1dQy7PV++hz2wJ/KIn+CvVfu4fny39squHtyVDPuHNuoJGAZIbuReEklqYIqfA==" + "version": "1.3.859", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.859.tgz", + "integrity": "sha512-gXRXKNWedfdiKIzwr0Mg/VGCvxXzy+4SuK9hp1BDvfbCwx0O5Ot+2f4CoqQkqEJ3Zj/eAV/GoAFgBVFgkBLXuQ==" }, "elliptic": { "version": "6.5.4", @@ -4171,21 +4115,24 @@ } }, "es-abstract": { - "version": "1.18.5", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.5.tgz", - "integrity": "sha512-DDggyJLoS91CkJjgauM5c0yZMjiD1uK3KcaCeAmffGwZ+ODWzOkPN4QwRbsK5DOFf06fywmyLci3ZD8jLGhVYA==", + "version": "1.19.1", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.19.1.tgz", + "integrity": "sha512-2vJ6tjA/UfqLm2MPs7jxVybLoB8i1t1Jd9R3kISld20sIxPcTbLuggQOUxeWeAvIUkduv/CfMjuh4WmiXr2v9w==", "requires": { "call-bind": "^1.0.2", "es-to-primitive": "^1.2.1", "function-bind": "^1.1.1", "get-intrinsic": "^1.1.1", + "get-symbol-description": "^1.0.0", "has": "^1.0.3", "has-symbols": "^1.0.2", "internal-slot": "^1.0.3", - "is-callable": "^1.2.3", + "is-callable": "^1.2.4", "is-negative-zero": "^2.0.1", - "is-regex": "^1.1.3", - "is-string": "^1.0.6", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.1", + "is-string": "^1.0.7", + "is-weakref": "^1.0.1", "object-inspect": "^1.11.0", "object-keys": "^1.1.1", "object.assign": "^4.1.2", @@ -5134,9 +5081,9 @@ } }, "ext": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/ext/-/ext-1.5.0.tgz", - "integrity": "sha512-+ONcYoWj/SoQwUofMr94aGu05Ou4FepKi7N7b+O8T4jVfyIsZQV1/xeS8jpaBzF0csAk0KLXoHCxU7cKYZjo1Q==", + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/ext/-/ext-1.6.0.tgz", + "integrity": "sha512-sdBImtzkq2HpkdRLtlLWDa6w4DX22ijZLKx8BMPUuKe1c5lbN6xwQDQCxSfxBQnHZ13ls/FH0MQZx/q/gr6FQg==", "requires": { "type": "^2.5.0" }, @@ -5303,66 +5250,6 @@ "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" }, - "fast-glob": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.7.tgz", - "integrity": "sha512-rYGMRwip6lUMvYD3BTScMwT1HtAs2d71SMv66Vrxs0IekGZEjhM0pcMfjQPnknBt2zeCwQMEupiN02ZP4DiT1Q==", - "requires": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.4" - }, - "dependencies": { - "braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "requires": { - "fill-range": "^7.0.1" - } - }, - "fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "requires": { - "to-regex-range": "^5.0.1" - } - }, - "glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "requires": { - "is-glob": "^4.0.1" - } - }, - "is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==" - }, - "micromatch": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", - "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==", - "requires": { - "braces": "^3.0.1", - "picomatch": "^2.2.3" - } - }, - "to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "requires": { - "is-number": "^7.0.0" - } - } - } - }, "fast-json-stable-stringify": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", @@ -5378,14 +5265,6 @@ "resolved": "https://registry.npmjs.org/fastparse/-/fastparse-1.1.2.tgz", "integrity": "sha512-483XLLxTVIwWK3QTrMGRqUfUpoOs/0hbQrl2oz4J0pAcm3A3bu84wxTFqGqkJzewCLdME38xJLJAxBABfQT8sQ==" }, - "fastq": { - "version": "1.12.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.12.0.tgz", - "integrity": "sha512-VNX0QkHK3RsXVKr9KrlUv/FoTa0NdbYoHHl7uXHv2rzyHSlxjdNAKug2twd9luJxpcyNeAgf5iPPMutJO67Dfg==", - "requires": { - "reusify": "^1.0.4" - } - }, "faye-websocket": { "version": "0.10.0", "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.10.0.tgz", @@ -5608,11 +5487,6 @@ "resolved": "https://registry.npmjs.org/flagged-respawn/-/flagged-respawn-1.0.1.tgz", "integrity": "sha512-lNaHNVymajmk0OJMBn8fVUAU1BtDeKIqKoVhk4xAALB57aALg6b4W0MfJ/cUE0g9YBXy5XhSlPIpYIJ7HaY/3Q==" }, - "flat": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", - "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==" - }, "flat-cache": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-2.0.1.tgz", @@ -5644,9 +5518,9 @@ "integrity": "sha512-dVsPA/UwQ8+2uoFe5GHtiBMu48dWLTdsuEd7CKGlZlD78r1TTWBvDuFaFGKCo/ZfEr95Uk56vZoX86OsHkUeIg==" }, "follow-redirects": { - "version": "1.14.2", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.2.tgz", - "integrity": "sha512-yLR6WaE2lbF0x4K2qE2p9PEXKLDjUjnR/xmjS3wHAYxtlsI9MLLBJUZirAHKzUZDGLxje7w/cXR49WOUo4rbsA==" + "version": "1.14.4", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.4.tgz", + "integrity": "sha512-zwGkiSXC1MUJG/qmeIFH2HBJx9u0V46QGUe3YR1fXG8bXQxq7fLj0RjLZQ5nubr9qNJUZrH+xUcwXEoXNpfS+g==" }, "for-in": { "version": "1.0.2", @@ -5783,14 +5657,14 @@ "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" }, "function.prototype.name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.4.tgz", - "integrity": "sha512-iqy1pIotY/RmhdFZygSSlW0wko2yxkSCKqsuv4pr8QESohpYyG/Z7B/XXvPRKTJS//960rgguE5mSRUsDdaJrQ==", + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.5.tgz", + "integrity": "sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==", "dev": true, "requires": { "call-bind": "^1.0.2", "define-properties": "^1.1.3", - "es-abstract": "^1.18.0-next.2", + "es-abstract": "^1.19.0", "functions-have-names": "^1.2.2" } }, @@ -5911,6 +5785,15 @@ "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=" }, + "get-symbol-description": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", + "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", + "requires": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.1" + } + }, "get-uri": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/get-uri/-/get-uri-2.0.4.tgz", @@ -5996,21 +5879,6 @@ "assert-plus": "^1.0.0" } }, - "gettext-extractor": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/gettext-extractor/-/gettext-extractor-3.5.3.tgz", - "integrity": "sha512-9EgJ+hmbtAbATdMIvCj4WnrkeDWH6fv1z+IJJ1XCxdcUMGx6JQdVVFTdzJkSyIHh4td53ngoB5EQbavbKJU9Og==", - "dev": true, - "requires": { - "@types/glob": "5 - 7", - "@types/parse5": "^5", - "css-selector-parser": "^1.3", - "glob": "5 - 7", - "parse5": "5 - 6", - "pofile": "1.0.x", - "typescript": "2 - 4" - } - }, "gettext-parser": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/gettext-parser/-/gettext-parser-1.1.0.tgz", @@ -6045,9 +5913,9 @@ } }, "glob": { - "version": "7.1.7", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", - "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", "requires": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -7773,9 +7641,9 @@ } }, "i": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/i/-/i-0.3.6.tgz", - "integrity": "sha1-2WyScyB28HJxG2sQ/X1PZa2O4j0=" + "version": "0.3.7", + "resolved": "https://registry.npmjs.org/i/-/i-0.3.7.tgz", + "integrity": "sha512-FYz4wlXgkQwIPqhzC5TdNMLSE5+GS1IIDJZY/1ZiEPCT2S3COUVZeT5OW4BmW4r5LHLQuOosSwsvnroG9GR59Q==" }, "iconv-lite": { "version": "0.4.11", @@ -7957,9 +7825,9 @@ }, "dependencies": { "ansi-regex": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", - "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==" + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" }, "ansi-styles": { "version": "4.3.0", @@ -7997,11 +7865,11 @@ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" }, "strip-ansi": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", - "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "requires": { - "ansi-regex": "^5.0.0" + "ansi-regex": "^5.0.1" } }, "supports-color": { @@ -8150,9 +8018,9 @@ } }, "is-core-module": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.6.0.tgz", - "integrity": "sha512-wShG8vs60jKfPWpF2KZRaAtvt3a20OAn7+IJ6hLPECpSABLcKtFKTTI4ZtH5QcBruBHlq+WsdHWyz0BCZW7svQ==", + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.7.0.tgz", + "integrity": "sha512-ByY+tjCciCr+9nLryBYcSD50EOGWt95c7tIsKTG1J2ixKKXPvF7Ej3AVd+UfDydAJom3biBGDBALaO79ktwgEQ==", "requires": { "has": "^1.0.3" } @@ -8234,9 +8102,9 @@ "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==" }, "is-glob": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", - "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", "requires": { "is-extglob": "^2.1.1" } @@ -8385,6 +8253,11 @@ "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.2.tgz", "integrity": "sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==" }, + "is-shared-array-buffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.1.tgz", + "integrity": "sha512-IU0NmyknYZN0rChcKhRO1X8LYz5Isj/Fsqh8NJOSf+N/hCOTwy29F32Ik7a+QszE63IdvmwdTPDd6cZ5pg4cwA==" + }, "is-stream": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", @@ -8463,6 +8336,14 @@ "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.1.tgz", "integrity": "sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==" }, + "is-weakref": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.1.tgz", + "integrity": "sha512-b2jKc2pQZjaeFYWEf7ScFj+Be1I+PXmlu572Q8coTXZ+LD/QQZ7ShPMst8h16riVgyXTQwUsFEl74mDvc/3MHQ==", + "requires": { + "call-bind": "^1.0.0" + } + }, "is-weakset": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.1.tgz", @@ -9683,6 +9564,12 @@ "lodash.escape": "^3.0.0" } }, + "lodash.unescape": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/lodash.unescape/-/lodash.unescape-4.0.1.tgz", + "integrity": "sha1-vyJJiGzlFM2hEvrpIYzcBlIR/Jw=", + "dev": true + }, "lodash.uniq": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", @@ -10195,11 +10082,6 @@ "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=" }, - "merge2": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==" - }, "method-override": { "version": "2.3.10", "resolved": "https://registry.npmjs.org/method-override/-/method-override-2.3.10.tgz", @@ -10278,16 +10160,16 @@ "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==" }, "mime-db": { - "version": "1.49.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.49.0.tgz", - "integrity": "sha512-CIc8j9URtOVApSFCQIF+VBkX1RwXp/oMMOrqdyXSBXq5RWNEsRfyj1kiRnQgmNXmHxPoFIxOroKA3zcU9P+nAA==" + "version": "1.50.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.50.0.tgz", + "integrity": "sha512-9tMZCDlYHqeERXEHO9f/hKfNXhre5dK2eE/krIvUjZbS2KPcqGDfNShIWS1uW9XOTKQKqK6qbeOci18rbfW77A==" }, "mime-types": { - "version": "2.1.32", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.32.tgz", - "integrity": "sha512-hJGaVS4G4c9TSMYh2n6SQAGrC4RnfU+daP8G7cSCmaqNjiOoUY0VHCMS42pxnQmVF1GWwFhbHWn3RIxCqTmZ9A==", + "version": "2.1.33", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.33.tgz", + "integrity": "sha512-plLElXp7pRDd0bNZHw+nMd52vRYjLwQjygaNg7ddJ2uJtTlmnTCjWuPKxVu6//AdaRuME84SvLW91sIkBqGT0g==", "requires": { - "mime-db": "1.49.0" + "mime-db": "1.50.0" } }, "mimic-fn": { @@ -10767,6 +10649,21 @@ "glob": "~7.1.1", "lodash": "~4.17.10", "minimatch": "~3.0.2" + }, + "dependencies": { + "glob": { + "version": "7.1.7", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", + "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + } } }, "has-ansi": { @@ -11126,24 +11023,23 @@ } }, "object.entries": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.4.tgz", - "integrity": "sha512-h4LWKWE+wKQGhtMjZEBud7uLGhqyLwj8fpHOarZhD2uY3C9cRtk57VQ89ke3moByLXMedqs3XCHzyb4AmA2DjA==", + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.5.tgz", + "integrity": "sha512-TyxmjUoZggd4OrrU1W66FMDG6CuqJxsFvymeyXI51+vQLN67zYfZseptRge703kKQdo4uccgAKebXFcRCzk4+g==", "requires": { "call-bind": "^1.0.2", "define-properties": "^1.1.3", - "es-abstract": "^1.18.2" + "es-abstract": "^1.19.1" } }, "object.fromentries": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.4.tgz", - "integrity": "sha512-EsFBshs5RUUpQEY1D4q/m59kMfz4YJvxuNCJcv/jWwOJr34EaVnG11ZrZa0UHB3wnzV1wx8m58T4hQL8IuNXlQ==", + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.5.tgz", + "integrity": "sha512-CAyG5mWQRRiBU57Re4FKoTBjXfDoNwdFVH2Y1tS9PqCsfUTymAohOkEMSG3aRNKmv4lV3O7p1et7c187q6bynw==", "requires": { "call-bind": "^1.0.2", "define-properties": "^1.1.3", - "es-abstract": "^1.18.0-next.2", - "has": "^1.0.3" + "es-abstract": "^1.19.1" } }, "object.map": { @@ -11183,13 +11079,13 @@ } }, "object.values": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.4.tgz", - "integrity": "sha512-TnGo7j4XSnKQoK3MfvkzqKCi0nVe/D9I9IjwTNYdb/fxYHpjrluHVOgw0AF6jrRFGMPHdfuidR09tIDiIvnaSg==", + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.5.tgz", + "integrity": "sha512-QUZRW0ilQ3PnPpbNtgdNV1PDbEqLIiSFB3l+EnGtBQ/8SUTLj1PZwtQHABZtLgwpJZTSZhuGLOGk57Drx2IvYg==", "requires": { "call-bind": "^1.0.2", "define-properties": "^1.1.3", - "es-abstract": "^1.18.2" + "es-abstract": "^1.19.1" } }, "obuf": { @@ -11782,7 +11678,8 @@ "picomatch": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz", - "integrity": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==" + "integrity": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==", + "optional": true }, "pify": { "version": "2.3.0", @@ -12736,11 +12633,6 @@ "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==" }, - "queue-microtask": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", - "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==" - }, "raf": { "version": "3.4.1", "resolved": "https://registry.npmjs.org/raf/-/raf-3.4.1.tgz", @@ -12946,9 +12838,9 @@ "integrity": "sha512-rtGImPZ0YyLrscKI9xTpV8psd6I8VAtjKCzQDlzyDvqJA8XOW78TXYQwNRNd8g8JZnDu8q9Fu/1v4HPAVwVdHA==" }, "react-id-generator": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/react-id-generator/-/react-id-generator-3.0.1.tgz", - "integrity": "sha512-YxorMaYxB8ItXA3Cuadcl/8ZaquU9Tzrrr5ogFL8tNqevF96cmCtx3LZLXYqBEj3BxoV9aBIK5yJjIuX/XHQ1A==" + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/react-id-generator/-/react-id-generator-3.0.2.tgz", + "integrity": "sha512-d0rqWzZ6g0P9agHtA7wX/ErQ4iV/657/0Oz+SX3kid7nR4d0YwaWjjOTIrgYHv2lICZKrxIH4BaKppKrM8fRfw==" }, "react-is": { "version": "16.13.1", @@ -13602,11 +13494,6 @@ "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==" }, - "reusify": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==" - }, "right-align": { "version": "0.1.3", "resolved": "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz", @@ -13652,14 +13539,6 @@ "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==" }, - "run-parallel": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", - "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", - "requires": { - "queue-microtask": "^1.2.2" - } - }, "rx-lite": { "version": "4.0.8", "resolved": "https://registry.npmjs.org/rx-lite/-/rx-lite-4.0.8.tgz", @@ -14154,9 +14033,9 @@ "integrity": "sha1-P/IfGYytIXX587eBhT/ZTQ0ZtZA=" }, "signal-exit": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz", - "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==" + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.5.tgz", + "integrity": "sha512-KWcOiKeQj6ZyXx7zq4YxSMgHRlod4czeBQZrPb8OKcohcqAXShm7E20kEMle9WBt26hFcAf0qLOcp5zmY7kOqQ==" }, "slack-node": { "version": "0.2.0", @@ -14899,39 +14778,39 @@ "integrity": "sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM=" }, "string-width": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", - "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==", + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "requires": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.0" + "strip-ansi": "^6.0.1" }, "dependencies": { "ansi-regex": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", - "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==" + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" }, "strip-ansi": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", - "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "requires": { - "ansi-regex": "^5.0.0" + "ansi-regex": "^5.0.1" } } } }, "string.prototype.trim": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.4.tgz", - "integrity": "sha512-hWCk/iqf7lp0/AgTF7/ddO1IWtSNPASjlzCicV5irAVdE1grjsneK26YG6xACMBEdCvO8fUST0UzDMh/2Qy+9Q==", + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.5.tgz", + "integrity": "sha512-Lnh17webJVsD6ECeovpVN17RlAKjmz4rF9S+8Y45CkMc/ufVpTkU3vZIyIC7sllQ1FCvObZnnCdNs/HXTUOTlg==", "dev": true, "requires": { "call-bind": "^1.0.2", "define-properties": "^1.1.3", - "es-abstract": "^1.18.0-next.2" + "es-abstract": "^1.19.1" } }, "string.prototype.trimend": { @@ -15526,9 +15405,9 @@ }, "dependencies": { "@types/node": { - "version": "14.17.12", - "resolved": "https://registry.npmjs.org/@types/node/-/node-14.17.12.tgz", - "integrity": "sha512-vhUqgjJR1qxwTWV5Ps5txuy2XMdf7Fw+OrdChRboy8BmWUPkckOhphaohzFG6b8DW7CrxaBMdrdJ47SYFq1okw==" + "version": "14.17.20", + "resolved": "https://registry.npmjs.org/@types/node/-/node-14.17.20.tgz", + "integrity": "sha512-gI5Sl30tmhXsqkNvopFydP7ASc4c2cLfGNQrVKN3X90ADFWFsPEsotm/8JHSUJQKTHbwowAHtcJPeyVhtKv0TQ==" } } }, @@ -15875,23 +15754,22 @@ "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" }, "tslint": { - "version": "6.1.3", - "resolved": "https://registry.npmjs.org/tslint/-/tslint-6.1.3.tgz", - "integrity": "sha512-IbR4nkT96EQOvKE2PW/djGz8iGNeJ4rF2mBfiYaR/nvUWYKJhLwimoJKgjIFEIDibBtOevj7BqCRL4oHeWWUCg==", + "version": "5.11.0", + "resolved": "https://registry.npmjs.org/tslint/-/tslint-5.11.0.tgz", + "integrity": "sha1-mPMMAurjzecAYgHkwzywi0hYHu0=", "requires": { - "@babel/code-frame": "^7.0.0", + "babel-code-frame": "^6.22.0", "builtin-modules": "^1.1.1", "chalk": "^2.3.0", "commander": "^2.12.1", - "diff": "^4.0.1", + "diff": "^3.2.0", "glob": "^7.1.1", - "js-yaml": "^3.13.1", + "js-yaml": "^3.7.0", "minimatch": "^3.0.4", - "mkdirp": "^0.5.3", "resolve": "^1.3.2", "semver": "^5.3.0", - "tslib": "^1.13.0", - "tsutils": "^2.29.0" + "tslib": "^1.8.0", + "tsutils": "^2.27.2" }, "dependencies": { "ansi-styles": { @@ -15917,25 +15795,11 @@ "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" }, - "esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==" - }, "has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" }, - "js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", - "requires": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - } - }, "semver": { "version": "5.7.1", "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", @@ -16032,9 +15896,27 @@ "dev": true }, "typescript": { - "version": "4.4.2", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.4.2.tgz", - "integrity": "sha512-gzP+t5W4hdy4c+68bfcv0t400HVJMMd2+H9B7gae1nQlBzCqvrXX+6GL/b3GAgyTH966pzrZ70/fRjwAtZksSQ==" + "version": "3.9.7", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.9.7.tgz", + "integrity": "sha512-BLbiRkiBzAwsjut4x/dsibSTB6yWpwT5qWmC2OfuCg3GgVQCSgMs4vEctYPhsaGtd0AeuuHMkjZ2h2WG8MSzRw==" + }, + "typescript-eslint-parser": { + "version": "18.0.0", + "resolved": "https://registry.npmjs.org/typescript-eslint-parser/-/typescript-eslint-parser-18.0.0.tgz", + "integrity": "sha512-Pn/A/Cw9ysiXSX5U1xjBmPQlxtWGV2o7jDNiH/u7KgBO2yC/y37wNFl2ogSrGZBQFuglLzGq0Xl0Bt31Jv44oA==", + "dev": true, + "requires": { + "lodash.unescape": "4.0.1", + "semver": "5.5.0" + }, + "dependencies": { + "semver": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.5.0.tgz", + "integrity": "sha512-4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA==", + "dev": true + } + } }, "ua-parser-js": { "version": "0.7.28", @@ -16395,6 +16277,13 @@ "assert-plus": "^1.0.0", "core-util-is": "1.0.2", "extsprintf": "^1.2.0" + }, + "dependencies": { + "core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" + } } }, "vhost": { diff --git a/package.json b/package.json index b9f64297c1..a4a49c3687 100644 --- a/package.json +++ b/package.json @@ -31,13 +31,13 @@ "@metadata/exif": "github:superdesk/exif#431066d", "@types/angular": "1.6.50", "@types/draft-js": "0.10.29", - "@types/enzyme": "3.10.9", + "@types/enzyme": "3.9.1", "@types/lodash": "4.14.117", "@types/react": "16.8.23", "@types/react-autocomplete": "1.8.5", "@types/react-dom": "16.8.0", "@types/react-redux": "7.1.9", - "@typescript-eslint/parser": "4.30.0", + "@typescript-eslint/parser": "2.16.0", "angular": "1.6.9", "angular-contenteditable": "0.3.9", "angular-dynamic-locale": "0.1.32", @@ -63,7 +63,6 @@ "eslint-plugin-react": "7.16.0", "extract-text-webpack-plugin": "3.0.2", "file-loader": "1.1.11", - "flat": "5.0.2", "gettext.js": "0.9.0", "git-rev-sync": "1.10.0", "gridster": "0.5.6", @@ -121,8 +120,8 @@ "style-loader": "0.20.2", "superdesk-ui-framework": "2.4.10", "ts-loader": "3.5.0", - "tslint": "6.1.3", - "typescript": "4.4.2", + "tslint": "5.11.0", + "typescript": "3.9.7", "uuid": "8.3.1", "webpack": "3.11.0", "webpack-dev-server": "2.11.1" @@ -146,7 +145,8 @@ "react-addons-test-utils": "^15.6.0", "react-test-renderer": "^16.13.1", "request": "^2.88.2", - "superdesk-code-style": "1.5.0" + "superdesk-code-style": "1.5.0", + "typescript-eslint-parser": "^18.0.0" }, "resolutions": { "moment": "2.20.1" diff --git a/patches/flat+5.0.2.patch b/patches/flat+5.0.2.patch deleted file mode 100644 index 32293529cf..0000000000 --- a/patches/flat+5.0.2.patch +++ /dev/null @@ -1,244 +0,0 @@ -# This patch converts library to ES5 -# ES6 doesn't work with webpack minifier - -diff --git a/node_modules/flat/index.js b/node_modules/flat/index.js -index 2a5d7ca..8767150 100644 ---- a/node_modules/flat/index.js -+++ b/node_modules/flat/index.js -@@ -1,158 +1,136 @@ --module.exports = flatten --flatten.flatten = flatten --flatten.unflatten = unflatten -- --function isBuffer (obj) { -- return obj && -- obj.constructor && -- (typeof obj.constructor.isBuffer === 'function') && -- obj.constructor.isBuffer(obj) -+'use strict'; -+ -+module.exports = flatten; -+flatten.flatten = flatten; -+flatten.unflatten = unflatten; -+ -+function isBuffer(obj) { -+ return obj && obj.constructor && typeof obj.constructor.isBuffer === 'function' && obj.constructor.isBuffer(obj); - } - --function keyIdentity (key) { -- return key -+function keyIdentity(key) { -+ return key; - } - --function flatten (target, opts) { -- opts = opts || {} -+function flatten(target, opts) { -+ opts = opts || {}; - -- const delimiter = opts.delimiter || '.' -- const maxDepth = opts.maxDepth -- const transformKey = opts.transformKey || keyIdentity -- const output = {} -+ var delimiter = opts.delimiter || '.'; -+ var maxDepth = opts.maxDepth; -+ var transformKey = opts.transformKey || keyIdentity; -+ var output = {}; - -- function step (object, prev, currentDepth) { -- currentDepth = currentDepth || 1 -+ function step(object, prev, currentDepth) { -+ currentDepth = currentDepth || 1; - Object.keys(object).forEach(function (key) { -- const value = object[key] -- const isarray = opts.safe && Array.isArray(value) -- const type = Object.prototype.toString.call(value) -- const isbuffer = isBuffer(value) -- const isobject = ( -- type === '[object Object]' || -- type === '[object Array]' -- ) -- -- const newKey = prev -- ? prev + delimiter + transformKey(key) -- : transformKey(key) -- -- if (!isarray && !isbuffer && isobject && Object.keys(value).length && -- (!opts.maxDepth || currentDepth < maxDepth)) { -- return step(value, newKey, currentDepth + 1) -+ var value = object[key]; -+ var isarray = opts.safe && Array.isArray(value); -+ var type = Object.prototype.toString.call(value); -+ var isbuffer = isBuffer(value); -+ var isobject = type === '[object Object]' || type === '[object Array]'; -+ -+ var newKey = prev ? prev + delimiter + transformKey(key) : transformKey(key); -+ -+ if (!isarray && !isbuffer && isobject && Object.keys(value).length && (!opts.maxDepth || currentDepth < maxDepth)) { -+ return step(value, newKey, currentDepth + 1); - } - -- output[newKey] = value -- }) -+ output[newKey] = value; -+ }); - } - -- step(target) -+ step(target); - -- return output -+ return output; - } - --function unflatten (target, opts) { -- opts = opts || {} -+function unflatten(target, opts) { -+ opts = opts || {}; - -- const delimiter = opts.delimiter || '.' -- const overwrite = opts.overwrite || false -- const transformKey = opts.transformKey || keyIdentity -- const result = {} -+ var delimiter = opts.delimiter || '.'; -+ var overwrite = opts.overwrite || false; -+ var transformKey = opts.transformKey || keyIdentity; -+ var result = {}; - -- const isbuffer = isBuffer(target) -+ var isbuffer = isBuffer(target); - if (isbuffer || Object.prototype.toString.call(target) !== '[object Object]') { -- return target -+ return target; - } - - // safely ensure that the key is - // an integer. -- function getkey (key) { -- const parsedKey = Number(key) -- -- return ( -- isNaN(parsedKey) || -- key.indexOf('.') !== -1 || -- opts.object -- ) ? key -- : parsedKey -+ function getkey(key) { -+ var parsedKey = Number(key); -+ -+ return isNaN(parsedKey) || key.indexOf('.') !== -1 || opts.object ? key : parsedKey; - } - -- function addKeys (keyPrefix, recipient, target) { -+ function addKeys(keyPrefix, recipient, target) { - return Object.keys(target).reduce(function (result, key) { -- result[keyPrefix + delimiter + key] = target[key] -+ result[keyPrefix + delimiter + key] = target[key]; - -- return result -- }, recipient) -+ return result; -+ }, recipient); - } - -- function isEmpty (val) { -- const type = Object.prototype.toString.call(val) -- const isArray = type === '[object Array]' -- const isObject = type === '[object Object]' -+ function isEmpty(val) { -+ var type = Object.prototype.toString.call(val); -+ var isArray = type === '[object Array]'; -+ var isObject = type === '[object Object]'; - - if (!val) { -- return true -+ return true; - } else if (isArray) { -- return !val.length -+ return !val.length; - } else if (isObject) { -- return !Object.keys(val).length -+ return !Object.keys(val).length; - } - } - - target = Object.keys(target).reduce(function (result, key) { -- const type = Object.prototype.toString.call(target[key]) -- const isObject = (type === '[object Object]' || type === '[object Array]') -+ var type = Object.prototype.toString.call(target[key]); -+ var isObject = type === '[object Object]' || type === '[object Array]'; - if (!isObject || isEmpty(target[key])) { -- result[key] = target[key] -- return result -+ result[key] = target[key]; -+ return result; - } else { -- return addKeys( -- key, -- result, -- flatten(target[key], opts) -- ) -+ return addKeys(key, result, flatten(target[key], opts)); - } -- }, {}) -+ }, {}); - - Object.keys(target).forEach(function (key) { -- const split = key.split(delimiter).map(transformKey) -- let key1 = getkey(split.shift()) -- let key2 = getkey(split[0]) -- let recipient = result -+ var split = key.split(delimiter).map(transformKey); -+ var key1 = getkey(split.shift()); -+ var key2 = getkey(split[0]); -+ var recipient = result; - - while (key2 !== undefined) { - if (key1 === '__proto__') { -- return -+ return; - } - -- const type = Object.prototype.toString.call(recipient[key1]) -- const isobject = ( -- type === '[object Object]' || -- type === '[object Array]' -- ) -+ var type = Object.prototype.toString.call(recipient[key1]); -+ var isobject = type === '[object Object]' || type === '[object Array]'; - - // do not write over falsey, non-undefined values if overwrite is false - if (!overwrite && !isobject && typeof recipient[key1] !== 'undefined') { -- return -+ return; - } - -- if ((overwrite && !isobject) || (!overwrite && recipient[key1] == null)) { -- recipient[key1] = ( -- typeof key2 === 'number' && -- !opts.object ? [] : {} -- ) -+ if (overwrite && !isobject || !overwrite && recipient[key1] == null) { -+ recipient[key1] = typeof key2 === 'number' && !opts.object ? [] : {}; - } - -- recipient = recipient[key1] -+ recipient = recipient[key1]; - if (split.length > 0) { -- key1 = getkey(split.shift()) -- key2 = getkey(split[0]) -+ key1 = getkey(split.shift()); -+ key2 = getkey(split[0]); - } - } - - // unflatten again for 'messy objects' -- recipient[key1] = unflatten(target[key], opts) -- }) -+ recipient[key1] = unflatten(target[key], opts); -+ }); - -- return result -+ return result; - } -\ No newline at end of file diff --git a/scripts/appConfig.ts b/scripts/appConfig.ts index e0f441ce0f..c4e8ec1374 100644 --- a/scripts/appConfig.ts +++ b/scripts/appConfig.ts @@ -3,6 +3,10 @@ import {ISuperdeskGlobalConfig, IExtensions, IUser} from 'superdesk-api'; /* globals __SUPERDESK_CONFIG__: true */ export const appConfig: ISuperdeskGlobalConfig = __SUPERDESK_CONFIG__; +if (appConfig.startingDay == null) { + appConfig.startingDay = '0'; // sunday +} + if (appConfig.shortTimeFormat == null) { appConfig.shortTimeFormat = 'HH:mm'; // 24h format } diff --git a/scripts/apps/authoring/authoring/authoring-custom-field.spec.tsx b/scripts/apps/authoring/authoring/authoring-custom-field.spec.tsx index 23099ab57c..55cfb45527 100644 --- a/scripts/apps/authoring/authoring/authoring-custom-field.spec.tsx +++ b/scripts/apps/authoring/authoring/authoring-custom-field.spec.tsx @@ -38,7 +38,7 @@ class TestEditorComponent extends React.PureComponent = { +const customField: ICustomFieldType = { id: 'test-custom-authoring-field', label: 'Test Field', editorComponent: TestEditorComponent, diff --git a/scripts/apps/authoring/authoring/services/AuthoringService.ts b/scripts/apps/authoring/authoring/services/AuthoringService.ts index 3ce30e5432..39a2622fa0 100644 --- a/scripts/apps/authoring/authoring/services/AuthoringService.ts +++ b/scripts/apps/authoring/authoring/services/AuthoringService.ts @@ -98,7 +98,7 @@ interface IPublishOptions { notifyErrors: boolean; } -interface IParams { +interface Iparams { publishing_warnings_confirmed?: boolean; desk_id?: string; } @@ -396,7 +396,7 @@ export function AuthoringService($q, $location, api, lock, autosave, confirm, pr helpers.filterDefaultValues(extDiff, orig); var endpoint = 'archive_' + action; - var params: IParams = { + var params: Iparams = { publishing_warnings_confirmed: publishingWarningsConfirmed, }; diff --git a/scripts/apps/authoring/media/views/media-metadata-editor-directive.html b/scripts/apps/authoring/media/views/media-metadata-editor-directive.html index dcb9aa0f00..4756a090a0 100644 --- a/scripts/apps/authoring/media/views/media-metadata-editor-directive.html +++ b/scripts/apps/authoring/media/views/media-metadata-editor-directive.html @@ -118,7 +118,7 @@ data-header="true" data-change="onChange({key: field})" data-reload-list="true" - data-disable-entire-category="{{field.cv.disable_entire_category_selection}}" + data-disable-entire-category="true" data-placeholder="placeholder[field.field]" > diff --git a/scripts/apps/authoring/translations/translationsWidget.tsx b/scripts/apps/authoring/translations/translationsWidget.tsx index aecc29f9e3..e07d22eab6 100644 --- a/scripts/apps/authoring/translations/translationsWidget.tsx +++ b/scripts/apps/authoring/translations/translationsWidget.tsx @@ -2,7 +2,7 @@ import React from 'react'; import {RelativeDate} from 'core/datetime/relativeDate'; import {state as State} from 'apps/search/components/fields/state'; import {connectServices} from 'core/helpers/ReactRenderAsync'; -import {Dictionary, IArticle} from 'superdesk-api'; +import {IArticle} from 'superdesk-api'; import {gettext} from 'core/utils'; import {AuthoringWorkspaceService} from '../authoring/services/AuthoringWorkspaceService'; diff --git a/scripts/apps/desks/directives/DeskeditStages.ts b/scripts/apps/desks/directives/DeskeditStages.ts index dbe8606fa6..a5d3cdc6c9 100644 --- a/scripts/apps/desks/directives/DeskeditStages.ts +++ b/scripts/apps/desks/directives/DeskeditStages.ts @@ -2,13 +2,65 @@ import {limits} from 'apps/desks/constants'; import _ from 'lodash'; import {gettext} from 'core/utils'; import {appConfig} from 'appConfig'; +import {httpRequestJsonLocal} from 'core/helpers/network'; +import {arrayMove} from 'core/helpers/utils'; DeskeditStages.$inject = ['api', 'WizardHandler', 'tasks', 'desks', 'notify', 'macros']; export function DeskeditStages(api, WizardHandler, tasks, desks, notify, macros) { return { - link: function(scope) { + link: function(scope, elem) { var orig = null; + elem.find('.stages-list').sortable({ + cursor: 'move', + start: function(event, ui) { + ui.item.data('start', ui.item.index()); + }, + stop: function(event, ui) { + const startIndex = ui.item.data('start') - 1; + const endIndex = ui.item.index() - 1; + + const stagesBeforeReordering = [...scope.stages]; + + /** + * Timeout is added in order to wait for jQuery UI to finish with DOM operations + * so it doesn't interfere with angular rendering. + */ + setTimeout(() => { + scope.stages = arrayMove(scope.stages, startIndex, endIndex); + scope.$apply(); + + httpRequestJsonLocal({ + method: 'POST', + path: '/stages_order', + payload: { + desk: scope.desk.edit._id, + stages: scope.stages.map(({_id}) => _id), + }, + }).catch(() => { + scope.stages = stagesBeforeReordering; + scope.$apply(); + }); + }); + + /** + * Returning false to tell jQuery UI not to apply sorting result to DOM. + * This is done in order to maintain a single source of truth which is `scope.stages` array. + */ + return false; + }, + }); + + // update stages if re-ordered by other user + scope.$on('resource:updated', (event, data) => { + if (data.resource === 'stages' && data.fields?.['desk_order'] === 1) { + desks.fetchDeskStages(scope.desk.edit._id, true).then((stages) => { + scope.stages = stages; + scope.$applyAsync(); + }); + } + }); + scope.limits = limits; scope.saving = false; scope.statuses = tasks.statuses; diff --git a/scripts/apps/desks/services/DesksFactory.ts b/scripts/apps/desks/services/DesksFactory.ts index c94c9499ca..c0e99d2d36 100644 --- a/scripts/apps/desks/services/DesksFactory.ts +++ b/scripts/apps/desks/services/DesksFactory.ts @@ -403,6 +403,15 @@ export function DesksFactory($q, api, preferencesService, userList, notify, $rootScope.$on('desk', reset); $rootScope.$on('stage', reset); + // re-fetch stages when order changes for any stage + $rootScope.$on('resource:updated', (event, data) => { + if (data.resource === 'stages' && data.fields?.['desk_order'] === 1) { + desksService.fetchStages(true).then(() => { + desksService.generateDeskStages(); + }); + } + }); + return desksService; function reset(res) { diff --git a/scripts/apps/desks/views/desk-config-modal.html b/scripts/apps/desks/views/desk-config-modal.html index a9f4d37b8a..e5fc4754ef 100644 --- a/scripts/apps/desks/views/desk-config-modal.html +++ b/scripts/apps/desks/views/desk-config-modal.html @@ -218,14 +218,18 @@