From 70eadb15da2027110d26f15fcbef0cc0c8e86f5d Mon Sep 17 00:00:00 2001 From: Dhananjaya Rajasinghe Date: Thu, 19 Jan 2023 13:12:17 +0530 Subject: [PATCH] Bug fixes UI improvements Capability to configure header Signed-off-by: Dhananjaya Rajasinghe --- package-lock.json | 997 ++++++++++++------ package.json | 2 +- .../SessionTab/SessionManagement/FixForm.scss | 3 +- .../SessionTab/SessionManagement/FixForm.tsx | 231 ++-- .../SessionManagement/FixHeaderForm.scss | 111 ++ .../SessionManagement/FixHeaderForm.tsx | 395 +++++++ .../SessionManagement/GeneralInfo.scss | 53 +- .../SessionManagement/GeneralInfo.tsx | 37 +- .../Scenarios/ScenarioDefs.ts | 35 +- .../Scenarios/ScenarioInstance.tsx | 7 +- .../SessionManagement/SessionManagement.scss | 61 +- .../SessionManagement/SessionManagement.tsx | 61 +- .../ProfilePanel/ProfilePanel.tsx | 60 +- src/services/fix/FixDefinitionParser.ts | 122 ++- src/services/fix/FixDefs.ts | 52 +- src/services/fix/FixSession.ts | 14 +- src/services/profile/ProfileDefs.ts | 3 +- src/translations/languages/en.json | 12 +- yarn.lock | 358 ++++--- 19 files changed, 1888 insertions(+), 726 deletions(-) create mode 100644 src/main-layout/SessionWindow/SessionTab/SessionManagement/FixHeaderForm.scss create mode 100644 src/main-layout/SessionWindow/SessionTab/SessionManagement/FixHeaderForm.tsx diff --git a/package-lock.json b/package-lock.json index 1fbbc3b..30643b1 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "fixyl", - "version": "1.0.7", + "version": "1.0.8", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "fixyl", - "version": "1.0.7", + "version": "1.0.8", "dependencies": { "@ag-grid-community/all-modules": "^26.1.0", "@ag-grid-community/core": "^26.1.0", @@ -107,6 +107,30 @@ "react-dom": "^16.3.0 || ^17.0.0" } }, + "node_modules/@ampproject/remapping": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz", + "integrity": "sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==", + "dependencies": { + "@jridgewell/gen-mapping": "^0.1.0", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@ampproject/remapping/node_modules/@jridgewell/gen-mapping": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz", + "integrity": "sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==", + "dependencies": { + "@jridgewell/set-array": "^1.0.0", + "@jridgewell/sourcemap-codec": "^1.4.10" + }, + "engines": { + "node": ">=6.0.0" + } + }, "node_modules/@ant-design/colors": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/@ant-design/colors/-/colors-6.0.0.tgz", @@ -155,45 +179,44 @@ } }, "node_modules/@babel/code-frame": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.14.5.tgz", - "integrity": "sha512-9pzDqyc6OLDaqe+zbACgFkb6fKMNG6CObKpnYXChRsvYGyEdc7CA2BaqeOM+vOtCS5ndmJicPJhKAwYRI6UfFw==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", + "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", "dependencies": { - "@babel/highlight": "^7.14.5" + "@babel/highlight": "^7.18.6" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/compat-data": { - "version": "7.15.0", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.15.0.tgz", - "integrity": "sha512-0NqAC1IJE0S0+lL1SWFMxMkz1pKCNCjI4tr2Zx4LJSXxCLAdr6KyArnY+sno5m3yH9g737ygOyPABDsnXkpxiA==", + "version": "7.20.10", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.20.10.tgz", + "integrity": "sha512-sEnuDPpOJR/fcafHMjpcpGN5M2jbUGUHwmuWKM/YdPzeEDJg8bgmbcWQFUfE32MQjti1koACvoPVsDe8Uq+idg==", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/core": { - "version": "7.12.3", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.12.3.tgz", - "integrity": "sha512-0qXcZYKZp3/6N2jKYVxZv0aNCsxTSVCiK72DTiTYZAu7sjg73W0/aynWjMbiGd87EQL4WyA8reiJVh92AVla9g==", - "dependencies": { - "@babel/code-frame": "^7.10.4", - "@babel/generator": "^7.12.1", - "@babel/helper-module-transforms": "^7.12.1", - "@babel/helpers": "^7.12.1", - "@babel/parser": "^7.12.3", - "@babel/template": "^7.10.4", - "@babel/traverse": "^7.12.1", - "@babel/types": "^7.12.1", + "version": "7.20.12", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.20.12.tgz", + "integrity": "sha512-XsMfHovsUYHFMdrIHkZphTN/2Hzzi78R08NuHfDBehym2VsPDL6Zn/JAD/JQdnRvbSsbQc4mVaU1m6JgtTEElg==", + "dependencies": { + "@ampproject/remapping": "^2.1.0", + "@babel/code-frame": "^7.18.6", + "@babel/generator": "^7.20.7", + "@babel/helper-compilation-targets": "^7.20.7", + "@babel/helper-module-transforms": "^7.20.11", + "@babel/helpers": "^7.20.7", + "@babel/parser": "^7.20.7", + "@babel/template": "^7.20.7", + "@babel/traverse": "^7.20.12", + "@babel/types": "^7.20.7", "convert-source-map": "^1.7.0", "debug": "^4.1.0", - "gensync": "^1.0.0-beta.1", - "json5": "^2.1.2", - "lodash": "^4.17.19", - "resolve": "^1.3.2", - "semver": "^5.4.1", - "source-map": "^0.5.0" + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.2", + "semver": "^6.3.0" }, "engines": { "node": ">=6.9.0" @@ -203,35 +226,27 @@ "url": "https://opencollective.com/babel" } }, - "node_modules/@babel/core/node_modules/source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "engines": { - "node": ">=0.10.0" + "node_modules/@babel/core/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "bin": { + "semver": "bin/semver.js" } }, "node_modules/@babel/generator": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.15.4.tgz", - "integrity": "sha512-d3itta0tu+UayjEORPNz6e1T3FtvWlP5N4V5M+lhp/CxT4oAA7/NcScnpRyspUMLK6tu9MNHmQHxRykuN2R7hw==", + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.20.7.tgz", + "integrity": "sha512-7wqMOJq8doJMZmP4ApXTzLxSr7+oO2jroJURrVEp6XShrQUObV8Tq/D0NCcoYg2uHqUrjzO0zwBjoYzelxK+sw==", "dependencies": { - "@babel/types": "^7.15.4", - "jsesc": "^2.5.1", - "source-map": "^0.5.0" + "@babel/types": "^7.20.7", + "@jridgewell/gen-mapping": "^0.3.2", + "jsesc": "^2.5.1" }, "engines": { "node": ">=6.9.0" } }, - "node_modules/@babel/generator/node_modules/source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/@babel/helper-annotate-as-pure": { "version": "7.15.4", "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.15.4.tgz", @@ -256,13 +271,14 @@ } }, "node_modules/@babel/helper-compilation-targets": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.15.4.tgz", - "integrity": "sha512-rMWPCirulnPSe4d+gwdWXLfAXTTBj8M3guAf5xFQJ0nvFY7tfNAFnWdqaHegHlgDZOCT4qvhF3BYlSJag8yhqQ==", + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.20.7.tgz", + "integrity": "sha512-4tGORmfQcrc+bvrjb5y3dG9Mx1IOZjsHqQVUz7XCNHO+iTmqxWnVg3KRygjGmpRLJGdQSKuvFinbIb0CnZwHAQ==", "dependencies": { - "@babel/compat-data": "^7.15.0", - "@babel/helper-validator-option": "^7.14.5", - "browserslist": "^4.16.6", + "@babel/compat-data": "^7.20.5", + "@babel/helper-validator-option": "^7.18.6", + "browserslist": "^4.21.3", + "lru-cache": "^5.1.1", "semver": "^6.3.0" }, "engines": { @@ -272,6 +288,14 @@ "@babel/core": "^7.0.0" } }, + "node_modules/@babel/helper-compilation-targets/node_modules/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dependencies": { + "yallist": "^3.0.2" + } + }, "node_modules/@babel/helper-compilation-targets/node_modules/semver": { "version": "6.3.0", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", @@ -280,6 +304,11 @@ "semver": "bin/semver.js" } }, + "node_modules/@babel/helper-compilation-targets/node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" + }, "node_modules/@babel/helper-create-class-features-plugin": { "version": "7.15.4", "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.15.4.tgz", @@ -340,47 +369,43 @@ "semver": "bin/semver.js" } }, - "node_modules/@babel/helper-explode-assignable-expression": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.15.4.tgz", - "integrity": "sha512-J14f/vq8+hdC2KoWLIQSsGrC9EFBKE4NFts8pfMpymfApds+fPqR30AOUWc4tyr56h9l/GA1Sxv2q3dLZWbQ/g==", - "dependencies": { - "@babel/types": "^7.15.4" - }, + "node_modules/@babel/helper-environment-visitor": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz", + "integrity": "sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==", "engines": { "node": ">=6.9.0" } }, - "node_modules/@babel/helper-function-name": { + "node_modules/@babel/helper-explode-assignable-expression": { "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.15.4.tgz", - "integrity": "sha512-Z91cOMM4DseLIGOnog+Z8OI6YseR9bua+HpvLAQ2XayUGU+neTtX+97caALaLdyu53I/fjhbeCnWnRH1O3jFOw==", + "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.15.4.tgz", + "integrity": "sha512-J14f/vq8+hdC2KoWLIQSsGrC9EFBKE4NFts8pfMpymfApds+fPqR30AOUWc4tyr56h9l/GA1Sxv2q3dLZWbQ/g==", "dependencies": { - "@babel/helper-get-function-arity": "^7.15.4", - "@babel/template": "^7.15.4", "@babel/types": "^7.15.4" }, "engines": { "node": ">=6.9.0" } }, - "node_modules/@babel/helper-get-function-arity": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.15.4.tgz", - "integrity": "sha512-1/AlxSF92CmGZzHnC515hm4SirTxtpDnLEJ0UyEMgTMZN+6bxXKg04dKhiRx5Enel+SUA1G1t5Ed/yQia0efrA==", + "node_modules/@babel/helper-function-name": { + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.19.0.tgz", + "integrity": "sha512-WAwHBINyrpqywkUH0nTnNgI5ina5TFn85HKS0pbPDfxFfhyR/aNQEn4hGi1P1JyT//I0t4OgXUlofzWILRvS5w==", "dependencies": { - "@babel/types": "^7.15.4" + "@babel/template": "^7.18.10", + "@babel/types": "^7.19.0" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-hoist-variables": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.15.4.tgz", - "integrity": "sha512-VTy085egb3jUGVK9ycIxQiPbquesq0HUQ+tPO0uv5mPEBZipk+5FkRKiWq5apuyTE9FUrjENB0rCf8y+n+UuhA==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz", + "integrity": "sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==", "dependencies": { - "@babel/types": "^7.15.4" + "@babel/types": "^7.18.6" }, "engines": { "node": ">=6.9.0" @@ -398,29 +423,29 @@ } }, "node_modules/@babel/helper-module-imports": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.15.4.tgz", - "integrity": "sha512-jeAHZbzUwdW/xHgHQ3QmWR4Jg6j15q4w/gCfwZvtqOxoo5DKtLHk8Bsf4c5RZRC7NmLEs+ohkdq8jFefuvIxAA==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz", + "integrity": "sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==", "dependencies": { - "@babel/types": "^7.15.4" + "@babel/types": "^7.18.6" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-transforms": { - "version": "7.15.7", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.15.7.tgz", - "integrity": "sha512-ZNqjjQG/AuFfekFTY+7nY4RgBSklgTu970c7Rj3m/JOhIu5KPBUuTA9AY6zaKcUvk4g6EbDXdBnhi35FAssdSw==", + "version": "7.20.11", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.20.11.tgz", + "integrity": "sha512-uRy78kN4psmji1s2QtbtcCSaj/LILFDp0f/ymhpQH5QY3nljUZCaNWz9X1dEj/8MBdBEFECs7yRhKn8i7NjZgg==", "dependencies": { - "@babel/helper-module-imports": "^7.15.4", - "@babel/helper-replace-supers": "^7.15.4", - "@babel/helper-simple-access": "^7.15.4", - "@babel/helper-split-export-declaration": "^7.15.4", - "@babel/helper-validator-identifier": "^7.15.7", - "@babel/template": "^7.15.4", - "@babel/traverse": "^7.15.4", - "@babel/types": "^7.15.6" + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-module-imports": "^7.18.6", + "@babel/helper-simple-access": "^7.20.2", + "@babel/helper-split-export-declaration": "^7.18.6", + "@babel/helper-validator-identifier": "^7.19.1", + "@babel/template": "^7.20.7", + "@babel/traverse": "^7.20.10", + "@babel/types": "^7.20.7" }, "engines": { "node": ">=6.9.0" @@ -473,11 +498,11 @@ } }, "node_modules/@babel/helper-simple-access": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.15.4.tgz", - "integrity": "sha512-UzazrDoIVOZZcTeHHEPYrr1MvTR/K+wgLg6MY6e1CJyaRhbibftF6fR2KU2sFRtI/nERUZR9fBd6aKgBlIBaPg==", + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.20.2.tgz", + "integrity": "sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA==", "dependencies": { - "@babel/types": "^7.15.4" + "@babel/types": "^7.20.2" }, "engines": { "node": ">=6.9.0" @@ -495,28 +520,36 @@ } }, "node_modules/@babel/helper-split-export-declaration": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.15.4.tgz", - "integrity": "sha512-HsFqhLDZ08DxCpBdEVtKmywj6PQbwnF6HHybur0MAnkAKnlS6uHkwnmRIkElB2Owpfb4xL4NwDmDLFubueDXsw==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz", + "integrity": "sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==", "dependencies": { - "@babel/types": "^7.15.4" + "@babel/types": "^7.18.6" }, "engines": { "node": ">=6.9.0" } }, + "node_modules/@babel/helper-string-parser": { + "version": "7.19.4", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz", + "integrity": "sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==", + "engines": { + "node": ">=6.9.0" + } + }, "node_modules/@babel/helper-validator-identifier": { - "version": "7.15.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz", - "integrity": "sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w==", + "version": "7.19.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz", + "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-option": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.14.5.tgz", - "integrity": "sha512-OX8D5eeX4XwcroVW45NMvoYaIuFI+GQpA2a8Gi+X/U/cDUIRsV37qQfF905F0htTRCREQIB4KqPeaveRJUl3Ow==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz", + "integrity": "sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw==", "engines": { "node": ">=6.9.0" } @@ -536,24 +569,24 @@ } }, "node_modules/@babel/helpers": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.15.4.tgz", - "integrity": "sha512-V45u6dqEJ3w2rlryYYXf6i9rQ5YMNu4FLS6ngs8ikblhu2VdR1AqAd6aJjBzmf2Qzh6KOLqKHxEN9+TFbAkAVQ==", + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.20.7.tgz", + "integrity": "sha512-PBPjs5BppzsGaxHQCDKnZ6Gd9s6xl8bBCluz3vEInLGRJmnZan4F6BYCeqtyXqkk4W5IlPmjK4JlOuZkpJ3xZA==", "dependencies": { - "@babel/template": "^7.15.4", - "@babel/traverse": "^7.15.4", - "@babel/types": "^7.15.4" + "@babel/template": "^7.20.7", + "@babel/traverse": "^7.20.7", + "@babel/types": "^7.20.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/highlight": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.14.5.tgz", - "integrity": "sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", + "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", "dependencies": { - "@babel/helper-validator-identifier": "^7.14.5", + "@babel/helper-validator-identifier": "^7.18.6", "chalk": "^2.0.0", "js-tokens": "^4.0.0" }, @@ -618,9 +651,9 @@ } }, "node_modules/@babel/parser": { - "version": "7.15.7", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.15.7.tgz", - "integrity": "sha512-rycZXvQ+xS9QyIcJ9HXeDWf1uxqlbVFAUq0Rq0dbc50Zb/+wUe/ehyfzGfm9KZZF0kBejYgxltBXocP+gKdL2g==", + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.20.7.tgz", + "integrity": "sha512-T3Z9oHybU+0vZlY9CiDSJQTD5ZapcW18ZctFMi0MOAl/4BjFF4ul7NVSARLdbGO5vDqy9eQiGTV0LtKfvCYvcg==", "bin": { "parser": "bin/babel-parser.js" }, @@ -1912,30 +1945,31 @@ } }, "node_modules/@babel/template": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.15.4.tgz", - "integrity": "sha512-UgBAfEa1oGuYgDIPM2G+aHa4Nlo9Lh6mGD2bDBGMTbYnc38vulXPuC1MGjYILIEmlwl6Rd+BPR9ee3gm20CBtg==", + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.20.7.tgz", + "integrity": "sha512-8SegXApWe6VoNw0r9JHpSteLKTpTiLZ4rMlGIm9JQ18KiCtyQiAMEazujAHrUS5flrcqYZa75ukev3P6QmUwUw==", "dependencies": { - "@babel/code-frame": "^7.14.5", - "@babel/parser": "^7.15.4", - "@babel/types": "^7.15.4" + "@babel/code-frame": "^7.18.6", + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/traverse": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.15.4.tgz", - "integrity": "sha512-W6lQD8l4rUbQR/vYgSuCAE75ADyyQvOpFVsvPPdkhf6lATXAsQIG9YdtOcu8BB1dZ0LKu+Zo3c1wEcbKeuhdlA==", - "dependencies": { - "@babel/code-frame": "^7.14.5", - "@babel/generator": "^7.15.4", - "@babel/helper-function-name": "^7.15.4", - "@babel/helper-hoist-variables": "^7.15.4", - "@babel/helper-split-export-declaration": "^7.15.4", - "@babel/parser": "^7.15.4", - "@babel/types": "^7.15.4", + "version": "7.20.12", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.20.12.tgz", + "integrity": "sha512-MsIbFN0u+raeja38qboyF8TIT7K0BFzz/Yd/77ta4MsUsmP2RAnidIlwq7d5HFQrH/OZJecGV6B71C4zAgpoSQ==", + "dependencies": { + "@babel/code-frame": "^7.18.6", + "@babel/generator": "^7.20.7", + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-function-name": "^7.19.0", + "@babel/helper-hoist-variables": "^7.18.6", + "@babel/helper-split-export-declaration": "^7.18.6", + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7", "debug": "^4.1.0", "globals": "^11.1.0" }, @@ -1944,11 +1978,12 @@ } }, "node_modules/@babel/types": { - "version": "7.15.6", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.6.tgz", - "integrity": "sha512-BPU+7QhqNjmWyDO0/vitH/CuhpV8ZmK1wpKva8nuyNF5MJfuRNWMc+hc14+u9xT93kvykMdncrJT19h74uB1Ig==", + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.20.7.tgz", + "integrity": "sha512-69OnhBxSSgK0OzTJai4kyPDiKTIe3j+ctaHdIGVbRahTLAT7L3R9oeXHC2aVSuGYt3cVnoAMDmOCgJ2yaiLMvg==", "dependencies": { - "@babel/helper-validator-identifier": "^7.14.9", + "@babel/helper-string-parser": "^7.19.4", + "@babel/helper-validator-identifier": "^7.19.1", "to-fast-properties": "^2.0.0" }, "engines": { @@ -2198,6 +2233,17 @@ "node": ">= 4" } }, + "node_modules/@eslint/eslintrc/node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/@formatjs/intl-unified-numberformat": { "version": "3.3.7", "resolved": "https://registry.npmjs.org/@formatjs/intl-unified-numberformat/-/intl-unified-numberformat-3.3.7.tgz", @@ -5514,6 +5560,36 @@ "babel-plugin-transform-react-remove-prop-types": "0.4.24" } }, + "node_modules/babel-preset-react-app/node_modules/@babel/core": { + "version": "7.12.3", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.12.3.tgz", + "integrity": "sha512-0qXcZYKZp3/6N2jKYVxZv0aNCsxTSVCiK72DTiTYZAu7sjg73W0/aynWjMbiGd87EQL4WyA8reiJVh92AVla9g==", + "dependencies": { + "@babel/code-frame": "^7.10.4", + "@babel/generator": "^7.12.1", + "@babel/helper-module-transforms": "^7.12.1", + "@babel/helpers": "^7.12.1", + "@babel/parser": "^7.12.3", + "@babel/template": "^7.10.4", + "@babel/traverse": "^7.12.1", + "@babel/types": "^7.12.1", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.1", + "json5": "^2.1.2", + "lodash": "^4.17.19", + "resolve": "^1.3.2", + "semver": "^5.4.1", + "source-map": "^0.5.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, "node_modules/babel-preset-react-app/node_modules/@babel/plugin-proposal-class-properties": { "version": "7.12.1", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.12.1.tgz", @@ -5675,6 +5751,14 @@ "regenerator-runtime": "^0.13.4" } }, + "node_modules/babel-preset-react-app/node_modules/source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/babel-runtime": { "version": "6.26.0", "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", @@ -5836,6 +5920,7 @@ "version": "2.2.0", "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "devOptional": true, "engines": { "node": ">=8" } @@ -6079,6 +6164,18 @@ "node": ">=8" } }, + "node_modules/boxen/node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/boxen/node_modules/wrap-ansi": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", @@ -6226,27 +6323,37 @@ } }, "node_modules/browserslist": { - "version": "4.17.3", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.17.3.tgz", - "integrity": "sha512-59IqHJV5VGdcJZ+GZ2hU5n4Kv3YiASzW6Xk5g9tf5a/MAzGeFwgGWU39fVzNIOVcgB3+Gp+kiQu0HEfTVU/3VQ==", + "version": "4.21.4", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.4.tgz", + "integrity": "sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + } + ], "dependencies": { - "caniuse-lite": "^1.0.30001264", - "electron-to-chromium": "^1.3.857", - "escalade": "^3.1.1", - "node-releases": "^1.1.77", - "picocolors": "^0.2.1" + "caniuse-lite": "^1.0.30001400", + "electron-to-chromium": "^1.4.251", + "node-releases": "^2.0.6", + "update-browserslist-db": "^1.0.9" }, "bin": { "browserslist": "cli.js" }, "engines": { "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" } }, + "node_modules/browserslist/node_modules/node-releases": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.8.tgz", + "integrity": "sha512-dFSmB8fFHEH/s81Xi+Y/15DQY6VHW81nXRj86EMSL3lmuTmK1e+aT4wrFCkTbm+gSwkw4KpX+rT/pMM2c1mF+A==" + }, "node_modules/bser": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", @@ -6678,13 +6785,19 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001265", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001265.tgz", - "integrity": "sha512-YzBnspggWV5hep1m9Z6sZVLOt7vrju8xWooFAgN6BA5qvy98qPAPb7vNUzypFaoh2pb3vlfzbDO8tB57UPGbtw==", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - } + "version": "1.0.30001446", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001446.tgz", + "integrity": "sha512-fEoga4PrImGcwUUGEol/PoFCSBnSkA9drgdkxXkJLsUBOnJ8rs3zDv6ApqYXGQFOyMPsjh79naWhF4DAxbF8rw==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + } + ] }, "node_modules/capture-exit": { "version": "2.0.0", @@ -6741,6 +6854,7 @@ "version": "3.5.2", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.2.tgz", "integrity": "sha512-ekGhOnNVPgT77r4K/U3GDhu+FQ2S8TnK/s2KbIGXi0SZWuwkZ2QNyfWdZW+TVfn84DpEP7rLeCt2UI6bJ8GwbQ==", + "devOptional": true, "dependencies": { "anymatch": "~3.1.2", "braces": "~3.0.2", @@ -9432,9 +9546,9 @@ } }, "node_modules/electron-to-chromium": { - "version": "1.3.860", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.860.tgz", - "integrity": "sha512-gWwGZ+Wv4Mou2SJRH6JQzhTPjL5f95SX7n6VkLTQ/Q/INsZLZNQ1vH2GlZjozKyvT0kkFuCmWTwIoCj+/hUDPw==" + "version": "1.4.284", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.284.tgz", + "integrity": "sha512-M8WEXFuKXMYMVr45fo8mq0wUrrJHheiKZf6BArTKk9ZBYCKJEOU5H8cdWgDT+qCVZf7Na4lVUaZsA+h6uA9+PA==" }, "node_modules/electron/node_modules/@types/node": { "version": "14.18.23", @@ -10618,6 +10732,17 @@ "node": ">=8" } }, + "node_modules/eslint/node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/espree": { "version": "7.3.1", "resolved": "https://registry.npmjs.org/espree/-/espree-7.3.1.tgz", @@ -13308,6 +13433,7 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "devOptional": true, "dependencies": { "binary-extensions": "^2.0.0" }, @@ -15899,12 +16025,9 @@ "integrity": "sha512-c7/8mbUsKigAbLkD5B010BK4D9LZm7A1pNItkEwiUZRpIN66exu/e7YQWysGun+TRKaJp8MhemM+VkfWv42aCA==" }, "node_modules/json5": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz", - "integrity": "sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==", - "dependencies": { - "minimist": "^1.2.5" - }, + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", "bin": { "json5": "lib/cli.js" }, @@ -20749,6 +20872,44 @@ } } }, + "node_modules/react-scripts/node_modules/@babel/core": { + "version": "7.12.3", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.12.3.tgz", + "integrity": "sha512-0qXcZYKZp3/6N2jKYVxZv0aNCsxTSVCiK72DTiTYZAu7sjg73W0/aynWjMbiGd87EQL4WyA8reiJVh92AVla9g==", + "dependencies": { + "@babel/code-frame": "^7.10.4", + "@babel/generator": "^7.12.1", + "@babel/helper-module-transforms": "^7.12.1", + "@babel/helpers": "^7.12.1", + "@babel/parser": "^7.12.3", + "@babel/template": "^7.10.4", + "@babel/traverse": "^7.12.1", + "@babel/types": "^7.12.1", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.1", + "json5": "^2.1.2", + "lodash": "^4.17.19", + "resolve": "^1.3.2", + "semver": "^5.4.1", + "source-map": "^0.5.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/react-scripts/node_modules/@babel/core/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "bin": { + "semver": "bin/semver" + } + }, "node_modules/react-scripts/node_modules/camelcase": { "version": "6.2.0", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.2.0.tgz", @@ -20783,6 +20944,14 @@ "node": ">=10" } }, + "node_modules/react-scripts/node_modules/source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/react-textarea-autosize": { "version": "8.3.3", "resolved": "https://registry.npmjs.org/react-textarea-autosize/-/react-textarea-autosize-8.3.3.tgz", @@ -20887,6 +21056,7 @@ "version": "3.6.0", "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "devOptional": true, "dependencies": { "picomatch": "^2.2.1" }, @@ -22205,19 +22375,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/serialize-error/node_modules/type-fest": { - "version": "0.13.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.13.1.tgz", - "integrity": "sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg==", - "dev": true, - "optional": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/serialize-javascript": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-5.0.1.tgz", @@ -24186,9 +24343,10 @@ } }, "node_modules/type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.13.1.tgz", + "integrity": "sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg==", + "optional": true, "engines": { "node": ">=10" }, @@ -24408,6 +24566,36 @@ "yarn": "*" } }, + "node_modules/update-browserslist-db": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz", + "integrity": "sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + } + ], + "dependencies": { + "escalade": "^3.1.1", + "picocolors": "^1.0.0" + }, + "bin": { + "browserslist-lint": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "node_modules/update-browserslist-db/node_modules/picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" + }, "node_modules/update-notifier": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-5.1.0.tgz", @@ -26649,6 +26837,26 @@ "prop-types": "^15.6.2" } }, + "@ampproject/remapping": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz", + "integrity": "sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==", + "requires": { + "@jridgewell/gen-mapping": "^0.1.0", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "dependencies": { + "@jridgewell/gen-mapping": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz", + "integrity": "sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==", + "requires": { + "@jridgewell/set-array": "^1.0.0", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + } + } + }, "@ant-design/colors": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/@ant-design/colors/-/colors-6.0.0.tgz", @@ -26687,63 +26895,55 @@ } }, "@babel/code-frame": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.14.5.tgz", - "integrity": "sha512-9pzDqyc6OLDaqe+zbACgFkb6fKMNG6CObKpnYXChRsvYGyEdc7CA2BaqeOM+vOtCS5ndmJicPJhKAwYRI6UfFw==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", + "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", "requires": { - "@babel/highlight": "^7.14.5" + "@babel/highlight": "^7.18.6" } }, "@babel/compat-data": { - "version": "7.15.0", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.15.0.tgz", - "integrity": "sha512-0NqAC1IJE0S0+lL1SWFMxMkz1pKCNCjI4tr2Zx4LJSXxCLAdr6KyArnY+sno5m3yH9g737ygOyPABDsnXkpxiA==" + "version": "7.20.10", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.20.10.tgz", + "integrity": "sha512-sEnuDPpOJR/fcafHMjpcpGN5M2jbUGUHwmuWKM/YdPzeEDJg8bgmbcWQFUfE32MQjti1koACvoPVsDe8Uq+idg==" }, "@babel/core": { - "version": "7.12.3", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.12.3.tgz", - "integrity": "sha512-0qXcZYKZp3/6N2jKYVxZv0aNCsxTSVCiK72DTiTYZAu7sjg73W0/aynWjMbiGd87EQL4WyA8reiJVh92AVla9g==", - "requires": { - "@babel/code-frame": "^7.10.4", - "@babel/generator": "^7.12.1", - "@babel/helper-module-transforms": "^7.12.1", - "@babel/helpers": "^7.12.1", - "@babel/parser": "^7.12.3", - "@babel/template": "^7.10.4", - "@babel/traverse": "^7.12.1", - "@babel/types": "^7.12.1", + "version": "7.20.12", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.20.12.tgz", + "integrity": "sha512-XsMfHovsUYHFMdrIHkZphTN/2Hzzi78R08NuHfDBehym2VsPDL6Zn/JAD/JQdnRvbSsbQc4mVaU1m6JgtTEElg==", + "requires": { + "@ampproject/remapping": "^2.1.0", + "@babel/code-frame": "^7.18.6", + "@babel/generator": "^7.20.7", + "@babel/helper-compilation-targets": "^7.20.7", + "@babel/helper-module-transforms": "^7.20.11", + "@babel/helpers": "^7.20.7", + "@babel/parser": "^7.20.7", + "@babel/template": "^7.20.7", + "@babel/traverse": "^7.20.12", + "@babel/types": "^7.20.7", "convert-source-map": "^1.7.0", "debug": "^4.1.0", - "gensync": "^1.0.0-beta.1", - "json5": "^2.1.2", - "lodash": "^4.17.19", - "resolve": "^1.3.2", - "semver": "^5.4.1", - "source-map": "^0.5.0" + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.2", + "semver": "^6.3.0" }, "dependencies": { - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" } } }, "@babel/generator": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.15.4.tgz", - "integrity": "sha512-d3itta0tu+UayjEORPNz6e1T3FtvWlP5N4V5M+lhp/CxT4oAA7/NcScnpRyspUMLK6tu9MNHmQHxRykuN2R7hw==", + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.20.7.tgz", + "integrity": "sha512-7wqMOJq8doJMZmP4ApXTzLxSr7+oO2jroJURrVEp6XShrQUObV8Tq/D0NCcoYg2uHqUrjzO0zwBjoYzelxK+sw==", "requires": { - "@babel/types": "^7.15.4", - "jsesc": "^2.5.1", - "source-map": "^0.5.0" - }, - "dependencies": { - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" - } + "@babel/types": "^7.20.7", + "@jridgewell/gen-mapping": "^0.3.2", + "jsesc": "^2.5.1" } }, "@babel/helper-annotate-as-pure": { @@ -26764,20 +26964,34 @@ } }, "@babel/helper-compilation-targets": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.15.4.tgz", - "integrity": "sha512-rMWPCirulnPSe4d+gwdWXLfAXTTBj8M3guAf5xFQJ0nvFY7tfNAFnWdqaHegHlgDZOCT4qvhF3BYlSJag8yhqQ==", + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.20.7.tgz", + "integrity": "sha512-4tGORmfQcrc+bvrjb5y3dG9Mx1IOZjsHqQVUz7XCNHO+iTmqxWnVg3KRygjGmpRLJGdQSKuvFinbIb0CnZwHAQ==", "requires": { - "@babel/compat-data": "^7.15.0", - "@babel/helper-validator-option": "^7.14.5", - "browserslist": "^4.16.6", + "@babel/compat-data": "^7.20.5", + "@babel/helper-validator-option": "^7.18.6", + "browserslist": "^4.21.3", + "lru-cache": "^5.1.1", "semver": "^6.3.0" }, "dependencies": { + "lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "requires": { + "yallist": "^3.0.2" + } + }, "semver": { "version": "6.3.0", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" + }, + "yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" } } }, @@ -26825,6 +27039,11 @@ } } }, + "@babel/helper-environment-visitor": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz", + "integrity": "sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==" + }, "@babel/helper-explode-assignable-expression": { "version": "7.15.4", "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.15.4.tgz", @@ -26834,29 +27053,20 @@ } }, "@babel/helper-function-name": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.15.4.tgz", - "integrity": "sha512-Z91cOMM4DseLIGOnog+Z8OI6YseR9bua+HpvLAQ2XayUGU+neTtX+97caALaLdyu53I/fjhbeCnWnRH1O3jFOw==", - "requires": { - "@babel/helper-get-function-arity": "^7.15.4", - "@babel/template": "^7.15.4", - "@babel/types": "^7.15.4" - } - }, - "@babel/helper-get-function-arity": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.15.4.tgz", - "integrity": "sha512-1/AlxSF92CmGZzHnC515hm4SirTxtpDnLEJ0UyEMgTMZN+6bxXKg04dKhiRx5Enel+SUA1G1t5Ed/yQia0efrA==", + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.19.0.tgz", + "integrity": "sha512-WAwHBINyrpqywkUH0nTnNgI5ina5TFn85HKS0pbPDfxFfhyR/aNQEn4hGi1P1JyT//I0t4OgXUlofzWILRvS5w==", "requires": { - "@babel/types": "^7.15.4" + "@babel/template": "^7.18.10", + "@babel/types": "^7.19.0" } }, "@babel/helper-hoist-variables": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.15.4.tgz", - "integrity": "sha512-VTy085egb3jUGVK9ycIxQiPbquesq0HUQ+tPO0uv5mPEBZipk+5FkRKiWq5apuyTE9FUrjENB0rCf8y+n+UuhA==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz", + "integrity": "sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==", "requires": { - "@babel/types": "^7.15.4" + "@babel/types": "^7.18.6" } }, "@babel/helper-member-expression-to-functions": { @@ -26868,26 +27078,26 @@ } }, "@babel/helper-module-imports": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.15.4.tgz", - "integrity": "sha512-jeAHZbzUwdW/xHgHQ3QmWR4Jg6j15q4w/gCfwZvtqOxoo5DKtLHk8Bsf4c5RZRC7NmLEs+ohkdq8jFefuvIxAA==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz", + "integrity": "sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==", "requires": { - "@babel/types": "^7.15.4" + "@babel/types": "^7.18.6" } }, "@babel/helper-module-transforms": { - "version": "7.15.7", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.15.7.tgz", - "integrity": "sha512-ZNqjjQG/AuFfekFTY+7nY4RgBSklgTu970c7Rj3m/JOhIu5KPBUuTA9AY6zaKcUvk4g6EbDXdBnhi35FAssdSw==", + "version": "7.20.11", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.20.11.tgz", + "integrity": "sha512-uRy78kN4psmji1s2QtbtcCSaj/LILFDp0f/ymhpQH5QY3nljUZCaNWz9X1dEj/8MBdBEFECs7yRhKn8i7NjZgg==", "requires": { - "@babel/helper-module-imports": "^7.15.4", - "@babel/helper-replace-supers": "^7.15.4", - "@babel/helper-simple-access": "^7.15.4", - "@babel/helper-split-export-declaration": "^7.15.4", - "@babel/helper-validator-identifier": "^7.15.7", - "@babel/template": "^7.15.4", - "@babel/traverse": "^7.15.4", - "@babel/types": "^7.15.6" + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-module-imports": "^7.18.6", + "@babel/helper-simple-access": "^7.20.2", + "@babel/helper-split-export-declaration": "^7.18.6", + "@babel/helper-validator-identifier": "^7.19.1", + "@babel/template": "^7.20.7", + "@babel/traverse": "^7.20.10", + "@babel/types": "^7.20.7" } }, "@babel/helper-optimise-call-expression": { @@ -26925,11 +27135,11 @@ } }, "@babel/helper-simple-access": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.15.4.tgz", - "integrity": "sha512-UzazrDoIVOZZcTeHHEPYrr1MvTR/K+wgLg6MY6e1CJyaRhbibftF6fR2KU2sFRtI/nERUZR9fBd6aKgBlIBaPg==", + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.20.2.tgz", + "integrity": "sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA==", "requires": { - "@babel/types": "^7.15.4" + "@babel/types": "^7.20.2" } }, "@babel/helper-skip-transparent-expression-wrappers": { @@ -26941,22 +27151,27 @@ } }, "@babel/helper-split-export-declaration": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.15.4.tgz", - "integrity": "sha512-HsFqhLDZ08DxCpBdEVtKmywj6PQbwnF6HHybur0MAnkAKnlS6uHkwnmRIkElB2Owpfb4xL4NwDmDLFubueDXsw==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz", + "integrity": "sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==", "requires": { - "@babel/types": "^7.15.4" + "@babel/types": "^7.18.6" } }, + "@babel/helper-string-parser": { + "version": "7.19.4", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz", + "integrity": "sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==" + }, "@babel/helper-validator-identifier": { - "version": "7.15.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz", - "integrity": "sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w==" + "version": "7.19.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz", + "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==" }, "@babel/helper-validator-option": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.14.5.tgz", - "integrity": "sha512-OX8D5eeX4XwcroVW45NMvoYaIuFI+GQpA2a8Gi+X/U/cDUIRsV37qQfF905F0htTRCREQIB4KqPeaveRJUl3Ow==" + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz", + "integrity": "sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw==" }, "@babel/helper-wrap-function": { "version": "7.15.4", @@ -26970,21 +27185,21 @@ } }, "@babel/helpers": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.15.4.tgz", - "integrity": "sha512-V45u6dqEJ3w2rlryYYXf6i9rQ5YMNu4FLS6ngs8ikblhu2VdR1AqAd6aJjBzmf2Qzh6KOLqKHxEN9+TFbAkAVQ==", + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.20.7.tgz", + "integrity": "sha512-PBPjs5BppzsGaxHQCDKnZ6Gd9s6xl8bBCluz3vEInLGRJmnZan4F6BYCeqtyXqkk4W5IlPmjK4JlOuZkpJ3xZA==", "requires": { - "@babel/template": "^7.15.4", - "@babel/traverse": "^7.15.4", - "@babel/types": "^7.15.4" + "@babel/template": "^7.20.7", + "@babel/traverse": "^7.20.7", + "@babel/types": "^7.20.7" } }, "@babel/highlight": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.14.5.tgz", - "integrity": "sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", + "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", "requires": { - "@babel/helper-validator-identifier": "^7.14.5", + "@babel/helper-validator-identifier": "^7.18.6", "chalk": "^2.0.0", "js-tokens": "^4.0.0" }, @@ -27036,9 +27251,9 @@ } }, "@babel/parser": { - "version": "7.15.7", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.15.7.tgz", - "integrity": "sha512-rycZXvQ+xS9QyIcJ9HXeDWf1uxqlbVFAUq0Rq0dbc50Zb/+wUe/ehyfzGfm9KZZF0kBejYgxltBXocP+gKdL2g==" + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.20.7.tgz", + "integrity": "sha512-T3Z9oHybU+0vZlY9CiDSJQTD5ZapcW18ZctFMi0MOAl/4BjFF4ul7NVSARLdbGO5vDqy9eQiGTV0LtKfvCYvcg==" }, "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { "version": "7.15.4", @@ -27873,37 +28088,39 @@ } }, "@babel/template": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.15.4.tgz", - "integrity": "sha512-UgBAfEa1oGuYgDIPM2G+aHa4Nlo9Lh6mGD2bDBGMTbYnc38vulXPuC1MGjYILIEmlwl6Rd+BPR9ee3gm20CBtg==", + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.20.7.tgz", + "integrity": "sha512-8SegXApWe6VoNw0r9JHpSteLKTpTiLZ4rMlGIm9JQ18KiCtyQiAMEazujAHrUS5flrcqYZa75ukev3P6QmUwUw==", "requires": { - "@babel/code-frame": "^7.14.5", - "@babel/parser": "^7.15.4", - "@babel/types": "^7.15.4" + "@babel/code-frame": "^7.18.6", + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7" } }, "@babel/traverse": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.15.4.tgz", - "integrity": "sha512-W6lQD8l4rUbQR/vYgSuCAE75ADyyQvOpFVsvPPdkhf6lATXAsQIG9YdtOcu8BB1dZ0LKu+Zo3c1wEcbKeuhdlA==", - "requires": { - "@babel/code-frame": "^7.14.5", - "@babel/generator": "^7.15.4", - "@babel/helper-function-name": "^7.15.4", - "@babel/helper-hoist-variables": "^7.15.4", - "@babel/helper-split-export-declaration": "^7.15.4", - "@babel/parser": "^7.15.4", - "@babel/types": "^7.15.4", + "version": "7.20.12", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.20.12.tgz", + "integrity": "sha512-MsIbFN0u+raeja38qboyF8TIT7K0BFzz/Yd/77ta4MsUsmP2RAnidIlwq7d5HFQrH/OZJecGV6B71C4zAgpoSQ==", + "requires": { + "@babel/code-frame": "^7.18.6", + "@babel/generator": "^7.20.7", + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-function-name": "^7.19.0", + "@babel/helper-hoist-variables": "^7.18.6", + "@babel/helper-split-export-declaration": "^7.18.6", + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7", "debug": "^4.1.0", "globals": "^11.1.0" } }, "@babel/types": { - "version": "7.15.6", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.6.tgz", - "integrity": "sha512-BPU+7QhqNjmWyDO0/vitH/CuhpV8ZmK1wpKva8nuyNF5MJfuRNWMc+hc14+u9xT93kvykMdncrJT19h74uB1Ig==", + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.20.7.tgz", + "integrity": "sha512-69OnhBxSSgK0OzTJai4kyPDiKTIe3j+ctaHdIGVbRahTLAT7L3R9oeXHC2aVSuGYt3cVnoAMDmOCgJ2yaiLMvg==", "requires": { - "@babel/helper-validator-identifier": "^7.14.9", + "@babel/helper-string-parser": "^7.19.4", + "@babel/helper-validator-identifier": "^7.19.1", "to-fast-properties": "^2.0.0" } }, @@ -28105,6 +28322,11 @@ "version": "4.0.6", "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==" + }, + "type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==" } } }, @@ -30665,6 +30887,29 @@ "babel-plugin-transform-react-remove-prop-types": "0.4.24" }, "dependencies": { + "@babel/core": { + "version": "7.12.3", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.12.3.tgz", + "integrity": "sha512-0qXcZYKZp3/6N2jKYVxZv0aNCsxTSVCiK72DTiTYZAu7sjg73W0/aynWjMbiGd87EQL4WyA8reiJVh92AVla9g==", + "requires": { + "@babel/code-frame": "^7.10.4", + "@babel/generator": "^7.12.1", + "@babel/helper-module-transforms": "^7.12.1", + "@babel/helpers": "^7.12.1", + "@babel/parser": "^7.12.3", + "@babel/template": "^7.10.4", + "@babel/traverse": "^7.12.1", + "@babel/types": "^7.12.1", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.1", + "json5": "^2.1.2", + "lodash": "^4.17.19", + "resolve": "^1.3.2", + "semver": "^5.4.1", + "source-map": "^0.5.0" + } + }, "@babel/plugin-proposal-class-properties": { "version": "7.12.1", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.12.1.tgz", @@ -30804,6 +31049,11 @@ "requires": { "regenerator-runtime": "^0.13.4" } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==" } } }, @@ -30931,7 +31181,8 @@ "binary-extensions": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", - "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==" + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "devOptional": true }, "bindings": { "version": "1.5.0", @@ -31123,6 +31374,12 @@ "ansi-regex": "^5.0.1" } }, + "type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true + }, "wrap-ansi": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", @@ -31248,15 +31505,21 @@ } }, "browserslist": { - "version": "4.17.3", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.17.3.tgz", - "integrity": "sha512-59IqHJV5VGdcJZ+GZ2hU5n4Kv3YiASzW6Xk5g9tf5a/MAzGeFwgGWU39fVzNIOVcgB3+Gp+kiQu0HEfTVU/3VQ==", + "version": "4.21.4", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.4.tgz", + "integrity": "sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw==", "requires": { - "caniuse-lite": "^1.0.30001264", - "electron-to-chromium": "^1.3.857", - "escalade": "^3.1.1", - "node-releases": "^1.1.77", - "picocolors": "^0.2.1" + "caniuse-lite": "^1.0.30001400", + "electron-to-chromium": "^1.4.251", + "node-releases": "^2.0.6", + "update-browserslist-db": "^1.0.9" + }, + "dependencies": { + "node-releases": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.8.tgz", + "integrity": "sha512-dFSmB8fFHEH/s81Xi+Y/15DQY6VHW81nXRj86EMSL3lmuTmK1e+aT4wrFCkTbm+gSwkw4KpX+rT/pMM2c1mF+A==" + } } }, "bser": { @@ -31613,9 +31876,9 @@ } }, "caniuse-lite": { - "version": "1.0.30001265", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001265.tgz", - "integrity": "sha512-YzBnspggWV5hep1m9Z6sZVLOt7vrju8xWooFAgN6BA5qvy98qPAPb7vNUzypFaoh2pb3vlfzbDO8tB57UPGbtw==" + "version": "1.0.30001446", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001446.tgz", + "integrity": "sha512-fEoga4PrImGcwUUGEol/PoFCSBnSkA9drgdkxXkJLsUBOnJ8rs3zDv6ApqYXGQFOyMPsjh79naWhF4DAxbF8rw==" }, "capture-exit": { "version": "2.0.0", @@ -31660,6 +31923,7 @@ "version": "3.5.2", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.2.tgz", "integrity": "sha512-ekGhOnNVPgT77r4K/U3GDhu+FQ2S8TnK/s2KbIGXi0SZWuwkZ2QNyfWdZW+TVfn84DpEP7rLeCt2UI6bJ8GwbQ==", + "devOptional": true, "requires": { "anymatch": "~3.1.2", "braces": "~3.0.2", @@ -33790,9 +34054,9 @@ } }, "electron-to-chromium": { - "version": "1.3.860", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.860.tgz", - "integrity": "sha512-gWwGZ+Wv4Mou2SJRH6JQzhTPjL5f95SX7n6VkLTQ/Q/INsZLZNQ1vH2GlZjozKyvT0kkFuCmWTwIoCj+/hUDPw==" + "version": "1.4.284", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.284.tgz", + "integrity": "sha512-M8WEXFuKXMYMVr45fo8mq0wUrrJHheiKZf6BArTKk9ZBYCKJEOU5H8cdWgDT+qCVZf7Na4lVUaZsA+h6uA9+PA==" }, "elliptic": { "version": "6.5.4", @@ -34176,6 +34440,11 @@ "requires": { "ansi-regex": "^5.0.1" } + }, + "type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==" } } }, @@ -36759,6 +37028,7 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "devOptional": true, "requires": { "binary-extensions": "^2.0.0" } @@ -38683,12 +38953,9 @@ "integrity": "sha512-c7/8mbUsKigAbLkD5B010BK4D9LZm7A1pNItkEwiUZRpIN66exu/e7YQWysGun+TRKaJp8MhemM+VkfWv42aCA==" }, "json5": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz", - "integrity": "sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==", - "requires": { - "minimist": "^1.2.5" - } + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==" }, "jsonfile": { "version": "6.1.0", @@ -42507,6 +42774,36 @@ "workbox-webpack-plugin": "5.1.4" }, "dependencies": { + "@babel/core": { + "version": "7.12.3", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.12.3.tgz", + "integrity": "sha512-0qXcZYKZp3/6N2jKYVxZv0aNCsxTSVCiK72DTiTYZAu7sjg73W0/aynWjMbiGd87EQL4WyA8reiJVh92AVla9g==", + "requires": { + "@babel/code-frame": "^7.10.4", + "@babel/generator": "^7.12.1", + "@babel/helper-module-transforms": "^7.12.1", + "@babel/helpers": "^7.12.1", + "@babel/parser": "^7.12.3", + "@babel/template": "^7.10.4", + "@babel/traverse": "^7.12.1", + "@babel/types": "^7.12.1", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.1", + "json5": "^2.1.2", + "lodash": "^4.17.19", + "resolve": "^1.3.2", + "semver": "^5.4.1", + "source-map": "^0.5.0" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + } + } + }, "camelcase": { "version": "6.2.0", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.2.0.tgz", @@ -42525,6 +42822,11 @@ "version": "7.3.2", "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz", "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==" + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==" } } }, @@ -42613,6 +42915,7 @@ "version": "3.6.0", "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "devOptional": true, "requires": { "picomatch": "^2.2.1" } @@ -43658,15 +43961,6 @@ "optional": true, "requires": { "type-fest": "^0.13.1" - }, - "dependencies": { - "type-fest": { - "version": "0.13.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.13.1.tgz", - "integrity": "sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg==", - "dev": true, - "optional": true - } } }, "serialize-javascript": { @@ -45239,9 +45533,10 @@ "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==" }, "type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==" + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.13.1.tgz", + "integrity": "sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg==", + "optional": true }, "type-is": { "version": "1.6.18", @@ -45406,6 +45701,22 @@ "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==" }, + "update-browserslist-db": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz", + "integrity": "sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==", + "requires": { + "escalade": "^3.1.1", + "picocolors": "^1.0.0" + }, + "dependencies": { + "picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" + } + } + }, "update-notifier": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-5.1.0.tgz", diff --git a/package.json b/package.json index 6f6ed55..2229770 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "fixyl", - "version": "1.0.7", + "version": "1.0.8", "private": true, "dependencies": { "@ag-grid-community/all-modules": "^26.1.0", diff --git a/src/main-layout/SessionWindow/SessionTab/SessionManagement/FixForm.scss b/src/main-layout/SessionWindow/SessionTab/SessionManagement/FixForm.scss index ef800fe..c3d7d3c 100644 --- a/src/main-layout/SessionWindow/SessionTab/SessionManagement/FixForm.scss +++ b/src/main-layout/SessionWindow/SessionTab/SessionManagement/FixForm.scss @@ -14,11 +14,12 @@ .form-header { padding: 15px; - padding-bottom: 0; + padding-bottom: 5px; .title { font-size: 14px; font-weight: 500; + color: var(--accent-2-hover); } } diff --git a/src/main-layout/SessionWindow/SessionTab/SessionManagement/FixForm.tsx b/src/main-layout/SessionWindow/SessionTab/SessionManagement/FixForm.tsx index cb4f8e9..d6eb5d9 100644 --- a/src/main-layout/SessionWindow/SessionTab/SessionManagement/FixForm.tsx +++ b/src/main-layout/SessionWindow/SessionTab/SessionManagement/FixForm.tsx @@ -45,7 +45,9 @@ const SaveAsForm = ({ togglePopover, onAddToFavorites, name }: {
togglePopover(false)}>✕
{ onAddToFavorites(values) }}> + onFinish={(values) => { + onAddToFavorites(values) + }}>
{ } } - - private getFieldRender = (field: FixField, required: boolean, parent: string, fieldIterationIndex: number) => { - const { enableIgnore } = this.props; - return - } - - renderFields = (message: FixMessage, level: number, fieldIterationIndex: number, parent: string) => { - - return
- {message.fields.map((field, i) => { - const { def } = field; - const fieldName = `${parent}__${def.name}__${fieldIterationIndex}`; - - if (this.props.removeNonFilledFields) { - const initialValues = this.getInitialValues(); - if (initialValues[fieldName] === undefined) { - return null - } - } - - return {def.name}[{def.number}]} - rules={[{ required: field.required, message: 'Please input valid value!' }]} key={i} > - {this.getFieldRender(field, field.required, parent, fieldIterationIndex)} - - - })} -
- } - - renderGroups = (group: FixComplexType, level: number, parent: string) => { - const newLevel = level++; - if (!group.groupInstances[parent]) { - if (group.required) { - group.groupInstances[parent] = [{}]; - } else { - group.groupInstances[parent] = []; - } - } - - const remove = (index: number) => { - const array = group.groupInstances[parent]; - array.splice(index, 1); - group.groupInstances[parent] = [...array]; - this.forceUpdate(); - } - - return
-
{getIntlMessage("group", { type: `${group.name} [${group.id}]` })} -
{ - group.groupInstances[parent].push({}) - this.forceUpdate(); - }}>
-
- {(group.groupInstances[parent] as any[])?.map((val, i) => { - return
-
- {this.renderFields(group, newLevel, i, `${parent}|G:${group.name}:${i}`)} - {group.group && this.renderGroups(group.group, newLevel, `${parent}|G:${group.name}:${i}`)} - {group.components.map(comp => this.renderComponents(comp, newLevel, `${parent}|G:${group.name}:${i}`))} -
- remove(i)} - /> -
- })} -
-
- } - - renderComponents = (component: FixComplexType, level: number, parent: string) => { - const newLevel = level++; - return
-
{getIntlMessage("component", { type: component.name })}
-
- {this.renderFields(component, newLevel, 0, `${parent}|C:${component.name}:0`)} - {component.group && this.renderGroups(component.group, newLevel, `${parent}|C:${component.name}:0`)} - {component.components.map(comp => this.renderComponents(comp, newLevel, `${parent}|C:${component.name}:0`))} -
-
- } - private getFieldValues = (def: FixMessage, inputData: any, namePrefix: string, fieldIterationIndex: number) => { const ret: any = {}; const properties = Object.keys(inputData) @@ -232,9 +152,10 @@ export class FixForm extends React.Component { (def.groupInstances[namePrefix] as any[])?.forEach((inst: any, index) => { const fieldData = this.getFieldValues(def, inputData, `${namePrefix}|G:${def.name}:${index}`, index) let groupData: any = {}; - if (def.group) { - groupData[def.group.name] = this.getGroupValues(def.group, inputData, `${namePrefix}|G:${def.name}:${index}`); - } + def.groups.forEach(group => { + groupData[group.name] = this.getGroupValues(group, inputData, `${namePrefix}|G:${def.name}:${index}`); + }) + let componentData: any = {}; def.components.forEach(comp => { componentData[comp.name] = this.getComponentValues(comp, inputData, `${namePrefix}|G:${def.name}:${index}`); @@ -250,9 +171,10 @@ export class FixForm extends React.Component { private getComponentValues = (def: FixMessage, inputData: any, namePrefix: string) => { const fieldData = this.getFieldValues(def, inputData, `${namePrefix}|C:${def.name}:0`, 0) let groupData: any = {}; - if (def.group) { - groupData[def.group.name] = this.getGroupValues(def.group, inputData, `${namePrefix}|C:${def.name}:0`); - } + def.groups.forEach(group => { + groupData[group.name] = this.getGroupValues(group, inputData, `${namePrefix}|C:${def.name}:0`); + }) + let componentData: any = {}; def.components.forEach(comp => { componentData[comp.name] = this.getComponentValues(comp, inputData, `${namePrefix}|C:${def.name}:0`); @@ -265,9 +187,10 @@ export class FixForm extends React.Component { const { message } = this.props; const fieldData = this.getFieldValues(message, data, "root", 0) let groupData: any = {}; - if (message.group) { - groupData[message.group.name] = this.getGroupValues(message.group, data, `root`) - } + message.groups.forEach(group => { + groupData[group.name] = this.getGroupValues(group, data, "root") + }) + let componentData: any = {}; message.components.forEach(comp => { componentData[comp.name] = this.getComponentValues(comp, data, "root") @@ -338,12 +261,13 @@ export class FixForm extends React.Component { const fieldData = this.createFieldValues(def, inst, groupName, index) let groupData: any = {}; - if (def.group) { - groupData = this.getGroupValues(def.group, inst?.[def.group.name], groupName); - } + def.groups.forEach(group => { + groupData = { ...groupData, ...this.createGroupValues(group, inst?.[group.name], groupName) }; + }) + let componentData: any = {}; def.components.forEach(comp => { - componentData = { ...componentData, ...this.getComponentValues(comp, inst?.[comp.name], groupName) }; + componentData = { ...componentData, ...this.createComponentValues(comp, inst?.[comp.name], groupName) }; }) ret = { ...ret, ...fieldData, ...groupData, ...componentData } @@ -357,9 +281,10 @@ export class FixForm extends React.Component { private createComponentValues = (def: FixMessage, inputData: any, namePrefix: string) => { const fieldData = this.createFieldValues(def, inputData, `${namePrefix}|C:${def.name}:0`, 0) let groupData: any = {}; - if (def.group) { - groupData = this.createGroupValues(def.group, inputData?.[def.group.name], `${namePrefix}|C:${def.name}:0`); - } + def.groups.forEach(group => { + groupData = { ...groupData, ...this.createGroupValues(group, inputData?.[group.name], `${namePrefix}|C:${def.name}:0`) }; + }) + let componentData: any = {}; def.components.forEach(comp => { componentData = { ...componentData, ...this.createComponentValues(comp, inputData?.[comp.name], `${namePrefix}|C:${def.name}:0`) }; @@ -372,9 +297,10 @@ export class FixForm extends React.Component { const { message } = this.props; const fieldData = this.createFieldValues(message, data, "root", 0) let groupData: any = {}; - if (message.group) { - groupData = this.createGroupValues(message.group, data[message.group.name], `root`) - } + message.groups.forEach(group => { + groupData = { ...groupData, ...this.createGroupValues(group, data[group.name], `root`) } + }) + let componentData: any = {}; message.components.forEach(comp => { componentData = { ...componentData, ...this.createComponentValues(comp, data[comp.name], "root") } @@ -411,6 +337,97 @@ export class FixForm extends React.Component { ]; } + private getFieldRender = (field: FixField, required: boolean, parent: string, fieldIterationIndex: number) => { + const { enableIgnore } = this.props; + return + } + + renderField = (field: FixField, level: number, fieldIterationIndex: number, parent: string) => { + const { def } = field; + const fieldName = `${parent}__${def.name}__${fieldIterationIndex}`; + + if (this.props.removeNonFilledFields) { + const initialValues = this.getInitialValues(); + if (initialValues[fieldName] === undefined) { + return null + } + } + + return
+ {{def.name}[{def.number}]} + rules={[{ required: field.required, message: 'Please input valid value!' }]} > + {this.getFieldRender(field, field.required, parent, fieldIterationIndex)} + } +
+ } + + renderGroups = (group: FixComplexType, level: number, parent: string) => { + const newLevel = level++; + if (!group.groupInstances[parent]) { + if (group.required) { + group.groupInstances[parent] = [{}]; + } else { + group.groupInstances[parent] = []; + } + } + + const remove = (index: number) => { + const array = group.groupInstances[parent]; + array.splice(index, 1); + group.groupInstances[parent] = [...array]; + this.forceUpdate(); + } + + return
+
{getIntlMessage("group", { type: `${group.name} [${group.id}]` })} +
{ + group.groupInstances[parent].push({}) + this.forceUpdate(); + }}>
+
+ {(group.groupInstances[parent] as any[])?.map((val, i) => { + return
+
+ {this.renderFormFields(group, newLevel, i, `${parent}|G:${group.name}:${i}`)} +
+ remove(i)} + /> +
+ })} +
+
+ } + + renderComponents = (component: FixComplexType, level: number, parent: string) => { + const newLevel = level++; + return
+
{getIntlMessage("component", { type: component.name })}
+
+ {this.renderFormFields(component, newLevel, 0, `${parent}|C:${component.name}:0`)} +
+
+ } + + private renderFormFields = (message: FixComplexType, level: number, fieldIterationIndex: number, parent: string) => { + return message.getFieldOrder().map(inst => { + switch (inst.type) { + case "field": + const field = message.fields.get(inst.name); + return field && this.renderField(field, level, fieldIterationIndex, parent) + case "component": + const comp = message.components.get(inst.name); + return comp && this.renderComponents(comp, level, parent) + case "group": + const group = message.groups.get(inst.name); + return group && this.renderGroups(group, level, parent) + default: + return null; + } + }) + } + render() { const { hideTitle, message, viewOnly, disabled, name, saveMode, preferredFavName } = this.props; const { initialized, confirmVisible, saving, showSearch, currentMarkedIndex, markedItems } = this.state; @@ -475,19 +492,15 @@ export class FixForm extends React.Component { this.markInstance?.unmark(); }} />
} - {initialized && {console.log("=====>", e)}} labelCol={{ span: 10 }} labelAlign="left" onFinish={this.onFinished}> + {initialized &&
- - {this.renderFields(message, 0, 0, "root")} - {message.group && this.renderGroups(message.group, 0, "root")} - {message.components.map(comp => this.renderComponents(comp, 0, "root"))} - + {this.renderFormFields(message, 0, 0, "root")}
{!viewOnly &&
{!saveMode && { this.onAddToFavorites(data.name) }} />} + onAddToFavorites={(data) => { this.onAddToFavorites(data.name); }} />} title={getIntlMessage("save_as").toUpperCase()} placement="top" visible={confirmVisible} diff --git a/src/main-layout/SessionWindow/SessionTab/SessionManagement/FixHeaderForm.scss b/src/main-layout/SessionWindow/SessionTab/SessionManagement/FixHeaderForm.scss new file mode 100644 index 0000000..5f21e32 --- /dev/null +++ b/src/main-layout/SessionWindow/SessionTab/SessionManagement/FixHeaderForm.scss @@ -0,0 +1,111 @@ +.fix-header-form-container { + width: 100%; + height: 100%; + display: flex; + flex-direction: column; + position: relative; + color: var(--text-color); + background-color: var(--shade-375); + border-top: 1px solid var(--shade-300); + + .ant-form { + height: 100%; + overflow: AUTO; + display: flex; + flex-direction: column; + } + + .form-header { + padding: 15px; + padding-bottom: 5px; + + .title { + font-size: 14px; + font-weight: 500; + color: var(--accent-2-hover); + } + } + + .form-body { + display: flex; + flex-direction: column; + overflow: auto; + padding: 0 15px 15px 15px; + flex-grow: 1; + padding-top: 15px; + + .fix-field-wrapper { + .field-number { + margin-left: 5px; + font-size: 8px; + color: var(--shade-250); + } + } + + .fix-component { + display: flex; + flex-direction: column; + + &-title { + font-weight: 500; + margin-bottom: 15px; + color: var(--text-color-accent-1); + } + + &-fields { + } + } + + .fix-group { + display: flex; + flex-direction: column; + + &-title { + font-weight: 500; + margin-bottom: 15px; + color: var(--text-color-accent-1); + display: flex; + flex-direction: row; + } + + .fix-group-insert { + cursor: pointer; + margin-left: auto; + } + + .repitition-block { + border-bottom: 1px solid var(--separator-color); + border-bottom-style: dashed; + margin-top: 5px; + } + + &-fields { + .repitition-block { + display: flex; + + &-content { + display: flex; + flex-direction: column; + flex-grow: 1; + } + + .dynamic-delete-button { + color: var(--text-color-accent-1); + margin: 5px 0 5px 5px; + } + } + } + } + } + + .form-footer { + justify-content: space-between; + padding: 10px; + background: var(--shade-375); + display: flex; + + .save-btn { + margin-left: auto; + } + } +} diff --git a/src/main-layout/SessionWindow/SessionTab/SessionManagement/FixHeaderForm.tsx b/src/main-layout/SessionWindow/SessionTab/SessionManagement/FixHeaderForm.tsx new file mode 100644 index 0000000..c56fbb1 --- /dev/null +++ b/src/main-layout/SessionWindow/SessionTab/SessionManagement/FixHeaderForm.tsx @@ -0,0 +1,395 @@ +import { + MinusCircleOutlined, PlusOutlined, + SendOutlined +} from '@ant-design/icons'; +import { Form, Button, } from 'antd'; +import moment from 'moment'; +import React from 'react'; +import { IgnorableInput } from 'src/common/IgnorableInput/IgnorableInput'; +import { Toast } from 'src/common/Toast/Toast'; +import { FixComplexType, FixField } from 'src/services/fix/FixDefs'; +import { FixMessage, FixSession } from 'src/services/fix/FixSession'; +import { GlobalServiceRegistry } from 'src/services/GlobalServiceRegistry'; +import { LM } from 'src/translations/language-manager'; +import "./FixHeaderForm.scss"; + + +const getIntlMessage = (msg: string, options?: any) => { + return LM.getMessage(`fix_form.${msg}`, options); +} + + +interface FixHeaderFormProps { + session: FixSession; +} + +interface FixHeaderFormState { + initialized: boolean; +} + + +export class FixHeaderForm extends React.Component { + fieldIterationIndex = 0; + private formRef: any = React.createRef(); + private initialRenderTimer: any; + + constructor(props: any) { + super(props) + this.state = { + initialized: false, + } + } + + + componentDidMount(): void { + this.initialRenderTimer = setTimeout(() => { + this.setState({ initialized: true }) + }, 100) + } + + componentWillUnmount(): void { + clearTimeout(this.initialRenderTimer) + } + + private getFieldValueDirect = (field: FixField, inputData: any, namePrefix: string, fieldIterationIndex: number) => { + const name = field.def.name; + const ret: any = {}; + const properties = Object.keys(inputData) + const filteredProperties = properties.filter(property => property.indexOf(`${namePrefix}__${name}__${fieldIterationIndex}`) > -1) + filteredProperties.forEach(property => { + let value = inputData[property] + switch (field.def.type.toLowerCase()) { + case "utctimestamp": + case 'monthyear': + case 'utcdateonly': + case 'utctimeonly': + value = value?.toISOString(); + break; + } + + ret[name] = value + }) + + return ret; + } + + private getFieldValues = (def: FixMessage, inputData: any, namePrefix: string, fieldIterationIndex: number) => { + let ret: any = {}; + def.fields.forEach(field => { + ret = { ...ret, ...this.getFieldValueDirect(field, inputData, namePrefix, fieldIterationIndex) } + }) + + return ret; + } + + private getGroupValues = (def: FixMessage, inputData: any, namePrefix: string) => { + const ret: any = []; + (def.groupInstances[namePrefix] as any[])?.forEach((inst: any, index) => { + const fieldData = this.getFieldValues(def, inputData, `${namePrefix}|G:${def.name}:${index}`, index) + let groupData: any = {}; + def.groups.forEach(group => { + groupData[group.name] = this.getGroupValues(group, inputData, `${namePrefix}|G:${def.name}:${index}`); + }) + + let componentData: any = {}; + def.components.forEach(comp => { + componentData[comp.name] = this.getComponentValues(comp, inputData, `${namePrefix}|G:${def.name}:${index}`); + }) + + ret.push({ ...fieldData, ...groupData, ...componentData }) + }) + + + return ret; + } + + private getComponentValues = (def: FixMessage, inputData: any, namePrefix: string) => { + const fieldData = this.getFieldValues(def, inputData, `${namePrefix}|C:${def.name}:0`, 0) + let groupData: any = {}; + def.groups.forEach(group => { + groupData[group.name] = this.getGroupValues(group, inputData, `${namePrefix}|C:${def.name}:0`); + }) + + let componentData: any = {}; + def.components.forEach(comp => { + componentData[comp.name] = this.getComponentValues(comp, inputData, `${namePrefix}|C:${def.name}:0`); + }) + + return { ...fieldData, ...groupData, ...componentData }; + } + + private getMessageData = (data: any) => { + const { session } = this.props; + const headerFields = session.getHeaderFields(); + let out = {}; + headerFields.forEach((message) => { + switch (message.type) { + case "field": + const field = message.field as FixField; + const fieldData = this.getFieldValueDirect(field, data, "root", 0); + out = { ...out, ...fieldData }; + break; + case "component": + let componentData: any = {}; + const comp = message.field as FixComplexType; + componentData[comp.name] = this.getComponentValues(comp, data, "root") + out = { ...out, ...componentData }; + break; + case "group": + let groupData: any = {}; + const group = message.field as FixComplexType; + groupData[group.name] = this.getGroupValues(group, data, "root") + out = { ...out, ...groupData }; + break; + } + + }) + + return out; + } + + onFinished = (data: any) => { + const { session } = this.props; + session.profile.headerFields = this.getMessageData(data); + const ret = GlobalServiceRegistry.profile.addOrEditProfile(session.profile); + if (ret) { + Toast.success(getIntlMessage("profile_saving_success_title"), getIntlMessage("profile_saving_success")) + } else { + Toast.error(getIntlMessage("profile_saving_failed_title"), getIntlMessage("profile_saving_failed")) + } + } + + private getValue = (field: FixField, inputData: any) => { + if (!inputData) { + return undefined; + } + + const name = field.def.name; + const value = inputData[name]; + if (!value) { + return undefined; + } + + switch (field.def.type.toLowerCase()) { + case "utctimestamp": + case "monthyear": + case "utcdateonly": + case "utctimeonly": + return moment(value); + default: + return value; + } + } + + private createFieldValuesDirect = (field: FixField, inputData: any, namePrefix: string, fieldIterationIndex: number) => { + const ret: any = {}; + const name = field.def.name; + ret[`${namePrefix}__${name}__${fieldIterationIndex}`] = this.getValue(field, inputData) + return ret; + } + + private createFieldValues = (def: FixMessage, inputData: any, namePrefix: string, fieldIterationIndex: number) => { + let ret: any = {}; + def.fields.forEach(field => { + ret = { ...ret, ...this.createFieldValuesDirect(field, inputData, namePrefix, fieldIterationIndex) } + }) + + return ret; + } + + private createGroupValues = (def: FixMessage, inputData: any, namePrefix: string) => { + let ret: any = {}; + inputData?.forEach((inst: any, index: number) => { + const groupName = `${namePrefix}|G:${def.name}:${index}`; + + const fieldData = this.createFieldValues(def, inst, groupName, index) + let groupData: any = {}; + def.groups.forEach(group => { + groupData = { ...groupData, ...this.createGroupValues(group, inst?.[group.name], groupName) }; + }) + + let componentData: any = {}; + def.components.forEach(comp => { + componentData = { ...componentData, ...this.createComponentValues(comp, inst?.[comp.name], groupName) }; + }) + + ret = { ...ret, ...fieldData, ...groupData, ...componentData } + }); + + def.groupInstances[namePrefix] = def.groupInstances[namePrefix] ?? (inputData ? inputData.map(() => ({})) : []) + + return ret; + } + + private createComponentValues = (def: FixMessage, inputData: any, namePrefix: string) => { + const fieldData = this.createFieldValues(def, inputData, `${namePrefix}|C:${def.name}:0`, 0) + let groupData: any = {}; + def.groups.forEach(group => { + groupData = { ...groupData, ...this.createGroupValues(group, inputData?.[group.name], `${namePrefix}|C:${def.name}:0`) }; + }) + + let componentData: any = {}; + def.components.forEach(comp => { + componentData = { ...componentData, ...this.createComponentValues(comp, inputData?.[comp.name], `${namePrefix}|C:${def.name}:0`) }; + }) + + return { ...fieldData, ...groupData, ...componentData }; + } + + private createFormData = (data: any) => { + const { session } = this.props; + const headerFields = session.getHeaderFields(); + let out = {}; + headerFields.forEach((message) => { + switch (message.type) { + case "field": + const field = message.field as FixField; + const fieldData = this.createFieldValuesDirect(field, data, "root", 0) + out = { ...out, ...fieldData }; + break; + case "component": + const comp = message.field as FixComplexType; + const componentData = this.createComponentValues(comp, data[comp.name], "root") + out = { ...out, ...componentData }; + break; + case "group": + const group = message.field as FixComplexType; + const groupData = this.createGroupValues(group, data[group.name], `root`) + out = { ...out, ...groupData }; + break; + } + + }) + + return out; + } + + private getInitialValues() { + const { session } = this.props; + const value = session.profile.headerFields; + if (value) { + return this.createFormData(value); + } + + return undefined; + } + + + private getFieldRender = (field: FixField, required: boolean, parent: string, fieldIterationIndex: number) => { + return + } + + renderField = (field: FixField, level: number, fieldIterationIndex: number, parent: string) => { + const { def } = field; + const fieldName = `${parent}__${def.name}__${fieldIterationIndex}`; + + return
+ {{def.name}[{def.number}]} + rules={[{ required: field.required, message: 'Please input valid value!' }]} > + {this.getFieldRender(field, field.required, parent, fieldIterationIndex)} + } +
+ } + + renderGroups = (group: FixComplexType, level: number, fieldIterationIndex: number, parent: string) => { + const newLevel = level++; + if (!group.groupInstances[parent]) { + if (group.required) { + group.groupInstances[parent] = [{}]; + } else { + group.groupInstances[parent] = []; + } + } + + const remove = (index: number) => { + const array = group.groupInstances[parent]; + array.splice(index, 1); + group.groupInstances[parent] = [...array]; + this.forceUpdate(); + } + + return
+
{getIntlMessage("group", { type: `${group.name} [${group.id}]` })} +
{ + group.groupInstances[parent].push({}) + this.forceUpdate(); + }}>
+
+ {(group.groupInstances[parent] as any[])?.map((val, i) => { + return
+
+ {this.renderFormFields(group, newLevel, i, `${parent}|G:${group.name}:${i}`)} +
+ remove(i)} + /> +
+ })} +
+
+ } + + renderComponents = (component: FixComplexType, level: number, fieldIterationIndex: number, parent: string) => { + const newLevel = level++; + return
+
{getIntlMessage("component", { type: component.name })}
+
+ {this.renderFormFields(component, newLevel, fieldIterationIndex, `${parent}|C:${component.name}:0`)} +
+
+ } + + private renderFormFields = (message: FixComplexType, level: number, fieldIterationIndex: number, parent: string) => { + return message.getFieldOrder().map(inst => { + switch (inst.type) { + case "field": + const field = message.fields.get(inst.name); + return field && this.renderField(field, level, fieldIterationIndex, parent) + case "component": + const comp = message.components.get(inst.name); + return comp && this.renderComponents(comp, level, fieldIterationIndex, parent) + case "group": + const group = message.groups.get(inst.name); + return group && this.renderGroups(group, level, fieldIterationIndex, parent) + default: + return null; + } + }) + } + + private renderHeaderFormValues = () => { + const { session } = this.props; + const headerFields = session.getHeaderFields(); + return headerFields.map((message) => { + switch (message.type) { + case "field": + return this.renderField(message.field as FixField, 0, 0, "root") + case "component": + return this.renderComponents(message.field as FixComplexType, 0, 0, "root") + case "group": + return this.renderGroups(message.field as FixComplexType, 0, 0, "root") + default: + return null + } + }) + } + + render() { + const { initialized } = this.state; + + return
+ {initialized && +
+ {this.renderHeaderFormValues()} +
+ {
+ +
} + } +
+ + } + +} diff --git a/src/main-layout/SessionWindow/SessionTab/SessionManagement/GeneralInfo.scss b/src/main-layout/SessionWindow/SessionTab/SessionManagement/GeneralInfo.scss index 60b89c1..c90230a 100644 --- a/src/main-layout/SessionWindow/SessionTab/SessionManagement/GeneralInfo.scss +++ b/src/main-layout/SessionWindow/SessionTab/SessionManagement/GeneralInfo.scss @@ -1,19 +1,14 @@ .general-info { padding: 10px 20px; + height: 100%; + display: flex; + flex-direction: column; .header { font-weight: 500; margin-bottom: 20px; display: flex; justify-content: space-between; - - .connect-btn-wrapper { - - .disconnect-btn { - border-color: var(--danger); - color: var(--danger); - } - } } .field-container { @@ -67,6 +62,10 @@ } } + .body { + margin-bottom: 10px; + } + .action-container { margin-top: 10px; border-top: 1px solid var(--separator-color); @@ -77,4 +76,42 @@ margin-bottom: 10px; } } + + .header-field-title { + background: var(--shade-350); + color: var(--text-color); + line-height: 1.5715; + cursor: pointer; + transition: all 0.3s, visibility 0s; + padding: 5px 10px; + display: flex; + + .icon-container { + margin-left: auto; + + .rotate-90 { + transform: rotate(90deg); + transition: transform 0.4s; + } + + .rotate-0 { + transform: rotate(9deg); + transition: transform 0.4s; + } + } + } + + .header-field-body { + flex: 1 1 auto; + overflow-y: auto; + min-height: 0px; + } + + .header-body-hide { + height: 0; + + .fix-header-form-container { + height: 0; + } + } } diff --git a/src/main-layout/SessionWindow/SessionTab/SessionManagement/GeneralInfo.tsx b/src/main-layout/SessionWindow/SessionTab/SessionManagement/GeneralInfo.tsx index 42dbc60..6e18a29 100644 --- a/src/main-layout/SessionWindow/SessionTab/SessionManagement/GeneralInfo.tsx +++ b/src/main-layout/SessionWindow/SessionTab/SessionManagement/GeneralInfo.tsx @@ -1,10 +1,10 @@ -import { SendOutlined, StopOutlined } from '@ant-design/icons'; -import { Button, Switch } from 'antd'; +import { Switch } from 'antd'; +import { RightOutlined } from '@ant-design/icons'; import React from 'react'; import { Subscription } from 'rxjs'; -import { Toast } from 'src/common/Toast/Toast'; import { FixSession, FixSessionEventType } from 'src/services/fix/FixSession'; import { LM } from 'src/translations/language-manager'; +import { FixHeaderForm } from './FixHeaderForm'; import './GeneralInfo.scss'; const getIntlMessage = (msg: string) => { @@ -20,6 +20,7 @@ interface GeneralInfoState { hbEnabled: boolean; testRequestEnabled: boolean; connecting: boolean; + showHeaderFields: boolean; } @@ -33,6 +34,7 @@ export class GeneralInfo extends React.Component } + private toggleHeaderFields = () => { + this.setState({ showHeaderFields: !this.state.showHeaderFields }) + } + render() { const { session } = this.props; const { name, ip, port, senderCompId, targetCompId, } = session.profile; - const { connected, hbEnabled, testRequestEnabled, connecting } = this.state; + const { connected, hbEnabled, testRequestEnabled, showHeaderFields } = this.state; return
{getIntlMessage("general_info_title")} -
- {!connected && } - {connected && } -
{this.getFieldValue(getIntlMessage("name"), name)} @@ -106,6 +98,15 @@ export class GeneralInfo extends React.Component
+
+ {getIntlMessage("header_fields")} +
+ +
+
+
+ {} +
} } diff --git a/src/main-layout/SessionWindow/SessionTab/SessionManagement/Scenarios/ScenarioDefs.ts b/src/main-layout/SessionWindow/SessionTab/SessionManagement/Scenarios/ScenarioDefs.ts index 3ba90f0..cfdd8f8 100644 --- a/src/main-layout/SessionWindow/SessionTab/SessionManagement/Scenarios/ScenarioDefs.ts +++ b/src/main-layout/SessionWindow/SessionTab/SessionManagement/Scenarios/ScenarioDefs.ts @@ -101,18 +101,26 @@ export class Stage { return this.failedReason; } - private validateInputValues(expectedValues: any, receviedValues: any): boolean { - if (expectedValues === receviedValues) return true; + private validateInputValues(expectedValues: any, receviedValues: any): { state: boolean, failedReason?: string } { + if (expectedValues === receviedValues) return { state: true }; - if (!(expectedValues instanceof Object) || !(receviedValues instanceof Object)) return false; - - if (expectedValues.constructor !== receviedValues.constructor) return false; + if (!(expectedValues instanceof Object) || !(receviedValues instanceof Object)) return { + state: false, + failedReason: getIntlMessage("input_output_validation_failed_object", { exp: !(expectedValues instanceof Object), recv: !(receviedValues instanceof Object) }) + }; + if (expectedValues.constructor !== receviedValues.constructor) return { + state: false, + failedReason: getIntlMessage("input_output_validation_failed_constructor", { exp: expectedValues.constructor.name, recv: receviedValues.constructor.name }) + };; for (var p in expectedValues) { if (!expectedValues.hasOwnProperty(p)) continue; - if (!receviedValues.hasOwnProperty(p)) return false; + if (!receviedValues.hasOwnProperty(p)) return { + state: false, + failedReason: getIntlMessage("input_output_validation_failed_property", { exp: p }) + }; // eslint-disable-next-line if (expectedValues[p] == receviedValues[p]) continue; @@ -138,13 +146,17 @@ export class Stage { continue; } - if (typeof (expectedValues[p]) !== "object") return false; + if (typeof (expectedValues[p]) !== "object") return { + state: false, + failedReason: getIntlMessage("input_output_validation_failed_expected", { exp: p }) + }; - if (!this.validateInputValues(expectedValues[p], receviedValues[p])) return false; + const ret = this.validateInputValues(expectedValues[p], receviedValues[p]); + if (!ret.state) return ret; } - return true; + return { state: true }; } private subscribeToSession() { @@ -164,8 +176,10 @@ export class Stage { removeFalsyKeys(expectedValues) - if (this.validateInputValues(expectedValues, receviedValues)) { + const ret = this.validateInputValues(expectedValues, receviedValues); + if (ret.state) { expectedMsg.state = "SUCCESS"; + this.failedReason = ""; let isDone = true; this.outputMsgs.forEach(inst => { if (isDone) { @@ -182,6 +196,7 @@ export class Stage { } else { expectedMsg.state = "FAILED"; this.state = "FAILED"; + this.failedReason = ret.failedReason; this.stop(); } } diff --git a/src/main-layout/SessionWindow/SessionTab/SessionManagement/Scenarios/ScenarioInstance.tsx b/src/main-layout/SessionWindow/SessionTab/SessionManagement/Scenarios/ScenarioInstance.tsx index 27dc20b..e312995 100644 --- a/src/main-layout/SessionWindow/SessionTab/SessionManagement/Scenarios/ScenarioInstance.tsx +++ b/src/main-layout/SessionWindow/SessionTab/SessionManagement/Scenarios/ScenarioInstance.tsx @@ -130,10 +130,15 @@ export class ScenarioInstance extends React.Component { const { editStageVisible } = this.state; + const failedReason = stage.getFailedReason(); return
{stage.isWaiting() &&
{getIntlMessage("waiting_state")}
} - {!stage.isSkipped() &&
{stage.getState()}
} + {!stage.isSkipped() &&
+ + {stage.getState()} + +
}
{ { stage.setSkipped(e.target.checked); this.forceUpdate(); diff --git a/src/main-layout/SessionWindow/SessionTab/SessionManagement/SessionManagement.scss b/src/main-layout/SessionWindow/SessionTab/SessionManagement/SessionManagement.scss index 1412f17..c34e5ad 100644 --- a/src/main-layout/SessionWindow/SessionTab/SessionManagement/SessionManagement.scss +++ b/src/main-layout/SessionWindow/SessionTab/SessionManagement/SessionManagement.scss @@ -4,23 +4,76 @@ width: 100%; height: 100%; + .fix-session-connectivity { + display: flex; + flex-direction: row; + align-items: center; + justify-content: center; + padding: 10px; + + .fix-session-title { + display: flex; + flex-direction: row; + font-weight: 500; + font-size: 15px; + color: var(--text-color); + align-content: center; + justify-content: center; + width: 100%; + + &-text { + width: 100%; + text-transform: capitalize; + text-overflow: ellipsis; + overflow: hidden; + white-space: nowrap; + } + } + + .connect-btn-wrapper { + margin-left: auto; + .disconnect-btn { + border-color: var(--danger); + color: var(--danger); + } + } + + .status-indic { + width: 10px; + height: 10px; + border-radius: 50%; + font-weight: 500; + box-shadow: var(--box-shadow); + margin: auto; + margin-right: 5px; + } + + .connected { + background-color: var(--success); + } + + .disconnected { + background-color: var(--danger); + } + } + .tab-view { width: 100%; - height: 100%; + height: calc(100% - 52px); - .ant-tabs-tabpane { + .ant-tabs-tabpane { height: 100%; } .ant-tabs-content-holder { height: 100%; } - + .ant-tabs { width: 100%; height: 100%; padding: 0; - + .ant-tabs-content { width: 100%; height: 100%; diff --git a/src/main-layout/SessionWindow/SessionTab/SessionManagement/SessionManagement.tsx b/src/main-layout/SessionWindow/SessionTab/SessionManagement/SessionManagement.tsx index e241657..55f0130 100644 --- a/src/main-layout/SessionWindow/SessionTab/SessionManagement/SessionManagement.tsx +++ b/src/main-layout/SessionWindow/SessionTab/SessionManagement/SessionManagement.tsx @@ -1,7 +1,9 @@ import React from 'react'; +import { SendOutlined, StopOutlined } from '@ant-design/icons'; +import { Toast } from 'src/common/Toast/Toast'; import './SessionManagement.scss'; -import { Tabs } from 'antd'; -import { FixSession } from 'src/services/fix/FixSession'; +import { Tabs, Button } from 'antd'; +import { FixSession, FixSessionEventType } from 'src/services/fix/FixSession'; import { LM } from 'src/translations/language-manager'; import { NewMessage } from './NewMessage'; import { IntraTabCommunicator } from '../../../../common/IntraTabCommunicator'; @@ -9,11 +11,12 @@ import { GeneralInfo } from './GeneralInfo'; import { Favorites } from './Favorites'; import { Scenarios } from './Scenarios/Scenarios'; import { NewMessageFromRaw } from './NewMessageFromRaw'; +import { Subscription } from 'rxjs'; const { TabPane } = Tabs; -const getIntlMessage = (msg: string) => { - return LM.getMessage(`session_management.${msg}`); +const getIntlMessage = (msg: string, opt?: any) => { + return LM.getMessage(`session_management.${msg}`, opt); } interface SessionManagementProps { @@ -21,11 +24,59 @@ interface SessionManagementProps { communicator: IntraTabCommunicator; } -export class SessionManagement extends React.Component { +interface SessionManagementoState { + connected: boolean; + connecting: boolean; +} + +export class SessionManagement extends React.Component { + private sessionSub?: Subscription; + + constructor(props: any) { + super(props) + const { session } = this.props; + this.state = { + connected: session.isReady(), + connecting: false, + } + } + + componentDidMount() { + this.sessionSub = this.props.session.getFixEventObservable().subscribe(eventData => { + this.forceUpdate(); + this.setState({ connected: eventData.event !== FixSessionEventType.DISCONNECT, connecting: false }) + }) + } + + componentWillUnmount() { + this.sessionSub?.unsubscribe(); + } render() { const { session } = this.props; + const { connected, connecting } = this.state; + return
+
+
+
+
{getIntlMessage("fix_session_connectivity", { name: session.profile.name })}
+
+
+ {!connected && } + {connected && } +
+
diff --git a/src/main-layout/SideMenu/SidePanelContainer/ProfilePanel/ProfilePanel.tsx b/src/main-layout/SideMenu/SidePanelContainer/ProfilePanel/ProfilePanel.tsx index 6d9d9af..abb1d8b 100644 --- a/src/main-layout/SideMenu/SidePanelContainer/ProfilePanel/ProfilePanel.tsx +++ b/src/main-layout/SideMenu/SidePanelContainer/ProfilePanel/ProfilePanel.tsx @@ -93,6 +93,37 @@ export class ProfilePanel extends React.Component { this.setState({ showNewForm: false }) } + private getSSLForm = () => { + return + {getIntlMessage("ssl_configuration")}} key="1"> + + + + + + + + + + + + + + + + + + + + + } + private getNewProfileForm = () => { const { showNewForm, currentProfile, isNewForm, requireTransportDic } = this.state; return
@@ -135,34 +166,7 @@ export class ProfilePanel extends React.Component { {requireTransportDic && } - - {getIntlMessage("ssl_configuration")}} key="1"> - - - - - - - - - - - - - - - - - - - - + {this.getSSLForm()} {/*
{getIntlMessage("ssl_configuration")}
*/}
diff --git a/src/services/fix/FixDefinitionParser.ts b/src/services/fix/FixDefinitionParser.ts index f65fe32..5ea0096 100644 --- a/src/services/fix/FixDefinitionParser.ts +++ b/src/services/fix/FixDefinitionParser.ts @@ -6,7 +6,7 @@ const parser = require('xml-reader'); export type FixMessageDef = FixComplexType; export const SOH = String.fromCharCode(1); - +const EXCLUDED_HEADERS = ["BeginString", "BodyLength", "MsgType", "SenderCompID", "TargetCompID", "MsgSeqNum", "SendingTime"]; export interface FixMsgHeader { msgType: string; sequence: number; @@ -23,7 +23,7 @@ export class FixDefinitionParser { private messageTypeMap = new Map(); private fieldMap = new Map(); private componentMap = new Map(); - private headerFields = new Set(); + private headerFields = new Map(); constructor(private readonly dictionaryInfo: { path: string, @@ -71,10 +71,6 @@ export class FixDefinitionParser { const components: FixXmlNode = xmlObj.children.find(inst => inst.name === "components") as any; const header: FixXmlNode = xmlObj.children.find(inst => inst.name === "header") as any; - header.children.forEach((inst) => [ - this.headerFields.add(inst.attributes.name) - ]) - fields.children.forEach((inst) => { const field = new FixFieldDef(inst) this.fieldMap.set(field.name, field); @@ -83,7 +79,7 @@ export class FixDefinitionParser { components.children.forEach((inst) => { const comp = new FixComplexType(inst, this.fieldMap) this.componentMap.set(comp.name, comp); - }, {}) + }) this.componentMap.forEach(comp => { comp.resolveFields(this.componentMap) @@ -102,6 +98,32 @@ export class FixDefinitionParser { comp.resolveFields(this.componentMap) }) + header.children.forEach((inst) => { + if (inst.name === "field") { + const fieldDef = this.fieldMap.get(inst.attributes.name) + if (fieldDef) { + if (EXCLUDED_HEADERS.includes(inst.attributes.name)) { + return; + } + + const field = new FixField(fieldDef, inst.attributes.required === "Y") + this.headerFields.set(field.def.name, { field, type: "field" }); + } + } else if (inst.name === "group") { + const field = new FixComplexType(inst, this.fieldMap) + this.headerFields.set(field.name, { field, type: "group" }); + } else if (inst.name === "component") { + const field = new FixComplexType(inst, this.fieldMap) + this.headerFields.set(field.name, { field, type: "component" }); + } + }) + + this.headerFields.forEach((comp) => { + if (comp.type === "component" || comp.type === "group") { + (comp.field as FixComplexType).resolveFields(this.componentMap) + } + }) + done(); } }); @@ -111,6 +133,10 @@ export class FixDefinitionParser { } + getHeaderFields() { + return Array.from(this.headerFields.values()); + } + getFieldDef(name: string): FixFieldDef | undefined { return this.fieldMap.get(name) } @@ -196,18 +222,53 @@ export class FixDefinitionParser { return fixMsgBody; } - private encodeHeader(header: FixMsgHeader) { - return '35=' + header.msgType + + private encodeCustomHeaders(customHeaderData: any) { + removeFalsyKeys(customHeaderData); + const properties = Object.keys(customHeaderData); + let fixMsgHeader = ""; + + properties.forEach(property => { + let def: any = this.fieldMap.get(property); + if (def) { + if (def.isGroupField) { + const arrayData = customHeaderData[property] as any[]; + fixMsgHeader += `${def.number}=${arrayData.length}${SOH}`; + arrayData.forEach(inst => { + fixMsgHeader += this.encodeToFixBody(inst) + }) + } else { + const fielData = def.formatValueToPack(customHeaderData[property]); + fixMsgHeader += `${def.number}=${fielData}${SOH}` + } + } else { + def = this.componentMap.get(property); + if (def) { + fixMsgHeader += this.encodeToFixBody(customHeaderData[property]); + } + } + }) + + return fixMsgHeader; + } + + private encodeHeader(header: FixMsgHeader, customHeaders?: any) { + let ret = '35=' + header.msgType + `${SOH}34=` + header.sequence + `${SOH}52=` + header.time + `${SOH}49=` + header.senderCompId + - `${SOH}56=` + header.targetCompId + `${SOH}56=` + header.targetCompId + SOH; + + if (customHeaders) { + ret += this.encodeCustomHeaders(customHeaders) + } + + return ret; } - encodeToFix(data: any, header: FixMsgHeader, parameters?: any): string { + encodeToFix(data: any, header: FixMsgHeader, parameters?: any, customHeaders?: any): string { const messageBody = this.encodeToFixBody(data, parameters); - const messageHeader = this.encodeHeader(header); - const msg = messageHeader + SOH + messageBody; + const messageHeader = this.encodeHeader(header, customHeaders); + const msg = messageHeader + messageBody; let message = this.BEGIN_STRING + SOH + '9=' + msg.length + SOH + msg; message += '10=' + this.checksum(message) + SOH; return message; @@ -255,7 +316,7 @@ export class FixDefinitionParser { return undefined } - + private getFieldValues = (def: FixComplexType, inputData: string, fieldIterationIndex: number, withHeaders: boolean, isGroup?: boolean) => { const ret: any = {}; const requiredField = def.requiredFields[0]; @@ -276,7 +337,7 @@ export class FixDefinitionParser { return ret; } - private getGroupValues = (def: FixComplexType, inputData: string, withHeaders: boolean) => { + private getGroupValues = (def: FixComplexType, inputData: string, fieldIterationIndex: number, withHeaders: boolean) => { const ret: any = []; const interationLen = this.getTagValue(inputData, def.id); @@ -288,12 +349,13 @@ export class FixDefinitionParser { const fieldData = this.getFieldValues(def, inputData, i, withHeaders, true) let groupData: any = {}; - if (def.group) { - groupData[def.group.name] = this.getGroupValues(def.group, inputData, withHeaders); - } + def.groups.forEach(group => { + groupData[group.name] = this.getGroupValues(group, inputData, i, withHeaders); + }) + let componentData: any = {}; def.components.forEach(comp => { - componentData[comp.name] = this.getComponentValues(comp, inputData, withHeaders); + componentData[comp.name] = this.getComponentValues(comp, inputData, i, withHeaders); }) ret.push({ ...fieldData, ...groupData, ...componentData }) @@ -302,15 +364,16 @@ export class FixDefinitionParser { return ret; } - private getComponentValues = (def: FixComplexType, inputData: string, withHeaders: boolean) => { - const fieldData = this.getFieldValues(def, inputData, 0, withHeaders) + private getComponentValues = (def: FixComplexType, inputData: string, fieldIterationIndex: number, withHeaders: boolean) => { + const fieldData = this.getFieldValues(def, inputData, fieldIterationIndex, withHeaders) let groupData: any = {}; - if (def.group) { - groupData[def.group.name] = this.getGroupValues(def.group, inputData, withHeaders); - } + def.groups.forEach(group => { + groupData[group.name] = this.getGroupValues(group, inputData, fieldIterationIndex, withHeaders); + }) + let componentData: any = {}; def.components.forEach(comp => { - componentData[comp.name] = this.getComponentValues(comp, inputData, withHeaders); + componentData[comp.name] = this.getComponentValues(comp, inputData, fieldIterationIndex, withHeaders); }) return { ...fieldData, ...groupData, ...componentData }; @@ -329,12 +392,13 @@ export class FixDefinitionParser { private decodeInternals(msgDef: FixComplexType, msg: string, withHeaders = false) { const fieldData = this.getFieldValues(msgDef, msg, 0, withHeaders) let groupData: any = {}; - if (msgDef.group) { - groupData[msgDef.group.name] = this.getGroupValues(msgDef.group, msg, withHeaders) - } + msgDef.groups.forEach(group => { + groupData[group.name] = this.getGroupValues(group, msg, 0, withHeaders); + }) + let componentData: any = {}; msgDef.components.forEach(comp => { - componentData[comp.name] = this.getComponentValues(comp, msg, withHeaders) + componentData[comp.name] = this.getComponentValues(comp, msg, 0, withHeaders) }) return { ...fieldData, ...groupData, ...componentData }; diff --git a/src/services/fix/FixDefs.ts b/src/services/fix/FixDefs.ts index 421b9af..dac22c6 100644 --- a/src/services/fix/FixDefs.ts +++ b/src/services/fix/FixDefs.ts @@ -120,14 +120,18 @@ export class FixField { } } +type FieldTypes = "group" | "component" | "field"; +type FieldOrderEntry = { name: string, type: FieldTypes }; + export class FixComplexType { type: "group" | "component" | "message"; name: string; required?: boolean; - fields: FixField[] = []; + fields = new Map(); requiredFields: FixField[] = []; - components: FixComplexType[] = []; - group?: FixComplexType; + components = new Map(); + groups = new Map(); + fieldOrder: FieldOrderEntry[] = []; groupInstances: any = {}; id: string; private value: any; @@ -140,12 +144,14 @@ export class FixComplexType { this.id = xmlNode.attributes.msgtype ?? fieldDefMap.get(this.name)?.number; xmlNode.children.forEach(child => { + this.fieldOrder.push({ name: child.attributes.name, type: child.name as any }) + switch (child.name) { case "field": const def = this.fieldDefMap.get(child.attributes.name); if (def) { const field = new FixField(def, child.attributes.required === "Y"); - this.fields.push(field); + this.fields.set(field.def.name, field); if (field.required) { this.requiredFields.push(field); @@ -153,10 +159,12 @@ export class FixComplexType { } break; case "group": - this.group = new FixComplexType(child, this.fieldDefMap); + const groupInst = new FixComplexType(child, this.fieldDefMap); + this.groups.set(groupInst.name, groupInst) break; case "component": - this.components.push(new FixComplexType(child, this.fieldDefMap)) + const compInst = new FixComplexType(child, this.fieldDefMap); + this.components.set(compInst.name, compInst) break; } }) @@ -170,6 +178,14 @@ export class FixComplexType { this.valueWithHeaders = value; } + getFieldOrder(): FieldOrderEntry[] { + return this.fieldOrder; + } + + getField() { + + } + getValue() { return this.value; } @@ -180,23 +196,29 @@ export class FixComplexType { clone(): FixComplexType { const ret = new FixComplexType(this.xmlNode, this.fieldDefMap); - ret.fields = this.fields.map(field => field.clone()) - ret.components = this.components.map(comp => comp.clone()) - ret.group = this.group?.clone(); + ret.fields = new Map(Array.from(this.fields.values()).map(field => field.clone()).map(i => [i.def.name, i])) + ret.components = new Map(Array.from(this.components.values()).map(comp => comp.clone()).map(i => [i.name, i])); + ret.groups = new Map(Array.from(this.groups.values()).map(comp => comp.clone()).map(i => [i.name, i])); + ret.requiredFields = this.requiredFields.map(comp => comp.clone()); + ret.fieldOrder = this.fieldOrder; return ret; } resolveFields(componentMap: Map) { - this.components = this.components.map(inst => { + this.components.forEach(inst => { const ref = componentMap.get(inst.name); if (ref) { - return ref; + inst.fields = new Map(Array.from(ref.fields.values()).map(field => field.clone()).map(i => [i.def.name, i])); + inst.components = new Map(Array.from(ref.components.values()).map(comp => comp.clone()).map(i => [i.name, i])); + inst.groups = new Map(Array.from(ref.groups.values()).map(comp => comp.clone()).map(i => [i.name, i])); + inst.requiredFields = ref.requiredFields.map(comp => comp.clone()); + inst.fieldOrder = ref.fieldOrder; } + }); - return undefined; - }).filter(inst => !!inst) as FixComplexType[]; - - this.group?.resolveFields(componentMap); + this.groups.forEach(inst => { + inst?.resolveFields(componentMap); + }); } } diff --git a/src/services/fix/FixSession.ts b/src/services/fix/FixSession.ts index 8ffb805..f511376 100644 --- a/src/services/fix/FixSession.ts +++ b/src/services/fix/FixSession.ts @@ -182,9 +182,11 @@ export class FixSession { async connect(): Promise { const { ip, port } = this.profile; - const sslConfigs : SocketSSLConfigs = { sslEnabled:this.profile.sslEnabled, sslProtocol:this.profile.sslProtocol - , sslCACertificate:this.profile.sslCACertificate, sslServerName:this.profile.sslServerName - , sslCertificate:this.profile.sslCertificate, sslCertificatePassword:this.profile.sslCertificatePassword }; + const sslConfigs: SocketSSLConfigs = { + sslEnabled: this.profile.sslEnabled, sslProtocol: this.profile.sslProtocol + , sslCACertificate: this.profile.sslCACertificate, sslServerName: this.profile.sslServerName + , sslCertificate: this.profile.sslCertificate, sslCertificatePassword: this.profile.sslCertificatePassword + }; this.socket = GlobalServiceRegistry.socket.createSocket(ip, port, sslConfigs); return new Promise(async (resolve, reject) => { @@ -335,6 +337,10 @@ export class FixSession { } } + public getHeaderFields = () => { + return this.parser.getHeaderFields(); + } + public disconnect = async (dontSendMsg?: boolean) => { const msg = this.createNewMessageInst("Logout"); if (!dontSendMsg && msg) { @@ -356,7 +362,7 @@ export class FixSession { targetCompId: this.profile.targetCompId, sequence: this.tx, time: moment(new Date()).utc().format("YYYYMMDD-HH:mm:ss.000") - }, parameters) + }, parameters, this.profile.headerFields) } public decodeFixMessage = (msg: string) => { diff --git a/src/services/profile/ProfileDefs.ts b/src/services/profile/ProfileDefs.ts index 10c4e40..9b389a5 100644 --- a/src/services/profile/ProfileDefs.ts +++ b/src/services/profile/ProfileDefs.ts @@ -18,9 +18,10 @@ export interface Profile { sslCACertificate?: string; sslCertificate?: string; sslProtocol?: string; + headerFields?: any; } -export interface ProfileWithCredentials extends Profile { +export interface ProfileWithCredentials extends Profile { username: string; password: string; sslCertificatePassword?: string; diff --git a/src/translations/languages/en.json b/src/translations/languages/en.json index 72ba9e0..118bd1f 100644 --- a/src/translations/languages/en.json +++ b/src/translations/languages/en.json @@ -92,6 +92,8 @@ "send": "Send", "save": "Save", "edit_msg": "Edit: { msg }", + "header_fields": "Header Fields", + "fix_session_connectivity": "Session: {name}", "remove_non_filled_fields": "Remove Non-Filled", "msg_connection_failed_title": "Connection Failure", "msg_connection_failed_desc": "Failed to connect to fix session", @@ -154,6 +156,10 @@ "msg_saving_success": "{ name } successfully added to favorites ", "msg_saving_failed_title": "Add To Favorite", "msg_saving_failed": "Error occurred while saving the data", + "profile_saving_success_title": "Saving Header Fields", + "profile_saving_success": "Header fields saved successfully", + "profile_saving_failed_title": "Saving Header Fields", + "profile_saving_failed": "Error occurred while saving the data", "search": "Search" }, "fix_session": { @@ -199,7 +205,11 @@ }, "scenario_state": { "msg_timeout": "Response timedout. Expected output not received within { time } seconds", - "msg_connection_error": "Session disconnected" + "msg_connection_error": "Session disconnected", + "input_output_validation_failed_object": "Invalid object type received as expected: { exp } | received: { recv }", + "input_output_validation_failed_constructor": "Expected and received objects are different. Expected: { exp } | Received: { recv }", + "input_output_validation_failed_property": "Expected property is missing in the response. Expected: { exp }", + "input_output_validation_failed_expected": "Invalid expected value: Expected: { exp }" }, "ignore_input": { "ignore": "Ignore", diff --git a/yarn.lock b/yarn.lock index b218ce4..b08ce8c 100644 --- a/yarn.lock +++ b/yarn.lock @@ -45,6 +45,14 @@ dependencies: "prop-types" "^15.6.2" +"@ampproject/remapping@^2.1.0": + "integrity" "sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==" + "resolved" "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz" + "version" "2.2.0" + dependencies: + "@jridgewell/gen-mapping" "^0.1.0" + "@jridgewell/trace-mapping" "^0.3.9" + "@ant-design/colors@^6.0.0": "integrity" "sha512-qAZRvPzfdWHtfameEGP2Qvuf838NhergR35o+EuVyB5XvSA98xod5r4utvi4TJ3ywmevm290g9nsCG5MryrdWQ==" "resolved" "https://registry.npmjs.org/@ant-design/colors/-/colors-6.0.0.tgz" @@ -79,12 +87,12 @@ "lodash" "^4.17.21" "resize-observer-polyfill" "^1.5.0" -"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.4", "@babel/code-frame@^7.14.5", "@babel/code-frame@^7.5.5": - "integrity" "sha512-9pzDqyc6OLDaqe+zbACgFkb6fKMNG6CObKpnYXChRsvYGyEdc7CA2BaqeOM+vOtCS5ndmJicPJhKAwYRI6UfFw==" - "resolved" "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.14.5.tgz" - "version" "7.14.5" +"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.4", "@babel/code-frame@^7.18.6", "@babel/code-frame@^7.5.5": + "integrity" "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==" + "resolved" "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz" + "version" "7.18.6" dependencies: - "@babel/highlight" "^7.14.5" + "@babel/highlight" "^7.18.6" "@babel/code-frame@7.10.4": "integrity" "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==" @@ -100,12 +108,33 @@ dependencies: "@babel/highlight" "^7.10.4" -"@babel/compat-data@^7.12.1", "@babel/compat-data@^7.13.11", "@babel/compat-data@^7.15.0": - "integrity" "sha512-0NqAC1IJE0S0+lL1SWFMxMkz1pKCNCjI4tr2Zx4LJSXxCLAdr6KyArnY+sno5m3yH9g737ygOyPABDsnXkpxiA==" - "resolved" "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.15.0.tgz" - "version" "7.15.0" +"@babel/compat-data@^7.12.1", "@babel/compat-data@^7.13.11", "@babel/compat-data@^7.15.0", "@babel/compat-data@^7.20.5": + "integrity" "sha512-sEnuDPpOJR/fcafHMjpcpGN5M2jbUGUHwmuWKM/YdPzeEDJg8bgmbcWQFUfE32MQjti1koACvoPVsDe8Uq+idg==" + "resolved" "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.20.10.tgz" + "version" "7.20.10" + +"@babel/core@^7.0.0", "@babel/core@^7.0.0-0", "@babel/core@^7.1.0", "@babel/core@^7.12.0", "@babel/core@^7.12.3", "@babel/core@^7.13.0", "@babel/core@^7.4.0-0", "@babel/core@^7.7.5", "@babel/core@^7.8.4", "@babel/core@7 || ^7.0.0-rc.2": + "integrity" "sha512-XsMfHovsUYHFMdrIHkZphTN/2Hzzi78R08NuHfDBehym2VsPDL6Zn/JAD/JQdnRvbSsbQc4mVaU1m6JgtTEElg==" + "resolved" "https://registry.npmjs.org/@babel/core/-/core-7.20.12.tgz" + "version" "7.20.12" + dependencies: + "@ampproject/remapping" "^2.1.0" + "@babel/code-frame" "^7.18.6" + "@babel/generator" "^7.20.7" + "@babel/helper-compilation-targets" "^7.20.7" + "@babel/helper-module-transforms" "^7.20.11" + "@babel/helpers" "^7.20.7" + "@babel/parser" "^7.20.7" + "@babel/template" "^7.20.7" + "@babel/traverse" "^7.20.12" + "@babel/types" "^7.20.7" + "convert-source-map" "^1.7.0" + "debug" "^4.1.0" + "gensync" "^1.0.0-beta.2" + "json5" "^2.2.2" + "semver" "^6.3.0" -"@babel/core@^7.0.0", "@babel/core@^7.0.0-0", "@babel/core@^7.1.0", "@babel/core@^7.12.0", "@babel/core@^7.12.3", "@babel/core@^7.13.0", "@babel/core@^7.4.0-0", "@babel/core@^7.7.5", "@babel/core@^7.8.4", "@babel/core@7 || ^7.0.0-rc.2", "@babel/core@7.12.3": +"@babel/core@7.12.3": "integrity" "sha512-0qXcZYKZp3/6N2jKYVxZv0aNCsxTSVCiK72DTiTYZAu7sjg73W0/aynWjMbiGd87EQL4WyA8reiJVh92AVla9g==" "resolved" "https://registry.npmjs.org/@babel/core/-/core-7.12.3.tgz" "version" "7.12.3" @@ -127,14 +156,14 @@ "semver" "^5.4.1" "source-map" "^0.5.0" -"@babel/generator@^7.12.1", "@babel/generator@^7.15.4": - "integrity" "sha512-d3itta0tu+UayjEORPNz6e1T3FtvWlP5N4V5M+lhp/CxT4oAA7/NcScnpRyspUMLK6tu9MNHmQHxRykuN2R7hw==" - "resolved" "https://registry.npmjs.org/@babel/generator/-/generator-7.15.4.tgz" - "version" "7.15.4" +"@babel/generator@^7.12.1", "@babel/generator@^7.20.7": + "integrity" "sha512-7wqMOJq8doJMZmP4ApXTzLxSr7+oO2jroJURrVEp6XShrQUObV8Tq/D0NCcoYg2uHqUrjzO0zwBjoYzelxK+sw==" + "resolved" "https://registry.npmjs.org/@babel/generator/-/generator-7.20.7.tgz" + "version" "7.20.7" dependencies: - "@babel/types" "^7.15.4" + "@babel/types" "^7.20.7" + "@jridgewell/gen-mapping" "^0.3.2" "jsesc" "^2.5.1" - "source-map" "^0.5.0" "@babel/helper-annotate-as-pure@^7.14.5", "@babel/helper-annotate-as-pure@^7.15.4": "integrity" "sha512-QwrtdNvUNsPCj2lfNQacsGSQvGX8ee1ttrBrcozUP2Sv/jylewBP/8QFe6ZkBsC8T/GYWonNAWJV4aRR9AL2DA==" @@ -151,14 +180,15 @@ "@babel/helper-explode-assignable-expression" "^7.15.4" "@babel/types" "^7.15.4" -"@babel/helper-compilation-targets@^7.12.1", "@babel/helper-compilation-targets@^7.13.0", "@babel/helper-compilation-targets@^7.15.4": - "integrity" "sha512-rMWPCirulnPSe4d+gwdWXLfAXTTBj8M3guAf5xFQJ0nvFY7tfNAFnWdqaHegHlgDZOCT4qvhF3BYlSJag8yhqQ==" - "resolved" "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.15.4.tgz" - "version" "7.15.4" +"@babel/helper-compilation-targets@^7.12.1", "@babel/helper-compilation-targets@^7.13.0", "@babel/helper-compilation-targets@^7.15.4", "@babel/helper-compilation-targets@^7.20.7": + "integrity" "sha512-4tGORmfQcrc+bvrjb5y3dG9Mx1IOZjsHqQVUz7XCNHO+iTmqxWnVg3KRygjGmpRLJGdQSKuvFinbIb0CnZwHAQ==" + "resolved" "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.20.7.tgz" + "version" "7.20.7" dependencies: - "@babel/compat-data" "^7.15.0" - "@babel/helper-validator-option" "^7.14.5" - "browserslist" "^4.16.6" + "@babel/compat-data" "^7.20.5" + "@babel/helper-validator-option" "^7.18.6" + "browserslist" "^4.21.3" + "lru-cache" "^5.1.1" "semver" "^6.3.0" "@babel/helper-create-class-features-plugin@^7.12.1", "@babel/helper-create-class-features-plugin@^7.14.5", "@babel/helper-create-class-features-plugin@^7.15.4": @@ -195,6 +225,11 @@ "resolve" "^1.14.2" "semver" "^6.1.2" +"@babel/helper-environment-visitor@^7.18.9": + "integrity" "sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==" + "resolved" "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz" + "version" "7.18.9" + "@babel/helper-explode-assignable-expression@^7.15.4": "integrity" "sha512-J14f/vq8+hdC2KoWLIQSsGrC9EFBKE4NFts8pfMpymfApds+fPqR30AOUWc4tyr56h9l/GA1Sxv2q3dLZWbQ/g==" "resolved" "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.15.4.tgz" @@ -202,28 +237,20 @@ dependencies: "@babel/types" "^7.15.4" -"@babel/helper-function-name@^7.14.5", "@babel/helper-function-name@^7.15.4": - "integrity" "sha512-Z91cOMM4DseLIGOnog+Z8OI6YseR9bua+HpvLAQ2XayUGU+neTtX+97caALaLdyu53I/fjhbeCnWnRH1O3jFOw==" - "resolved" "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.15.4.tgz" - "version" "7.15.4" +"@babel/helper-function-name@^7.14.5", "@babel/helper-function-name@^7.15.4", "@babel/helper-function-name@^7.19.0": + "integrity" "sha512-WAwHBINyrpqywkUH0nTnNgI5ina5TFn85HKS0pbPDfxFfhyR/aNQEn4hGi1P1JyT//I0t4OgXUlofzWILRvS5w==" + "resolved" "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.19.0.tgz" + "version" "7.19.0" dependencies: - "@babel/helper-get-function-arity" "^7.15.4" - "@babel/template" "^7.15.4" - "@babel/types" "^7.15.4" + "@babel/template" "^7.18.10" + "@babel/types" "^7.19.0" -"@babel/helper-get-function-arity@^7.15.4": - "integrity" "sha512-1/AlxSF92CmGZzHnC515hm4SirTxtpDnLEJ0UyEMgTMZN+6bxXKg04dKhiRx5Enel+SUA1G1t5Ed/yQia0efrA==" - "resolved" "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.15.4.tgz" - "version" "7.15.4" +"@babel/helper-hoist-variables@^7.15.4", "@babel/helper-hoist-variables@^7.18.6": + "integrity" "sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==" + "resolved" "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz" + "version" "7.18.6" dependencies: - "@babel/types" "^7.15.4" - -"@babel/helper-hoist-variables@^7.15.4": - "integrity" "sha512-VTy085egb3jUGVK9ycIxQiPbquesq0HUQ+tPO0uv5mPEBZipk+5FkRKiWq5apuyTE9FUrjENB0rCf8y+n+UuhA==" - "resolved" "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.15.4.tgz" - "version" "7.15.4" - dependencies: - "@babel/types" "^7.15.4" + "@babel/types" "^7.18.6" "@babel/helper-member-expression-to-functions@^7.15.4": "integrity" "sha512-cokOMkxC/BTyNP1AlY25HuBWM32iCEsLPI4BHDpJCHHm1FU2E7dKWWIXJgQgSFiu4lp8q3bL1BIKwqkSUviqtA==" @@ -232,26 +259,26 @@ dependencies: "@babel/types" "^7.15.4" -"@babel/helper-module-imports@^7.0.0", "@babel/helper-module-imports@^7.12.1", "@babel/helper-module-imports@^7.12.13", "@babel/helper-module-imports@^7.14.5", "@babel/helper-module-imports@^7.15.4": - "integrity" "sha512-jeAHZbzUwdW/xHgHQ3QmWR4Jg6j15q4w/gCfwZvtqOxoo5DKtLHk8Bsf4c5RZRC7NmLEs+ohkdq8jFefuvIxAA==" - "resolved" "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.15.4.tgz" - "version" "7.15.4" +"@babel/helper-module-imports@^7.0.0", "@babel/helper-module-imports@^7.12.1", "@babel/helper-module-imports@^7.12.13", "@babel/helper-module-imports@^7.14.5", "@babel/helper-module-imports@^7.18.6": + "integrity" "sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==" + "resolved" "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz" + "version" "7.18.6" dependencies: - "@babel/types" "^7.15.4" + "@babel/types" "^7.18.6" -"@babel/helper-module-transforms@^7.12.1", "@babel/helper-module-transforms@^7.14.5", "@babel/helper-module-transforms@^7.15.4": - "integrity" "sha512-ZNqjjQG/AuFfekFTY+7nY4RgBSklgTu970c7Rj3m/JOhIu5KPBUuTA9AY6zaKcUvk4g6EbDXdBnhi35FAssdSw==" - "resolved" "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.15.7.tgz" - "version" "7.15.7" +"@babel/helper-module-transforms@^7.12.1", "@babel/helper-module-transforms@^7.14.5", "@babel/helper-module-transforms@^7.15.4", "@babel/helper-module-transforms@^7.20.11": + "integrity" "sha512-uRy78kN4psmji1s2QtbtcCSaj/LILFDp0f/ymhpQH5QY3nljUZCaNWz9X1dEj/8MBdBEFECs7yRhKn8i7NjZgg==" + "resolved" "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.20.11.tgz" + "version" "7.20.11" dependencies: - "@babel/helper-module-imports" "^7.15.4" - "@babel/helper-replace-supers" "^7.15.4" - "@babel/helper-simple-access" "^7.15.4" - "@babel/helper-split-export-declaration" "^7.15.4" - "@babel/helper-validator-identifier" "^7.15.7" - "@babel/template" "^7.15.4" - "@babel/traverse" "^7.15.4" - "@babel/types" "^7.15.6" + "@babel/helper-environment-visitor" "^7.18.9" + "@babel/helper-module-imports" "^7.18.6" + "@babel/helper-simple-access" "^7.20.2" + "@babel/helper-split-export-declaration" "^7.18.6" + "@babel/helper-validator-identifier" "^7.19.1" + "@babel/template" "^7.20.7" + "@babel/traverse" "^7.20.10" + "@babel/types" "^7.20.7" "@babel/helper-optimise-call-expression@^7.15.4": "integrity" "sha512-E/z9rfbAOt1vDW1DR7k4SzhzotVV5+qMciWV6LaG1g4jeFrkDlJedjtV4h0i4Q/ITnUu+Pk08M7fczsB9GXBDw==" @@ -284,12 +311,12 @@ "@babel/traverse" "^7.15.4" "@babel/types" "^7.15.4" -"@babel/helper-simple-access@^7.15.4": - "integrity" "sha512-UzazrDoIVOZZcTeHHEPYrr1MvTR/K+wgLg6MY6e1CJyaRhbibftF6fR2KU2sFRtI/nERUZR9fBd6aKgBlIBaPg==" - "resolved" "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.15.4.tgz" - "version" "7.15.4" +"@babel/helper-simple-access@^7.15.4", "@babel/helper-simple-access@^7.20.2": + "integrity" "sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA==" + "resolved" "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.20.2.tgz" + "version" "7.20.2" dependencies: - "@babel/types" "^7.15.4" + "@babel/types" "^7.20.2" "@babel/helper-skip-transparent-expression-wrappers@^7.12.1", "@babel/helper-skip-transparent-expression-wrappers@^7.14.5", "@babel/helper-skip-transparent-expression-wrappers@^7.15.4": "integrity" "sha512-BMRLsdh+D1/aap19TycS4eD1qELGrCBJwzaY9IE8LrpJtJb+H7rQkPIdsfgnMtLBA6DJls7X9z93Z4U8h7xw0A==" @@ -298,22 +325,27 @@ dependencies: "@babel/types" "^7.15.4" -"@babel/helper-split-export-declaration@^7.15.4": - "integrity" "sha512-HsFqhLDZ08DxCpBdEVtKmywj6PQbwnF6HHybur0MAnkAKnlS6uHkwnmRIkElB2Owpfb4xL4NwDmDLFubueDXsw==" - "resolved" "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.15.4.tgz" - "version" "7.15.4" +"@babel/helper-split-export-declaration@^7.15.4", "@babel/helper-split-export-declaration@^7.18.6": + "integrity" "sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==" + "resolved" "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz" + "version" "7.18.6" dependencies: - "@babel/types" "^7.15.4" + "@babel/types" "^7.18.6" -"@babel/helper-validator-identifier@^7.14.5", "@babel/helper-validator-identifier@^7.14.9", "@babel/helper-validator-identifier@^7.15.7": - "integrity" "sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w==" - "resolved" "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz" - "version" "7.15.7" +"@babel/helper-string-parser@^7.19.4": + "integrity" "sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==" + "resolved" "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz" + "version" "7.19.4" -"@babel/helper-validator-option@^7.12.1", "@babel/helper-validator-option@^7.14.5": - "integrity" "sha512-OX8D5eeX4XwcroVW45NMvoYaIuFI+GQpA2a8Gi+X/U/cDUIRsV37qQfF905F0htTRCREQIB4KqPeaveRJUl3Ow==" - "resolved" "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.14.5.tgz" - "version" "7.14.5" +"@babel/helper-validator-identifier@^7.14.9", "@babel/helper-validator-identifier@^7.18.6", "@babel/helper-validator-identifier@^7.19.1": + "integrity" "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==" + "resolved" "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz" + "version" "7.19.1" + +"@babel/helper-validator-option@^7.12.1", "@babel/helper-validator-option@^7.14.5", "@babel/helper-validator-option@^7.18.6": + "integrity" "sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw==" + "resolved" "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz" + "version" "7.18.6" "@babel/helper-wrap-function@^7.15.4": "integrity" "sha512-Y2o+H/hRV5W8QhIfTpRIBwl57y8PrZt6JM3V8FOo5qarjshHItyH5lXlpMfBfmBefOqSCpKZs/6Dxqp0E/U+uw==" @@ -325,28 +357,28 @@ "@babel/traverse" "^7.15.4" "@babel/types" "^7.15.4" -"@babel/helpers@^7.12.1": - "integrity" "sha512-V45u6dqEJ3w2rlryYYXf6i9rQ5YMNu4FLS6ngs8ikblhu2VdR1AqAd6aJjBzmf2Qzh6KOLqKHxEN9+TFbAkAVQ==" - "resolved" "https://registry.npmjs.org/@babel/helpers/-/helpers-7.15.4.tgz" - "version" "7.15.4" +"@babel/helpers@^7.12.1", "@babel/helpers@^7.20.7": + "integrity" "sha512-PBPjs5BppzsGaxHQCDKnZ6Gd9s6xl8bBCluz3vEInLGRJmnZan4F6BYCeqtyXqkk4W5IlPmjK4JlOuZkpJ3xZA==" + "resolved" "https://registry.npmjs.org/@babel/helpers/-/helpers-7.20.7.tgz" + "version" "7.20.7" dependencies: - "@babel/template" "^7.15.4" - "@babel/traverse" "^7.15.4" - "@babel/types" "^7.15.4" + "@babel/template" "^7.20.7" + "@babel/traverse" "^7.20.7" + "@babel/types" "^7.20.7" -"@babel/highlight@^7.10.4", "@babel/highlight@^7.14.5": - "integrity" "sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg==" - "resolved" "https://registry.npmjs.org/@babel/highlight/-/highlight-7.14.5.tgz" - "version" "7.14.5" +"@babel/highlight@^7.10.4", "@babel/highlight@^7.18.6": + "integrity" "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==" + "resolved" "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz" + "version" "7.18.6" dependencies: - "@babel/helper-validator-identifier" "^7.14.5" + "@babel/helper-validator-identifier" "^7.18.6" "chalk" "^2.0.0" "js-tokens" "^4.0.0" -"@babel/parser@^7.1.0", "@babel/parser@^7.12.3", "@babel/parser@^7.15.4", "@babel/parser@^7.7.0": - "integrity" "sha512-rycZXvQ+xS9QyIcJ9HXeDWf1uxqlbVFAUq0Rq0dbc50Zb/+wUe/ehyfzGfm9KZZF0kBejYgxltBXocP+gKdL2g==" - "resolved" "https://registry.npmjs.org/@babel/parser/-/parser-7.15.7.tgz" - "version" "7.15.7" +"@babel/parser@^7.1.0", "@babel/parser@^7.12.3", "@babel/parser@^7.20.7", "@babel/parser@^7.7.0": + "integrity" "sha512-T3Z9oHybU+0vZlY9CiDSJQTD5ZapcW18ZctFMi0MOAl/4BjFF4ul7NVSARLdbGO5vDqy9eQiGTV0LtKfvCYvcg==" + "resolved" "https://registry.npmjs.org/@babel/parser/-/parser-7.20.7.tgz" + "version" "7.20.7" "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.15.4": "integrity" "sha512-eBnpsl9tlhPhpI10kU06JHnrYXwg3+V6CaP2idsCXNef0aeslpqyITXQ74Vfk5uHgY7IG7XP0yIH8b42KSzHog==" @@ -1220,36 +1252,38 @@ dependencies: "regenerator-runtime" "^0.13.4" -"@babel/template@^7.10.4", "@babel/template@^7.15.4", "@babel/template@^7.3.3": - "integrity" "sha512-UgBAfEa1oGuYgDIPM2G+aHa4Nlo9Lh6mGD2bDBGMTbYnc38vulXPuC1MGjYILIEmlwl6Rd+BPR9ee3gm20CBtg==" - "resolved" "https://registry.npmjs.org/@babel/template/-/template-7.15.4.tgz" - "version" "7.15.4" - dependencies: - "@babel/code-frame" "^7.14.5" - "@babel/parser" "^7.15.4" - "@babel/types" "^7.15.4" - -"@babel/traverse@^7.1.0", "@babel/traverse@^7.12.1", "@babel/traverse@^7.13.0", "@babel/traverse@^7.15.4", "@babel/traverse@^7.7.0": - "integrity" "sha512-W6lQD8l4rUbQR/vYgSuCAE75ADyyQvOpFVsvPPdkhf6lATXAsQIG9YdtOcu8BB1dZ0LKu+Zo3c1wEcbKeuhdlA==" - "resolved" "https://registry.npmjs.org/@babel/traverse/-/traverse-7.15.4.tgz" - "version" "7.15.4" - dependencies: - "@babel/code-frame" "^7.14.5" - "@babel/generator" "^7.15.4" - "@babel/helper-function-name" "^7.15.4" - "@babel/helper-hoist-variables" "^7.15.4" - "@babel/helper-split-export-declaration" "^7.15.4" - "@babel/parser" "^7.15.4" - "@babel/types" "^7.15.4" +"@babel/template@^7.10.4", "@babel/template@^7.15.4", "@babel/template@^7.18.10", "@babel/template@^7.20.7", "@babel/template@^7.3.3": + "integrity" "sha512-8SegXApWe6VoNw0r9JHpSteLKTpTiLZ4rMlGIm9JQ18KiCtyQiAMEazujAHrUS5flrcqYZa75ukev3P6QmUwUw==" + "resolved" "https://registry.npmjs.org/@babel/template/-/template-7.20.7.tgz" + "version" "7.20.7" + dependencies: + "@babel/code-frame" "^7.18.6" + "@babel/parser" "^7.20.7" + "@babel/types" "^7.20.7" + +"@babel/traverse@^7.1.0", "@babel/traverse@^7.12.1", "@babel/traverse@^7.13.0", "@babel/traverse@^7.15.4", "@babel/traverse@^7.20.10", "@babel/traverse@^7.20.12", "@babel/traverse@^7.20.7", "@babel/traverse@^7.7.0": + "integrity" "sha512-MsIbFN0u+raeja38qboyF8TIT7K0BFzz/Yd/77ta4MsUsmP2RAnidIlwq7d5HFQrH/OZJecGV6B71C4zAgpoSQ==" + "resolved" "https://registry.npmjs.org/@babel/traverse/-/traverse-7.20.12.tgz" + "version" "7.20.12" + dependencies: + "@babel/code-frame" "^7.18.6" + "@babel/generator" "^7.20.7" + "@babel/helper-environment-visitor" "^7.18.9" + "@babel/helper-function-name" "^7.19.0" + "@babel/helper-hoist-variables" "^7.18.6" + "@babel/helper-split-export-declaration" "^7.18.6" + "@babel/parser" "^7.20.7" + "@babel/types" "^7.20.7" "debug" "^4.1.0" "globals" "^11.1.0" -"@babel/types@^7.0.0", "@babel/types@^7.12.1", "@babel/types@^7.12.6", "@babel/types@^7.14.9", "@babel/types@^7.15.4", "@babel/types@^7.15.6", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4", "@babel/types@^7.7.0": - "integrity" "sha512-BPU+7QhqNjmWyDO0/vitH/CuhpV8ZmK1wpKva8nuyNF5MJfuRNWMc+hc14+u9xT93kvykMdncrJT19h74uB1Ig==" - "resolved" "https://registry.npmjs.org/@babel/types/-/types-7.15.6.tgz" - "version" "7.15.6" +"@babel/types@^7.0.0", "@babel/types@^7.12.1", "@babel/types@^7.12.6", "@babel/types@^7.14.9", "@babel/types@^7.15.4", "@babel/types@^7.15.6", "@babel/types@^7.18.6", "@babel/types@^7.19.0", "@babel/types@^7.20.2", "@babel/types@^7.20.7", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4", "@babel/types@^7.7.0": + "integrity" "sha512-69OnhBxSSgK0OzTJai4kyPDiKTIe3j+ctaHdIGVbRahTLAT7L3R9oeXHC2aVSuGYt3cVnoAMDmOCgJ2yaiLMvg==" + "resolved" "https://registry.npmjs.org/@babel/types/-/types-7.20.7.tgz" + "version" "7.20.7" dependencies: - "@babel/helper-validator-identifier" "^7.14.9" + "@babel/helper-string-parser" "^7.19.4" + "@babel/helper-validator-identifier" "^7.19.1" "to-fast-properties" "^2.0.0" "@bcoe/v8-coverage@^0.2.3": @@ -1655,7 +1689,15 @@ "@types/yargs" "^15.0.0" "chalk" "^4.0.0" -"@jridgewell/gen-mapping@^0.3.0": +"@jridgewell/gen-mapping@^0.1.0": + "integrity" "sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==" + "resolved" "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz" + "version" "0.1.1" + dependencies: + "@jridgewell/set-array" "^1.0.0" + "@jridgewell/sourcemap-codec" "^1.4.10" + +"@jridgewell/gen-mapping@^0.3.0", "@jridgewell/gen-mapping@^0.3.2": "integrity" "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==" "resolved" "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz" "version" "0.3.2" @@ -1669,7 +1711,7 @@ "resolved" "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz" "version" "3.1.0" -"@jridgewell/set-array@^1.0.1": +"@jridgewell/set-array@^1.0.0", "@jridgewell/set-array@^1.0.1": "integrity" "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==" "resolved" "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz" "version" "1.1.2" @@ -3590,16 +3632,15 @@ dependencies: "pako" "~1.0.5" -"browserslist@^4", "browserslist@^4.0.0", "browserslist@^4.12.0", "browserslist@^4.16.6", "browserslist@^4.17.3", "browserslist@^4.6.2", "browserslist@^4.6.4": - "integrity" "sha512-59IqHJV5VGdcJZ+GZ2hU5n4Kv3YiASzW6Xk5g9tf5a/MAzGeFwgGWU39fVzNIOVcgB3+Gp+kiQu0HEfTVU/3VQ==" - "resolved" "https://registry.npmjs.org/browserslist/-/browserslist-4.17.3.tgz" - "version" "4.17.3" +"browserslist@^4", "browserslist@^4.0.0", "browserslist@^4.12.0", "browserslist@^4.17.3", "browserslist@^4.21.3", "browserslist@^4.6.2", "browserslist@^4.6.4", "browserslist@>= 4.21.0": + "integrity" "sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw==" + "resolved" "https://registry.npmjs.org/browserslist/-/browserslist-4.21.4.tgz" + "version" "4.21.4" dependencies: - "caniuse-lite" "^1.0.30001264" - "electron-to-chromium" "^1.3.857" - "escalade" "^3.1.1" - "node-releases" "^1.1.77" - "picocolors" "^0.2.1" + "caniuse-lite" "^1.0.30001400" + "electron-to-chromium" "^1.4.251" + "node-releases" "^2.0.6" + "update-browserslist-db" "^1.0.9" "browserslist@4.14.2": "integrity" "sha512-HI4lPveGKUR0x2StIz+2FXfDk9SfVMrxn6PLh1JeGUwcuoDkdKZebWiyLRJ68iIPDpMI4JLVDf7S7XzslgWOhw==" @@ -3895,10 +3936,10 @@ "lodash.memoize" "^4.1.2" "lodash.uniq" "^4.5.0" -"caniuse-lite@^1.0.0", "caniuse-lite@^1.0.30000981", "caniuse-lite@^1.0.30001109", "caniuse-lite@^1.0.30001125", "caniuse-lite@^1.0.30001264": - "integrity" "sha512-YzBnspggWV5hep1m9Z6sZVLOt7vrju8xWooFAgN6BA5qvy98qPAPb7vNUzypFaoh2pb3vlfzbDO8tB57UPGbtw==" - "resolved" "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001265.tgz" - "version" "1.0.30001265" +"caniuse-lite@^1.0.0", "caniuse-lite@^1.0.30000981", "caniuse-lite@^1.0.30001109", "caniuse-lite@^1.0.30001125", "caniuse-lite@^1.0.30001400": + "integrity" "sha512-fEoga4PrImGcwUUGEol/PoFCSBnSkA9drgdkxXkJLsUBOnJ8rs3zDv6ApqYXGQFOyMPsjh79naWhF4DAxbF8rw==" + "resolved" "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001446.tgz" + "version" "1.0.30001446" "capture-exit@^2.0.0": "integrity" "sha512-PiT/hQmTonHhl/HFGN+Lx3JJUznrVYJ3+AQsnthneZbvW7x+f08Tk7yLJTLEOUvBTbduLeeBkxEaYXUOUrRq6g==" @@ -5468,10 +5509,10 @@ "lazy-val" "^1.0.5" "mime" "^2.5.2" -"electron-to-chromium@^1.3.564", "electron-to-chromium@^1.3.857": - "integrity" "sha512-gWwGZ+Wv4Mou2SJRH6JQzhTPjL5f95SX7n6VkLTQ/Q/INsZLZNQ1vH2GlZjozKyvT0kkFuCmWTwIoCj+/hUDPw==" - "resolved" "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.860.tgz" - "version" "1.3.860" +"electron-to-chromium@^1.3.564", "electron-to-chromium@^1.4.251": + "integrity" "sha512-M8WEXFuKXMYMVr45fo8mq0wUrrJHheiKZf6BArTKk9ZBYCKJEOU5H8cdWgDT+qCVZf7Na4lVUaZsA+h6uA9+PA==" + "resolved" "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.284.tgz" + "version" "1.4.284" "electron@^15.5.7": "integrity" "sha512-n4mVlxoMc4eYx07wWFWGficL+iOMz5xZEf5dBtE/wwLm0fQpYVyW4AlknMFG9F8Css0MM0JSwNMOyRg5e1vDtg==" @@ -6627,7 +6668,7 @@ dependencies: "globule" "^1.0.0" -"gensync@^1.0.0-beta.1": +"gensync@^1.0.0-beta.1", "gensync@^1.0.0-beta.2": "integrity" "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==" "resolved" "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz" "version" "1.0.0-beta.2" @@ -8550,12 +8591,10 @@ dependencies: "minimist" "^1.2.0" -"json5@^2.1.2", "json5@^2.2.0": - "integrity" "sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==" - "resolved" "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz" - "version" "2.2.0" - dependencies: - "minimist" "^1.2.5" +"json5@^2.1.2", "json5@^2.2.0", "json5@^2.2.2": + "integrity" "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==" + "resolved" "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz" + "version" "2.2.3" "jsonfile@^4.0.0": "integrity" "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=" @@ -9494,11 +9533,16 @@ "uuid" "^8.3.0" "which" "^2.0.2" -"node-releases@^1.1.61", "node-releases@^1.1.77": +"node-releases@^1.1.61": "integrity" "sha512-rB1DUFUNAN4Gn9keO2K1efO35IDK7yKHCdCaIMvFO7yUYmmZYeDjnGKle26G4rwj+LKRQpjyUUvMkPglwGCYNQ==" "resolved" "https://registry.npmjs.org/node-releases/-/node-releases-1.1.77.tgz" "version" "1.1.77" +"node-releases@^2.0.6": + "integrity" "sha512-dFSmB8fFHEH/s81Xi+Y/15DQY6VHW81nXRj86EMSL3lmuTmK1e+aT4wrFCkTbm+gSwkw4KpX+rT/pMM2c1mF+A==" + "resolved" "https://registry.npmjs.org/node-releases/-/node-releases-2.0.8.tgz" + "version" "2.0.8" + "node-sass@^4.0.0 || ^5.0.0 || ^6.0.0", "node-sass@6.0.0": "integrity" "sha512-GDzDmNgWNc9GNzTcSLTi6DU6mzSPupVJoStIi7cF3GjwSE9q1cVakbvAAVSt59vzUjV9JJoSZFKoo9krbjKd2g==" "resolved" "https://registry.npmjs.org/node-sass/-/node-sass-6.0.0.tgz" @@ -10117,6 +10161,11 @@ "resolved" "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz" "version" "0.2.1" +"picocolors@^1.0.0": + "integrity" "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" + "resolved" "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz" + "version" "1.0.0" + "picomatch@^2.0.4", "picomatch@^2.2.1", "picomatch@^2.2.2", "picomatch@^2.2.3": "integrity" "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==" "resolved" "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz" @@ -12916,7 +12965,7 @@ "amdefine" ">=0.0.4" "source-map@^0.5.0": - "integrity" "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" + "integrity" "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==" "resolved" "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz" "version" "0.5.7" @@ -13826,7 +13875,12 @@ "resolved" "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz" "version" "4.0.8" -"type-fest@^0.13.1", "type-fest@^0.20.2": +"type-fest@^0.13.1": + "integrity" "sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg==" + "resolved" "https://registry.npmjs.org/type-fest/-/type-fest-0.13.1.tgz" + "version" "0.13.1" + +"type-fest@^0.20.2": "integrity" "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==" "resolved" "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz" "version" "0.20.2" @@ -14010,6 +14064,14 @@ "resolved" "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz" "version" "1.2.0" +"update-browserslist-db@^1.0.9": + "integrity" "sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==" + "resolved" "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz" + "version" "1.0.10" + dependencies: + "escalade" "^3.1.1" + "picocolors" "^1.0.0" + "update-notifier@^5.1.0": "integrity" "sha512-ItnICHbeMh9GqUy31hFPrD1kcuZ3rpxDZbf4KUDavXwS0bW5m7SLbDQpGX3UYr072cbrF5hFUs3r5tUsPwjfHw==" "resolved" "https://registry.npmjs.org/update-notifier/-/update-notifier-5.1.0.tgz"