diff --git a/CHANGELOG.md b/CHANGELOG.md index ca56543d..c610dca1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,7 +9,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Added -- TDB +- Notification if the browser does not support nesassary API ### Changed diff --git a/cvat-canvas/package-lock.json b/cvat-canvas/package-lock.json index b0ec3bcb..abaab237 100644 --- a/cvat-canvas/package-lock.json +++ b/cvat-canvas/package-lock.json @@ -3513,14 +3513,26 @@ } }, "enhanced-resolve": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.1.0.tgz", - "integrity": "sha512-F/7vkyTtyc/llOIn8oWclcB25KdRaiPBpZYDgJHgh/UHtpgT2p2eldQgtQnLtUvfMKPKxbRaQM/hHkvLHt1Vng==", + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.5.0.tgz", + "integrity": "sha512-Nv9m36S/vxpsI+Hc4/ZGRs0n9mXqSWGGq49zxb/cJfPAQMbUtttJAlNPS4AQzaBdw/pKskw5bMbekT/Y7W/Wlg==", "dev": true, "requires": { "graceful-fs": "^4.1.2", - "memory-fs": "^0.4.0", + "memory-fs": "^0.5.0", "tapable": "^1.0.0" + }, + "dependencies": { + "memory-fs": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.5.0.tgz", + "integrity": "sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA==", + "dev": true, + "requires": { + "errno": "^0.1.3", + "readable-stream": "^2.0.1" + } + } } }, "errno": { @@ -5605,9 +5617,9 @@ } }, "interpret": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.2.0.tgz", - "integrity": "sha512-mT34yGKMNceBQUoVn7iCDKDntA7SC6gycMAWzGx1z/CMCTV7b2AAtXlo3nRyHZ1FelRkQbQjprHSYGwzLtkVbw==", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz", + "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==", "dev": true }, "invariant": { @@ -5619,12 +5631,6 @@ "loose-envify": "^1.0.0" } }, - "invert-kv": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-2.0.0.tgz", - "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==", - "dev": true - }, "ip": { "version": "1.1.5", "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz", @@ -6165,15 +6171,6 @@ "package-json": "^6.3.0" } }, - "lcid": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/lcid/-/lcid-2.0.0.tgz", - "integrity": "sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA==", - "dev": true, - "requires": { - "invert-kv": "^2.0.0" - } - }, "levn": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", @@ -6309,15 +6306,6 @@ "semver": "^5.6.0" } }, - "map-age-cleaner": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz", - "integrity": "sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==", - "dev": true, - "requires": { - "p-defer": "^1.0.0" - } - }, "map-cache": { "version": "0.2.2", "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", @@ -6345,17 +6333,6 @@ "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=", "dev": true }, - "mem": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/mem/-/mem-4.3.0.tgz", - "integrity": "sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w==", - "dev": true, - "requires": { - "map-age-cleaner": "^0.1.1", - "mimic-fn": "^2.0.0", - "p-is-promise": "^2.0.0" - } - }, "memory-fs": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", @@ -6525,12 +6502,6 @@ "mime-db": "1.40.0" } }, - "mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "dev": true - }, "mimic-response": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", @@ -7276,17 +7247,6 @@ "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", "dev": true }, - "os-locale": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-3.1.0.tgz", - "integrity": "sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q==", - "dev": true, - "requires": { - "execa": "^1.0.0", - "lcid": "^2.0.0", - "mem": "^4.0.0" - } - }, "os-tmpdir": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", @@ -7309,24 +7269,12 @@ "integrity": "sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==", "dev": true }, - "p-defer": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz", - "integrity": "sha1-n26xgvbJqozXQwBKfU+WsZaw+ww=", - "dev": true - }, "p-finally": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", "dev": true }, - "p-is-promise": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-2.1.0.tgz", - "integrity": "sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg==", - "dev": true - }, "p-limit": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.0.tgz", @@ -10535,112 +10483,46 @@ } }, "webpack-cli": { - "version": "3.3.6", - "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-3.3.6.tgz", - "integrity": "sha512-0vEa83M7kJtxK/jUhlpZ27WHIOndz5mghWL2O53kiDoA9DIxSKnfqB92LoqEn77cT4f3H2cZm1BMEat/6AZz3A==", - "dev": true, - "requires": { - "chalk": "2.4.2", - "cross-spawn": "6.0.5", - "enhanced-resolve": "4.1.0", - "findup-sync": "3.0.0", - "global-modules": "2.0.0", - "import-local": "2.0.0", - "interpret": "1.2.0", - "loader-utils": "1.2.3", - "supports-color": "6.1.0", - "v8-compile-cache": "2.0.3", - "yargs": "13.2.4" + "version": "3.3.12", + "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-3.3.12.tgz", + "integrity": "sha512-NVWBaz9k839ZH/sinurM+HcDvJOTXwSjYp1ku+5XKeOC03z8v5QitnK/x+lAxGXFyhdayoIf/GOpv85z3/xPag==", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "cross-spawn": "^6.0.5", + "enhanced-resolve": "^4.1.1", + "findup-sync": "^3.0.0", + "global-modules": "^2.0.0", + "import-local": "^2.0.0", + "interpret": "^1.4.0", + "loader-utils": "^1.4.0", + "supports-color": "^6.1.0", + "v8-compile-cache": "^2.1.1", + "yargs": "^13.3.2" }, "dependencies": { - "ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "emojis-list": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", + "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", "dev": true }, - "cliui": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", - "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", + "loader-utils": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", + "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", "dev": true, "requires": { - "string-width": "^3.1.0", - "strip-ansi": "^5.2.0", - "wrap-ansi": "^5.1.0" + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" } }, - "get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "dev": true - }, - "require-main-filename": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", - "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", + "v8-compile-cache": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", + "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", "dev": true - }, - "string-width": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", - "dev": true, - "requires": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" - } - }, - "strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "dev": true, - "requires": { - "ansi-regex": "^4.1.0" - } - }, - "wrap-ansi": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", - "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.0", - "string-width": "^3.0.0", - "strip-ansi": "^5.0.0" - } - }, - "yargs": { - "version": "13.2.4", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.2.4.tgz", - "integrity": "sha512-HG/DWAJa1PAnHT9JAhNa8AbAv3FPaiLzioSjCcmuXXhP8MlpHO5vwls4g4j6n30Z74GVQj8Xa62dWVx1QCGklg==", - "dev": true, - "requires": { - "cliui": "^5.0.0", - "find-up": "^3.0.0", - "get-caller-file": "^2.0.1", - "os-locale": "^3.1.0", - "require-directory": "^2.1.1", - "require-main-filename": "^2.0.0", - "set-blocking": "^2.0.0", - "string-width": "^3.0.0", - "which-module": "^2.0.0", - "y18n": "^4.0.0", - "yargs-parser": "^13.1.0" - } - }, - "yargs-parser": { - "version": "13.1.2", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz", - "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==", - "dev": true, - "requires": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" - } } } }, diff --git a/cvat-canvas/package.json b/cvat-canvas/package.json index 9fa50052..813dab0f 100644 --- a/cvat-canvas/package.json +++ b/cvat-canvas/package.json @@ -9,6 +9,12 @@ }, "author": "Intel", "license": "MIT", + "browserslist": [ + "Chrome >= 63", + "Firefox > 58", + "not IE 11", + "> 2%" + ], "dependencies": { "svg.draggable.js": "2.2.2", "svg.draw.js": "^2.0.4", @@ -41,7 +47,7 @@ "style-loader": "^1.0.0", "typescript": "^3.5.3", "webpack": "^5.20.2", - "webpack-cli": "^3.3.6", + "webpack-cli": "^3.3.12", "webpack-dev-server": "^3.11.0" } } diff --git a/cvat-canvas/postcss.config.js b/cvat-canvas/postcss.config.js deleted file mode 100644 index 3a833a37..00000000 --- a/cvat-canvas/postcss.config.js +++ /dev/null @@ -1,12 +0,0 @@ -// Copyright (C) 2019-2020 Intel Corporation -// -// SPDX-License-Identifier: MIT - -module.exports = { - parser: false, - plugins: { - 'postcss-preset-env': { - browsers: '> 2.5%', // https://github.com/browserslist/browserslist - }, - }, -}; diff --git a/cvat-canvas/src/typescript/svg.patch.ts b/cvat-canvas/src/typescript/svg.patch.ts index de863194..060dde62 100644 --- a/cvat-canvas/src/typescript/svg.patch.ts +++ b/cvat-canvas/src/typescript/svg.patch.ts @@ -10,8 +10,8 @@ import 'svg.select.js'; import 'svg.draw.js'; import consts from './consts'; -import { Point, Equation, CuboidModel, Orientation, Edge } from './cuboid'; -import { parsePoints, clamp } from './shared'; +import { Equation, CuboidModel, Orientation, Edge } from './cuboid'; +import { Point, parsePoints, clamp } from './shared'; // Update constructor const originalDraw = SVG.Element.prototype.draw; diff --git a/cvat-canvas/webpack.config.js b/cvat-canvas/webpack.config.js index 0b414c96..fe972099 100644 --- a/cvat-canvas/webpack.config.js +++ b/cvat-canvas/webpack.config.js @@ -8,6 +8,23 @@ const path = require('path'); // eslint-disable-next-line @typescript-eslint/no-var-requires const DtsBundleWebpack = require('dts-bundle-webpack'); +const styleLoaders = [ + 'style-loader', + { + loader: 'css-loader', + options: { + importLoaders: 2, + }, + }, + { + loader: 'postcss-loader', + options: { + plugins: [require('postcss-preset-env')], + }, + }, + 'sass-loader', +]; + const nodeConfig = { target: 'node', mode: 'production', @@ -34,7 +51,7 @@ const nodeConfig = { '@babel/plugin-proposal-class-properties', '@babel/plugin-proposal-optional-chaining', ], - presets: [['@babel/preset-env'], ['@babel/typescript']], + presets: [['@babel/preset-env', { targets: 'node > 10' }], '@babel/typescript'], sourceType: 'unambiguous', }, }, @@ -42,17 +59,7 @@ const nodeConfig = { { test: /\.(css|scss)$/, exclude: /node_modules/, - use: [ - 'style-loader', - { - loader: 'css-loader', - options: { - importLoaders: 2, - }, - }, - 'postcss-loader', - 'sass-loader', - ], + use: styleLoaders, }, ], }, @@ -96,15 +103,7 @@ const webConfig = { loader: 'babel-loader', options: { plugins: ['@babel/plugin-proposal-class-properties'], - presets: [ - [ - '@babel/preset-env', - { - targets: '> 2.5%', // https://github.com/browserslist/browserslist - }, - ], - ['@babel/typescript'], - ], + presets: ['@babel/preset-env', '@babel/typescript'], sourceType: 'unambiguous', }, }, @@ -112,17 +111,7 @@ const webConfig = { { test: /\.scss$/, exclude: /node_modules/, - use: [ - 'style-loader', - { - loader: 'css-loader', - options: { - importLoaders: 2, - }, - }, - 'postcss-loader', - 'sass-loader', - ], + use: styleLoaders, }, ], }, diff --git a/cvat-canvas3d/package-lock.json b/cvat-canvas3d/package-lock.json index a7f1f80e..1443f31f 100644 --- a/cvat-canvas3d/package-lock.json +++ b/cvat-canvas3d/package-lock.json @@ -3585,14 +3585,26 @@ } }, "enhanced-resolve": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.1.0.tgz", - "integrity": "sha512-F/7vkyTtyc/llOIn8oWclcB25KdRaiPBpZYDgJHgh/UHtpgT2p2eldQgtQnLtUvfMKPKxbRaQM/hHkvLHt1Vng==", + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.5.0.tgz", + "integrity": "sha512-Nv9m36S/vxpsI+Hc4/ZGRs0n9mXqSWGGq49zxb/cJfPAQMbUtttJAlNPS4AQzaBdw/pKskw5bMbekT/Y7W/Wlg==", "dev": true, "requires": { "graceful-fs": "^4.1.2", - "memory-fs": "^0.4.0", + "memory-fs": "^0.5.0", "tapable": "^1.0.0" + }, + "dependencies": { + "memory-fs": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.5.0.tgz", + "integrity": "sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA==", + "dev": true, + "requires": { + "errno": "^0.1.3", + "readable-stream": "^2.0.1" + } + } } }, "errno": { @@ -5726,9 +5738,9 @@ } }, "interpret": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.2.0.tgz", - "integrity": "sha512-mT34yGKMNceBQUoVn7iCDKDntA7SC6gycMAWzGx1z/CMCTV7b2AAtXlo3nRyHZ1FelRkQbQjprHSYGwzLtkVbw==", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz", + "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==", "dev": true }, "invariant": { @@ -5740,12 +5752,6 @@ "loose-envify": "^1.0.0" } }, - "invert-kv": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-2.0.0.tgz", - "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==", - "dev": true - }, "ip": { "version": "1.1.5", "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz", @@ -6210,15 +6216,6 @@ "package-json": "^4.0.0" } }, - "lcid": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/lcid/-/lcid-2.0.0.tgz", - "integrity": "sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA==", - "dev": true, - "requires": { - "invert-kv": "^2.0.0" - } - }, "levn": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", @@ -6363,15 +6360,6 @@ "semver": "^5.6.0" } }, - "map-age-cleaner": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz", - "integrity": "sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==", - "dev": true, - "requires": { - "p-defer": "^1.0.0" - } - }, "map-cache": { "version": "0.2.2", "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", @@ -6410,17 +6398,6 @@ "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=", "dev": true }, - "mem": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/mem/-/mem-4.3.0.tgz", - "integrity": "sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w==", - "dev": true, - "requires": { - "map-age-cleaner": "^0.1.1", - "mimic-fn": "^2.0.0", - "p-is-promise": "^2.0.0" - } - }, "memory-fs": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", @@ -6602,12 +6579,6 @@ "mime-db": "1.40.0" } }, - "mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "dev": true - }, "minimalistic-assert": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", @@ -7348,17 +7319,6 @@ "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", "dev": true }, - "os-locale": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-3.1.0.tgz", - "integrity": "sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q==", - "dev": true, - "requires": { - "execa": "^1.0.0", - "lcid": "^2.0.0", - "mem": "^4.0.0" - } - }, "os-tmpdir": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", @@ -7375,24 +7335,12 @@ "os-tmpdir": "^1.0.0" } }, - "p-defer": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz", - "integrity": "sha1-n26xgvbJqozXQwBKfU+WsZaw+ww=", - "dev": true - }, "p-finally": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", "dev": true }, - "p-is-promise": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-2.1.0.tgz", - "integrity": "sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg==", - "dev": true - }, "p-limit": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.0.tgz", @@ -10772,112 +10720,46 @@ } }, "webpack-cli": { - "version": "3.3.6", - "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-3.3.6.tgz", - "integrity": "sha512-0vEa83M7kJtxK/jUhlpZ27WHIOndz5mghWL2O53kiDoA9DIxSKnfqB92LoqEn77cT4f3H2cZm1BMEat/6AZz3A==", - "dev": true, - "requires": { - "chalk": "2.4.2", - "cross-spawn": "6.0.5", - "enhanced-resolve": "4.1.0", - "findup-sync": "3.0.0", - "global-modules": "2.0.0", - "import-local": "2.0.0", - "interpret": "1.2.0", - "loader-utils": "1.2.3", - "supports-color": "6.1.0", - "v8-compile-cache": "2.0.3", - "yargs": "13.2.4" + "version": "3.3.12", + "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-3.3.12.tgz", + "integrity": "sha512-NVWBaz9k839ZH/sinurM+HcDvJOTXwSjYp1ku+5XKeOC03z8v5QitnK/x+lAxGXFyhdayoIf/GOpv85z3/xPag==", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "cross-spawn": "^6.0.5", + "enhanced-resolve": "^4.1.1", + "findup-sync": "^3.0.0", + "global-modules": "^2.0.0", + "import-local": "^2.0.0", + "interpret": "^1.4.0", + "loader-utils": "^1.4.0", + "supports-color": "^6.1.0", + "v8-compile-cache": "^2.1.1", + "yargs": "^13.3.2" }, "dependencies": { - "ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "emojis-list": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", + "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", "dev": true }, - "cliui": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", - "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", + "loader-utils": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", + "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", "dev": true, "requires": { - "string-width": "^3.1.0", - "strip-ansi": "^5.2.0", - "wrap-ansi": "^5.1.0" + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" } }, - "get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "dev": true - }, - "require-main-filename": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", - "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", + "v8-compile-cache": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", + "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", "dev": true - }, - "string-width": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", - "dev": true, - "requires": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" - } - }, - "strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "dev": true, - "requires": { - "ansi-regex": "^4.1.0" - } - }, - "wrap-ansi": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", - "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.0", - "string-width": "^3.0.0", - "strip-ansi": "^5.0.0" - } - }, - "yargs": { - "version": "13.2.4", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.2.4.tgz", - "integrity": "sha512-HG/DWAJa1PAnHT9JAhNa8AbAv3FPaiLzioSjCcmuXXhP8MlpHO5vwls4g4j6n30Z74GVQj8Xa62dWVx1QCGklg==", - "dev": true, - "requires": { - "cliui": "^5.0.0", - "find-up": "^3.0.0", - "get-caller-file": "^2.0.1", - "os-locale": "^3.1.0", - "require-directory": "^2.1.1", - "require-main-filename": "^2.0.0", - "set-blocking": "^2.0.0", - "string-width": "^3.0.0", - "which-module": "^2.0.0", - "y18n": "^4.0.0", - "yargs-parser": "^13.1.0" - } - }, - "yargs-parser": { - "version": "13.1.2", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz", - "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==", - "dev": true, - "requires": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" - } } } }, diff --git a/cvat-canvas3d/package.json b/cvat-canvas3d/package.json index a8eb1fcf..d99ebe51 100644 --- a/cvat-canvas3d/package.json +++ b/cvat-canvas3d/package.json @@ -9,6 +9,12 @@ }, "author": "Intel", "license": "MIT", + "browserslist": [ + "Chrome >= 63", + "Firefox > 58", + "not IE 11", + "> 2%" + ], "devDependencies": { "@babel/cli": "^7.13.16", "@babel/core": "^7.5.5", @@ -34,7 +40,7 @@ "style-loader": "^1.0.0", "typescript": "^3.5.3", "webpack": "^4.44.2", - "webpack-cli": "^3.3.6", + "webpack-cli": "^3.3.12", "webpack-dev-server": "^3.11.0" }, "dependencies": { diff --git a/cvat-canvas3d/postcss.config.js b/cvat-canvas3d/postcss.config.js deleted file mode 100644 index bea48ce1..00000000 --- a/cvat-canvas3d/postcss.config.js +++ /dev/null @@ -1,12 +0,0 @@ -// Copyright (C) 2021 Intel Corporation -// -// SPDX-License-Identifier: MIT - -module.exports = { - parser: false, - plugins: { - 'postcss-preset-env': { - browsers: '> 2.5%', // https://github.com/browserslist/browserslist - }, - }, -}; diff --git a/cvat-canvas3d/webpack.config.js b/cvat-canvas3d/webpack.config.js index 6b0b8c64..bfdfc248 100644 --- a/cvat-canvas3d/webpack.config.js +++ b/cvat-canvas3d/webpack.config.js @@ -8,6 +8,23 @@ const path = require('path'); // eslint-disable-next-line @typescript-eslint/no-var-requires const DtsBundleWebpack = require('dts-bundle-webpack'); +const styleLoaders = [ + 'style-loader', + { + loader: 'css-loader', + options: { + importLoaders: 2, + }, + }, + { + loader: 'postcss-loader', + options: { + plugins: [require('postcss-preset-env')], + }, + }, + 'sass-loader', +]; + const nodeConfig = { target: 'node', mode: 'production', @@ -34,7 +51,7 @@ const nodeConfig = { '@babel/plugin-proposal-class-properties', '@babel/plugin-proposal-optional-chaining', ], - presets: [['@babel/preset-env'], ['@babel/typescript']], + presets: [['@babel/preset-env', { targets: 'node > 10' }], '@babel/typescript'], sourceType: 'unambiguous', }, }, @@ -42,17 +59,7 @@ const nodeConfig = { { test: /\.(css|scss)$/, exclude: /node_modules/, - use: [ - 'style-loader', - { - loader: 'css-loader', - options: { - importLoaders: 2, - }, - }, - 'postcss-loader', - 'sass-loader', - ], + use: styleLoaders, }, ], }, @@ -96,15 +103,7 @@ const webConfig = { loader: 'babel-loader', options: { plugins: ['@babel/plugin-proposal-class-properties'], - presets: [ - [ - '@babel/preset-env', - { - targets: '> 2.5%', // https://github.com/browserslist/browserslist - }, - ], - ['@babel/typescript'], - ], + presets: ['@babel/preset-env', '@babel/typescript'], sourceType: 'unambiguous', }, }, @@ -112,17 +111,7 @@ const webConfig = { { test: /\.scss$/, exclude: /node_modules/, - use: [ - 'style-loader', - { - loader: 'css-loader', - options: { - importLoaders: 2, - }, - }, - 'postcss-loader', - 'sass-loader', - ], + use: styleLoaders, }, ], }, diff --git a/cvat-core/package.json b/cvat-core/package.json index e71098c0..1cf4c506 100644 --- a/cvat-core/package.json +++ b/cvat-core/package.json @@ -11,6 +11,12 @@ }, "author": "Intel", "license": "MIT", + "browserslist": [ + "Chrome >= 63", + "Firefox > 58", + "not IE 11", + "> 2%" + ], "devDependencies": { "@babel/cli": "^7.4.4", "@babel/core": "^7.4.4", diff --git a/cvat-core/webpack.config.js b/cvat-core/webpack.config.js index 6fcc47f5..1234ee72 100644 --- a/cvat-core/webpack.config.js +++ b/cvat-core/webpack.config.js @@ -52,14 +52,7 @@ const webConfig = { use: { loader: 'babel-loader', options: { - presets: [ - [ - '@babel/preset-env', - { - targets: '> 2.5%', - }, - ], - ], + presets: ['@babel/preset-env'], sourceType: 'unambiguous', }, }, diff --git a/cvat-data/package.json b/cvat-data/package.json index 57244c52..11f74dc1 100644 --- a/cvat-data/package.json +++ b/cvat-data/package.json @@ -3,6 +3,19 @@ "version": "1.0.2", "description": "", "main": "src/js/cvat-data.js", + "scripts": { + "patch": "cd src/js && patch --dry-run --forward -p0 < 3rdparty_patch.diff >> /dev/null && patch -p0 < 3rdparty_patch.diff; true", + "build": "npm run patch; webpack --config ./webpack.config.js", + "server": "npm run patch; nodemon --watch config --exec 'webpack-dev-server --config ./webpack.config.js --mode=development --open'" + }, + "author": "Intel", + "license": "MIT", + "browserslist": [ + "Chrome >= 63", + "Firefox > 58", + "not IE 11", + "> 2%" + ], "devDependencies": { "@babel/cli": "^7.13.16", "@babel/core": "^7.4.4", @@ -23,12 +36,5 @@ "dependencies": { "async-mutex": "^0.3.1", "jszip": "3.7.0" - }, - "scripts": { - "patch": "cd src/js && patch --dry-run --forward -p0 < 3rdparty_patch.diff >> /dev/null && patch -p0 < 3rdparty_patch.diff; true", - "build": "npm run patch; webpack --config ./webpack.config.js", - "server": "npm run patch; nodemon --watch config --exec 'webpack-dev-server --config ./webpack.config.js --mode=development --open'" - }, - "author": "Intel", - "license": "MIT" + } } diff --git a/cvat-data/webpack.config.js b/cvat-data/webpack.config.js index a286cab0..1b90f2e0 100644 --- a/cvat-data/webpack.config.js +++ b/cvat-data/webpack.config.js @@ -29,14 +29,7 @@ const cvatData = { use: { loader: 'babel-loader', options: { - presets: [ - [ - '@babel/preset-env', - { - targets: '> 2.5%', // https://github.com/browserslist/browserslist - }, - ], - ], + presets: ['@babel/preset-env'], sourceType: 'unambiguous', }, }, diff --git a/cvat-ui/package-lock.json b/cvat-ui/package-lock.json index 057d3f07..2e0e5199 100644 --- a/cvat-ui/package-lock.json +++ b/cvat-ui/package-lock.json @@ -1,6 +1,6 @@ { "name": "cvat-ui", - "version": "1.21.1", + "version": "1.21.2", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/cvat-ui/package.json b/cvat-ui/package.json index 3f0c839f..a200543f 100644 --- a/cvat-ui/package.json +++ b/cvat-ui/package.json @@ -1,6 +1,6 @@ { "name": "cvat-ui", - "version": "1.21.1", + "version": "1.21.2", "description": "CVAT single-page application", "main": "src/index.tsx", "scripts": { @@ -11,6 +11,12 @@ "lint": "eslint './src/**/*.{ts,tsx}'", "lint:fix": "eslint './src/**/*.{ts,tsx}' --fix" }, + "browserslist": [ + "Chrome >= 63", + "Firefox > 58", + "not IE 11", + "> 2%" + ], "author": "Intel", "license": "MIT", "devDependencies": { diff --git a/cvat-ui/postcss.config.js b/cvat-ui/postcss.config.js deleted file mode 100644 index 6493a9ea..00000000 --- a/cvat-ui/postcss.config.js +++ /dev/null @@ -1,13 +0,0 @@ -// Copyright (C) 2020 Intel Corporation -// -// SPDX-License-Identifier: MIT - -/* eslint-disable */ -module.exports = { - parser: false, - plugins: { - 'postcss-preset-env': { - browsers: '> 2.5%', // https://github.com/browserslist/browserslist - }, - }, -}; diff --git a/cvat-ui/src/components/cvat-app.tsx b/cvat-ui/src/components/cvat-app.tsx index ae46e76c..2b82934d 100644 --- a/cvat-ui/src/components/cvat-app.tsx +++ b/cvat-ui/src/components/cvat-app.tsx @@ -33,7 +33,11 @@ import getCore from 'cvat-core-wrapper'; import GlobalHotKeys, { KeyMap } from 'utils/mousetrap-react'; import { NotificationsState } from 'reducers/interfaces'; import { customWaViewHit } from 'utils/enviroment'; -import showPlatformNotification, { platformInfo, stopNotifications } from 'utils/platform-checker'; +import showPlatformNotification, { + platformInfo, + stopNotifications, + showUnsupportedNotification, +} from 'utils/platform-checker'; import '../styles.scss'; interface CVATAppProps { @@ -87,6 +91,50 @@ class CVATApplication extends React.PureComponent + + + + {`The browser you are using is ${name} ${version} based on ${engine}.` + + ' CVAT was tested in the latest versions of Chrome and Firefox.' + + ' We recommend to use Chrome (or another Chromium based browser)'} + + + + + + {`The operating system is ${os}`} + + + + ), + onOk: () => stopNotifications(true), + }); + } else if (showUnsupportedNotification()) { + stopNotifications(false); + Modal.warning({ + title: 'Unsupported features detected', + className: 'cvat-modal-unsupported-features-warning', + content: ( + + {`${name} v${version} does not support API, which is used by CVAT. `} + It is strongly recommended to update your browser. + + ), + onOk: () => stopNotifications(true), + }); + } } public componentDidUpdate(): void { @@ -269,37 +317,6 @@ class CVATApplication extends React.PureComponent - - - - {`The browser you are using is ${name} ${version} based on ${engine}.` + - ' CVAT was tested in the latest versions of Chrome and Firefox.' + - ' We recommend to use Chrome (or another Chromium based browser)'} - - - - - - {`The operating system is ${os}`} - - - - ), - onOk: () => stopNotifications(true), - }); - } - if (readyForRender) { if (user && user.isVerified) { return ( diff --git a/cvat-ui/src/utils/platform-checker.ts b/cvat-ui/src/utils/platform-checker.ts index 71335db6..81cbfe7c 100644 --- a/cvat-ui/src/utils/platform-checker.ts +++ b/cvat-ui/src/utils/platform-checker.ts @@ -1,4 +1,4 @@ -// Copyright (C) 2020 Intel Corporation +// Copyright (C) 2020-2021 Intel Corporation // // SPDX-License-Identifier: MIT @@ -9,6 +9,7 @@ const name = platform.name || 'unknown'; const version = platform.version || 'unknown'; const os = platform.os ? platform.os.toString() : 'unknown'; let platformNotificationShown = window.localStorage.getItem('platformNotiticationShown') !== null; +let featuresNotificationShown = window.localStorage.getItem('featuresNotificationShown') !== null; export function platformInfo(): { engine: string; @@ -26,8 +27,10 @@ export function platformInfo(): { export function stopNotifications(saveInStorage: boolean): void { platformNotificationShown = true; + featuresNotificationShown = true; if (saveInStorage) { window.localStorage.setItem('platformNotiticationShown', 'shown'); + window.localStorage.setItem('featuresNotificationShown', 'shown'); } } @@ -36,5 +39,12 @@ export default function showPlatformNotification(): boolean { // Gecko is engine of Firefox, supported but works worse than in Chrome (let's show the message) // WebKit is engine of Apple Safary, not supported const unsupportedPlatform = !['Blink'].includes(engine); - return unsupportedPlatform && !platformNotificationShown; + return !platformNotificationShown && unsupportedPlatform; +} + +export function showUnsupportedNotification(): boolean { + const nesassaryFeatures = [window.ResizeObserver, Object.fromEntries]; + + const unsupportedFeatures = nesassaryFeatures.some((feature) => typeof feature === 'undefined'); + return !featuresNotificationShown && unsupportedFeatures; } diff --git a/cvat-ui/webpack.config.js b/cvat-ui/webpack.config.js index f99c03cb..cb3c4709 100644 --- a/cvat-ui/webpack.config.js +++ b/cvat-ui/webpack.config.js @@ -63,16 +63,7 @@ module.exports = (env) => ({ }, ], ], - presets: [ - [ - '@babel/preset-env', - { - targets: '> 2.5%', // https://github.com/browserslist/browserslist - }, - ], - ['@babel/preset-react'], - ['@babel/typescript'], - ], + presets: ['@babel/preset-env', '@babel/preset-react', '@babel/typescript'], sourceType: 'unambiguous', }, }, @@ -87,7 +78,12 @@ module.exports = (env) => ({ importLoaders: 2, }, }, - 'postcss-loader', + { + loader: 'postcss-loader', + options: { + plugins: [require('postcss-preset-env')], + }, + }, 'sass-loader', ], },