diff --git a/Front/src/index.html b/Front/src/index.html
deleted file mode 100644
index 0029d71..0000000
--- a/Front/src/index.html
+++ /dev/null
@@ -1,152 +0,0 @@
-
-
-
-
-
-
-
-
-
- Rest CLient
-
-
-
-
-
-
-
-
-
- # |
- First name |
- Last name |
-
-
-
-
-
-
-
-
-
-
-
-
-
- # |
- First name |
- Last name |
-
-
-
-
-
-
-
-
-
-
-
-
-
- # |
- First name |
- Last name |
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/Front/src/script.js b/Front/src/script.js
deleted file mode 100644
index 036f53a..0000000
--- a/Front/src/script.js
+++ /dev/null
@@ -1,51 +0,0 @@
-let calculateButton = document.getElementById("calculate");
-let numberOneInput = document.getElementById("first");
-let numberTwoInput = document.getElementById("second");
-let resultInput = document.getElementById("res");
-let typeInput = document.getElementById("type");
-
-buttonPlus.onclick = function(event) {
- event.preventDefault();
- let num_1 = numberOneInput.value;
- let num_2 = numberTwoInput.value;
- let type = typeInput.value;
- fetch(`http://localhost:8080/sum?first=${num_1}&second=${num_2}&type=${type}`)
- .then(response => response.text())
- .then(res => {
- resultInput.value = res;
- });
-}
-buttonMinus.onclick = function(event) {
- event.preventDefault();
- let num_1 = numberOneInput.value;
- let num_2 = numberTwoInput.value;
- let type = typeInput.value;
- fetch(`http://localhost:8080/minus?first=${num_1}&second=${num_2}&type=${type}`)
- .then(response => response.text())
- .then(res => {
- resultInput.value = res;
- });
-}
-buttonMulti.onclick = function(event) {
- event.preventDefault();
- let num_1 = numberOneInput.value;
- let num_2 = numberTwoInput.value;
- let type = typeInput.value;
- fetch(`http://localhost:8080/multi?first=${num_1}&second=${num_2}&type=${type}`)
- .then(response => response.text())
- .then(res => {
- resultInput.value = res;
- });
-}
-buttonDiv.onclick = function(event) {
- event.preventDefault();
- let num_1 = numberOneInput.value;
- let num_2 = numberTwoInput.value;
- let type = typeInput.value;
- fetch(`http://localhost:8080/div?first=${num_1}&second=${num_2}&type=${type}`)
- .then(response => response.text())
- .then(res =>
- {
- resultInput.value = res;
- });
-}
\ No newline at end of file
diff --git a/build.gradle b/build.gradle
index 0f8a949..a30d46c 100644
--- a/build.gradle
+++ b/build.gradle
@@ -17,7 +17,7 @@ jar {
}
dependencies {
- implementation(project(':Front'))
+ implementation(project(':front'))
implementation 'org.springframework.boot:spring-boot-starter-web'
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
implementation 'com.h2database:h2:2.1.210'
diff --git a/Front/.gitignore b/front/.gitignore
similarity index 100%
rename from Front/.gitignore
rename to front/.gitignore
diff --git a/Front/build.gradle b/front/build.gradle
similarity index 100%
rename from Front/build.gradle
rename to front/build.gradle
diff --git a/Front/package-lock.json b/front/package-lock.json
similarity index 56%
rename from Front/package-lock.json
rename to front/package-lock.json
index 3c15ed7..16a4390 100644
--- a/Front/package-lock.json
+++ b/front/package-lock.json
@@ -1,14 +1,14 @@
{
- "name": "int-prog",
+ "name": "front",
"version": "1.0.0",
- "lockfileVersion": 2,
+ "lockfileVersion": 3,
"requires": true,
"packages": {
"": {
- "name": "int-prog",
+ "name": "front",
"version": "1.0.0",
"dependencies": {
- "bootstrap": "5.2.1"
+ "bootstrap": "5.2.3"
},
"devDependencies": {
"parcel": "2.8.3",
@@ -1499,9 +1499,9 @@
"dev": true
},
"node_modules/bootstrap": {
- "version": "5.2.1",
- "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-5.2.1.tgz",
- "integrity": "sha512-UQi3v2NpVPEi1n35dmRRzBJFlgvWHYwyem6yHhuT6afYF+sziEt46McRbT//kVXZ7b1YUYEVGdXEH74Nx3xzGA==",
+ "version": "5.2.3",
+ "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-5.2.3.tgz",
+ "integrity": "sha512-cEKPM+fwb3cT8NzQZYEu4HilJ3anCrWqh3CHAok1p9jXqMPsPTBhU25fBckEJHJ/p+tTxTFTsFQGM+gaHpi3QQ==",
"funding": [
{
"type": "github",
@@ -1581,9 +1581,9 @@
}
},
"node_modules/caniuse-lite": {
- "version": "1.0.30001469",
- "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001469.tgz",
- "integrity": "sha512-Rcp7221ScNqQPP3W+lVOYDyjdR6dC+neEQCttoNr5bAyz54AboB4iwpnWgyi8P4YUsPybVzT4LgWiBbI3drL4g==",
+ "version": "1.0.30001466",
+ "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001466.tgz",
+ "integrity": "sha512-ewtFBSfWjEmxUgNBSZItFSmVtvk9zkwkl1OfRZlKA8slltRN+/C/tuGVrF9styXkN36Yu3+SeJ1qkXxDEyNZ5w==",
"dev": true,
"funding": [
{
@@ -1818,9 +1818,9 @@
"dev": true
},
"node_modules/electron-to-chromium": {
- "version": "1.4.340",
- "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.340.tgz",
- "integrity": "sha512-zx8hqumOqltKsv/MF50yvdAlPF9S/4PXbyfzJS6ZGhbddGkRegdwImmfSVqCkEziYzrIGZ/TlrzBND4FysfkDg==",
+ "version": "1.4.332",
+ "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.332.tgz",
+ "integrity": "sha512-c1Vbv5tuUlBFp0mb3mCIjw+REEsgthRgNE8BlbEDKmvzb8rxjcVki6OkQP83vLN34s0XCxpSkq7AZNep1a6xhw==",
"dev": true
},
"node_modules/entities": {
@@ -1890,9 +1890,9 @@
}
},
"node_modules/glob": {
- "version": "9.3.2",
- "resolved": "https://registry.npmjs.org/glob/-/glob-9.3.2.tgz",
- "integrity": "sha512-BTv/JhKXFEHsErMte/AnfiSv8yYOLLiyH2lTg8vn02O21zWFgHPTfxtgn1QRe7NRgggUhC8hacR2Re94svHqeA==",
+ "version": "9.3.0",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-9.3.0.tgz",
+ "integrity": "sha512-EAZejC7JvnQINayvB/7BJbpZpNOJ8Lrw2OZNEvQxe0vaLn1SuwMcfV7/MNaX8L/T0wmptBFI4YMtDvSBxYDc7w==",
"dev": true,
"dependencies": {
"fs.realpath": "^1.0.0",
@@ -2328,9 +2328,9 @@
}
},
"node_modules/minimatch": {
- "version": "7.4.3",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-7.4.3.tgz",
- "integrity": "sha512-5UB4yYusDtkRPbRiy1cqZ1IpGNcJCGlEMG17RKzPddpyiPKoCdwohbED8g4QXT0ewCt8LTkQXuljsUfQ3FKM4A==",
+ "version": "7.4.2",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-7.4.2.tgz",
+ "integrity": "sha512-xy4q7wou3vUoC9k1xGTXc+awNdGaGVHtFUaey8tiX4H1QRc04DZ/rmDFwNm2EBsuYEhAZ6SgMmYf3InGY6OauA==",
"dev": true,
"dependencies": {
"brace-expansion": "^2.0.1"
@@ -2515,16 +2515,16 @@
}
},
"node_modules/path-scurry": {
- "version": "1.6.3",
- "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.6.3.tgz",
- "integrity": "sha512-RAmB+n30SlN+HnNx6EbcpoDy9nwdpcGPnEKrJnu6GZoDWBdIjo1UQMVtW2ybtC7LC2oKLcMq8y5g8WnKLiod9g==",
+ "version": "1.6.1",
+ "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.6.1.tgz",
+ "integrity": "sha512-OW+5s+7cw6253Q4E+8qQ/u1fVvcJQCJo/VFD8pje+dbJCF1n5ZRMV2AEHbGp+5Q7jxQIYJxkHopnj6nzdGeZLA==",
"dev": true,
"dependencies": {
"lru-cache": "^7.14.1",
"minipass": "^4.0.2"
},
"engines": {
- "node": ">=16 || 14 >=14.17"
+ "node": ">=14"
},
"funding": {
"url": "https://github.com/sponsors/isaacs"
@@ -2759,9 +2759,9 @@
}
},
"node_modules/terser": {
- "version": "5.16.8",
- "resolved": "https://registry.npmjs.org/terser/-/terser-5.16.8.tgz",
- "integrity": "sha512-QI5g1E/ef7d+PsDifb+a6nnVgC4F22Bg6T0xrBrz6iloVB4PUkkunp6V8nzoOOZJIzjWVdAGqCdlKlhLq/TbIA==",
+ "version": "5.16.6",
+ "resolved": "https://registry.npmjs.org/terser/-/terser-5.16.6.tgz",
+ "integrity": "sha512-IBZ+ZQIA9sMaXmRZCUMDjNH0D5AQQfdn4WUjHL0+1lF4TP1IHRJbrhb6fNaXWikrYQTSkb7SLxkeXAiy1p7mbg==",
"dev": true,
"dependencies": {
"@jridgewell/source-map": "^0.3.2",
@@ -2880,1880 +2880,5 @@
"node": ">= 6"
}
}
- },
- "dependencies": {
- "@babel/code-frame": {
- "version": "7.18.6",
- "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz",
- "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==",
- "dev": true,
- "requires": {
- "@babel/highlight": "^7.18.6"
- }
- },
- "@babel/helper-validator-identifier": {
- "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==",
- "dev": true
- },
- "@babel/highlight": {
- "version": "7.18.6",
- "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz",
- "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==",
- "dev": true,
- "requires": {
- "@babel/helper-validator-identifier": "^7.18.6",
- "chalk": "^2.0.0",
- "js-tokens": "^4.0.0"
- },
- "dependencies": {
- "ansi-styles": {
- "version": "3.2.1",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
- "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
- "dev": true,
- "requires": {
- "color-convert": "^1.9.0"
- }
- },
- "chalk": {
- "version": "2.4.2",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
- "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
- "dev": true,
- "requires": {
- "ansi-styles": "^3.2.1",
- "escape-string-regexp": "^1.0.5",
- "supports-color": "^5.3.0"
- }
- },
- "color-convert": {
- "version": "1.9.3",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
- "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
- "dev": true,
- "requires": {
- "color-name": "1.1.3"
- }
- },
- "color-name": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
- "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==",
- "dev": true
- },
- "has-flag": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
- "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==",
- "dev": true
- },
- "supports-color": {
- "version": "5.5.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
- "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
- "dev": true,
- "requires": {
- "has-flag": "^3.0.0"
- }
- }
- }
- },
- "@jridgewell/gen-mapping": {
- "version": "0.3.2",
- "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz",
- "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==",
- "dev": true,
- "requires": {
- "@jridgewell/set-array": "^1.0.1",
- "@jridgewell/sourcemap-codec": "^1.4.10",
- "@jridgewell/trace-mapping": "^0.3.9"
- }
- },
- "@jridgewell/resolve-uri": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz",
- "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==",
- "dev": true
- },
- "@jridgewell/set-array": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz",
- "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==",
- "dev": true
- },
- "@jridgewell/source-map": {
- "version": "0.3.2",
- "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.2.tgz",
- "integrity": "sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw==",
- "dev": true,
- "requires": {
- "@jridgewell/gen-mapping": "^0.3.0",
- "@jridgewell/trace-mapping": "^0.3.9"
- }
- },
- "@jridgewell/sourcemap-codec": {
- "version": "1.4.14",
- "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz",
- "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==",
- "dev": true
- },
- "@jridgewell/trace-mapping": {
- "version": "0.3.17",
- "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz",
- "integrity": "sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==",
- "dev": true,
- "requires": {
- "@jridgewell/resolve-uri": "3.1.0",
- "@jridgewell/sourcemap-codec": "1.4.14"
- }
- },
- "@lezer/common": {
- "version": "0.15.12",
- "resolved": "https://registry.npmjs.org/@lezer/common/-/common-0.15.12.tgz",
- "integrity": "sha512-edfwCxNLnzq5pBA/yaIhwJ3U3Kz8VAUOTRg0hhxaizaI1N+qxV7EXDv/kLCkLeq2RzSFvxexlaj5Mzfn2kY0Ig==",
- "dev": true
- },
- "@lezer/lr": {
- "version": "0.15.8",
- "resolved": "https://registry.npmjs.org/@lezer/lr/-/lr-0.15.8.tgz",
- "integrity": "sha512-bM6oE6VQZ6hIFxDNKk8bKPa14hqFrV07J/vHGOeiAbJReIaQXmkVb6xQu4MR+JBTLa5arGRyAAjJe1qaQt3Uvg==",
- "dev": true,
- "requires": {
- "@lezer/common": "^0.15.0"
- }
- },
- "@lmdb/lmdb-darwin-arm64": {
- "version": "2.5.2",
- "resolved": "https://registry.npmjs.org/@lmdb/lmdb-darwin-arm64/-/lmdb-darwin-arm64-2.5.2.tgz",
- "integrity": "sha512-+F8ioQIUN68B4UFiIBYu0QQvgb9FmlKw2ctQMSBfW2QBrZIxz9vD9jCGqTCPqZBRbPHAS/vG1zSXnKqnS2ch/A==",
- "dev": true,
- "optional": true
- },
- "@lmdb/lmdb-darwin-x64": {
- "version": "2.5.2",
- "resolved": "https://registry.npmjs.org/@lmdb/lmdb-darwin-x64/-/lmdb-darwin-x64-2.5.2.tgz",
- "integrity": "sha512-KvPH56KRLLx4KSfKBx0m1r7GGGUMXm0jrKmNE7plbHlesZMuPJICtn07HYgQhj1LNsK7Yqwuvnqh1QxhJnF1EA==",
- "dev": true,
- "optional": true
- },
- "@lmdb/lmdb-linux-arm": {
- "version": "2.5.2",
- "resolved": "https://registry.npmjs.org/@lmdb/lmdb-linux-arm/-/lmdb-linux-arm-2.5.2.tgz",
- "integrity": "sha512-5kQAP21hAkfW5Bl+e0P57dV4dGYnkNIpR7f/GAh6QHlgXx+vp/teVj4PGRZaKAvt0GX6++N6hF8NnGElLDuIDw==",
- "dev": true,
- "optional": true
- },
- "@lmdb/lmdb-linux-arm64": {
- "version": "2.5.2",
- "resolved": "https://registry.npmjs.org/@lmdb/lmdb-linux-arm64/-/lmdb-linux-arm64-2.5.2.tgz",
- "integrity": "sha512-aLl89VHL/wjhievEOlPocoefUyWdvzVrcQ/MHQYZm2JfV1jUsrbr/ZfkPPUFvZBf+VSE+Q0clWs9l29PCX1hTQ==",
- "dev": true,
- "optional": true
- },
- "@lmdb/lmdb-linux-x64": {
- "version": "2.5.2",
- "resolved": "https://registry.npmjs.org/@lmdb/lmdb-linux-x64/-/lmdb-linux-x64-2.5.2.tgz",
- "integrity": "sha512-xUdUfwDJLGjOUPH3BuPBt0NlIrR7f/QHKgu3GZIXswMMIihAekj2i97oI0iWG5Bok/b+OBjHPfa8IU9velnP/Q==",
- "dev": true,
- "optional": true
- },
- "@lmdb/lmdb-win32-x64": {
- "version": "2.5.2",
- "resolved": "https://registry.npmjs.org/@lmdb/lmdb-win32-x64/-/lmdb-win32-x64-2.5.2.tgz",
- "integrity": "sha512-zrBczSbXKxEyK2ijtbRdICDygRqWSRPpZMN5dD1T8VMEW5RIhIbwFWw2phDRXuBQdVDpSjalCIUMWMV2h3JaZA==",
- "dev": true,
- "optional": true
- },
- "@mischnic/json-sourcemap": {
- "version": "0.1.0",
- "resolved": "https://registry.npmjs.org/@mischnic/json-sourcemap/-/json-sourcemap-0.1.0.tgz",
- "integrity": "sha512-dQb3QnfNqmQNYA4nFSN/uLaByIic58gOXq4Y4XqLOWmOrw73KmJPt/HLyG0wvn1bnR6mBKs/Uwvkh+Hns1T0XA==",
- "dev": true,
- "requires": {
- "@lezer/common": "^0.15.7",
- "@lezer/lr": "^0.15.4",
- "json5": "^2.2.1"
- }
- },
- "@msgpackr-extract/msgpackr-extract-darwin-arm64": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-darwin-arm64/-/msgpackr-extract-darwin-arm64-3.0.2.tgz",
- "integrity": "sha512-9bfjwDxIDWmmOKusUcqdS4Rw+SETlp9Dy39Xui9BEGEk19dDwH0jhipwFzEff/pFg95NKymc6TOTbRKcWeRqyQ==",
- "dev": true,
- "optional": true
- },
- "@msgpackr-extract/msgpackr-extract-darwin-x64": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-darwin-x64/-/msgpackr-extract-darwin-x64-3.0.2.tgz",
- "integrity": "sha512-lwriRAHm1Yg4iDf23Oxm9n/t5Zpw1lVnxYU3HnJPTi2lJRkKTrps1KVgvL6m7WvmhYVt/FIsssWay+k45QHeuw==",
- "dev": true,
- "optional": true
- },
- "@msgpackr-extract/msgpackr-extract-linux-arm": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-linux-arm/-/msgpackr-extract-linux-arm-3.0.2.tgz",
- "integrity": "sha512-MOI9Dlfrpi2Cuc7i5dXdxPbFIgbDBGgKR5F2yWEa6FVEtSWncfVNKW5AKjImAQ6CZlBK9tympdsZJ2xThBiWWA==",
- "dev": true,
- "optional": true
- },
- "@msgpackr-extract/msgpackr-extract-linux-arm64": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-linux-arm64/-/msgpackr-extract-linux-arm64-3.0.2.tgz",
- "integrity": "sha512-FU20Bo66/f7He9Fp9sP2zaJ1Q8L9uLPZQDub/WlUip78JlPeMbVL8546HbZfcW9LNciEXc8d+tThSJjSC+tmsg==",
- "dev": true,
- "optional": true
- },
- "@msgpackr-extract/msgpackr-extract-linux-x64": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-linux-x64/-/msgpackr-extract-linux-x64-3.0.2.tgz",
- "integrity": "sha512-gsWNDCklNy7Ajk0vBBf9jEx04RUxuDQfBse918Ww+Qb9HCPoGzS+XJTLe96iN3BVK7grnLiYghP/M4L8VsaHeA==",
- "dev": true,
- "optional": true
- },
- "@msgpackr-extract/msgpackr-extract-win32-x64": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-win32-x64/-/msgpackr-extract-win32-x64-3.0.2.tgz",
- "integrity": "sha512-O+6Gs8UeDbyFpbSh2CPEz/UOrrdWPTBYNblZK5CxxLisYt4kGX3Sc+czffFonyjiGSq3jWLwJS/CCJc7tBr4sQ==",
- "dev": true,
- "optional": true
- },
- "@parcel/bundler-default": {
- "version": "2.8.3",
- "resolved": "https://registry.npmjs.org/@parcel/bundler-default/-/bundler-default-2.8.3.tgz",
- "integrity": "sha512-yJvRsNWWu5fVydsWk3O2L4yIy3UZiKWO2cPDukGOIWMgp/Vbpp+2Ct5IygVRtE22bnseW/E/oe0PV3d2IkEJGg==",
- "dev": true,
- "requires": {
- "@parcel/diagnostic": "2.8.3",
- "@parcel/graph": "2.8.3",
- "@parcel/hash": "2.8.3",
- "@parcel/plugin": "2.8.3",
- "@parcel/utils": "2.8.3",
- "nullthrows": "^1.1.1"
- }
- },
- "@parcel/cache": {
- "version": "2.8.3",
- "resolved": "https://registry.npmjs.org/@parcel/cache/-/cache-2.8.3.tgz",
- "integrity": "sha512-k7xv5vSQrJLdXuglo+Hv3yF4BCSs1tQ/8Vbd6CHTkOhf7LcGg6CPtLw053R/KdMpd/4GPn0QrAsOLdATm1ELtQ==",
- "dev": true,
- "requires": {
- "@parcel/fs": "2.8.3",
- "@parcel/logger": "2.8.3",
- "@parcel/utils": "2.8.3",
- "lmdb": "2.5.2"
- }
- },
- "@parcel/codeframe": {
- "version": "2.8.3",
- "resolved": "https://registry.npmjs.org/@parcel/codeframe/-/codeframe-2.8.3.tgz",
- "integrity": "sha512-FE7sY53D6n/+2Pgg6M9iuEC6F5fvmyBkRE4d9VdnOoxhTXtkEqpqYgX7RJ12FAQwNlxKq4suBJQMgQHMF2Kjeg==",
- "dev": true,
- "requires": {
- "chalk": "^4.1.0"
- }
- },
- "@parcel/compressor-raw": {
- "version": "2.8.3",
- "resolved": "https://registry.npmjs.org/@parcel/compressor-raw/-/compressor-raw-2.8.3.tgz",
- "integrity": "sha512-bVDsqleBUxRdKMakWSlWC9ZjOcqDKE60BE+Gh3JSN6WJrycJ02P5wxjTVF4CStNP/G7X17U+nkENxSlMG77ySg==",
- "dev": true,
- "requires": {
- "@parcel/plugin": "2.8.3"
- }
- },
- "@parcel/config-default": {
- "version": "2.8.3",
- "resolved": "https://registry.npmjs.org/@parcel/config-default/-/config-default-2.8.3.tgz",
- "integrity": "sha512-o/A/mbrO6X/BfGS65Sib8d6SSG45NYrNooNBkH/o7zbOBSRQxwyTlysleK1/3Wa35YpvFyLOwgfakqCtbGy4fw==",
- "dev": true,
- "requires": {
- "@parcel/bundler-default": "2.8.3",
- "@parcel/compressor-raw": "2.8.3",
- "@parcel/namer-default": "2.8.3",
- "@parcel/optimizer-css": "2.8.3",
- "@parcel/optimizer-htmlnano": "2.8.3",
- "@parcel/optimizer-image": "2.8.3",
- "@parcel/optimizer-svgo": "2.8.3",
- "@parcel/optimizer-terser": "2.8.3",
- "@parcel/packager-css": "2.8.3",
- "@parcel/packager-html": "2.8.3",
- "@parcel/packager-js": "2.8.3",
- "@parcel/packager-raw": "2.8.3",
- "@parcel/packager-svg": "2.8.3",
- "@parcel/reporter-dev-server": "2.8.3",
- "@parcel/resolver-default": "2.8.3",
- "@parcel/runtime-browser-hmr": "2.8.3",
- "@parcel/runtime-js": "2.8.3",
- "@parcel/runtime-react-refresh": "2.8.3",
- "@parcel/runtime-service-worker": "2.8.3",
- "@parcel/transformer-babel": "2.8.3",
- "@parcel/transformer-css": "2.8.3",
- "@parcel/transformer-html": "2.8.3",
- "@parcel/transformer-image": "2.8.3",
- "@parcel/transformer-js": "2.8.3",
- "@parcel/transformer-json": "2.8.3",
- "@parcel/transformer-postcss": "2.8.3",
- "@parcel/transformer-posthtml": "2.8.3",
- "@parcel/transformer-raw": "2.8.3",
- "@parcel/transformer-react-refresh-wrap": "2.8.3",
- "@parcel/transformer-svg": "2.8.3"
- }
- },
- "@parcel/core": {
- "version": "2.8.3",
- "resolved": "https://registry.npmjs.org/@parcel/core/-/core-2.8.3.tgz",
- "integrity": "sha512-Euf/un4ZAiClnlUXqPB9phQlKbveU+2CotZv7m7i+qkgvFn5nAGnrV4h1OzQU42j9dpgOxWi7AttUDMrvkbhCQ==",
- "dev": true,
- "requires": {
- "@mischnic/json-sourcemap": "^0.1.0",
- "@parcel/cache": "2.8.3",
- "@parcel/diagnostic": "2.8.3",
- "@parcel/events": "2.8.3",
- "@parcel/fs": "2.8.3",
- "@parcel/graph": "2.8.3",
- "@parcel/hash": "2.8.3",
- "@parcel/logger": "2.8.3",
- "@parcel/package-manager": "2.8.3",
- "@parcel/plugin": "2.8.3",
- "@parcel/source-map": "^2.1.1",
- "@parcel/types": "2.8.3",
- "@parcel/utils": "2.8.3",
- "@parcel/workers": "2.8.3",
- "abortcontroller-polyfill": "^1.1.9",
- "base-x": "^3.0.8",
- "browserslist": "^4.6.6",
- "clone": "^2.1.1",
- "dotenv": "^7.0.0",
- "dotenv-expand": "^5.1.0",
- "json5": "^2.2.0",
- "msgpackr": "^1.5.4",
- "nullthrows": "^1.1.1",
- "semver": "^5.7.1"
- }
- },
- "@parcel/diagnostic": {
- "version": "2.8.3",
- "resolved": "https://registry.npmjs.org/@parcel/diagnostic/-/diagnostic-2.8.3.tgz",
- "integrity": "sha512-u7wSzuMhLGWZjVNYJZq/SOViS3uFG0xwIcqXw12w54Uozd6BH8JlhVtVyAsq9kqnn7YFkw6pXHqAo5Tzh4FqsQ==",
- "dev": true,
- "requires": {
- "@mischnic/json-sourcemap": "^0.1.0",
- "nullthrows": "^1.1.1"
- }
- },
- "@parcel/events": {
- "version": "2.8.3",
- "resolved": "https://registry.npmjs.org/@parcel/events/-/events-2.8.3.tgz",
- "integrity": "sha512-hoIS4tAxWp8FJk3628bsgKxEvR7bq2scCVYHSqZ4fTi/s0+VymEATrRCUqf+12e5H47uw1/ZjoqrGtBI02pz4w==",
- "dev": true
- },
- "@parcel/fs": {
- "version": "2.8.3",
- "resolved": "https://registry.npmjs.org/@parcel/fs/-/fs-2.8.3.tgz",
- "integrity": "sha512-y+i+oXbT7lP0e0pJZi/YSm1vg0LDsbycFuHZIL80pNwdEppUAtibfJZCp606B7HOjMAlNZOBo48e3hPG3d8jgQ==",
- "dev": true,
- "requires": {
- "@parcel/fs-search": "2.8.3",
- "@parcel/types": "2.8.3",
- "@parcel/utils": "2.8.3",
- "@parcel/watcher": "^2.0.7",
- "@parcel/workers": "2.8.3"
- }
- },
- "@parcel/fs-search": {
- "version": "2.8.3",
- "resolved": "https://registry.npmjs.org/@parcel/fs-search/-/fs-search-2.8.3.tgz",
- "integrity": "sha512-DJBT2N8knfN7Na6PP2mett3spQLTqxFrvl0gv+TJRp61T8Ljc4VuUTb0hqBj+belaASIp3Q+e8+SgaFQu7wLiQ==",
- "dev": true,
- "requires": {
- "detect-libc": "^1.0.3"
- }
- },
- "@parcel/graph": {
- "version": "2.8.3",
- "resolved": "https://registry.npmjs.org/@parcel/graph/-/graph-2.8.3.tgz",
- "integrity": "sha512-26GL8fYZPdsRhSXCZ0ZWliloK6DHlMJPWh6Z+3VVZ5mnDSbYg/rRKWmrkhnr99ZWmL9rJsv4G74ZwvDEXTMPBg==",
- "dev": true,
- "requires": {
- "nullthrows": "^1.1.1"
- }
- },
- "@parcel/hash": {
- "version": "2.8.3",
- "resolved": "https://registry.npmjs.org/@parcel/hash/-/hash-2.8.3.tgz",
- "integrity": "sha512-FVItqzjWmnyP4ZsVgX+G00+6U2IzOvqDtdwQIWisCcVoXJFCqZJDy6oa2qDDFz96xCCCynjRjPdQx2jYBCpfYw==",
- "dev": true,
- "requires": {
- "detect-libc": "^1.0.3",
- "xxhash-wasm": "^0.4.2"
- }
- },
- "@parcel/logger": {
- "version": "2.8.3",
- "resolved": "https://registry.npmjs.org/@parcel/logger/-/logger-2.8.3.tgz",
- "integrity": "sha512-Kpxd3O/Vs7nYJIzkdmB6Bvp3l/85ydIxaZaPfGSGTYOfaffSOTkhcW9l6WemsxUrlts4za6CaEWcc4DOvaMOPA==",
- "dev": true,
- "requires": {
- "@parcel/diagnostic": "2.8.3",
- "@parcel/events": "2.8.3"
- }
- },
- "@parcel/markdown-ansi": {
- "version": "2.8.3",
- "resolved": "https://registry.npmjs.org/@parcel/markdown-ansi/-/markdown-ansi-2.8.3.tgz",
- "integrity": "sha512-4v+pjyoh9f5zuU/gJlNvNFGEAb6J90sOBwpKJYJhdWXLZMNFCVzSigxrYO+vCsi8G4rl6/B2c0LcwIMjGPHmFQ==",
- "dev": true,
- "requires": {
- "chalk": "^4.1.0"
- }
- },
- "@parcel/namer-default": {
- "version": "2.8.3",
- "resolved": "https://registry.npmjs.org/@parcel/namer-default/-/namer-default-2.8.3.tgz",
- "integrity": "sha512-tJ7JehZviS5QwnxbARd8Uh63rkikZdZs1QOyivUhEvhN+DddSAVEdQLHGPzkl3YRk0tjFhbqo+Jci7TpezuAMw==",
- "dev": true,
- "requires": {
- "@parcel/diagnostic": "2.8.3",
- "@parcel/plugin": "2.8.3",
- "nullthrows": "^1.1.1"
- }
- },
- "@parcel/node-resolver-core": {
- "version": "2.8.3",
- "resolved": "https://registry.npmjs.org/@parcel/node-resolver-core/-/node-resolver-core-2.8.3.tgz",
- "integrity": "sha512-12YryWcA5Iw2WNoEVr/t2HDjYR1iEzbjEcxfh1vaVDdZ020PiGw67g5hyIE/tsnG7SRJ0xdRx1fQ2hDgED+0Ww==",
- "dev": true,
- "requires": {
- "@parcel/diagnostic": "2.8.3",
- "@parcel/utils": "2.8.3",
- "nullthrows": "^1.1.1",
- "semver": "^5.7.1"
- }
- },
- "@parcel/optimizer-css": {
- "version": "2.8.3",
- "resolved": "https://registry.npmjs.org/@parcel/optimizer-css/-/optimizer-css-2.8.3.tgz",
- "integrity": "sha512-JotGAWo8JhuXsQDK0UkzeQB0UR5hDAKvAviXrjqB4KM9wZNLhLleeEAW4Hk8R9smCeQFP6Xg/N/NkLDpqMwT3g==",
- "dev": true,
- "requires": {
- "@parcel/diagnostic": "2.8.3",
- "@parcel/plugin": "2.8.3",
- "@parcel/source-map": "^2.1.1",
- "@parcel/utils": "2.8.3",
- "browserslist": "^4.6.6",
- "lightningcss": "^1.16.1",
- "nullthrows": "^1.1.1"
- }
- },
- "@parcel/optimizer-htmlnano": {
- "version": "2.8.3",
- "resolved": "https://registry.npmjs.org/@parcel/optimizer-htmlnano/-/optimizer-htmlnano-2.8.3.tgz",
- "integrity": "sha512-L8/fHbEy8Id2a2E0fwR5eKGlv9VYDjrH9PwdJE9Za9v1O/vEsfl/0T/79/x129l5O0yB6EFQkFa20MiK3b+vOg==",
- "dev": true,
- "requires": {
- "@parcel/plugin": "2.8.3",
- "htmlnano": "^2.0.0",
- "nullthrows": "^1.1.1",
- "posthtml": "^0.16.5",
- "svgo": "^2.4.0"
- }
- },
- "@parcel/optimizer-image": {
- "version": "2.8.3",
- "resolved": "https://registry.npmjs.org/@parcel/optimizer-image/-/optimizer-image-2.8.3.tgz",
- "integrity": "sha512-SD71sSH27SkCDNUNx9A3jizqB/WIJr3dsfp+JZGZC42tpD/Siim6Rqy9M4To/BpMMQIIiEXa5ofwS+DgTEiEHQ==",
- "dev": true,
- "requires": {
- "@parcel/diagnostic": "2.8.3",
- "@parcel/plugin": "2.8.3",
- "@parcel/utils": "2.8.3",
- "@parcel/workers": "2.8.3",
- "detect-libc": "^1.0.3"
- }
- },
- "@parcel/optimizer-svgo": {
- "version": "2.8.3",
- "resolved": "https://registry.npmjs.org/@parcel/optimizer-svgo/-/optimizer-svgo-2.8.3.tgz",
- "integrity": "sha512-9KQed99NZnQw3/W4qBYVQ7212rzA9EqrQG019TIWJzkA9tjGBMIm2c/nXpK1tc3hQ3e7KkXkFCQ3C+ibVUnHNA==",
- "dev": true,
- "requires": {
- "@parcel/diagnostic": "2.8.3",
- "@parcel/plugin": "2.8.3",
- "@parcel/utils": "2.8.3",
- "svgo": "^2.4.0"
- }
- },
- "@parcel/optimizer-terser": {
- "version": "2.8.3",
- "resolved": "https://registry.npmjs.org/@parcel/optimizer-terser/-/optimizer-terser-2.8.3.tgz",
- "integrity": "sha512-9EeQlN6zIeUWwzrzu6Q2pQSaYsYGah8MtiQ/hog9KEPlYTP60hBv/+utDyYEHSQhL7y5ym08tPX5GzBvwAD/dA==",
- "dev": true,
- "requires": {
- "@parcel/diagnostic": "2.8.3",
- "@parcel/plugin": "2.8.3",
- "@parcel/source-map": "^2.1.1",
- "@parcel/utils": "2.8.3",
- "nullthrows": "^1.1.1",
- "terser": "^5.2.0"
- }
- },
- "@parcel/package-manager": {
- "version": "2.8.3",
- "resolved": "https://registry.npmjs.org/@parcel/package-manager/-/package-manager-2.8.3.tgz",
- "integrity": "sha512-tIpY5pD2lH53p9hpi++GsODy6V3khSTX4pLEGuMpeSYbHthnOViobqIlFLsjni+QA1pfc8NNNIQwSNdGjYflVA==",
- "dev": true,
- "requires": {
- "@parcel/diagnostic": "2.8.3",
- "@parcel/fs": "2.8.3",
- "@parcel/logger": "2.8.3",
- "@parcel/types": "2.8.3",
- "@parcel/utils": "2.8.3",
- "@parcel/workers": "2.8.3",
- "semver": "^5.7.1"
- }
- },
- "@parcel/packager-css": {
- "version": "2.8.3",
- "resolved": "https://registry.npmjs.org/@parcel/packager-css/-/packager-css-2.8.3.tgz",
- "integrity": "sha512-WyvkMmsurlHG8d8oUVm7S+D+cC/T3qGeqogb7sTI52gB6uiywU7lRCizLNqGFyFGIxcVTVHWnSHqItBcLN76lA==",
- "dev": true,
- "requires": {
- "@parcel/plugin": "2.8.3",
- "@parcel/source-map": "^2.1.1",
- "@parcel/utils": "2.8.3",
- "nullthrows": "^1.1.1"
- }
- },
- "@parcel/packager-html": {
- "version": "2.8.3",
- "resolved": "https://registry.npmjs.org/@parcel/packager-html/-/packager-html-2.8.3.tgz",
- "integrity": "sha512-OhPu1Hx1RRKJodpiu86ZqL8el2Aa4uhBHF6RAL1Pcrh2EhRRlPf70Sk0tC22zUpYL7es+iNKZ/n0Rl+OWSHWEw==",
- "dev": true,
- "requires": {
- "@parcel/plugin": "2.8.3",
- "@parcel/types": "2.8.3",
- "@parcel/utils": "2.8.3",
- "nullthrows": "^1.1.1",
- "posthtml": "^0.16.5"
- }
- },
- "@parcel/packager-js": {
- "version": "2.8.3",
- "resolved": "https://registry.npmjs.org/@parcel/packager-js/-/packager-js-2.8.3.tgz",
- "integrity": "sha512-0pGKC3Ax5vFuxuZCRB+nBucRfFRz4ioie19BbDxYnvBxrd4M3FIu45njf6zbBYsI9eXqaDnL1b3DcZJfYqtIzw==",
- "dev": true,
- "requires": {
- "@parcel/diagnostic": "2.8.3",
- "@parcel/hash": "2.8.3",
- "@parcel/plugin": "2.8.3",
- "@parcel/source-map": "^2.1.1",
- "@parcel/utils": "2.8.3",
- "globals": "^13.2.0",
- "nullthrows": "^1.1.1"
- }
- },
- "@parcel/packager-raw": {
- "version": "2.8.3",
- "resolved": "https://registry.npmjs.org/@parcel/packager-raw/-/packager-raw-2.8.3.tgz",
- "integrity": "sha512-BA6enNQo1RCnco9MhkxGrjOk59O71IZ9DPKu3lCtqqYEVd823tXff2clDKHK25i6cChmeHu6oB1Rb73hlPqhUA==",
- "dev": true,
- "requires": {
- "@parcel/plugin": "2.8.3"
- }
- },
- "@parcel/packager-svg": {
- "version": "2.8.3",
- "resolved": "https://registry.npmjs.org/@parcel/packager-svg/-/packager-svg-2.8.3.tgz",
- "integrity": "sha512-mvIoHpmv5yzl36OjrklTDFShLUfPFTwrmp1eIwiszGdEBuQaX7JVI3Oo2jbVQgcN4W7J6SENzGQ3Q5hPTW3pMw==",
- "dev": true,
- "requires": {
- "@parcel/plugin": "2.8.3",
- "@parcel/types": "2.8.3",
- "@parcel/utils": "2.8.3",
- "posthtml": "^0.16.4"
- }
- },
- "@parcel/plugin": {
- "version": "2.8.3",
- "resolved": "https://registry.npmjs.org/@parcel/plugin/-/plugin-2.8.3.tgz",
- "integrity": "sha512-jZ6mnsS4D9X9GaNnvrixDQwlUQJCohDX2hGyM0U0bY2NWU8Km97SjtoCpWjq+XBCx/gpC4g58+fk9VQeZq2vlw==",
- "dev": true,
- "requires": {
- "@parcel/types": "2.8.3"
- }
- },
- "@parcel/reporter-cli": {
- "version": "2.8.3",
- "resolved": "https://registry.npmjs.org/@parcel/reporter-cli/-/reporter-cli-2.8.3.tgz",
- "integrity": "sha512-3sJkS6tFFzgIOz3u3IpD/RsmRxvOKKiQHOTkiiqRt1l44mMDGKS7zANRnJYsQzdCsgwc9SOP30XFgJwtoVlMbw==",
- "dev": true,
- "requires": {
- "@parcel/plugin": "2.8.3",
- "@parcel/types": "2.8.3",
- "@parcel/utils": "2.8.3",
- "chalk": "^4.1.0",
- "term-size": "^2.2.1"
- }
- },
- "@parcel/reporter-dev-server": {
- "version": "2.8.3",
- "resolved": "https://registry.npmjs.org/@parcel/reporter-dev-server/-/reporter-dev-server-2.8.3.tgz",
- "integrity": "sha512-Y8C8hzgzTd13IoWTj+COYXEyCkXfmVJs3//GDBsH22pbtSFMuzAZd+8J9qsCo0EWpiDow7V9f1LischvEh3FbQ==",
- "dev": true,
- "requires": {
- "@parcel/plugin": "2.8.3",
- "@parcel/utils": "2.8.3"
- }
- },
- "@parcel/resolver-default": {
- "version": "2.8.3",
- "resolved": "https://registry.npmjs.org/@parcel/resolver-default/-/resolver-default-2.8.3.tgz",
- "integrity": "sha512-k0B5M/PJ+3rFbNj4xZSBr6d6HVIe6DH/P3dClLcgBYSXAvElNDfXgtIimbjCyItFkW9/BfcgOVKEEIZOeySH/A==",
- "dev": true,
- "requires": {
- "@parcel/node-resolver-core": "2.8.3",
- "@parcel/plugin": "2.8.3"
- }
- },
- "@parcel/runtime-browser-hmr": {
- "version": "2.8.3",
- "resolved": "https://registry.npmjs.org/@parcel/runtime-browser-hmr/-/runtime-browser-hmr-2.8.3.tgz",
- "integrity": "sha512-2O1PYi2j/Q0lTyGNV3JdBYwg4rKo6TEVFlYGdd5wCYU9ZIN9RRuoCnWWH2qCPj3pjIVtBeppYxzfVjPEHINWVg==",
- "dev": true,
- "requires": {
- "@parcel/plugin": "2.8.3",
- "@parcel/utils": "2.8.3"
- }
- },
- "@parcel/runtime-js": {
- "version": "2.8.3",
- "resolved": "https://registry.npmjs.org/@parcel/runtime-js/-/runtime-js-2.8.3.tgz",
- "integrity": "sha512-IRja0vNKwvMtPgIqkBQh0QtRn0XcxNC8HU1jrgWGRckzu10qJWO+5ULgtOeR4pv9krffmMPqywGXw6l/gvJKYQ==",
- "dev": true,
- "requires": {
- "@parcel/plugin": "2.8.3",
- "@parcel/utils": "2.8.3",
- "nullthrows": "^1.1.1"
- }
- },
- "@parcel/runtime-react-refresh": {
- "version": "2.8.3",
- "resolved": "https://registry.npmjs.org/@parcel/runtime-react-refresh/-/runtime-react-refresh-2.8.3.tgz",
- "integrity": "sha512-2v/qFKp00MfG0234OdOgQNAo6TLENpFYZMbVbAsPMY9ITiqG73MrEsrGXVoGbYiGTMB/Toer/lSWlJxtacOCuA==",
- "dev": true,
- "requires": {
- "@parcel/plugin": "2.8.3",
- "@parcel/utils": "2.8.3",
- "react-error-overlay": "6.0.9",
- "react-refresh": "^0.9.0"
- }
- },
- "@parcel/runtime-service-worker": {
- "version": "2.8.3",
- "resolved": "https://registry.npmjs.org/@parcel/runtime-service-worker/-/runtime-service-worker-2.8.3.tgz",
- "integrity": "sha512-/Skkw+EeRiwzOJso5fQtK8c9b452uWLNhQH1ISTodbmlcyB4YalAiSsyHCtMYD0c3/t5Sx4ZS7vxBAtQd0RvOw==",
- "dev": true,
- "requires": {
- "@parcel/plugin": "2.8.3",
- "@parcel/utils": "2.8.3",
- "nullthrows": "^1.1.1"
- }
- },
- "@parcel/source-map": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/@parcel/source-map/-/source-map-2.1.1.tgz",
- "integrity": "sha512-Ejx1P/mj+kMjQb8/y5XxDUn4reGdr+WyKYloBljpppUy8gs42T+BNoEOuRYqDVdgPc6NxduzIDoJS9pOFfV5Ew==",
- "dev": true,
- "requires": {
- "detect-libc": "^1.0.3"
- }
- },
- "@parcel/transformer-babel": {
- "version": "2.8.3",
- "resolved": "https://registry.npmjs.org/@parcel/transformer-babel/-/transformer-babel-2.8.3.tgz",
- "integrity": "sha512-L6lExfpvvC7T/g3pxf3CIJRouQl+sgrSzuWQ0fD4PemUDHvHchSP4SNUVnd6gOytF3Y1KpnEZIunQGi5xVqQCQ==",
- "dev": true,
- "requires": {
- "@parcel/diagnostic": "2.8.3",
- "@parcel/plugin": "2.8.3",
- "@parcel/source-map": "^2.1.1",
- "@parcel/utils": "2.8.3",
- "browserslist": "^4.6.6",
- "json5": "^2.2.0",
- "nullthrows": "^1.1.1",
- "semver": "^5.7.0"
- }
- },
- "@parcel/transformer-css": {
- "version": "2.8.3",
- "resolved": "https://registry.npmjs.org/@parcel/transformer-css/-/transformer-css-2.8.3.tgz",
- "integrity": "sha512-xTqFwlSXtnaYen9ivAgz+xPW7yRl/u4QxtnDyDpz5dr8gSeOpQYRcjkd4RsYzKsWzZcGtB5EofEk8ayUbWKEUg==",
- "dev": true,
- "requires": {
- "@parcel/diagnostic": "2.8.3",
- "@parcel/plugin": "2.8.3",
- "@parcel/source-map": "^2.1.1",
- "@parcel/utils": "2.8.3",
- "browserslist": "^4.6.6",
- "lightningcss": "^1.16.1",
- "nullthrows": "^1.1.1"
- }
- },
- "@parcel/transformer-html": {
- "version": "2.8.3",
- "resolved": "https://registry.npmjs.org/@parcel/transformer-html/-/transformer-html-2.8.3.tgz",
- "integrity": "sha512-kIZO3qsMYTbSnSpl9cnZog+SwL517ffWH54JeB410OSAYF1ouf4n5v9qBnALZbuCCmPwJRGs4jUtE452hxwN4g==",
- "dev": true,
- "requires": {
- "@parcel/diagnostic": "2.8.3",
- "@parcel/hash": "2.8.3",
- "@parcel/plugin": "2.8.3",
- "nullthrows": "^1.1.1",
- "posthtml": "^0.16.5",
- "posthtml-parser": "^0.10.1",
- "posthtml-render": "^3.0.0",
- "semver": "^5.7.1",
- "srcset": "4"
- }
- },
- "@parcel/transformer-image": {
- "version": "2.8.3",
- "resolved": "https://registry.npmjs.org/@parcel/transformer-image/-/transformer-image-2.8.3.tgz",
- "integrity": "sha512-cO4uptcCGTi5H6bvTrAWEFUsTNhA4kCo8BSvRSCHA2sf/4C5tGQPHt3JhdO0GQLPwZRCh/R41EkJs5HZ8A8DAg==",
- "dev": true,
- "requires": {
- "@parcel/plugin": "2.8.3",
- "@parcel/utils": "2.8.3",
- "@parcel/workers": "2.8.3",
- "nullthrows": "^1.1.1"
- }
- },
- "@parcel/transformer-js": {
- "version": "2.8.3",
- "resolved": "https://registry.npmjs.org/@parcel/transformer-js/-/transformer-js-2.8.3.tgz",
- "integrity": "sha512-9Qd6bib+sWRcpovvzvxwy/PdFrLUXGfmSW9XcVVG8pvgXsZPFaNjnNT8stzGQj1pQiougCoxMY4aTM5p1lGHEQ==",
- "dev": true,
- "requires": {
- "@parcel/diagnostic": "2.8.3",
- "@parcel/plugin": "2.8.3",
- "@parcel/source-map": "^2.1.1",
- "@parcel/utils": "2.8.3",
- "@parcel/workers": "2.8.3",
- "@swc/helpers": "^0.4.12",
- "browserslist": "^4.6.6",
- "detect-libc": "^1.0.3",
- "nullthrows": "^1.1.1",
- "regenerator-runtime": "^0.13.7",
- "semver": "^5.7.1"
- }
- },
- "@parcel/transformer-json": {
- "version": "2.8.3",
- "resolved": "https://registry.npmjs.org/@parcel/transformer-json/-/transformer-json-2.8.3.tgz",
- "integrity": "sha512-B7LmVq5Q7bZO4ERb6NHtRuUKWGysEeaj9H4zelnyBv+wLgpo4f5FCxSE1/rTNmP9u1qHvQ3scGdK6EdSSokGPg==",
- "dev": true,
- "requires": {
- "@parcel/plugin": "2.8.3",
- "json5": "^2.2.0"
- }
- },
- "@parcel/transformer-postcss": {
- "version": "2.8.3",
- "resolved": "https://registry.npmjs.org/@parcel/transformer-postcss/-/transformer-postcss-2.8.3.tgz",
- "integrity": "sha512-e8luB/poIlz6jBsD1Izms+6ElbyzuoFVa4lFVLZnTAChI3UxPdt9p/uTsIO46HyBps/Bk8ocvt3J4YF84jzmvg==",
- "dev": true,
- "requires": {
- "@parcel/diagnostic": "2.8.3",
- "@parcel/hash": "2.8.3",
- "@parcel/plugin": "2.8.3",
- "@parcel/utils": "2.8.3",
- "clone": "^2.1.1",
- "nullthrows": "^1.1.1",
- "postcss-value-parser": "^4.2.0",
- "semver": "^5.7.1"
- }
- },
- "@parcel/transformer-posthtml": {
- "version": "2.8.3",
- "resolved": "https://registry.npmjs.org/@parcel/transformer-posthtml/-/transformer-posthtml-2.8.3.tgz",
- "integrity": "sha512-pkzf9Smyeaw4uaRLsT41RGrPLT5Aip8ZPcntawAfIo+KivBQUV0erY1IvHYjyfFzq1ld/Fo2Ith9He6mxpPifA==",
- "dev": true,
- "requires": {
- "@parcel/plugin": "2.8.3",
- "@parcel/utils": "2.8.3",
- "nullthrows": "^1.1.1",
- "posthtml": "^0.16.5",
- "posthtml-parser": "^0.10.1",
- "posthtml-render": "^3.0.0",
- "semver": "^5.7.1"
- }
- },
- "@parcel/transformer-raw": {
- "version": "2.8.3",
- "resolved": "https://registry.npmjs.org/@parcel/transformer-raw/-/transformer-raw-2.8.3.tgz",
- "integrity": "sha512-G+5cXnd2/1O3nV/pgRxVKZY/HcGSseuhAe71gQdSQftb8uJEURyUHoQ9Eh0JUD3MgWh9V+nIKoyFEZdf9T0sUQ==",
- "dev": true,
- "requires": {
- "@parcel/plugin": "2.8.3"
- }
- },
- "@parcel/transformer-react-refresh-wrap": {
- "version": "2.8.3",
- "resolved": "https://registry.npmjs.org/@parcel/transformer-react-refresh-wrap/-/transformer-react-refresh-wrap-2.8.3.tgz",
- "integrity": "sha512-q8AAoEvBnCf/nPvgOwFwKZfEl/thwq7c2duxXkhl+tTLDRN2vGmyz4355IxCkavSX+pLWSQ5MexklSEeMkgthg==",
- "dev": true,
- "requires": {
- "@parcel/plugin": "2.8.3",
- "@parcel/utils": "2.8.3",
- "react-refresh": "^0.9.0"
- }
- },
- "@parcel/transformer-svg": {
- "version": "2.8.3",
- "resolved": "https://registry.npmjs.org/@parcel/transformer-svg/-/transformer-svg-2.8.3.tgz",
- "integrity": "sha512-3Zr/gBzxi1ZH1fftH/+KsZU7w5GqkmxlB0ZM8ovS5E/Pl1lq1t0xvGJue9m2VuQqP8Mxfpl5qLFmsKlhaZdMIQ==",
- "dev": true,
- "requires": {
- "@parcel/diagnostic": "2.8.3",
- "@parcel/hash": "2.8.3",
- "@parcel/plugin": "2.8.3",
- "nullthrows": "^1.1.1",
- "posthtml": "^0.16.5",
- "posthtml-parser": "^0.10.1",
- "posthtml-render": "^3.0.0",
- "semver": "^5.7.1"
- }
- },
- "@parcel/types": {
- "version": "2.8.3",
- "resolved": "https://registry.npmjs.org/@parcel/types/-/types-2.8.3.tgz",
- "integrity": "sha512-FECA1FB7+0UpITKU0D6TgGBpGxYpVSMNEENZbSJxFSajNy3wrko+zwBKQmFOLOiPcEtnGikxNs+jkFWbPlUAtw==",
- "dev": true,
- "requires": {
- "@parcel/cache": "2.8.3",
- "@parcel/diagnostic": "2.8.3",
- "@parcel/fs": "2.8.3",
- "@parcel/package-manager": "2.8.3",
- "@parcel/source-map": "^2.1.1",
- "@parcel/workers": "2.8.3",
- "utility-types": "^3.10.0"
- }
- },
- "@parcel/utils": {
- "version": "2.8.3",
- "resolved": "https://registry.npmjs.org/@parcel/utils/-/utils-2.8.3.tgz",
- "integrity": "sha512-IhVrmNiJ+LOKHcCivG5dnuLGjhPYxQ/IzbnF2DKNQXWBTsYlHkJZpmz7THoeLtLliGmSOZ3ZCsbR8/tJJKmxjA==",
- "dev": true,
- "requires": {
- "@parcel/codeframe": "2.8.3",
- "@parcel/diagnostic": "2.8.3",
- "@parcel/hash": "2.8.3",
- "@parcel/logger": "2.8.3",
- "@parcel/markdown-ansi": "2.8.3",
- "@parcel/source-map": "^2.1.1",
- "chalk": "^4.1.0"
- }
- },
- "@parcel/watcher": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/@parcel/watcher/-/watcher-2.1.0.tgz",
- "integrity": "sha512-8s8yYjd19pDSsBpbkOHnT6Z2+UJSuLQx61pCFM0s5wSRvKCEMDjd/cHY3/GI1szHIWbpXpsJdg3V6ISGGx9xDw==",
- "dev": true,
- "requires": {
- "is-glob": "^4.0.3",
- "micromatch": "^4.0.5",
- "node-addon-api": "^3.2.1",
- "node-gyp-build": "^4.3.0"
- }
- },
- "@parcel/workers": {
- "version": "2.8.3",
- "resolved": "https://registry.npmjs.org/@parcel/workers/-/workers-2.8.3.tgz",
- "integrity": "sha512-+AxBnKgjqVpUHBcHLWIHcjYgKIvHIpZjN33mG5LG9XXvrZiqdWvouEzqEXlVLq5VzzVbKIQQcmsvRy138YErkg==",
- "dev": true,
- "requires": {
- "@parcel/diagnostic": "2.8.3",
- "@parcel/logger": "2.8.3",
- "@parcel/types": "2.8.3",
- "@parcel/utils": "2.8.3",
- "chrome-trace-event": "^1.0.2",
- "nullthrows": "^1.1.1"
- }
- },
- "@popperjs/core": {
- "version": "2.11.6",
- "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.6.tgz",
- "integrity": "sha512-50/17A98tWUfQ176raKiOGXuYpLyyVMkxxG6oylzL3BPOlA6ADGdK7EYunSa4I064xerltq9TGXs8HmOk5E+vw==",
- "peer": true
- },
- "@swc/helpers": {
- "version": "0.4.14",
- "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.4.14.tgz",
- "integrity": "sha512-4C7nX/dvpzB7za4Ql9K81xK3HPxCpHMgwTZVyf+9JQ6VUbn9jjZVN7/Nkdz/Ugzs2CSjqnL/UPXroiVBVHUWUw==",
- "dev": true,
- "requires": {
- "tslib": "^2.4.0"
- }
- },
- "@trysound/sax": {
- "version": "0.2.0",
- "resolved": "https://registry.npmjs.org/@trysound/sax/-/sax-0.2.0.tgz",
- "integrity": "sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==",
- "dev": true
- },
- "@types/parse-json": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz",
- "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==",
- "dev": true
- },
- "abortcontroller-polyfill": {
- "version": "1.7.5",
- "resolved": "https://registry.npmjs.org/abortcontroller-polyfill/-/abortcontroller-polyfill-1.7.5.tgz",
- "integrity": "sha512-JMJ5soJWP18htbbxJjG7bG6yuI6pRhgJ0scHHTfkUjf6wjP912xZWvM+A4sJK3gqd9E8fcPbDnOefbA9Th/FIQ==",
- "dev": true
- },
- "acorn": {
- "version": "8.8.2",
- "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.2.tgz",
- "integrity": "sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==",
- "dev": true
- },
- "ansi-styles": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
- "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
- "dev": true,
- "requires": {
- "color-convert": "^2.0.1"
- }
- },
- "balanced-match": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
- "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
- "dev": true
- },
- "base-x": {
- "version": "3.0.9",
- "resolved": "https://registry.npmjs.org/base-x/-/base-x-3.0.9.tgz",
- "integrity": "sha512-H7JU6iBHTal1gp56aKoaa//YUxEaAOUiydvrV/pILqIHXTtqxSkATOnDA2u+jZ/61sD+L/412+7kzXRtWukhpQ==",
- "dev": true,
- "requires": {
- "safe-buffer": "^5.0.1"
- }
- },
- "boolbase": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz",
- "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==",
- "dev": true
- },
- "bootstrap": {
- "version": "5.2.1",
- "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-5.2.1.tgz",
- "integrity": "sha512-UQi3v2NpVPEi1n35dmRRzBJFlgvWHYwyem6yHhuT6afYF+sziEt46McRbT//kVXZ7b1YUYEVGdXEH74Nx3xzGA==",
- "requires": {}
- },
- "brace-expansion": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
- "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
- "dev": true,
- "requires": {
- "balanced-match": "^1.0.0"
- }
- },
- "braces": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
- "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
- "dev": true,
- "requires": {
- "fill-range": "^7.0.1"
- }
- },
- "browserslist": {
- "version": "4.21.5",
- "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.5.tgz",
- "integrity": "sha512-tUkiguQGW7S3IhB7N+c2MV/HZPSCPAAiYBZXLsBhFB/PCy6ZKKsZrmBayHV9fdGV/ARIfJ14NkxKzRDjvp7L6w==",
- "dev": true,
- "requires": {
- "caniuse-lite": "^1.0.30001449",
- "electron-to-chromium": "^1.4.284",
- "node-releases": "^2.0.8",
- "update-browserslist-db": "^1.0.10"
- }
- },
- "buffer-from": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz",
- "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==",
- "dev": true
- },
- "callsites": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz",
- "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==",
- "dev": true
- },
- "caniuse-lite": {
- "version": "1.0.30001469",
- "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001469.tgz",
- "integrity": "sha512-Rcp7221ScNqQPP3W+lVOYDyjdR6dC+neEQCttoNr5bAyz54AboB4iwpnWgyi8P4YUsPybVzT4LgWiBbI3drL4g==",
- "dev": true
- },
- "chalk": {
- "version": "4.1.2",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
- "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
- "dev": true,
- "requires": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- }
- },
- "chrome-trace-event": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz",
- "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==",
- "dev": true
- },
- "clone": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz",
- "integrity": "sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==",
- "dev": true
- },
- "color-convert": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
- "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
- "dev": true,
- "requires": {
- "color-name": "~1.1.4"
- }
- },
- "color-name": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
- "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
- "dev": true
- },
- "commander": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz",
- "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==",
- "dev": true
- },
- "cosmiconfig": {
- "version": "7.1.0",
- "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz",
- "integrity": "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==",
- "dev": true,
- "requires": {
- "@types/parse-json": "^4.0.0",
- "import-fresh": "^3.2.1",
- "parse-json": "^5.0.0",
- "path-type": "^4.0.0",
- "yaml": "^1.10.0"
- }
- },
- "css-select": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz",
- "integrity": "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==",
- "dev": true,
- "requires": {
- "boolbase": "^1.0.0",
- "css-what": "^6.0.1",
- "domhandler": "^4.3.1",
- "domutils": "^2.8.0",
- "nth-check": "^2.0.1"
- }
- },
- "css-tree": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz",
- "integrity": "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==",
- "dev": true,
- "requires": {
- "mdn-data": "2.0.14",
- "source-map": "^0.6.1"
- }
- },
- "css-what": {
- "version": "6.1.0",
- "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz",
- "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==",
- "dev": true
- },
- "csso": {
- "version": "4.2.0",
- "resolved": "https://registry.npmjs.org/csso/-/csso-4.2.0.tgz",
- "integrity": "sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==",
- "dev": true,
- "requires": {
- "css-tree": "^1.1.2"
- }
- },
- "detect-libc": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz",
- "integrity": "sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==",
- "dev": true
- },
- "dom-serializer": {
- "version": "1.4.1",
- "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz",
- "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==",
- "dev": true,
- "requires": {
- "domelementtype": "^2.0.1",
- "domhandler": "^4.2.0",
- "entities": "^2.0.0"
- },
- "dependencies": {
- "entities": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz",
- "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==",
- "dev": true
- }
- }
- },
- "domelementtype": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz",
- "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==",
- "dev": true
- },
- "domhandler": {
- "version": "4.3.1",
- "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz",
- "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==",
- "dev": true,
- "requires": {
- "domelementtype": "^2.2.0"
- }
- },
- "domutils": {
- "version": "2.8.0",
- "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz",
- "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==",
- "dev": true,
- "requires": {
- "dom-serializer": "^1.0.1",
- "domelementtype": "^2.2.0",
- "domhandler": "^4.2.0"
- }
- },
- "dotenv": {
- "version": "7.0.0",
- "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-7.0.0.tgz",
- "integrity": "sha512-M3NhsLbV1i6HuGzBUH8vXrtxOk+tWmzWKDMbAVSUp3Zsjm7ywFeuwrUXhmhQyRK1q5B5GGy7hcXPbj3bnfZg2g==",
- "dev": true
- },
- "dotenv-expand": {
- "version": "5.1.0",
- "resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-5.1.0.tgz",
- "integrity": "sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA==",
- "dev": true
- },
- "electron-to-chromium": {
- "version": "1.4.340",
- "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.340.tgz",
- "integrity": "sha512-zx8hqumOqltKsv/MF50yvdAlPF9S/4PXbyfzJS6ZGhbddGkRegdwImmfSVqCkEziYzrIGZ/TlrzBND4FysfkDg==",
- "dev": true
- },
- "entities": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/entities/-/entities-3.0.1.tgz",
- "integrity": "sha512-WiyBqoomrwMdFG1e0kqvASYfnlb0lp8M5o5Fw2OFq1hNZxxcNk8Ik0Xm7LxzBhuidnZB/UtBqVCgUz3kBOP51Q==",
- "dev": true
- },
- "error-ex": {
- "version": "1.3.2",
- "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz",
- "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==",
- "dev": true,
- "requires": {
- "is-arrayish": "^0.2.1"
- }
- },
- "escalade": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz",
- "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==",
- "dev": true
- },
- "escape-string-regexp": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
- "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==",
- "dev": true
- },
- "fill-range": {
- "version": "7.0.1",
- "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
- "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
- "dev": true,
- "requires": {
- "to-regex-range": "^5.0.1"
- }
- },
- "fs.realpath": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
- "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==",
- "dev": true
- },
- "get-port": {
- "version": "4.2.0",
- "resolved": "https://registry.npmjs.org/get-port/-/get-port-4.2.0.tgz",
- "integrity": "sha512-/b3jarXkH8KJoOMQc3uVGHASwGLPq3gSFJ7tgJm2diza+bydJPTGOibin2steecKeOylE8oY2JERlVWkAJO6yw==",
- "dev": true
- },
- "glob": {
- "version": "9.3.2",
- "resolved": "https://registry.npmjs.org/glob/-/glob-9.3.2.tgz",
- "integrity": "sha512-BTv/JhKXFEHsErMte/AnfiSv8yYOLLiyH2lTg8vn02O21zWFgHPTfxtgn1QRe7NRgggUhC8hacR2Re94svHqeA==",
- "dev": true,
- "requires": {
- "fs.realpath": "^1.0.0",
- "minimatch": "^7.4.1",
- "minipass": "^4.2.4",
- "path-scurry": "^1.6.1"
- }
- },
- "globals": {
- "version": "13.20.0",
- "resolved": "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz",
- "integrity": "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==",
- "dev": true,
- "requires": {
- "type-fest": "^0.20.2"
- }
- },
- "has-flag": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
- "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
- "dev": true
- },
- "htmlnano": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/htmlnano/-/htmlnano-2.0.3.tgz",
- "integrity": "sha512-S4PGGj9RbdgW8LhbILNK7W9JhmYP8zmDY7KDV/8eCiJBQJlbmltp5I0gv8c5ntLljfdxxfmJ+UJVSqyH4mb41A==",
- "dev": true,
- "requires": {
- "cosmiconfig": "^7.0.1",
- "posthtml": "^0.16.5",
- "timsort": "^0.3.0"
- }
- },
- "htmlparser2": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-7.2.0.tgz",
- "integrity": "sha512-H7MImA4MS6cw7nbyURtLPO1Tms7C5H602LRETv95z1MxO/7CP7rDVROehUYeYBUYEON94NXXDEPmZuq+hX4sog==",
- "dev": true,
- "requires": {
- "domelementtype": "^2.0.1",
- "domhandler": "^4.2.2",
- "domutils": "^2.8.0",
- "entities": "^3.0.1"
- }
- },
- "import-fresh": {
- "version": "3.3.0",
- "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz",
- "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==",
- "dev": true,
- "requires": {
- "parent-module": "^1.0.0",
- "resolve-from": "^4.0.0"
- }
- },
- "is-arrayish": {
- "version": "0.2.1",
- "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz",
- "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==",
- "dev": true
- },
- "is-extglob": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
- "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==",
- "dev": true
- },
- "is-glob": {
- "version": "4.0.3",
- "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
- "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
- "dev": true,
- "requires": {
- "is-extglob": "^2.1.1"
- }
- },
- "is-json": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/is-json/-/is-json-2.0.1.tgz",
- "integrity": "sha512-6BEnpVn1rcf3ngfmViLM6vjUjGErbdrL4rwlv+u1NO1XO8kqT4YGL8+19Q+Z/bas8tY90BTWMk2+fW1g6hQjbA==",
- "dev": true
- },
- "is-number": {
- "version": "7.0.0",
- "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
- "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
- "dev": true
- },
- "js-tokens": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
- "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==",
- "dev": true
- },
- "json-parse-even-better-errors": {
- "version": "2.3.1",
- "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz",
- "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==",
- "dev": true
- },
- "json5": {
- "version": "2.2.3",
- "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz",
- "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==",
- "dev": true
- },
- "lightningcss": {
- "version": "1.19.0",
- "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.19.0.tgz",
- "integrity": "sha512-yV5UR7og+Og7lQC+70DA7a8ta1uiOPnWPJfxa0wnxylev5qfo4P+4iMpzWAdYWOca4jdNQZii+bDL/l+4hUXIA==",
- "dev": true,
- "requires": {
- "detect-libc": "^1.0.3",
- "lightningcss-darwin-arm64": "1.19.0",
- "lightningcss-darwin-x64": "1.19.0",
- "lightningcss-linux-arm-gnueabihf": "1.19.0",
- "lightningcss-linux-arm64-gnu": "1.19.0",
- "lightningcss-linux-arm64-musl": "1.19.0",
- "lightningcss-linux-x64-gnu": "1.19.0",
- "lightningcss-linux-x64-musl": "1.19.0",
- "lightningcss-win32-x64-msvc": "1.19.0"
- }
- },
- "lightningcss-darwin-arm64": {
- "version": "1.19.0",
- "resolved": "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.19.0.tgz",
- "integrity": "sha512-wIJmFtYX0rXHsXHSr4+sC5clwblEMji7HHQ4Ub1/CznVRxtCFha6JIt5JZaNf8vQrfdZnBxLLC6R8pC818jXqg==",
- "dev": true,
- "optional": true
- },
- "lightningcss-darwin-x64": {
- "version": "1.19.0",
- "resolved": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.19.0.tgz",
- "integrity": "sha512-Lif1wD6P4poaw9c/4Uh2z+gmrWhw/HtXFoeZ3bEsv6Ia4tt8rOJBdkfVaUJ6VXmpKHALve+iTyP2+50xY1wKPw==",
- "dev": true,
- "optional": true
- },
- "lightningcss-linux-arm-gnueabihf": {
- "version": "1.19.0",
- "resolved": "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.19.0.tgz",
- "integrity": "sha512-P15VXY5682mTXaiDtbnLYQflc8BYb774j2R84FgDLJTN6Qp0ZjWEFyN1SPqyfTj2B2TFjRHRUvQSSZ7qN4Weig==",
- "dev": true,
- "optional": true
- },
- "lightningcss-linux-arm64-gnu": {
- "version": "1.19.0",
- "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.19.0.tgz",
- "integrity": "sha512-zwXRjWqpev8wqO0sv0M1aM1PpjHz6RVIsBcxKszIG83Befuh4yNysjgHVplF9RTU7eozGe3Ts7r6we1+Qkqsww==",
- "dev": true,
- "optional": true
- },
- "lightningcss-linux-arm64-musl": {
- "version": "1.19.0",
- "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.19.0.tgz",
- "integrity": "sha512-vSCKO7SDnZaFN9zEloKSZM5/kC5gbzUjoJQ43BvUpyTFUX7ACs/mDfl2Eq6fdz2+uWhUh7vf92c4EaaP4udEtA==",
- "dev": true,
- "optional": true
- },
- "lightningcss-linux-x64-gnu": {
- "version": "1.19.0",
- "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.19.0.tgz",
- "integrity": "sha512-0AFQKvVzXf9byrXUq9z0anMGLdZJS+XSDqidyijI5njIwj6MdbvX2UZK/c4FfNmeRa2N/8ngTffoIuOUit5eIQ==",
- "dev": true,
- "optional": true
- },
- "lightningcss-linux-x64-musl": {
- "version": "1.19.0",
- "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.19.0.tgz",
- "integrity": "sha512-SJoM8CLPt6ECCgSuWe+g0qo8dqQYVcPiW2s19dxkmSI5+Uu1GIRzyKA0b7QqmEXolA+oSJhQqCmJpzjY4CuZAg==",
- "dev": true,
- "optional": true
- },
- "lightningcss-win32-x64-msvc": {
- "version": "1.19.0",
- "resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.19.0.tgz",
- "integrity": "sha512-C+VuUTeSUOAaBZZOPT7Etn/agx/MatzJzGRkeV+zEABmPuntv1zihncsi+AyGmjkkzq3wVedEy7h0/4S84mUtg==",
- "dev": true,
- "optional": true
- },
- "lines-and-columns": {
- "version": "1.2.4",
- "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz",
- "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==",
- "dev": true
- },
- "lmdb": {
- "version": "2.5.2",
- "resolved": "https://registry.npmjs.org/lmdb/-/lmdb-2.5.2.tgz",
- "integrity": "sha512-V5V5Xa2Hp9i2XsbDALkBTeHXnBXh/lEmk9p22zdr7jtuOIY9TGhjK6vAvTpOOx9IKU4hJkRWZxn/HsvR1ELLtA==",
- "dev": true,
- "requires": {
- "@lmdb/lmdb-darwin-arm64": "2.5.2",
- "@lmdb/lmdb-darwin-x64": "2.5.2",
- "@lmdb/lmdb-linux-arm": "2.5.2",
- "@lmdb/lmdb-linux-arm64": "2.5.2",
- "@lmdb/lmdb-linux-x64": "2.5.2",
- "@lmdb/lmdb-win32-x64": "2.5.2",
- "msgpackr": "^1.5.4",
- "node-addon-api": "^4.3.0",
- "node-gyp-build-optional-packages": "5.0.3",
- "ordered-binary": "^1.2.4",
- "weak-lru-cache": "^1.2.2"
- },
- "dependencies": {
- "node-addon-api": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-4.3.0.tgz",
- "integrity": "sha512-73sE9+3UaLYYFmDsFZnqCInzPyh3MqIwZO9cw58yIqAZhONrrabrYyYe3TuIqtIiOuTXVhsGau8hcrhhwSsDIQ==",
- "dev": true
- }
- }
- },
- "lru-cache": {
- "version": "7.18.3",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz",
- "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==",
- "dev": true
- },
- "mdn-data": {
- "version": "2.0.14",
- "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz",
- "integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==",
- "dev": true
- },
- "micromatch": {
- "version": "4.0.5",
- "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz",
- "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==",
- "dev": true,
- "requires": {
- "braces": "^3.0.2",
- "picomatch": "^2.3.1"
- }
- },
- "minimatch": {
- "version": "7.4.3",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-7.4.3.tgz",
- "integrity": "sha512-5UB4yYusDtkRPbRiy1cqZ1IpGNcJCGlEMG17RKzPddpyiPKoCdwohbED8g4QXT0ewCt8LTkQXuljsUfQ3FKM4A==",
- "dev": true,
- "requires": {
- "brace-expansion": "^2.0.1"
- }
- },
- "minipass": {
- "version": "4.2.5",
- "resolved": "https://registry.npmjs.org/minipass/-/minipass-4.2.5.tgz",
- "integrity": "sha512-+yQl7SX3bIT83Lhb4BVorMAHVuqsskxRdlmO9kTpyukp8vsm2Sn/fUOV9xlnG8/a5JsypJzap21lz/y3FBMJ8Q==",
- "dev": true
- },
- "msgpackr": {
- "version": "1.8.5",
- "resolved": "https://registry.npmjs.org/msgpackr/-/msgpackr-1.8.5.tgz",
- "integrity": "sha512-mpPs3qqTug6ahbblkThoUY2DQdNXcm4IapwOS3Vm/87vmpzLVelvp9h3It1y9l1VPpiFLV11vfOXnmeEwiIXwg==",
- "dev": true,
- "requires": {
- "msgpackr-extract": "^3.0.1"
- }
- },
- "msgpackr-extract": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/msgpackr-extract/-/msgpackr-extract-3.0.2.tgz",
- "integrity": "sha512-SdzXp4kD/Qf8agZ9+iTu6eql0m3kWm1A2y1hkpTeVNENutaB0BwHlSvAIaMxwntmRUAUjon2V4L8Z/njd0Ct8A==",
- "dev": true,
- "optional": true,
- "requires": {
- "@msgpackr-extract/msgpackr-extract-darwin-arm64": "3.0.2",
- "@msgpackr-extract/msgpackr-extract-darwin-x64": "3.0.2",
- "@msgpackr-extract/msgpackr-extract-linux-arm": "3.0.2",
- "@msgpackr-extract/msgpackr-extract-linux-arm64": "3.0.2",
- "@msgpackr-extract/msgpackr-extract-linux-x64": "3.0.2",
- "@msgpackr-extract/msgpackr-extract-win32-x64": "3.0.2",
- "node-gyp-build-optional-packages": "5.0.7"
- },
- "dependencies": {
- "node-gyp-build-optional-packages": {
- "version": "5.0.7",
- "resolved": "https://registry.npmjs.org/node-gyp-build-optional-packages/-/node-gyp-build-optional-packages-5.0.7.tgz",
- "integrity": "sha512-YlCCc6Wffkx0kHkmam79GKvDQ6x+QZkMjFGrIMxgFNILFvGSbCp2fCBC55pGTT9gVaz8Na5CLmxt/urtzRv36w==",
- "dev": true,
- "optional": true
- }
- }
- },
- "node-addon-api": {
- "version": "3.2.1",
- "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-3.2.1.tgz",
- "integrity": "sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A==",
- "dev": true
- },
- "node-gyp-build": {
- "version": "4.6.0",
- "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.6.0.tgz",
- "integrity": "sha512-NTZVKn9IylLwUzaKjkas1e4u2DLNcV4rdYagA4PWdPwW87Bi7z+BznyKSRwS/761tV/lzCGXplWsiaMjLqP2zQ==",
- "dev": true
- },
- "node-gyp-build-optional-packages": {
- "version": "5.0.3",
- "resolved": "https://registry.npmjs.org/node-gyp-build-optional-packages/-/node-gyp-build-optional-packages-5.0.3.tgz",
- "integrity": "sha512-k75jcVzk5wnnc/FMxsf4udAoTEUv2jY3ycfdSd3yWu6Cnd1oee6/CfZJApyscA4FJOmdoixWwiwOyf16RzD5JA==",
- "dev": true
- },
- "node-releases": {
- "version": "2.0.10",
- "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.10.tgz",
- "integrity": "sha512-5GFldHPXVG/YZmFzJvKK2zDSzPKhEp0+ZR5SVaoSag9fsL5YgHbUHDfnG5494ISANDcK4KwPXAx2xqVEydmd7w==",
- "dev": true
- },
- "nth-check": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz",
- "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==",
- "dev": true,
- "requires": {
- "boolbase": "^1.0.0"
- }
- },
- "nullthrows": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/nullthrows/-/nullthrows-1.1.1.tgz",
- "integrity": "sha512-2vPPEi+Z7WqML2jZYddDIfy5Dqb0r2fze2zTxNNknZaFpVHU3mFB3R+DWeJWGVx0ecvttSGlJTI+WG+8Z4cDWw==",
- "dev": true
- },
- "ordered-binary": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/ordered-binary/-/ordered-binary-1.4.0.tgz",
- "integrity": "sha512-EHQ/jk4/a9hLupIKxTfUsQRej1Yd/0QLQs3vGvIqg5ZtCYSzNhkzHoZc7Zf4e4kUlDaC3Uw8Q/1opOLNN2OKRQ==",
- "dev": true
- },
- "parcel": {
- "version": "2.8.3",
- "resolved": "https://registry.npmjs.org/parcel/-/parcel-2.8.3.tgz",
- "integrity": "sha512-5rMBpbNE72g6jZvkdR5gS2nyhwIXaJy8i65osOqs/+5b7zgf3eMKgjSsDrv6bhz3gzifsba6MBJiZdBckl+vnA==",
- "dev": true,
- "requires": {
- "@parcel/config-default": "2.8.3",
- "@parcel/core": "2.8.3",
- "@parcel/diagnostic": "2.8.3",
- "@parcel/events": "2.8.3",
- "@parcel/fs": "2.8.3",
- "@parcel/logger": "2.8.3",
- "@parcel/package-manager": "2.8.3",
- "@parcel/reporter-cli": "2.8.3",
- "@parcel/reporter-dev-server": "2.8.3",
- "@parcel/utils": "2.8.3",
- "chalk": "^4.1.0",
- "commander": "^7.0.0",
- "get-port": "^4.2.0",
- "v8-compile-cache": "^2.0.0"
- }
- },
- "parent-module": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz",
- "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==",
- "dev": true,
- "requires": {
- "callsites": "^3.0.0"
- }
- },
- "parse-json": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz",
- "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==",
- "dev": true,
- "requires": {
- "@babel/code-frame": "^7.0.0",
- "error-ex": "^1.3.1",
- "json-parse-even-better-errors": "^2.3.0",
- "lines-and-columns": "^1.1.6"
- }
- },
- "path-scurry": {
- "version": "1.6.3",
- "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.6.3.tgz",
- "integrity": "sha512-RAmB+n30SlN+HnNx6EbcpoDy9nwdpcGPnEKrJnu6GZoDWBdIjo1UQMVtW2ybtC7LC2oKLcMq8y5g8WnKLiod9g==",
- "dev": true,
- "requires": {
- "lru-cache": "^7.14.1",
- "minipass": "^4.0.2"
- }
- },
- "path-type": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz",
- "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==",
- "dev": true
- },
- "picocolors": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz",
- "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==",
- "dev": true
- },
- "picomatch": {
- "version": "2.3.1",
- "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
- "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
- "dev": true
- },
- "postcss-value-parser": {
- "version": "4.2.0",
- "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz",
- "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==",
- "dev": true
- },
- "posthtml": {
- "version": "0.16.6",
- "resolved": "https://registry.npmjs.org/posthtml/-/posthtml-0.16.6.tgz",
- "integrity": "sha512-JcEmHlyLK/o0uGAlj65vgg+7LIms0xKXe60lcDOTU7oVX/3LuEuLwrQpW3VJ7de5TaFKiW4kWkaIpJL42FEgxQ==",
- "dev": true,
- "requires": {
- "posthtml-parser": "^0.11.0",
- "posthtml-render": "^3.0.0"
- },
- "dependencies": {
- "posthtml-parser": {
- "version": "0.11.0",
- "resolved": "https://registry.npmjs.org/posthtml-parser/-/posthtml-parser-0.11.0.tgz",
- "integrity": "sha512-QecJtfLekJbWVo/dMAA+OSwY79wpRmbqS5TeXvXSX+f0c6pW4/SE6inzZ2qkU7oAMCPqIDkZDvd/bQsSFUnKyw==",
- "dev": true,
- "requires": {
- "htmlparser2": "^7.1.1"
- }
- }
- }
- },
- "posthtml-parser": {
- "version": "0.10.2",
- "resolved": "https://registry.npmjs.org/posthtml-parser/-/posthtml-parser-0.10.2.tgz",
- "integrity": "sha512-PId6zZ/2lyJi9LiKfe+i2xv57oEjJgWbsHGGANwos5AvdQp98i6AtamAl8gzSVFGfQ43Glb5D614cvZf012VKg==",
- "dev": true,
- "requires": {
- "htmlparser2": "^7.1.1"
- }
- },
- "posthtml-render": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/posthtml-render/-/posthtml-render-3.0.0.tgz",
- "integrity": "sha512-z+16RoxK3fUPgwaIgH9NGnK1HKY9XIDpydky5eQGgAFVXTCSezalv9U2jQuNV+Z9qV1fDWNzldcw4eK0SSbqKA==",
- "dev": true,
- "requires": {
- "is-json": "^2.0.1"
- }
- },
- "react-error-overlay": {
- "version": "6.0.9",
- "resolved": "https://registry.npmjs.org/react-error-overlay/-/react-error-overlay-6.0.9.tgz",
- "integrity": "sha512-nQTTcUu+ATDbrSD1BZHr5kgSD4oF8OFjxun8uAaL8RwPBacGBNPf/yAuVVdx17N8XNzRDMrZ9XcKZHCjPW+9ew==",
- "dev": true
- },
- "react-refresh": {
- "version": "0.9.0",
- "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.9.0.tgz",
- "integrity": "sha512-Gvzk7OZpiqKSkxsQvO/mbTN1poglhmAV7gR/DdIrRrSMXraRQQlfikRJOr3Nb9GTMPC5kof948Zy6jJZIFtDvQ==",
- "dev": true
- },
- "regenerator-runtime": {
- "version": "0.13.11",
- "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz",
- "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==",
- "dev": true
- },
- "resolve-from": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz",
- "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==",
- "dev": true
- },
- "rimraf": {
- "version": "4.4.0",
- "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-4.4.0.tgz",
- "integrity": "sha512-X36S+qpCUR0HjXlkDe4NAOhS//aHH0Z+h8Ckf2auGJk3PTnx5rLmrHkwNdbVQuCSUhOyFrlRvFEllZOYE+yZGQ==",
- "dev": true,
- "requires": {
- "glob": "^9.2.0"
- }
- },
- "safe-buffer": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
- "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
- "dev": true
- },
- "semver": {
- "version": "5.7.1",
- "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
- "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
- "dev": true
- },
- "source-map": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
- "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
- "dev": true
- },
- "source-map-support": {
- "version": "0.5.21",
- "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz",
- "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==",
- "dev": true,
- "requires": {
- "buffer-from": "^1.0.0",
- "source-map": "^0.6.0"
- }
- },
- "srcset": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/srcset/-/srcset-4.0.0.tgz",
- "integrity": "sha512-wvLeHgcVHKO8Sc/H/5lkGreJQVeYMm9rlmt8PuR1xE31rIuXhuzznUUqAt8MqLhB3MqJdFzlNAfpcWnxiFUcPw==",
- "dev": true
- },
- "stable": {
- "version": "0.1.8",
- "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz",
- "integrity": "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==",
- "dev": true
- },
- "supports-color": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
- "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
- "dev": true,
- "requires": {
- "has-flag": "^4.0.0"
- }
- },
- "svgo": {
- "version": "2.8.0",
- "resolved": "https://registry.npmjs.org/svgo/-/svgo-2.8.0.tgz",
- "integrity": "sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg==",
- "dev": true,
- "requires": {
- "@trysound/sax": "0.2.0",
- "commander": "^7.2.0",
- "css-select": "^4.1.3",
- "css-tree": "^1.1.3",
- "csso": "^4.2.0",
- "picocolors": "^1.0.0",
- "stable": "^0.1.8"
- }
- },
- "term-size": {
- "version": "2.2.1",
- "resolved": "https://registry.npmjs.org/term-size/-/term-size-2.2.1.tgz",
- "integrity": "sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg==",
- "dev": true
- },
- "terser": {
- "version": "5.16.8",
- "resolved": "https://registry.npmjs.org/terser/-/terser-5.16.8.tgz",
- "integrity": "sha512-QI5g1E/ef7d+PsDifb+a6nnVgC4F22Bg6T0xrBrz6iloVB4PUkkunp6V8nzoOOZJIzjWVdAGqCdlKlhLq/TbIA==",
- "dev": true,
- "requires": {
- "@jridgewell/source-map": "^0.3.2",
- "acorn": "^8.5.0",
- "commander": "^2.20.0",
- "source-map-support": "~0.5.20"
- },
- "dependencies": {
- "commander": {
- "version": "2.20.3",
- "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz",
- "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==",
- "dev": true
- }
- }
- },
- "timsort": {
- "version": "0.3.0",
- "resolved": "https://registry.npmjs.org/timsort/-/timsort-0.3.0.tgz",
- "integrity": "sha512-qsdtZH+vMoCARQtyod4imc2nIJwg9Cc7lPRrw9CzF8ZKR0khdr8+2nX80PBhET3tcyTtJDxAffGh2rXH4tyU8A==",
- "dev": true
- },
- "to-regex-range": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
- "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
- "dev": true,
- "requires": {
- "is-number": "^7.0.0"
- }
- },
- "tslib": {
- "version": "2.5.0",
- "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz",
- "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==",
- "dev": true
- },
- "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
- },
- "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==",
- "dev": true,
- "requires": {
- "escalade": "^3.1.1",
- "picocolors": "^1.0.0"
- }
- },
- "utility-types": {
- "version": "3.10.0",
- "resolved": "https://registry.npmjs.org/utility-types/-/utility-types-3.10.0.tgz",
- "integrity": "sha512-O11mqxmi7wMKCo6HKFt5AhO4BwY3VV68YU07tgxfz8zJTIxr4BpsezN49Ffwy9j3ZpwwJp4fkRwjRzq3uWE6Rg==",
- "dev": true
- },
- "v8-compile-cache": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz",
- "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==",
- "dev": true
- },
- "weak-lru-cache": {
- "version": "1.2.2",
- "resolved": "https://registry.npmjs.org/weak-lru-cache/-/weak-lru-cache-1.2.2.tgz",
- "integrity": "sha512-DEAoo25RfSYMuTGc9vPJzZcZullwIqRDSI9LOy+fkCJPi6hykCnfKaXTuPBDuXAUcqHXyOgFtHNp/kB2FjYHbw==",
- "dev": true
- },
- "xxhash-wasm": {
- "version": "0.4.2",
- "resolved": "https://registry.npmjs.org/xxhash-wasm/-/xxhash-wasm-0.4.2.tgz",
- "integrity": "sha512-/eyHVRJQCirEkSZ1agRSCwriMhwlyUcFkXD5TPVSLP+IPzjsqMVzZwdoczLp1SoQU0R3dxz1RpIK+4YNQbCVOA==",
- "dev": true
- },
- "yaml": {
- "version": "1.10.2",
- "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz",
- "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==",
- "dev": true
- }
}
}
diff --git a/Front/package.json b/front/package.json
similarity index 76%
rename from Front/package.json
rename to front/package.json
index 70339a0..3cc7b70 100644
--- a/Front/package.json
+++ b/front/package.json
@@ -1,17 +1,17 @@
{
- "name": "int-prog",
+ "name": "front",
"version": "1.0.0",
- "main": "src/index.html",
+ "source": "src/index.html",
"scripts": {
"start": "parcel --port 3000",
"build": "npm run clean && parcel build",
"clean": "rimraf dist"
},
"dependencies": {
- "bootstrap": "5.2.1"
+ "bootstrap": "5.2.3"
},
"devDependencies": {
"parcel": "2.8.3",
"rimraf": "4.4.0"
}
-}
+}
\ No newline at end of file
diff --git a/front/src/components.html b/front/src/components.html
new file mode 100644
index 0000000..6b326a4
--- /dev/null
+++ b/front/src/components.html
@@ -0,0 +1,69 @@
+
+
+
+
+
+
+ Компоненты
+
+
+
+
+
+
+
+
+
+
+
+ # |
+ First name |
+ Last name |
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/front/src/index.html b/front/src/index.html
new file mode 100644
index 0000000..447171f
--- /dev/null
+++ b/front/src/index.html
@@ -0,0 +1,69 @@
+
+
+
+
+
+
+ Заказы
+
+
+
+
+
+
+
+
+
+
+
+ # |
+ First name |
+ Last name |
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/front/src/products.html b/front/src/products.html
new file mode 100644
index 0000000..c739b54
--- /dev/null
+++ b/front/src/products.html
@@ -0,0 +1,69 @@
+
+
+
+
+
+
+ Продукты
+
+
+
+
+
+
+
+
+
+
+
+ # |
+ First name |
+ Last name |
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/front/src/scriptComponent.js b/front/src/scriptComponent.js
new file mode 100644
index 0000000..cd3562c
--- /dev/null
+++ b/front/src/scriptComponent.js
@@ -0,0 +1,78 @@
+"use strict";
+
+window.addEventListener('DOMContentLoaded', function () {
+ const host = "http://localhost:8080";
+ const table = document.getElementById("tbody");
+ const form = document.getElementById("form");
+ const componentNameInput = document.getElementById("componentName");
+ const priceInput = document.getElementById("price");
+ const isEdit = false;
+ const getData = async function () {
+ table.innerHTML = "";
+ const response = await fetch(host + "/component");
+ const data = await response.json();
+ data.forEach(Component => {
+ table.innerHTML +=
+ `
+ ${Component.id} |
+ ${Component.price} |
+ ${Component.componentName} |
+ |
+
`;
+ })
+ }
+
+ const create = async function (price, componentName) {
+ const requestParams = {
+ method: "POST",
+ headers: {
+ "Content-Type": "application/json",
+ }
+ };
+ const response = await fetch(host + `/component?price=${price}&name=${componentName}`, requestParams);
+ return await response.json();
+ }
+
+ const test = async function (testObject) {
+ const requestParams = {
+ method: "POST",
+ headers: {
+ "Content-Type": "application/json",
+ },
+ body: JSON.stringify(testObject),
+ };
+ const response = await fetch(host + "/test", requestParams);
+ if (response.status === 200) {
+ const data = await response.json();
+ alert(`TestDto=[id=${data.id}, name=${data.name}, data=${data.data}]`);
+ }
+ if (response.status === 400) {
+ const data = await response.text();
+ alert(data);
+ }
+ }
+ function edit(){
+ alert('хуй');
+ }
+ form.addEventListener("submit", function (event) {
+ event.preventDefault();
+ create(priceInput.value, componentNameInput.value).then((result) => {
+ getData();
+ priceInput.value = "";
+ componentNameInput.value = "";
+ alert(`Component[id=${result.id}, price=${result.price}, componentName=${result.componentName}]`);
+ });
+ });
+
+ table.addEventListener("edit", function (event) {
+ event.preventDefault();
+ alert('хуй');
+ create(priceInput.value, componentNameInput.value).then((result) => {
+ getData();
+ priceInput.value = "";
+ componentNameInput.value = "";
+ alert(`Component[id=${result.id}, price=${result.price}, componentName=${result.componentName}]`);
+ });
+ });
+ getData();
+});
\ No newline at end of file
diff --git a/front/src/scriptOrder.js b/front/src/scriptOrder.js
new file mode 100644
index 0000000..0d8d677
--- /dev/null
+++ b/front/src/scriptOrder.js
@@ -0,0 +1,75 @@
+"use strict";
+
+window.addEventListener('DOMContentLoaded', function () {
+ const host = "http://localhost:8080";
+ const table = document.getElementById("tbody");
+ const form = document.getElementById("form");
+ const lastNameInput = document.getElementById("componentName");
+ const firstNameInput = document.getElementById("firstName");
+ const testErrorBtn = document.getElementById("testError");
+ const testNormalBtn = document.getElementById("testNormal");
+
+ const getData = async function () {
+ table.innerHTML = "";
+ const response = await fetch(host + "/student");
+ const data = await response.json();
+ data.forEach(student => {
+ table.innerHTML +=
+ `
+ ${student.id} |
+ ${student.firstName} |
+ ${student.lastName} |
+
`;
+ })
+ }
+
+ const create = async function (firstName, lastName) {
+ const requestParams = {
+ method: "POST",
+ headers: {
+ "Content-Type": "application/json",
+ }
+ };
+ const response = await fetch(host + `/student?firstName=${firstName}&lastName=${lastName}`, requestParams);
+ return await response.json();
+ }
+
+ const test = async function (testObject) {
+ const requestParams = {
+ method: "POST",
+ headers: {
+ "Content-Type": "application/json",
+ },
+ body: JSON.stringify(testObject),
+ };
+ const response = await fetch(host + "/test", requestParams);
+ if (response.status === 200) {
+ const data = await response.json();
+ alert(`TestDto=[id=${data.id}, name=${data.name}, data=${data.data}]`);
+ }
+ if (response.status === 400) {
+ const data = await response.text();
+ alert(data);
+ }
+ }
+
+ form.addEventListener("submit", function (event) {
+ event.preventDefault();
+ create(firstNameInput.value, lastNameInput.value).then((result) => {
+ getData();
+ firstNameInput.value = "";
+ lastNameInput.value = "";
+ alert(`Student[id=${result.id}, firstName=${result.firstName}, lastName=${result.lastName}]`);
+ });
+ });
+
+ testErrorBtn.addEventListener("click", function () {
+ test({});
+ });
+
+ testNormalBtn.addEventListener("click", function () {
+ test({id: 10, name: "test"});
+ });
+
+ getData();
+});
\ No newline at end of file
diff --git a/front/src/scriptProduct.js b/front/src/scriptProduct.js
new file mode 100644
index 0000000..e69de29
diff --git a/settings.gradle b/settings.gradle
index 58d367f..989765c 100644
--- a/settings.gradle
+++ b/settings.gradle
@@ -1,2 +1,2 @@
rootProject.name = 'labwork'
-include 'Front'
\ No newline at end of file
+include 'front'
\ No newline at end of file
diff --git a/src/main/java/ip/labwork/shop/controller/OrderController.java b/src/main/java/ip/labwork/shop/controller/OrderController.java
index 979fa83..3a69a92 100644
--- a/src/main/java/ip/labwork/shop/controller/OrderController.java
+++ b/src/main/java/ip/labwork/shop/controller/OrderController.java
@@ -22,7 +22,9 @@ public class OrderController {
@RequestParam("price") Integer price,
@RequestParam("count") Integer[] count,
@RequestParam("prod") Long[] prod){
- return new OrderDTO(orderService.addOrder(date, price, count, productService.findFiltredProducts(prod)));
+ final Order order = orderService.addOrder(date, price);
+ orderService.addOrderProducts(orderService.findOrder(order.getId()), count, productService.findFiltredProducts(prod));
+ return new OrderDTO(order);
}
@PutMapping("/{id}")
public OrderDTO updateOrder(@PathVariable Long id,
@@ -30,7 +32,8 @@ public class OrderController {
@RequestParam("price") Integer price,
@RequestParam("count") Integer[] count,
@RequestParam("prod") Long[] prod){
- return new OrderDTO(orderService.updateOrder(id, date, price, count, productService.findFiltredProducts(prod)));
+ orderService.updateOrder(id, date, price, count, productService.findFiltredProducts(prod));
+ return new OrderDTO(orderService.update(orderService.findOrder(id),orderService.getOrderProducts(orderService.findOrder(id)), orderService.getOrderProducts(orderService.findOrder(id)).stream().map(p -> p.getId().getProductId()).toList(), count, productService.findFiltredProducts(prod)));
}
@DeleteMapping("/{id}")
public OrderDTO removeOrder(@PathVariable Long id){
diff --git a/src/main/java/ip/labwork/shop/controller/ProductController.java b/src/main/java/ip/labwork/shop/controller/ProductController.java
index 0a46ccd..f073d89 100644
--- a/src/main/java/ip/labwork/shop/controller/ProductController.java
+++ b/src/main/java/ip/labwork/shop/controller/ProductController.java
@@ -23,7 +23,9 @@ public class ProductController {
@RequestParam("price") Integer price,
@RequestParam("count") Integer[] count,
@RequestParam("comp") Long[] comp){
- return new ProductDTO(productService.addProduct(name, price, count, componentService.findFiltredComponents(comp)));
+ final Product product = productService.addProduct(name, price);
+ productService.addProductComponents(productService.findProduct(product.getId()), count, componentService.findFiltredComponents(comp));
+ return new ProductDTO(product);
}
@PutMapping("/{id}")
public ProductDTO updateProduct(@PathVariable Long id,
@@ -31,7 +33,8 @@ public class ProductController {
@RequestParam("price") Integer price,
@RequestParam("count") Integer[] count,
@RequestParam("comp") Long[] comp){
- return new ProductDTO(productService.updateProduct(id, name, price, count, componentService.findFiltredComponents(comp)));
+ productService.updateProduct(id, name, price, count, componentService.findFiltredComponents(comp));
+ return new ProductDTO(productService.update(productService.findProduct(id),productService.getProductComponents(productService.findProduct(id)), productService.getProductComponents(productService.findProduct(id)).stream().map(p -> p.getId().getComponentId()).toList(), count, componentService.findFiltredComponents(comp)));
}
@DeleteMapping("/{id}")
public ProductDTO removeProduct(@PathVariable Long id){
diff --git a/src/main/java/ip/labwork/shop/model/Component.java b/src/main/java/ip/labwork/shop/model/Component.java
index 7418eed..61ccbb1 100644
--- a/src/main/java/ip/labwork/shop/model/Component.java
+++ b/src/main/java/ip/labwork/shop/model/Component.java
@@ -3,6 +3,7 @@ package ip.labwork.shop.model;
import com.fasterxml.jackson.annotation.JsonIgnore;
import jakarta.persistence.*;
import jakarta.validation.constraints.NotBlank;
+import jakarta.validation.constraints.NotNull;
import java.util.ArrayList;
import java.util.List;
@@ -17,7 +18,7 @@ public class Component {
@NotBlank(message = "ComponentName can't be null or empty")
@Column(name = "name")
private String componentName;
- @NotBlank(message = "Price can't be null or empty")
+ @NotNull(message= "Price may not be empty")
@Column(name = "price")
private Integer price;
diff --git a/src/main/java/ip/labwork/shop/model/Order.java b/src/main/java/ip/labwork/shop/model/Order.java
index 8f30101..ce86872 100644
--- a/src/main/java/ip/labwork/shop/model/Order.java
+++ b/src/main/java/ip/labwork/shop/model/Order.java
@@ -2,6 +2,7 @@ package ip.labwork.shop.model;
import jakarta.persistence.*;
import jakarta.validation.constraints.NotBlank;
+import jakarta.validation.constraints.NotNull;
import java.util.ArrayList;
import java.util.Date;
@@ -14,10 +15,10 @@ public class Order {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
- @NotBlank(message = "Date can't be null or empty")
+ @NotNull(message = "Date can't be null or empty")
@Column(name = "date")
private Date date;
- @NotBlank(message = "Price can't be null or empty")
+ @NotNull(message = "Price can't be null or empty")
@Column(name = "price")
private Integer price;
@OneToMany(mappedBy = "order", cascade = CascadeType.ALL, fetch = FetchType.EAGER)
diff --git a/src/main/java/ip/labwork/shop/model/OrderProducts.java b/src/main/java/ip/labwork/shop/model/OrderProducts.java
index 848cf10..021681a 100644
--- a/src/main/java/ip/labwork/shop/model/OrderProducts.java
+++ b/src/main/java/ip/labwork/shop/model/OrderProducts.java
@@ -3,6 +3,7 @@ package ip.labwork.shop.model;
import com.fasterxml.jackson.annotation.JsonIgnore;
import jakarta.persistence.*;
import jakarta.validation.constraints.NotBlank;
+import jakarta.validation.constraints.NotNull;
@Entity
@Table(name = "order_product")
@@ -18,7 +19,7 @@ public class OrderProducts {
@JoinColumn(name = "order_id")
@JsonIgnore
private Order order;
- @NotBlank(message = "Count can't be null or empty")
+ @NotNull(message = "Count can't be null or empty")
@Column(name = "count")
private Integer count;
@@ -61,7 +62,12 @@ public class OrderProducts {
public Integer getCount() {
return count;
}
-
+ public void remove(){
+ order.getProducts().remove(this);
+ order = null;
+ product.getOrders().remove(this);
+ product = null;
+ }
public void setCount(Integer count) {
this.count = count;
}
diff --git a/src/main/java/ip/labwork/shop/model/Product.java b/src/main/java/ip/labwork/shop/model/Product.java
index a8fbb31..f808497 100644
--- a/src/main/java/ip/labwork/shop/model/Product.java
+++ b/src/main/java/ip/labwork/shop/model/Product.java
@@ -3,6 +3,7 @@ package ip.labwork.shop.model;
import com.fasterxml.jackson.annotation.JsonIgnore;
import jakarta.persistence.*;
import jakarta.validation.constraints.NotBlank;
+import jakarta.validation.constraints.NotNull;
import java.util.ArrayList;
import java.util.List;
@@ -17,7 +18,7 @@ public class Product {
@NotBlank(message = "ProductName can't be null or empty")
@Column(name = "name")
private String productName;
- @NotBlank(message = "Price can't be null or empty")
+ @NotNull(message = "Price can't be null or empty")
@Column(name = "price")
private Integer price;
diff --git a/src/main/java/ip/labwork/shop/model/ProductComponents.java b/src/main/java/ip/labwork/shop/model/ProductComponents.java
index 02decf5..d9103ef 100644
--- a/src/main/java/ip/labwork/shop/model/ProductComponents.java
+++ b/src/main/java/ip/labwork/shop/model/ProductComponents.java
@@ -3,22 +3,23 @@ package ip.labwork.shop.model;
import com.fasterxml.jackson.annotation.JsonIgnore;
import jakarta.persistence.*;
import jakarta.validation.constraints.NotBlank;
+import jakarta.validation.constraints.NotNull;
@Entity
@Table(name = "product_component")
public class ProductComponents {
@EmbeddedId
private ProductComponentsKey id;
- @ManyToOne
+ @ManyToOne(cascade = CascadeType.ALL)
@MapsId("componentId")
@JoinColumn(name = "component_id")
private Component component;
- @ManyToOne
+ @ManyToOne(cascade = CascadeType.ALL)
@MapsId("productId")
@JoinColumn(name = "product_id")
@JsonIgnore
private Product product;
- @NotBlank(message = "Count can't be null or empty")
+ @NotNull(message = "Count can't be null or empty")
@Column(name = "count")
private Integer count;
@@ -33,7 +34,6 @@ public class ProductComponents {
this.product = product;
this.count = count;
}
-
public ProductComponentsKey getId() {
return id;
}
@@ -65,4 +65,20 @@ public class ProductComponents {
public void setCount(Integer count) {
this.count = count;
}
+ public void remove() {
+ product.getComponents().remove(this);
+ product = null;
+ component.getProducts().remove(this);
+ component = null;
+ }
+
+ @Override
+ public String toString() {
+ return "ProductComponents{" +
+ "id=" + id +
+ ", component=" + component +
+ ", product=" + product +
+ ", count=" + count +
+ '}';
+ }
}
diff --git a/src/main/java/ip/labwork/shop/repository/ProductComponentRepository.java b/src/main/java/ip/labwork/shop/repository/ProductComponentRepository.java
index 0a2fbaa..46eb49e 100644
--- a/src/main/java/ip/labwork/shop/repository/ProductComponentRepository.java
+++ b/src/main/java/ip/labwork/shop/repository/ProductComponentRepository.java
@@ -3,6 +3,7 @@ package ip.labwork.shop.repository;
import ip.labwork.shop.model.ProductComponents;
import ip.labwork.shop.model.ProductComponentsKey;
import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.jpa.repository.Query;
import java.util.List;
diff --git a/src/main/java/ip/labwork/shop/service/ComponentService.java b/src/main/java/ip/labwork/shop/service/ComponentService.java
index 685991c..73cb4a8 100644
--- a/src/main/java/ip/labwork/shop/service/ComponentService.java
+++ b/src/main/java/ip/labwork/shop/service/ComponentService.java
@@ -8,6 +8,7 @@ import ip.labwork.util.validation.ValidatorUtil;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
+import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Optional;
@@ -73,7 +74,12 @@ public class ComponentService {
}
@Transactional
public void deleteAllComponent() {
+ productComponentRepository.findAll().forEach(ProductComponents::remove);
productComponentRepository.deleteAll();
componentRepository.deleteAll();
}
+
+ public void test() {
+ int s =5;
+ }
}
diff --git a/src/main/java/ip/labwork/shop/service/OrderService.java b/src/main/java/ip/labwork/shop/service/OrderService.java
index 168b6b5..113c852 100644
--- a/src/main/java/ip/labwork/shop/service/OrderService.java
+++ b/src/main/java/ip/labwork/shop/service/OrderService.java
@@ -23,20 +23,22 @@ public class OrderService {
this.orderProductRepository = orderProductRepository;
}
@Transactional
- public Order addOrder(String date, Integer price, Integer[] count, List products) {
+ public Order addOrder(String date, Integer price) {
Date correctDate = getDate(date);
final Order order = new Order(correctDate, price);
validatorUtil.validate(order);
orderRepository.save(order);
+ return order;
+ }
+ @Transactional
+ public void addOrderProducts(Order order, Integer[] count, List products){
for (int i = 0; i < products.size(); i++) {
final OrderProducts orderProducts = new OrderProducts(order, products.get(i), count[i]);
order.addProduct(orderProducts);
products.get(i).addOrder(orderProducts);
orderProductRepository.save(orderProducts);
}
- return order;
}
-
public Date getDate(String date) {
SimpleDateFormat format = new SimpleDateFormat();
format.applyPattern("dd.MM.yyyy");
@@ -60,7 +62,7 @@ public class OrderService {
return orderRepository.findAll();
}
- @Transactional
+ /*@Transactional
public Order updateOrder(Long id, String date, Integer price, Integer[] count, List products) {
final Order currentOrder = findOrder(id);
currentOrder.setDate(getDate(date));
@@ -90,8 +92,54 @@ public class OrderService {
orderProductRepository.delete(orderProductsList.get(i));
}
return currentOrder;
- }
+ }*/
+ @Transactional
+ public Order updateOrder(Long id, String date, Integer price, Integer[] count, List products) {
+ final Order currentOrder = findOrder(id);
+ currentOrder.setDate(getDate(date));
+ currentOrder.setPrice(price);
+ validatorUtil.validate(currentOrder);
+ orderRepository.save(currentOrder);
+ List orderProductsList = orderProductRepository.getOrderProductsByOrderId(id);
+ List product_id = new ArrayList<>(orderProductsList.stream().map(p -> p.getId().getProductId()).toList());
+ for (int i = 0; i < products.size(); i++) {
+ final Long currentId = products.get(i).getId();
+ if (product_id.contains(currentId)) {
+ final OrderProducts orderProducts = orderProductsList.stream().filter(x -> Objects.equals(x.getId().getProductId(), currentId)).toList().get(0);
+ orderProductsList.remove(orderProducts);
+ product_id.remove(products.get(i).getId());
+ orderProducts.setCount(count[i]);
+ orderProductRepository.save(orderProducts);
+ }
+ }
+ for (int i = 0; i < orderProductsList.size(); i++) {
+ orderProductsList.get(i).getProduct().removeOrder(orderProductsList.get(i));
+ orderProductsList.get(i).getOrder().removeProducts(orderProductsList.get(i));
+ orderProductRepository.delete(orderProductsList.get(i));
+ }
+ return currentOrder;
+ }
+ @Transactional
+ public Order update(Order currentOrder, List orderProductsList, List product_id, Integer[] count, List products) {
+ for (int i = 0; i < products.size(); i++) {
+ final Long currentId = products.get(i).getId();
+ if (product_id.contains(currentId)) {
+ orderProductsList.remove(orderProductsList.stream().filter(x -> Objects.equals(x.getId().getProductId(), currentId)).toList().get(0));
+ product_id.remove(products.get(i).getId());
+ }
+ else {
+ final OrderProducts orderProducts = new OrderProducts(currentOrder, products.get(i), count[i]);
+ currentOrder.addProduct(orderProducts);
+ products.get(i).addOrder(orderProducts);
+ orderProductRepository.save(orderProducts);
+ }
+ }
+ return currentOrder;
+ }
+ public List getOrderProducts(Order currentOrder){
+ return orderProductRepository.getOrderProductsByOrderId(currentOrder.getId());
+ }
@Transactional
public Order deleteOrder(Long id) {
final Order currentOrder = findOrder(id);
@@ -107,6 +155,7 @@ public class OrderService {
}
@Transactional
public void deleteAllOrder() {
+ orderProductRepository.findAll().forEach(OrderProducts::remove);
orderProductRepository.deleteAll();
orderRepository.deleteAll();
}
diff --git a/src/main/java/ip/labwork/shop/service/ProductService.java b/src/main/java/ip/labwork/shop/service/ProductService.java
index 1b0a4d8..f5e7fa9 100644
--- a/src/main/java/ip/labwork/shop/service/ProductService.java
+++ b/src/main/java/ip/labwork/shop/service/ProductService.java
@@ -23,29 +23,33 @@ public class ProductService {
private final ProductRepository productRepository;
private final ProductComponentRepository productComponentRepository;
private final OrderProductRepository orderProductRepository;
+ private final ComponentRepository componentRepository;
private final ValidatorUtil validatorUtil;
public ProductService(ProductRepository productRepository,
- ValidatorUtil validatorUtil, ProductComponentRepository productComponentRepository, OrderProductRepository orderProductRepository) {
+ ValidatorUtil validatorUtil, ProductComponentRepository productComponentRepository, OrderProductRepository orderProductRepository, ComponentRepository componentRepository) {
this.productRepository = productRepository;
this.validatorUtil = validatorUtil;
this.productComponentRepository = productComponentRepository;
this.orderProductRepository = orderProductRepository;
+ this.componentRepository = componentRepository;
}
@Transactional
- public Product addProduct(String productName, Integer price, Integer[] count, List components) {
+ public Product addProduct(String productName, Integer price) {
final Product product = new Product(productName, price);
validatorUtil.validate(product);
productRepository.save(product);
+ return product;
+ }
+ @Transactional
+ public void addProductComponents(Product product, Integer[] count, List components){
for (int i = 0; i < components.size(); i++) {
final ProductComponents productComponents = new ProductComponents(components.get(i), product, count[i]);
product.addComponent(productComponents);
components.get(i).addProduct(productComponents);
- productComponentRepository.save(productComponents);
+ productComponentRepository.saveAndFlush(productComponents);
}
- return product;
}
-
@Transactional(readOnly = true)
public Product findProduct(Long id) {
final Optional product = productRepository.findById(id);
@@ -57,6 +61,38 @@ public class ProductService {
return productRepository.findAll();
}
+ /*@Transactional
+ public Product updateProduct(Long id, String productName, Integer price, Integer[] count, List components) {
+ final Product currentProduct = findProduct(id);
+ currentProduct.setProductName(productName);
+ currentProduct.setPrice(price);
+ validatorUtil.validate(currentProduct);
+ productRepository.save(currentProduct);
+ List productComponentsList = productComponentRepository.getProductComponentsByProductId(id);
+ List component_id = new ArrayList<>(productComponentsList.stream().map(p -> p.getId().getComponentId()).toList());
+ for (int i = 0; i < components.size(); i++) {
+ final Long currentId = components.get(i).getId();
+ if (component_id.contains(currentId)) {
+ final ProductComponents productComponents = productComponentsList.stream().filter(x -> Objects.equals(x.getId().getComponentId(), currentId)).toList().get(0);
+ productComponentsList.remove(productComponents);
+ component_id.remove(components.get(i).getId());
+ productComponents.setCount(count[i]);
+ productComponentRepository.saveAndFlush(productComponents);
+ }
+ else {
+ final ProductComponents productComponents = new ProductComponents(components.get(i), currentProduct, count[i]);
+ currentProduct.addComponent(productComponents);
+ components.get(i).addProduct(productComponents);
+ productComponentRepository.save(productComponents);
+ }
+ }
+ for (int i = 0; i < productComponentsList.size(); i++) {
+ productComponentsList.get(i).getComponent().removeProduct(productComponentsList.get(i));
+ productComponentsList.get(i).getProduct().removeComponent(productComponentsList.get(i));
+ productComponentRepository.delete(productComponentsList.get(i));
+ }
+ return currentProduct;
+ }*/
@Transactional
public Product updateProduct(Long id, String productName, Integer price, Integer[] count, List components) {
final Product currentProduct = findProduct(id);
@@ -73,12 +109,7 @@ public class ProductService {
productComponentsList.remove(productComponents);
component_id.remove(components.get(i).getId());
productComponents.setCount(count[i]);
- productComponentRepository.save(productComponents);
- } else {
- final ProductComponents productComponents = new ProductComponents(components.get(i), currentProduct, count[i]);
- currentProduct.addComponent(productComponents);
- components.get(i).addProduct(productComponents);
- productComponentRepository.save(productComponents);
+ productComponentRepository.saveAndFlush(productComponents);
}
}
for (int i = 0; i < productComponentsList.size(); i++) {
@@ -88,7 +119,29 @@ public class ProductService {
}
return currentProduct;
}
-
+ @Transactional
+ public Product update(Product currentProduct, List productComponentsList, List component_id, Integer[] count, List components) {
+ for (int i = 0; i < components.size(); i++) {
+ final Long currentId = components.get(i).getId();
+ if (component_id.contains(currentId)) {
+ productComponentsList.remove(productComponentsList.stream().filter(x -> Objects.equals(x.getId().getComponentId(), currentId)).toList().get(0));
+ component_id.remove(components.get(i).getId());
+ }
+ else {
+ final ProductComponents productComponents = new ProductComponents(components.get(i), currentProduct, count[i]);
+ currentProduct.addComponent(productComponents);
+ components.get(i).addProduct(productComponents);
+ productComponentRepository.save(productComponents);
+ }
+ }
+ return currentProduct;
+ }
+ public List getProductComponents(Product currentProduct){
+ return productComponentRepository.getProductComponentsByProductId(currentProduct.getId());
+ }
+ public void test(){
+ int s =5;
+ }
@Transactional
public Product deleteProduct(Long id) {
final Product currentProduct = findProduct(id);
@@ -112,6 +165,8 @@ public class ProductService {
@Transactional
public void deleteAllProduct() {
+ orderProductRepository.findAll().forEach(OrderProducts::remove);
+ productComponentRepository.findAll().forEach(ProductComponents::remove);
productComponentRepository.deleteAll();
orderProductRepository.deleteAll();
productRepository.deleteAll();
diff --git a/src/test/java/ip/labwork/JpaStudentTests.java b/src/test/java/ip/labwork/JpaStudentTests.java
index c362b9c..81d2310 100644
--- a/src/test/java/ip/labwork/JpaStudentTests.java
+++ b/src/test/java/ip/labwork/JpaStudentTests.java
@@ -3,9 +3,7 @@ package ip.labwork;
import ip.labwork.shop.model.Component;
import ip.labwork.shop.model.Order;
import ip.labwork.shop.model.Product;
-import ip.labwork.shop.service.ComponentService;
-import ip.labwork.shop.service.OrderService;
-import ip.labwork.shop.service.ProductService;
+import ip.labwork.shop.service.*;
import jakarta.persistence.EntityNotFoundException;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;
@@ -39,13 +37,17 @@ public class JpaStudentTests {
List componentList = new ArrayList<>();
componentList.add(componentService.findComponent(component.getId()));
- final Product product = productService.addProduct("Бургер", 100, new Integer[]{ 2 }, componentList);
+
+ final Product product = productService.addProduct("Бургер", 100);
+ productService.addProductComponents(productService.findProduct(product.getId()), new Integer[]{ 2}, componentList );
log.info(product.toString());
Assertions.assertNotNull(product.getId());
List productList = new ArrayList<>();
productList.add(productService.findProduct(product.getId()));
- final Order order = orderService.addOrder(new Date().toString(), 200, new Integer[]{ 3 }, productList);
+
+ final Order order = orderService.addOrder(new Date().toString(), 200);
+ orderService.addOrderProducts(orderService.findOrder(order.getId()), new Integer[]{ 2 }, productList);
log.info(order.toString());
Assertions.assertNotNull(order.getId());
@@ -75,19 +77,18 @@ public class JpaStudentTests {
log.info(orders.toString());
Assertions.assertEquals(orders.size(), 1);
-
//TestReadNotFound
componentService.deleteAllComponent();
productService.deleteAllProduct();
orderService.deleteAllOrder();
-
- Assertions.assertThrows(EntityNotFoundException.class, () -> componentService.findComponent(-1L));
- Assertions.assertThrows(EntityNotFoundException.class, () -> productService.findProduct(-1L));
- Assertions.assertThrows(EntityNotFoundException.class, () -> orderService.findOrder(-1L));
+ Assertions.assertThrows(ComponentNotFoundException.class, () -> componentService.findComponent(-1L));
+ Assertions.assertThrows(ProductNotFoundException.class, () -> productService.findProduct(-1L));
+ Assertions.assertThrows(OrderNotFoundException.class, () -> orderService.findOrder(-1L));
//TestReadAllEmpty
final List newComponents = componentService.findAllComponent();
log.info(newComponents.toString());
+ productService.test();
Assertions.assertEquals(newComponents.size(), 0);
final List newProducts = productService.findAllProduct();