diff --git a/.github/workflows/full.yml b/.github/workflows/full.yml
index e42380de5ead..17bcaf758409 100644
--- a/.github/workflows/full.yml
+++ b/.github/workflows/full.yml
@@ -223,9 +223,6 @@ jobs:
docker compose -f docker-compose.yml -f docker-compose.dev.yml -f docker-compose.ci.yml run cvat_ci /bin/bash \
-c 'python manage.py test cvat/apps -v 2'
- docker compose -f docker-compose.yml -f docker-compose.dev.yml -f docker-compose.ci.yml run cvat_ci /bin/bash \
- -c 'DISABLE_HUSKY=1 yarn --frozen-lockfile && yarn workspace cvat-core run test'
-
- name: Creating a log file from cvat containers
if: failure()
env:
diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml
index becca0218f94..e4845ac6ea50 100644
--- a/.github/workflows/main.yml
+++ b/.github/workflows/main.yml
@@ -241,9 +241,6 @@ jobs:
docker compose -f docker-compose.yml -f docker-compose.dev.yml -f docker-compose.ci.yml run cvat_ci /bin/bash \
-c 'coverage run -a manage.py test -v 2 cvat/apps && coverage json && mv coverage.json ${CONTAINER_COVERAGE_DATA_DIR}/unit_tests_coverage.json'
- docker compose -f docker-compose.yml -f docker-compose.dev.yml -f docker-compose.ci.yml run cvat_ci /bin/bash \
- -c 'DISABLE_HUSKY=1 yarn --frozen-lockfile && yarn workspace cvat-core run test && mv cvat-core/reports/coverage/coverage-final.json ${CONTAINER_COVERAGE_DATA_DIR}'
-
- name: Uploading code coverage results as an artifact
uses: actions/upload-artifact@v4
with:
diff --git a/.github/workflows/schedule.yml b/.github/workflows/schedule.yml
index bf74b30df047..a2d680226aeb 100644
--- a/.github/workflows/schedule.yml
+++ b/.github/workflows/schedule.yml
@@ -163,9 +163,6 @@ jobs:
docker compose -f docker-compose.yml -f docker-compose.dev.yml -f docker-compose.ci.yml run cvat_ci /bin/bash \
-c 'python manage.py test cvat/apps -v 2'
- docker compose -f docker-compose.yml -f docker-compose.dev.yml -f docker-compose.ci.yml run cvat_ci /bin/bash \
- -c 'DISABLE_HUSKY=1 yarn --frozen-lockfile && yarn workspace cvat-core run test'
-
docker compose -f docker-compose.yml -f docker-compose.dev.yml -f docker-compose.ci.yml down -v
e2e_testing:
diff --git a/.gitignore b/.gitignore
index 5ea2759c829e..a4a5b0032712 100644
--- a/.gitignore
+++ b/.gitignore
@@ -65,8 +65,6 @@ cvat-ui/dist
# produced by npm run docs in cvat-core
cvat-core/docs
-# produced by npm run test in cvat-core
-cvat-core/reports
# produced by prepare in the root package.json script
.husky
diff --git a/.vscode/launch.json b/.vscode/launch.json
index cb4b0f9dcf0f..ea067150536b 100644
--- a/.vscode/launch.json
+++ b/.vscode/launch.json
@@ -550,20 +550,6 @@
"src/api.js"
],
"port": 9230
- },
- {
- "type": "node",
- "request": "launch",
- "name": "jest debug",
- "cwd": "${workspaceFolder}/cvat-core",
- "program": "${workspaceFolder}/node_modules/.bin/jest",
- "args": [
- "--config",
- "${workspaceFolder}/cvat-core/jest.config.cjs"
- ],
- "console": "integratedTerminal",
- "internalConsoleOptions": "neverOpen",
- "disableOptimisticBPs": true,
}
],
"compounds": [
diff --git a/cvat-core/.eslintrc.cjs b/cvat-core/.eslintrc.cjs
index 0b2336ae4d5b..57e274b08a83 100644
--- a/cvat-core/.eslintrc.cjs
+++ b/cvat-core/.eslintrc.cjs
@@ -9,7 +9,6 @@ module.exports = {
ignorePatterns: [
'.eslintrc.cjs',
'webpack.config.cjs',
- 'jest.config.cjs',
'node_modules/**',
'dist/**',
'tests/**/*.cjs',
diff --git a/cvat-core/jest.config.cjs b/cvat-core/jest.config.cjs
deleted file mode 100644
index 83fe8261cf11..000000000000
--- a/cvat-core/jest.config.cjs
+++ /dev/null
@@ -1,17 +0,0 @@
-// Copyright (C) 2019-2022 Intel Corporation
-// Copyright (C) CVAT.ai Corporation
-//
-// SPDX-License-Identifier: MIT
-
-const { defaults } = require('jest-config');
-
-module.exports = {
- testEnvironment: 'jsdom',
- coverageDirectory: 'reports/coverage',
- coverageReporters: ['json', ['lcov', { projectRoot: '../' }]],
- moduleFileExtensions: [...defaults.moduleFileExtensions, 'ts', 'tsx'],
- reporters: ['default', ['jest-junit', { outputDirectory: 'reports/junit' }]],
- testMatch: ['**/tests/**/*.cjs'],
- testPathIgnorePatterns: ['/node_modules/', '/tests/mocks/*'],
- automock: false,
-};
diff --git a/cvat-core/package.json b/cvat-core/package.json
index 8e27f80f0b98..a80b852d2f6c 100644
--- a/cvat-core/package.json
+++ b/cvat-core/package.json
@@ -6,7 +6,6 @@
"main": "src/api.ts",
"scripts": {
"build": "webpack",
- "test": "jest --config=jest.config.cjs --coverage",
"type-check": "tsc --noEmit",
"type-check:watch": "yarn run type-check --watch"
},
@@ -20,12 +19,7 @@
],
"devDependencies": {
"@babel/preset-typescript": "^7.23.3",
- "babel-jest": "^29.7.0",
- "babel-plugin-transform-import-meta": "^2.2.1",
- "jest": "^29.5.0",
- "jest-config": "^29.5.0",
- "jest-environment-jsdom": "^29.5.0",
- "jest-junit": "^6.4.0"
+ "babel-plugin-transform-import-meta": "^2.2.1"
},
"dependencies": {
"axios": "^1.7.4",
diff --git a/cvat-core/tests/api/annotations.cjs b/cvat-core/tests/api/annotations.cjs
deleted file mode 100644
index 6e9478c1d477..000000000000
--- a/cvat-core/tests/api/annotations.cjs
+++ /dev/null
@@ -1,984 +0,0 @@
-// Copyright (C) 2020-2022 Intel Corporation
-// Copyright (C) CVAT.ai Corporation
-//
-// SPDX-License-Identifier: MIT
-
-// Setup mock for a server
-jest.mock('../../src/server-proxy', () => {
- return {
- __esModule: true,
- default: require('../mocks/server-proxy.mock.cjs'),
- };
-});
-
-const cvat = require('../../src/api').default;
-const serverProxy = require('../../src/server-proxy').default;
-
-// Test cases
-describe('Feature: get annotations', () => {
- test('get annotations from a task', async () => {
- const task = (await cvat.tasks.get({ id: 100 }))[0];
- const annotations = await task.annotations.get(0);
- expect(Array.isArray(annotations)).toBeTruthy();
- expect(annotations).toHaveLength(12);
- for (const state of annotations) {
- expect(state).toBeInstanceOf(cvat.classes.ObjectState);
- }
- });
-
- test('get annotations from a job', async () => {
- const job = (await cvat.jobs.get({ jobID: 101 }))[0];
- const annotations0 = await job.annotations.get(0);
- const annotations10 = await job.annotations.get(10);
- expect(Array.isArray(annotations0)).toBeTruthy();
- expect(Array.isArray(annotations10)).toBeTruthy();
- expect(annotations0).toHaveLength(2);
- expect(annotations10).toHaveLength(3);
- for (const state of annotations0.concat(annotations10)) {
- expect(state).toBeInstanceOf(cvat.classes.ObjectState);
- }
- });
-
- test('get annotations for frame out of task', async () => {
- const task = (await cvat.tasks.get({ id: 100 }))[0];
-
- // Out of task
- expect(task.annotations.get(500)).rejects.toThrow(cvat.exceptions.ArgumentError);
-
- // Out of task
- expect(task.annotations.get(-1)).rejects.toThrow(cvat.exceptions.ArgumentError);
- });
-
- test('get annotations for frame out of job', async () => {
- const job = (await cvat.jobs.get({ jobID: 101 }))[0];
-
- // Out of segment
- expect(job.annotations.get(500)).rejects.toThrow(cvat.exceptions.ArgumentError);
-
- // Out of segment
- expect(job.annotations.get(-1)).rejects.toThrow(cvat.exceptions.ArgumentError);
- });
-
- test('get only ellipses', async () => {
- const job = (await cvat.jobs.get({ jobID: 101 }))[0];
- const annotations = await job.annotations.get(5, false, JSON.parse('[{"and":[{"==":[{"var":"shape"},"ellipse"]}]}]'));
- expect(Array.isArray(annotations)).toBeTruthy();
- expect(annotations).toHaveLength(1);
- expect(annotations[0].shapeType).toBe('ellipse');
- });
-
- test('get skeletons with a filter', async () => {
- const job = (await cvat.jobs.get({ jobID: 40 }))[0];
- const annotations = await job.annotations.get(0, false, JSON.parse('[{"and":[{"==":[{"var":"shape"},"skeleton"]}]}]'));
- expect(Array.isArray(annotations)).toBeTruthy();
- expect(annotations).toHaveLength(2);
- for (const object of annotations) {
- expect(object.shapeType).toBe('skeleton');
- expect(object.elements).toBeInstanceOf(Array);
- const label = object.label;
- let points = [];
- object.elements.forEach((element, idx) => {
- expect(element).toBeInstanceOf(cvat.classes.ObjectState);
- expect(element.label.id).toBe(label.structure.sublabels[idx].id);
- expect(element.shapeType).toBe('points');
- points = [...points, ...element.points];
- });
- expect(points).toEqual(object.points);
- }
-
- expect(annotations[0].shapeType).toBe('skeleton');
- })
-});
-
-describe('Feature: get interpolated annotations', () => {
- test('get interpolated box', async () => {
- const task = (await cvat.tasks.get({ id: 101 }))[0];
- let annotations = await task.annotations.get(5);
- expect(Array.isArray(annotations)).toBeTruthy();
- expect(annotations).toHaveLength(2);
-
- const [xtl, ytl, xbr, ybr] = annotations[0].points;
- const { rotation } = annotations[0];
-
- expect(rotation).toBe(50);
- expect(Math.round(xtl)).toBe(332);
- expect(Math.round(ytl)).toBe(519);
- expect(Math.round(xbr)).toBe(651);
- expect(Math.round(ybr)).toBe(703);
-
- annotations = await task.annotations.get(15);
- expect(Array.isArray(annotations)).toBeTruthy();
- expect(annotations).toHaveLength(3);
- expect(annotations[1].rotation).toBe(40);
- expect(annotations[1].shapeType).toBe('rectangle');
-
- annotations = await task.annotations.get(30);
- annotations[0].rotation = 20;
- await annotations[0].save();
- annotations = await task.annotations.get(25);
- expect(annotations[0].rotation).toBe(0);
- expect(annotations[0].shapeType).toBe('rectangle');
- });
-
- test('get interpolated ellipse', async () => {
- const task = (await cvat.tasks.get({ id: 101 }))[0];
- const annotations = await task.annotations.get(5);
- expect(Array.isArray(annotations)).toBeTruthy();
- expect(annotations).toHaveLength(2);
- expect(annotations[1].shapeType).toBe('ellipse');
- const [cx, cy, rightX, topY] = annotations[1].points;
- expect(Math.round(cx)).toBe(550);
- expect(Math.round(cy)).toBe(550);
- expect(Math.round(rightX)).toBe(900);
- expect(Math.round(topY)).toBe(150);
- });
-});
-
-describe('Feature: put annotations', () => {
- test('put a shape to a task', async () => {
- const task = (await cvat.tasks.get({ id: 101 }))[0];
- let annotations = await task.annotations.get(1);
- const { length } = annotations;
-
- const state = new cvat.classes.ObjectState({
- frame: 1,
- objectType: cvat.enums.ObjectType.SHAPE,
- shapeType: cvat.enums.ShapeType.POLYGON,
- points: [0, 0, 100, 0, 100, 50],
- occluded: true,
- label: task.labels[0],
- zOrder: 0,
- });
-
- const indexes = await task.annotations.put([state]);
- annotations = await task.annotations.get(1);
- expect(indexes).toBeInstanceOf(Array);
- expect(indexes).toHaveLength(1);
- expect(annotations).toHaveLength(length + 1);
- });
-
- test('put a shape to a job', async () => {
- const job = (await cvat.jobs.get({ jobID: 100 }))[0];
- let annotations = await job.annotations.get(5);
- const { length } = annotations;
-
- const state = new cvat.classes.ObjectState({
- frame: 5,
- objectType: cvat.enums.ObjectType.SHAPE,
- shapeType: cvat.enums.ShapeType.RECTANGLE,
- points: [0, 0, 100, 100],
- occluded: false,
- label: job.labels[0],
- zOrder: 0,
- });
-
- const indexes = await job.annotations.put([state]);
- expect(indexes).toBeInstanceOf(Array);
- expect(indexes).toHaveLength(1);
- annotations = await job.annotations.get(5);
- expect(annotations).toHaveLength(length + 1);
- });
-
- test('put an ellipse shape to a job', async () => {
- const job = (await cvat.jobs.get({ jobID: 100 }))[0];
- let annotations = await job.annotations.get(5);
- const { length } = annotations;
-
- const state = new cvat.classes.ObjectState({
- frame: 5,
- objectType: cvat.enums.ObjectType.SHAPE,
- shapeType: cvat.enums.ShapeType.ELLIPSE,
- points: [500, 500, 800, 100],
- occluded: true,
- label: job.labels[0],
- zOrder: 0,
- });
-
- const indexes = await job.annotations.put([state]);
- expect(indexes).toBeInstanceOf(Array);
- expect(indexes).toHaveLength(1);
- annotations = await job.annotations.get(5);
- expect(annotations).toHaveLength(length + 1);
- });
-
- test('put a track to a task', async () => {
- const task = (await cvat.tasks.get({ id: 101 }))[0];
- let annotations = await task.annotations.get(1);
- const { length } = annotations;
-
- const state = new cvat.classes.ObjectState({
- frame: 1,
- objectType: cvat.enums.ObjectType.TRACK,
- shapeType: cvat.enums.ShapeType.POLYGON,
- points: [0, 0, 100, 0, 100, 50],
- occluded: true,
- label: task.labels[0],
- zOrder: 0,
- });
-
- const indexes = await task.annotations.put([state]);
- expect(indexes).toBeInstanceOf(Array);
- expect(indexes).toHaveLength(1);
- annotations = await task.annotations.get(1);
- expect(annotations).toHaveLength(length + 1);
- });
-
- test('put a track to a job', async () => {
- const job = (await cvat.jobs.get({ jobID: 100 }))[0];
- let annotations = await job.annotations.get(5);
- const { length } = annotations;
-
- const state = new cvat.classes.ObjectState({
- frame: 5,
- objectType: cvat.enums.ObjectType.TRACK,
- shapeType: cvat.enums.ShapeType.RECTANGLE,
- points: [0, 0, 100, 100],
- occluded: false,
- label: job.labels[0],
- zOrder: 0,
- });
-
- const indexes = await job.annotations.put([state]);
- expect(indexes).toBeInstanceOf(Array);
- expect(indexes).toHaveLength(1);
- annotations = await job.annotations.get(5);
- expect(annotations).toHaveLength(length + 1);
- });
-
- test('put object without objectType to a task', async () => {
- const task = (await cvat.tasks.get({ id: 101 }))[0];
- await task.annotations.clear({ reload: true });
- expect(() => new cvat.classes.ObjectState({
- frame: 1,
- shapeType: cvat.enums.ShapeType.POLYGON,
- points: [0, 0, 100, 0, 100, 50],
- occluded: true,
- label: task.labels[0],
- zOrder: 0,
- })).toThrow(cvat.exceptions.ArgumentError);
- });
-
- test('put shape with bad attributes to a task', async () => {
- const task = (await cvat.tasks.get({ id: 101 }))[0];
- await task.annotations.clear({ reload: true });
- const state = new cvat.classes.ObjectState({
- frame: 1,
- objectType: cvat.enums.ObjectType.SHAPE,
- shapeType: cvat.enums.ShapeType.POLYGON,
- points: [0, 0, 100, 0, 100, 50],
- attributes: { 'bad key': 55 },
- occluded: true,
- label: task.labels[0],
- zOrder: 0,
- });
-
- expect(task.annotations.put([state])).rejects.toThrow(cvat.exceptions.ArgumentError);
- });
-
- test('put shape with bad zOrder to a task', async () => {
- const task = (await cvat.tasks.get({ id: 101 }))[0];
- await task.annotations.clear({ reload: true });
- const state = new cvat.classes.ObjectState({
- frame: 1,
- objectType: cvat.enums.ObjectType.SHAPE,
- shapeType: cvat.enums.ShapeType.POLYGON,
- points: [0, 0, 100, 0, 100, 50],
- attributes: { 'bad key': 55 },
- occluded: true,
- label: task.labels[0],
- zOrder: 'bad value',
- });
-
- expect(task.annotations.put([state])).rejects.toThrow(cvat.exceptions.ArgumentError);
-
- const state1 = new cvat.classes.ObjectState({
- frame: 1,
- objectType: cvat.enums.ObjectType.SHAPE,
- shapeType: cvat.enums.ShapeType.POLYGON,
- points: [0, 0, 100, 0, 100, 50],
- attributes: { 'bad key': 55 },
- occluded: true,
- label: task.labels[0],
- zOrder: NaN,
- });
-
- expect(task.annotations.put([state1])).rejects.toThrow(cvat.exceptions.ArgumentError);
- });
-
- test('put shape without points and with invalid points to a task', async () => {
- const task = (await cvat.tasks.get({ id: 101 }))[0];
- await task.annotations.clear({ reload: true });
- const state = new cvat.classes.ObjectState({
- frame: 1,
- objectType: cvat.enums.ObjectType.SHAPE,
- shapeType: cvat.enums.ShapeType.POLYGON,
- occluded: true,
- label: task.labels[0],
- zOrder: 0,
- });
-
- expect(() => state.points = ['150,50 250,30']).toThrow(cvat.exceptions.ArgumentError);
-
- delete state.points;
- expect(task.annotations.put([state])).rejects.toThrow(cvat.exceptions.DataError);
-
- state.points = [];
- expect(task.annotations.put([state])).rejects.toThrow(cvat.exceptions.DataError);
- });
-
- test('put shape without type to a task', async () => {
- const task = (await cvat.tasks.get({ id: 101 }))[0];
- await task.annotations.clear({ reload: true });
- const state = new cvat.classes.ObjectState({
- frame: 1,
- objectType: cvat.enums.ObjectType.SHAPE,
- points: [0, 0, 100, 0, 100, 50],
- occluded: true,
- label: task.labels[0],
- zOrder: 0,
- });
-
- expect(task.annotations.put([state])).rejects.toThrow(cvat.exceptions.ArgumentError);
- });
-
- test('put shape without label and with bad label to a task', async () => {
- const task = (await cvat.tasks.get({ id: 101 }))[0];
- await task.annotations.clear({ reload: true });
- const state = {
- frame: 1,
- objectType: cvat.enums.ObjectType.SHAPE,
- shapeType: cvat.enums.ShapeType.POLYGON,
- points: [0, 0, 100, 0, 100, 50],
- occluded: true,
- zOrder: 0,
- };
-
- expect(() => new cvat.classes.ObjectState(state))
- .toThrow(cvat.exceptions.ArgumentError);
- expect(() => new cvat.classes.ObjectState({ ...state, label: 'bad label' }))
- .toThrow(cvat.exceptions.ArgumentError);
- expect(() => new cvat.classes.ObjectState({ ...state, label: {} }))
- .toThrow(cvat.exceptions.ArgumentError);
- });
-
- test('put shape with bad frame to a task', async () => {
- const task = (await cvat.tasks.get({ id: 101 }))[0];
- await task.annotations.clear({ reload: true });
- expect(() => new cvat.classes.ObjectState({
- frame: '5',
- objectType: cvat.enums.ObjectType.SHAPE,
- shapeType: cvat.enums.ShapeType.POLYGON,
- points: [0, 0, 100, 0, 100, 50],
- occluded: true,
- label: task.labels[0],
- zOrder: 0,
- })).toThrow(cvat.exceptions.ArgumentError);
- });
-
- test('put a skeleton shape to a job', async() => {
- const job = (await cvat.jobs.get({ jobID: 40 }))[0];
- const label = job.labels[0];
- await job.annotations.clear({ reload: true });
- await job.annotations.clear();
- const skeleton = new cvat.classes.ObjectState({
- frame: 0,
- objectType: cvat.enums.ObjectType.SHAPE,
- shapeType: cvat.enums.ShapeType.SKELETON,
- points: [],
- label,
- elements: label.structure.sublabels.map((sublabel, idx) => ({
- frame: 0,
- objectType: cvat.enums.ObjectType.SHAPE,
- shapeType: cvat.enums.ShapeType.POINTS,
- points: [idx * 10, idx * 10],
- label: sublabel,
- }))
- });
-
- await job.annotations.put([skeleton]);
- const annotations = await job.annotations.get(0);
- expect(annotations.length).toBe(1);
- expect(annotations[0].objectType).toBe(cvat.enums.ObjectType.SHAPE);
- expect(annotations[0].shapeType).toBe(cvat.enums.ShapeType.SKELETON);
- for (const element of annotations[0].elements) {
- expect(element.objectType).toBe(cvat.enums.ObjectType.SHAPE);
- expect(element.shapeType).toBe(cvat.enums.ShapeType.POINTS);
- }
- });
-
- test('put a skeleton track to a task', async() => {
- const task = (await cvat.tasks.get({ id: 40 }))[0];
- const label = task.labels[0];
- await task.annotations.clear({ reload: true });
- await task.annotations.clear();
- const skeleton = new cvat.classes.ObjectState({
- frame: 0,
- objectType: cvat.enums.ObjectType.TRACK,
- shapeType: cvat.enums.ShapeType.SKELETON,
- points: [],
- label,
- elements: label.structure.sublabels.map((sublabel, idx) => ({
- frame: 0,
- objectType: cvat.enums.ObjectType.TRACK,
- shapeType: cvat.enums.ShapeType.POINTS,
- points: [idx * 10, idx * 10],
- label: sublabel,
- }))
- });
-
- await task.annotations.put([skeleton]);
- const annotations = await task.annotations.get(2);
- expect(annotations.length).toBe(1);
- expect(annotations[0].objectType).toBe(cvat.enums.ObjectType.TRACK);
- expect(annotations[0].shapeType).toBe(cvat.enums.ShapeType.SKELETON);
- for (const element of annotations[0].elements) {
- expect(element.objectType).toBe(cvat.enums.ObjectType.TRACK);
- expect(element.shapeType).toBe(cvat.enums.ShapeType.POINTS);
- }
- });
-});
-
-describe('Feature: check unsaved changes', () => {
- test('check unsaved changes in a task', async () => {
- const task = (await cvat.tasks.get({ id: 101 }))[0];
- await task.annotations.get(0);
- expect(await task.annotations.hasUnsavedChanges()).toBe(false);
- const annotations = await task.annotations.get(0);
-
- annotations[0].keyframe = false;
- await annotations[0].save();
-
- expect(await task.annotations.hasUnsavedChanges()).toBe(true);
- });
-
- test('check unsaved changes in a job', async () => {
- const job = (await cvat.jobs.get({ jobID: 100 }))[0];
- await job.annotations.get(0);
- expect(await job.annotations.hasUnsavedChanges()).toBe(false);
- const annotations = await job.annotations.get(0);
-
- annotations[0].occluded = true;
- await annotations[0].save();
-
- expect(await job.annotations.hasUnsavedChanges()).toBe(true);
- });
-});
-
-describe('Feature: save annotations', () => {
- test('create, save, undo, save, redo save', async () => {
- const task = (await cvat.tasks.get({ id: 101 }))[0];
- await task.annotations.get(0);
- const state = new cvat.classes.ObjectState({
- frame: 0,
- objectType: cvat.enums.ObjectType.SHAPE,
- shapeType: cvat.enums.ShapeType.POLYGON,
- points: [0, 0, 100, 0, 100, 50],
- occluded: true,
- label: task.labels[0],
- zOrder: 0,
- });
-
- await task.annotations.put([state]);
- await task.annotations.save();
- await task.actions.undo();
- await task.annotations.save();
- await task.actions.redo();
- await task.annotations.save();
- });
-
- test('create & save annotations for a task', async () => {
- const task = (await cvat.tasks.get({ id: 101 }))[0];
- let annotations = await task.annotations.get(0);
- const { length } = annotations;
- const state = new cvat.classes.ObjectState({
- frame: 0,
- objectType: cvat.enums.ObjectType.SHAPE,
- shapeType: cvat.enums.ShapeType.POLYGON,
- points: [0, 0, 100, 0, 100, 50],
- occluded: true,
- label: task.labels[0],
- zOrder: 0,
- });
-
- expect(task.annotations.hasUnsavedChanges()).toBe(false);
- await task.annotations.put([state]);
- expect(task.annotations.hasUnsavedChanges()).toBe(true);
- await task.annotations.save();
- expect(task.annotations.hasUnsavedChanges()).toBe(false);
- annotations = await task.annotations.get(0);
- expect(annotations).toHaveLength(length + 1);
- });
-
- test('update & save annotations for a task', async () => {
- const task = (await cvat.tasks.get({ id: 101 }))[0];
- const annotations = await task.annotations.get(0);
-
- expect(task.annotations.hasUnsavedChanges()).toBe(false);
- annotations[0].occluded = true;
- await annotations[0].save();
- expect(task.annotations.hasUnsavedChanges()).toBe(true);
- await task.annotations.save();
- expect(task.annotations.hasUnsavedChanges()).toBe(false);
- });
-
- test('delete & save annotations for a task', async () => {
- const task = (await cvat.tasks.get({ id: 101 }))[0];
- const annotations = await task.annotations.get(0);
-
- expect(task.annotations.hasUnsavedChanges()).toBe(false);
- await annotations[0].delete(0);
- expect(task.annotations.hasUnsavedChanges()).toBe(true);
- await task.annotations.save();
- expect(task.annotations.hasUnsavedChanges()).toBe(false);
- });
-
- test('create & save annotations for a job', async () => {
- const job = (await cvat.jobs.get({ jobID: 100 }))[0];
- let annotations = await job.annotations.get(0);
- const { length } = annotations;
- const state = new cvat.classes.ObjectState({
- frame: 0,
- objectType: cvat.enums.ObjectType.SHAPE,
- shapeType: cvat.enums.ShapeType.POLYGON,
- points: [0, 0, 100, 0, 100, 50],
- occluded: true,
- label: job.labels[0],
- zOrder: 0,
- });
-
- expect(job.annotations.hasUnsavedChanges()).toBe(false);
- await job.annotations.put([state]);
- expect(job.annotations.hasUnsavedChanges()).toBe(true);
- await job.annotations.save();
- expect(job.annotations.hasUnsavedChanges()).toBe(false);
- annotations = await job.annotations.get(0);
- expect(annotations).toHaveLength(length + 1);
- });
-
- test('update & save annotations for a job', async () => {
- const job = (await cvat.jobs.get({ jobID: 100 }))[0];
- const annotations = await job.annotations.get(0);
-
- expect(job.annotations.hasUnsavedChanges()).toBe(false);
- annotations[0].points = [0, 100, 200, 300];
- await annotations[0].save();
- expect(job.annotations.hasUnsavedChanges()).toBe(true);
- await job.annotations.save();
- expect(job.annotations.hasUnsavedChanges()).toBe(false);
- });
-
- test('delete & save annotations for a job', async () => {
- const job = (await cvat.jobs.get({ jobID: 100 }))[0];
- const annotations = await job.annotations.get(0);
-
- expect(job.annotations.hasUnsavedChanges()).toBe(false);
- await annotations[0].delete(0);
- expect(job.annotations.hasUnsavedChanges()).toBe(true);
- await job.annotations.save();
- expect(job.annotations.hasUnsavedChanges()).toBe(false);
- });
-
- test('delete & save annotations for a job when there are a track and a shape with the same id', async () => {
- const job = (await cvat.jobs.get({ jobID: 112 }))[0];
- const annotations = await job.annotations.get(0);
- let okay = false;
-
- // Temporary override this method because we need to know what data
- // have been sent to a server
- const oldImplementation = serverProxy.annotations.updateAnnotations;
- serverProxy.annotations.updateAnnotations = async (session, id, data, action) => {
- const result = await oldImplementation.call(serverProxy.annotations, session, id, data, action);
- if (action === 'delete') {
- okay = okay || (action === 'delete' && !!(data.shapes.length || data.tracks.length));
- }
- return result;
- };
-
- await annotations[0].delete(0);
- await job.annotations.save();
-
- serverProxy.annotations.updateAnnotations = oldImplementation;
- expect(okay).toBe(true);
- });
-});
-
-describe('Feature: merge annotations', () => {
- test('merge annotations in a task', async () => {
- const task = (await cvat.tasks.get({ id: 100 }))[0];
- const annotations0 = await task.annotations.get(0);
- const annotations1 = await task.annotations.get(1);
- const states = [annotations0[0], annotations1[0]];
- await task.annotations.merge(states);
- const merged0 = (await task.annotations.get(0)).filter(
- (state) => state.objectType === cvat.enums.ObjectType.TRACK,
- );
- const merged1 = (await task.annotations.get(1)).filter(
- (state) => state.objectType === cvat.enums.ObjectType.TRACK,
- );
- expect(merged0).toHaveLength(1);
- expect(merged1).toHaveLength(1);
-
- expect(merged0[0].points).toEqual(states[0].points);
- expect(merged1[0].points).toEqual(states[1].points);
- });
-
- test('merge annotations in a job', async () => {
- const job = (await cvat.jobs.get({ jobID: 100 }))[0];
- const annotations0 = await job.annotations.get(0);
- const annotations1 = await job.annotations.get(1);
- const states = [annotations0[0], annotations1[0]];
- await job.annotations.merge(states);
- const merged0 = (await job.annotations.get(0)).filter(
- (state) => state.objectType === cvat.enums.ObjectType.TRACK,
- );
- const merged1 = (await job.annotations.get(1)).filter(
- (state) => state.objectType === cvat.enums.ObjectType.TRACK,
- );
- expect(merged0).toHaveLength(1);
- expect(merged1).toHaveLength(1);
-
- expect(merged0[0].points).toEqual(states[0].points);
- expect(merged1[0].points).toEqual(states[1].points);
- });
-
- test('trying to merge not object state', async () => {
- const task = (await cvat.tasks.get({ id: 100 }))[0];
- const annotations0 = await task.annotations.get(0);
- const states = [annotations0[0], {}];
-
- expect(task.annotations.merge(states)).rejects.toThrow(cvat.exceptions.ArgumentError);
- });
-
- test('trying to merge object state which is not saved in a collection', async () => {
- const task = (await cvat.tasks.get({ id: 100 }))[0];
- const annotations0 = await task.annotations.get(0);
-
- const state = new cvat.classes.ObjectState({
- frame: 0,
- objectType: cvat.enums.ObjectType.SHAPE,
- shapeType: cvat.enums.ShapeType.POLYGON,
- points: [0, 0, 100, 0, 100, 50],
- occluded: true,
- label: task.labels[0],
- });
- const states = [annotations0[0], state];
-
- expect(task.annotations.merge(states)).rejects.toThrow(cvat.exceptions.ArgumentError);
- });
-
- test('trying to merge with bad label', async () => {
- const task = (await cvat.tasks.get({ id: 100 }))[0];
- const annotations0 = await task.annotations.get(0);
- const annotations1 = await task.annotations.get(1);
- const states = [annotations0[0], annotations1[0]];
- states[0].label = new cvat.classes.Label({
- id: 500,
- name: 'new_label',
- attributes: [],
- });
-
- expect(task.annotations.merge(states)).rejects.toThrow(cvat.exceptions.ArgumentError);
- });
-
- test('trying to merge with different shape types', async () => {
- const task = (await cvat.tasks.get({ id: 100 }))[0];
- const annotations0 = await task.annotations.get(0);
- const annotations1 = (await task.annotations.get(1)).filter(
- (state) => state.shapeType === cvat.enums.ShapeType.POLYGON,
- );
- const states = [annotations0[0], annotations1[0]];
-
- expect(task.annotations.merge(states)).rejects.toThrow(cvat.exceptions.ArgumentError);
- });
-
- test('trying to merge with different labels', async () => {
- const task = (await cvat.tasks.get({ id: 100 }))[0];
- const annotations0 = await task.annotations.get(0);
- const annotations1 = await task.annotations.get(1);
- const states = [annotations0[0], annotations1[0]];
- states[1].label = new cvat.classes.Label({
- id: 500,
- name: 'new_label',
- attributes: [],
- });
- await states[1].save();
-
- expect(task.annotations.merge(states)).rejects.toThrow(cvat.exceptions.ArgumentError);
- });
-});
-
-describe('Feature: split annotations', () => {
- test('split annotations in a task', async () => {
- const task = (await cvat.tasks.get({ id: 101 }))[0];
- const annotations4 = await task.annotations.get(4);
- const annotations5 = await task.annotations.get(5);
-
- expect(annotations4[0].clientID).toBe(annotations5[0].clientID);
- await task.annotations.split(annotations5[0], 5);
- const splitted4 = await task.annotations.get(4);
- const splitted5 = (await task.annotations.get(5)).filter((state) => !state.outside);
- expect(splitted4[1].clientID).not.toBe(splitted5[1].clientID);
- });
-
- test('split annotations in a job', async () => {
- const job = (await cvat.jobs.get({ jobID: 101 }))[0];
- const annotations4 = await job.annotations.get(4);
- const annotations5 = await job.annotations.get(5);
-
- expect(annotations4[0].clientID).toBe(annotations5[0].clientID);
- await job.annotations.split(annotations5[0], 5);
- const splitted4 = await job.annotations.get(4);
- const splitted5 = (await job.annotations.get(5)).filter((state) => !state.outside);
- expect(splitted4[1].clientID).not.toBe(splitted5[1].clientID);
- });
-
- test('split on a bad frame', async () => {
- const task = (await cvat.tasks.get({ id: 101 }))[0];
- const annotations4 = await task.annotations.get(4);
- const annotations5 = await task.annotations.get(5);
-
- expect(annotations4[0].clientID).toBe(annotations5[0].clientID);
- expect(task.annotations.split(annotations5[0], 'bad frame')).rejects.toThrow(
- cvat.exceptions.ArgumentError,
- );
- });
-});
-
-describe('Feature: group annotations', () => {
- test('group annotations in a task', async () => {
- const task = (await cvat.tasks.get({ id: 100 }))[0];
- let annotations = await task.annotations.get(0);
- const groupID = await task.annotations.group(annotations);
- expect(typeof groupID).toBe('number');
- annotations = await task.annotations.get(0);
- for (const state of annotations) {
- expect(state.group.id).toBe(groupID);
- }
- });
-
- test('group annotations in a job', async () => {
- const job = (await cvat.jobs.get({ jobID: 100 }))[0];
- let annotations = await job.annotations.get(0);
- const groupID = await job.annotations.group(annotations);
- expect(typeof groupID).toBe('number');
- annotations = await job.annotations.get(0);
- for (const state of annotations) {
- expect(state.group.id).toBe(groupID);
- }
- });
-
- test('trying to group object state which has not been saved in a collection', async () => {
- const task = (await cvat.tasks.get({ id: 100 }))[0];
- await task.annotations.clear({ reload: true });
-
- const state = new cvat.classes.ObjectState({
- frame: 0,
- objectType: cvat.enums.ObjectType.SHAPE,
- shapeType: cvat.enums.ShapeType.POLYGON,
- points: [0, 0, 100, 0, 100, 50],
- occluded: true,
- label: task.labels[0],
- zOrder: 0,
- });
-
- expect(task.annotations.group([state])).rejects.toThrow(cvat.exceptions.ArgumentError);
- });
-
- test('trying to group not object state', async () => {
- const task = (await cvat.tasks.get({ id: 100 }))[0];
- const annotations = await task.annotations.get(0);
- expect(task.annotations.group(annotations.concat({}))).rejects.toThrow(cvat.exceptions.ArgumentError);
- });
-});
-
-describe('Feature: clear annotations', () => {
- test('clear annotations in a task', async () => {
- const task = (await cvat.tasks.get({ id: 100 }))[0];
- let annotations = await task.annotations.get(0);
- expect(annotations).not.toHaveLength(0);
- await task.annotations.clear();
- annotations = await task.annotations.get(0);
- expect(annotations).toHaveLength(0);
- });
-
- test('clear annotations in a job', async () => {
- const job = (await cvat.jobs.get({ jobID: 100 }))[0];
- let annotations = await job.annotations.get(0);
- expect(annotations).not.toHaveLength(0);
- await job.annotations.clear();
- annotations = await job.annotations.get(0);
- expect(annotations).toHaveLength(0);
- });
-
- test('clear annotations with reload in a task', async () => {
- const task = (await cvat.tasks.get({ id: 100 }))[0];
- let annotations = await task.annotations.get(0);
- expect(annotations).not.toHaveLength(0);
- annotations[0].occluded = true;
- await annotations[0].save();
- expect(task.annotations.hasUnsavedChanges()).toBe(true);
- await task.annotations.clear({ reload: true });
- annotations = await task.annotations.get(0);
- expect(annotations).not.toHaveLength(0);
- expect(task.annotations.hasUnsavedChanges()).toBe(false);
- });
-
- test('clear annotations with reload in a job', async () => {
- const job = (await cvat.jobs.get({ jobID: 100 }))[0];
- let annotations = await job.annotations.get(0);
- expect(annotations).not.toHaveLength(0);
- annotations[0].occluded = true;
- await annotations[0].save();
- expect(job.annotations.hasUnsavedChanges()).toBe(true);
- await job.annotations.clear({ reload: true });
- annotations = await job.annotations.get(0);
- expect(annotations).not.toHaveLength(0);
- expect(job.annotations.hasUnsavedChanges()).toBe(false);
- });
-
- test('clear annotations with bad reload parameter', async () => {
- const task = (await cvat.tasks.get({ id: 100 }))[0];
- await task.annotations.clear({ reload: true });
- expect(task.annotations.clear({ reload: 'reload' })).rejects.toThrow(cvat.exceptions.ArgumentError);
- });
-});
-
-describe('Feature: get statistics', () => {
- test('get statistics from a task', async () => {
- const task = (await cvat.tasks.get({ id: 100 }))[0];
- await task.annotations.clear({ reload: true });
- const statistics = await task.annotations.statistics();
- expect(statistics).toBeInstanceOf(cvat.classes.Statistics);
- expect(statistics.total.total).toBe(30);
- });
-
- test('get statistics from a job', async () => {
- const job = (await cvat.jobs.get({ jobID: 101 }))[0];
- await job.annotations.clear({ reload: true });
- const statistics = await job.annotations.statistics();
- expect(statistics).toBeInstanceOf(cvat.classes.Statistics);
- expect(statistics.total.total).toBe(1012);
- });
-
- test('get statistics from a job with skeletons', async () => {
- const job = (await cvat.jobs.get({ jobID: 40 }))[0];
- await job.annotations.clear({ reload: true });
- const statistics = await job.annotations.statistics();
- expect(statistics).toBeInstanceOf(cvat.classes.Statistics);
- expect(statistics.total.total).toBe(30);
- const labelName = job.labels[0].name;
- expect(statistics.label[labelName].skeleton.shape).toBe(1);
- expect(statistics.label[labelName].skeleton.track).toBe(1);
- expect(statistics.label[labelName].manually).toBe(2);
- expect(statistics.label[labelName].interpolated).toBe(3);
- expect(statistics.label[labelName].total).toBe(5);
- });
-
- test('get statistics from a job with skeletons', async () => {
- const job = (await cvat.jobs.get({ jobID: 102 }))[0];
- await job.annotations.clear({ reload: true });
- let statistics = await job.annotations.statistics();
- expect(statistics.total.manually).toBe(5);
- expect(statistics.total.interpolated).toBe(443);
- expect(statistics.total.tag).toBe(1);
- expect(statistics.total.rectangle.shape).toBe(1);
- expect(statistics.total.rectangle.track).toBe(1);
- await job.frames.delete(500); // track frame
- await job.frames.delete(510); // rectangle shape frame
- await job.frames.delete(550); // the first keyframe of a track
- statistics = await job.annotations.statistics();
- expect(statistics.total.manually).toBe(2);
- expect(statistics.total.tag).toBe(0);
- expect(statistics.total.rectangle.shape).toBe(0);
- expect(statistics.total.interpolated).toBe(394);
- await job.frames.delete(650); // intermediate frame in a track
- statistics = await job.annotations.statistics();
- expect(statistics.total.interpolated).toBe(393);
- await job.close();
- });
-});
-
-describe('Feature: select object', () => {
- test('select object in a task', async () => {
- const task = (await cvat.tasks.get({ id: 100 }))[0];
- const annotations = await task.annotations.get(0);
- let result = await task.annotations.select(annotations, 1430, 765);
- expect(result.state.shapeType).toBe(cvat.enums.ShapeType.RECTANGLE);
- result = await task.annotations.select(annotations, 1415, 765);
- expect(result.state.shapeType).toBe(cvat.enums.ShapeType.POLYGON);
- expect(result.state.points).toHaveLength(10);
- result = await task.annotations.select(annotations, 1083, 543);
- expect(result.state.shapeType).toBe(cvat.enums.ShapeType.POINTS);
- expect(result.state.points).toHaveLength(16);
- result = await task.annotations.select(annotations, 613, 811);
- expect(result.state.shapeType).toBe(cvat.enums.ShapeType.POLYGON);
- expect(result.state.points).toHaveLength(94);
- result = await task.annotations.select(annotations, 600, 900);
- expect(result.state.shapeType).toBe(cvat.enums.ShapeType.CUBOID);
- expect(result.state.points).toHaveLength(16);
- });
-
- test('select object in a job', async () => {
- const job = (await cvat.jobs.get({ jobID: 100 }))[0];
- const annotations = await job.annotations.get(0);
- let result = await job.annotations.select(annotations, 490, 540);
- expect(result.state.shapeType).toBe(cvat.enums.ShapeType.RECTANGLE);
- result = await job.annotations.select(annotations, 430, 260);
- expect(result.state.shapeType).toBe(cvat.enums.ShapeType.POLYLINE);
- result = await job.annotations.select(annotations, 1473, 250);
- expect(result.state.shapeType).toBe(cvat.enums.ShapeType.RECTANGLE);
- result = await job.annotations.select(annotations, 1490, 237);
- expect(result.state.shapeType).toBe(cvat.enums.ShapeType.POLYGON);
- expect(result.state.points).toHaveLength(94);
- result = await job.annotations.select(annotations, 600, 900);
- expect(result.state.shapeType).toBe(cvat.enums.ShapeType.CUBOID);
- expect(result.state.points).toHaveLength(16);
- });
-
- test('trying to select from not object states', async () => {
- const task = (await cvat.tasks.get({ id: 100 }))[0];
- const annotations = await task.annotations.get(0);
- expect(task.annotations.select(annotations.concat({}), 500, 500)).rejects.toThrow(
- cvat.exceptions.ArgumentError,
- );
- });
-
- test('trying to select with invalid coordinates', async () => {
- const task = (await cvat.tasks.get({ id: 100 }))[0];
- const annotations = await task.annotations.get(0);
- expect(task.annotations.select(annotations, null, null)).rejects.toThrow(cvat.exceptions.ArgumentError);
- expect(task.annotations.select(annotations, null, null)).rejects.toThrow(cvat.exceptions.ArgumentError);
- expect(task.annotations.select(annotations, '5', '10')).rejects.toThrow(cvat.exceptions.ArgumentError);
- });
-});
-
-describe('Feature: search frame', () => {
- test('applying different filters', async () => {
- const job = (await cvat.jobs.get({ jobID: 102 }))[0];
- await job.annotations.clear({ reload: true });
- let frame = await job.annotations.search(495, 994, { annotationsFilters: JSON.parse('[{"and":[{"==":[{"var":"type"},"tag"]}]}]') });
- expect(frame).toBe(500);
- frame = await job.annotations.search(495, 994, { annotationsFilters: JSON.parse('[{"and":[{"==":[{"var":"type"},"tag"]},{"==":[{"var":"label"},"bicycle"]}]}]') });
- expect(frame).toBe(500);
- frame = await job.annotations.search(495, 994, { annotationsFilters: JSON.parse('[{"and":[{"==":[{"var":"type"},"track"]},{"==":[{"var":"label"},"bicycle"]}]}]') });
- expect(frame).toBe(null);
-
- frame = await job.annotations.search(495, 994, { annotationsFilters: JSON.parse('[{"and":[{"==":[{"var":"type"},"shape"]},{"==":[{"var":"shape"},"rectangle"]}]}]') });
- expect(frame).toBe(510);
- frame = await job.annotations.search(511, 994, { annotationsFilters: JSON.parse('[{"and":[{"==":[{"var":"type"},"shape"]},{"==":[{"var":"shape"},"rectangle"]}]}]') });
- expect(frame).toBe(null);
- frame = await job.annotations.search(511, 994, { annotationsFilters: JSON.parse('[{"and":[{"==":[{"var":"type"},"shape"]},{"==":[{"var":"shape"},"polygon"]}]}]') });
- expect(frame).toBe(520);
- frame = await job.annotations.search(495, 994, { annotationsFilters: JSON.parse('[{"and":[{"==":[{"var":"attr.motorcycle.model"},"some text for test"]}]}]') });
- expect(frame).toBe(520);
- frame = await job.annotations.search(495, 994, { annotationsFilters: JSON.parse('[{"and":[{"==":[{"var":"attr.motorcycle.model"},"some text for test"]},{"==":[{"var":"shape"},"ellipse"]}]}]') });
- expect(frame).toBe(null);
-
- frame = await job.annotations.search(540, 994, { annotationsFilters: JSON.parse('[{"and":[{"<=":[450,{"var":"width"},550]}]}]') });
- expect(frame).toBe(563);
- frame = await job.annotations.search(588, 994, { annotationsFilters: JSON.parse('[{"and":[{"<=":[450,{"var":"width"},550]}]}]') });
- expect(frame).toBe(null);
- frame = await job.annotations.search(540, 994, { annotationsFilters: JSON.parse('[{"and":[{">=":[{"var":"width"},500]},{"<=":[{"var":"height"},300]}]}]') });
- expect(frame).toBe(575);
- });
-});
diff --git a/cvat-core/tests/api/cloud-storages.cjs b/cvat-core/tests/api/cloud-storages.cjs
deleted file mode 100644
index 4c38ef20254d..000000000000
--- a/cvat-core/tests/api/cloud-storages.cjs
+++ /dev/null
@@ -1,173 +0,0 @@
-// Copyright (C) 2021-2022 Intel Corporation
-// Copyright (C) CVAT.ai Corporation
-//
-// SPDX-License-Identifier: MIT
-
-// Setup mock for a server
-jest.mock('../../src/server-proxy', () => {
- return {
- __esModule: true,
- default: require('../mocks/server-proxy.mock'),
- };
-});
-
-const cvat = require('../../src/api').default;
-const CloudStorage= require('../../src/cloud-storage').default;
-const { cloudStoragesDummyData } = require('../mocks/dummy-data.mock.cjs');
-
-describe('Feature: get cloud storages', () => {
- test('get all cloud storages', async () => {
- const result = await cvat.cloudStorages.get();
- expect(Array.isArray(result)).toBeTruthy();
- expect(result).toHaveLength(cloudStoragesDummyData.count);
- for (const item of result) {
- expect(item).toBeInstanceOf(CloudStorage);
- }
- });
-
- test('get cloud storage by id', async () => {
- const result = await cvat.cloudStorages.get({
- id: 1,
- });
- const cloudStorage = result[0];
-
- expect(Array.isArray(result)).toBeTruthy();
- expect(result).toHaveLength(1);
- expect(cloudStorage).toBeInstanceOf(CloudStorage);
- expect(cloudStorage.id).toBe(1);
- expect(cloudStorage.providerType).toBe('AWS_S3_BUCKET');
- expect(cloudStorage.credentialsType).toBe('KEY_SECRET_KEY_PAIR');
- expect(cloudStorage.resource).toBe('bucket');
- expect(cloudStorage.displayName).toBe('Demonstration bucket');
- expect(cloudStorage.manifests).toHaveLength(1);
- expect(cloudStorage.manifests[0]).toBe('manifest.jsonl');
- expect(cloudStorage.specificAttributes).toBe('');
- expect(cloudStorage.description).toBe('It is first bucket');
- });
-
- test('get a cloud storage by an unknown id', async () => {
- const result = await cvat.cloudStorages.get({
- id: 10,
- });
- expect(Array.isArray(result)).toBeTruthy();
- expect(result).toHaveLength(0);
- });
-
- test('get a cloud storage by an invalid id', async () => {
- expect(
- cvat.cloudStorages.get({
- id: '1',
- }),
- ).rejects.toThrow(cvat.exceptions.ArgumentError);
- });
-
- test('get cloud storages by filters', async () => {
- const filter = {
- and: [
- { '==': [{ var: 'display_name' }, 'Demonstration bucket'] },
- { '==': [{ var: 'resource_name' }, 'bucket'] },
- { '==': [{ var: 'description' }, 'It is first bucket'] },
- { '==': [{ var: 'provider_type' }, 'AWS_S3_BUCKET'] },
- { '==': [{ var: 'credentials_type' }, 'KEY_SECRET_KEY_PAIR'] },
- ],
- };
-
- const result = await cvat.cloudStorages.get({ filter: JSON.stringify(filter) });
- expect(result).toBeInstanceOf(Array);
- });
-
- test('get cloud storage by invalid filters', async () => {
- expect(
- cvat.cloudStorages.get({
- unknown: '5',
- }),
- ).rejects.toThrow(cvat.exceptions.ArgumentError);
- });
-});
-
-describe('Feature: create a cloud storage', () => {
- test('create new cloud storage without an id', async () => {
- const cloudStorage = new cvat.classes.CloudStorage({
- display_name: 'new cloud storage',
- provider_type: 'AZURE_CONTAINER',
- resource: 'newcontainer',
- credentials_type: 'ACCOUNT_NAME_TOKEN_PAIR',
- account_name: 'accountname',
- session_token: 'x'.repeat(135),
- manifests: ['manifest.jsonl'],
- });
-
- const result = await cloudStorage.save();
- expect(typeof result.id).toBe('number');
- });
-});
-
-describe('Feature: update a cloud storage', () => {
- test('update cloud storage with some new field values', async () => {
- const newValues = new Map([
- ['displayName', 'new display name'],
- ['credentialsType', 'ANONYMOUS_ACCESS'],
- ['description', 'new description'],
- ['specificAttributes', 'region=eu-west-1'],
- ]);
-
- let result = await cvat.cloudStorages.get({
- id: 1,
- });
-
- let [cloudStorage] = result;
-
- for (const [key, value] of newValues) {
- cloudStorage[key] = value;
- }
-
- cloudStorage.save();
-
- result = await cvat.cloudStorages.get({
- id: 1,
- });
- [cloudStorage] = result;
-
- newValues.forEach((value, key) => {
- expect(cloudStorage[key]).toBe(value);
- });
- });
-
- test('Update manifests in a cloud storage', async () => {
- const newManifests = [
- 'sub1/manifest.jsonl',
- 'sub2/manifest.jsonl',
- ];
-
- let result = await cvat.cloudStorages.get({
- id: 1,
- });
- let [cloudStorage] = result;
-
- cloudStorage.manifests = newManifests;
- cloudStorage.save();
-
- result = await cvat.cloudStorages.get({
- id: 1,
- });
- [cloudStorage] = result;
-
- expect(cloudStorage.manifests).toEqual(newManifests);
- });
-});
-
-describe('Feature: delete a cloud storage', () => {
- test('delete a cloud storage', async () => {
- let result = await cvat.cloudStorages.get({
- id: 2,
- });
-
- await result[0].delete();
- result = await cvat.cloudStorages.get({
- id: 2,
- });
-
- expect(Array.isArray(result)).toBeTruthy();
- expect(result).toHaveLength(0);
- });
-});
diff --git a/cvat-core/tests/api/frames.cjs b/cvat-core/tests/api/frames.cjs
deleted file mode 100644
index 5b9bf857a3c0..000000000000
--- a/cvat-core/tests/api/frames.cjs
+++ /dev/null
@@ -1,101 +0,0 @@
-// Copyright (C) 2020-2022 Intel Corporation
-// Copyright (C) CVAT.ai Corporation
-//
-// SPDX-License-Identifier: MIT
-
-// Setup mock for a server
-jest.mock('../../src/server-proxy', () => {
- return {
- __esModule: true,
- default: require('../mocks/server-proxy.mock.cjs'),
- };
-});
-
-const cvat = require('../../src/api').default;
-const { FrameData } = require('../../src/frames');
-
-describe('Feature: get frame meta', () => {
- test('get meta for a task', async () => {
- const task = (await cvat.tasks.get({ id: 100 }))[0];
- const frame = await task.frames.get(0);
- expect(frame).toBeInstanceOf(FrameData);
- });
-
- test('get meta for a job', async () => {
- const job = (await cvat.jobs.get({ jobID: 100 }))[0];
- const frame = await job.frames.get(0);
- expect(frame).toBeInstanceOf(FrameData);
- });
-
- test('pass frame number out of a task', async () => {
- const task = (await cvat.tasks.get({ id: 100 }))[0];
- expect(task.frames.get(100)).rejects.toThrow(cvat.exceptions.ArgumentError);
- expect(task.frames.get(-1)).rejects.toThrow(cvat.exceptions.ArgumentError);
- });
-
- test('pass bad frame number', async () => {
- const task = (await cvat.tasks.get({ id: 100 }))[0];
- expect(task.frames.get('5')).rejects.toThrow(cvat.exceptions.ArgumentError);
- });
-
- test('do not pass any frame number', async () => {
- const task = (await cvat.tasks.get({ id: 100 }))[0];
- expect(task.frames.get()).rejects.toThrow(cvat.exceptions.ArgumentError);
- });
-});
-
-describe('Feature: delete/restore frame', () => {
- test('delete frame from job', async () => {
- const job = (await cvat.jobs.get({ jobID: 100 }))[0];
- await job.annotations.clear({ reload: true });
- let frame = await job.frames.get(0);
- expect(frame.deleted).toBe(false);
- await job.frames.delete(0);
- frame = await job.frames.get(0);
- expect(frame.deleted).toBe(true);
- });
-
- test('restore frame from job', async () => {
- const job = (await cvat.jobs.get({ jobID: 100 }))[0];
- await job.annotations.clear({ reload: true });
- let frame = await job.frames.get(8);
- expect(frame.deleted).toBe(true);
- await job.frames.restore(8);
- frame = await job.frames.get(8);
- expect(frame.deleted).toBe(false);
- });
-
- test('delete frame from task', async () => {
- const task = (await cvat.tasks.get({ id: 100 }))[0];
- await task.annotations.clear({ reload: true });
- let frame = await task.frames.get(1);
- expect(frame.deleted).toBe(false);
- await task.frames.delete(1);
- frame = await task.frames.get(1);
- expect(frame.deleted).toBe(true);
- });
-
- test('restore frame from task', async () => {
- const task = (await cvat.tasks.get({ id: 100 }))[0];
- await task.annotations.clear({ reload: true });
- let frame = await task.frames.get(7);
- expect(frame.deleted).toBe(true);
- await task.frames.restore(7);
- frame = await task.frames.get(7);
- expect(frame.deleted).toBe(false);
- });
-});
-
-describe('Feature: get frame preview', () => {
- test('get frame preview for a task', async () => {
- const task = (await cvat.tasks.get({ id: 100 }))[0];
- const frame = await task.frames.preview();
- expect(typeof frame).toBe('string');
- });
-
- test('get frame preview for a job', async () => {
- const job = (await cvat.jobs.get({ jobID: 100 }))[0];
- const frame = await job.frames.preview();
- expect(typeof frame).toBe('string');
- });
-});
diff --git a/cvat-core/tests/api/jobs.cjs b/cvat-core/tests/api/jobs.cjs
deleted file mode 100644
index 5ede8c5e0e85..000000000000
--- a/cvat-core/tests/api/jobs.cjs
+++ /dev/null
@@ -1,112 +0,0 @@
-// Copyright (C) 2020-2022 Intel Corporation
-// Copyright (C) CVAT.ai Corporation
-//
-// SPDX-License-Identifier: MIT
-
-// Setup mock for a server
-jest.mock('../../src/server-proxy', () => {
- return {
- __esModule: true,
- default: require('../mocks/server-proxy.mock.cjs'),
- };
-});
-
-const cvat = require('../../src/api').default;
-const { Job } = require('../../src/session');
-
-// Test cases
-describe('Feature: get a list of jobs', () => {
- test('get jobs by a task id', async () => {
- const result = await cvat.jobs.get({
- filter: JSON.stringify({ and: [{ '==': [{ var: 'task_id' }, 3] }] }),
- });
- expect(Array.isArray(result)).toBeTruthy();
- expect(result).toHaveLength(2);
- for (const el of result) {
- expect(el).toBeInstanceOf(Job);
- }
-
- expect(result[0].taskId).toBe(3);
- expect(result[0].taskId).toBe(result[1].taskId);
- });
-
- test('get jobs by an unknown task id', async () => {
- const result = await cvat.jobs.get({
- filter: JSON.stringify({ and: [{ '==': [{ var: 'task_id' }, 50] }] }),
- });
- expect(Array.isArray(result)).toBeTruthy();
- expect(result).toHaveLength(0);
- });
-
- test('get jobs by a job id', async () => {
- const result = await cvat.jobs.get({
- jobID: 1,
- });
- expect(Array.isArray(result)).toBeTruthy();
- expect(result).toHaveLength(1);
- expect(result[0].id).toBe(1);
- });
-
- test('get jobs by an unknown job id', async () => {
- const result = await cvat.jobs.get({
- jobID: 50,
- });
- expect(Array.isArray(result)).toBeTruthy();
- expect(result).toHaveLength(0);
- });
-
- test('get jobs by invalid filter with both taskID and jobID', async () => {
- expect(
- cvat.jobs.get({
- taskID: 1,
- jobID: 1,
- }),
- ).rejects.toThrow(cvat.exceptions.ArgumentError);
- });
-
- test('get jobs by invalid job id', async () => {
- expect(
- cvat.jobs.get({
- jobID: '1',
- }),
- ).rejects.toThrow(cvat.exceptions.ArgumentError);
- });
-
- test('get jobs by invalid task id', async () => {
- expect(
- cvat.jobs.get({
- taskID: '1',
- }),
- ).rejects.toThrow(cvat.exceptions.ArgumentError);
- });
-
- test('get jobs by unknown filter', async () => {
- expect(
- cvat.jobs.get({
- unknown: 50,
- }),
- ).rejects.toThrow(cvat.exceptions.ArgumentError);
- });
-});
-
-describe('Feature: save job', () => {
- test('save stage and state of a job', async () => {
- const result = await cvat.jobs.get({ jobID: 1 });
- const newJob = await result[0].save({
- stage: 'validation',
- state: 'new',
- });
-
- expect(newJob.stage).toBe('validation');
- expect(newJob.state).toBe('new');
- });
-
- test('save invalid status of a job', async () => {
- const result = await cvat.jobs.get({
- jobID: 1,
- });
-
- await expect(result[0].save({ state: 'invalid' })).rejects.toThrow(cvat.exceptions.ArgumentError);
- await expect(result[0].save({ stage: 'invalid' })).rejects.toThrow(cvat.exceptions.ArgumentError);
- });
-});
diff --git a/cvat-core/tests/api/object-state.cjs b/cvat-core/tests/api/object-state.cjs
deleted file mode 100644
index 6da143ed566f..000000000000
--- a/cvat-core/tests/api/object-state.cjs
+++ /dev/null
@@ -1,323 +0,0 @@
-// Copyright (C) 2020-2022 Intel Corporation
-// Copyright (C) CVAT.ai Corporation
-//
-// SPDX-License-Identifier: MIT
-
-// Setup mock for a server
-jest.mock('../../src/server-proxy', () => {
- return {
- __esModule: true,
- default: require('../mocks/server-proxy.mock.cjs'),
- };
-});
-
-const cvat = require('../../src/api').default;
-
-describe('Feature: set attributes for an object state', () => {
- test('set a valid value', () => {
- const state = new cvat.classes.ObjectState({
- label: new cvat.classes.Label({ name: 'test label', id: 1, color: '#000000', attributes: [] }),
- objectType: cvat.enums.ObjectType.SHAPE,
- shapeType: cvat.enums.ShapeType.RECTANGLE,
- frame: 5,
- });
-
- const attributes = {
- 5: 'man',
- 6: 'glasses',
- };
-
- state.attributes = attributes;
- expect(state.attributes).toEqual(attributes);
- });
-
- test('trying to set a bad value', () => {
- const state = new cvat.classes.ObjectState({
- label: new cvat.classes.Label({ name: 'test label', id: 1, color: '#000000', attributes: [] }),
- objectType: cvat.enums.ObjectType.SHAPE,
- shapeType: cvat.enums.ShapeType.RECTANGLE,
- frame: 5,
- });
-
- let attributes = 'bad attribute';
- expect(() => {
- state.attributes = attributes;
- }).toThrow(cvat.exceptions.ArgumentError);
-
- attributes = 5;
- expect(() => {
- state.attributes = attributes;
- }).toThrow(cvat.exceptions.ArgumentError);
-
- attributes = false;
- expect(() => {
- state.attributes = attributes;
- }).toThrow(cvat.exceptions.ArgumentError);
- });
-});
-
-describe('Feature: set points for an object state', () => {
- test('set a valid value', () => {
- const state = new cvat.classes.ObjectState({
- label: new cvat.classes.Label({ name: 'test label', id: 1, color: '#000000', attributes: [] }),
- objectType: cvat.enums.ObjectType.SHAPE,
- shapeType: cvat.enums.ShapeType.RECTANGLE,
- frame: 5,
- });
-
- const points = [1, 2, 3, 4];
- state.points = points;
- expect(state.points).toEqual(points);
- });
-
- test('trying to set a bad value', () => {
- const state = new cvat.classes.ObjectState({
- label: new cvat.classes.Label({ name: 'test label', id: 1, color: '#000000', attributes: [] }),
- objectType: cvat.enums.ObjectType.SHAPE,
- shapeType: cvat.enums.ShapeType.RECTANGLE,
- frame: 5,
- });
-
- let points = 'bad points';
- expect(() => {
- state.points = points;
- }).toThrow(cvat.exceptions.ArgumentError);
-
- points = 5;
- expect(() => {
- state.points = points;
- }).toThrow(cvat.exceptions.ArgumentError);
-
- points = false;
- expect(() => {
- state.points = points;
- }).toThrow(cvat.exceptions.ArgumentError);
-
- points = {};
- expect(() => {
- state.points = points;
- }).toThrow(cvat.exceptions.ArgumentError);
- });
-});
-
-describe('Feature: save object from its state', () => {
- test('save valid values for a shape', async () => {
- const task = (await cvat.tasks.get({ id: 100 }))[0];
- const annotations = await task.annotations.get(0);
- let state = annotations[0];
- expect(state.objectType).toBe(cvat.enums.ObjectType.SHAPE);
- expect(state.shapeType).toBe(cvat.enums.ShapeType.RECTANGLE);
- state.points = [0, 0, 100, 100];
- state.occluded = true;
- [, state.label] = task.labels;
- state.lock = true;
- state = await state.save();
- expect(state).toBeInstanceOf(cvat.classes.ObjectState);
- expect(state.label.id).toBe(task.labels[1].id);
- expect(state.lock).toBe(true);
- expect(state.occluded).toBe(true);
- expect(state.points).toEqual([0, 0, 100, 100]);
- });
-
- test('save valid values for a track', async () => {
- const task = (await cvat.tasks.get({ id: 101 }))[0];
- const annotations = await task.annotations.get(10);
- let state = annotations[1];
- expect(state.objectType).toBe(cvat.enums.ObjectType.TRACK);
- expect(state.shapeType).toBe(cvat.enums.ShapeType.RECTANGLE);
-
- state.occluded = true;
- state.lock = true;
- state.points = [100, 200, 200, 400];
- state.attributes = {
- 1: 'sitting',
- 3: 'female',
- 2: '10',
- 4: 'true',
- };
-
- state = await state.save();
- expect(state).toBeInstanceOf(cvat.classes.ObjectState);
- expect(state.lock).toBe(true);
- expect(state.occluded).toBe(true);
- expect(state.points).toEqual([100, 200, 200, 400]);
- expect(state.attributes[1]).toBe('sitting');
- expect(state.attributes[2]).toBe('10');
- expect(state.attributes[3]).toBe('female');
- expect(state.attributes[4]).toBe('true');
-
- state.lock = false;
- [state.label] = task.labels;
- state = await state.save();
- expect(state.label.id).toBe(task.labels[0].id);
-
- state.outside = true;
- state = await state.save();
- expect(state.lock).toBe(false);
- expect(state.outside).toBe(true);
-
- state.keyframe = false;
- state = await state.save();
- expect(state.keyframe).toBe(false);
- });
-
- test('save bad values for a shape', async () => {
- const task = (await cvat.tasks.get({ id: 100 }))[0];
- const annotations = await task.annotations.get(0);
- const state = annotations[0];
-
- state.occluded = 'false';
- await expect(state.save()).rejects.toThrow(cvat.exceptions.ArgumentError);
-
- state.occluded = false;
- expect(() => state.points = ['100', '50', '100', {}]).toThrow(cvat.exceptions.ArgumentError);
-
- state.lock = 'true';
- await expect(state.save()).rejects.toThrow(cvat.exceptions.ArgumentError);
-
- const oldLabel = state.label;
- state.lock = false;
- state.label = 1;
- await expect(state.save()).rejects.toThrow(cvat.exceptions.ArgumentError);
-
- state.label = oldLabel;
- state.attributes = { 1: {}, 2: false, 3: () => {} };
- await expect(state.save()).rejects.toThrow(cvat.exceptions.ArgumentError);
- });
-
- test('save bad values for a track', async () => {
- const task = (await cvat.tasks.get({ id: 101 }))[0];
- const annotations = await task.annotations.get(0);
- const state = annotations[0];
-
- state.occluded = 'false';
- await expect(state.save()).rejects.toThrow(cvat.exceptions.ArgumentError);
-
- state.occluded = false;
- expect(() => state.points = ['100', '50', '100', {}]).toThrow(cvat.exceptions.ArgumentError);
-
- state.lock = 'true';
- await expect(state.save()).rejects.toThrow(cvat.exceptions.ArgumentError);
-
- const oldLabel = state.label;
- state.lock = false;
- state.label = 1;
- await expect(state.save()).rejects.toThrow(cvat.exceptions.ArgumentError);
-
- state.label = oldLabel;
- state.outside = 5;
- await expect(state.save()).rejects.toThrow(cvat.exceptions.ArgumentError);
-
- state.outside = false;
- state.keyframe = '10';
- await expect(state.save()).rejects.toThrow(cvat.exceptions.ArgumentError);
-
- state.keyframe = true;
- state.attributes = { 1: {}, 2: false, 3: () => {} };
- await expect(state.save()).rejects.toThrow(cvat.exceptions.ArgumentError);
- });
-
- test('trying to change locked shape', async () => {
- const task = (await cvat.tasks.get({ id: 101 }))[0];
- const annotations = await task.annotations.get(0);
- let state = annotations[0];
-
- state.lock = true;
- state = await state.save();
-
- const { points } = state;
- state.points = [0, 0, 500, 500];
- state = await state.save();
- expect(state.points).toEqual(points);
- });
-
- test('trying to set too small area of a shape', async () => {
- const task = (await cvat.tasks.get({ id: 101 }))[0];
- const annotations = await task.annotations.get(0);
- let state = annotations[0];
-
- const { points } = state;
- state.points = [0, 0, 2, 2]; // area is 4
- state = await state.save();
- expect(state.points).toEqual(points);
- });
-
- test('trying to set too small area of a track', async () => {
- const task = (await cvat.tasks.get({ id: 101 }))[0];
- const annotations = await task.annotations.get(0);
- let state = annotations[0];
-
- const { points } = state;
- state.points = [0, 0, 2, 2]; // area is 4
- state = await state.save();
- expect(state.points).toEqual(points);
- });
-
- test('trying to set too small length of a shape', async () => {
- const task = (await cvat.tasks.get({ id: 100 }))[0];
- const annotations = await task.annotations.get(0);
- let state = annotations[8];
-
- const { points } = state;
- state.points = [0, 0, 2, 2]; // length is 2
- state = await state.save();
- expect(state.points).toEqual(points);
- });
-});
-
-describe('Feature: delete object', () => {
- test('delete a shape', async () => {
- const task = (await cvat.tasks.get({ id: 100 }))[0];
- const annotationsBefore = await task.annotations.get(0);
- const { length } = annotationsBefore;
- await annotationsBefore[0].delete(0);
- const annotationsAfter = await task.annotations.get(0);
- expect(annotationsAfter).toHaveLength(length - 1);
- });
-
- test('delete a track', async () => {
- const task = (await cvat.tasks.get({ id: 101 }))[0];
- const annotationsBefore = await task.annotations.get(0);
- const { length } = annotationsBefore;
- await annotationsBefore[0].delete(0);
- const annotationsAfter = await task.annotations.get(0);
- expect(annotationsAfter).toHaveLength(length - 1);
- });
-});
-
-describe('Feature: skeletons', () => {
- test('lock, hide, occluded, outside for skeletons', async () => {
- const job = (await cvat.jobs.get({ jobID: 40 }))[0];
- let [skeleton] = await job.annotations.get(0, false, JSON.parse('[{"and":[{"==":[{"var":"shape"},"skeleton"]}]}]'));
- expect(skeleton.shapeType).toBe('skeleton');
- skeleton.lock = true;
- skeleton.outside = true;
- skeleton.occluded = true;
- skeleton.hidden = true;
- skeleton = await skeleton.save();
- expect(skeleton.lock).toBe(true);
- expect(skeleton.outside).toBe(true);
- expect(skeleton.occluded).toBe(true);
- expect(skeleton.hidden).toBe(true);
- expect(skeleton.elements).toBeInstanceOf(Array);
- expect(skeleton.elements.length).toBe(skeleton.label.structure.sublabels.length);
- for (const element of skeleton.elements) {
- expect(element.lock).toBe(true);
- expect(element.outside).toBe(true);
- expect(element.occluded).toBe(true);
- expect(element.hidden).toBe(true);
- }
-
- skeleton.elements[0].lock = false;
- skeleton.elements[0].outside = false;
- skeleton.elements[0].occluded = false;
- skeleton.elements[0].hidden = false;
- skeleton.elements[0].save();
-
- [skeleton] = await job.annotations.get(0, false, JSON.parse('[{"and":[{"==":[{"var":"shape"},"skeleton"]}]}]'));
- expect(skeleton.lock).toBe(false);
- expect(skeleton.outside).toBe(false);
- expect(skeleton.occluded).toBe(false);
- expect(skeleton.hidden).toBe(false);
- });
-});
\ No newline at end of file
diff --git a/cvat-core/tests/api/projects.cjs b/cvat-core/tests/api/projects.cjs
deleted file mode 100644
index b9674713529c..000000000000
--- a/cvat-core/tests/api/projects.cjs
+++ /dev/null
@@ -1,181 +0,0 @@
-// Copyright (C) 2019-2022 Intel Corporation
-// Copyright (C) CVAT.ai Corporation
-//
-// SPDX-License-Identifier: MIT
-
-// Setup mock for a server
-jest.mock('../../src/server-proxy', () => {
- return {
- __esModule: true,
- default: require('../mocks/server-proxy.mock.cjs'),
- };
-});
-
-const cvat = require('../../src/api').default;
-const Project = require('../../src/project').default;
-
-describe('Feature: get projects', () => {
- test('get all projects', async () => {
- const result = await cvat.projects.get();
- expect(Array.isArray(result)).toBeTruthy();
- expect(result).toHaveLength(2);
- for (const el of result) {
- expect(el).toBeInstanceOf(Project);
- }
- });
-
- test('get project by id', async () => {
- const result = await cvat.projects.get({
- id: 2,
- });
-
- expect(Array.isArray(result)).toBeTruthy();
- expect(result).toHaveLength(1);
- expect(result[0]).toBeInstanceOf(Project);
- expect(result[0].id).toBe(2);
- });
-
- test('get a project by an unknown id', async () => {
- const result = await cvat.projects.get({
- id: 1,
- });
- expect(Array.isArray(result)).toBeTruthy();
- expect(result).toHaveLength(0);
- });
-
- test('get a project by an invalid id', async () => {
- expect(
- cvat.projects.get({
- id: '1',
- }),
- ).rejects.toThrow(cvat.exceptions.ArgumentError);
- });
-
- test('get projects by filters', async () => {
- const result = await cvat.projects.get({
- filter: '{"and":[{"==":[{"var":"status"},"completed"]}]}',
- });
- expect(result).toBeInstanceOf(Array);
- });
-
- test('get projects by invalid query', async () => {
- expect(
- cvat.projects.get({
- unknown: '5',
- }),
- ).rejects.toThrow(cvat.exceptions.ArgumentError);
- });
-});
-
-describe('Feature: save a project', () => {
- test('save some changed fields in a project', async () => {
- let result = await cvat.projects.get({
- id: 2,
- });
-
- result[0].bugTracker = 'newBugTracker';
- result[0].name = 'New Project Name';
-
- await result[0].save();
-
- result = await cvat.projects.get({
- id: 2,
- });
-
- expect(result[0].bugTracker).toBe('newBugTracker');
- expect(result[0].name).toBe('New Project Name');
- });
-
- test('save some new labels in a project', async () => {
- let result = await cvat.projects.get({
- id: 6,
- });
-
- const labelsLength = result[0].labels.length;
- const newLabel = new cvat.classes.Label({
- name: "My boss's car",
- attributes: [
- {
- default_value: 'false',
- input_type: 'checkbox',
- mutable: true,
- name: 'parked',
- values: ['false'],
- },
- ],
- });
-
- result[0].labels = [...result[0].labels, newLabel];
- await result[0].save();
-
- result = await cvat.projects.get({
- id: 6,
- });
-
- expect(result[0].labels).toHaveLength(labelsLength + 1);
- const appendedLabel = result[0].labels.filter((el) => el.name === "My boss's car");
- expect(appendedLabel).toHaveLength(1);
- expect(appendedLabel[0].attributes).toHaveLength(1);
- expect(appendedLabel[0].attributes[0].name).toBe('parked');
- expect(appendedLabel[0].attributes[0].defaultValue).toBe('false');
- expect(appendedLabel[0].attributes[0].mutable).toBe(true);
- expect(appendedLabel[0].attributes[0].inputType).toBe('checkbox');
- });
-
- test('save new project without an id', async () => {
- const project = new cvat.classes.Project({
- name: 'New Empty Project',
- labels: [
- {
- name: 'car',
- attributes: [
- {
- default_value: 'false',
- input_type: 'checkbox',
- mutable: true,
- name: 'parked',
- values: ['false'],
- },
- ],
- },
- ],
- bug_tracker: 'bug tracker value',
- });
-
- const result = await project.save();
- expect(typeof result.id).toBe('number');
- });
-});
-
-describe('Feature: delete a project', () => {
- test('delete a project', async () => {
- let result = await cvat.projects.get({
- id: 6,
- });
-
- await result[0].delete();
- result = await cvat.projects.get({
- id: 6,
- });
-
- expect(Array.isArray(result)).toBeTruthy();
- expect(result).toHaveLength(0);
- });
-});
-
-describe('Feature: delete a label', () => {
- test('delete a label', async () => {
- let result = await cvat.projects.get({
- id: 2,
- });
-
- const labelsLength = result[0].labels.length;
- const deletedLabels = result[0].labels.filter((el) => el.name !== 'bicycle');
- result[0].labels = deletedLabels;
- result[0].save();
- result = await cvat.projects.get({
- id: 2,
- });
- expect(result[0].labels).toHaveLength(labelsLength - 1);
- });
-});
diff --git a/cvat-core/tests/api/server.cjs b/cvat-core/tests/api/server.cjs
deleted file mode 100644
index 7000b8ed0452..000000000000
--- a/cvat-core/tests/api/server.cjs
+++ /dev/null
@@ -1,75 +0,0 @@
-// Copyright (C) 2020-2022 Intel Corporation
-// Copyright (C) CVAT.ai Corporation
-//
-// SPDX-License-Identifier: MIT
-
-// Setup mock for a server
-jest.mock('../../src/server-proxy', () => {
- return {
- __esModule: true,
- default: require('../mocks/server-proxy.mock.cjs'),
- };
-});
-
-const cvat = require('../../src/api').default;
-const { AnnotationFormats, Loader, Dumper } = require('../../src/annotation-formats');
-
-// Test cases
-describe('Feature: get info about cvat', () => {
- test('get info about server', async () => {
- const result = await cvat.server.about();
- expect(result).toBeInstanceOf(Object);
- expect('name' in result).toBeTruthy();
- expect('description' in result).toBeTruthy();
- expect('version' in result).toBeTruthy();
- });
-});
-
-// describe('Feature: get share storage info', () => {
-// test('get files in a root of a share storage', async () => {
-// const result = await cvat.server.share();
-// expect(Array.isArray(result)).toBeTruthy();
-// expect(result).toHaveLength(5);
-// });
-
-// test('get files in a some dir of a share storage', async () => {
-// const result = await cvat.server.share('images');
-// expect(Array.isArray(result)).toBeTruthy();
-// expect(result).toHaveLength(8);
-// });
-
-// test('get files in a some unknown dir of a share storage', async () => {
-// expect(cvat.server.share('Unknown Directory')).rejects.toThrow(cvat.exceptions.ServerError);
-// });
-// });
-
-// describe('Feature: get annotation formats', () => {
-// test('get annotation formats from a server', async () => {
-// const result = await cvat.server.formats();
-// expect(result).toBeInstanceOf(AnnotationFormats);
-// });
-// });
-
-// describe('Feature: get annotation loaders', () => {
-// test('get annotation formats from a server', async () => {
-// const result = await cvat.server.formats();
-// expect(result).toBeInstanceOf(AnnotationFormats);
-// const { loaders } = result;
-// expect(Array.isArray(loaders)).toBeTruthy();
-// for (const loader of loaders) {
-// expect(loader).toBeInstanceOf(Loader);
-// }
-// });
-// });
-
-// describe('Feature: get annotation dumpers', () => {
-// test('get annotation formats from a server', async () => {
-// const result = await cvat.server.formats();
-// expect(result).toBeInstanceOf(AnnotationFormats);
-// const { dumpers } = result;
-// expect(Array.isArray(dumpers)).toBeTruthy();
-// for (const dumper of dumpers) {
-// expect(dumper).toBeInstanceOf(Dumper);
-// }
-// });
-// });
diff --git a/cvat-core/tests/api/tasks.cjs b/cvat-core/tests/api/tasks.cjs
deleted file mode 100644
index 6bc33bf92250..000000000000
--- a/cvat-core/tests/api/tasks.cjs
+++ /dev/null
@@ -1,271 +0,0 @@
-// Copyright (C) 2020-2022 Intel Corporation
-// Copyright (C) CVAT.ai Corporation
-//
-// SPDX-License-Identifier: MIT
-
-// Setup mock for a server
-jest.mock('../../src/server-proxy', () => {
- return {
- __esModule: true,
- default: require('../mocks/server-proxy.mock.cjs'),
- };
-});
-
-const cvat = require('../../src/api').default;
-const { Task } = require('../../src/session');
-
-// Test cases
-describe('Feature: get a list of tasks', () => {
- test('get all tasks', async () => {
- const result = await cvat.tasks.get();
- expect(Array.isArray(result)).toBeTruthy();
- expect(result).toHaveLength(7);
- for (const el of result) {
- expect(el).toBeInstanceOf(Task);
- }
- });
-
- test('get a task by an id', async () => {
- const result = await cvat.tasks.get({
- id: 3,
- });
- expect(Array.isArray(result)).toBeTruthy();
- expect(result).toHaveLength(1);
- expect(result[0]).toBeInstanceOf(Task);
- expect(result[0].id).toBe(3);
- });
-
- test('get a task with skeletons by an id', async () => {
- const result = await cvat.tasks.get({
- id: 40,
- });
-
- expect(Array.isArray(result)).toBeTruthy();
- expect(result).toHaveLength(1);
- expect(result[0]).toBeInstanceOf(Task);
- expect(result[0].id).toBe(40);
- expect(result[0].labels).toBeInstanceOf(Array);
-
- for (const label of result[0].labels) {
- expect(label).toBeInstanceOf(cvat.classes.Label);
- if (label.type === 'skeleton') {
- expect(label.hasParent).toBe(false);
- expect(label.structure.sublabels).toBeInstanceOf(Array);
- expect(typeof label.structure.svg).toBe('string');
- expect(label.structure.svg.length).not.toBe(0);
-
- for (const sublabel of label.structure.sublabels) {
- expect(sublabel).toBeInstanceOf(cvat.classes.Label);
- expect(sublabel.hasParent).toBe(true);
- }
- }
- }
- });
-
- test('get a task by an unknown id', async () => {
- const result = await cvat.tasks.get({
- id: 50,
- });
- expect(Array.isArray(result)).toBeTruthy();
- expect(result).toHaveLength(0);
- });
-
- test('get a task by an invalid id', async () => {
- expect(
- cvat.tasks.get({
- id: '50',
- }),
- ).rejects.toThrow(cvat.exceptions.ArgumentError);
- });
-
- test('get tasks by filters', async () => {
- const result = await cvat.tasks.get({
- filter: '{"and":[{"==":[{"var":"filter"},"interpolation"]}]}',
- });
- expect(result).toBeInstanceOf(Array);
- });
-
- test('get tasks by invalid query', async () => {
- expect(
- cvat.tasks.get({
- unknown: '5',
- }),
- ).rejects.toThrow(cvat.exceptions.ArgumentError);
- });
-});
-
-describe('Feature: save a task', () => {
- test('save some changed fields in a task', async () => {
- let result = await cvat.tasks.get({
- id: 2,
- });
-
- result[0].bugTracker = 'newBugTracker';
- result[0].name = 'New Task Name';
- result[0].save();
-
- result = await cvat.tasks.get({
- id: 2,
- });
-
- expect(result[0].bugTracker).toBe('newBugTracker');
- expect(result[0].name).toBe('New Task Name');
- });
-
- test('save some new labels in a task', async () => {
- let result = await cvat.tasks.get({
- id: 2,
- });
-
- const labelsLength = result[0].labels.length;
- const newLabel = new cvat.classes.Label({
- name: "Another label",
- attributes: [
- {
- default_value: 'false',
- input_type: 'checkbox',
- mutable: true,
- name: 'parked',
- values: ['false'],
- },
- ],
- });
-
- result[0].labels = [...result[0].labels, newLabel];
- await result[0].save();
-
- result = await cvat.tasks.get({
- id: 2,
- });
-
- expect(result[0].labels).toHaveLength(labelsLength + 1);
- const appendedLabel = result[0].labels.filter((el) => el.name === "Another label");
- expect(appendedLabel).toHaveLength(1);
- expect(appendedLabel[0].attributes).toHaveLength(1);
- expect(appendedLabel[0].attributes[0].name).toBe('parked');
- expect(appendedLabel[0].attributes[0].defaultValue).toBe('false');
- expect(appendedLabel[0].attributes[0].mutable).toBe(true);
- expect(appendedLabel[0].attributes[0].inputType).toBe('checkbox');
- });
-
- test('save new task without an id', async () => {
- const task = new cvat.classes.Task({
- name: 'New Task',
- labels: [
- {
- name: "My boss's car",
- attributes: [
- {
- default_value: 'false',
- input_type: 'checkbox',
- mutable: true,
- name: 'parked',
- values: ['false'],
- },
- ],
- },
- ],
- bug_tracker: 'bug tracker value',
- image_quality: 50,
- });
-
- const result = await task.save();
- expect(typeof result.id).toBe('number');
- });
-
- test('save new task in project', async () => {
- const task = new cvat.classes.Task({
- name: 'New Task',
- project_id: 2,
- bug_tracker: 'bug tracker value',
- image_quality: 50,
- });
-
- const result = await task.save();
- expect(result.projectId).toBe(2);
- });
-
- test('create a new task with skeletons', async () => {
- const svgSpec = `
-
-
-
-
-
-
-
-
-
-
- `;
-
- const task = new cvat.classes.Task({
- name: 'task with skeletons',
- labels: [{
- name: 'star skeleton',
- type: 'skeleton',
- attributes: [],
- svg: svgSpec,
- sublabels: [{
- name: '1',
- type: 'points',
- attributes: []
- }, {
- name: '2',
- type: 'points',
- attributes: []
- }, {
- name: '3',
- type: 'points',
- attributes: []
- }, {
- name: '4',
- type: 'points',
- attributes: []
- }, {
- name: '5',
- type: 'points',
- attributes: []
- }]
- }],
- project_id: null,
- });
-
- const result = await task.save();
- expect(typeof result.id).toBe('number');
- });
-});
-
-describe('Feature: delete a task', () => {
- test('delete a task', async () => {
- let result = await cvat.tasks.get({
- id: 3,
- });
-
- await result[0].delete();
- result = await cvat.tasks.get({
- id: 3,
- });
-
- expect(Array.isArray(result)).toBeTruthy();
- expect(result).toHaveLength(0);
- });
-});
-
-describe('Feature: delete a label', () => {
- test('delete a label', async () => {
- const [task] = await cvat.tasks.get({
- id: 100,
- });
-
- const labelsLength = task.labels.length;
- const deletedLabels = task.labels.filter((el) => el.name !== 'person');
- task.labels = deletedLabels;
- const updatedTask = await task.save();
- const [newlyRequestTask] = await cvat.tasks.get({
- id: 100,
- });
- expect(updatedTask.labels).toHaveLength(labelsLength - 1);
- expect(newlyRequestTask.labels).toHaveLength(labelsLength - 1);
- });
-});
diff --git a/cvat-core/tests/api/user.cjs b/cvat-core/tests/api/user.cjs
deleted file mode 100644
index ec9682189542..000000000000
--- a/cvat-core/tests/api/user.cjs
+++ /dev/null
@@ -1,52 +0,0 @@
-// Copyright (C) 2020-2022 Intel Corporation
-// Copyright (C) CVAT.ai Corporation
-//
-// SPDX-License-Identifier: MIT
-
-// Setup mock for a server
-jest.mock('../../src/server-proxy', () => {
- return {
- __esModule: true,
- default: require('../mocks/server-proxy.mock.cjs'),
- };
-});
-
-const cvat = require('../../src/api').default;
-const User = require('../../src/user').default;
-
-// Test cases
-describe('Feature: get a list of users', () => {
- test('get all users', async () => {
- const result = await cvat.users.get();
- expect(Array.isArray(result)).toBeTruthy();
- expect(result).toHaveLength(2);
- for (const el of result) {
- expect(el).toBeInstanceOf(User);
- }
- });
-
- test('get only self', async () => {
- const result = await cvat.users.get({
- self: true,
- });
- expect(Array.isArray(result)).toBeTruthy();
- expect(result).toHaveLength(1);
- expect(result[0]).toBeInstanceOf(User);
- });
-
- test('get users with unknown filter key', async () => {
- expect(
- cvat.users.get({
- unknown: '50',
- }),
- ).rejects.toThrow(cvat.exceptions.ArgumentError);
- });
-
- test('get users with invalid filter key', async () => {
- expect(
- cvat.users.get({
- self: 1,
- }),
- ).rejects.toThrow(cvat.exceptions.ArgumentError);
- });
-});
diff --git a/cvat-core/tests/api/webhooks.cjs b/cvat-core/tests/api/webhooks.cjs
deleted file mode 100644
index aed9e79dba8f..000000000000
--- a/cvat-core/tests/api/webhooks.cjs
+++ /dev/null
@@ -1,122 +0,0 @@
-// Copyright (C) CVAT.ai Corporation
-//
-// SPDX-License-Identifier: MIT
-
-// Setup mock for a server
-jest.mock('../../src/server-proxy', () => {
- return {
- __esModule: true,
- default: require('../mocks/server-proxy.mock'),
- };
-});
-
-const cvat = require('../../src/api').default;
-const Webhook = require('../../src/webhook').default;
-const { webhooksDummyData, webhooksEventsDummyData } = require('../mocks/dummy-data.mock.cjs');
-const { WebhookSourceType } = require('../../src/enums');
-
-describe('Feature: get webhooks', () => {
- test('get all webhooks', async () => {
- const result = await cvat.webhooks.get({});
- expect(Array.isArray(result)).toBeTruthy();
- expect(result).toHaveLength(webhooksDummyData.count);
- for (const item of result) {
- expect(item).toBeInstanceOf(Webhook);
- }
- });
-
- test('get webhook events', async () => {
- function checkEvents(events) {
- expect(Array.isArray(result)).toBeTruthy();
- for (const event of events) {
- expect(event).toMatch(/((create)|(update)|(delete)):/);
- }
- }
- let result = await Webhook.availableEvents(WebhookSourceType.PROJECT);
- checkEvents(result);
-
- result = await Webhook.availableEvents(WebhookSourceType.ORGANIZATION);
- checkEvents(result);
- });
-
- test('get webhook by id', async () => {
- const result = await cvat.webhooks.get({
- id: 1,
- });
- const [webhook] = result;
-
- expect(Array.isArray(result)).toBeTruthy();
- expect(result).toHaveLength(1);
- expect(webhook).toBeInstanceOf(Webhook);
- expect(webhook.id).toBe(1);
- expect(webhook.targetURL).toBe('https://localhost:3001/project/hook');
- expect(webhook.description).toBe('Project webhook');
- expect(webhook.contentType).toBe('application/json');
- expect(webhook.enableSSL).toBeTruthy();
- expect(webhook.events).toEqual(webhooksEventsDummyData[WebhookSourceType.PROJECT].events);
- });
-});
-
-
-
-describe('Feature: create a webhook', () => {
- test('create new webhook', async () => {
- const webhook = new cvat.classes.Webhook({
- description: 'New webhook',
- target_url: 'https://localhost:3001/hook',
- content_type: 'application/json',
- secret: 'secret',
- enable_ssl: true,
- is_active: true,
- events: webhooksEventsDummyData[WebhookSourceType.PROJECT].events,
- project_id: 1,
- type:WebhookSourceType.PROJECT,
- });
-
- const result = await webhook.save();
- expect(typeof result.id).toBe('number');
- });
-});
-
-describe('Feature: update a webhook', () => {
- test('update some webhook fields', async () => {
- const newValues = new Map([
- ['description', 'New description'],
- ['isActive', false],
- ['targetURL', 'https://localhost:3001/new/url'],
- ]);
-
- let result = await cvat.webhooks.get({
- id: 1,
- });
- let [webhook] = result;
- for (const [key, value] of newValues) {
- webhook[key] = value;
- }
- webhook.save();
-
- result = await cvat.webhooks.get({
- id: 1,
- });
- [webhook] = result;
- newValues.forEach((value, key) => {
- expect(webhook[key]).toBe(value);
- });
- });
-});
-
-describe('Feature: delete a webhook', () => {
- test('delete a webhook', async () => {
- let result = await cvat.webhooks.get({
- id: 2,
- });
- const [webhook] = result;
- await webhook.delete();
-
- result = await cvat.webhooks.get({
- id: 2,
- });
- expect(Array.isArray(result)).toBeTruthy();
- expect(result).toHaveLength(0);
- });
-});
diff --git a/cvat-core/tests/mocks/dummy-data.mock.cjs b/cvat-core/tests/mocks/dummy-data.mock.cjs
deleted file mode 100644
index 232434aa0f5a..000000000000
--- a/cvat-core/tests/mocks/dummy-data.mock.cjs
+++ /dev/null
@@ -1,3450 +0,0 @@
-/* eslint-disable */
-
-const aboutDummyData = {
- name: 'Computer Vision Annotation Tool',
- description:
- 'CVAT is completely re-designed and re-implemented version of Video Annotation Tool from Irvine, California tool. It is free, online, interactive video and image annotation tool for computer vision. It is being used by our team to annotate million of objects with different properties. Many UI and UX decisions are based on feedbacks from professional data annotation team.',
- version: '0.5.dev20190516142240',
-};
-
-const formatsDummyData = {
- exporters: [
- {
- name: 'CVAT for video 1.1',
- ext: 'XML',
- version: '1.1',
- },
- {
- name: 'CVAT for images 1.1',
- ext: 'XML',
- version: '1.1',
- },
- {
- name: 'PASCAL VOC 1.0',
- ext: 'ZIP',
- version: '1.0',
- },
- {
- name: 'YOLO 1.0',
- ext: 'ZIP',
- version: '1.0',
- },
- ],
- importers: [
- {
- name: 'CVAT 1.1',
- ext: 'XML, ZIP',
- version: '1.1',
- },
- {
- name: 'PASCAL VOC 1.0',
- ext: 'ZIP',
- version: '1.0',
- },
- {
- name: 'MYFORMAT 1.0',
- ext: 'TXT',
- version: '1.0',
- },
- ],
-};
-
-const usersDummyData = {
- count: 2,
- next: null,
- previous: null,
- results: [
- {
- url: 'http://localhost:7000/api/users/1',
- id: 1,
- username: 'admin',
- first_name: '',
- last_name: '',
- email: 'admin@dummy.com',
- groups: ['admin'],
- is_staff: true,
- is_superuser: true,
- is_active: true,
- last_login: '2019-05-17T11:53:05.961434+03:00',
- date_joined: '2019-05-13T15:33:17.833200+03:00',
- },
- {
- url: 'http://localhost:7000/api/users/2',
- id: 2,
- username: 'bsekache',
- first_name: '',
- last_name: '',
- email: '',
- groups: ['user', 'observer'],
- is_staff: false,
- is_superuser: false,
- is_active: true,
- last_login: '2019-05-16T13:07:19.564241+03:00',
- date_joined: '2019-05-16T13:05:57+03:00',
- },
- ],
-};
-
-const shareDummyData = [
- {
- name: 'images',
- type: 'DIR',
- children: [
- {
- name: 'image000001.jpg',
- type: 'REG',
- },
- {
- name: 'nowy-jork-time-sqare.jpg',
- type: 'REG',
- },
- {
- name: '123123.jpg',
- type: 'REG',
- },
- {
- name: 'ws_Oasis-night_1920x1200.jpg',
- type: 'REG',
- },
- {
- name: 'image000002.jpg',
- type: 'REG',
- },
- {
- name: 'fdgdfgfd.jpg',
- type: 'REG',
- },
- {
- name: 'bbbbb.jpg',
- type: 'REG',
- },
- {
- name: 'gdfgdfgdf.jpg',
- type: 'REG',
- },
- ],
- },
- {
- name: '2.avi',
- type: 'REG',
- },
- {
- name: 'data',
- type: 'DIR',
- children: [],
- },
- {
- name: 'out.MOV',
- type: 'REG',
- },
- {
- name: 'bbbbb.jpg',
- type: 'REG',
- },
-];
-
-const projectsDummyLabelsData = {
- 6: [],
- 2: [{
- id: 10,
- name: 'bicycle',
- attributes: [
- {
- id: 28,
- name: 'driver',
- mutable: false,
- input_type: 'radio',
- default_value: 'man',
- values: ['man', 'woman'],
- },
- {
- id: 29,
- name: 'sport',
- mutable: true,
- input_type: 'checkbox',
- default_value: 'false',
- values: ['false'],
- },
- ],
- }, {
- id: 9,
- name: 'car',
- attributes: [
- {
- id: 25,
- name: 'model',
- mutable: false,
- input_type: 'select',
- default_value: '__undefined__',
- values: ['__undefined__', 'bmw', 'mazda', 'suzuki', 'kia'],
- },
- {
- id: 26,
- name: 'driver',
- mutable: false,
- input_type: 'select',
- default_value: '__undefined__',
- values: ['__undefined__', 'man', 'woman'],
- },
- {
- id: 27,
- name: 'parked',
- mutable: true,
- input_type: 'checkbox',
- default_value: 'true',
- values: ['true'],
- },
- ],
- }, {
- id: 8,
- name: 'face',
- attributes: [
- {
- id: 21,
- name: 'age',
- mutable: false,
- input_type: 'select',
- default_value: '__undefined__',
- values: [
- '__undefined__',
- 'skip',
- 'baby (0-5)',
- 'child (6-12)',
- 'adolescent (13-19)',
- 'adult (20-45)',
- 'middle-age (46-64)',
- 'old (65-)',
- ],
- },
- {
- id: 22,
- name: 'glass',
- mutable: false,
- input_type: 'select',
- default_value: '__undefined__',
- values: ['__undefined__', 'skip', 'no', 'sunglass', 'transparent', 'other'],
- },
- {
- id: 23,
- name: 'beard',
- mutable: false,
- input_type: 'select',
- default_value: '__undefined__',
- values: ['__undefined__', 'skip', 'no', 'yes'],
- },
- {
- id: 24,
- name: 'race',
- mutable: false,
- input_type: 'select',
- default_value: '__undefined__',
- values: ['__undefined__', 'skip', 'asian', 'black', 'caucasian', 'other'],
- },
- ],
- }, {
- id: 11,
- name: 'motorcycle',
- attributes: [
- {
- id: 30,
- name: 'model',
- mutable: false,
- input_type: 'text',
- default_value: 'unknown',
- values: ['unknown'],
- },
- ],
- }, {
- id: 7,
- name: 'person, pedestrian',
- attributes: [{
- id: 16,
- name: 'action',
- mutable: true,
- input_type: 'select',
- default_value: '__undefined__',
- values: ['__undefined__', 'sitting', 'raising_hand', 'standing'],
- }, {
- id: 17,
- name: 'age',
- mutable: false,
- input_type: 'number',
- default_value: '1',
- values: ['1', '100', '1'],
- }, {
- id: 18,
- name: 'gender',
- mutable: false,
- input_type: 'select',
- default_value: 'male',
- values: ['male', 'female'],
- }, {
- id: 19,
- name: 'false positive',
- mutable: false,
- input_type: 'checkbox',
- default_value: 'false',
- values: ['false'],
- }, {
- id: 20,
- name: 'clother',
- mutable: true,
- input_type: 'text',
- default_value: 'non, initialized',
- values: ['non, initialized'],
- },
- ],
- }, {
- id: 12,
- name: 'road',
- attributes: [],
- },
- ],
-}
-
-const tasksDummyLabelsData = {
- 102: [{
- id: 5,
- name: 'car',
- attributes: [],
- }],
- 100: [{
- id: 1001,
- name: 'car',
- attributes: [],
- }, {
- id: 1002,
- name: 'person',
- attributes: [],
- },
- ],
- 101: [{
- id: 22,
- name: 'bicycle',
- attributes: [{
- id: 13,
- name: 'driver',
- mutable: false,
- input_type: 'radio',
- default_value: 'man',
- values: ['man', 'woman'],
- }, {
- id: 14,
- name: 'sport',
- mutable: true,
- input_type: 'checkbox',
- default_value: 'false',
- values: ['false'],
- },
- ],
- }, {
- id: 21,
- name: 'car',
- attributes: [{
- id: 10,
- name: 'model',
- mutable: false,
- input_type: 'select',
- default_value: '__undefined__',
- values: ['__undefined__', 'bmw', 'mazda', 'suzuki', 'kia'],
- }, {
- id: 11,
- name: 'driver',
- mutable: false,
- input_type: 'select',
- default_value: '__undefined__',
- values: ['__undefined__', 'man', 'woman'],
- }, {
- id: 12,
- name: 'parked',
- mutable: true,
- input_type: 'checkbox',
- default_value: 'true',
- values: ['true'],
- },
- ],
- },
- {
- id: 20,
- name: 'face',
- attributes: [{
- id: 6,
- name: 'age',
- mutable: false,
- input_type: 'select',
- default_value: '__undefined__',
- values: [
- '__undefined__',
- 'skip',
- 'baby (0-5)',
- 'child (6-12)',
- 'adolescent (13-19)',
- 'adult (20-45)',
- 'middle-age (46-64)',
- 'old (65-)',
- ],
- }, {
- id: 7,
- name: 'glass',
- mutable: false,
- input_type: 'select',
- default_value: '__undefined__',
- values: ['__undefined__', 'skip', 'no', 'sunglass', 'transparent', 'other'],
- }, {
- id: 8,
- name: 'beard',
- mutable: false,
- input_type: 'select',
- default_value: '__undefined__',
- values: ['__undefined__', 'skip', 'no', 'yes'],
- }, {
- id: 9,
- name: 'race',
- mutable: false,
- input_type: 'select',
- default_value: '__undefined__',
- values: ['__undefined__', 'skip', 'asian', 'black', 'caucasian', 'other'],
- },
- ],
- },
- {
- id: 23,
- name: 'motorcycle',
- attributes: [{
- id: 15,
- name: 'model',
- mutable: false,
- input_type: 'text',
- default_value: 'unknown',
- values: ['unknown'],
- },
- ],
- },
- {
- id: 19,
- name: 'person, pedestrian',
- attributes: [{
- id: 1,
- name: 'action',
- mutable: true,
- input_type: 'select',
- default_value: '__undefined__',
- values: ['__undefined__', 'sitting', 'raising_hand', 'standing'],
- }, {
- id: 2,
- name: 'age',
- mutable: false,
- input_type: 'number',
- default_value: '1',
- values: ['1', '100', '1'],
- }, {
- id: 3,
- name: 'gender',
- mutable: false,
- input_type: 'select',
- default_value: 'male',
- values: ['male', 'female'],
- }, {
- id: 4,
- name: 'false positive',
- mutable: false,
- input_type: 'checkbox',
- default_value: 'false',
- values: ['false'],
- }, {
- id: 5,
- name: 'clother',
- mutable: true,
- input_type: 'text',
- default_value: 'non, initialized',
- values: ['non, initialized'],
- },
- ],
- }, {
- id: 24,
- name: 'road',
- attributes: [],
- },
- ],
- 40: [{
- id: 54,
- name: 'star skeleton',
- color: '#9cb75a',
- attributes: [],
- type: 'skeleton',
- sublabels: [{
- id: 55,
- name: '1',
- color: '#d12345',
- attributes: [],
- type: 'points',
- has_parent: true
- }, {
- id: 56,
- name: '2',
- color: '#350dea',
- attributes: [],
- type: 'points',
- has_parent: true
- }, {
- id: 57,
- name: '3',
- color: '#479ffe',
- attributes: [],
- type: 'points',
- has_parent: true
- }, {
- id: 58,
- name: '4',
- color: '#4a649f',
- attributes: [],
- type: 'points',
- has_parent: true
- }, {
- id: 59,
- name: '5',
- color: '#478144',
- attributes: [],
- type: 'points',
- has_parent: true
- }],
- has_parent: false,
- svg:
- `
-
-
-
-
-
-
-
-
- `
- }],
- 3: [{
- id: 16,
- name: 'bicycle',
- attributes: [{
- id: 43,
- name: 'driver',
- mutable: false,
- input_type: 'radio',
- default_value: 'man',
- values: ['man', 'woman'],
- }, {
- id: 44,
- name: 'sport',
- mutable: true,
- input_type: 'checkbox',
- default_value: 'false',
- values: ['false'],
- },
- ],
- },
- {
- id: 15,
- name: 'car',
- attributes: [{
- id: 40,
- name: 'model',
- mutable: false,
- input_type: 'select',
- default_value: '__undefined__',
- values: ['__undefined__', 'bmw', 'mazda', 'suzuki', 'kia'],
- }, {
- id: 41,
- name: 'driver',
- mutable: false,
- input_type: 'select',
- default_value: '__undefined__',
- values: ['__undefined__', 'man', 'woman'],
- }, {
- id: 42,
- name: 'parked',
- mutable: true,
- input_type: 'checkbox',
- default_value: 'true',
- values: ['true'],
- },
- ],
- },
- {
- id: 14,
- name: 'face',
- attributes: [{
- id: 36,
- name: 'age',
- mutable: false,
- input_type: 'select',
- default_value: '__undefined__',
- values: [
- '__undefined__',
- 'skip',
- 'baby (0-5)',
- 'child (6-12)',
- 'adolescent (13-19)',
- 'adult (20-45)',
- 'middle-age (46-64)',
- 'old (65-)',
- ],
- }, {
- id: 37,
- name: 'glass',
- mutable: false,
- input_type: 'select',
- default_value: '__undefined__',
- values: ['__undefined__', 'skip', 'no', 'sunglass', 'transparent', 'other'],
- }, {
- id: 38,
- name: 'beard',
- mutable: false,
- input_type: 'select',
- default_value: '__undefined__',
- values: ['__undefined__', 'skip', 'no', 'yes'],
- }, {
- id: 39,
- name: 'race',
- mutable: false,
- input_type: 'select',
- default_value: '__undefined__',
- values: ['__undefined__', 'skip', 'asian', 'black', 'caucasian', 'other'],
- },
- ],
- },
- {
- id: 17,
- name: 'motorcycle',
- attributes: [{
- id: 45,
- name: 'model',
- mutable: false,
- input_type: 'text',
- default_value: 'unknown',
- values: ['unknown'],
- },
- ],
- },
- {
- id: 13,
- name: 'person, pedestrian',
- attributes: [{
- id: 31,
- name: 'action',
- mutable: true,
- input_type: 'select',
- default_value: '__undefined__',
- values: ['__undefined__', 'sitting', 'raising_hand', 'standing'],
- }, {
- id: 32,
- name: 'age',
- mutable: false,
- input_type: 'number',
- default_value: '1',
- values: ['1', '100', '1'],
- }, {
- id: 33,
- name: 'gender',
- mutable: false,
- input_type: 'select',
- default_value: 'male',
- values: ['male', 'female'],
- }, {
- id: 34,
- name: 'false positive',
- mutable: false,
- input_type: 'checkbox',
- default_value: 'false',
- values: ['false'],
- }, {
- id: 35,
- name: 'clother',
- mutable: true,
- input_type: 'text',
- default_value: 'non, initialized',
- values: ['non, initialized'],
- },
- ],
- },
- {
- id: 18,
- name: 'road',
- attributes: [],
- },
- ],
- 1: [
- {
- id: 4,
- name: 'bicycle',
- attributes: [{
- id: 13,
- name: 'driver',
- mutable: false,
- input_type: 'radio',
- default_value: 'man',
- values: ['man', 'woman'],
- }, {
- id: 14,
- name: 'sport',
- mutable: true,
- input_type: 'checkbox',
- default_value: 'false',
- values: ['false'],
- },
- ],
- },
- {
- id: 3,
- name: 'car',
- attributes: [{
- id: 10,
- name: 'model',
- mutable: false,
- input_type: 'select',
- default_value: '__undefined__',
- values: ['__undefined__', 'bmw', 'mazda', 'suzuki', 'kia'],
- }, {
- id: 11,
- name: 'driver',
- mutable: false,
- input_type: 'select',
- default_value: '__undefined__',
- values: ['__undefined__', 'man', 'woman'],
- }, {
- id: 12,
- name: 'parked',
- mutable: true,
- input_type: 'checkbox',
- default_value: 'true',
- values: ['true'],
- },
- ],
- }, {
- id: 2,
- name: 'face',
- attributes: [{
- id: 6,
- name: 'age',
- mutable: false,
- input_type: 'select',
- default_value: '__undefined__',
- values: [
- '__undefined__',
- 'skip',
- 'baby (0-5)',
- 'child (6-12)',
- 'adolescent (13-19)',
- 'adult (20-45)',
- 'middle-age (46-64)',
- 'old (65-)',
- ],
- }, {
- id: 7,
- name: 'glass',
- mutable: false,
- input_type: 'select',
- default_value: '__undefined__',
- values: ['__undefined__', 'skip', 'no', 'sunglass', 'transparent', 'other'],
- }, {
- id: 8,
- name: 'beard',
- mutable: false,
- input_type: 'select',
- default_value: '__undefined__',
- values: ['__undefined__', 'skip', 'no', 'yes'],
- }, {
- id: 9,
- name: 'race',
- mutable: false,
- input_type: 'select',
- default_value: '__undefined__',
- values: ['__undefined__', 'skip', 'asian', 'black', 'caucasian', 'other'],
- },
- ],
- }, {
- id: 5,
- name: 'motorcycle',
- attributes: [
- {
- id: 15,
- name: 'model',
- mutable: false,
- input_type: 'text',
- default_value: 'unknown',
- values: ['unknown'],
- },
- ],
- },
- {
- id: 1,
- name: 'person, pedestrian',
- attributes: [
- {
- id: 1,
- name: 'action',
- mutable: true,
- input_type: 'select',
- default_value: '__undefined__',
- values: ['__undefined__', 'sitting', 'raising_hand', 'standing'],
- },
- {
- id: 2,
- name: 'age',
- mutable: false,
- input_type: 'number',
- default_value: '1',
- values: ['1', '100', '1'],
- },
- {
- id: 3,
- name: 'gender',
- mutable: false,
- input_type: 'select',
- default_value: 'male',
- values: ['male', 'female'],
- },
- {
- id: 4,
- name: 'false positive',
- mutable: false,
- input_type: 'checkbox',
- default_value: 'false',
- values: ['false'],
- },
- {
- id: 5,
- name: 'clother',
- mutable: true,
- input_type: 'text',
- default_value: 'non, initialized',
- values: ['non, initialized'],
- },
- ],
- },
- {
- id: 6,
- name: 'road',
- attributes: [],
- },
- ],
-}
-
-function initJobFromTaskProject(job_id, task_id, proj_id = null) {
- const task = tasksDummyData.results.find((task) => task.id === task_id);
- const project = Number.isInteger(proj_id) ? projectsDummyData.results.find((proj) => proj.id === proj_id) : undefined;
- return {
- url: `http://localhost:7000/api/jobs/${job_id}`,
- updated_date: '2023-02-14T15:06:53.627413Z',
- project_id: proj_id,
- task_id: task_id,
- bug_tracker: project?.bug_tracker || task.bug_tracker || null,
- mode: task.mode,
- dimension: task.dimension,
- data_chunk_size: task.data_chunk_size,
- data_compressed_chunk_type: task.data_compressed_chunk_type,
- labels: { count: project ? project.labels.count : task.labels.count, url: `http://localhost:7000/api/labels?job_id=${job_id}` }
- }
-}
-
-const jobsDummyData = {
- count: 2,
- next: null,
- previous: null,
- results: [
- {
- id: 112,
- guide_id: null,
- assignee: null,
- status: 'annotation',
- stage: 'annotation',
- state: 'new',
- start_frame: 0,
- stop_frame: 0,
- task_id: 102,
- project_id: null,
- },
- {
- id: 100,
- guide_id: null,
- assignee: null,
- status: 'annotation',
- stage: 'annotation',
- state: 'new',
- start_frame: 0,
- stop_frame: 8,
- task_id: 100,
- project_id: null,
- },
- {
- id: 40,
- guide_id: null,
- assignee: null,
- status: 'annotation',
- stage: 'annotation',
- state: 'new',
- start_frame: 0,
- stop_frame: 3,
- task_id: 40,
- project_id: null,
- },
- {
- id: 111,
- guide_id: null,
- assignee: null,
- status: 'annotation',
- stage: 'annotation',
- state: 'new',
- start_frame: 4950,
- stop_frame: 5001,
- task_id: 101,
- project_id: null,
- },
- {
- id: 110,
- guide_id: null,
- assignee: null,
- status: 'annotation',
- stage: 'annotation',
- state: 'new',
- start_frame: 4455,
- stop_frame: 4954,
- task_id: 101,
- project_id: null,
- },
- {
- id: 109,
- guide_id: null,
- assignee: null,
- status: 'annotation',
- stage: 'annotation',
- state: 'new',
- start_frame: 3960,
- stop_frame: 4459,
- task_id: 101,
- project_id: null,
- },
- {
- id: 108,
- guide_id: null,
- assignee: null,
- status: 'annotation',
- stage: 'annotation',
- state: 'new',
- start_frame: 3465,
- stop_frame: 3964,
- task_id: 101,
- project_id: null,
- },
- {
- id: 107,
- guide_id: null,
- assignee: null,
- status: 'annotation',
- stage: 'annotation',
- state: 'new',
- start_frame: 2970,
- stop_frame: 3469,
- task_id: 101,
- project_id: null,
- },
- {
- id: 106,
- guide_id: null,
- assignee: null,
- status: 'annotation',
- stage: 'annotation',
- state: 'new',
- start_frame: 2475,
- stop_frame: 2974,
- task_id: 101,
- project_id: null,
- },
- {
- id: 105,
- guide_id: null,
- assignee: null,
- status: 'annotation',
- stage: 'annotation',
- state: 'new',
- start_frame: 1980,
- stop_frame: 2479,
- task_id: 101,
- project_id: null,
- },
- {
- id: 104,
- guide_id: null,
- assignee: null,
- status: 'annotation',
- stage: 'annotation',
- state: 'new',
- start_frame: 1485,
- stop_frame: 1984,
- task_id: 101,
- project_id: null,
- },
- {
- id: 103,
- guide_id: null,
- assignee: null,
- status: 'annotation',
- stage: 'annotation',
- state: 'new',
- start_frame: 990,
- stop_frame: 1489,
- task_id: 101,
- project_id: null,
- },
- {
- id: 102,
- guide_id: null,
- assignee: null,
- status: 'annotation',
- stage: 'annotation',
- state: 'new',
- start_frame: 495,
- stop_frame: 994,
- task_id: 101,
- project_id: null,
- },
- {
- id: 101,
- guide_id: null,
- assignee: null,
- status: 'annotation',
- stage: 'annotation',
- state: 'new',
- start_frame: 0,
- stop_frame: 499,
- task_id: 101,
- project_id: null,
- },
- {
- id: 9,
- guide_id: null,
- assignee: null,
- status: 'completed',
- stage: 'acceptance',
- state: 'completed',
- start_frame: 0,
- stop_frame: 99,
- task_id: 2,
- project_id: null,
- },
- {
- id: 8,
- guide_id: null,
- assignee: null,
- status: 'completed',
- stage: 'acceptance',
- state: 'completed',
- start_frame: 95,
- stop_frame: 194,
- task_id: 2,
- project_id: null,
- },
- {
- id: 7,
- guide_id: null,
- assignee: null,
- status: 'completed',
- stage: 'acceptance',
- state: 'completed',
- start_frame: 190,
- stop_frame: 289,
- task_id: 2,
- project_id: null,
- },
- {
- id: 6,
- guide_id: null,
- assignee: null,
- status: 'completed',
- stage: 'acceptance',
- state: 'completed',
- start_frame: 285,
- stop_frame: 384,
- task_id: 2,
- project_id: null,
- },
- {
- id: 5,
- guide_id: null,
- assignee: null,
- status: 'completed',
- stage: 'acceptance',
- state: 'completed',
- start_frame: 380,
- stop_frame: 431,
- task_id: 2,
- project_id: null,
- },
- {
- id: 4,
- guide_id: null,
- assignee: null,
- status: 'annotation',
- stage: 'annotation',
- state: 'new',
- start_frame: 4995,
- stop_frame: 5001,
- task_id: 3,
- project_id: null,
- },
- {
- id: 3,
- guide_id: null,
- assignee: null,
- status: 'annotation',
- stage: 'annotation',
- state: 'new',
- start_frame: 0,
- stop_frame: 4999,
- task_id: 3,
- project_id: null,
- },
- {
- id: 2,
- guide_id: null,
- assignee: null,
- status: 'annotation',
- stage: 'annotation',
- state: 'new',
- start_frame: 0,
- stop_frame: 74,
- task_id: 2,
- project_id: 2,
- },
- {
- id: 1,
- guide_id: null,
- assignee: null,
- status: 'annotation',
- stage: "annotation",
- state: "new",
- start_frame: 0,
- stop_frame: 8,
- task_id: 1,
- project_id: null,
- },
- ]
-};
-
-const projectsDummyData = {
- count: 2,
- next: null,
- previous: null,
- results: [
- {
- url: 'http://localhost:7000/api/projects/6',
- id: 6,
- guide_id: null,
- name: 'Some empty project',
- labels: { count: projectsDummyLabelsData[6].length, url: 'http://localhost:7000/api/labels?project_id=6' },
- tasks: [],
- owner: {
- url: 'http://localhost:7000/api/users/2',
- id: 2,
- username: 'bsekache',
- },
- assignee: {
- url: 'http://localhost:7000/api/users/2',
- id: 2,
- username: 'bsekache',
- },
- bug_tracker: '',
- created_date: '2020-10-19T20:41:07.808029Z',
- updated_date: '2020-10-19T20:41:07.808084Z',
- status: 'annotation',
- },
- {
- url: 'http://localhost:7000/api/projects/1',
- id: 2,
- guide_id: null,
- name: 'Test project with roads',
- labels: { count: projectsDummyLabelsData[2].length, url: 'http://localhost:7000/api/labels?project_id=2' },
- tasks: [
- {
- url: 'http://localhost:7000/api/tasks/2',
- id: 2,
- name: 'road 1',
- project_id: 1,
- mode: 'interpolation',
- owner: {
- url: 'http://localhost:7000/api/users/1',
- id: 1,
- username: 'admin',
- },
- assignee: null,
- guide_id: null,
- bug_tracker: '',
- created_date: '2020-10-12T08:59:59.878083Z',
- updated_date: '2020-10-18T21:02:20.831294Z',
- overlap: 5,
- segment_size: 100,
- z_order: false,
- status: 'completed',
- labels: [
- {
- id: 1,
- name: 'car',
- color: '#2080c0',
- attributes: [
- {
- id: 199,
- name: 'color',
- mutable: false,
- input_type: 'select',
- default_value: 'red',
- values: ['red', 'black', 'white', 'yellow', 'pink', 'green', 'blue', 'orange'],
- },
- ],
- },
- ],
- jobs: "http://localhost:7000/api/jobs?task_id=2",
- data_chunk_size: 36,
- data_compressed_chunk_type: 'imageset',
- data_original_chunk_type: 'video',
- size: 432,
- image_quality: 100,
- data: 1,
- },
- ],
- owner: {
- url: 'http://localhost:7000/api/users/1',
- id: 1,
- username: 'admin',
- },
- assignee: null,
- bug_tracker: '',
- created_date: '2020-10-12T08:21:56.558898Z',
- updated_date: '2020-10-12T08:21:56.558982Z',
- status: 'completed',
- },
- ],
-};
-
-const tasksDummyData = {
- count: 5,
- next: null,
- previous: null,
- results: [
- {
- url: 'http://localhost:7000/api/tasks/102',
- id: 102,
- guide_id: null,
- name: 'Test',
- size: 1,
- mode: 'annotation',
- owner: {
- url: 'http://localhost:7000/api/users/1',
- id: 1,
- username: 'admin',
- },
- assignee: null,
- bug_tracker: '',
- created_date: '2019-09-05T11:59:22.987942Z',
- updated_date: '2019-09-05T14:04:07.569344Z',
- overlap: 0,
- segment_size: 0,
- dimension: '2d',
- data_compressed_chunk_type: 'imageset',
- data_chunk_size: 1,
- status: 'annotation',
- labels: { count: tasksDummyLabelsData[102].length, url: 'http://localhost:7000/api/labels?task_id=102' },
- jobs: {
- count: jobsDummyData.results.filter((job) => job.task_id === 102).length,
- completed: jobsDummyData.results.filter((job) => job.task_id === 102 && job.stage === 'acceptance' && job.state === 'completed'),
- url: 'http://localhost:7000/api/jobs?task_id=102',
- },
- image_quality: 50,
- frame_filter: '',
- },
- {
- url: 'http://localhost:7000/api/tasks/100',
- id: 100,
- guide_id: null,
- name: 'Image Task',
- size: 9,
- mode: 'annotation',
- owner: {
- url: 'http://localhost:7000/api/users/1',
- id: 1,
- username: 'admin',
- },
- assignee: null,
- bug_tracker: '',
- created_date: '2019-06-18T13:05:08.941304+03:00',
- updated_date: '2019-07-16T15:51:29.142871+03:00',
- overlap: 0,
- segment_size: 0,
- dimension: '2d',
- data_compressed_chunk_type: 'imageset',
- data_chunk_size: 1,
- status: 'annotation',
- labels: { count: tasksDummyLabelsData[100].length, url: 'http://localhost:7000/api/labels?task_id=100' },
- jobs: {
- count: jobsDummyData.results.filter((job) => job.task_id === 100).length,
- completed: jobsDummyData.results.filter((job) => job.task_id === 100 && job.stage === 'acceptance' && job.state === 'completed'),
- url: 'http://localhost:7000/api/jobs?task_id=100',
- },
- image_quality: 50,
- frame_filter: '',
- },
- {
- url: 'http://localhost:7000/api/tasks/10',
- id: 101,
- guide_id: null,
- name: 'Video Task',
- size: 5002,
- mode: 'interpolation',
- owner: {
- url: 'http://localhost:7000/api/users/1',
- id: 1,
- username: 'admin',
- },
- assignee: null,
- bug_tracker: '',
- created_date: '2019-06-21T16:34:49.199691+03:00',
- updated_date: '2019-07-12T16:43:58.904892+03:00',
- overlap: 5,
- segment_size: 500,
- dimension: '2d',
- data_compressed_chunk_type: 'imageset',
- data_chunk_size: 1,
- status: 'annotation',
- labels: { count: tasksDummyLabelsData[101].length, url: 'http://localhost:7000/api/labels?task_id=101' },
- jobs: {
- count: jobsDummyData.results.filter((job) => job.task_id === 101).length,
- completed: jobsDummyData.results.filter((job) => job.task_id === 101 && job.stage === 'acceptance' && job.state === 'completed'),
- url: 'http://localhost:7000/api/jobs?task_id=101',
- },
- image_quality: 50,
- frame_filter: '',
- },
- {
- url: 'http://localhost:7000/api/tasks/40',
- id: 40,
- guide_id: null,
- name: 'test',
- project_id: null,
- mode: 'annotation',
- owner: {
- url: 'http://localhost:7000/api/users/1',
- id: 1,
- username: 'admin',
- first_name: '',
- last_name: '',
- },
- assignee: null,
- bug_tracker: '',
- created_date: '2022-08-25T12:10:45.471663Z',
- updated_date: '2022-08-25T12:10:45.993989Z',
- overlap: 0,
- segment_size: 4,
- status: 'annotation',
- labels: { count: tasksDummyLabelsData[40].length, url: 'http://localhost:7000/api/labels?task_id=40' },
- jobs: {
- count: jobsDummyData.results.filter((job) => job.task_id === 40).length,
- completed: jobsDummyData.results.filter((job) => job.task_id === 40 && job.stage === 'acceptance' && job.state === 'completed'),
- url: 'http://localhost:7000/api/jobs?task_id=40',
- },
- data_chunk_size: 17,
- data_compressed_chunk_type: 'imageset',
- data_original_chunk_type: 'imageset',
- size: 4,
- image_quality: 70,
- data: 12,
- dimension: '2d',
- subset: '',
- organization: null,
- target_storage: null,
- source_storage: null
- },
- {
- url: 'http://localhost:7000/api/tasks/3',
- id: 3,
- guide_id: null,
- name: 'Test Task',
- size: 5002,
- mode: 'interpolation',
- owner: {
- url: 'http://localhost:7000/api/users/2',
- id: 2,
- username: 'bsekache',
- },
- assignee: null,
- bug_tracker: '',
- created_date: '2019-05-16T13:08:00.621747+03:00',
- updated_date: '2019-05-16T13:08:00.621797+03:00',
- overlap: 5,
- segment_size: 5000,
- dimension: '2d',
- data_compressed_chunk_type: 'imageset',
- data_chunk_size: 1,
- status: 'annotation',
- labels: { count: tasksDummyLabelsData[3].length, url: 'http://localhost:7000/api/labels?task_id=3' },
- jobs: {
- count: jobsDummyData.results.filter((job) => job.task_id === 3).length,
- completed: jobsDummyData.results.filter((job) => job.task_id === 3 && job.stage === 'acceptance' && job.state === 'completed'),
- url: 'http://localhost:7000/api/jobs?task_id=3',
- },
- image_quality: 50,
- },
- {
- url: 'http://localhost:7000/api/tasks/2',
- id: 2,
- guide_id: null,
- name: 'Video',
- size: 75,
- mode: 'interpolation',
- owner: {
- url: 'http://localhost:7000/api/users/1',
- id: 1,
- username: 'admin',
- },
- assignee: null,
- bug_tracker: '',
- project_id: 2,
- created_date: '2019-05-15T11:40:19.487999+03:00',
- updated_date: '2019-05-15T16:58:27.992785+03:00',
- overlap: 5,
- segment_size: 0,
- dimension: '2d',
- data_compressed_chunk_type: 'imageset',
- data_chunk_size: 1,
- status: 'annotation',
- labels: { count: projectsDummyLabelsData[2].length, url: 'http://localhost:7000/api/labels?task_id=2' },
- jobs: {
- count: jobsDummyData.results.filter((job) => job.task_id === 2).length,
- completed: jobsDummyData.results.filter((job) => job.task_id === 2 && job.stage === 'acceptance' && job.state === 'completed'),
- url: 'http://localhost:7000/api/jobs?task_id=2',
- },
- image_quality: 50,
- },
- {
- url: 'http://localhost:7000/api/tasks/1',
- id: 1,
- guide_id: null,
- name: 'Labels Set',
- size: 9,
- mode: 'annotation',
- owner: {
- url: 'http://localhost:7000/api/users/1',
- id: 1,
- username: 'admin',
- },
- assignee: null,
- bug_tracker: 'http://bugtracker.com/issue12345',
- created_date: '2019-05-13T15:35:29.871003+03:00',
- updated_date: '2019-05-15T11:20:55.770587+03:00',
- overlap: 0,
- segment_size: 0,
- dimension: '2d',
- data_compressed_chunk_type: 'imageset',
- data_chunk_size: 1,
- status: 'annotation',
- labels: { count: tasksDummyLabelsData[1].length, url: 'http://localhost:7000/api/labels?task_id=1' },
- jobs: {
- count: jobsDummyData.results.filter((job) => job.task_id === 1).length,
- completed: jobsDummyData.results.filter((job) => job.task_id === 1 && job.stage === 'acceptance' && job.state === 'completed'),
- url: 'http://localhost:7000/api/jobs?task_id=1',
- },
- image_quality: 95,
- },
- ],
-};
-
-jobsDummyData.results = jobsDummyData.results.map((job) => ({ ...job, ...initJobFromTaskProject(job.id, job.task_id, job.project_id) }));
-
-const taskAnnotationsDummyData = {
- 112: {
- version: 21,
- tags: [],
- shapes: [
- {
- type: 'rectangle',
- occluded: false,
- z_order: 1,
- points: [557.7890625, 276.2216796875, 907.1888732910156, 695.5014038085938],
- id: 15,
- frame: 0,
- label_id: 5,
- group: 0,
- attributes: [],
- },
- ],
- tracks: [
- {
- id: 15,
- frame: 0,
- label_id: 5,
- group: 0,
- shapes: [
- {
- type: 'rectangle',
- occluded: false,
- z_order: 13,
- points: [792.787109375, 16.5234375, 1171.1027526855469, 521.3458862304688],
- id: 22,
- frame: 0,
- outside: false,
- attributes: [],
- },
- ],
- attributes: [],
- },
- ],
- },
- 102: {
- version: 21,
- tags: [{
- id: 1,
- frame: 500,
- label_id: 22,
- group: 0,
- attributes: [{
- spec_id: 13,
- value: 'woman',
- }, {
- spec_id: 14,
- value: 'false',
- }],
- }],
- shapes: [{
- type: 'rectangle',
- occluded: false,
- z_order: 1,
- points: [557.7890625, 276.2216796875, 907.1888732910156, 695.5014038085938],
- id: 2,
- frame: 510,
- label_id: 21,
- group: 0,
- attributes: [],
- }, {
- type: 'polygon',
- occluded: false,
- z_order: 2,
- points: [0, 0, 500, 500, 1000, 0],
- id: 3,
- frame: 520,
- label_id: 23,
- group: 0,
- attributes: [{ spec_id: 15, value: 'some text for test' }],
- }],
- tracks: [
- {
- id: 4,
- frame: 550,
- label_id: 24,
- group: 0,
- shapes: [
- {
- type: 'rectangle',
- occluded: true,
- z_order: 2,
- points: [100, 100, 500, 500],
- id: 1,
- frame: 550,
- outside: false,
- attributes: [],
- },
- {
- type: 'rectangle',
- occluded: false,
- z_order: 2,
- points: [100, 100, 700, 300],
- id: 3,
- frame: 600,
- outside: false,
- attributes: [],
- },
- ],
- attributes: [],
- },
- ],
- },
- 101: {
- version: 21,
- tags: [],
- shapes: [],
- tracks: [
- {
- id: 25, // interpolation
- frame: 10,
- label_id: 19,
- group: 0,
- shapes: [
- {
- type: 'polygon',
- occluded: false,
- z_order: 2,
- points: [
- 377.64912280702083,
- 458.5473684210556,
- 383.82456140351314,
- 458.5473684210556,
- 406.98245614035477,
- 455.45964912281124,
- 431.6842105263204,
- 455.45964912281124,
- 457.92982456140817,
- 455.45964912281124,
- 482.6315789473738,
- 455.45964912281124,
- 508.87719298246157,
- 455.45964912281124,
- 535.1228070175493,
- 455.45964912281124,
- 559.8245614035113,
- 455.45964912281124,
- 587.6140350877249,
- 455.45964912281124,
- 620.0350877193014,
- 455.45964912281124,
- 640.1052631578968,
- 455.45964912281124,
- 664.8070175438625,
- 453.9157894736891,
- 692.5964912280724,
- 450.8280701754411,
- 721.9298245614082,
- 450.8280701754411,
- 743.5438596491258,
- 447.74035087719676,
- 769.7894736842136,
- 446.1964912280746,
- 796.0350877193014,
- 446.1964912280746,
- 823.8245614035113,
- 446.1964912280746,
- 846.9824561403548,
- 446.1964912280746,
- 876.3157894736869,
- 446.1964912280746,
- 905.6491228070226,
- 446.1964912280746,
- 931.8947368421104,
- 446.1964912280746,
- 959.6842105263204,
- 446.1964912280746,
- 987.4736842105303,
- 446.1964912280746,
- 1015.2631578947403,
- 446.1964912280746,
- 1039.964912280706,
- 446.1964912280746,
- 1066.2105263157937,
- 446.1964912280746,
- 1090.9122807017593,
- 446.1964912280746,
- 1115.614035087725,
- 446.1964912280746,
- 1138.7719298245647,
- 449.28421052631893,
- 1231.4000000000015,
- 413.8000000000011,
- 1180.4561403508815,
- 467.81052631579223,
- 1180.4561403508815,
- 494.05614035088,
- 1180.4561403508815,
- 520.3017543859678,
- 1180.4561403508815,
- 545.0035087719334,
- 1180.4561403508815,
- 571.2491228070212,
- 1180.4561403508815,
- 597.494736842109,
- 1180.4561403508815,
- 620.6526315789524,
- 1180.4561403508815,
- 649.9859649122845,
- 1180.4561403508815,
- 676.2315789473723,
- 1180.4561403508815,
- 699.3894736842158,
- 1180.4561403508815,
- 727.1789473684257,
- 1180.4561403508815,
- 747.2491228070212,
- 1180.4561403508815,
- 771.9508771929868,
- 1180.4561403508815,
- 802.8280701754411,
- 1180.4561403508815,
- 830.6175438596547,
- 1180.4561403508815,
- 853.7754385964945,
- 1180.4561403508815,
- 880.0210526315823,
- 1183.5438596491258,
- 901.6350877193036,
- 1183.5438596491258,
- 929.4245614035135,
- 1186.6315789473738,
- 952.5824561403533,
- 1188.175438596496,
- 975.7403508771968,
- 1188.175438596496,
- 1001.9859649122845,
- 1188.175438596496,
- 1023.6000000000022,
- 1188.175438596496,
- 1057.5649122807044,
- 1186.6315789473738,
- 1082.26666666667,
- 1186.6315789473738,
- 1108.5122807017578,
- 1186.6315789473738,
- 1133.2140350877235,
- 1175.82421875,
- 1154.828125,
- 1155.7543859649159,
- 1156.371929824567,
- 1132.5964912280724,
- 1154.828070175441,
- 1106.3508771929846,
- 1154.828070175441,
- 1078.5614035087747,
- 1154.828070175441,
- 1053.8596491228127,
- 1150.1964912280746,
- 1030.7017543859693,
- 1148.6526315789524,
- 1002.9122807017593,
- 1148.6526315789524,
- 982.8421052631602,
- 1148.6526315789524,
- 953.5087719298281,
- 1147.1087719298303,
- 922.6315789473738,
- 1147.1087719298303,
- 891.7543859649159,
- 1147.1087719298303,
- 868.5964912280724,
- 1147.1087719298303,
- 839.2631578947403,
- 1147.1087719298303,
- 816.1052631578968,
- 1147.1087719298303,
- 786.7719298245647,
- 1147.1087719298303,
- 760.5263157894769,
- 1147.1087719298303,
- 735.8245614035113,
- 1147.1087719298303,
- 708.0350877193014,
- 1142.47719298246,
- 684.8771929824616,
- 1140.933333333338,
- 658.6315789473738,
- 1140.933333333338,
- 633.9298245614082,
- 1140.933333333338,
- 607.6842105263204,
- 1139.3894736842158,
- 581.4385964912326,
- 1134.7578947368456,
- 559.8245614035113,
- 1133.2140350877235,
- 535.1228070175493,
- 1131.6701754386013,
- 505.7894736842136,
- 1131.6701754386013,
- 482.6315789473738,
- 1131.6701754386013,
- 454.8421052631602,
- 1130.1263157894791,
- 430.1403508771964,
- 1130.1263157894791,
- 405.4385964912326,
- 1130.1263157894791,
- 383.82421875,
- 1130.126953125,
- 382.28070175438916,
- 1113.143859649128,
- 380.736842105267,
- 1088.4421052631624,
- 380.736842105267,
- 1056.0210526315823,
- 380.736842105267,
- 1026.6877192982502,
- 379.1929824561448,
- 1005.0736842105289,
- 374.5614035087765,
- 978.8280701754411,
- 371.47368421053034,
- 949.494736842109,
- 371.47368421053034,
- 921.705263157899,
- 371.47368421053034,
- 897.0035087719334,
- 371.47368421053034,
- 866.1263157894791,
- 371.47368421053034,
- 842.9684210526357,
- 371.47368421053034,
- 810.5473684210556,
- 371.47368421053034,
- 778.1263157894791,
- 377.64912280702083,
- 751.8807017543913,
- 380.736842105267,
- 722.5473684210556,
- 385.3684210526353,
- 693.2140350877235,
- 385.3684210526353,
- 668.5122807017578,
- 386.9122807017575,
- 643.8105263157922,
- 388.45614035088147,
- 619.1087719298266,
- 388.45614035088147,
- 591.3192982456167,
- 388.45614035088147,
- 563.5298245614067,
- 388.45614035088147,
- 535.7403508771968,
- 388.45614035088147,
- 511.03859649123115,
- 386.9122807017575,
- 487.88070175439134,
- ],
- id: 382,
- frame: 10,
- outside: false,
- attributes: [
- {
- spec_id: 1,
- value: '__undefined__',
- },
- {
- spec_id: 5,
- value: 'non, initialized',
- },
- ],
- },
- {
- type: 'polygon',
- occluded: false,
- z_order: 2,
- points: [
- 502.701171875,
- 1093.07421875,
- 860.8771929824616,
- 443.10877192982844,
- 1462.9824561403548,
- 1120.8631578947425,
- ],
- id: 383,
- frame: 20,
- outside: false,
- attributes: [],
- },
- {
- type: 'polygon',
- occluded: false,
- z_order: 2,
- points: [
- 502.701171875,
- 1093.07421875,
- 860.8771929824616,
- 443.10877192982844,
- 1462.9824561403548,
- 1120.8631578947425,
- ],
- id: 384,
- frame: 22,
- outside: true,
- attributes: [],
- },
- ],
- attributes: [
- {
- spec_id: 2,
- value: '1',
- },
- {
- spec_id: 3,
- value: 'male',
- },
- {
- spec_id: 4,
- value: 'false',
- },
- ],
- },
- {
- id: 60,
- frame: 0,
- label_id: 19,
- group: 0,
- shapes: [
- {
- type: 'rectangle',
- occluded: false,
- z_order: 1,
- points: [425.58984375, 540.298828125, 755.9765625, 745.6328125],
- rotation: 0,
- id: 379,
- frame: 0,
- outside: false,
- attributes: [
- {
- spec_id: 5,
- value: 'non, initialized',
- },
- {
- spec_id: 1,
- value: '__undefined__',
- },
- ],
- },
- {
- type: 'rectangle',
- occluded: false,
- z_order: 1,
- points: [238.8000000000011, 498.6000000000022, 546.01171875, 660.720703125],
- rotation: 100,
- id: 380,
- frame: 10,
- outside: false,
- attributes: [],
- },
- {
- type: 'rectangle',
- occluded: false,
- z_order: 1,
- points: [13.3955078125, 447.650390625, 320.6072265624989, 609.7710937499978],
- rotation: 340,
- id: 381,
- frame: 20,
- outside: false,
- attributes: [],
- },
- ],
- attributes: [
- {
- spec_id: 2,
- value: '1',
- },
- {
- spec_id: 3,
- value: 'male',
- },
- {
- spec_id: 4,
- value: 'false',
- },
- ],
- },
-
- {
- id: 61,
- frame: 0,
- label_id: 19,
- group: 0,
- shapes: [
- {
- type: 'ellipse',
- occluded: false,
- z_order: 1,
- points: [500, 500, 800, 100],
- rotation: 0,
- id: 611,
- frame: 0,
- outside: false,
- attributes: [],
- },
- {
- type: 'ellipse',
- occluded: false,
- z_order: 1,
- points: [600, 600, 1000, 200],
- rotation: 0,
- id: 612,
- frame: 10,
- outside: false,
- attributes: [],
- },
- ],
- attributes: [],
- },
- ],
- },
- 100: {
- version: 16,
- tags: [],
- shapes: [
- {
- type: 'rectangle',
- occluded: false,
- z_order: 1,
- points: [387.91, 403.81, 595.14, 712.25],
- id: 108,
- frame: 0,
- label_id: 1001,
- group: 0,
- attributes: [],
- },
- {
- type: 'rectangle',
- occluded: false,
- z_order: 2,
- points: [783.12, 368.91, 990.35, 677.34],
- id: 109,
- frame: 0,
- label_id: 1001,
- group: 0,
- attributes: [],
- },
- {
- type: 'rectangle',
- occluded: false,
- z_order: 3,
- points: [1277.1, 239.99, 1484.33, 548.43],
- id: 110,
- frame: 0,
- label_id: 1001,
- group: 0,
- attributes: [],
- },
- {
- type: 'rectangle',
- occluded: false,
- z_order: 4,
- points: [1420.48, 713.49, 1627.71, 1021.92],
- id: 111,
- frame: 0,
- label_id: 1001,
- group: 0,
- attributes: [],
- },
- {
- type: 'rectangle',
- occluded: false,
- z_order: 5,
- points: [896.38, 659.27, 1103.61, 967.71],
- id: 112,
- frame: 0,
- label_id: 1001,
- group: 0,
- attributes: [],
- },
- {
- type: 'polygon',
- occluded: false,
- z_order: 6,
- points: [
- 449.36,
- 892.97,
- 449.36,
- 892.97,
- 468.63,
- 913.46,
- 495.14,
- 933.94,
- 527.67,
- 955.62,
- 562.61,
- 973.7,
- 589.12,
- 983.34,
- 613.21,
- 988.15,
- 632.49,
- 991.77,
- 656.59,
- 994.18,
- 686.71,
- 994.18,
- 733.69,
- 980.93,
- 772.25,
- 959.24,
- 809.6,
- 927.91,
- 837.31,
- 896.59,
- 851.77,
- 867.67,
- 861.41,
- 841.17,
- 862.61,
- 805.02,
- 840.92,
- 759.24,
- 802.37,
- 720.68,
- 777.07,
- 703.82,
- 750.56,
- 690.56,
- 726.47,
- 684.54,
- 698.75,
- 680.92,
- 681.89,
- 680.92,
- 656.59,
- 680.92,
- 633.69,
- 683.33,
- 608.39,
- 690.56,
- 578.27,
- 706.22,
- 548.15,
- 718.27,
- 518.03,
- 730.32,
- 486.71,
- 743.57,
- 458.99,
- 756.83,
- 434.9,
- 766.47,
- 408.39,
- 777.31,
- 381.89,
- 786.95,
- 354.17,
- 794.18,
- 331.28,
- 800.2,
- 295.14,
- 803.82,
- 283.09,
- 800.2,
- 267.43,
- 783.33,
- 255.38,
- 766.47,
- 232.49,
- 733.94,
- 220.44,
- 713.45,
- 212.0,
- 688.15,
- 208.39,
- 666.47,
- 210.8,
- 647.19,
- ],
- id: 113,
- frame: 0,
- label_id: 1001,
- group: 0,
- attributes: [],
- },
- {
- type: 'polygon',
- occluded: false,
- z_order: 7,
- points: [
- 1260.84,
- 344.81,
- 1260.84,
- 344.81,
- 1280.11,
- 365.29,
- 1306.62,
- 385.78,
- 1339.15,
- 407.46,
- 1374.09,
- 425.53,
- 1400.6,
- 435.17,
- 1424.69,
- 439.99,
- 1443.97,
- 443.61,
- 1468.07,
- 446.02,
- 1498.19,
- 446.02,
- 1545.18,
- 432.76,
- 1583.73,
- 411.08,
- 1621.08,
- 379.75,
- 1648.79,
- 348.43,
- 1663.25,
- 319.51,
- 1672.89,
- 293.0,
- 1674.09,
- 256.86,
- 1652.41,
- 211.08,
- 1613.85,
- 172.52,
- 1588.55,
- 155.65,
- 1562.04,
- 142.4,
- 1537.95,
- 136.38,
- 1510.24,
- 132.76,
- 1493.37,
- 132.76,
- 1468.07,
- 132.76,
- 1445.18,
- 135.17,
- 1419.87,
- 142.4,
- 1389.75,
- 158.06,
- 1359.63,
- 170.11,
- 1329.51,
- 182.16,
- 1298.19,
- 195.41,
- 1270.48,
- 208.67,
- 1246.38,
- 218.3,
- 1219.87,
- 229.15,
- 1193.37,
- 238.79,
- 1165.66,
- 246.02,
- 1142.76,
- 252.04,
- 1106.62,
- 255.65,
- 1094.57,
- 252.04,
- 1078.91,
- 235.17,
- 1066.86,
- 218.3,
- 1043.97,
- 185.77,
- 1031.92,
- 165.29,
- 1023.49,
- 139.99,
- 1019.87,
- 118.3,
- 1022.28,
- 99.03,
- ],
- id: 114,
- frame: 0,
- label_id: 1001,
- group: 0,
- attributes: [],
- },
- {
- type: 'polygon',
- occluded: false,
- z_order: 8,
- points: [1113.21, 723.09, 1322.86, 1018.28, 1562.62, 873.7, 1587.92, 641.16, 1267.43, 530.32],
- id: 115,
- frame: 0,
- label_id: 1001,
- group: 0,
- attributes: [],
- },
- {
- type: 'polyline',
- occluded: false,
- z_order: 9,
- points: [
- 268.63,
- 359.23,
- 277.07,
- 344.78,
- 292.73,
- 325.5,
- 312.01,
- 311.04,
- 331.28,
- 300.2,
- 349.36,
- 295.38,
- 375.86,
- 290.56,
- 387.91,
- 290.56,
- 418.03,
- 290.56,
- 439.72,
- 292.97,
- 457.79,
- 295.38,
- 492.73,
- 301.4,
- 525.26,
- 306.22,
- 534.9,
- 306.22,
- 571.04,
- 296.58,
- 591.53,
- 284.54,
- 610.8,
- 272.49,
- 640.92,
- 253.21,
- 655.38,
- 238.75,
- ],
- id: 116,
- frame: 0,
- label_id: 1001,
- group: 0,
- attributes: [],
- },
- {
- type: 'points',
- occluded: false,
- z_order: 10,
- points: [
- 1089.12,
- 505.02,
- 1178.28,
- 543.57,
- 1074.66,
- 602.61,
- 1109.6,
- 680.92,
- 1172.25,
- 631.53,
- 1036.11,
- 576.1,
- 1057.79,
- 445.98,
- 1185.51,
- 400.2,
- ],
- id: 117,
- frame: 0,
- label_id: 1001,
- group: 0,
- attributes: [],
- },
- {
- type: 'rectangle',
- occluded: false,
- z_order: 11,
- points: [1565.03, 555.62, 1787.92, 765.26],
- id: 118,
- frame: 0,
- label_id: 1001,
- group: 0,
- attributes: [],
- },
- {
- type: 'rectangle',
- occluded: false,
- z_order: 0,
- points: [0.0, 0.0, 100.0, 100.0],
- id: 119,
- frame: 1,
- label_id: 1001,
- group: 0,
- attributes: [],
- },
- {
- type: 'polygon',
- occluded: false,
- z_order: 0,
- points: [0.0, 0.0, 200.0, 0.0, 100.0, 200.0],
- id: 120,
- frame: 1,
- label_id: 1002,
- group: 0,
- attributes: [],
- },
- {
- type: 'rectangle',
- occluded: false,
- z_order: 11,
- points: [1211.6, 500.48, 1434.49, 710.12],
- id: 121,
- frame: 1,
- label_id: 1001,
- group: 0,
- attributes: [],
- },
- {
- type: 'rectangle',
- occluded: true,
- z_order: 0,
- points: [0.0, 0.0, 200.0, 200.0],
- id: 122,
- frame: 1,
- label_id: 1002,
- group: 0,
- attributes: [],
- },
- {
- type: 'rectangle',
- occluded: false,
- z_order: 11,
- points: [1211.6, 500.48, 1434.49, 710.12],
- id: 123,
- frame: 2,
- label_id: 1001,
- group: 0,
- attributes: [],
- },
- {
- type: 'rectangle',
- occluded: true,
- z_order: 0,
- points: [0.0, 0.0, 200.0, 200.0],
- id: 124,
- frame: 2,
- label_id: 1002,
- group: 0,
- attributes: [],
- },
- {
- type: 'rectangle',
- occluded: false,
- z_order: 11,
- points: [1211.6, 500.48, 1434.49, 710.12],
- id: 125,
- frame: 3,
- label_id: 1001,
- group: 0,
- attributes: [],
- },
- {
- type: 'rectangle',
- occluded: true,
- z_order: 0,
- points: [0.0, 0.0, 200.0, 200.0],
- id: 126,
- frame: 3,
- label_id: 1002,
- group: 0,
- attributes: [],
- },
- {
- type: 'rectangle',
- occluded: false,
- z_order: 11,
- points: [1211.6, 500.48, 1434.49, 710.12],
- id: 127,
- frame: 4,
- label_id: 1001,
- group: 0,
- attributes: [],
- },
- {
- type: 'rectangle',
- occluded: true,
- z_order: 0,
- points: [0.0, 0.0, 200.0, 200.0],
- id: 128,
- frame: 4,
- label_id: 1002,
- group: 0,
- attributes: [],
- },
- {
- type: 'rectangle',
- occluded: false,
- z_order: 11,
- points: [1211.6, 500.48, 1434.49, 710.12],
- id: 129,
- frame: 5,
- label_id: 1001,
- group: 0,
- attributes: [],
- },
- {
- type: 'rectangle',
- occluded: true,
- z_order: 0,
- points: [0.0, 0.0, 200.0, 200.0],
- id: 130,
- frame: 5,
- label_id: 1002,
- group: 0,
- attributes: [],
- },
- {
- type: 'rectangle',
- occluded: false,
- z_order: 11,
- points: [1211.6, 500.48, 1434.49, 710.12],
- id: 131,
- frame: 6,
- label_id: 1001,
- group: 0,
- attributes: [],
- },
- {
- type: 'rectangle',
- occluded: true,
- z_order: 0,
- points: [0.0, 0.0, 200.0, 200.0],
- id: 132,
- frame: 6,
- label_id: 1002,
- group: 0,
- attributes: [],
- },
- {
- type: 'rectangle',
- occluded: false,
- z_order: 11,
- points: [1211.6, 500.48, 1434.49, 710.12],
- id: 133,
- frame: 7,
- label_id: 1001,
- group: 0,
- attributes: [],
- },
- {
- type: 'rectangle',
- occluded: true,
- z_order: 0,
- points: [0.0, 0.0, 200.0, 200.0],
- id: 134,
- frame: 7,
- label_id: 1002,
- group: 0,
- attributes: [],
- },
- {
- type: 'rectangle',
- occluded: false,
- z_order: 11,
- points: [1211.6, 500.48, 1434.49, 710.12],
- id: 135,
- frame: 8,
- label_id: 1001,
- group: 0,
- attributes: [],
- },
- {
- type: 'rectangle',
- occluded: true,
- z_order: 0,
- points: [0.0, 0.0, 200.0, 200.0],
- id: 136,
- frame: 8,
- label_id: 1002,
- group: 0,
- attributes: [],
- },
- {
- type: 'cuboid',
- occluded: false,
- z_order: 12,
- points: [
- 37.037109375,
- 834.1583663313359,
- 37.037109375,
- 1005.6748046875,
- 500.1052119006872,
- 850.3421313142153,
- 500.1052119006872,
- 1021.9585696703798,
- 600.6842465753452,
- 763.1514501284273,
- 600.6842465753452,
- 934.6678884845915,
- 137.82724152601259,
- 747.0278858154179,
- 137.82724152601259,
- 918.4444406426646,
- ],
- id: 137,
- frame: 0,
- label_id: 1001,
- group: 0,
- attributes: [],
- },
- ],
- tracks: [],
- },
- 40: {
- version: 0,
- tags: [],
- shapes: [{
- type: 'skeleton',
- occluded: false,
- outside: false,
- z_order: 0,
- rotation: 0.0,
- points: [],
- id: 23,
- frame: 0,
- label_id: 54,
- group: 0,
- source: 'manual',
- attributes: [],
- elements: [{
- type: 'points',
- occluded: false,
- outside: false,
- z_order: 0,
- rotation: 0.0,
- points: [
- 908.0654296875,
- 768.8268729552019
- ],
- id: 24,
- frame: 0,
- label_id: 55,
- group: 0,
- source: 'manual',
- attributes: []
- }, {
- type: "points",
- occluded: false,
- outside: false,
- z_order: 0,
- rotation: 0.0,
- points: [
- 1230.1533057030483,
- 523.7802734375
- ],
- id: 25,
- frame: 0,
- label_id: 56,
- group: 0,
- source: 'manual',
- attributes: []
- }, {
- type: 'points',
- occluded: false,
- outside: false,
- z_order: 0,
- rotation: 0.0,
- points: [
- 1525.9969940892624,
- 772.6557444966547
- ],
- id: 26,
- frame: 0,
- label_id: 57,
- group: 0,
- source: 'manual',
- attributes: []
- }, {
- type: 'points',
- occluded: false,
- outside: false,
- z_order: 0,
- rotation: 0.0,
- points: [
- 1468.7369236136856,
- 1270.4066429432623
- ],
- id: 27,
- frame: 0,
- label_id: 58,
- group: 0,
- source: 'manual',
- attributes: []
- }, {
- type: 'points',
- occluded: false,
- outside: false,
- z_order: 0,
- rotation: 0.0,
- points: [
- 989.1838401839595,
- 1258.9201156622657
- ],
- id: 28,
- frame: 0,
- label_id: 59,
- group: 0,
- source: 'manual',
- attributes: []
- }]
- }],
- tracks: [{
- id: 1,
- frame: 0,
- label_id: 54,
- group: 0,
- source: 'manual',
- shapes: [{
- type: 'skeleton',
- occluded: false,
- outside: false,
- z_order: 0,
- rotation: 0.0,
- points: [],
- id: 1,
- frame: 0,
- attributes: []
- }],
- attributes: [],
- elements: [{
- id: 2,
- frame: 0,
- label_id: 55,
- group: 0,
- source: 'manual',
- shapes: [{
- type: 'points',
- occluded: false,
- outside: false,
- z_order: 0,
- rotation: 0.0,
- points: [
- 88.4140625,
- 332.85145482411826
- ],
- id: 2,
- frame: 0,
- attributes: []
- }],
- attributes: []
- }, {
- id: 3,
- frame: 0,
- label_id: 56,
- group: 0,
- source: 'manual',
- shapes: [{
- type: 'points',
- occluded: false,
- outside: false,
- z_order: 0,
- rotation: 0.0,
- points: [
- 437.3386217629577,
- 96.447265625
- ],
- id: 3,
- frame: 0,
- attributes: []
- }],
- attributes: []
- }, {
- id: 4,
- frame: 0,
- label_id: 57,
- group: 0,
- source: 'manual',
- shapes: [{
- type: 'points',
- occluded: false,
- outside: false,
- z_order: 0,
- rotation: 0.0,
- points: [
- 757.8323014937105,
- 336.54528805456357
- ],
- id: 4,
- frame: 0,
- attributes: []
- }],
- attributes: []
- }, {
- id: 5,
- frame: 0,
- label_id: 58,
- group: 0,
- source: 'manual',
- shapes: [{
- type: 'points',
- occluded: false,
- outside: false,
- z_order: 0,
- rotation: 0.0,
- points: [
- 695.8012648051717,
- 816.7412907822327
- ],
- id: 5,
- frame: 0,
- attributes: []
- }],
- attributes: []
- }, {
- id: 6,
- frame: 0,
- label_id: 59,
- group: 0,
- source: 'manual',
- shapes: [{
- type: 'points',
- occluded: false,
- outside: false,
- z_order: 0,
- rotation: 0.0,
- points: [
- 176.29133990867558,
- 805.659875353811
- ],
- id: 6,
- frame: 0,
- attributes: []
- }],
- attributes: []
- }]
- }]
- }
-};
-
-const jobAnnotationsDummyData = JSON.parse(JSON.stringify(taskAnnotationsDummyData));
-
-const frameMetaDummyData = {
- 1: {
- chunk_size: 36,
- size: 9,
- image_quality: 95,
- start_frame: 0,
- stop_frame: 8,
- frame_filter: '',
- deleted_frames: [],
- included_frames: null,
- frames: [
- {
- width: 1920,
- height: 1080,
- },
- {
- width: 1600,
- height: 1143,
- },
- {
- width: 1600,
- height: 859,
- },
- {
- width: 3840,
- height: 2160,
- },
- {
- width: 2560,
- height: 1920,
- },
- {
- width: 1920,
- height: 1080,
- },
- {
- width: 1920,
- height: 1080,
- },
- {
- width: 700,
- height: 453,
- },
- {
- width: 1920,
- height: 1200,
- },
- ],
- },
- 2: {
- chunk_size: 36,
- size: 75,
- image_quality: 50,
- start_frame: 0,
- stop_frame: 74,
- frame_filter: '',
- deleted_frames: [],
- included_frames: null,
- frames: [
- {
- width: 1920,
- height: 1080,
- },
- ],
- },
- 3: {
- chunk_size: 36,
- size: 5002,
- image_quality: 50,
- start_frame: 0,
- stop_frame: 4999,
- frame_filter: '',
- deleted_frames: [],
- included_frames: null,
- frames: [
- {
- width: 1888,
- height: 1408,
- },
- ],
- },
- 4: {
- chunk_size: 36,
- size: 5002,
- image_quality: 50,
- start_frame: 4995,
- stop_frame: 5001,
- frame_filter: '',
- deleted_frames: [],
- included_frames: null,
- frames: [
- {
- width: 1888,
- height: 1408,
- },
- ],
- },
- 40: {
- chunk_size: 17,
- size: 4,
- image_quality: 70,
- start_frame: 0,
- stop_frame: 3,
- frame_filter: '',
- frames: [{
- width: 2560,
- height: 1703,
- name: '1598296101_1033667.jpg',
- related_files: 0
- }, {
- width: 1600,
- height: 1200,
- name: '30fdce7f27b9c7b1d50108d7c16d23ef.jpg',
- related_files: 0
- }, {
- width: 2880,
- height: 1800,
- name: '567362-ily-comedy-drama-1finding-3.jpg',
- related_files: 0
- }, {
- width: 1920,
- height: 1080,
- name: '730443-under-the-sea-wallpapers-1920x1080-windows-10.jpg',
- related_files: 0
- }],
- deleted_frames: [],
- included_frames: null,
- },
- 100: {
- chunk_size: 36,
- size: 9,
- image_quality: 50,
- start_frame: 0,
- stop_frame: 8,
- frame_filter: '',
- deleted_frames: [7, 8],
- included_frames: null,
- frames: [
- {
- width: 1920,
- height: 1080,
- },
- {
- width: 1600,
- height: 1143,
- },
- {
- width: 1600,
- height: 859,
- },
- {
- width: 3840,
- height: 2160,
- },
- {
- width: 2560,
- height: 1920,
- },
- {
- width: 1920,
- height: 1080,
- },
- {
- width: 1920,
- height: 1080,
- },
- {
- width: 700,
- height: 453,
- },
- {
- width: 1920,
- height: 1200,
- },
- ],
- },
- 101: {
- chunk_size: 36,
- size: 5002,
- image_quality: 50,
- start_frame: 0,
- stop_frame: 499,
- frame_filter: '',
- deleted_frames: [],
- frames: [
- {
- width: 1888,
- height: 1408,
- },
- ],
- },
- 102: {
- chunk_size: 36,
- size: 5002,
- image_quality: 50,
- start_frame: 495,
- stop_frame: 994,
- frame_filter: '',
- deleted_frames: [],
- included_frames: null,
- frames: [
- {
- width: 1888,
- height: 1408,
- },
- ],
- },
- 103: {
- chunk_size: 36,
- size: 5002,
- image_quality: 50,
- start_frame: 990,
- stop_frame: 1489,
- frame_filter: '',
- deleted_frames: [],
- included_frames: null,
- frames: [
- {
- width: 1888,
- height: 1408,
- },
- ],
- },
- 104: {
- chunk_size: 36,
- size: 5002,
- image_quality: 50,
- start_frame: 1485,
- stop_frame: 1984,
- frame_filter: '',
- deleted_frames: [],
- frames: [
- {
- width: 1888,
- height: 1408,
- },
- ],
- },
- 105: {
- chunk_size: 36,
- size: 5002,
- image_quality: 50,
- start_frame: 1980,
- stop_frame: 2479,
- frame_filter: '',
- deleted_frames: [],
- included_frames: null,
- frames: [
- {
- width: 1888,
- height: 1408,
- },
- ],
- },
- 106: {
- chunk_size: 36,
- size: 5002,
- image_quality: 50,
- start_frame: 2475,
- stop_frame: 2974,
- frame_filter: '',
- deleted_frames: [],
- included_frames: null,
- frames: [
- {
- width: 1888,
- height: 1408,
- },
- ],
- },
- 107: {
- chunk_size: 36,
- size: 5002,
- image_quality: 50,
- start_frame: 2970,
- stop_frame: 3469,
- frame_filter: '',
- deleted_frames: [],
- included_frames: null,
- frames: [
- {
- width: 1888,
- height: 1408,
- },
- ],
- },
- 108: {
- chunk_size: 36,
- size: 5002,
- image_quality: 50,
- start_frame: 3465,
- stop_frame: 3964,
- frame_filter: '',
- deleted_frames: [],
- included_frames: null,
- frames: [
- {
- width: 1888,
- height: 1408,
- },
- ],
- },
- 109: {
- chunk_size: 36,
- size: 5002,
- image_quality: 50,
- start_frame: 3960,
- stop_frame: 4459,
- frame_filter: '',
- deleted_frames: [],
- included_frames: null,
- frames: [
- {
- width: 1888,
- height: 1408,
- },
- ],
- },
- 110: {
- chunk_size: 36,
- size: 5002,
- image_quality: 50,
- start_frame: 4455,
- stop_frame: 4954,
- frame_filter: '',
- deleted_frames: [],
- included_frames: null,
- frames: [
- {
- width: 1888,
- height: 1408,
- },
- ],
- },
- 111: {
- chunk_size: 36,
- size: 5002,
- image_quality: 50,
- start_frame: 4950,
- stop_frame: 5001,
- frame_filter: '',
- deleted_frames: [],
- included_frames: null,
- frames: [
- {
- width: 1888,
- height: 1408,
- },
- ],
- },
- 112: {
- chunk_size: 36,
- size: 1,
- image_quality: 50,
- start_frame: 0,
- stop_frame: 0,
- frame_filter: '',
- deleted_frames: [],
- included_frames: null,
- frames: [
- {
- width: 1920,
- height: 1080,
- },
- ],
- },
-};
-
-const cloudStoragesDummyData = {
- count: 3,
- next: null,
- previous: null,
- results: [
- {
- id: 3,
- owner: {
- url: 'http://localhost:7000/api/users/1',
- id: 1,
- username: 'maya',
- first_name: '',
- last_name: ''
- },
- manifests: [
- 'manifest.jsonl'
- ],
- provider_type: 'GOOGLE_CLOUD_STORAGE',
- resource: 'gcsbucket',
- display_name: 'Demo GCS',
- created_date: '2021-09-01T09:29:47.094244Z',
- updated_date: '2021-09-01T09:29:47.103264Z',
- credentials_type: 'KEY_FILE_PATH',
- specific_attributes: '',
- description: 'It is first google cloud storage'
- },
- {
- id: 2,
- owner: {
- url: 'http://localhost:7000/api/users/1',
- id: 1,
- username: 'maya',
- first_name: '',
- last_name: ''
- },
- manifests: [
- 'manifest.jsonl'
- ],
- provider_type: 'AZURE_CONTAINER',
- resource: 'container',
- display_name: 'Demonstration container',
- created_date: '2021-09-01T09:29:47.094244Z',
- updated_date: '2021-09-01T09:29:47.103264Z',
- credentials_type: 'ACCOUNT_NAME_TOKEN_PAIR',
- specific_attributes: '',
- description: 'It is first container'
- },
- {
- id: 1,
- owner: {
- url: 'http://localhost:7000/api/users/1',
- id: 1,
- username: 'maya',
- first_name: '',
- last_name: ''
- },
- manifests: [
- 'manifest.jsonl'
- ],
- provider_type: 'AWS_S3_BUCKET',
- resource: 'bucket',
- display_name: 'Demonstration bucket',
- created_date: '2021-08-31T09:03:09.350817Z',
- updated_date: '2021-08-31T15:16:21.394773Z',
- credentials_type: 'KEY_SECRET_KEY_PAIR',
- specific_attributes: '',
- description: 'It is first bucket'
- }
- ]
-};
-
-const webhooksDummyData = {
- count: 3,
- next: null,
- previous: null,
- results: [
- {
- id: 1,
- url: "http://localhost:7000/api/webhooks/1",
- target_url: "https://localhost:3001/project/hook",
- description: "Project webhook",
- type: "project",
- content_type: "application/json",
- is_active: true,
- enable_ssl: true,
- created_date: "2022-09-23T06:29:12.337276Z",
- updated_date: "2022-09-23T06:29:12.337316Z",
- owner: {
- url: "http://localhost:7000/api/users/1",
- id: 1,
- username: "kirill",
- first_name: "",
- last_name: ""
- },
- project: 1,
- organization: 1,
- events: [
- "create:comment",
- "create:issue",
- "create:task",
- "delete:comment",
- "delete:issue",
- "delete:task",
- "update:comment",
- "update:job",
- "update:project",
- "update:task"
- ],
- last_status: "Failed to connect to target url",
- last_delivery_date: "2022-09-23T06:28:48.313010Z"
- },
- {
- id: 2,
- url: "http://localhost:7000/api/webhooks/2",
- target_url: "https://localhost:3001/example/route",
- description: "Second webhook",
- type: "organization",
- content_type: "application/json",
- is_active: true,
- enable_ssl: true,
- created_date: "2022-09-23T06:28:32.430437Z",
- updated_date: "2022-09-23T06:28:32.430474Z",
- owner: {
- url: "http://localhost:7000/api/users/1",
- id: 1,
- username: "kirill",
- first_name: "",
- last_name: ""
- },
- project: 1,
- organization: 1,
- events: [
- "create:project",
- "create:task",
- "delete:project",
- "delete:task",
- "update:job",
- "update:project",
- "update:task"
- ],
- last_status: "200",
- last_delivery_date: "2022-09-23T06:28:48.313010Z"
- },
- {
- id: 3,
- url: "http://localhost:7000/api/webhooks/3",
- target_url: "https://localhost:3001/example1",
- description: "Example webhook",
- type: "organization",
- content_type: "application/json",
- is_active: true,
- enable_ssl: true,
- created_date: "2022-09-23T06:27:52.888204Z",
- updated_date: "2022-09-23T06:27:52.888245Z",
- owner: {
- url: "http://localhost:7000/api/users/1",
- id: 1,
- username: "kirill",
- first_name: "",
- last_name: ""
- },
- project: 1,
- organization: 1,
- events: [
- "create:comment",
- "create:invitation",
- "create:issue",
- "create:project",
- "create:task",
- "delete:comment",
- "delete:invitation",
- "delete:issue",
- "delete:membership",
- "delete:project",
- "delete:task",
- "update:comment",
- "update:invitation",
- "update:job",
- "update:membership",
- "update:organization",
- "update:project",
- "update:task"
- ],
- last_status: "200",
- last_delivery_date: "2022-09-23T06:28:48.283962Z"
- }
- ]
-};
-
-const webhooksEventsDummyData = {
- project: {
- webhook_type: "project",
- events: [
- "create:comment",
- "create:issue",
- "create:task",
- "delete:comment",
- "delete:issue",
- "delete:task",
- "update:comment",
- "update:job",
- "update:project",
- "update:task"
- ]
- },
- organization: {
- webhook_type: "organization",
- events: [
- "create:comment",
- "create:invitation",
- "create:issue",
- "create:project",
- "create:task",
- "delete:comment",
- "delete:invitation",
- "delete:issue",
- "delete:membership",
- "delete:project",
- "delete:task",
- "update:comment",
- "update:invitation",
- "update:job",
- "update:membership",
- "update:organization",
- "update:project",
- "update:task"
- ]
- },
-}
-
-const requestsDummyData = {
- count: 1,
- next: null,
- previous: null,
- results: [
- {
- status: "finished",
- message: "",
- id: "create:task-1",
- operation: {
- type: "create:task",
- target: "task",
- project_id: null,
- task_id: 1,
- job_id: null,
- format: null,
- name: "create:task-1"
- },
- percent: 0,
- enqueue_date: "2024-04-26T09:22:43.824811Z",
- start_date: "2024-04-26T09:22:43.827597Z",
- finished_date: "2024-04-26T09:22:43.884098Z",
- expire_date: "2024-04-26T09:31:03.884098",
- owner: {
- id: 1,
- username: "admin",
- },
- result_url: null,
- }
- ]
-}
-
-module.exports = {
- tasksDummyData,
- tasksDummyLabelsData,
- projectsDummyData,
- projectsDummyLabelsData,
- aboutDummyData,
- shareDummyData,
- usersDummyData,
- taskAnnotationsDummyData,
- jobAnnotationsDummyData,
- frameMetaDummyData,
- formatsDummyData,
- cloudStoragesDummyData,
- webhooksDummyData,
- webhooksEventsDummyData,
- jobsDummyData,
- requestsDummyData,
-};
diff --git a/cvat-core/tests/mocks/server-proxy.mock.cjs b/cvat-core/tests/mocks/server-proxy.mock.cjs
deleted file mode 100644
index 74df9ab193f1..000000000000
--- a/cvat-core/tests/mocks/server-proxy.mock.cjs
+++ /dev/null
@@ -1,719 +0,0 @@
-// Copyright (C) 2020-2022 Intel Corporation
-// Copyright (C) CVAT.ai Corporation
-//
-// SPDX-License-Identifier: MIT
-
-const {
- tasksDummyData,
- tasksDummyLabelsData,
- projectsDummyData,
- projectsDummyLabelsData,
- aboutDummyData,
- formatsDummyData,
- shareDummyData,
- usersDummyData,
- taskAnnotationsDummyData,
- jobAnnotationsDummyData,
- frameMetaDummyData,
- cloudStoragesDummyData,
- webhooksDummyData,
- webhooksEventsDummyData,
- jobsDummyData,
- requestsDummyData,
-} = require('./dummy-data.mock.cjs');
-
-function QueryStringToJSON(query, ignoreList = []) {
- const pairs = [...new URLSearchParams(query).entries()];
-
- const result = {};
- for (const pair of pairs) {
- const [key, value] = pair;
- if (!ignoreList.includes(key)) {
- if (['id'].includes(key)) {
- result[key] = +value;
- } else {
- result[key] = value;
- }
- }
- }
-
- return JSON.parse(JSON.stringify(result));
-}
-
-class ServerProxy {
- constructor() {
- async function about() {
- return JSON.parse(JSON.stringify(aboutDummyData));
- }
-
- async function share(directory) {
- let position = shareDummyData;
-
- // Emulation of internal directories
- if (directory.length > 1) {
- const components = directory.split('/');
-
- for (const component of components) {
- const idx = position.map((x) => x.name).indexOf(component);
- if (idx !== -1 && 'children' in position[idx]) {
- position = position[idx].children;
- } else {
- throw new window.cvat.exceptions.ServerError(`${component} is not a valid directory`, 400);
- }
- }
- }
-
- return JSON.parse(JSON.stringify(position));
- }
-
- async function formats() {
- return JSON.parse(JSON.stringify(formatsDummyData));
- }
-
- async function exception() {
- return null;
- }
-
- async function login() {
- return null;
- }
-
- async function logout() {
- return null;
- }
-
- async function getProjects(filter = '') {
- const queries = QueryStringToJSON(filter);
- const result = projectsDummyData.results.filter((x) => {
- for (const key in queries) {
- if (Object.prototype.hasOwnProperty.call(queries, key)) {
- // TODO: Particular match for some fields is not checked
- if (queries[key] !== x[key]) {
- return false;
- }
- }
- }
-
- return true;
- });
-
- result.count = result.length;
- return result;
- }
-
- async function saveProject(id, projectData) {
- const object = projectsDummyData.results.filter((project) => project.id === id)[0];
- for (const prop in projectData) {
- if (
- Object.prototype.hasOwnProperty.call(projectData, prop) &&
- Object.prototype.hasOwnProperty.call(object, prop)
- ) {
- if (prop === 'labels') {
- const labels = projectsDummyLabelsData[id];
- // only add new labels here
- const maxId = Math.max(0, ...labels.map((label) => label.id));
- const newLabels = [...labels, ...projectData.labels.map((label, index) => (
- { ...label, id: maxId + index + 1 }
- ))];
-
- projectsDummyLabelsData[object.id] = newLabels;
- } else {
- object[prop] = projectData[prop];
- }
- }
- }
-
- return (await getProjects({ id }))[0];
- }
-
- async function createProject(projectData) {
- const id = Math.max(...projectsDummyData.results.map((el) => el.id)) + 1;
- projectsDummyData.results.push({
- id,
- url: `http://localhost:7000/api/projects/${id}`,
- name: projectData.name,
- owner: 1,
- assignee: null,
- bug_tracker: projectData.bug_tracker,
- created_date: '2019-05-16T13:08:00.621747+03:00',
- updated_date: '2019-05-16T13:08:00.621797+03:00',
- status: 'annotation',
- tasks: [],
- labels: JSON.parse(JSON.stringify(projectData.labels)),
- });
-
- const createdProject = await getProjects(`?id=${id}`);
- return createdProject[0];
- }
-
- async function deleteProject(id) {
- const projects = projectsDummyData.results;
- const project = projects.filter((el) => el.id === id)[0];
- if (project) {
- projects.splice(projects.indexOf(project), 1);
- }
- }
-
- async function getTasks(filter = '') {
- // Emulation of a query filter
- const queries = QueryStringToJSON(filter);
- const result = tasksDummyData.results.filter((x) => {
- for (const key in queries) {
- if (Object.prototype.hasOwnProperty.call(queries, key)) {
- // TODO: Particular match for some fields is not checked
- if (queries[key] !== x[key]) {
- return false;
- }
- }
- }
-
- return true;
- });
-
- result.count = result.length;
- return result;
- }
-
- async function saveTask(id, taskData) {
- const object = tasksDummyData.results.filter((task) => task.id === id)[0];
- for (const prop in taskData) {
- if (
- Object.prototype.hasOwnProperty.call(taskData, prop) &&
- Object.prototype.hasOwnProperty.call(object, prop)
- ) {
- if (prop === 'labels') {
- const labels = (projectsDummyLabelsData[object.project_id] || tasksDummyLabelsData[object.id])
- // only add new labels here
- const maxId = Math.max(0, ...labels.map((label) => label.id));
- const newLabels = [...labels, ...taskData.labels.map((label, index) => (
- { ...label, id: maxId + index + 1 }
- ))];
-
- if (Number.isInteger(object.project_id)) {
- projectsDummyLabelsData[object.project_id] = newLabels;
- } else {
- tasksDummyLabelsData[object.id] = newLabels;
- }
- } else {
- object[prop] = taskData[prop];
- }
- }
- }
-
- const [updatedTask] = await getTasks({ id });
- return updatedTask;
- }
-
- async function createTask(taskData) {
- const id = Math.max(...tasksDummyData.results.map((el) => el.id)) + 1;
- tasksDummyData.results.push({
- id,
- url: `http://localhost:7000/api/tasks/${id}`,
- name: taskData.name,
- project_id: taskData.project_id || null,
- size: 5000,
- mode: 'interpolation',
- owner: {
- id: 2,
- username: 'bsekache',
- },
- assignee: null,
- bug_tracker: taskData.bug_tracker,
- created_date: '2019-05-16T13:08:00.621747+03:00',
- updated_date: '2019-05-16T13:08:00.621797+03:00',
- overlap: taskData.overlap ? taskData.overlap : 5,
- segment_size: taskData.segment_size ? taskData.segment_size : 5000,
- flipped: false,
- status: 'annotation',
- image_quality: taskData.image_quality,
- labels: JSON.parse(JSON.stringify(taskData.labels)),
- });
-
- return { taskID: id, rqID: `create:task-${id}` };
- }
-
- async function deleteTask(id) {
- const tasks = tasksDummyData.results;
- const task = tasks.filter((el) => el.id === id)[0];
- if (task) {
- tasks.splice(tasks.indexOf(task), 1);
- }
- }
-
- async function getLabels(filter) {
- const { task_id, job_id, project_id } = filter;
- if (Number.isInteger(task_id)) {
- const object = tasksDummyData.results.find((task) => task.id === task_id);
- if (Number.isInteger(object.project_id)) {
- return await getLabels({ project_id: object.project_id });
- }
-
- const results = tasksDummyLabelsData[task_id] || [];
- return { results, count: results.length };
- }
-
- if (Number.isInteger(project_id)) {
- const results = projectsDummyLabelsData[project_id] || [];
- return { results, count: results.length };
- }
-
- if (Number.isInteger(job_id)) {
- const job = jobsDummyData.results.find((job) => job.id === job_id);
- const project = job && Number.isInteger(job.project_id) ? projectsDummyData.results[job.project_id] : undefined;
- const task = job ? tasksDummyData.results.find((task) => task.id === job.task_id) : undefined;
-
- if (project) {
- return await getLabels({ project_id: project.id });
- }
-
- if (task) {
- return await getLabels({ task_id: task.id });
- }
- }
-
- return { results: [], count: 0 };
- }
-
- async function deleteLabel(id) {
- const containers = [tasksDummyLabelsData, projectsDummyLabelsData];
- for (const container of containers) {
- for (const instanceID in container) {
- const index = container[instanceID].findIndex((label) => label.id === id);
- if (index !== -1) {
- container[instanceID].splice(index, 1);
- }
- }
- }
- }
-
- async function updateLabel(body) {
- return body;
- }
-
- async function getJobs(filter = {}) {
- if (Number.isInteger(filter.id)) {
- // A specific object is requested
- const results = jobsDummyData.results.filter((job) => job.id === filter.id);
- return Object.assign(results, { count: results.length });
- }
-
- function makeJsonFilter(jsonExpr) {
- if (!jsonExpr) {
- return (job) => true;
- }
-
- // This function only covers test cases. Extend it if needed.
- function escapeRegExp(string) {
- return string.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
- }
- let pattern = JSON.stringify({
- and: [{ '==': [{ var: 'task_id' }, ''] }]
- });
- pattern = escapeRegExp(pattern).replace('""', '(\\d+)');
- const matches = jsonExpr.match(pattern);
- const task_id = Number.parseInt(matches[1]);
- return (job) => job.task_id === task_id;
- };
-
- let jobs = [];
- if (Number.isInteger(filter.id)) {
- jobs = jobsDummyData.results.filter((job) => job.id === filter.id);
- } else if (Number.isInteger(filter.task_id)) {
- jobs = jobsDummyData.results.filter((job) => job.task_id === filter.task_id);
- } else {
- jobs = jobsDummyData.results.filter(makeJsonFilter(filter.filter || null));
- }
-
-
- for (const job of jobs) {
- const task = tasksDummyData.results.find((task) => task.id === job.task_id);
- job.dimension = task.dimension;
- job.data_compressed_chunk_type = task.data_compressed_chunk_type;
- job.data_chunk_size = task.data_chunk_size;
- job.bug_tracker = task.bug_tracker;
- job.mode = task.mode;
- job.labels = task.labels;
- }
-
- return (
- jobs ? Object.assign(jobs, { count: jobs.length }) : {
- detail: 'Not found.',
- }
- );
- }
-
- async function saveJob(id, jobData) {
- const object = jobsDummyData.results
- .filter((job) => job.id === id)[0];
-
- for (const prop in jobData) {
- if (
- Object.prototype.hasOwnProperty.call(jobData, prop) &&
- Object.prototype.hasOwnProperty.call(object, prop)
- ) {
- object[prop] = jobData[prop];
- }
- }
-
- return (await getJobs({ id }))[0];
- }
-
- async function getUsers() {
- return JSON.parse(JSON.stringify(usersDummyData)).results;
- }
-
- async function getSelf() {
- return JSON.parse(JSON.stringify(usersDummyData)).results[0];
- }
-
- async function getPreview() {
- return null;
- }
-
- async function getData() {
- return 'DUMMY_IMAGE';
- }
-
- async function getMeta(session, id) {
- if (session !== 'job') {
- const task = tasksDummyData.results.find((task) => task.id === id);
- const jobs = jobsDummyData.results.filter((job) => job.task_id === id);
- const jobsMeta = jobs.map((job) => frameMetaDummyData[job.id]).flat();
- let framesMeta = jobsMeta.map((jobMeta) => jobMeta.frames).flat();
- if (task.mode === 'interpolation') {
- framesMeta = [framesMeta[0]];
- }
-
- return {
- chunk_size: jobsMeta[0].chunk_size ,
- size: task.size,
- image_quality: task.image_quality,
- start_frame: Math.min(...jobsMeta.map((meta) => meta.start_frame)),
- stop_frame: Math.max(...jobsMeta.map((meta) => meta.stop_frame)),
- frames: framesMeta,
- deleted_frames: [],
- included_frames: null,
- };
- }
-
- return JSON.parse(JSON.stringify(frameMetaDummyData[id]));
- }
-
- async function saveMeta(session, jid, meta) {
- if (session !== 'job') {
- throw new Error('not implemented test');
- }
- const object = frameMetaDummyData[jid];
- for (const prop in meta) {
- if (
- Object.prototype.hasOwnProperty.call(meta, prop) &&
- Object.prototype.hasOwnProperty.call(object, prop)
- ) {
- if (prop === 'labels') {
- object[prop] = meta[prop].filter((label) => !label.deleted);
- } else {
- object[prop] = meta[prop];
- }
- }
- }
-
- return getMeta(jid);
- }
-
- async function getAnnotations(session, id) {
- if (session === 'task') {
- return JSON.parse(JSON.stringify(taskAnnotationsDummyData[id]));
- }
-
- if (session === 'job') {
- return JSON.parse(JSON.stringify(jobAnnotationsDummyData[id]));
- }
-
- return null;
- }
-
- async function updateAnnotations(session, id, data, action) {
- // Actually we do not change our dummy data
- // We just update the argument in some way and return it
-
- data.version += 1;
-
- if (action === 'create') {
- let idGenerator = 1000;
- data.tracks
- .concat(data.tags)
- .concat(data.shapes)
- .map((el) => {
- el.id = ++idGenerator;
- return el;
- });
-
- return data;
- }
-
- if (action === 'update') {
- return data;
- }
-
- if (action === 'delete') {
- return data;
- }
-
- return null;
- }
-
- async function getCloudStorages(filter = '') {
- const queries = QueryStringToJSON(filter);
- const result = cloudStoragesDummyData.results.filter((item) => {
- for (const key in queries) {
- if (Object.prototype.hasOwnProperty.call(queries, key)) {
- if (queries[key] !== item[key]) {
- return false;
- }
- }
- }
- return true;
- });
- return result;
- }
-
- async function updateCloudStorage(id, cloudStorageData) {
- const cloudStorage = cloudStoragesDummyData.results.find((item) => item.id === id);
- if (cloudStorage) {
- for (const prop in cloudStorageData) {
- if (
- Object.prototype.hasOwnProperty.call(cloudStorageData, prop) &&
- Object.prototype.hasOwnProperty.call(cloudStorage, prop)
- ) {
- cloudStorage[prop] = cloudStorageData[prop];
- }
- }
- }
- }
-
- async function createCloudStorage(cloudStorageData) {
- const id = Math.max(...cloudStoragesDummyData.results.map((item) => item.id)) + 1;
- cloudStoragesDummyData.results.push({
- id,
- provider_type: cloudStorageData.provider_type,
- resource: cloudStorageData.resource,
- display_name: cloudStorageData.display_name,
- credentials_type: cloudStorageData.credentials_type,
- specific_attributes: cloudStorageData.specific_attributes,
- description: cloudStorageData.description,
- owner: 1,
- created_date: '2021-09-01T09:29:47.094244+03:00',
- updated_date: '2021-09-01T09:29:47.103264+03:00',
- });
-
- const result = await getCloudStorages(`?id=${id}`);
- return result[0];
- }
-
- async function deleteCloudStorage(id) {
- const cloudStorages = cloudStoragesDummyData.results;
- const cloudStorageId = cloudStorages.findIndex((item) => item.id === id);
- if (cloudStorageId !== -1) {
- cloudStorages.splice(cloudStorageId);
- }
- }
-
- async function getWebhooks(filter = '') {
- const queries = QueryStringToJSON(filter);
- const result = webhooksDummyData.results.filter((item) => {
- for (const key in queries) {
- if (Object.prototype.hasOwnProperty.call(queries, key)) {
- if (queries[key] !== item[key]) {
- return false;
- }
- }
- }
- return true;
- });
- return result;
- }
-
- async function createWebhook(webhookData) {
- const id = Math.max(...webhooksDummyData.results.map((item) => item.id)) + 1;
- webhooksDummyData.results.push({
- id,
- description: webhookData.description,
- target_url: webhookData.target_url,
- content_type: webhookData.content_type,
- secret: webhookData.secret,
- enable_ssl: webhookData.enable_ssl,
- is_active: webhookData.is_active,
- events: webhookData.events,
- organization_id: webhookData.organization_id ? webhookData.organization_id : null,
- project_id: webhookData.project_id ? webhookData.project_id : null,
- type: webhookData.type,
- owner: { id: 1 },
- created_date: '2022-09-23T06:29:12.337276Z',
- updated_date: '2022-09-23T06:29:12.337276Z',
- });
-
- const result = await getWebhooks(`?id=${id}`);
- return result[0];
- }
-
- async function updateWebhook(webhookID, webhookData) {
- const webhook = webhooksDummyData.results.find((item) => item.id === webhookID);
- if (webhook) {
- for (const prop in webhookData) {
- if (
- Object.prototype.hasOwnProperty.call(webhookData, prop) &&
- Object.prototype.hasOwnProperty.call(webhook, prop)
- ) {
- webhook[prop] = webhookData[prop];
- }
- }
- }
- return webhook;
- }
-
- async function receiveWebhookEvents(type) {
- return webhooksEventsDummyData[type]?.events;
- }
-
- async function deleteWebhook(webhookID) {
- const webhooks = webhooksDummyData.results;
- const webhookIdx = webhooks.findIndex((item) => item.id === webhookID);
- if (webhookIdx !== -1) {
- webhooks.splice(webhookIdx);
- }
- }
-
- async function acceptInvitation() {
- return '';
- }
-
- async function declineInvitation() {
- return;
- }
-
- async function getImportRequestStatus() {
- const requests = requestsDummyData.results;
- return requests[0];
- }
-
- Object.defineProperties(
- this,
- Object.freeze({
- server: {
- value: Object.freeze({
- about,
- share,
- formats,
- exception,
- login,
- logout,
- }),
- writable: false,
- },
-
- projects: {
- value: Object.freeze({
- get: getProjects,
- save: saveProject,
- create: createProject,
- delete: deleteProject,
- }),
- writable: false,
- },
-
- tasks: {
- value: Object.freeze({
- get: getTasks,
- save: saveTask,
- create: createTask,
- delete: deleteTask,
- getPreview: getPreview,
- }),
- writable: false,
- },
-
- labels: {
- value: Object.freeze({
- get: getLabels,
- delete: deleteLabel,
- update: updateLabel,
- }),
- writable: false,
- },
-
- jobs: {
- value: Object.freeze({
- get: getJobs,
- save: saveJob,
- getPreview: getPreview,
- }),
- writable: false,
- },
-
- users: {
- value: Object.freeze({
- get: getUsers,
- self: getSelf,
- }),
- writable: false,
- },
-
- frames: {
- value: Object.freeze({
- getData,
- getMeta,
- saveMeta,
- getPreview,
- }),
- writable: false,
- },
-
- annotations: {
- value: {
- updateAnnotations,
- getAnnotations,
- },
- },
-
- cloudStorages: {
- value: Object.freeze({
- get: getCloudStorages,
- update: updateCloudStorage,
- create: createCloudStorage,
- delete: deleteCloudStorage,
- }),
- writable: false,
- },
-
- webhooks: {
- value: Object.freeze({
- get: getWebhooks,
- create: createWebhook,
- update: updateWebhook,
- delete: deleteWebhook,
- events: receiveWebhookEvents,
- }),
- writable: false,
- },
-
- organizations: {
- value: Object.freeze({
- acceptInvitation: acceptInvitation,
- declineInvitation: declineInvitation,
- }),
- writable: false,
- },
-
- requests: {
- value: Object.freeze({
- status: getImportRequestStatus,
- }),
- writable: false,
- },
- }),
- );
- }
-}
-
-const serverProxy = new ServerProxy();
-module.exports = serverProxy;
diff --git a/cvat-data/.eslintrc.cjs b/cvat-data/.eslintrc.cjs
index e9f8f71be118..ed17a3ec10e1 100644
--- a/cvat-data/.eslintrc.cjs
+++ b/cvat-data/.eslintrc.cjs
@@ -13,5 +13,4 @@ module.exports = {
project: './tsconfig.json',
tsconfigRootDir: __dirname,
},
- plugins: ['jest'],
};
diff --git a/package.json b/package.json
index 25954c1e8b9e..b6f72088269d 100644
--- a/package.json
+++ b/package.json
@@ -42,7 +42,6 @@
"eslint-config-airbnb-typescript": "^17.1.0",
"eslint-plugin-cypress": "^2.11.2",
"eslint-plugin-import": "^2.22.1",
- "eslint-plugin-jest": "^26.5.3",
"eslint-plugin-jsx-a11y": "^6.3.1",
"eslint-plugin-no-unsanitized": "^3.0.2",
"eslint-plugin-react": "^7.33.2",
diff --git a/yarn.lock b/yarn.lock
index 46516547350c..7c9a6d5860b2 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -91,7 +91,7 @@
"@nicolo-ribaudo/chokidar-2" "2.1.8-no-fsevents.3"
chokidar "^3.4.0"
-"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.23.5", "@babel/code-frame@^7.24.2":
+"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.23.5", "@babel/code-frame@^7.24.2":
version "7.24.2"
resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.24.2.tgz#718b4b19841809a58b29b68cde80bc5e1aa6d9ae"
integrity sha512-y5+tLQyV8pg3fsiln67BVLD1P13Eg4lh5RW9mF0zUuvLrv9uIQ4MCL+CRT+FTsBlBjcIan6PGsLcBN0m3ClUyQ==
@@ -104,7 +104,7 @@
resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.24.4.tgz#6f102372e9094f25d908ca0d34fc74c74606059a"
integrity sha512-vg8Gih2MLK+kOkHJp4gBEIkyaIi00jgWot2D9QOmmfLC8jINSOzmCLta6Bvz/JSBCqnegV0L80jhxkol5GWNfQ==
-"@babel/core@^7.11.6", "@babel/core@^7.12.3", "@babel/core@^7.23.9", "@babel/core@^7.4.5", "@babel/core@^7.6.0", "@babel/core@^7.7.5":
+"@babel/core@^7.12.3", "@babel/core@^7.4.5", "@babel/core@^7.6.0", "@babel/core@^7.7.5":
version "7.24.5"
resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.24.5.tgz#15ab5b98e101972d171aeef92ac70d8d6718f06a"
integrity sha512-tVQRucExLQ02Boi4vdPp49svNGcfL2GhdTCT9aldhXgCJVAI21EtRfBettiuLUwce/7r6bFdgs6JFkcdTiFttA==
@@ -134,7 +134,7 @@
eslint-visitor-keys "^2.1.0"
semver "^6.3.1"
-"@babel/generator@^7.24.5", "@babel/generator@^7.7.2":
+"@babel/generator@^7.24.5":
version "7.24.5"
resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.24.5.tgz#e5afc068f932f05616b66713e28d0f04e99daeb3"
integrity sha512-x32i4hEXvr+iI0NEoEfDKzlemF8AmtOP8CcrRaEcpzysWuoEb1KknpcvMsHKPONoKZiDuItklgWhB18xEhr9PA==
@@ -343,7 +343,7 @@
js-tokens "^4.0.0"
picocolors "^1.0.0"
-"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.20.7", "@babel/parser@^7.23.9", "@babel/parser@^7.24.0", "@babel/parser@^7.24.5":
+"@babel/parser@^7.14.7", "@babel/parser@^7.24.0", "@babel/parser@^7.24.5":
version "7.24.5"
resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.24.5.tgz#4a4d5ab4315579e5398a82dcf636ca80c3392790"
integrity sha512-EOv5IK8arwh3LI47dz1b0tKUb/1uhHAnHJOrjgtQMIpu1uXd9mlFrJg9IUgGUgZ41Ch0K8REPTYpO7B76b4vJg==
@@ -409,14 +409,7 @@
dependencies:
"@babel/helper-plugin-utils" "^7.8.0"
-"@babel/plugin-syntax-bigint@^7.8.3":
- version "7.8.3"
- resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz#4c9a6f669f5d0cdf1b90a1671e9a146be5300cea"
- integrity sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==
- dependencies:
- "@babel/helper-plugin-utils" "^7.8.0"
-
-"@babel/plugin-syntax-class-properties@^7.12.13", "@babel/plugin-syntax-class-properties@^7.8.3":
+"@babel/plugin-syntax-class-properties@^7.12.13":
version "7.12.13"
resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz#b5c987274c4a3a82b89714796931a6b53544ae10"
integrity sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==
@@ -458,7 +451,7 @@
dependencies:
"@babel/helper-plugin-utils" "^7.24.0"
-"@babel/plugin-syntax-import-meta@^7.10.4", "@babel/plugin-syntax-import-meta@^7.8.3":
+"@babel/plugin-syntax-import-meta@^7.10.4":
version "7.10.4"
resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz#ee601348c370fa334d2207be158777496521fd51"
integrity sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==
@@ -472,14 +465,14 @@
dependencies:
"@babel/helper-plugin-utils" "^7.8.0"
-"@babel/plugin-syntax-jsx@^7.2.0", "@babel/plugin-syntax-jsx@^7.23.3", "@babel/plugin-syntax-jsx@^7.24.1", "@babel/plugin-syntax-jsx@^7.7.2":
+"@babel/plugin-syntax-jsx@^7.2.0", "@babel/plugin-syntax-jsx@^7.23.3", "@babel/plugin-syntax-jsx@^7.24.1":
version "7.24.1"
resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.24.1.tgz#3f6ca04b8c841811dbc3c5c5f837934e0d626c10"
integrity sha512-2eCtxZXf+kbkMIsXS4poTvT4Yu5rXiRa+9xGVT56raghjmBTKMpFNc9R4IDiB4emao9eO22Ox7CxuJG7BgExqA==
dependencies:
"@babel/helper-plugin-utils" "^7.24.0"
-"@babel/plugin-syntax-logical-assignment-operators@^7.10.4", "@babel/plugin-syntax-logical-assignment-operators@^7.8.3":
+"@babel/plugin-syntax-logical-assignment-operators@^7.10.4":
version "7.10.4"
resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz#ca91ef46303530448b906652bac2e9fe9941f699"
integrity sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==
@@ -493,7 +486,7 @@
dependencies:
"@babel/helper-plugin-utils" "^7.8.0"
-"@babel/plugin-syntax-numeric-separator@^7.10.4", "@babel/plugin-syntax-numeric-separator@^7.8.3":
+"@babel/plugin-syntax-numeric-separator@^7.10.4":
version "7.10.4"
resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz#b9b070b3e33570cd9fd07ba7fa91c0dd37b9af97"
integrity sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==
@@ -528,14 +521,14 @@
dependencies:
"@babel/helper-plugin-utils" "^7.14.5"
-"@babel/plugin-syntax-top-level-await@^7.14.5", "@babel/plugin-syntax-top-level-await@^7.8.3":
+"@babel/plugin-syntax-top-level-await@^7.14.5":
version "7.14.5"
resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz#c1cfdadc35a646240001f06138247b741c34d94c"
integrity sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==
dependencies:
"@babel/helper-plugin-utils" "^7.14.5"
-"@babel/plugin-syntax-typescript@^7.24.1", "@babel/plugin-syntax-typescript@^7.7.2":
+"@babel/plugin-syntax-typescript@^7.24.1":
version "7.24.1"
resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.24.1.tgz#b3bcc51f396d15f3591683f90239de143c076844"
integrity sha512-Yhnmvy5HZEnHUty6i++gcfH1/l68AHnItFHnaCv6hn9dNh0hQvvQJsxpi4BMBFN5DLeHBuucT/0DgzXif/OyRw==
@@ -1122,7 +1115,7 @@
dependencies:
regenerator-runtime "^0.14.0"
-"@babel/template@^7.22.15", "@babel/template@^7.24.0", "@babel/template@^7.3.3", "@babel/template@^7.4.4":
+"@babel/template@^7.22.15", "@babel/template@^7.24.0", "@babel/template@^7.4.4":
version "7.24.0"
resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.24.0.tgz#c6a524aa93a4a05d66aaf31654258fae69d87d50"
integrity sha512-Bkf2q8lMB0AFpX0NFEqSbx1OkTHf0f+0j82mkw+ZpzBnkk7e9Ql0891vlfgi+kHwOk8tQjiQHpqh4LaSa0fKEA==
@@ -1147,7 +1140,7 @@
debug "^4.3.1"
globals "^11.1.0"
-"@babel/types@^7.0.0", "@babel/types@^7.20.7", "@babel/types@^7.22.15", "@babel/types@^7.22.5", "@babel/types@^7.23.0", "@babel/types@^7.23.4", "@babel/types@^7.24.0", "@babel/types@^7.24.5", "@babel/types@^7.3.3", "@babel/types@^7.4.4":
+"@babel/types@^7.22.15", "@babel/types@^7.22.5", "@babel/types@^7.23.0", "@babel/types@^7.23.4", "@babel/types@^7.24.0", "@babel/types@^7.24.5", "@babel/types@^7.4.4":
version "7.24.5"
resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.24.5.tgz#7661930afc638a5383eb0c4aee59b74f38db84d7"
integrity sha512-6mQNsaLeXTw0nxYUYu+NSa4Hx4BlF1x1x8/PMFbiR+GBSr+2DkECc69b8hgy2frEodNcvPffeH8YfWd3LI6jhQ==
@@ -1156,11 +1149,6 @@
"@babel/helper-validator-identifier" "^7.24.5"
to-fast-properties "^2.0.0"
-"@bcoe/v8-coverage@^0.2.3":
- version "0.2.3"
- resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39"
- integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==
-
"@csstools/cascade-layer-name-parser@^1.0.11":
version "1.0.11"
resolved "https://registry.yarnpkg.com/@csstools/cascade-layer-name-parser/-/cascade-layer-name-parser-1.0.11.tgz#c9b85dc38240c0269385f557149f714e7875fda0"
@@ -1547,212 +1535,11 @@
resolved "https://registry.yarnpkg.com/@istanbuljs/nyc-config-babel/-/nyc-config-babel-3.0.0.tgz#56d0a5250d92b9455c7507775fcb5cb7215fee29"
integrity sha512-mPnSPXfTRWCzYsT64PnuPlce6/hGMCdVVMgU2FenXipbUd+FDwUlqlTihXxpxWzcNVOp8M+L1t/kIcgoC8A7hg==
-"@istanbuljs/schema@^0.1.2", "@istanbuljs/schema@^0.1.3":
+"@istanbuljs/schema@^0.1.2":
version "0.1.3"
resolved "https://registry.yarnpkg.com/@istanbuljs/schema/-/schema-0.1.3.tgz#e45e384e4b8ec16bce2fd903af78450f6bf7ec98"
integrity sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==
-"@jest/console@^29.7.0":
- version "29.7.0"
- resolved "https://registry.yarnpkg.com/@jest/console/-/console-29.7.0.tgz#cd4822dbdb84529265c5a2bdb529a3c9cc950ffc"
- integrity sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg==
- dependencies:
- "@jest/types" "^29.6.3"
- "@types/node" "*"
- chalk "^4.0.0"
- jest-message-util "^29.7.0"
- jest-util "^29.7.0"
- slash "^3.0.0"
-
-"@jest/core@^29.7.0":
- version "29.7.0"
- resolved "https://registry.yarnpkg.com/@jest/core/-/core-29.7.0.tgz#b6cccc239f30ff36609658c5a5e2291757ce448f"
- integrity sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg==
- dependencies:
- "@jest/console" "^29.7.0"
- "@jest/reporters" "^29.7.0"
- "@jest/test-result" "^29.7.0"
- "@jest/transform" "^29.7.0"
- "@jest/types" "^29.6.3"
- "@types/node" "*"
- ansi-escapes "^4.2.1"
- chalk "^4.0.0"
- ci-info "^3.2.0"
- exit "^0.1.2"
- graceful-fs "^4.2.9"
- jest-changed-files "^29.7.0"
- jest-config "^29.7.0"
- jest-haste-map "^29.7.0"
- jest-message-util "^29.7.0"
- jest-regex-util "^29.6.3"
- jest-resolve "^29.7.0"
- jest-resolve-dependencies "^29.7.0"
- jest-runner "^29.7.0"
- jest-runtime "^29.7.0"
- jest-snapshot "^29.7.0"
- jest-util "^29.7.0"
- jest-validate "^29.7.0"
- jest-watcher "^29.7.0"
- micromatch "^4.0.4"
- pretty-format "^29.7.0"
- slash "^3.0.0"
- strip-ansi "^6.0.0"
-
-"@jest/environment@^29.7.0":
- version "29.7.0"
- resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-29.7.0.tgz#24d61f54ff1f786f3cd4073b4b94416383baf2a7"
- integrity sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==
- dependencies:
- "@jest/fake-timers" "^29.7.0"
- "@jest/types" "^29.6.3"
- "@types/node" "*"
- jest-mock "^29.7.0"
-
-"@jest/expect-utils@^29.7.0":
- version "29.7.0"
- resolved "https://registry.yarnpkg.com/@jest/expect-utils/-/expect-utils-29.7.0.tgz#023efe5d26a8a70f21677d0a1afc0f0a44e3a1c6"
- integrity sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==
- dependencies:
- jest-get-type "^29.6.3"
-
-"@jest/expect@^29.7.0":
- version "29.7.0"
- resolved "https://registry.yarnpkg.com/@jest/expect/-/expect-29.7.0.tgz#76a3edb0cb753b70dfbfe23283510d3d45432bf2"
- integrity sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ==
- dependencies:
- expect "^29.7.0"
- jest-snapshot "^29.7.0"
-
-"@jest/fake-timers@^29.7.0":
- version "29.7.0"
- resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-29.7.0.tgz#fd91bf1fffb16d7d0d24a426ab1a47a49881a565"
- integrity sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ==
- dependencies:
- "@jest/types" "^29.6.3"
- "@sinonjs/fake-timers" "^10.0.2"
- "@types/node" "*"
- jest-message-util "^29.7.0"
- jest-mock "^29.7.0"
- jest-util "^29.7.0"
-
-"@jest/globals@^29.7.0":
- version "29.7.0"
- resolved "https://registry.yarnpkg.com/@jest/globals/-/globals-29.7.0.tgz#8d9290f9ec47ff772607fa864ca1d5a2efae1d4d"
- integrity sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ==
- dependencies:
- "@jest/environment" "^29.7.0"
- "@jest/expect" "^29.7.0"
- "@jest/types" "^29.6.3"
- jest-mock "^29.7.0"
-
-"@jest/reporters@^29.7.0":
- version "29.7.0"
- resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-29.7.0.tgz#04b262ecb3b8faa83b0b3d321623972393e8f4c7"
- integrity sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg==
- dependencies:
- "@bcoe/v8-coverage" "^0.2.3"
- "@jest/console" "^29.7.0"
- "@jest/test-result" "^29.7.0"
- "@jest/transform" "^29.7.0"
- "@jest/types" "^29.6.3"
- "@jridgewell/trace-mapping" "^0.3.18"
- "@types/node" "*"
- chalk "^4.0.0"
- collect-v8-coverage "^1.0.0"
- exit "^0.1.2"
- glob "^7.1.3"
- graceful-fs "^4.2.9"
- istanbul-lib-coverage "^3.0.0"
- istanbul-lib-instrument "^6.0.0"
- istanbul-lib-report "^3.0.0"
- istanbul-lib-source-maps "^4.0.0"
- istanbul-reports "^3.1.3"
- jest-message-util "^29.7.0"
- jest-util "^29.7.0"
- jest-worker "^29.7.0"
- slash "^3.0.0"
- string-length "^4.0.1"
- strip-ansi "^6.0.0"
- v8-to-istanbul "^9.0.1"
-
-"@jest/schemas@^29.6.3":
- version "29.6.3"
- resolved "https://registry.yarnpkg.com/@jest/schemas/-/schemas-29.6.3.tgz#430b5ce8a4e0044a7e3819663305a7b3091c8e03"
- integrity sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==
- dependencies:
- "@sinclair/typebox" "^0.27.8"
-
-"@jest/source-map@^29.6.3":
- version "29.6.3"
- resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-29.6.3.tgz#d90ba772095cf37a34a5eb9413f1b562a08554c4"
- integrity sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw==
- dependencies:
- "@jridgewell/trace-mapping" "^0.3.18"
- callsites "^3.0.0"
- graceful-fs "^4.2.9"
-
-"@jest/test-result@^29.7.0":
- version "29.7.0"
- resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-29.7.0.tgz#8db9a80aa1a097bb2262572686734baed9b1657c"
- integrity sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA==
- dependencies:
- "@jest/console" "^29.7.0"
- "@jest/types" "^29.6.3"
- "@types/istanbul-lib-coverage" "^2.0.0"
- collect-v8-coverage "^1.0.0"
-
-"@jest/test-sequencer@^29.7.0":
- version "29.7.0"
- resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-29.7.0.tgz#6cef977ce1d39834a3aea887a1726628a6f072ce"
- integrity sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw==
- dependencies:
- "@jest/test-result" "^29.7.0"
- graceful-fs "^4.2.9"
- jest-haste-map "^29.7.0"
- slash "^3.0.0"
-
-"@jest/transform@^29.7.0":
- version "29.7.0"
- resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-29.7.0.tgz#df2dd9c346c7d7768b8a06639994640c642e284c"
- integrity sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==
- dependencies:
- "@babel/core" "^7.11.6"
- "@jest/types" "^29.6.3"
- "@jridgewell/trace-mapping" "^0.3.18"
- babel-plugin-istanbul "^6.1.1"
- chalk "^4.0.0"
- convert-source-map "^2.0.0"
- fast-json-stable-stringify "^2.1.0"
- graceful-fs "^4.2.9"
- jest-haste-map "^29.7.0"
- jest-regex-util "^29.6.3"
- jest-util "^29.7.0"
- micromatch "^4.0.4"
- pirates "^4.0.4"
- slash "^3.0.0"
- write-file-atomic "^4.0.2"
-
-"@jest/types@^24.9.0":
- version "24.9.0"
- resolved "https://registry.yarnpkg.com/@jest/types/-/types-24.9.0.tgz#63cb26cb7500d069e5a389441a7c6ab5e909fc59"
- integrity sha512-XKK7ze1apu5JWQ5eZjHITP66AX+QsLlbaJRBGYr8pNzwcAE2JVkwnf0yqjHTsDRcjR0mujy/NmZMXw5kl+kGBw==
- dependencies:
- "@types/istanbul-lib-coverage" "^2.0.0"
- "@types/istanbul-reports" "^1.1.1"
- "@types/yargs" "^13.0.0"
-
-"@jest/types@^29.6.3":
- version "29.6.3"
- resolved "https://registry.yarnpkg.com/@jest/types/-/types-29.6.3.tgz#1131f8cf634e7e84c5e77bab12f052af585fba59"
- integrity sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==
- dependencies:
- "@jest/schemas" "^29.6.3"
- "@types/istanbul-lib-coverage" "^2.0.0"
- "@types/istanbul-reports" "^3.0.0"
- "@types/node" "*"
- "@types/yargs" "^17.0.8"
- chalk "^4.0.0"
-
"@jridgewell/gen-mapping@^0.3.5":
version "0.3.5"
resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz#dcce6aff74bdf6dad1a95802b69b04a2fcb1fb36"
@@ -1785,7 +1572,7 @@
resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz#d7c6e6755c78567a951e04ab52ef0fd26de59f32"
integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==
-"@jridgewell/trace-mapping@^0.3.12", "@jridgewell/trace-mapping@^0.3.18", "@jridgewell/trace-mapping@^0.3.20", "@jridgewell/trace-mapping@^0.3.24", "@jridgewell/trace-mapping@^0.3.25":
+"@jridgewell/trace-mapping@^0.3.20", "@jridgewell/trace-mapping@^0.3.24", "@jridgewell/trace-mapping@^0.3.25":
version "0.3.25"
resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz#15f190e98895f3fc23276ee14bc76b675c2e50f0"
integrity sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==
@@ -2014,30 +1801,11 @@
react-redux "^8.1.3"
redux "^4.2.1"
-"@sinclair/typebox@^0.27.8":
- version "0.27.8"
- resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.27.8.tgz#6667fac16c436b5434a387a34dedb013198f6e6e"
- integrity sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==
-
"@sindresorhus/is@^0.14.0":
version "0.14.0"
resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-0.14.0.tgz#9fb3a3cf3132328151f353de4632e01e52102bea"
integrity sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==
-"@sinonjs/commons@^3.0.0":
- version "3.0.1"
- resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-3.0.1.tgz#1029357e44ca901a615585f6d27738dbc89084cd"
- integrity sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==
- dependencies:
- type-detect "4.0.8"
-
-"@sinonjs/fake-timers@^10.0.2":
- version "10.3.0"
- resolved "https://registry.yarnpkg.com/@sinonjs/fake-timers/-/fake-timers-10.3.0.tgz#55fdff1ecab9f354019129daf4df0dd4d923ea66"
- integrity sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==
- dependencies:
- "@sinonjs/commons" "^3.0.0"
-
"@szmarczak/http-timer@^1.1.2":
version "1.1.2"
resolved "https://registry.yarnpkg.com/@szmarczak/http-timer/-/http-timer-1.1.2.tgz#b1665e2c461a2cd92f4c1bbf50d5454de0d4b421"
@@ -2050,39 +1818,6 @@
resolved "https://registry.yarnpkg.com/@tootallnate/once/-/once-2.0.0.tgz#f544a148d3ab35801c1f633a7441fd87c2e484bf"
integrity sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==
-"@types/babel__core@^7.1.14":
- version "7.20.5"
- resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.20.5.tgz#3df15f27ba85319caa07ba08d0721889bb39c017"
- integrity sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==
- dependencies:
- "@babel/parser" "^7.20.7"
- "@babel/types" "^7.20.7"
- "@types/babel__generator" "*"
- "@types/babel__template" "*"
- "@types/babel__traverse" "*"
-
-"@types/babel__generator@*":
- version "7.6.8"
- resolved "https://registry.yarnpkg.com/@types/babel__generator/-/babel__generator-7.6.8.tgz#f836c61f48b1346e7d2b0d93c6dacc5b9535d3ab"
- integrity sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==
- dependencies:
- "@babel/types" "^7.0.0"
-
-"@types/babel__template@*":
- version "7.4.4"
- resolved "https://registry.yarnpkg.com/@types/babel__template/-/babel__template-7.4.4.tgz#5672513701c1b2199bc6dad636a9d7491586766f"
- integrity sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==
- dependencies:
- "@babel/parser" "^7.1.0"
- "@babel/types" "^7.0.0"
-
-"@types/babel__traverse@*", "@types/babel__traverse@^7.0.6":
- version "7.20.5"
- resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.20.5.tgz#7b7502be0aa80cc4ef22978846b983edaafcd4dd"
- integrity sha512-WXCyOcRtH37HAUkpXhUduaxdm82b4GSlyTqajXviN4EfiuPgNYR109xMCKvpl6zPIpua0DGlMEDCq+g8EdoheQ==
- dependencies:
- "@babel/types" "^7.20.7"
-
"@types/body-parser@*":
version "1.19.5"
resolved "https://registry.yarnpkg.com/@types/body-parser/-/body-parser-1.19.5.tgz#04ce9a3b677dc8bd681a17da1ab9835dc9d3ede4"
@@ -2155,13 +1890,6 @@
resolved "https://registry.yarnpkg.com/@types/fabric/-/fabric-4.5.15.tgz#2b7a32717376e7c8768d144397e45a16693d9159"
integrity sha512-cjrHhi6R62rFtfqSopPoUEvnidhMngXBaDs6adrVIkY92o3bjWIIQ2InV0vaD262N/GurDrzJS2ih4TgY9gGAQ==
-"@types/graceful-fs@^4.1.3":
- version "4.1.9"
- resolved "https://registry.yarnpkg.com/@types/graceful-fs/-/graceful-fs-4.1.9.tgz#2a06bc0f68a20ab37b3e36aa238be6abdf49e8b4"
- integrity sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==
- dependencies:
- "@types/node" "*"
-
"@types/hast@^2.0.0":
version "2.3.10"
resolved "https://registry.yarnpkg.com/@types/hast/-/hast-2.3.10.tgz#5c9d9e0b304bbb8879b857225c5ebab2d81d7643"
@@ -2199,42 +1927,6 @@
dependencies:
"@types/node" "*"
-"@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0", "@types/istanbul-lib-coverage@^2.0.1":
- version "2.0.6"
- resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz#7739c232a1fee9b4d3ce8985f314c0c6d33549d7"
- integrity sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==
-
-"@types/istanbul-lib-report@*":
- version "3.0.3"
- resolved "https://registry.yarnpkg.com/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.3.tgz#53047614ae72e19fc0401d872de3ae2b4ce350bf"
- integrity sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==
- dependencies:
- "@types/istanbul-lib-coverage" "*"
-
-"@types/istanbul-reports@^1.1.1":
- version "1.1.2"
- resolved "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-1.1.2.tgz#e875cc689e47bce549ec81f3df5e6f6f11cfaeb2"
- integrity sha512-P/W9yOX/3oPZSpaYOCQzGqgCQRXn0FFO/V8bWrCQs+wLmvVVxk6CRBXALEvNs9OHIatlnlFokfhuDo2ug01ciw==
- dependencies:
- "@types/istanbul-lib-coverage" "*"
- "@types/istanbul-lib-report" "*"
-
-"@types/istanbul-reports@^3.0.0":
- version "3.0.4"
- resolved "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz#0f03e3d2f670fbdac586e34b433783070cc16f54"
- integrity sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==
- dependencies:
- "@types/istanbul-lib-report" "*"
-
-"@types/jsdom@^20.0.0":
- version "20.0.1"
- resolved "https://registry.yarnpkg.com/@types/jsdom/-/jsdom-20.0.1.tgz#07c14bc19bd2f918c1929541cdaacae894744808"
- integrity sha512-d0r18sZPmMQr1eG35u12FZfhIXNrnsPU/g5wvRKCUf/tOGilKKwYMYGqh33BNR6ba+2gkHw1EUiHoN3mn7E5IQ==
- dependencies:
- "@types/node" "*"
- "@types/tough-cookie" "*"
- parse5 "^7.0.0"
-
"@types/json-logic-js@^2.0.2":
version "2.0.7"
resolved "https://registry.yarnpkg.com/@types/json-logic-js/-/json-logic-js-2.0.7.tgz#09a70a932d0be937618a9fc791291b069e637fb0"
@@ -2447,7 +2139,7 @@
resolved "https://registry.yarnpkg.com/@types/scheduler/-/scheduler-0.23.0.tgz#0a6655b3e2708eaabca00b7372fafd7a792a7b09"
integrity sha512-YIoDCTH3Af6XM5VuwGG/QL/CJqga1Zm3NkU3HZ4ZHK2fRMPYP1VczsTUqtsf43PH/iJNVlPHAo2oWX7BSdB2Hw==
-"@types/semver@^7.3.12", "@types/semver@^7.5.0":
+"@types/semver@^7.5.0":
version "7.5.8"
resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.5.8.tgz#8268a8c57a3e4abd25c165ecd36237db7948a55e"
integrity sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==
@@ -2483,11 +2175,6 @@
dependencies:
"@types/node" "*"
-"@types/stack-utils@^2.0.0":
- version "2.0.3"
- resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-2.0.3.tgz#6209321eb2c1712a7e7466422b8cb1fc0d9dd5d8"
- integrity sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==
-
"@types/stats.js@*":
version "0.17.3"
resolved "https://registry.yarnpkg.com/@types/stats.js/-/stats.js-0.17.3.tgz#705446e12ce0fad618557dd88236f51148b7a935"
@@ -2503,11 +2190,6 @@
fflate "~0.6.10"
meshoptimizer "~0.18.1"
-"@types/tough-cookie@*":
- version "4.0.5"
- resolved "https://registry.yarnpkg.com/@types/tough-cookie/-/tough-cookie-4.0.5.tgz#cb6e2a691b70cb177c6e3ae9c1d2e8b2ea8cd304"
- integrity sha512-/Ad8+nIOV7Rl++6f1BdKxFSMgmoqEoYbHRpPcx3JEfv8VRsQe9Z4mCXeJBzxs7mbHY/XOZZuXlRNfhpVPbs6ZA==
-
"@types/unist@^2", "@types/unist@^2.0.0", "@types/unist@^2.0.2":
version "2.0.10"
resolved "https://registry.yarnpkg.com/@types/unist/-/unist-2.0.10.tgz#04ffa7f406ab628f7f7e97ca23e290cd8ab15efc"
@@ -2530,25 +2212,6 @@
dependencies:
"@types/node" "*"
-"@types/yargs-parser@*":
- version "21.0.3"
- resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-21.0.3.tgz#815e30b786d2e8f0dcd85fd5bcf5e1a04d008f15"
- integrity sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==
-
-"@types/yargs@^13.0.0":
- version "13.0.12"
- resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-13.0.12.tgz#d895a88c703b78af0465a9de88aa92c61430b092"
- integrity sha512-qCxJE1qgz2y0hA4pIxjBR+PelCH0U5CK1XJXFwCNqfmliatKp47UCXXE9Dyk1OXBDLvsCF57TqQEJaeLfDYEOQ==
- dependencies:
- "@types/yargs-parser" "*"
-
-"@types/yargs@^17.0.8":
- version "17.0.32"
- resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-17.0.32.tgz#030774723a2f7faafebf645f4e5a48371dca6229"
- integrity sha512-xQ67Yc/laOG5uMfX/093MRlGGCIBzZMarVa+gfNKJxWAIgykYpVGkBdbqEzGDDfCrVUj6Hiff4mTZ5BA6TmAog==
- dependencies:
- "@types/yargs-parser" "*"
-
"@typescript-eslint/eslint-plugin@^6.13.1":
version "6.21.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.21.0.tgz#30830c1ca81fd5f3c2714e524c4303e0194f9cd3"
@@ -2577,14 +2240,6 @@
"@typescript-eslint/visitor-keys" "6.21.0"
debug "^4.3.4"
-"@typescript-eslint/scope-manager@5.62.0":
- version "5.62.0"
- resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz#d9457ccc6a0b8d6b37d0eb252a23022478c5460c"
- integrity sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==
- dependencies:
- "@typescript-eslint/types" "5.62.0"
- "@typescript-eslint/visitor-keys" "5.62.0"
-
"@typescript-eslint/scope-manager@6.21.0":
version "6.21.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-6.21.0.tgz#ea8a9bfc8f1504a6ac5d59a6df308d3a0630a2b1"
@@ -2603,29 +2258,11 @@
debug "^4.3.4"
ts-api-utils "^1.0.1"
-"@typescript-eslint/types@5.62.0":
- version "5.62.0"
- resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.62.0.tgz#258607e60effa309f067608931c3df6fed41fd2f"
- integrity sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==
-
"@typescript-eslint/types@6.21.0":
version "6.21.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-6.21.0.tgz#205724c5123a8fef7ecd195075fa6e85bac3436d"
integrity sha512-1kFmZ1rOm5epu9NZEZm1kckCDGj5UJEf7P1kliH4LKu/RkwpsfqqGmY2OOcUs18lSlQBKLDYBOGxRVtrMN5lpg==
-"@typescript-eslint/typescript-estree@5.62.0":
- version "5.62.0"
- resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz#7d17794b77fabcac615d6a48fb143330d962eb9b"
- integrity sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==
- dependencies:
- "@typescript-eslint/types" "5.62.0"
- "@typescript-eslint/visitor-keys" "5.62.0"
- debug "^4.3.4"
- globby "^11.1.0"
- is-glob "^4.0.3"
- semver "^7.3.7"
- tsutils "^3.21.0"
-
"@typescript-eslint/typescript-estree@6.21.0":
version "6.21.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-6.21.0.tgz#c47ae7901db3b8bddc3ecd73daff2d0895688c46"
@@ -2653,28 +2290,6 @@
"@typescript-eslint/typescript-estree" "6.21.0"
semver "^7.5.4"
-"@typescript-eslint/utils@^5.10.0":
- version "5.62.0"
- resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.62.0.tgz#141e809c71636e4a75daa39faed2fb5f4b10df86"
- integrity sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==
- dependencies:
- "@eslint-community/eslint-utils" "^4.2.0"
- "@types/json-schema" "^7.0.9"
- "@types/semver" "^7.3.12"
- "@typescript-eslint/scope-manager" "5.62.0"
- "@typescript-eslint/types" "5.62.0"
- "@typescript-eslint/typescript-estree" "5.62.0"
- eslint-scope "^5.1.1"
- semver "^7.3.7"
-
-"@typescript-eslint/visitor-keys@5.62.0":
- version "5.62.0"
- resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz#2174011917ce582875954ffe2f6912d5931e353e"
- integrity sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==
- dependencies:
- "@typescript-eslint/types" "5.62.0"
- eslint-visitor-keys "^3.3.0"
-
"@typescript-eslint/visitor-keys@6.21.0":
version "6.21.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-6.21.0.tgz#87a99d077aa507e20e238b11d56cc26ade45fe47"
@@ -2893,14 +2508,6 @@ acorn-globals@^6.0.0:
acorn "^7.1.1"
acorn-walk "^7.1.1"
-acorn-globals@^7.0.0:
- version "7.0.1"
- resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-7.0.1.tgz#0dbf05c44fa7c94332914c02066d5beff62c40c3"
- integrity sha512-umOSDSDrfHbTNPuNpC2NSnnA3LUrqpevPb4T9jRx4MagXNS0rs+gwiTcAvqCRmsD6utzsrzNt+ebm00SNWiC3Q==
- dependencies:
- acorn "^8.1.0"
- acorn-walk "^8.0.2"
-
acorn-import-attributes@^1.9.5:
version "1.9.5"
resolved "https://registry.yarnpkg.com/acorn-import-attributes/-/acorn-import-attributes-1.9.5.tgz#7eb1557b1ba05ef18b5ed0ec67591bfab04688ef"
@@ -2916,17 +2523,12 @@ acorn-walk@^7.1.1:
resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-7.2.0.tgz#0de889a601203909b0fbe07b8938dc21d2e967bc"
integrity sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==
-acorn-walk@^8.0.2:
- version "8.3.2"
- resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.3.2.tgz#7703af9415f1b6db9315d6895503862e231d34aa"
- integrity sha512-cjkyv4OtNCIeqhHrfS81QWXoCBPExR/J62oyEqepVw8WaQeSqpW2uhuLPh1m9eWhDuOo/jUXVTlifvesOWp/4A==
-
acorn@^7.1.1:
version "7.4.1"
resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa"
integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==
-acorn@^8.1.0, acorn@^8.5.0, acorn@^8.7.1, acorn@^8.8.1, acorn@^8.8.2, acorn@^8.9.0:
+acorn@^8.5.0, acorn@^8.7.1, acorn@^8.8.2, acorn@^8.9.0:
version "8.11.3"
resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.11.3.tgz#71e0b14e13a4ec160724b38fb7b0f233b1b81d7a"
integrity sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==
@@ -2999,13 +2601,6 @@ ajv@^8.0.0, ajv@^8.0.1, ajv@^8.9.0:
require-from-string "^2.0.2"
uri-js "^4.4.1"
-ansi-escapes@^4.2.1:
- version "4.3.2"
- resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.2.tgz#6b2291d1db7d98b6521d5f1efa42d0f3a9feb65e"
- integrity sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==
- dependencies:
- type-fest "^0.21.3"
-
ansi-escapes@^5.0.0:
version "5.0.0"
resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-5.0.0.tgz#b6a0caf0eef0c41af190e9a749e0c00ec04bb2a6"
@@ -3018,16 +2613,6 @@ ansi-html-community@^0.0.8:
resolved "https://registry.yarnpkg.com/ansi-html-community/-/ansi-html-community-0.0.8.tgz#69fbc4d6ccbe383f9736934ae34c3f8290f1bf41"
integrity sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==
-ansi-regex@^3.0.0:
- version "3.0.1"
- resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.1.tgz#123d6479e92ad45ad897d4054e3c7ca7db4944e1"
- integrity sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==
-
-ansi-regex@^4.0.0:
- version "4.1.1"
- resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.1.tgz#164daac87ab2d6f6db3a29875e2d1766582dabed"
- integrity sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==
-
ansi-regex@^5.0.1:
version "5.0.1"
resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304"
@@ -3038,7 +2623,7 @@ ansi-regex@^6.0.1:
resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-6.0.1.tgz#3183e38fae9a65d7cb5e53945cd5897d0260a06a"
integrity sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==
-ansi-styles@^3.2.0, ansi-styles@^3.2.1:
+ansi-styles@^3.2.1:
version "3.2.1"
resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d"
integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==
@@ -3052,11 +2637,6 @@ ansi-styles@^4.0.0, ansi-styles@^4.1.0:
dependencies:
color-convert "^2.0.1"
-ansi-styles@^5.0.0:
- version "5.2.0"
- resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-5.2.0.tgz#07449690ad45777d1924ac2abb2fc8895dba836b"
- integrity sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==
-
ansi-styles@^6.0.0, ansi-styles@^6.1.0:
version "6.2.1"
resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-6.2.1.tgz#0e62320cf99c21afff3b3012192546aacbfb05c5"
@@ -3116,7 +2696,7 @@ antd@5.17.1:
scroll-into-view-if-needed "^3.1.0"
throttle-debounce "^5.0.0"
-anymatch@^3.0.3, anymatch@~3.1.2:
+anymatch@~3.1.2:
version "3.1.3"
resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.3.tgz#790c58b19ba1720a84205b57c618d5ad8524973e"
integrity sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==
@@ -3374,19 +2954,6 @@ axobject-query@^3.2.1:
dependencies:
dequal "^2.0.3"
-babel-jest@^29.7.0:
- version "29.7.0"
- resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-29.7.0.tgz#f4369919225b684c56085998ac63dbd05be020d5"
- integrity sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==
- dependencies:
- "@jest/transform" "^29.7.0"
- "@types/babel__core" "^7.1.14"
- babel-plugin-istanbul "^6.1.1"
- babel-preset-jest "^29.6.3"
- chalk "^4.0.0"
- graceful-fs "^4.2.9"
- slash "^3.0.0"
-
babel-loader@^8.0.6:
version "8.3.0"
resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-8.3.0.tgz#124936e841ba4fe8176786d6ff28add1f134d6a8"
@@ -3404,7 +2971,7 @@ babel-plugin-import@^1.12.2:
dependencies:
"@babel/helper-module-imports" "^7.0.0"
-babel-plugin-istanbul@^6.0.0, babel-plugin-istanbul@^6.1.1:
+babel-plugin-istanbul@^6.0.0:
version "6.1.1"
resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz#fa88ec59232fd9b4e36dbbc540a8ec9a9b47da73"
integrity sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==
@@ -3415,16 +2982,6 @@ babel-plugin-istanbul@^6.0.0, babel-plugin-istanbul@^6.1.1:
istanbul-lib-instrument "^5.0.4"
test-exclude "^6.0.0"
-babel-plugin-jest-hoist@^29.6.3:
- version "29.6.3"
- resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.6.3.tgz#aadbe943464182a8922c3c927c3067ff40d24626"
- integrity sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg==
- dependencies:
- "@babel/template" "^7.3.3"
- "@babel/types" "^7.3.3"
- "@types/babel__core" "^7.1.14"
- "@types/babel__traverse" "^7.0.6"
-
babel-plugin-polyfill-corejs2@^0.4.10:
version "0.4.11"
resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.11.tgz#30320dfe3ffe1a336c15afdcdafd6fd615b25e33"
@@ -3462,32 +3019,6 @@ babel-plugin-transform-import-meta@^2.2.1:
"@babel/template" "^7.4.4"
tslib "^2.4.0"
-babel-preset-current-node-syntax@^1.0.0:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz#b4399239b89b2a011f9ddbe3e4f401fc40cff73b"
- integrity sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==
- dependencies:
- "@babel/plugin-syntax-async-generators" "^7.8.4"
- "@babel/plugin-syntax-bigint" "^7.8.3"
- "@babel/plugin-syntax-class-properties" "^7.8.3"
- "@babel/plugin-syntax-import-meta" "^7.8.3"
- "@babel/plugin-syntax-json-strings" "^7.8.3"
- "@babel/plugin-syntax-logical-assignment-operators" "^7.8.3"
- "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3"
- "@babel/plugin-syntax-numeric-separator" "^7.8.3"
- "@babel/plugin-syntax-object-rest-spread" "^7.8.3"
- "@babel/plugin-syntax-optional-catch-binding" "^7.8.3"
- "@babel/plugin-syntax-optional-chaining" "^7.8.3"
- "@babel/plugin-syntax-top-level-await" "^7.8.3"
-
-babel-preset-jest@^29.6.3:
- version "29.6.3"
- resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-29.6.3.tgz#fa05fa510e7d493896d7b0dd2033601c840f171c"
- integrity sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA==
- dependencies:
- babel-plugin-jest-hoist "^29.6.3"
- babel-preset-current-node-syntax "^1.0.0"
-
babel-runtime@6.x:
version "6.26.0"
resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.26.0.tgz#965c7058668e82b55d7bfe04ff2337bc8b5647fe"
@@ -3604,13 +3135,6 @@ browserslist@^4.21.10, browserslist@^4.22.2, browserslist@^4.22.3, browserslist@
node-releases "^2.0.14"
update-browserslist-db "^1.0.13"
-bser@2.1.1:
- version "2.1.1"
- resolved "https://registry.yarnpkg.com/bser/-/bser-2.1.1.tgz#e6787da20ece9d07998533cfd9de6f5c38f4bc05"
- integrity sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==
- dependencies:
- node-int64 "^0.4.0"
-
buffer-from@^1.0.0, buffer-from@^1.1.2:
version "1.1.2"
resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5"
@@ -3695,7 +3219,7 @@ camelcase@^5.0.0, camelcase@^5.3.1:
resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320"
integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==
-camelcase@^6.2.0, camelcase@^6.3.0:
+camelcase@^6.3.0:
version "6.3.0"
resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a"
integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==
@@ -3734,7 +3258,7 @@ chalk@5.3.0:
resolved "https://registry.yarnpkg.com/chalk/-/chalk-5.3.0.tgz#67c20a7ebef70e7f3970a01f90fa210cb6860385"
integrity sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==
-chalk@^2.0.1, chalk@^2.4.1, chalk@^2.4.2:
+chalk@^2.4.1, chalk@^2.4.2:
version "2.4.2"
resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424"
integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==
@@ -3759,11 +3283,6 @@ chalk@^4.0.0:
ansi-styles "^4.1.0"
supports-color "^7.1.0"
-char-regex@^1.0.2:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/char-regex/-/char-regex-1.0.2.tgz#d744358226217f981ed58f479b1d6bcc29545dcf"
- integrity sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==
-
character-entities-html4@^2.0.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/character-entities-html4/-/character-entities-html4-2.1.0.tgz#1f1adb940c971a4b22ba39ddca6b618dc6e56b2b"
@@ -3841,16 +3360,6 @@ chrome-trace-event@^1.0.2:
resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz#1015eced4741e15d06664a957dbbf50d041e26ac"
integrity sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==
-ci-info@^3.2.0:
- version "3.9.0"
- resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.9.0.tgz#4279a62028a7b1f262f3473fc9605f5e218c59b4"
- integrity sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==
-
-cjs-module-lexer@^1.0.0:
- version "1.3.1"
- resolved "https://registry.yarnpkg.com/cjs-module-lexer/-/cjs-module-lexer-1.3.1.tgz#c485341ae8fd999ca4ee5af2d7a1c9ae01e0099c"
- integrity sha512-a3KdPAANPbNE4ZUv9h6LckSl9zLsYOP4MBmhIPkRaeyybt+r4UghLvq+xw/YwUcC1gqylCkL4rdVs3Lwupjm4Q==
-
classnames@2.x, classnames@^2.2.1, classnames@^2.2.3, classnames@^2.2.5, classnames@^2.2.6, classnames@^2.3.1, classnames@^2.3.2, classnames@^2.5.1:
version "2.5.1"
resolved "https://registry.yarnpkg.com/classnames/-/classnames-2.5.1.tgz#ba774c614be0f016da105c858e7159eae8e7687b"
@@ -3937,11 +3446,6 @@ co@3.1.0:
resolved "https://registry.yarnpkg.com/co/-/co-3.1.0.tgz#4ea54ea5a08938153185e15210c68d9092bc1b78"
integrity sha512-CQsjCRiNObI8AtTsNIBDRMQ4oMR83CzEswHYahClvul7gKk+lDQiOKv+5qh7LQWf5sh6jkZNispz/QlsZxyNgA==
-co@^4.6.0:
- version "4.6.0"
- resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184"
- integrity sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==
-
coa@^2.0.2:
version "2.0.2"
resolved "https://registry.yarnpkg.com/coa/-/coa-2.0.2.tgz#43f6c21151b4ef2bf57187db0d73de229e3e7ec3"
@@ -3956,11 +3460,6 @@ collapse-white-space@^1.0.4:
resolved "https://registry.yarnpkg.com/collapse-white-space/-/collapse-white-space-1.0.6.tgz#e63629c0016665792060dbbeb79c42239d2c5287"
integrity sha512-jEovNnrhMuqyCcjfEJA56v0Xq8SkIoPKDyaHahwo3POf4qcSXqMYuwNcOTzp74vTsR9Tn08z4MxWqAhcekogkQ==
-collect-v8-coverage@^1.0.0:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/collect-v8-coverage/-/collect-v8-coverage-1.0.2.tgz#c0b29bcd33bcd0779a1344c2136051e6afd3d9e9"
- integrity sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==
-
color-convert@^1.9.0:
version "1.9.3"
resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8"
@@ -4188,19 +3687,6 @@ cosmiconfig@^8.2.0, cosmiconfig@^8.3.5:
parse-json "^5.2.0"
path-type "^4.0.0"
-create-jest@^29.7.0:
- version "29.7.0"
- resolved "https://registry.yarnpkg.com/create-jest/-/create-jest-29.7.0.tgz#a355c5b3cb1e1af02ba177fe7afd7feee49a5320"
- integrity sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==
- dependencies:
- "@jest/types" "^29.6.3"
- chalk "^4.0.0"
- exit "^0.1.2"
- graceful-fs "^4.2.9"
- jest-config "^29.7.0"
- jest-util "^29.7.0"
- prompts "^2.0.1"
-
create-react-class@^15.5.3:
version "15.7.0"
resolved "https://registry.yarnpkg.com/create-react-class/-/create-react-class-15.7.0.tgz#7499d7ca2e69bb51d13faf59bd04f0c65a1d6c1e"
@@ -4413,7 +3899,7 @@ damerau-levenshtein@^1.0.8:
resolved "https://registry.yarnpkg.com/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz#b43d286ccbd36bc5b2f7ed41caf2d0aba1f8a6e7"
integrity sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==
-data-urls@^3.0.1, data-urls@^3.0.2:
+data-urls@^3.0.1:
version "3.0.2"
resolved "https://registry.yarnpkg.com/data-urls/-/data-urls-3.0.2.tgz#9cf24a477ae22bcef5cd5f6f0bfbc1d2d3be9143"
integrity sha512-Jy/tj3ldjZJo63sVAvg6LHt2mHvl4V6AgRAmNDtLdm7faqtsx+aJG42rsyCo9JCoRVKwPFzKlIPx3DIibwSIaQ==
@@ -4493,7 +3979,7 @@ decamelize@^5.0.0:
resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-5.0.1.tgz#db11a92e58c741ef339fb0a2868d8a06a9a7b1e9"
integrity sha512-VfxadyCECXgQlkoEAjeghAr5gY3Hf+IKjKb+X8tGVDtveCjN+USwprd2q3QXBR9T1+x2DG0XZF5/w+7HAtSaXA==
-decimal.js@^10.3.1, decimal.js@^10.4.2:
+decimal.js@^10.3.1:
version "10.4.3"
resolved "https://registry.yarnpkg.com/decimal.js/-/decimal.js-10.4.3.tgz#1044092884d245d1b7f65725fa4ad4c6f781cc23"
integrity sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==
@@ -4519,11 +4005,6 @@ decompress-response@^4.2.0:
dependencies:
mimic-response "^2.0.0"
-dedent@^1.0.0:
- version "1.5.3"
- resolved "https://registry.yarnpkg.com/dedent/-/dedent-1.5.3.tgz#99aee19eb9bae55a67327717b6e848d0bf777e5a"
- integrity sha512-NHQtfOOW68WD8lgypbLA5oT+Bt0xXJhiYvoR6SmmNXZfpzOGXwdKWmcwG8N7PwVVWV3eF/68nmD9BaJSsTBhyQ==
-
deep-diff@^0.3.5:
version "0.3.8"
resolved "https://registry.yarnpkg.com/deep-diff/-/deep-diff-0.3.8.tgz#c01de63efb0eec9798801d40c7e0dae25b582c84"
@@ -4534,11 +4015,6 @@ deep-is@^0.1.3:
resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831"
integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==
-deepmerge@^4.2.2:
- version "4.3.1"
- resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.3.1.tgz#44b5f2147cd3b00d4b56137685966f26fd25dd4a"
- integrity sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==
-
default-gateway@^6.0.3:
version "6.0.3"
resolved "https://registry.yarnpkg.com/default-gateway/-/default-gateway-6.0.3.tgz#819494c888053bdb743edbf343d6cdf7f2943a71"
@@ -4621,21 +4097,11 @@ detect-libc@^2.0.0:
resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-2.0.3.tgz#f0cd503b40f9939b894697d19ad50895e30cf700"
integrity sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==
-detect-newline@^3.0.0:
- version "3.1.0"
- resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-3.1.0.tgz#576f5dfc63ae1a192ff192d8ad3af6308991b651"
- integrity sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==
-
detect-node@^2.0.4:
version "2.1.0"
resolved "https://registry.yarnpkg.com/detect-node/-/detect-node-2.1.0.tgz#c9c70775a49c3d03bc2c06d9a73be550f978f8b1"
integrity sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==
-diff-sequences@^29.6.3:
- version "29.6.3"
- resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-29.6.3.tgz#4deaf894d11407c51efc8418012f9e70b84ea921"
- integrity sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==
-
diff@^5.0.0:
version "5.2.0"
resolved "https://registry.yarnpkg.com/diff/-/diff-5.2.0.tgz#26ded047cd1179b78b9537d5ef725503ce1ae531"
@@ -4806,11 +4272,6 @@ electron-to-chromium@^1.4.668:
resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.761.tgz#d1bdf8c50a254f8a756641bb1ac48bb52e4d0ec3"
integrity sha512-PIbxpiJGx6Bb8dQaonNc6CGTRlVntdLg/2nMa1YhnrwYOORY9a3ZgGN0UQYE6lAcj/lkyduJN7BPt/JiY+jAQQ==
-emittery@^0.13.1:
- version "0.13.1"
- resolved "https://registry.yarnpkg.com/emittery/-/emittery-0.13.1.tgz#c04b8c3457490e0847ae51fced3af52d338e3dad"
- integrity sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==
-
emoji-regex@^8.0.0:
version "8.0.0"
resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37"
@@ -4856,11 +4317,6 @@ entities@^2.0.0:
resolved "https://registry.yarnpkg.com/entities/-/entities-2.2.0.tgz#098dc90ebb83d8dffa089d55256b351d34c4da55"
integrity sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==
-entities@^4.4.0:
- version "4.5.0"
- resolved "https://registry.yarnpkg.com/entities/-/entities-4.5.0.tgz#5d268ea5e7113ec74c4d033b79ea5a35a488fb48"
- integrity sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==
-
envinfo@^7.7.3:
version "7.13.0"
resolved "https://registry.yarnpkg.com/envinfo/-/envinfo-7.13.0.tgz#81fbb81e5da35d74e814941aeab7c325a606fb31"
@@ -5026,11 +4482,6 @@ escape-string-regexp@^1.0.5:
resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4"
integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==
-escape-string-regexp@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz#a30304e99daa32e23b2fd20f51babd07cffca344"
- integrity sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==
-
escape-string-regexp@^4.0.0:
version "4.0.0"
resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34"
@@ -5133,13 +4584,6 @@ eslint-plugin-import@^2.22.1:
semver "^6.3.1"
tsconfig-paths "^3.15.0"
-eslint-plugin-jest@^26.5.3:
- version "26.9.0"
- resolved "https://registry.yarnpkg.com/eslint-plugin-jest/-/eslint-plugin-jest-26.9.0.tgz#7931c31000b1c19e57dbfb71bbf71b817d1bf949"
- integrity sha512-TWJxWGp1J628gxh2KhaH1H1paEdgE2J61BBF1I59c6xWeL5+D1BzMxGDN/nXAfX+aSkR5u80K+XhskK6Gwq9ng==
- dependencies:
- "@typescript-eslint/utils" "^5.10.0"
-
eslint-plugin-jsx-a11y@^6.3.1:
version "6.8.0"
resolved "https://registry.yarnpkg.com/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.8.0.tgz#2fa9c701d44fcd722b7c771ec322432857fcbad2"
@@ -5203,7 +4647,7 @@ eslint-plugin-security@^1.4.0:
dependencies:
safe-regex "^2.1.1"
-eslint-scope@5.1.1, eslint-scope@^5.1.1:
+eslint-scope@5.1.1:
version "5.1.1"
resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c"
integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==
@@ -5366,22 +4810,6 @@ execa@^5.0.0:
signal-exit "^3.0.3"
strip-final-newline "^2.0.0"
-exit@^0.1.2:
- version "0.1.2"
- resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c"
- integrity sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==
-
-expect@^29.7.0:
- version "29.7.0"
- resolved "https://registry.yarnpkg.com/expect/-/expect-29.7.0.tgz#578874590dcb3214514084c08115d8aee61e11bc"
- integrity sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==
- dependencies:
- "@jest/expect-utils" "^29.7.0"
- jest-get-type "^29.6.3"
- jest-matcher-utils "^29.7.0"
- jest-message-util "^29.7.0"
- jest-util "^29.7.0"
-
express@^4.17.3:
version "4.20.0"
resolved "https://registry.yarnpkg.com/express/-/express-4.20.0.tgz#f1d08e591fcec770c07be4767af8eb9bcfd67c48"
@@ -5453,7 +4881,7 @@ fast-glob@^3.2.11, fast-glob@^3.2.9, fast-glob@^3.3.0, fast-glob@^3.3.1:
merge2 "^1.3.0"
micromatch "^4.0.4"
-fast-json-stable-stringify@^2.0.0, fast-json-stable-stringify@^2.1.0:
+fast-json-stable-stringify@^2.0.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633"
integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==
@@ -5489,13 +4917,6 @@ faye-websocket@^0.11.3:
dependencies:
websocket-driver ">=0.5.1"
-fb-watchman@^2.0.0:
- version "2.0.2"
- resolved "https://registry.yarnpkg.com/fb-watchman/-/fb-watchman-2.0.2.tgz#e9524ee6b5c77e9e5001af0f85f3adbb8623255c"
- integrity sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==
- dependencies:
- bser "2.1.1"
-
fflate@~0.6.10:
version "0.6.10"
resolved "https://registry.yarnpkg.com/fflate/-/fflate-0.6.10.tgz#5f40f9659205936a2d18abf88b2e7781662b6d43"
@@ -5688,7 +5109,7 @@ fs.realpath@^1.0.0:
resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f"
integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==
-fsevents@^2.3.2, fsevents@~2.3.2:
+fsevents@~2.3.2:
version "2.3.3"
resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6"
integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==
@@ -5906,7 +5327,7 @@ got@^9.6.0:
to-readable-stream "^1.0.0"
url-parse-lax "^3.0.0"
-graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.2.11, graceful-fs@^4.2.4, graceful-fs@^4.2.6, graceful-fs@^4.2.9:
+graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.2.11, graceful-fs@^4.2.4, graceful-fs@^4.2.6:
version "4.2.11"
resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3"
integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==
@@ -6287,7 +5708,7 @@ http-proxy@^1.18.1:
follow-redirects "^1.0.0"
requires-port "^1.0.0"
-https-proxy-agent@^5.0.0, https-proxy-agent@^5.0.1:
+https-proxy-agent@^5.0.0:
version "5.0.1"
resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz#c59ef224a04fe8b754f3db0063a25ea30d0005d6"
integrity sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==
@@ -6607,11 +6028,6 @@ is-fullwidth-code-point@^4.0.0:
resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-4.0.0.tgz#fae3167c729e7463f8461ce512b080a49268aa88"
integrity sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==
-is-generator-fn@^2.0.0:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/is-generator-fn/-/is-generator-fn-2.1.0.tgz#7d140adc389aaf3011a8f2a2a4cfa6faadffb118"
- integrity sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==
-
is-generator-function@^1.0.10:
version "1.0.10"
resolved "https://registry.yarnpkg.com/is-generator-function/-/is-generator-function-1.0.10.tgz#f1558baf1ac17e0deea7c0415c438351ff2b3c72"
@@ -6875,17 +6291,6 @@ istanbul-lib-instrument@^5.0.4:
istanbul-lib-coverage "^3.2.0"
semver "^6.3.0"
-istanbul-lib-instrument@^6.0.0:
- version "6.0.2"
- resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.2.tgz#91655936cf7380e4e473383081e38478b69993b1"
- integrity sha512-1WUsZ9R1lA0HtBSohTkm39WTPlNKSJ5iFk7UwqXkBLoHQT+hfqPsfsTDVuZdKGaBwn7din9bS7SsnoAr943hvw==
- dependencies:
- "@babel/core" "^7.23.9"
- "@babel/parser" "^7.23.9"
- "@istanbuljs/schema" "^0.1.3"
- istanbul-lib-coverage "^3.2.0"
- semver "^7.5.4"
-
istanbul-lib-processinfo@^2.0.2:
version "2.0.3"
resolved "https://registry.yarnpkg.com/istanbul-lib-processinfo/-/istanbul-lib-processinfo-2.0.3.tgz#366d454cd0dcb7eb6e0e419378e60072c8626169"
@@ -6916,7 +6321,7 @@ istanbul-lib-source-maps@^4.0.0:
istanbul-lib-coverage "^3.0.0"
source-map "^0.6.1"
-istanbul-reports@^3.0.2, istanbul-reports@^3.1.3:
+istanbul-reports@^3.0.2:
version "3.1.7"
resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-3.1.7.tgz#daed12b9e1dca518e15c056e1e537e741280fa0b"
integrity sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==
@@ -6935,385 +6340,6 @@ iterator.prototype@^1.1.2:
reflect.getprototypeof "^1.0.4"
set-function-name "^2.0.1"
-jest-changed-files@^29.7.0:
- version "29.7.0"
- resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-29.7.0.tgz#1c06d07e77c78e1585d020424dedc10d6e17ac3a"
- integrity sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w==
- dependencies:
- execa "^5.0.0"
- jest-util "^29.7.0"
- p-limit "^3.1.0"
-
-jest-circus@^29.7.0:
- version "29.7.0"
- resolved "https://registry.yarnpkg.com/jest-circus/-/jest-circus-29.7.0.tgz#b6817a45fcc835d8b16d5962d0c026473ee3668a"
- integrity sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw==
- dependencies:
- "@jest/environment" "^29.7.0"
- "@jest/expect" "^29.7.0"
- "@jest/test-result" "^29.7.0"
- "@jest/types" "^29.6.3"
- "@types/node" "*"
- chalk "^4.0.0"
- co "^4.6.0"
- dedent "^1.0.0"
- is-generator-fn "^2.0.0"
- jest-each "^29.7.0"
- jest-matcher-utils "^29.7.0"
- jest-message-util "^29.7.0"
- jest-runtime "^29.7.0"
- jest-snapshot "^29.7.0"
- jest-util "^29.7.0"
- p-limit "^3.1.0"
- pretty-format "^29.7.0"
- pure-rand "^6.0.0"
- slash "^3.0.0"
- stack-utils "^2.0.3"
-
-jest-cli@^29.7.0:
- version "29.7.0"
- resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-29.7.0.tgz#5592c940798e0cae677eec169264f2d839a37995"
- integrity sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg==
- dependencies:
- "@jest/core" "^29.7.0"
- "@jest/test-result" "^29.7.0"
- "@jest/types" "^29.6.3"
- chalk "^4.0.0"
- create-jest "^29.7.0"
- exit "^0.1.2"
- import-local "^3.0.2"
- jest-config "^29.7.0"
- jest-util "^29.7.0"
- jest-validate "^29.7.0"
- yargs "^17.3.1"
-
-jest-config@^29.5.0, jest-config@^29.7.0:
- version "29.7.0"
- resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-29.7.0.tgz#bcbda8806dbcc01b1e316a46bb74085a84b0245f"
- integrity sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==
- dependencies:
- "@babel/core" "^7.11.6"
- "@jest/test-sequencer" "^29.7.0"
- "@jest/types" "^29.6.3"
- babel-jest "^29.7.0"
- chalk "^4.0.0"
- ci-info "^3.2.0"
- deepmerge "^4.2.2"
- glob "^7.1.3"
- graceful-fs "^4.2.9"
- jest-circus "^29.7.0"
- jest-environment-node "^29.7.0"
- jest-get-type "^29.6.3"
- jest-regex-util "^29.6.3"
- jest-resolve "^29.7.0"
- jest-runner "^29.7.0"
- jest-util "^29.7.0"
- jest-validate "^29.7.0"
- micromatch "^4.0.4"
- parse-json "^5.2.0"
- pretty-format "^29.7.0"
- slash "^3.0.0"
- strip-json-comments "^3.1.1"
-
-jest-diff@^29.7.0:
- version "29.7.0"
- resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-29.7.0.tgz#017934a66ebb7ecf6f205e84699be10afd70458a"
- integrity sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==
- dependencies:
- chalk "^4.0.0"
- diff-sequences "^29.6.3"
- jest-get-type "^29.6.3"
- pretty-format "^29.7.0"
-
-jest-docblock@^29.7.0:
- version "29.7.0"
- resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-29.7.0.tgz#8fddb6adc3cdc955c93e2a87f61cfd350d5d119a"
- integrity sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g==
- dependencies:
- detect-newline "^3.0.0"
-
-jest-each@^29.7.0:
- version "29.7.0"
- resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-29.7.0.tgz#162a9b3f2328bdd991beaabffbb74745e56577d1"
- integrity sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ==
- dependencies:
- "@jest/types" "^29.6.3"
- chalk "^4.0.0"
- jest-get-type "^29.6.3"
- jest-util "^29.7.0"
- pretty-format "^29.7.0"
-
-jest-environment-jsdom@^29.5.0:
- version "29.7.0"
- resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-29.7.0.tgz#d206fa3551933c3fd519e5dfdb58a0f5139a837f"
- integrity sha512-k9iQbsf9OyOfdzWH8HDmrRT0gSIcX+FLNW7IQq94tFX0gynPwqDTW0Ho6iMVNjGz/nb+l/vW3dWM2bbLLpkbXA==
- dependencies:
- "@jest/environment" "^29.7.0"
- "@jest/fake-timers" "^29.7.0"
- "@jest/types" "^29.6.3"
- "@types/jsdom" "^20.0.0"
- "@types/node" "*"
- jest-mock "^29.7.0"
- jest-util "^29.7.0"
- jsdom "^20.0.0"
-
-jest-environment-node@^29.7.0:
- version "29.7.0"
- resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-29.7.0.tgz#0b93e111dda8ec120bc8300e6d1fb9576e164376"
- integrity sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw==
- dependencies:
- "@jest/environment" "^29.7.0"
- "@jest/fake-timers" "^29.7.0"
- "@jest/types" "^29.6.3"
- "@types/node" "*"
- jest-mock "^29.7.0"
- jest-util "^29.7.0"
-
-jest-get-type@^24.9.0:
- version "24.9.0"
- resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-24.9.0.tgz#1684a0c8a50f2e4901b6644ae861f579eed2ef0e"
- integrity sha512-lUseMzAley4LhIcpSP9Jf+fTrQ4a1yHQwLNeeVa2cEmbCGeoZAtYPOIv8JaxLD/sUpKxetKGP+gsHl8f8TSj8Q==
-
-jest-get-type@^29.6.3:
- version "29.6.3"
- resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-29.6.3.tgz#36f499fdcea197c1045a127319c0481723908fd1"
- integrity sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==
-
-jest-haste-map@^29.7.0:
- version "29.7.0"
- resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-29.7.0.tgz#3c2396524482f5a0506376e6c858c3bbcc17b104"
- integrity sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==
- dependencies:
- "@jest/types" "^29.6.3"
- "@types/graceful-fs" "^4.1.3"
- "@types/node" "*"
- anymatch "^3.0.3"
- fb-watchman "^2.0.0"
- graceful-fs "^4.2.9"
- jest-regex-util "^29.6.3"
- jest-util "^29.7.0"
- jest-worker "^29.7.0"
- micromatch "^4.0.4"
- walker "^1.0.8"
- optionalDependencies:
- fsevents "^2.3.2"
-
-jest-junit@^6.4.0:
- version "6.4.0"
- resolved "https://registry.yarnpkg.com/jest-junit/-/jest-junit-6.4.0.tgz#23e15c979fa6338afde46f2d2ac2a6b7e8cf0d9e"
- integrity sha512-GXEZA5WBeUich94BARoEUccJumhCgCerg7mXDFLxWwI2P7wL3Z7sGWk+53x343YdBLjiMR9aD/gYMVKO+0pE4Q==
- dependencies:
- jest-validate "^24.0.0"
- mkdirp "^0.5.1"
- strip-ansi "^4.0.0"
- xml "^1.0.1"
-
-jest-leak-detector@^29.7.0:
- version "29.7.0"
- resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-29.7.0.tgz#5b7ec0dadfdfec0ca383dc9aa016d36b5ea4c728"
- integrity sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw==
- dependencies:
- jest-get-type "^29.6.3"
- pretty-format "^29.7.0"
-
-jest-matcher-utils@^29.7.0:
- version "29.7.0"
- resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-29.7.0.tgz#ae8fec79ff249fd592ce80e3ee474e83a6c44f12"
- integrity sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==
- dependencies:
- chalk "^4.0.0"
- jest-diff "^29.7.0"
- jest-get-type "^29.6.3"
- pretty-format "^29.7.0"
-
-jest-message-util@^29.7.0:
- version "29.7.0"
- resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-29.7.0.tgz#8bc392e204e95dfe7564abbe72a404e28e51f7f3"
- integrity sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==
- dependencies:
- "@babel/code-frame" "^7.12.13"
- "@jest/types" "^29.6.3"
- "@types/stack-utils" "^2.0.0"
- chalk "^4.0.0"
- graceful-fs "^4.2.9"
- micromatch "^4.0.4"
- pretty-format "^29.7.0"
- slash "^3.0.0"
- stack-utils "^2.0.3"
-
-jest-mock@^29.7.0:
- version "29.7.0"
- resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-29.7.0.tgz#4e836cf60e99c6fcfabe9f99d017f3fdd50a6347"
- integrity sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==
- dependencies:
- "@jest/types" "^29.6.3"
- "@types/node" "*"
- jest-util "^29.7.0"
-
-jest-pnp-resolver@^1.2.2:
- version "1.2.3"
- resolved "https://registry.yarnpkg.com/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz#930b1546164d4ad5937d5540e711d4d38d4cad2e"
- integrity sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==
-
-jest-regex-util@^29.6.3:
- version "29.6.3"
- resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-29.6.3.tgz#4a556d9c776af68e1c5f48194f4d0327d24e8a52"
- integrity sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==
-
-jest-resolve-dependencies@^29.7.0:
- version "29.7.0"
- resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-29.7.0.tgz#1b04f2c095f37fc776ff40803dc92921b1e88428"
- integrity sha512-un0zD/6qxJ+S0et7WxeI3H5XSe9lTBBR7bOHCHXkKR6luG5mwDDlIzVQ0V5cZCuoTgEdcdwzTghYkTWfubi+nA==
- dependencies:
- jest-regex-util "^29.6.3"
- jest-snapshot "^29.7.0"
-
-jest-resolve@^29.7.0:
- version "29.7.0"
- resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-29.7.0.tgz#64d6a8992dd26f635ab0c01e5eef4399c6bcbc30"
- integrity sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA==
- dependencies:
- chalk "^4.0.0"
- graceful-fs "^4.2.9"
- jest-haste-map "^29.7.0"
- jest-pnp-resolver "^1.2.2"
- jest-util "^29.7.0"
- jest-validate "^29.7.0"
- resolve "^1.20.0"
- resolve.exports "^2.0.0"
- slash "^3.0.0"
-
-jest-runner@^29.7.0:
- version "29.7.0"
- resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-29.7.0.tgz#809af072d408a53dcfd2e849a4c976d3132f718e"
- integrity sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ==
- dependencies:
- "@jest/console" "^29.7.0"
- "@jest/environment" "^29.7.0"
- "@jest/test-result" "^29.7.0"
- "@jest/transform" "^29.7.0"
- "@jest/types" "^29.6.3"
- "@types/node" "*"
- chalk "^4.0.0"
- emittery "^0.13.1"
- graceful-fs "^4.2.9"
- jest-docblock "^29.7.0"
- jest-environment-node "^29.7.0"
- jest-haste-map "^29.7.0"
- jest-leak-detector "^29.7.0"
- jest-message-util "^29.7.0"
- jest-resolve "^29.7.0"
- jest-runtime "^29.7.0"
- jest-util "^29.7.0"
- jest-watcher "^29.7.0"
- jest-worker "^29.7.0"
- p-limit "^3.1.0"
- source-map-support "0.5.13"
-
-jest-runtime@^29.7.0:
- version "29.7.0"
- resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-29.7.0.tgz#efecb3141cf7d3767a3a0cc8f7c9990587d3d817"
- integrity sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ==
- dependencies:
- "@jest/environment" "^29.7.0"
- "@jest/fake-timers" "^29.7.0"
- "@jest/globals" "^29.7.0"
- "@jest/source-map" "^29.6.3"
- "@jest/test-result" "^29.7.0"
- "@jest/transform" "^29.7.0"
- "@jest/types" "^29.6.3"
- "@types/node" "*"
- chalk "^4.0.0"
- cjs-module-lexer "^1.0.0"
- collect-v8-coverage "^1.0.0"
- glob "^7.1.3"
- graceful-fs "^4.2.9"
- jest-haste-map "^29.7.0"
- jest-message-util "^29.7.0"
- jest-mock "^29.7.0"
- jest-regex-util "^29.6.3"
- jest-resolve "^29.7.0"
- jest-snapshot "^29.7.0"
- jest-util "^29.7.0"
- slash "^3.0.0"
- strip-bom "^4.0.0"
-
-jest-snapshot@^29.7.0:
- version "29.7.0"
- resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-29.7.0.tgz#c2c574c3f51865da1bb329036778a69bf88a6be5"
- integrity sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw==
- dependencies:
- "@babel/core" "^7.11.6"
- "@babel/generator" "^7.7.2"
- "@babel/plugin-syntax-jsx" "^7.7.2"
- "@babel/plugin-syntax-typescript" "^7.7.2"
- "@babel/types" "^7.3.3"
- "@jest/expect-utils" "^29.7.0"
- "@jest/transform" "^29.7.0"
- "@jest/types" "^29.6.3"
- babel-preset-current-node-syntax "^1.0.0"
- chalk "^4.0.0"
- expect "^29.7.0"
- graceful-fs "^4.2.9"
- jest-diff "^29.7.0"
- jest-get-type "^29.6.3"
- jest-matcher-utils "^29.7.0"
- jest-message-util "^29.7.0"
- jest-util "^29.7.0"
- natural-compare "^1.4.0"
- pretty-format "^29.7.0"
- semver "^7.5.3"
-
-jest-util@^29.7.0:
- version "29.7.0"
- resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-29.7.0.tgz#23c2b62bfb22be82b44de98055802ff3710fc0bc"
- integrity sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==
- dependencies:
- "@jest/types" "^29.6.3"
- "@types/node" "*"
- chalk "^4.0.0"
- ci-info "^3.2.0"
- graceful-fs "^4.2.9"
- picomatch "^2.2.3"
-
-jest-validate@^24.0.0:
- version "24.9.0"
- resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-24.9.0.tgz#0775c55360d173cd854e40180756d4ff52def8ab"
- integrity sha512-HPIt6C5ACwiqSiwi+OfSSHbK8sG7akG8eATl+IPKaeIjtPOeBUd/g3J7DghugzxrGjI93qS/+RPKe1H6PqvhRQ==
- dependencies:
- "@jest/types" "^24.9.0"
- camelcase "^5.3.1"
- chalk "^2.0.1"
- jest-get-type "^24.9.0"
- leven "^3.1.0"
- pretty-format "^24.9.0"
-
-jest-validate@^29.7.0:
- version "29.7.0"
- resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-29.7.0.tgz#7bf705511c64da591d46b15fce41400d52147d9c"
- integrity sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw==
- dependencies:
- "@jest/types" "^29.6.3"
- camelcase "^6.2.0"
- chalk "^4.0.0"
- jest-get-type "^29.6.3"
- leven "^3.1.0"
- pretty-format "^29.7.0"
-
-jest-watcher@^29.7.0:
- version "29.7.0"
- resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-29.7.0.tgz#7810d30d619c3a62093223ce6bb359ca1b28a2f2"
- integrity sha512-49Fg7WXkU3Vl2h6LbLtMQ/HyB6rXSIX7SqvBLQmssRBGN9I0PNvPmAmCWSOY6SOvrjhI/F7/bGAv9RtnsPA03g==
- dependencies:
- "@jest/test-result" "^29.7.0"
- "@jest/types" "^29.6.3"
- "@types/node" "*"
- ansi-escapes "^4.2.1"
- chalk "^4.0.0"
- emittery "^0.13.1"
- jest-util "^29.7.0"
- string-length "^4.0.1"
-
jest-worker@^27.4.5:
version "27.5.1"
resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-27.5.1.tgz#8d146f0900e8973b106b6f73cc1e9a8cb86f8db0"
@@ -7323,26 +6349,6 @@ jest-worker@^27.4.5:
merge-stream "^2.0.0"
supports-color "^8.0.0"
-jest-worker@^29.7.0:
- version "29.7.0"
- resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-29.7.0.tgz#acad073acbbaeb7262bd5389e1bcf43e10058d4a"
- integrity sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==
- dependencies:
- "@types/node" "*"
- jest-util "^29.7.0"
- merge-stream "^2.0.0"
- supports-color "^8.0.0"
-
-jest@^29.5.0:
- version "29.7.0"
- resolved "https://registry.yarnpkg.com/jest/-/jest-29.7.0.tgz#994676fc24177f088f1c5e3737f5697204ff2613"
- integrity sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==
- dependencies:
- "@jest/core" "^29.7.0"
- "@jest/types" "^29.6.3"
- import-local "^3.0.2"
- jest-cli "^29.7.0"
-
jiti@^1.20.0:
version "1.21.0"
resolved "https://registry.yarnpkg.com/jiti/-/jiti-1.21.0.tgz#7c97f8fe045724e136a397f7340475244156105d"
@@ -7411,38 +6417,6 @@ jsdom@^19.0.0:
ws "^8.2.3"
xml-name-validator "^4.0.0"
-jsdom@^20.0.0:
- version "20.0.3"
- resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-20.0.3.tgz#886a41ba1d4726f67a8858028c99489fed6ad4db"
- integrity sha512-SYhBvTh89tTfCD/CRdSOm13mOBa42iTaTyfyEWBdKcGdPxPtLFBXuHR8XHb33YNYaP+lLbmSvBTsnoesCNJEsQ==
- dependencies:
- abab "^2.0.6"
- acorn "^8.8.1"
- acorn-globals "^7.0.0"
- cssom "^0.5.0"
- cssstyle "^2.3.0"
- data-urls "^3.0.2"
- decimal.js "^10.4.2"
- domexception "^4.0.0"
- escodegen "^2.0.0"
- form-data "^4.0.0"
- html-encoding-sniffer "^3.0.0"
- http-proxy-agent "^5.0.0"
- https-proxy-agent "^5.0.1"
- is-potential-custom-element-name "^1.0.1"
- nwsapi "^2.2.2"
- parse5 "^7.1.1"
- saxes "^6.0.0"
- symbol-tree "^3.2.4"
- tough-cookie "^4.1.2"
- w3c-xmlserializer "^4.0.0"
- webidl-conversions "^7.0.0"
- whatwg-encoding "^2.0.0"
- whatwg-mimetype "^3.0.0"
- whatwg-url "^11.0.0"
- ws "^8.11.0"
- xml-name-validator "^4.0.0"
-
jsesc@^2.5.1:
version "2.5.2"
resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4"
@@ -7546,11 +6520,6 @@ kind-of@^6.0.2, kind-of@^6.0.3:
resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd"
integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==
-kleur@^3.0.3:
- version "3.0.3"
- resolved "https://registry.yarnpkg.com/kleur/-/kleur-3.0.3.tgz#a79c9ecc86ee1ce3fa6206d1216c501f147fc07e"
- integrity sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==
-
kleur@^4.0.3:
version "4.1.5"
resolved "https://registry.yarnpkg.com/kleur/-/kleur-4.1.5.tgz#95106101795f7050c6c650f350c683febddb1780"
@@ -7586,11 +6555,6 @@ launch-editor@^2.6.0:
picocolors "^1.0.0"
shell-quote "^1.8.1"
-leven@^3.1.0:
- version "3.1.0"
- resolved "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2"
- integrity sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==
-
levn@^0.4.1:
version "0.4.1"
resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade"
@@ -7902,13 +6866,6 @@ make-dir@^4.0.0:
dependencies:
semver "^7.5.3"
-makeerror@1.0.12:
- version "1.0.12"
- resolved "https://registry.yarnpkg.com/makeerror/-/makeerror-1.0.12.tgz#3e5dd2079a82e812e983cc6610c4a2cb0eaa801a"
- integrity sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==
- dependencies:
- tmpl "1.0.5"
-
map-age-cleaner@^0.1.1:
version "0.1.3"
resolved "https://registry.yarnpkg.com/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz#7d583a7306434c055fe474b0f45078e6e1b4b92a"
@@ -8720,18 +7677,18 @@ minizlib@^2.1.1:
minipass "^3.0.0"
yallist "^4.0.0"
-mkdirp@^0.5.1, mkdirp@~0.5.1:
+mkdirp@^1.0.3:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e"
+ integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==
+
+mkdirp@~0.5.1:
version "0.5.6"
resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.6.tgz#7def03d2432dcae4ba1d611445c48396062255f6"
integrity sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==
dependencies:
minimist "^1.2.6"
-mkdirp@^1.0.3:
- version "1.0.4"
- resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e"
- integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==
-
moment@^2.29.2, moment@^2.30.1:
version "2.30.1"
resolved "https://registry.yarnpkg.com/moment/-/moment-2.30.1.tgz#f8c91c07b7a786e30c59926df530b4eac96974ae"
@@ -8815,11 +7772,6 @@ node-forge@^1:
resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-1.3.1.tgz#be8da2af243b2417d5f646a770663a92b7e9ded3"
integrity sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==
-node-int64@^0.4.0:
- version "0.4.0"
- resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b"
- integrity sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==
-
node-preload@^0.2.1:
version "0.2.1"
resolved "https://registry.yarnpkg.com/node-preload/-/node-preload-0.2.1.tgz#c03043bb327f417a18fee7ab7ee57b408a144301"
@@ -8930,7 +7882,7 @@ nth-check@^2.0.0, nth-check@^2.0.1:
dependencies:
boolbase "^1.0.0"
-nwsapi@^2.2.0, nwsapi@^2.2.2:
+nwsapi@^2.2.0:
version "2.2.9"
resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.2.9.tgz#7f3303218372db2e9f27c27766bcfc59ae7e61c6"
integrity sha512-2f3F0SEEer8bBu0dsNCFF50N0cTThV1nWFYcEYFZttdW0lDAoybv9cQoK7X7/68Z89S7FoRrVjP1LPX4XRf9vg==
@@ -9176,7 +8128,7 @@ p-limit@^2.0.0, p-limit@^2.2.0:
dependencies:
p-try "^2.0.0"
-p-limit@^3.0.2, p-limit@^3.1.0:
+p-limit@^3.0.2:
version "3.1.0"
resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b"
integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==
@@ -9328,13 +8280,6 @@ parse5@6.0.1, parse5@^6.0.0:
resolved "https://registry.yarnpkg.com/parse5/-/parse5-6.0.1.tgz#e1a1c085c569b3dc08321184f19a39cc27f7c30b"
integrity sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==
-parse5@^7.0.0, parse5@^7.1.1:
- version "7.1.2"
- resolved "https://registry.yarnpkg.com/parse5/-/parse5-7.1.2.tgz#0736bebbfd77793823240a23b7fc5e010b7f8e32"
- integrity sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==
- dependencies:
- entities "^4.4.0"
-
parseurl@~1.3.2, parseurl@~1.3.3:
version "1.3.3"
resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4"
@@ -9405,7 +8350,7 @@ picocolors@^1.0.0:
resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c"
integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==
-picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.3, picomatch@^2.3.1:
+picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.3.1:
version "2.3.1"
resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42"
integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==
@@ -9420,7 +8365,7 @@ pify@^4.0.1:
resolved "https://registry.yarnpkg.com/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231"
integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==
-pirates@^4.0.4, pirates@^4.0.6:
+pirates@^4.0.6:
version "4.0.6"
resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.6.tgz#3018ae32ecfcff6c29ba2267cbf21166ac1f36b9"
integrity sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==
@@ -9814,25 +8759,6 @@ pretty-error@^4.0.0:
lodash "^4.17.20"
renderkid "^3.0.0"
-pretty-format@^24.9.0:
- version "24.9.0"
- resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-24.9.0.tgz#12fac31b37019a4eea3c11aa9a959eb7628aa7c9"
- integrity sha512-00ZMZUiHaJrNfk33guavqgvfJS30sLYf0f8+Srklv0AMPodGGHcoHgksZ3OThYnIvOd+8yMCn0YiEOogjlgsnA==
- dependencies:
- "@jest/types" "^24.9.0"
- ansi-regex "^4.0.0"
- ansi-styles "^3.2.0"
- react-is "^16.8.4"
-
-pretty-format@^29.7.0:
- version "29.7.0"
- resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-29.7.0.tgz#ca42c758310f365bfa71a0bda0a807160b776812"
- integrity sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==
- dependencies:
- "@jest/schemas" "^29.6.3"
- ansi-styles "^5.0.0"
- react-is "^18.0.0"
-
process-nextick-args@~2.0.0:
version "2.0.1"
resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2"
@@ -9845,14 +8771,6 @@ process-on-spawn@^1.0.0:
dependencies:
fromentries "^1.2.0"
-prompts@^2.0.1:
- version "2.4.2"
- resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.4.2.tgz#7b57e73b3a48029ad10ebd44f74b01722a4cb069"
- integrity sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==
- dependencies:
- kleur "^3.0.3"
- sisteransi "^1.0.5"
-
prop-types@15.x, prop-types@^15.0.0, prop-types@^15.5.10, prop-types@^15.5.7, prop-types@^15.6.2, prop-types@^15.7.2, prop-types@^15.8.1:
version "15.8.1"
resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.8.1.tgz#67d87bf1a694f48435cf332c24af10214a3140b5"
@@ -9940,11 +8858,6 @@ punycode@^2.1.0, punycode@^2.1.1:
resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.1.tgz#027422e2faec0b25e1549c3e1bd8309b9133b6e5"
integrity sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==
-pure-rand@^6.0.0:
- version "6.1.0"
- resolved "https://registry.yarnpkg.com/pure-rand/-/pure-rand-6.1.0.tgz#d173cf23258231976ccbdb05247c9787957604f2"
- integrity sha512-bVWawvoZoBYpp6yIoQtQXHZjmz35RSVHnUOTefl8Vcjr8snTPY1wnpSPMWekcFwbxI6gtmT7rSYPFvz71ldiOA==
-
q@^1.1.2:
version "1.5.1"
resolved "https://registry.yarnpkg.com/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7"
@@ -10493,7 +9406,7 @@ react-grid-layout@^1.3.4:
react-resizable "^3.0.5"
resize-observer-polyfill "^1.5.1"
-react-is@^16.12.0, react-is@^16.13.1, react-is@^16.6.0, react-is@^16.7.0, react-is@^16.8.4:
+react-is@^16.12.0, react-is@^16.13.1, react-is@^16.6.0, react-is@^16.7.0:
version "16.13.1"
resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4"
integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==
@@ -11685,11 +10598,6 @@ resolve-pathname@^3.0.0:
resolved "https://registry.yarnpkg.com/resolve-pathname/-/resolve-pathname-3.0.0.tgz#99d02224d3cf263689becbb393bc560313025dcd"
integrity sha512-C7rARubxI8bXFNB/hqcp/4iUeIXJhJZvFPFPiSPRnhU5UPxzMFIl+2E6yY6c4k9giDJAhtV+enfA+G89N6Csng==
-resolve.exports@^2.0.0:
- version "2.0.2"
- resolved "https://registry.yarnpkg.com/resolve.exports/-/resolve.exports-2.0.2.tgz#f8c934b8e6a13f539e38b7098e2e36134f01e800"
- integrity sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg==
-
resolve@^1.14.2, resolve@^1.20.0, resolve@^1.22.4:
version "1.22.8"
resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.8.tgz#b6c87a9f2aa06dfab52e3d70ac8cde321fa5a48d"
@@ -11837,13 +10745,6 @@ saxes@^5.0.1:
dependencies:
xmlchars "^2.2.0"
-saxes@^6.0.0:
- version "6.0.0"
- resolved "https://registry.yarnpkg.com/saxes/-/saxes-6.0.0.tgz#fe5b4a4768df4f14a201b1ba6a65c1f3d9988cc5"
- integrity sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==
- dependencies:
- xmlchars "^2.2.0"
-
scheduler@^0.23.0:
version "0.23.2"
resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.23.2.tgz#414ba64a3b282892e944cf2108ecc078d115cdc3"
@@ -11909,7 +10810,7 @@ semver@^6.0.0, semver@^6.3.0, semver@^6.3.1:
resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4"
integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==
-semver@^7.3.2, semver@^7.3.4, semver@^7.3.5, semver@^7.3.7, semver@^7.5.3, semver@^7.5.4:
+semver@^7.3.2, semver@^7.3.4, semver@^7.3.5, semver@^7.5.3, semver@^7.5.4:
version "7.6.1"
resolved "https://registry.yarnpkg.com/semver/-/semver-7.6.1.tgz#60bfe090bf907a25aa8119a72b9f90ef7ca281b2"
integrity sha512-f/vbBsu+fOiYt+lmwZV0rVwJScl46HppnOA1ZvIuBWKOTlllpyJ3bfVax76/OrhCH38dyxoDIA8K7uB963IYgA==
@@ -12094,11 +10995,6 @@ simple-update-notifier@^2.0.0:
dependencies:
semver "^7.5.3"
-sisteransi@^1.0.5:
- version "1.0.5"
- resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.5.tgz#134d681297756437cc05ca01370d3a7a571075ed"
- integrity sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==
-
slash@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/slash/-/slash-2.0.0.tgz#de552851a1759df3a8f206535442f5ec4ddeab44"
@@ -12150,14 +11046,6 @@ sockjs@^0.3.24:
resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.2.0.tgz#16b809c162517b5b8c3e7dcd315a2a5c2612b2af"
integrity sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==
-source-map-support@0.5.13:
- version "0.5.13"
- resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.13.tgz#31b24a9c2e73c2de85066c0feb7d44767ed52932"
- integrity sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==
- dependencies:
- buffer-from "^1.0.0"
- source-map "^0.6.0"
-
source-map-support@^0.5.16, source-map-support@^0.5.19, source-map-support@~0.5.20:
version "0.5.21"
resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f"
@@ -12257,13 +11145,6 @@ stable@^0.1.8:
resolved "https://registry.yarnpkg.com/stable/-/stable-0.1.8.tgz#836eb3c8382fe2936feaf544631017ce7d47a3cf"
integrity sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==
-stack-utils@^2.0.3:
- version "2.0.6"
- resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-2.0.6.tgz#aaf0748169c02fc33c8232abccf933f54a1cc34f"
- integrity sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==
- dependencies:
- escape-string-regexp "^2.0.0"
-
stackframe@^1.3.4:
version "1.3.4"
resolved "https://registry.yarnpkg.com/stackframe/-/stackframe-1.3.4.tgz#b881a004c8c149a5e8efef37d51b16e412943310"
@@ -12294,14 +11175,6 @@ string-convert@^0.2.0:
resolved "https://registry.yarnpkg.com/string-convert/-/string-convert-0.2.1.tgz#6982cc3049fbb4cd85f8b24568b9d9bf39eeff97"
integrity sha512-u/1tdPl4yQnPBjnVrmdLo9gtuLvELKsAoRapekWggdiQNvvvum+jYF329d84NAa660KQw7pB2n36KrIKVoXa3A==
-string-length@^4.0.1:
- version "4.0.2"
- resolved "https://registry.yarnpkg.com/string-length/-/string-length-4.0.2.tgz#a8a8dc7bd5c1a82b9b3c8b87e125f66871b6e57a"
- integrity sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==
- dependencies:
- char-regex "^1.0.2"
- strip-ansi "^6.0.0"
-
"string-width@^1.0.2 || 2 || 3 || 4", string-width@^4.0.0, string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3:
version "4.2.3"
resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010"
@@ -12388,13 +11261,6 @@ stringify-entities@^4.0.0:
character-entities-html4 "^2.0.0"
character-entities-legacy "^3.0.0"
-strip-ansi@^4.0.0:
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f"
- integrity sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow==
- dependencies:
- ansi-regex "^3.0.0"
-
strip-ansi@^6.0.0, strip-ansi@^6.0.1:
version "6.0.1"
resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9"
@@ -12761,11 +11627,6 @@ tinyqueue@^2.0.3:
resolved "https://registry.yarnpkg.com/tinyqueue/-/tinyqueue-2.0.3.tgz#64d8492ebf39e7801d7bd34062e29b45b2035f08"
integrity sha512-ppJZNDuKGgxzkHihX8v9v9G5f+18gzaTfrukGrq6ueg0lmH4nqVnA2IPG0AEH3jKEk2GRJCUhDoqpoiw3PHLBA==
-tmpl@1.0.5:
- version "1.0.5"
- resolved "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.5.tgz#8683e0b902bb9c20c4f726e3c0b69f36518c07cc"
- integrity sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==
-
to-fast-properties@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e"
@@ -12808,7 +11669,7 @@ touch@^3.1.0:
dependencies:
nopt "~1.0.10"
-tough-cookie@^4.0.0, tough-cookie@^4.1.2:
+tough-cookie@^4.0.0:
version "4.1.4"
resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-4.1.4.tgz#945f1461b45b5a8c76821c33ea49c3ac192c1b36"
integrity sha512-Loo5UUvLD9ScZ6jh8beX1T6sO1w2/MpCRpEP7V280GKMVUQ0Jzar2U3UJPsrdbziLEMMhu3Ujnq//rhiFuIeag==
@@ -12865,23 +11726,11 @@ tsconfig-paths@^3.15.0:
minimist "^1.2.6"
strip-bom "^3.0.0"
-tslib@^1.8.1:
- version "1.14.1"
- resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00"
- integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==
-
tslib@^2.0.3, tslib@^2.4.0:
version "2.6.2"
resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.2.tgz#703ac29425e7b37cd6fd456e92404d46d1f3e4ae"
integrity sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==
-tsutils@^3.21.0:
- version "3.21.0"
- resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.21.0.tgz#b48717d394cea6c1e096983eed58e9d61715b623"
- integrity sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==
- dependencies:
- tslib "^1.8.1"
-
tus-js-client@^3.0.1:
version "3.1.3"
resolved "https://registry.yarnpkg.com/tus-js-client/-/tus-js-client-3.1.3.tgz#bac62c14c770ba71492072179b55292baa19a074"
@@ -12902,21 +11751,11 @@ type-check@^0.4.0, type-check@~0.4.0:
dependencies:
prelude-ls "^1.2.1"
-type-detect@4.0.8:
- version "4.0.8"
- resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c"
- integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==
-
type-fest@^0.20.2:
version "0.20.2"
resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4"
integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==
-type-fest@^0.21.3:
- version "0.21.3"
- resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.21.3.tgz#d260a24b0198436e133fa26a524a6d65fa3b2e37"
- integrity sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==
-
type-fest@^0.3.0:
version "0.3.1"
resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.3.1.tgz#63d00d204e059474fe5e1b7c011112bbd1dc29e1"
@@ -13322,15 +12161,6 @@ uvu@^0.5.0:
kleur "^4.0.3"
sade "^1.7.3"
-v8-to-istanbul@^9.0.1:
- version "9.2.0"
- resolved "https://registry.yarnpkg.com/v8-to-istanbul/-/v8-to-istanbul-9.2.0.tgz#2ed7644a245cddd83d4e087b9b33b3e62dfd10ad"
- integrity sha512-/EH/sDgxU2eGxajKdwLCDmQ4FWq+kpi3uCmBGpw1xJtnAxEjlD8j8PEiGWpCIMIs3ciNAgH0d3TTJiUkYzyZjA==
- dependencies:
- "@jridgewell/trace-mapping" "^0.3.12"
- "@types/istanbul-lib-coverage" "^2.0.1"
- convert-source-map "^2.0.0"
-
validate-npm-package-license@^3.0.1:
version "3.0.4"
resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a"
@@ -13439,20 +12269,6 @@ w3c-xmlserializer@^3.0.0:
dependencies:
xml-name-validator "^4.0.0"
-w3c-xmlserializer@^4.0.0:
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/w3c-xmlserializer/-/w3c-xmlserializer-4.0.0.tgz#aebdc84920d806222936e3cdce408e32488a3073"
- integrity sha512-d+BFHzbiCx6zGfz0HyQ6Rg69w9k19nviJspaj4yNscGjrHu94sVP+aRm75yEbCh+r2/yR+7q6hux9LVtbuTGBw==
- dependencies:
- xml-name-validator "^4.0.0"
-
-walker@^1.0.8:
- version "1.0.8"
- resolved "https://registry.yarnpkg.com/walker/-/walker-1.0.8.tgz#bd498db477afe573dc04185f011d3ab8a8d7653f"
- integrity sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==
- dependencies:
- makeerror "1.0.12"
-
warning@^4.0.3:
version "4.0.3"
resolved "https://registry.yarnpkg.com/warning/-/warning-4.0.3.tgz#16e9e077eb8a86d6af7d64aa1e05fd85b4678ca3"
@@ -13785,14 +12601,6 @@ write-file-atomic@^3.0.0:
signal-exit "^3.0.2"
typedarray-to-buffer "^3.1.5"
-write-file-atomic@^4.0.2:
- version "4.0.2"
- resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-4.0.2.tgz#a9df01ae5b77858a027fd2e80768ee433555fcfd"
- integrity sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==
- dependencies:
- imurmurhash "^0.1.4"
- signal-exit "^3.0.7"
-
write-file-atomic@^5.0.1:
version "5.0.1"
resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-5.0.1.tgz#68df4717c55c6fa4281a7860b4c2ba0a6d2b11e7"
@@ -13801,7 +12609,7 @@ write-file-atomic@^5.0.1:
imurmurhash "^0.1.4"
signal-exit "^4.0.1"
-ws@^8.11.0, ws@^8.13.0, ws@^8.2.3:
+ws@^8.13.0, ws@^8.2.3:
version "8.17.1"
resolved "https://registry.yarnpkg.com/ws/-/ws-8.17.1.tgz#9293da530bb548febc95371d90f9c878727d919b"
integrity sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==
@@ -13811,11 +12619,6 @@ xml-name-validator@^4.0.0:
resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-4.0.0.tgz#79a006e2e63149a8600f15430f0a4725d1524835"
integrity sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==
-xml@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/xml/-/xml-1.0.1.tgz#78ba72020029c5bc87b8a81a3cfcd74b4a2fc1e5"
- integrity sha512-huCv9IH9Tcf95zuYCsQraZtWnJvBtLVE0QHMOs8bWyZAFZNDcYjsPq1nEx8jKA9y+Beo9v+7OBPRisQTjinQMw==
-
xmlchars@^2.2.0:
version "2.2.0"
resolved "https://registry.yarnpkg.com/xmlchars/-/xmlchars-2.2.0.tgz#060fe1bcb7f9c76fe2a17db86a9bc3ab894210cb"
@@ -13881,7 +12684,7 @@ yargs@^15.0.2:
y18n "^4.0.0"
yargs-parser "^18.1.2"
-yargs@^17.2.1, yargs@^17.3.1:
+yargs@^17.2.1:
version "17.7.2"
resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.7.2.tgz#991df39aca675a192b816e1e0363f9d75d2aa269"
integrity sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==