HyeonJun Jeon

Merge branch 'E_campus_login' into 'master'

E campus login



See merge request !1
...@@ -11,7 +11,9 @@ ...@@ -11,7 +11,9 @@
11 "@testing-library/jest-dom": "^5.16.4", 11 "@testing-library/jest-dom": "^5.16.4",
12 "@testing-library/react": "^13.2.0", 12 "@testing-library/react": "^13.2.0",
13 "@testing-library/user-event": "^13.5.0", 13 "@testing-library/user-event": "^13.5.0",
14 + "express": "^4.18.1",
14 "localforage": "^1.10.0", 15 "localforage": "^1.10.0",
16 + "puppeteer": "^14.1.1",
15 "react": "^18.1.0", 17 "react": "^18.1.0",
16 "react-dom": "^18.1.0", 18 "react-dom": "^18.1.0",
17 "react-router-dom": "^6.3.0", 19 "react-router-dom": "^6.3.0",
...@@ -3760,6 +3762,15 @@ ...@@ -3760,6 +3762,15 @@
3760 "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.0.tgz", 3762 "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.0.tgz",
3761 "integrity": "sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==" 3763 "integrity": "sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA=="
3762 }, 3764 },
3765 + "node_modules/@types/yauzl": {
3766 + "version": "2.10.0",
3767 + "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.0.tgz",
3768 + "integrity": "sha512-Cn6WYCm0tXv8p6k+A8PvbDG763EDpBoTzHdA+Q/MF6H3sapGjCm9NzoaJncJS9tUKSuCoDs9XHxYYsQDgxR6kw==",
3769 + "optional": true,
3770 + "dependencies": {
3771 + "@types/node": "*"
3772 + }
3773 + },
3763 "node_modules/@typescript-eslint/eslint-plugin": { 3774 "node_modules/@typescript-eslint/eslint-plugin": {
3764 "version": "5.24.0", 3775 "version": "5.24.0",
3765 "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.24.0.tgz", 3776 "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.24.0.tgz",
...@@ -4821,6 +4832,25 @@ ...@@ -4821,6 +4832,25 @@
4821 "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", 4832 "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
4822 "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" 4833 "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="
4823 }, 4834 },
4835 + "node_modules/base64-js": {
4836 + "version": "1.5.1",
4837 + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz",
4838 + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==",
4839 + "funding": [
4840 + {
4841 + "type": "github",
4842 + "url": "https://github.com/sponsors/feross"
4843 + },
4844 + {
4845 + "type": "patreon",
4846 + "url": "https://www.patreon.com/feross"
4847 + },
4848 + {
4849 + "type": "consulting",
4850 + "url": "https://feross.org/support"
4851 + }
4852 + ]
4853 + },
4824 "node_modules/batch": { 4854 "node_modules/batch": {
4825 "version": "0.6.1", 4855 "version": "0.6.1",
4826 "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", 4856 "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz",
...@@ -4856,6 +4886,16 @@ ...@@ -4856,6 +4886,16 @@
4856 "node": ">=8" 4886 "node": ">=8"
4857 } 4887 }
4858 }, 4888 },
4889 + "node_modules/bl": {
4890 + "version": "4.1.0",
4891 + "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz",
4892 + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==",
4893 + "dependencies": {
4894 + "buffer": "^5.5.0",
4895 + "inherits": "^2.0.4",
4896 + "readable-stream": "^3.4.0"
4897 + }
4898 + },
4859 "node_modules/bluebird": { 4899 "node_modules/bluebird": {
4860 "version": "3.7.2", 4900 "version": "3.7.2",
4861 "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", 4901 "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz",
...@@ -4993,6 +5033,37 @@ ...@@ -4993,6 +5033,37 @@
4993 "node-int64": "^0.4.0" 5033 "node-int64": "^0.4.0"
4994 } 5034 }
4995 }, 5035 },
5036 + "node_modules/buffer": {
5037 + "version": "5.7.1",
5038 + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz",
5039 + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==",
5040 + "funding": [
5041 + {
5042 + "type": "github",
5043 + "url": "https://github.com/sponsors/feross"
5044 + },
5045 + {
5046 + "type": "patreon",
5047 + "url": "https://www.patreon.com/feross"
5048 + },
5049 + {
5050 + "type": "consulting",
5051 + "url": "https://feross.org/support"
5052 + }
5053 + ],
5054 + "dependencies": {
5055 + "base64-js": "^1.3.1",
5056 + "ieee754": "^1.1.13"
5057 + }
5058 + },
5059 + "node_modules/buffer-crc32": {
5060 + "version": "0.2.13",
5061 + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz",
5062 + "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==",
5063 + "engines": {
5064 + "node": "*"
5065 + }
5066 + },
4996 "node_modules/buffer-from": { 5067 "node_modules/buffer-from": {
4997 "version": "1.1.2", 5068 "version": "1.1.2",
4998 "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", 5069 "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz",
...@@ -5170,6 +5241,11 @@ ...@@ -5170,6 +5241,11 @@
5170 "node": ">= 6" 5241 "node": ">= 6"
5171 } 5242 }
5172 }, 5243 },
5244 + "node_modules/chownr": {
5245 + "version": "1.1.4",
5246 + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz",
5247 + "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg=="
5248 + },
5173 "node_modules/chrome-trace-event": { 5249 "node_modules/chrome-trace-event": {
5174 "version": "1.0.3", 5250 "version": "1.0.3",
5175 "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", 5251 "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz",
...@@ -5483,6 +5559,14 @@ ...@@ -5483,6 +5559,14 @@
5483 "node": ">=10" 5559 "node": ">=10"
5484 } 5560 }
5485 }, 5561 },
5562 + "node_modules/cross-fetch": {
5563 + "version": "3.1.5",
5564 + "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.5.tgz",
5565 + "integrity": "sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw==",
5566 + "dependencies": {
5567 + "node-fetch": "2.6.7"
5568 + }
5569 + },
5486 "node_modules/cross-spawn": { 5570 "node_modules/cross-spawn": {
5487 "version": "7.0.3", 5571 "version": "7.0.3",
5488 "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", 5572 "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
...@@ -6098,6 +6182,11 @@ ...@@ -6098,6 +6182,11 @@
6098 "node": ">=0.8.0" 6182 "node": ">=0.8.0"
6099 } 6183 }
6100 }, 6184 },
6185 + "node_modules/devtools-protocol": {
6186 + "version": "0.0.982423",
6187 + "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.982423.tgz",
6188 + "integrity": "sha512-FnVW2nDbjGNw1uD/JRC+9U5768W7e1TfUwqbDTcSsAu1jXFjITSX8w3rkW5FEpHRMPPGpvNSmO1pOpqByiWscA=="
6189 + },
6101 "node_modules/didyoumean": { 6190 "node_modules/didyoumean": {
6102 "version": "1.2.2", 6191 "version": "1.2.2",
6103 "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz", 6192 "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz",
...@@ -6320,6 +6409,14 @@ ...@@ -6320,6 +6409,14 @@
6320 "node": ">= 0.8" 6409 "node": ">= 0.8"
6321 } 6410 }
6322 }, 6411 },
6412 + "node_modules/end-of-stream": {
6413 + "version": "1.4.4",
6414 + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz",
6415 + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==",
6416 + "dependencies": {
6417 + "once": "^1.4.0"
6418 + }
6419 + },
6323 "node_modules/enhanced-resolve": { 6420 "node_modules/enhanced-resolve": {
6324 "version": "5.9.3", 6421 "version": "5.9.3",
6325 "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.9.3.tgz", 6422 "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.9.3.tgz",
...@@ -7289,6 +7386,39 @@ ...@@ -7289,6 +7386,39 @@
7289 } 7386 }
7290 ] 7387 ]
7291 }, 7388 },
7389 + "node_modules/extract-zip": {
7390 + "version": "2.0.1",
7391 + "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz",
7392 + "integrity": "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==",
7393 + "dependencies": {
7394 + "debug": "^4.1.1",
7395 + "get-stream": "^5.1.0",
7396 + "yauzl": "^2.10.0"
7397 + },
7398 + "bin": {
7399 + "extract-zip": "cli.js"
7400 + },
7401 + "engines": {
7402 + "node": ">= 10.17.0"
7403 + },
7404 + "optionalDependencies": {
7405 + "@types/yauzl": "^2.9.1"
7406 + }
7407 + },
7408 + "node_modules/extract-zip/node_modules/get-stream": {
7409 + "version": "5.2.0",
7410 + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz",
7411 + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==",
7412 + "dependencies": {
7413 + "pump": "^3.0.0"
7414 + },
7415 + "engines": {
7416 + "node": ">=8"
7417 + },
7418 + "funding": {
7419 + "url": "https://github.com/sponsors/sindresorhus"
7420 + }
7421 + },
7292 "node_modules/fast-deep-equal": { 7422 "node_modules/fast-deep-equal": {
7293 "version": "3.1.3", 7423 "version": "3.1.3",
7294 "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", 7424 "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
...@@ -7357,6 +7487,14 @@ ...@@ -7357,6 +7487,14 @@
7357 "bser": "2.1.1" 7487 "bser": "2.1.1"
7358 } 7488 }
7359 }, 7489 },
7490 + "node_modules/fd-slicer": {
7491 + "version": "1.1.0",
7492 + "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz",
7493 + "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==",
7494 + "dependencies": {
7495 + "pend": "~1.2.0"
7496 + }
7497 + },
7360 "node_modules/file-entry-cache": { 7498 "node_modules/file-entry-cache": {
7361 "version": "6.0.1", 7499 "version": "6.0.1",
7362 "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", 7500 "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz",
...@@ -7727,6 +7865,11 @@ ...@@ -7727,6 +7865,11 @@
7727 "node": ">= 0.6" 7865 "node": ">= 0.6"
7728 } 7866 }
7729 }, 7867 },
7868 + "node_modules/fs-constants": {
7869 + "version": "1.0.0",
7870 + "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz",
7871 + "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow=="
7872 + },
7730 "node_modules/fs-extra": { 7873 "node_modules/fs-extra": {
7731 "version": "10.1.0", 7874 "version": "10.1.0",
7732 "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", 7875 "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz",
...@@ -8325,6 +8468,25 @@ ...@@ -8325,6 +8468,25 @@
8325 "node": ">=4" 8468 "node": ">=4"
8326 } 8469 }
8327 }, 8470 },
8471 + "node_modules/ieee754": {
8472 + "version": "1.2.1",
8473 + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz",
8474 + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==",
8475 + "funding": [
8476 + {
8477 + "type": "github",
8478 + "url": "https://github.com/sponsors/feross"
8479 + },
8480 + {
8481 + "type": "patreon",
8482 + "url": "https://www.patreon.com/feross"
8483 + },
8484 + {
8485 + "type": "consulting",
8486 + "url": "https://feross.org/support"
8487 + }
8488 + ]
8489 + },
8328 "node_modules/ignore": { 8490 "node_modules/ignore": {
8329 "version": "5.2.0", 8491 "version": "5.2.0",
8330 "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", 8492 "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz",
...@@ -11374,6 +11536,11 @@ ...@@ -11374,6 +11536,11 @@
11374 "mkdirp": "bin/cmd.js" 11536 "mkdirp": "bin/cmd.js"
11375 } 11537 }
11376 }, 11538 },
11539 + "node_modules/mkdirp-classic": {
11540 + "version": "0.5.3",
11541 + "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz",
11542 + "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A=="
11543 + },
11377 "node_modules/ms": { 11544 "node_modules/ms": {
11378 "version": "2.1.2", 11545 "version": "2.1.2",
11379 "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", 11546 "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
...@@ -11429,6 +11596,44 @@ ...@@ -11429,6 +11596,44 @@
11429 "tslib": "^2.0.3" 11596 "tslib": "^2.0.3"
11430 } 11597 }
11431 }, 11598 },
11599 + "node_modules/node-fetch": {
11600 + "version": "2.6.7",
11601 + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz",
11602 + "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==",
11603 + "dependencies": {
11604 + "whatwg-url": "^5.0.0"
11605 + },
11606 + "engines": {
11607 + "node": "4.x || >=6.0.0"
11608 + },
11609 + "peerDependencies": {
11610 + "encoding": "^0.1.0"
11611 + },
11612 + "peerDependenciesMeta": {
11613 + "encoding": {
11614 + "optional": true
11615 + }
11616 + }
11617 + },
11618 + "node_modules/node-fetch/node_modules/tr46": {
11619 + "version": "0.0.3",
11620 + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz",
11621 + "integrity": "sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o="
11622 + },
11623 + "node_modules/node-fetch/node_modules/webidl-conversions": {
11624 + "version": "3.0.1",
11625 + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz",
11626 + "integrity": "sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE="
11627 + },
11628 + "node_modules/node-fetch/node_modules/whatwg-url": {
11629 + "version": "5.0.0",
11630 + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz",
11631 + "integrity": "sha1-lmRU6HZUYuN2RNNib2dCzotwll0=",
11632 + "dependencies": {
11633 + "tr46": "~0.0.3",
11634 + "webidl-conversions": "^3.0.0"
11635 + }
11636 + },
11432 "node_modules/node-forge": { 11637 "node_modules/node-forge": {
11433 "version": "1.3.1", 11638 "version": "1.3.1",
11434 "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz", 11639 "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz",
...@@ -11850,6 +12055,11 @@ ...@@ -11850,6 +12055,11 @@
11850 "node": ">=8" 12055 "node": ">=8"
11851 } 12056 }
11852 }, 12057 },
12058 + "node_modules/pend": {
12059 + "version": "1.2.0",
12060 + "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz",
12061 + "integrity": "sha1-elfrVQpng/kRUzH89GY9XI4AelA="
12062 + },
11853 "node_modules/performance-now": { 12063 "node_modules/performance-now": {
11854 "version": "2.1.0", 12064 "version": "2.1.0",
11855 "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", 12065 "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz",
...@@ -13141,6 +13351,14 @@ ...@@ -13141,6 +13351,14 @@
13141 "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", 13351 "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz",
13142 "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" 13352 "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag=="
13143 }, 13353 },
13354 + "node_modules/progress": {
13355 + "version": "2.0.3",
13356 + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz",
13357 + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==",
13358 + "engines": {
13359 + "node": ">=0.4.0"
13360 + }
13361 + },
13144 "node_modules/promise": { 13362 "node_modules/promise": {
13145 "version": "8.1.0", 13363 "version": "8.1.0",
13146 "resolved": "https://registry.npmjs.org/promise/-/promise-8.1.0.tgz", 13364 "resolved": "https://registry.npmjs.org/promise/-/promise-8.1.0.tgz",
...@@ -13196,11 +13414,25 @@ ...@@ -13196,11 +13414,25 @@
13196 "node": ">= 0.10" 13414 "node": ">= 0.10"
13197 } 13415 }
13198 }, 13416 },
13417 + "node_modules/proxy-from-env": {
13418 + "version": "1.1.0",
13419 + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz",
13420 + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg=="
13421 + },
13199 "node_modules/psl": { 13422 "node_modules/psl": {
13200 "version": "1.8.0", 13423 "version": "1.8.0",
13201 "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", 13424 "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz",
13202 "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==" 13425 "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ=="
13203 }, 13426 },
13427 + "node_modules/pump": {
13428 + "version": "3.0.0",
13429 + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz",
13430 + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==",
13431 + "dependencies": {
13432 + "end-of-stream": "^1.1.0",
13433 + "once": "^1.3.1"
13434 + }
13435 + },
13204 "node_modules/punycode": { 13436 "node_modules/punycode": {
13205 "version": "2.1.1", 13437 "version": "2.1.1",
13206 "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", 13438 "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz",
...@@ -13209,6 +13441,49 @@ ...@@ -13209,6 +13441,49 @@
13209 "node": ">=6" 13441 "node": ">=6"
13210 } 13442 }
13211 }, 13443 },
13444 + "node_modules/puppeteer": {
13445 + "version": "14.1.1",
13446 + "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-14.1.1.tgz",
13447 + "integrity": "sha512-4dC6GYR5YlXTmNO3TbYEHTdVSdml1cVD2Ok/h/f/xSTp4ITVdbRWkMjiOaEKRAhtIl6GqaP7B89zx+hfhcNGMQ==",
13448 + "hasInstallScript": true,
13449 + "dependencies": {
13450 + "cross-fetch": "3.1.5",
13451 + "debug": "4.3.4",
13452 + "devtools-protocol": "0.0.982423",
13453 + "extract-zip": "2.0.1",
13454 + "https-proxy-agent": "5.0.1",
13455 + "pkg-dir": "4.2.0",
13456 + "progress": "2.0.3",
13457 + "proxy-from-env": "1.1.0",
13458 + "rimraf": "3.0.2",
13459 + "tar-fs": "2.1.1",
13460 + "unbzip2-stream": "1.4.3",
13461 + "ws": "8.6.0"
13462 + },
13463 + "engines": {
13464 + "node": ">=14.1.0"
13465 + }
13466 + },
13467 + "node_modules/puppeteer/node_modules/ws": {
13468 + "version": "8.6.0",
13469 + "resolved": "https://registry.npmjs.org/ws/-/ws-8.6.0.tgz",
13470 + "integrity": "sha512-AzmM3aH3gk0aX7/rZLYvjdvZooofDu3fFOzGqcSnQ1tOcTWwhM/o+q++E8mAyVVIyUdajrkzWUGftaVSDLn1bw==",
13471 + "engines": {
13472 + "node": ">=10.0.0"
13473 + },
13474 + "peerDependencies": {
13475 + "bufferutil": "^4.0.1",
13476 + "utf-8-validate": "^5.0.2"
13477 + },
13478 + "peerDependenciesMeta": {
13479 + "bufferutil": {
13480 + "optional": true
13481 + },
13482 + "utf-8-validate": {
13483 + "optional": true
13484 + }
13485 + }
13486 + },
13212 "node_modules/q": { 13487 "node_modules/q": {
13213 "version": "1.5.1", 13488 "version": "1.5.1",
13214 "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", 13489 "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz",
...@@ -14878,6 +15153,32 @@ ...@@ -14878,6 +15153,32 @@
14878 "node": ">=6" 15153 "node": ">=6"
14879 } 15154 }
14880 }, 15155 },
15156 + "node_modules/tar-fs": {
15157 + "version": "2.1.1",
15158 + "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.1.tgz",
15159 + "integrity": "sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==",
15160 + "dependencies": {
15161 + "chownr": "^1.1.1",
15162 + "mkdirp-classic": "^0.5.2",
15163 + "pump": "^3.0.0",
15164 + "tar-stream": "^2.1.4"
15165 + }
15166 + },
15167 + "node_modules/tar-stream": {
15168 + "version": "2.2.0",
15169 + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz",
15170 + "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==",
15171 + "dependencies": {
15172 + "bl": "^4.0.3",
15173 + "end-of-stream": "^1.4.1",
15174 + "fs-constants": "^1.0.0",
15175 + "inherits": "^2.0.3",
15176 + "readable-stream": "^3.1.1"
15177 + },
15178 + "engines": {
15179 + "node": ">=6"
15180 + }
15181 + },
14881 "node_modules/temp-dir": { 15182 "node_modules/temp-dir": {
14882 "version": "2.0.0", 15183 "version": "2.0.0",
14883 "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-2.0.0.tgz", 15184 "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-2.0.0.tgz",
...@@ -15049,6 +15350,11 @@ ...@@ -15049,6 +15350,11 @@
15049 "resolved": "https://registry.npmjs.org/throat/-/throat-6.0.1.tgz", 15350 "resolved": "https://registry.npmjs.org/throat/-/throat-6.0.1.tgz",
15050 "integrity": "sha512-8hmiGIJMDlwjg7dlJ4yKGLK8EsYqKgPWbG3b4wjJddKNwc7N7Dpn08Df4szr/sZdMVeOstrdYSsqzX6BYbcB+w==" 15351 "integrity": "sha512-8hmiGIJMDlwjg7dlJ4yKGLK8EsYqKgPWbG3b4wjJddKNwc7N7Dpn08Df4szr/sZdMVeOstrdYSsqzX6BYbcB+w=="
15051 }, 15352 },
15353 + "node_modules/through": {
15354 + "version": "2.3.8",
15355 + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz",
15356 + "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU="
15357 + },
15052 "node_modules/thunky": { 15358 "node_modules/thunky": {
15053 "version": "1.1.0", 15359 "version": "1.1.0",
15054 "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz", 15360 "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz",
...@@ -15254,6 +15560,15 @@ ...@@ -15254,6 +15560,15 @@
15254 "url": "https://github.com/sponsors/ljharb" 15560 "url": "https://github.com/sponsors/ljharb"
15255 } 15561 }
15256 }, 15562 },
15563 + "node_modules/unbzip2-stream": {
15564 + "version": "1.4.3",
15565 + "resolved": "https://registry.npmjs.org/unbzip2-stream/-/unbzip2-stream-1.4.3.tgz",
15566 + "integrity": "sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg==",
15567 + "dependencies": {
15568 + "buffer": "^5.2.1",
15569 + "through": "^2.3.8"
15570 + }
15571 + },
15257 "node_modules/unicode-canonical-property-names-ecmascript": { 15572 "node_modules/unicode-canonical-property-names-ecmascript": {
15258 "version": "2.0.0", 15573 "version": "2.0.0",
15259 "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", 15574 "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz",
...@@ -16303,6 +16618,15 @@ ...@@ -16303,6 +16618,15 @@
16303 "node": ">=10" 16618 "node": ">=10"
16304 } 16619 }
16305 }, 16620 },
16621 + "node_modules/yauzl": {
16622 + "version": "2.10.0",
16623 + "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz",
16624 + "integrity": "sha1-x+sXyT4RLLEIb6bY5R+wZnt5pfk=",
16625 + "dependencies": {
16626 + "buffer-crc32": "~0.2.3",
16627 + "fd-slicer": "~1.1.0"
16628 + }
16629 + },
16306 "node_modules/yocto-queue": { 16630 "node_modules/yocto-queue": {
16307 "version": "0.1.0", 16631 "version": "0.1.0",
16308 "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", 16632 "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz",
...@@ -18933,6 +19257,15 @@ ...@@ -18933,6 +19257,15 @@
18933 "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.0.tgz", 19257 "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.0.tgz",
18934 "integrity": "sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==" 19258 "integrity": "sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA=="
18935 }, 19259 },
19260 + "@types/yauzl": {
19261 + "version": "2.10.0",
19262 + "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.0.tgz",
19263 + "integrity": "sha512-Cn6WYCm0tXv8p6k+A8PvbDG763EDpBoTzHdA+Q/MF6H3sapGjCm9NzoaJncJS9tUKSuCoDs9XHxYYsQDgxR6kw==",
19264 + "optional": true,
19265 + "requires": {
19266 + "@types/node": "*"
19267 + }
19268 + },
18936 "@typescript-eslint/eslint-plugin": { 19269 "@typescript-eslint/eslint-plugin": {
18937 "version": "5.24.0", 19270 "version": "5.24.0",
18938 "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.24.0.tgz", 19271 "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.24.0.tgz",
...@@ -19698,6 +20031,11 @@ ...@@ -19698,6 +20031,11 @@
19698 "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", 20031 "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
19699 "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" 20032 "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="
19700 }, 20033 },
20034 + "base64-js": {
20035 + "version": "1.5.1",
20036 + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz",
20037 + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA=="
20038 + },
19701 "batch": { 20039 "batch": {
19702 "version": "0.6.1", 20040 "version": "0.6.1",
19703 "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", 20041 "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz",
...@@ -19724,6 +20062,16 @@ ...@@ -19724,6 +20062,16 @@
19724 "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", 20062 "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz",
19725 "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==" 20063 "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA=="
19726 }, 20064 },
20065 + "bl": {
20066 + "version": "4.1.0",
20067 + "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz",
20068 + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==",
20069 + "requires": {
20070 + "buffer": "^5.5.0",
20071 + "inherits": "^2.0.4",
20072 + "readable-stream": "^3.4.0"
20073 + }
20074 + },
19727 "bluebird": { 20075 "bluebird": {
19728 "version": "3.7.2", 20076 "version": "3.7.2",
19729 "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", 20077 "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz",
...@@ -19834,6 +20182,20 @@ ...@@ -19834,6 +20182,20 @@
19834 "node-int64": "^0.4.0" 20182 "node-int64": "^0.4.0"
19835 } 20183 }
19836 }, 20184 },
20185 + "buffer": {
20186 + "version": "5.7.1",
20187 + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz",
20188 + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==",
20189 + "requires": {
20190 + "base64-js": "^1.3.1",
20191 + "ieee754": "^1.1.13"
20192 + }
20193 + },
20194 + "buffer-crc32": {
20195 + "version": "0.2.13",
20196 + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz",
20197 + "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ=="
20198 + },
19837 "buffer-from": { 20199 "buffer-from": {
19838 "version": "1.1.2", 20200 "version": "1.1.2",
19839 "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", 20201 "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz",
...@@ -19953,6 +20315,11 @@ ...@@ -19953,6 +20315,11 @@
19953 } 20315 }
19954 } 20316 }
19955 }, 20317 },
20318 + "chownr": {
20319 + "version": "1.1.4",
20320 + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz",
20321 + "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg=="
20322 + },
19956 "chrome-trace-event": { 20323 "chrome-trace-event": {
19957 "version": "1.0.3", 20324 "version": "1.0.3",
19958 "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", 20325 "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz",
...@@ -20197,6 +20564,14 @@ ...@@ -20197,6 +20564,14 @@
20197 "yaml": "^1.10.0" 20564 "yaml": "^1.10.0"
20198 } 20565 }
20199 }, 20566 },
20567 + "cross-fetch": {
20568 + "version": "3.1.5",
20569 + "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.5.tgz",
20570 + "integrity": "sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw==",
20571 + "requires": {
20572 + "node-fetch": "2.6.7"
20573 + }
20574 + },
20200 "cross-spawn": { 20575 "cross-spawn": {
20201 "version": "7.0.3", 20576 "version": "7.0.3",
20202 "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", 20577 "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
...@@ -20620,6 +20995,11 @@ ...@@ -20620,6 +20995,11 @@
20620 "minimist": "^1.1.1" 20995 "minimist": "^1.1.1"
20621 } 20996 }
20622 }, 20997 },
20998 + "devtools-protocol": {
20999 + "version": "0.0.982423",
21000 + "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.982423.tgz",
21001 + "integrity": "sha512-FnVW2nDbjGNw1uD/JRC+9U5768W7e1TfUwqbDTcSsAu1jXFjITSX8w3rkW5FEpHRMPPGpvNSmO1pOpqByiWscA=="
21002 + },
20623 "didyoumean": { 21003 "didyoumean": {
20624 "version": "1.2.2", 21004 "version": "1.2.2",
20625 "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz", 21005 "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz",
...@@ -20787,6 +21167,14 @@ ...@@ -20787,6 +21167,14 @@
20787 "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", 21167 "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
20788 "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=" 21168 "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k="
20789 }, 21169 },
21170 + "end-of-stream": {
21171 + "version": "1.4.4",
21172 + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz",
21173 + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==",
21174 + "requires": {
21175 + "once": "^1.4.0"
21176 + }
21177 + },
20790 "enhanced-resolve": { 21178 "enhanced-resolve": {
20791 "version": "5.9.3", 21179 "version": "5.9.3",
20792 "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.9.3.tgz", 21180 "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.9.3.tgz",
...@@ -21495,6 +21883,27 @@ ...@@ -21495,6 +21883,27 @@
21495 } 21883 }
21496 } 21884 }
21497 }, 21885 },
21886 + "extract-zip": {
21887 + "version": "2.0.1",
21888 + "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz",
21889 + "integrity": "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==",
21890 + "requires": {
21891 + "@types/yauzl": "^2.9.1",
21892 + "debug": "^4.1.1",
21893 + "get-stream": "^5.1.0",
21894 + "yauzl": "^2.10.0"
21895 + },
21896 + "dependencies": {
21897 + "get-stream": {
21898 + "version": "5.2.0",
21899 + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz",
21900 + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==",
21901 + "requires": {
21902 + "pump": "^3.0.0"
21903 + }
21904 + }
21905 + }
21906 + },
21498 "fast-deep-equal": { 21907 "fast-deep-equal": {
21499 "version": "3.1.3", 21908 "version": "3.1.3",
21500 "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", 21909 "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
...@@ -21556,6 +21965,14 @@ ...@@ -21556,6 +21965,14 @@
21556 "bser": "2.1.1" 21965 "bser": "2.1.1"
21557 } 21966 }
21558 }, 21967 },
21968 + "fd-slicer": {
21969 + "version": "1.1.0",
21970 + "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz",
21971 + "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==",
21972 + "requires": {
21973 + "pend": "~1.2.0"
21974 + }
21975 + },
21559 "file-entry-cache": { 21976 "file-entry-cache": {
21560 "version": "6.0.1", 21977 "version": "6.0.1",
21561 "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", 21978 "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz",
...@@ -21807,6 +22224,11 @@ ...@@ -21807,6 +22224,11 @@
21807 "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", 22224 "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz",
21808 "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=" 22225 "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac="
21809 }, 22226 },
22227 + "fs-constants": {
22228 + "version": "1.0.0",
22229 + "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz",
22230 + "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow=="
22231 + },
21810 "fs-extra": { 22232 "fs-extra": {
21811 "version": "10.1.0", 22233 "version": "10.1.0",
21812 "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", 22234 "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz",
...@@ -22240,6 +22662,11 @@ ...@@ -22240,6 +22662,11 @@
22240 "harmony-reflect": "^1.4.6" 22662 "harmony-reflect": "^1.4.6"
22241 } 22663 }
22242 }, 22664 },
22665 + "ieee754": {
22666 + "version": "1.2.1",
22667 + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz",
22668 + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA=="
22669 + },
22243 "ignore": { 22670 "ignore": {
22244 "version": "5.2.0", 22671 "version": "5.2.0",
22245 "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", 22672 "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz",
...@@ -24450,6 +24877,11 @@ ...@@ -24450,6 +24877,11 @@
24450 "minimist": "^1.2.6" 24877 "minimist": "^1.2.6"
24451 } 24878 }
24452 }, 24879 },
24880 + "mkdirp-classic": {
24881 + "version": "0.5.3",
24882 + "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz",
24883 + "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A=="
24884 + },
24453 "ms": { 24885 "ms": {
24454 "version": "2.1.2", 24886 "version": "2.1.2",
24455 "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", 24887 "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
...@@ -24493,6 +24925,35 @@ ...@@ -24493,6 +24925,35 @@
24493 "tslib": "^2.0.3" 24925 "tslib": "^2.0.3"
24494 } 24926 }
24495 }, 24927 },
24928 + "node-fetch": {
24929 + "version": "2.6.7",
24930 + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz",
24931 + "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==",
24932 + "requires": {
24933 + "whatwg-url": "^5.0.0"
24934 + },
24935 + "dependencies": {
24936 + "tr46": {
24937 + "version": "0.0.3",
24938 + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz",
24939 + "integrity": "sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o="
24940 + },
24941 + "webidl-conversions": {
24942 + "version": "3.0.1",
24943 + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz",
24944 + "integrity": "sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE="
24945 + },
24946 + "whatwg-url": {
24947 + "version": "5.0.0",
24948 + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz",
24949 + "integrity": "sha1-lmRU6HZUYuN2RNNib2dCzotwll0=",
24950 + "requires": {
24951 + "tr46": "~0.0.3",
24952 + "webidl-conversions": "^3.0.0"
24953 + }
24954 + }
24955 + }
24956 + },
24496 "node-forge": { 24957 "node-forge": {
24497 "version": "1.3.1", 24958 "version": "1.3.1",
24498 "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz", 24959 "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz",
...@@ -24788,6 +25249,11 @@ ...@@ -24788,6 +25249,11 @@
24788 "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", 25249 "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz",
24789 "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==" 25250 "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw=="
24790 }, 25251 },
25252 + "pend": {
25253 + "version": "1.2.0",
25254 + "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz",
25255 + "integrity": "sha1-elfrVQpng/kRUzH89GY9XI4AelA="
25256 + },
24791 "performance-now": { 25257 "performance-now": {
24792 "version": "2.1.0", 25258 "version": "2.1.0",
24793 "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", 25259 "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz",
...@@ -25574,6 +26040,11 @@ ...@@ -25574,6 +26040,11 @@
25574 "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", 26040 "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz",
25575 "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" 26041 "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag=="
25576 }, 26042 },
26043 + "progress": {
26044 + "version": "2.0.3",
26045 + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz",
26046 + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA=="
26047 + },
25577 "promise": { 26048 "promise": {
25578 "version": "8.1.0", 26049 "version": "8.1.0",
25579 "resolved": "https://registry.npmjs.org/promise/-/promise-8.1.0.tgz", 26050 "resolved": "https://registry.npmjs.org/promise/-/promise-8.1.0.tgz",
...@@ -25624,16 +26095,57 @@ ...@@ -25624,16 +26095,57 @@
25624 } 26095 }
25625 } 26096 }
25626 }, 26097 },
26098 + "proxy-from-env": {
26099 + "version": "1.1.0",
26100 + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz",
26101 + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg=="
26102 + },
25627 "psl": { 26103 "psl": {
25628 "version": "1.8.0", 26104 "version": "1.8.0",
25629 "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", 26105 "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz",
25630 "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==" 26106 "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ=="
25631 }, 26107 },
26108 + "pump": {
26109 + "version": "3.0.0",
26110 + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz",
26111 + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==",
26112 + "requires": {
26113 + "end-of-stream": "^1.1.0",
26114 + "once": "^1.3.1"
26115 + }
26116 + },
25632 "punycode": { 26117 "punycode": {
25633 "version": "2.1.1", 26118 "version": "2.1.1",
25634 "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", 26119 "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz",
25635 "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" 26120 "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A=="
25636 }, 26121 },
26122 + "puppeteer": {
26123 + "version": "14.1.1",
26124 + "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-14.1.1.tgz",
26125 + "integrity": "sha512-4dC6GYR5YlXTmNO3TbYEHTdVSdml1cVD2Ok/h/f/xSTp4ITVdbRWkMjiOaEKRAhtIl6GqaP7B89zx+hfhcNGMQ==",
26126 + "requires": {
26127 + "cross-fetch": "3.1.5",
26128 + "debug": "4.3.4",
26129 + "devtools-protocol": "0.0.982423",
26130 + "extract-zip": "2.0.1",
26131 + "https-proxy-agent": "5.0.1",
26132 + "pkg-dir": "4.2.0",
26133 + "progress": "2.0.3",
26134 + "proxy-from-env": "1.1.0",
26135 + "rimraf": "3.0.2",
26136 + "tar-fs": "2.1.1",
26137 + "unbzip2-stream": "1.4.3",
26138 + "ws": "8.6.0"
26139 + },
26140 + "dependencies": {
26141 + "ws": {
26142 + "version": "8.6.0",
26143 + "resolved": "https://registry.npmjs.org/ws/-/ws-8.6.0.tgz",
26144 + "integrity": "sha512-AzmM3aH3gk0aX7/rZLYvjdvZooofDu3fFOzGqcSnQ1tOcTWwhM/o+q++E8mAyVVIyUdajrkzWUGftaVSDLn1bw==",
26145 + "requires": {}
26146 + }
26147 + }
26148 + },
25637 "q": { 26149 "q": {
25638 "version": "1.5.1", 26150 "version": "1.5.1",
25639 "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", 26151 "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz",
...@@ -26872,6 +27384,29 @@ ...@@ -26872,6 +27384,29 @@
26872 "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", 27384 "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz",
26873 "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==" 27385 "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ=="
26874 }, 27386 },
27387 + "tar-fs": {
27388 + "version": "2.1.1",
27389 + "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.1.tgz",
27390 + "integrity": "sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==",
27391 + "requires": {
27392 + "chownr": "^1.1.1",
27393 + "mkdirp-classic": "^0.5.2",
27394 + "pump": "^3.0.0",
27395 + "tar-stream": "^2.1.4"
27396 + }
27397 + },
27398 + "tar-stream": {
27399 + "version": "2.2.0",
27400 + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz",
27401 + "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==",
27402 + "requires": {
27403 + "bl": "^4.0.3",
27404 + "end-of-stream": "^1.4.1",
27405 + "fs-constants": "^1.0.0",
27406 + "inherits": "^2.0.3",
27407 + "readable-stream": "^3.1.1"
27408 + }
27409 + },
26875 "temp-dir": { 27410 "temp-dir": {
26876 "version": "2.0.0", 27411 "version": "2.0.0",
26877 "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-2.0.0.tgz", 27412 "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-2.0.0.tgz",
...@@ -26992,6 +27527,11 @@ ...@@ -26992,6 +27527,11 @@
26992 "resolved": "https://registry.npmjs.org/throat/-/throat-6.0.1.tgz", 27527 "resolved": "https://registry.npmjs.org/throat/-/throat-6.0.1.tgz",
26993 "integrity": "sha512-8hmiGIJMDlwjg7dlJ4yKGLK8EsYqKgPWbG3b4wjJddKNwc7N7Dpn08Df4szr/sZdMVeOstrdYSsqzX6BYbcB+w==" 27528 "integrity": "sha512-8hmiGIJMDlwjg7dlJ4yKGLK8EsYqKgPWbG3b4wjJddKNwc7N7Dpn08Df4szr/sZdMVeOstrdYSsqzX6BYbcB+w=="
26994 }, 27529 },
27530 + "through": {
27531 + "version": "2.3.8",
27532 + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz",
27533 + "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU="
27534 + },
26995 "thunky": { 27535 "thunky": {
26996 "version": "1.1.0", 27536 "version": "1.1.0",
26997 "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz", 27537 "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz",
...@@ -27148,6 +27688,15 @@ ...@@ -27148,6 +27688,15 @@
27148 "which-boxed-primitive": "^1.0.2" 27688 "which-boxed-primitive": "^1.0.2"
27149 } 27689 }
27150 }, 27690 },
27691 + "unbzip2-stream": {
27692 + "version": "1.4.3",
27693 + "resolved": "https://registry.npmjs.org/unbzip2-stream/-/unbzip2-stream-1.4.3.tgz",
27694 + "integrity": "sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg==",
27695 + "requires": {
27696 + "buffer": "^5.2.1",
27697 + "through": "^2.3.8"
27698 + }
27699 + },
27151 "unicode-canonical-property-names-ecmascript": { 27700 "unicode-canonical-property-names-ecmascript": {
27152 "version": "2.0.0", 27701 "version": "2.0.0",
27153 "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", 27702 "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz",
...@@ -27966,6 +28515,15 @@ ...@@ -27966,6 +28515,15 @@
27966 "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", 28515 "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz",
27967 "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==" 28516 "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w=="
27968 }, 28517 },
28518 + "yauzl": {
28519 + "version": "2.10.0",
28520 + "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz",
28521 + "integrity": "sha1-x+sXyT4RLLEIb6bY5R+wZnt5pfk=",
28522 + "requires": {
28523 + "buffer-crc32": "~0.2.3",
28524 + "fd-slicer": "~1.1.0"
28525 + }
28526 + },
27969 "yocto-queue": { 28527 "yocto-queue": {
27970 "version": "0.1.0", 28528 "version": "0.1.0",
27971 "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", 28529 "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz",
......
...@@ -6,7 +6,9 @@ ...@@ -6,7 +6,9 @@
6 "@testing-library/jest-dom": "^5.16.4", 6 "@testing-library/jest-dom": "^5.16.4",
7 "@testing-library/react": "^13.2.0", 7 "@testing-library/react": "^13.2.0",
8 "@testing-library/user-event": "^13.5.0", 8 "@testing-library/user-event": "^13.5.0",
9 + "express": "^4.18.1",
9 "localforage": "^1.10.0", 10 "localforage": "^1.10.0",
11 + "puppeteer": "^14.1.1",
10 "react": "^18.1.0", 12 "react": "^18.1.0",
11 "react-dom": "^18.1.0", 13 "react-dom": "^18.1.0",
12 "react-router-dom": "^6.3.0", 14 "react-router-dom": "^6.3.0",
......
1 -function login(id, pw) { 1 +const puppeteer = require("puppeteer");
2 - return `I got data { id:"${id}" pw:"${pw}" }`; 2 +//use puppeteer
3 +
4 +function setTimeoutPromise(ms) {
5 + return new Promise((resolve, reject) => {
6 + setTimeout(() => resolve(), ms);
7 + });
8 +}
9 +
10 +async function loglogin(id, pw) {
11 + try{
12 + //for visibility, headless: false
13 + const browser = await puppeteer.launch({headless: false, args:['--window-size=1920,1080']});
14 +
15 + const page = await browser.newPage();
16 + await page.setViewport({
17 + width:1920,
18 + height:1080
19 + })
20 + await page.goto('https://e-campus.khu.ac.kr/xn-sso/login.php?auto_login=&sso_only=&cvs_lgn=&return_url=https%3A%2F%2Fe-campus.khu.ac.kr%2Fxn-sso%2Fgw-cb.php%3Ffrom%3D%26login_type%3Dstandalone%26return_url%3Dhttps%253A%252F%252Fe-campus.khu.ac.kr%252Flogin%252Fcallback');
21 + await page.type("#login_user_id", id);
22 + await page.type("#login_user_password", pw);
23 +
24 + //press the login button on E_Campus homepage
25 + await page.click('#form1 > div > div.login_btn > a > span');
26 + await page.waitForTimeout(500);
27 + await setTimeoutPromise(1000);
28 +
29 + //When login is failed, return [id, pw, message] -> ["", "", "Incorrect~"]
30 + if(page.url() === 'https://e-campus.khu.ac.kr/xn-sso/gw-cb.php?from=&login_type=standalone&return_url=https%3A%2F%2Fe-campus.khu.ac.kr%2Flogin%2Fcallback'){
31 + return ["", "", "Incorrect user ID or password."];
32 + }
33 + else {
34 + // return [id, pw, `I got data { id:"${id}" pw:"${pw}" }`];
35 + await peedGet(page);
36 + await page.waitForTimeout(3000);
37 + await page.click('body > div:nth-child(9) > div.ui-dialog-titlebar.ui-widget-header.ui-corner-all.ui-helper-clearfix > button > span');
38 + await subjectGet(page);
39 + }
40 + }catch(err){
41 + console.log(err)
42 + }
43 +}
44 +
45 +//function that get your peed for your Ecampus calendar
46 +async function peedGet(page) {
47 + await page.waitForTimeout(5000);
48 + // await page.goto('https://khcanvas.khu.ac.kr');
49 + await page.click('#visual > div > div.xn-main-login-container > div:nth-child(2) > div.xn-main-link-wrap.xn-main-lms-link-wrap > a');
50 + await page.waitForTimeout(1000);
51 + await page.click('#global_nav_calendar_link > div.menu-item-icon-container > svg');
52 + await page.waitForTimeout(10000);
53 + await page.click('#calendar-feed > button');
54 + let data = {};
55 + let temp = await page.$('#calendar-feed-box-lower > a');
56 + data.name = await page.evaluate((data) => {
57 + return data.textContent;
58 + }, temp);
59 + data.link = await page.evaluate((data) => {
60 + return data.href;
61 + }, temp);
62 +
63 + console.log(Promise.resolve(data));
64 + return Promise.resolve(data);
65 +}
66 +
67 +
68 +async function subjectGet(page) {
69 + await page.waitForTimeout(5000);
70 + await page.click('#global_nav_courses_link > div.menu-item-icon-container > svg')
71 + await page.waitForTimeout(5000);
72 + let data= [];
73 + const number = await page.$$eval("#nav-tray-portal > span > span > div > div > div > div > div > ul:nth-child(3) > li", (data) => data.length);
74 + for (let index = 0; index < number; index++) {
75 + data.push(await getOne(page, index + 1));
76 + }
77 + console.log(Promise.resolve(data));
78 +}
79 +
80 +async function getOne(page, index) {
81 + let data = {};
82 + let temp = await page.$("#nav-tray-portal > span > span > div > div > div > div > div > ul:nth-child(3) > li:nth-child(" + index + ") > a");
83 + data.name = await page.evaluate((data) => {
84 + return data.textContent;
85 + }, temp);
86 + data.link = await page.evaluate((data) => {
87 + return data.href;
88 + }, temp);
89 + // data.subjectName = await page.$eval("#nav-tray-portal > span > span > div > div > div > div > div > ul:nth-child(3) > li:nth-child(" + index + ") > a", (data) => data.textContent);
90 + // data.subjectLink = await page.$eval("#nav-tray-portal > span > span > div > div > div > div > div > ul:nth-child(3) > li:nth-child(" + index + ") > a", (data) => data.href);
91 + return Promise.resolve(data);
3 } 92 }
4 93
94 +
95 +// function that contact E_Campus
96 +// if your account is correct, value = Promise {
97 +// { name: '캘린더 피드를 보려면 클릭하세요.',
98 +// link: 'https://khcanvas.khu.ac.kr/feeds/calendars/user_~~~.ics'
99 +// }
100 +//}
101 +// if your account is incorrect, value = [ '', '', 'Incorrect user ID or password.' ]
102 +async function login(id, pw) {
103 + await setTimeoutPromise(1000);
104 +try {
105 + // value has the list ["","","Incorrect~"]
106 + const value = await loglogin(id, pw);
107 + console.log(value);
108 +} catch (e) {
109 + console.error(e);
110 + }
111 +}
112 +
113 +login("2021105253", "qtw@@04271");
114 +
5 export { login }; 115 export { login };
......
1 +//The prototype
2 +// const puppeteer = require("puppeteer");
3 +// const crawler = async() => {
4 +// try{
5 +// const browser = await puppeteer.launch({headless: false, args:['--window-size=1920,1080']});
6 +// // for observing the process of login, headless -> false
7 +// const page = await browser.newPage();
8 +// await page.setViewport({
9 +// width:1920,
10 +// height:1080
11 +// })
12 +// await page.goto('https://e-campus.khu.ac.kr/xn-sso/login.php?auto_login=&sso_only=&cvs_lgn=&return_url=https%3A%2F%2Fe-campus.khu.ac.kr%2Fxn-sso%2Fgw-cb.php%3Ffrom%3D%26login_type%3Dstandalone%26return_url%3Dhttps%253A%252F%252Fe-campus.khu.ac.kr%252Flogin%252Fcallback');
13 +// await page.evaluate(() => {
14 +// document.querySelector("#login_user_id").value = //자신의 E_Campus account id
15 +// document.querySelector("#login_user_password").value = // pw
16 +// document.querySelector('#form1 > div > div.login_btn > a > span').click();
17 +// })
18 +// }catch(err){
19 +// console.log(err)
20 +// }
21 +// }
22 +// crawler();
23 +
24 +
25 +//The test on nodejs (evaluate version for using input data)
26 +const puppeteer = require("puppeteer");
27 +//Example for not using user_input_login_information
28 +const id = "lorem";
29 +const pw = "lorem";
30 +const informationList = new Object();
31 +
32 +function setTimeoutPromise(ms) {
33 + return new Promise((resolve, reject) => {
34 + setTimeout(() => resolve(), ms);
35 + });
36 +}
37 +
38 +async function loglogin(id, pw) {
39 + try{
40 + const browser = await puppeteer.launch({headless: false, args:['--window-size=1920,1080']});
41 + const page = await browser.newPage();
42 + await page.setViewport({
43 + width:1920,
44 + height:1080
45 + })
46 + await page.goto('https://e-campus.khu.ac.kr/xn-sso/login.php?auto_login=&sso_only=&cvs_lgn=&return_url=https%3A%2F%2Fe-campus.khu.ac.kr%2Fxn-sso%2Fgw-cb.php%3Ffrom%3D%26login_type%3Dstandalone%26return_url%3Dhttps%253A%252F%252Fe-campus.khu.ac.kr%252Flogin%252Fcallback');
47 + await page.type("#login_user_id", id);
48 + await page.type("#login_user_password", pw);
49 + await page.click('#form1 > div > div.login_btn > a > span');
50 + await page.waitForTimeout(500);
51 + await setTimeoutPromise(1000);
52 +
53 + if(page.url() === 'https://e-campus.khu.ac.kr/xn-sso/gw-cb.php?from=&login_type=standalone&return_url=https%3A%2F%2Fe-campus.khu.ac.kr%2Flogin%2Fcallback'){
54 + return ["", "", "Incorrect user ID or password."];
55 + }
56 + else {
57 + return [id, pw, `I got data { id:"${id}" pw:"${pw}" }`];
58 + }
59 + }catch(err){
60 + console.log(err)
61 + }
62 +}
63 +async function login(id, pw) {
64 + await setTimeoutPromise(1000);
65 + try {
66 + const value = await loglogin(id, pw);
67 + // promise1.then
68 + console.log("Id : "+ value[0] +", password : " + value[1] + ", message : " + value[2]);
69 + return value[2];
70 +
71 +
72 + } catch (e) {
73 + console.error(e);
74 + }
75 +}
76 +
77 +login(id, pw);
78 +//[id : , pw : , message : "Incorrect user ID or password."]
79 +
1 +const puppeteer = require("puppeteer");
2 +//use puppeteer
3 +
4 +function setTimeoutPromise(ms) {
5 + return new Promise((resolve, reject) => {
6 + setTimeout(() => resolve(), ms);
7 + });
8 +}
9 +
10 +async function loglogin(id, pw) {
11 + try{
12 + //for visibility, headless: false
13 + const browser = await puppeteer.launch({headless: false, args:['--window-size=1920,1080']});
14 +
15 + const page = await browser.newPage();
16 + await page.setViewport({
17 + width:1920,
18 + height:1080
19 + })
20 + await page.goto('https://e-campus.khu.ac.kr/xn-sso/login.php?auto_login=&sso_only=&cvs_lgn=&return_url=https%3A%2F%2Fe-campus.khu.ac.kr%2Fxn-sso%2Fgw-cb.php%3Ffrom%3D%26login_type%3Dstandalone%26return_url%3Dhttps%253A%252F%252Fe-campus.khu.ac.kr%252Flogin%252Fcallback');
21 + await page.type("#login_user_id", id);
22 + await page.type("#login_user_password", pw);
23 +
24 + //press the login button on E_Campus homepage
25 + await page.click('#form1 > div > div.login_btn > a > span');
26 + await page.waitForTimeout(500);
27 + await setTimeoutPromise(1000);
28 +
29 + //When login is failed, return [id, pw, message] -> ["", "", "Incorrect~"]
30 + if(page.url() === 'https://e-campus.khu.ac.kr/xn-sso/gw-cb.php?from=&login_type=standalone&return_url=https%3A%2F%2Fe-campus.khu.ac.kr%2Flogin%2Fcallback'){
31 + return ["", "", "Incorrect user ID or password."];
32 + }
33 + else {
34 + // return [id, pw, `I got data { id:"${id}" pw:"${pw}" }`];
35 + await peedGet(page);
36 + await page.waitForTimeout(3000);
37 + await page.click('body > div:nth-child(9) > div.ui-dialog-titlebar.ui-widget-header.ui-corner-all.ui-helper-clearfix > button > span');
38 + await subjectGet(page);
39 + }
40 + }catch(err){
41 + console.log(err)
42 + }
43 +}
44 +
45 +//function that get your peed for your Ecampus calendar
46 +async function peedGet(page) {
47 + await page.waitForTimeout(5000);
48 + // await page.goto('https://khcanvas.khu.ac.kr');
49 + await page.click('#visual > div > div.xn-main-login-container > div:nth-child(2) > div.xn-main-link-wrap.xn-main-lms-link-wrap > a');
50 + await page.waitForTimeout(1000);
51 + await page.click('#global_nav_calendar_link > div.menu-item-icon-container > svg');
52 + await page.waitForTimeout(10000);
53 + await page.click('#calendar-feed > button');
54 + let data = {};
55 + let temp = await page.$('#calendar-feed-box-lower > a');
56 + data.name = await page.evaluate((data) => {
57 + return data.textContent;
58 + }, temp);
59 + data.link = await page.evaluate((data) => {
60 + return data.href;
61 + }, temp);
62 +
63 + console.log(Promise.resolve(data));
64 + return Promise.resolve(data);
65 +}
66 +
67 +
68 +async function subjectGet(page) {
69 + await page.waitForTimeout(5000);
70 + await page.click('#global_nav_courses_link > div.menu-item-icon-container > svg')
71 + await page.waitForTimeout(5000);
72 + let data= [];
73 + const number = await page.$$eval("#nav-tray-portal > span > span > div > div > div > div > div > ul:nth-child(3) > li", (data) => data.length);
74 + for (let index = 0; index < number; index++) {
75 + data.push(await getOne(page, index + 1));
76 + }
77 + console.log(Promise.resolve(data));
78 +}
79 +
80 +async function getOne(page, index) {
81 + let data = {};
82 + let temp = await page.$("#nav-tray-portal > span > span > div > div > div > div > div > ul:nth-child(3) > li:nth-child(" + index + ") > a");
83 + data.name = await page.evaluate((data) => {
84 + return data.textContent;
85 + }, temp);
86 + data.link = await page.evaluate((data) => {
87 + return data.href;
88 + }, temp);
89 + // data.subjectName = await page.$eval("#nav-tray-portal > span > span > div > div > div > div > div > ul:nth-child(3) > li:nth-child(" + index + ") > a", (data) => data.textContent);
90 + // data.subjectLink = await page.$eval("#nav-tray-portal > span > span > div > div > div > div > div > ul:nth-child(3) > li:nth-child(" + index + ") > a", (data) => data.href);
91 + return Promise.resolve(data);
92 +}
93 +
94 +
95 +// function that contact E_Campus
96 +// if your account is correct, value = Promise {
97 +// { name: '캘린더 피드를 보려면 클릭하세요.',
98 +// link: 'https://khcanvas.khu.ac.kr/feeds/calendars/user_~~~.ics'
99 +// }
100 +//}
101 +// if your account is incorrect, value = [ '', '', 'Incorrect user ID or password.' ]
102 +async function login(id, pw) {
103 + await setTimeoutPromise(1000);
104 +try {
105 + // value has the list ["","","Incorrect~"]
106 + const value = await loglogin(id, pw);
107 + console.log(value);
108 +} catch (e) {
109 + console.error(e);
110 + }
111 +}
112 +
113 +login("2021105253", "qtw@@04271");
...\ No newline at end of file ...\ No newline at end of file