From 760917e31c7204711327b3293670227aaf0d0658 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Edixon=20Pi=C3=B1a?= Date: Wed, 4 Jan 2023 19:11:52 -0400 Subject: [PATCH] project start: create server http with endpoint main - create structure of folders - add contrllers, services, and routes --- .gitignore | 0 .vscode/extensions.json | 8 + .vscode/settings.json | 9 + deno.jsonc | 19 ++ deno.lock | 427 +++++++++++++++++++++++++++++ src/controllers/jobs.controller.ts | 65 +++++ src/main.ts | 9 + src/routes/index.ts | 8 + src/services/Scraper.service.ts | 17 ++ src/services/Server.service.ts | 32 +++ 10 files changed, 594 insertions(+) create mode 100644 .gitignore create mode 100644 .vscode/extensions.json create mode 100644 .vscode/settings.json create mode 100644 deno.jsonc create mode 100644 deno.lock create mode 100644 src/controllers/jobs.controller.ts create mode 100644 src/main.ts create mode 100644 src/routes/index.ts create mode 100644 src/services/Scraper.service.ts create mode 100644 src/services/Server.service.ts diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..e69de29 diff --git a/.vscode/extensions.json b/.vscode/extensions.json new file mode 100644 index 0000000..93c9578 --- /dev/null +++ b/.vscode/extensions.json @@ -0,0 +1,8 @@ +{ + "recommendations": [ + "denoland.vscode-deno", + "rangav.vscode-thunder-client", + "dzannotti.vscode-babel-coloring", + "xabikos.javascriptsnippets" + ] +} diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..39ea4ad --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,9 @@ +{ + "deno.enable": true, + "editor.formatOnSave": true, + "[typescript]": { + "editor.defaultFormatter": "denoland.vscode-deno" + }, + "deno.config": "./deno.jsonc", + "discord.enabled": true +} diff --git a/deno.jsonc b/deno.jsonc new file mode 100644 index 0000000..9662eb1 --- /dev/null +++ b/deno.jsonc @@ -0,0 +1,19 @@ +{ + "tasks": { + "dev": "deno run --watch --allow-net src/main.ts" + }, + "fmt": { + "files": { + "include": [ + "src/" + ] + }, + "options": { + "useTabs": true, + "lineWidth": 120, + "indentWidth": 2, + "singleQuote": true, + "proseWrap": "preserve" + } + } +} diff --git a/deno.lock b/deno.lock new file mode 100644 index 0000000..4c9c0ad --- /dev/null +++ b/deno.lock @@ -0,0 +1,427 @@ +{ + "version": "2", + "remote": { + "https://deno.land/std@0.125.0/_deno_unstable.ts": "1cb49fd91da8dba86043d461a5d74a8c0c45406b102ef46e17231b1e8cd2e941", + "https://deno.land/std@0.125.0/_util/assert.ts": "6396c1bd0361c4939e7f32f9b03efffcd04b640a1b206ed67058553d6cb59cc4", + "https://deno.land/std@0.125.0/_util/os.ts": "49b92edea1e82ba295ec946de8ffd956ed123e2948d9bd1d3e901b04e4307617", + "https://deno.land/std@0.125.0/async/deadline.ts": "edbdf6cd7a5e3337c4c24c9b616491f8f1d61d36fc415d5d5b4af33557de0d23", + "https://deno.land/std@0.125.0/async/debounce.ts": "3cf9306b4e9038ee3238111e338f412ecf3541b1a97ba9fc1f960be8af5a5f39", + "https://deno.land/std@0.125.0/async/deferred.ts": "677692a2399d4cabbc45e06abe4f585afd6196c59e24a98edb866598af9f0eef", + "https://deno.land/std@0.125.0/async/delay.ts": "f38013c800f5129b14fdbf41fb4f4fbaf9525f69f4266946e14d0cf57c830b0c", + "https://deno.land/std@0.125.0/async/mod.ts": "a28709190a1966cb50e5815ef269bb588ee192373cde73b1096641820dc52a36", + "https://deno.land/std@0.125.0/async/mux_async_iterator.ts": "35561f258d32c77170f9d1faf3d650890fb6502d5fe12f505c050b4ea1aee899", + "https://deno.land/std@0.125.0/async/pool.ts": "97b0dd27c69544e374df857a40902e74e39532f226005543eabacb551e277082", + "https://deno.land/std@0.125.0/async/tee.ts": "518c7bfd5184c8cd92b47115026a6a2243e81d83e2c3e71c2aa5cdb5988998b1", + "https://deno.land/std@0.125.0/bytes/bytes_list.ts": "cfe63225fc153a1ae8f18c1d68d979e131906487664719d92771642b6587b11c", + "https://deno.land/std@0.125.0/bytes/equals.ts": "6f38a72d4a75a1232fe984e5fb362b962c2e9bec6385f4ca13252e1ca53dba00", + "https://deno.land/std@0.125.0/bytes/mod.ts": "ed5c42feb746c3709d186787346004f97301dc076b33434653e451efd8efcf6a", + "https://deno.land/std@0.125.0/encoding/_yaml/dumper/dumper.ts": "51998d88c46f2720bf6c2d16416873a0501f69ea8648faf270cba41ad54a5580", + "https://deno.land/std@0.125.0/encoding/_yaml/dumper/dumper_state.ts": "3c1bc8519c1832f0f136856881b97f0b42f64b7968767dbc36b8b0b6cae963dc", + "https://deno.land/std@0.125.0/encoding/_yaml/error.ts": "1bc6abd61524c55a1258c4c5b57191ef96c337d3952604beb55f380ad18ac9d4", + "https://deno.land/std@0.125.0/encoding/_yaml/loader/loader.ts": "d429d545bfed666f2e00572b6694eb70f6c7639926ff4889524e676eeccf9a8b", + "https://deno.land/std@0.125.0/encoding/_yaml/loader/loader_state.ts": "59124e56d864274ce4043dca8bf63e937c6e960e4ad120465e424b38f3469b2d", + "https://deno.land/std@0.125.0/encoding/_yaml/mark.ts": "7f67f43755b2602fefe52012eb3ab627880da97edd0f6c00f916ceb2ddb1b5d1", + "https://deno.land/std@0.125.0/encoding/_yaml/parse.ts": "8f362dc01401099263d73a4bfa00bc90ea456d202507d62a11dfcfeac74484f5", + "https://deno.land/std@0.125.0/encoding/_yaml/schema.ts": "83717fbf829f1caba84ff02e468c8792c47491fd202b1d95776ed0d8f58ea559", + "https://deno.land/std@0.125.0/encoding/_yaml/schema/core.ts": "bcb47a389d596369fbfccf73a6b221ac3ca5440149b4f6df1e707f2efc6854ef", + "https://deno.land/std@0.125.0/encoding/_yaml/schema/default.ts": "8b6bd9cb1cab07a3397e1cc3843edba6ad40d1bd15687c1f56cd977da834d984", + "https://deno.land/std@0.125.0/encoding/_yaml/schema/extended.ts": "5e0bfd9a28c7a82ba40fc7ff7890df7469ec85390320349974acbc627ae1be88", + "https://deno.land/std@0.125.0/encoding/_yaml/schema/failsafe.ts": "7254a9ca0dff8f30377098622812e55c4535aaf352fecb4ec51939e596bd74e7", + "https://deno.land/std@0.125.0/encoding/_yaml/schema/json.ts": "2205d0d3d3377de56f92ac0f4a82bf561ea0d7b86eb195c9f0c32c7c7871d78f", + "https://deno.land/std@0.125.0/encoding/_yaml/schema/mod.ts": "6769df6082aceee9849f71168f4353ba4f92e4a2a5a429a422debac13a593d4e", + "https://deno.land/std@0.125.0/encoding/_yaml/state.ts": "374b8dc170417beccb364e543b25eef73576196f4a526836bb3a621b87a204a3", + "https://deno.land/std@0.125.0/encoding/_yaml/stringify.ts": "ec15035c1928f96f4e42c0a0e9f3082512e294fd6b8ff6a0403a3ee9282f69aa", + "https://deno.land/std@0.125.0/encoding/_yaml/type.ts": "95ad0cdbab49343b1527ebc7762c477726c34702438375be6781b44e03e9fcfc", + "https://deno.land/std@0.125.0/encoding/_yaml/type/binary.ts": "8ae1bdeebe090133b1d1e1ef8427d5ea03f8b6f8944bd2eca578c81330700b0a", + "https://deno.land/std@0.125.0/encoding/_yaml/type/bool.ts": "95c030531adc3d66a59979dc25c2fcdeb1f58ae40a91d6f9e9a537af0fd2b5a4", + "https://deno.land/std@0.125.0/encoding/_yaml/type/float.ts": "0c39a6a3bb7cd90178c5bcdeb73a7b6865482db5b8b0495883289a8bc2d541fb", + "https://deno.land/std@0.125.0/encoding/_yaml/type/function.ts": "b5642dda5ef8d47c0325a2b89a022cbce3be45ba21f8c4f9202364d967c6b3e5", + "https://deno.land/std@0.125.0/encoding/_yaml/type/int.ts": "7197cba96ad8ad3c596ca34a364dacdf91ef396c462c6c2daecbdec056353f3d", + "https://deno.land/std@0.125.0/encoding/_yaml/type/map.ts": "78bf5447d2e3f79d59bf7cb63a76ca7797854a0d8e2154c6fd35775c4e5c8c61", + "https://deno.land/std@0.125.0/encoding/_yaml/type/merge.ts": "094b272e6087c6aef39cd9617fa6603ec934e507faad6c276d293e2734f9b083", + "https://deno.land/std@0.125.0/encoding/_yaml/type/mod.ts": "b2f267dc0b0296cf8f6109aa129e2cf6d1e1f8c59f8903f0330c18749eca2d3c", + "https://deno.land/std@0.125.0/encoding/_yaml/type/nil.ts": "1988843acab56e99e883cd047c40cc7fb799b6d335f541f022ae3b914abcbe35", + "https://deno.land/std@0.125.0/encoding/_yaml/type/omap.ts": "fd3f2f9a8ae634996da84d021353ac8bf4b41e714f2711159d756d0e2f3aabd1", + "https://deno.land/std@0.125.0/encoding/_yaml/type/pairs.ts": "90736f87b6e39a144205a235d8851f7bebf6bb3835fd03742c30253d5ecd7ec5", + "https://deno.land/std@0.125.0/encoding/_yaml/type/regexp.ts": "a9e70491fa7ede8689b933d81142aa7635a253733a4df626bd479c55cb64222e", + "https://deno.land/std@0.125.0/encoding/_yaml/type/seq.ts": "135f37a1b6dcb3688bc0dad0c9dc3a04370b1fc94267960586ea23877ffd3088", + "https://deno.land/std@0.125.0/encoding/_yaml/type/set.ts": "2937ac0e1ce8c121a4009e74568e341e2a380fdb5f41f16050ce2ca7537b2bd8", + "https://deno.land/std@0.125.0/encoding/_yaml/type/str.ts": "6420d3a0099d9fbc35861241b7dad65b800ff3909efe71ab71c895326187ab8d", + "https://deno.land/std@0.125.0/encoding/_yaml/type/timestamp.ts": "3db0667dd9bdc3b3f0e8596fff023e87bc9fca230a545bb67d0bf3b732c1c656", + "https://deno.land/std@0.125.0/encoding/_yaml/type/undefined.ts": "5b595082d064cf50a3345f5fdda8c02beb0768e9d97d4bd4c53ac81a9f94e185", + "https://deno.land/std@0.125.0/encoding/_yaml/utils.ts": "c7e6bf055b08fffe700c7cbdfa2939cab7b9676ff75b6dc98d72d41b3b173d37", + "https://deno.land/std@0.125.0/encoding/yaml.ts": "6760095814791325684cd146d10d49eef32bc4328a0516bf88fac9dc2cffa423", + "https://deno.land/std@0.125.0/fmt/colors.ts": "870f10d440af4c309ab7bff97266d8ddb2c8a69039bcbd33253c8bfc14502116", + "https://deno.land/std@0.125.0/fs/_util.ts": "0fb24eb4bfebc2c194fb1afdb42b9c3dda12e368f43e8f2321f84fc77d42cb0f", + "https://deno.land/std@0.125.0/fs/copy.ts": "9248d1492599957af8c693ceb10a432b09f0b0b61c60a4d6aff29b0c7d3a17b3", + "https://deno.land/std@0.125.0/fs/empty_dir.ts": "7274d87160de34cbed0531e284df383045cf43543bbeadeb97feac598bd8f3c5", + "https://deno.land/std@0.125.0/fs/ensure_dir.ts": "9dc109c27df4098b9fc12d949612ae5c9c7169507660dcf9ad90631833209d9d", + "https://deno.land/std@0.125.0/fs/ensure_file.ts": "7d353e64fee3d4d1e7c6b6726a2a5e987ba402c15fb49566309042887349c545", + "https://deno.land/std@0.125.0/fs/ensure_link.ts": "489e23df9fe3e6636048b5830ddf0f111eb29621eb85719255ad9bd645f3471b", + "https://deno.land/std@0.125.0/fs/ensure_symlink.ts": "88dc83de1bc90ed883dd458c2d2eae3d5834a4617d12925734836e1f0803b274", + "https://deno.land/std@0.125.0/fs/eol.ts": "ebd5061ae0ce1936b4d019c928c77c420b32e61cf472681c644fe377ccf4774d", + "https://deno.land/std@0.125.0/fs/exists.ts": "cb734d872f8554ea40b8bff77ad33d4143c1187eac621a55bf37781a43c56f6d", + "https://deno.land/std@0.125.0/fs/expand_glob.ts": "0c10130d67c9b02164b03df8e43c6d6defbf8e395cb69d09e84a8586e6d72ac3", + "https://deno.land/std@0.125.0/fs/mod.ts": "4dc052c461c171abb5c25f6e0f218ab838a716230930b534ba351745864b7d6d", + "https://deno.land/std@0.125.0/fs/move.ts": "0573cedcf583f09a9494f2dfccbf67de68a93629942d6b5e6e74a9e45d4e8a2e", + "https://deno.land/std@0.125.0/fs/walk.ts": "117403ccd21fd322febe56ba06053b1ad5064c802170f19b1ea43214088fe95f", + "https://deno.land/std@0.125.0/io/buffer.ts": "22a7e7c6f693a9c3547d0caa2dcae2a5582cb5b1bec22b28322d0352a9209e34", + "https://deno.land/std@0.125.0/io/types.d.ts": "01f60ae7ec02675b5dbed150d258fc184a78dfe5c209ef53ba4422b46b58822c", + "https://deno.land/std@0.125.0/path/_constants.ts": "df1db3ffa6dd6d1252cc9617e5d72165cd2483df90e93833e13580687b6083c3", + "https://deno.land/std@0.125.0/path/_interface.ts": "ee3b431a336b80cf445441109d089b70d87d5e248f4f90ff906820889ecf8d09", + "https://deno.land/std@0.125.0/path/_util.ts": "c1e9686d0164e29f7d880b2158971d805b6e0efc3110d0b3e24e4b8af2190d2b", + "https://deno.land/std@0.125.0/path/common.ts": "bee563630abd2d97f99d83c96c2fa0cca7cee103e8cb4e7699ec4d5db7bd2633", + "https://deno.land/std@0.125.0/path/glob.ts": "cb5255638de1048973c3e69e420c77dc04f75755524cb3b2e160fe9277d939ee", + "https://deno.land/std@0.125.0/path/mod.ts": "4275129bb766f0e475ecc5246aa35689eeade419d72a48355203f31802640be7", + "https://deno.land/std@0.125.0/path/posix.ts": "663e4a6fe30a145f56aa41a22d95114c4c5582d8b57d2d7c9ed27ad2c47636bb", + "https://deno.land/std@0.125.0/path/separator.ts": "fe1816cb765a8068afb3e8f13ad272351c85cbc739af56dacfc7d93d710fe0f9", + "https://deno.land/std@0.125.0/path/win32.ts": "e7bdf63e8d9982b4d8a01ef5689425c93310ece950e517476e22af10f41a136e", + "https://deno.land/std@0.125.0/permissions/mod.ts": "aede9c82587f26bb13832e147befa8f90d6865fbf6bf56c0aa21ec83fcdafdda", + "https://deno.land/std@0.152.0/_util/assert.ts": "e94f2eb37cebd7f199952e242c77654e43333c1ac4c5c700e929ea3aa5489f74", + "https://deno.land/std@0.152.0/_util/os.ts": "3b4c6e27febd119d36a416d7a97bd3b0251b77c88942c8f16ee5953ea13e2e49", + "https://deno.land/std@0.152.0/async/deferred.ts": "bc18e28108252c9f67dfca2bbc4587c3cbf3aeb6e155f8c864ca8ecff992b98a", + "https://deno.land/std@0.152.0/bytes/bytes_list.ts": "aba5e2369e77d426b10af1de0dcc4531acecec27f9b9056f4f7bfbf8ac147ab4", + "https://deno.land/std@0.152.0/bytes/equals.ts": "3c3558c3ae85526f84510aa2b48ab2ad7bdd899e2e0f5b7a8ffc85acb3a6043a", + "https://deno.land/std@0.152.0/bytes/mod.ts": "763f97d33051cc3f28af1a688dfe2830841192a9fea0cbaa55f927b49d49d0bf", + "https://deno.land/std@0.152.0/crypto/timing_safe_equal.ts": "82a29b737bc8932d75d7a20c404136089d5d23629e94ba14efa98a8cc066c73e", + "https://deno.land/std@0.152.0/encoding/base64.ts": "c57868ca7fa2fbe919f57f88a623ad34e3d970d675bdc1ff3a9d02bba7409db2", + "https://deno.land/std@0.152.0/fmt/colors.ts": "6f9340b7fb8cc25a993a99e5efc56fe81bb5af284ff412129dd06df06f53c0b4", + "https://deno.land/std@0.152.0/http/_negotiation/common.ts": "410e902f01cdd324e4746e8017595be4fc357d6fc4cd6044f2f808a943d7eaf7", + "https://deno.land/std@0.152.0/http/_negotiation/encoding.ts": "f749c1d539d139af783e8a7741de5a47a98a5e3c9af82b8af512567ccf5fe632", + "https://deno.land/std@0.152.0/http/_negotiation/language.ts": "53c306186904d2dace4c624a8822542866ad332a7f40ac90e0af1504f95c63d0", + "https://deno.land/std@0.152.0/http/_negotiation/media_type.ts": "ecdda87286495f7ff25116858f5088856953e2f1585e593d314e0c71b826a137", + "https://deno.land/std@0.152.0/http/http_errors.ts": "fe9b7f95f7ee0592c3306f8c7aed03ba53d55d1ef81e00041c1171b9588f46d9", + "https://deno.land/std@0.152.0/http/http_status.ts": "897575a7d6bc2b9123f6a38ecbc0f03d95a532c5d92029315dc9f508e12526b8", + "https://deno.land/std@0.152.0/http/negotiation.ts": "f35b1ff2ad4ff9feaa00ac234960b398172768205c8eceaef7f2eafe34716ba2", + "https://deno.land/std@0.152.0/io/buffer.ts": "bd0c4bf53db4b4be916ca5963e454bddfd3fcd45039041ea161dbf826817822b", + "https://deno.land/std@0.152.0/io/readers.ts": "45847ad404afd2f605eae1cff193f223462bc55eeb9ae313c2f3db28aada0fd6", + "https://deno.land/std@0.152.0/io/types.d.ts": "0cae3a62da7a37043661746c65c021058bae020b54e50c0e774916e5d4baee43", + "https://deno.land/std@0.152.0/media_types/_util.ts": "ce9b4fc4ba1c447dafab619055e20fd88236ca6bdd7834a21f98bd193c3fbfa1", + "https://deno.land/std@0.152.0/media_types/mod.ts": "3829264ca0610cac40f3214f939d7733483523f82bc1041c51045d7c75fb93b8", + "https://deno.land/std@0.152.0/media_types/vendor/mime-db.v1.52.0.ts": "724cee25fa40f1a52d3937d6b4fbbfdd7791ff55e1b7ac08d9319d5632c7f5af", + "https://deno.land/std@0.152.0/path/_constants.ts": "df1db3ffa6dd6d1252cc9617e5d72165cd2483df90e93833e13580687b6083c3", + "https://deno.land/std@0.152.0/path/_interface.ts": "ee3b431a336b80cf445441109d089b70d87d5e248f4f90ff906820889ecf8d09", + "https://deno.land/std@0.152.0/path/_util.ts": "c1e9686d0164e29f7d880b2158971d805b6e0efc3110d0b3e24e4b8af2190d2b", + "https://deno.land/std@0.152.0/path/common.ts": "bee563630abd2d97f99d83c96c2fa0cca7cee103e8cb4e7699ec4d5db7bd2633", + "https://deno.land/std@0.152.0/path/glob.ts": "cb5255638de1048973c3e69e420c77dc04f75755524cb3b2e160fe9277d939ee", + "https://deno.land/std@0.152.0/path/mod.ts": "56fec03ad0ebd61b6ab39ddb9b0ddb4c4a5c9f2f4f632e09dd37ec9ebfd722ac", + "https://deno.land/std@0.152.0/path/posix.ts": "c1f7afe274290ea0b51da07ee205653b2964bd74909a82deb07b69a6cc383aaa", + "https://deno.land/std@0.152.0/path/separator.ts": "fe1816cb765a8068afb3e8f13ad272351c85cbc739af56dacfc7d93d710fe0f9", + "https://deno.land/std@0.152.0/path/win32.ts": "bd7549042e37879c68ff2f8576a25950abbfca1d696d41d82c7bca0b7e6f452c", + "https://deno.land/std@0.152.0/streams/conversion.ts": "fc3db02026183da795fa32ac7549868e9f19c75ba029d4b4c3739af62b48517a", + "https://deno.land/std@0.152.0/testing/_diff.ts": "029a00560b0d534bc0046f1bce4bd36b3b41ada3f2a3178c85686eb2ff5f1413", + "https://deno.land/std@0.152.0/testing/_format.ts": "0d8dc79eab15b67cdc532826213bbe05bccfd276ca473a50a3fc7bbfb7260642", + "https://deno.land/std@0.152.0/testing/asserts.ts": "093735c88f52bbead7f60a1f7a97a2ce4df3c2d5fab00a46956f20b4a5793ccd", + "https://deno.land/std@0.170.0/_util/asserts.ts": "d0844e9b62510f89ce1f9878b046f6a57bf88f208a10304aab50efcb48365272", + "https://deno.land/std@0.170.0/_util/os.ts": "8a33345f74990e627b9dfe2de9b040004b08ea5146c7c9e8fe9a29070d193934", + "https://deno.land/std@0.170.0/async/abortable.ts": "80b2ac399f142cc528f95a037a7d0e653296352d95c681e284533765961de409", + "https://deno.land/std@0.170.0/async/deadline.ts": "2c2deb53c7c28ca1dda7a3ad81e70508b1ebc25db52559de6b8636c9278fd41f", + "https://deno.land/std@0.170.0/async/debounce.ts": "60301ffb37e730cd2d6f9dadfd0ecb2a38857681bd7aaf6b0a106b06e5210a98", + "https://deno.land/std@0.170.0/async/deferred.ts": "77d3f84255c3627f1cc88699d8472b664d7635990d5358c4351623e098e917d6", + "https://deno.land/std@0.170.0/async/delay.ts": "5a9bfba8de38840308a7a33786a0155a7f6c1f7a859558ddcec5fe06e16daf57", + "https://deno.land/std@0.170.0/async/mod.ts": "7809ad4bb223e40f5fdc043e5c7ca04e0e25eed35c32c3c32e28697c553fa6d9", + "https://deno.land/std@0.170.0/async/mux_async_iterator.ts": "770a0ff26c59f8bbbda6b703a2235f04e379f73238e8d66a087edc68c2a2c35f", + "https://deno.land/std@0.170.0/async/pool.ts": "6854d8cd675a74c73391c82005cbbe4cc58183bddcd1fbbd7c2bcda42b61cf69", + "https://deno.land/std@0.170.0/async/retry.ts": "e8e5173623915bbc0ddc537698fa418cf875456c347eda1ed453528645b42e67", + "https://deno.land/std@0.170.0/async/tee.ts": "3a47cc4e9a940904fd4341f0224907e199121c80b831faa5ec2b054c6d2eff5e", + "https://deno.land/std@0.170.0/bytes/index_of_needle.ts": "19db73583cf6e038ca7763dd9fe9b9f2733ffa8be530d7b42f52bc9f3c2ee989", + "https://deno.land/std@0.170.0/crypto/timing_safe_equal.ts": "3784958e40a5fe10429a68b75cc5f8d34356bf0bc2eb93c80c3033e2a6f17821", + "https://deno.land/std@0.170.0/encoding/base64.ts": "8605e018e49211efc767686f6f687827d7f5fd5217163e981d8d693105640d7a", + "https://deno.land/std@0.170.0/encoding/base64url.ts": "0283b12fcd306c11e3cf26fc022fecc800c6acc19704ea8bdb3908898fcd06d6", + "https://deno.land/std@0.170.0/flags/mod.ts": "4f50ec6383c02684db35de38b3ffb2cd5b9fcfcc0b1147055d1980c49e82521c", + "https://deno.land/std@0.170.0/fmt/printf.ts": "e275fc8f189c03bb4134a2c7b52c3a448a4a16e16a85efcd69cd6108c5f48a32", + "https://deno.land/std@0.170.0/node/_core.ts": "92e000441742387f7ded7cc582ca4089c0bc13aa5f00cecdfa4876dc832dfd10", + "https://deno.land/std@0.170.0/node/_events.d.ts": "3899ee9c37055fbb750e32cb43d7c435077c04446af948300080e1a590c6edf0", + "https://deno.land/std@0.170.0/node/_events.mjs": "303e8aa60ace559e4ca0d19e8475f87311bee9e8330b4b497644d70f2002fc27", + "https://deno.land/std@0.170.0/node/_global.d.ts": "6dadaf8cec2a0c506b22170617286e0bdc80be53dd0673e67fc7dd37a1130c68", + "https://deno.land/std@0.170.0/node/_next_tick.ts": "81c1826675493b76f90c646fb1274a4c84b5cc913a80ca4526c32cd7c46a0b06", + "https://deno.land/std@0.170.0/node/_process/exiting.ts": "bc9694769139ffc596f962087155a8bfef10101d03423b9dcbc51ce6e1f88fce", + "https://deno.land/std@0.170.0/node/_process/process.ts": "d5bf113a4b62f4abe4cb7ec5a9d00d44dac0ad9e82a23d00cc27d71e05ae8b66", + "https://deno.land/std@0.170.0/node/_process/stdio.mjs": "971c3b086040d8521562155db13f22f9971d5c42c852b2081d4d2f0d8b6ab6bd", + "https://deno.land/std@0.170.0/node/_process/streams.mjs": "3ce63d9eb24a8a8ec45eeebf5c184b43d888064f663f87e8f453888368e00f90", + "https://deno.land/std@0.170.0/node/_stream.d.ts": "83e9da2f81de3205926f1e86ba54442aa5a3caf4c5e84a4c8699402ad340142b", + "https://deno.land/std@0.170.0/node/_stream.mjs": "9a80217d9734f6e4284aae0ea55dd82b243f5517bc1814e983ad41b01732f712", + "https://deno.land/std@0.170.0/node/_util/_util_callbackify.ts": "a71353d5fde3dc785cfdf6b6bcad1379a9c78b374720af4aaa7f88ffab2bac0e", + "https://deno.land/std@0.170.0/node/_utils.ts": "1085a229e910b3a6672f3c3be05507591811dc67be2ae2188e9fc9ef4376b172", + "https://deno.land/std@0.170.0/node/buffer.ts": "43f07b2d1523345bf35b7deb7fcdad6e916020a631a7bc1b5efcaff556db4e1d", + "https://deno.land/std@0.170.0/node/events.ts": "f848398d3591534ca94ac6b852a9f3c4dbb2da310c3a26059cf4ff06b7eae088", + "https://deno.land/std@0.170.0/node/internal/buffer.d.ts": "90f674081428a61978b6d481c5f557ff743a3f4a85d7ae113caab48fdf5b8a63", + "https://deno.land/std@0.170.0/node/internal/buffer.mjs": "50320a6bcf770f03428e77e5ba46b19f69842539c6493b89c6515ba1b0def6ee", + "https://deno.land/std@0.170.0/node/internal/crypto/_keys.ts": "63229ff3d8d15b5bd0a1d2ebc19313cbb8ac969875bf16df1ce4f2b497d74fb5", + "https://deno.land/std@0.170.0/node/internal/crypto/constants.ts": "d2c8821977aef55e4d66414d623c24a2447791a8b49b6404b8db32d81e20c315", + "https://deno.land/std@0.170.0/node/internal/error_codes.ts": "ac03c4eae33de3a69d6c98e8678003207eecf75a6900eb847e3fea3c8c9e6d8f", + "https://deno.land/std@0.170.0/node/internal/errors.ts": "b9aec7d1fe3eaf21322d0ea9dc2fcb344055d6b0c7a1bd0f62a0c379a5baa799", + "https://deno.land/std@0.170.0/node/internal/fixed_queue.ts": "455b3c484de48e810b13bdf95cd1658ecb1ba6bcb8b9315ffe994efcde3ba5f5", + "https://deno.land/std@0.170.0/node/internal/hide_stack_frames.ts": "a91962ec84610bc7ec86022c4593cdf688156a5910c07b5bcd71994225c13a03", + "https://deno.land/std@0.170.0/node/internal/net.ts": "1239886cd2508a68624c2dae8abf895e8aa3bb15a748955349f9ac5539032238", + "https://deno.land/std@0.170.0/node/internal/normalize_encoding.mjs": "3779ec8a7adf5d963b0224f9b85d1bc974a2ec2db0e858396b5d3c2c92138a0a", + "https://deno.land/std@0.170.0/node/internal/options.ts": "a23c285975e058cb26a19abcb048cd8b46ab12d21cfb028868ac8003fffb43ac", + "https://deno.land/std@0.170.0/node/internal/primordials.mjs": "7cf5afe471583e4a384eeea109bdff276b6b7f3a3af830f99f951fb7d57ef423", + "https://deno.land/std@0.170.0/node/internal/process/per_thread.mjs": "bc1be72a6a662bf81573c20fe74893374847a7302065ddf52fb3fb2af505f31f", + "https://deno.land/std@0.170.0/node/internal/readline/callbacks.mjs": "17d9270a54fb5dceea8f894669e3401e5c6260bab075a1e9675a62f1fef50d8c", + "https://deno.land/std@0.170.0/node/internal/readline/utils.mjs": "a93ebb99f85e0dbb4f05f4aff5583d12a15150e45c335e4ecf925e1879dc9c84", + "https://deno.land/std@0.170.0/node/internal/streams/destroy.mjs": "9c9bbeb172a437041d529829f433df72cf0b63ae49f3ee6080a55ffbef7572ad", + "https://deno.land/std@0.170.0/node/internal/streams/end-of-stream.mjs": "38be76eaceac231dfde643e72bc0940625446bf6d1dbd995c91c5ba9fd59b338", + "https://deno.land/std@0.170.0/node/internal/streams/utils.mjs": "a0a6b93a7e68ef52bef4ed00b0c82bb7e335abf360af57335b07c6a3fcdde717", + "https://deno.land/std@0.170.0/node/internal/util.mjs": "35d24fb775468cd24443bcf0ec68904b8aa44e5b53845491a5e3382421917f9a", + "https://deno.land/std@0.170.0/node/internal/util/comparisons.ts": "4093f52f05d84842b46496e448fa8d708e25c6d6b8971505fd4913a9d7075934", + "https://deno.land/std@0.170.0/node/internal/util/debuglog.ts": "570c399f0a066b81f0836eeb926b9142ae7f1738cee9abd85cd12ce32092d5af", + "https://deno.land/std@0.170.0/node/internal/util/inspect.mjs": "1ddace0c97719d2cc0869ba177d375e96051301352ec235cbfb2ecbfcd4e8fba", + "https://deno.land/std@0.170.0/node/internal/util/types.ts": "5b15a8051a6e58b6c1a424e0e7137b77b0ef60409d54d05db22a97e0d1d5b589", + "https://deno.land/std@0.170.0/node/internal/validators.mjs": "67deae0f488d013c8bf485742a5478112b8e48837cb2458c4a8b2669cf7017db", + "https://deno.land/std@0.170.0/node/internal_binding/_libuv_winerror.ts": "801e05c2742ae6cd42a5f0fd555a255a7308a65732551e962e5345f55eedc519", + "https://deno.land/std@0.170.0/node/internal_binding/_listen.ts": "c15a356ef4758770fc72d3ca4db33f0cc321016df1aafb927c027c0d73ac2c42", + "https://deno.land/std@0.170.0/node/internal_binding/_node.ts": "e4075ba8a37aef4eb5b592c8e3807c39cb49ca8653faf8e01a43421938076c1b", + "https://deno.land/std@0.170.0/node/internal_binding/_timingSafeEqual.ts": "80640f055101071cb3680a2d8a1fead5fd260ca8bf183efb94296b69463e06cd", + "https://deno.land/std@0.170.0/node/internal_binding/_utils.ts": "1c50883b5751a9ea1b38951e62ed63bacfdc9d69ea665292edfa28e1b1c5bd94", + "https://deno.land/std@0.170.0/node/internal_binding/_winerror.ts": "8811d4be66f918c165370b619259c1f35e8c3e458b8539db64c704fbde0a7cd2", + "https://deno.land/std@0.170.0/node/internal_binding/ares.ts": "33ff8275bc11751219af8bd149ea221c442d7e8676e3e9f20ccb0e1f0aac61b8", + "https://deno.land/std@0.170.0/node/internal_binding/async_wrap.ts": "b83e4021a4854b2e13720f96d21edc11f9905251c64c1bc625a361f574400959", + "https://deno.land/std@0.170.0/node/internal_binding/buffer.ts": "dfba9e1a50b637cfd72e569aa11959dcaf626b898ab7e851d21526a2bdaec588", + "https://deno.land/std@0.170.0/node/internal_binding/cares_wrap.ts": "720e6d5cff7018bb3d00e1a49dd4c31f0fc6af3a593ab68cd39e3592ed163d61", + "https://deno.land/std@0.170.0/node/internal_binding/config.ts": "e292217d048a33573966b7d25352828d3282921fbcadce8735a20fb3da370cc4", + "https://deno.land/std@0.170.0/node/internal_binding/connection_wrap.ts": "9debd4210d29c658054476fcb640c900725f564ef35412c56dc79eb07213a7c1", + "https://deno.land/std@0.170.0/node/internal_binding/constants.ts": "1ad4de9f76733320527c8bc841b5e4dd5869424924384157a72f3b171bd05b08", + "https://deno.land/std@0.170.0/node/internal_binding/contextify.ts": "e292217d048a33573966b7d25352828d3282921fbcadce8735a20fb3da370cc4", + "https://deno.land/std@0.170.0/node/internal_binding/credentials.ts": "e292217d048a33573966b7d25352828d3282921fbcadce8735a20fb3da370cc4", + "https://deno.land/std@0.170.0/node/internal_binding/crypto.ts": "d7f39700dc020364edf7f4785e5026bb91f099ce1bd02734182451b1af300c8c", + "https://deno.land/std@0.170.0/node/internal_binding/errors.ts": "e292217d048a33573966b7d25352828d3282921fbcadce8735a20fb3da370cc4", + "https://deno.land/std@0.170.0/node/internal_binding/fs.ts": "e292217d048a33573966b7d25352828d3282921fbcadce8735a20fb3da370cc4", + "https://deno.land/std@0.170.0/node/internal_binding/fs_dir.ts": "e292217d048a33573966b7d25352828d3282921fbcadce8735a20fb3da370cc4", + "https://deno.land/std@0.170.0/node/internal_binding/fs_event_wrap.ts": "e292217d048a33573966b7d25352828d3282921fbcadce8735a20fb3da370cc4", + "https://deno.land/std@0.170.0/node/internal_binding/handle_wrap.ts": "71c451060c9f555066d3ebe80de039a4e493a94b76c664450fbefd8f4167eb7e", + "https://deno.land/std@0.170.0/node/internal_binding/heap_utils.ts": "e292217d048a33573966b7d25352828d3282921fbcadce8735a20fb3da370cc4", + "https://deno.land/std@0.170.0/node/internal_binding/http_parser.ts": "e292217d048a33573966b7d25352828d3282921fbcadce8735a20fb3da370cc4", + "https://deno.land/std@0.170.0/node/internal_binding/icu.ts": "e292217d048a33573966b7d25352828d3282921fbcadce8735a20fb3da370cc4", + "https://deno.land/std@0.170.0/node/internal_binding/inspector.ts": "e292217d048a33573966b7d25352828d3282921fbcadce8735a20fb3da370cc4", + "https://deno.land/std@0.170.0/node/internal_binding/js_stream.ts": "e292217d048a33573966b7d25352828d3282921fbcadce8735a20fb3da370cc4", + "https://deno.land/std@0.170.0/node/internal_binding/messaging.ts": "e292217d048a33573966b7d25352828d3282921fbcadce8735a20fb3da370cc4", + "https://deno.land/std@0.170.0/node/internal_binding/mod.ts": "f68e74e8eed84eaa6b0de24f0f4c47735ed46866d7ee1c5a5e7c0667b4f0540f", + "https://deno.land/std@0.170.0/node/internal_binding/module_wrap.ts": "e292217d048a33573966b7d25352828d3282921fbcadce8735a20fb3da370cc4", + "https://deno.land/std@0.170.0/node/internal_binding/native_module.ts": "e292217d048a33573966b7d25352828d3282921fbcadce8735a20fb3da370cc4", + "https://deno.land/std@0.170.0/node/internal_binding/natives.ts": "e292217d048a33573966b7d25352828d3282921fbcadce8735a20fb3da370cc4", + "https://deno.land/std@0.170.0/node/internal_binding/node_file.ts": "37d6864897547d95ca24e0f5d01035915db0065bff128bc22191bc93f9ad59ad", + "https://deno.land/std@0.170.0/node/internal_binding/node_options.ts": "b098e6a1c80fa5003a1669c6828539167ab19337e13d20a47b610144cb888cef", + "https://deno.land/std@0.170.0/node/internal_binding/options.ts": "e292217d048a33573966b7d25352828d3282921fbcadce8735a20fb3da370cc4", + "https://deno.land/std@0.170.0/node/internal_binding/os.ts": "e292217d048a33573966b7d25352828d3282921fbcadce8735a20fb3da370cc4", + "https://deno.land/std@0.170.0/node/internal_binding/performance.ts": "e292217d048a33573966b7d25352828d3282921fbcadce8735a20fb3da370cc4", + "https://deno.land/std@0.170.0/node/internal_binding/pipe_wrap.ts": "105c73f268cb9ca1c6cebaf4bea089ab12e0c21c8c4e10bb0a14b0abd3e1661e", + "https://deno.land/std@0.170.0/node/internal_binding/process_methods.ts": "e292217d048a33573966b7d25352828d3282921fbcadce8735a20fb3da370cc4", + "https://deno.land/std@0.170.0/node/internal_binding/report.ts": "e292217d048a33573966b7d25352828d3282921fbcadce8735a20fb3da370cc4", + "https://deno.land/std@0.170.0/node/internal_binding/serdes.ts": "e292217d048a33573966b7d25352828d3282921fbcadce8735a20fb3da370cc4", + "https://deno.land/std@0.170.0/node/internal_binding/signal_wrap.ts": "e292217d048a33573966b7d25352828d3282921fbcadce8735a20fb3da370cc4", + "https://deno.land/std@0.170.0/node/internal_binding/spawn_sync.ts": "e292217d048a33573966b7d25352828d3282921fbcadce8735a20fb3da370cc4", + "https://deno.land/std@0.170.0/node/internal_binding/stream_wrap.ts": "64780dc713ee0a2dc36251a62fe533005f07f5996f2c7b61fd8b6fa277c25317", + "https://deno.land/std@0.170.0/node/internal_binding/string_decoder.ts": "5cb1863763d1e9b458bc21d6f976f16d9c18b3b3f57eaf0ade120aee38fba227", + "https://deno.land/std@0.170.0/node/internal_binding/symbols.ts": "51cfca9bb6132d42071d4e9e6b68a340a7f274041cfcba3ad02900886e972a6c", + "https://deno.land/std@0.170.0/node/internal_binding/task_queue.ts": "e292217d048a33573966b7d25352828d3282921fbcadce8735a20fb3da370cc4", + "https://deno.land/std@0.170.0/node/internal_binding/tcp_wrap.ts": "4217fa10072e048a26f26e5f548b3f38422452c9956265592cac57379a610acb", + "https://deno.land/std@0.170.0/node/internal_binding/timers.ts": "e292217d048a33573966b7d25352828d3282921fbcadce8735a20fb3da370cc4", + "https://deno.land/std@0.170.0/node/internal_binding/tls_wrap.ts": "e292217d048a33573966b7d25352828d3282921fbcadce8735a20fb3da370cc4", + "https://deno.land/std@0.170.0/node/internal_binding/trace_events.ts": "e292217d048a33573966b7d25352828d3282921fbcadce8735a20fb3da370cc4", + "https://deno.land/std@0.170.0/node/internal_binding/tty_wrap.ts": "e292217d048a33573966b7d25352828d3282921fbcadce8735a20fb3da370cc4", + "https://deno.land/std@0.170.0/node/internal_binding/types.ts": "69000b1b92e0ca999c737f5add38827742b3ca3fe37a2389c80290de0ae6ef01", + "https://deno.land/std@0.170.0/node/internal_binding/udp_wrap.ts": "cdd0882eff7e7db631d808608d20f5d1269b40fbcedd4a0972d6ed616a855c79", + "https://deno.land/std@0.170.0/node/internal_binding/url.ts": "e292217d048a33573966b7d25352828d3282921fbcadce8735a20fb3da370cc4", + "https://deno.land/std@0.170.0/node/internal_binding/util.ts": "faf5146c3cc3b2d6c26026a818b4a16e91488ab26e63c069f36ba3c3ae24c97b", + "https://deno.land/std@0.170.0/node/internal_binding/uv.ts": "27922aaec43de314afd99dfca1ce8f4d51ced9f5195e4917b54d387766404f61", + "https://deno.land/std@0.170.0/node/internal_binding/v8.ts": "e292217d048a33573966b7d25352828d3282921fbcadce8735a20fb3da370cc4", + "https://deno.land/std@0.170.0/node/internal_binding/worker.ts": "e292217d048a33573966b7d25352828d3282921fbcadce8735a20fb3da370cc4", + "https://deno.land/std@0.170.0/node/internal_binding/zlib.ts": "e292217d048a33573966b7d25352828d3282921fbcadce8735a20fb3da370cc4", + "https://deno.land/std@0.170.0/node/process.ts": "160ad8df6496ab00ed6ed25589d504855382d2641a0c9c4c6e1c577f770862d5", + "https://deno.land/std@0.170.0/node/stream.ts": "2c6d5d207d0ad295f396b34fd03a908c1638beb1754bc9c1fccd9a4cdcace8be", + "https://deno.land/std@0.170.0/node/string_decoder.ts": "7b6aaf9f98934fa33f89d7183a03858c0d1961870725d4ba39aa7cc137a9e9a1", + "https://deno.land/std@0.170.0/node/util.ts": "e926d996318017b41812983cacde63e39c92385de7a19a0cb788fc68f73318db", + "https://deno.land/std@0.170.0/node/util/types.ts": "5948b43e834f73a4becf85b02049632560c65da9c1127e5c533c83d200d3dfcd", + "https://deno.land/std@0.170.0/path/_constants.ts": "df1db3ffa6dd6d1252cc9617e5d72165cd2483df90e93833e13580687b6083c3", + "https://deno.land/std@0.170.0/path/_interface.ts": "ee3b431a336b80cf445441109d089b70d87d5e248f4f90ff906820889ecf8d09", + "https://deno.land/std@0.170.0/path/_util.ts": "d16be2a16e1204b65f9d0dfc54a9bc472cafe5f4a190b3c8471ec2016ccd1677", + "https://deno.land/std@0.170.0/path/common.ts": "bee563630abd2d97f99d83c96c2fa0cca7cee103e8cb4e7699ec4d5db7bd2633", + "https://deno.land/std@0.170.0/path/glob.ts": "81cc6c72be002cd546c7a22d1f263f82f63f37fe0035d9726aa96fc8f6e4afa1", + "https://deno.land/std@0.170.0/path/mod.ts": "cf7cec7ac11b7048bb66af8ae03513e66595c279c65cfa12bfc07d9599608b78", + "https://deno.land/std@0.170.0/path/posix.ts": "b859684bc4d80edfd4cad0a82371b50c716330bed51143d6dcdbe59e6278b30c", + "https://deno.land/std@0.170.0/path/separator.ts": "fe1816cb765a8068afb3e8f13ad272351c85cbc739af56dacfc7d93d710fe0f9", + "https://deno.land/std@0.170.0/path/win32.ts": "7cebd2bda6657371adc00061a1d23fdd87bcdf64b4843bb148b0b24c11b40f69", + "https://deno.land/std@0.170.0/streams/write_all.ts": "7525aa90e34a2bb56d094403ad9c0e31e7db87a47cb556e6dc0404e6deca084c", + "https://deno.land/std@0.97.0/_util/assert.ts": "2f868145a042a11d5ad0a3c748dcf580add8a0dbc0e876eaa0026303a5488f58", + "https://deno.land/std@0.97.0/bytes/bytes_list.ts": "a13287edb03f19d27ba4927dec6d6de3e5bd46254cd4aee6f7e5815810122673", + "https://deno.land/std@0.97.0/bytes/mod.ts": "1ae1ccfe98c4b979f12b015982c7444f81fcb921bea7aa215bf37d84f46e1e13", + "https://deno.land/std@0.97.0/fmt/colors.ts": "db22b314a2ae9430ae7460ce005e0a7130e23ae1c999157e3bb77cf55800f7e4", + "https://deno.land/std@0.97.0/fs/exists.ts": "b0d2e31654819cc2a8d37df45d6b14686c0cc1d802e9ff09e902a63e98b85a00", + "https://deno.land/std@0.97.0/io/buffer.ts": "ed3528e299fd1e0dc056c4b5005a07b28c3dabad2595f077a562ff7b06fe89a5", + "https://deno.land/std@0.97.0/io/bufio.ts": "61d11414e83d2b504eb8ea2fca3c2670470ee2fe2e5fe82bdd81eb55dc11ac4a", + "https://deno.land/std@0.97.0/io/types.d.ts": "89a27569399d380246ca7cdd9e14d5e68459f11fb6110790cc5ecbd4ee7f3215", + "https://deno.land/std@0.97.0/io/util.ts": "318be78b7954da25f0faffe123fef0d9423ea61af98467e860c06b60265eff6d", + "https://deno.land/std@0.97.0/log/handlers.ts": "d7f96064b1db110f66a4c51bda59eeb0698c0c13a1eeaccf85843bdb1d5a0b90", + "https://deno.land/std@0.97.0/log/levels.ts": "088a883039ece5fa0da5f74bc7688654045ea7cb01bf200b438191a28d728eae", + "https://deno.land/std@0.97.0/log/logger.ts": "6b2dd8cbe6f407100b9becfe61595d7681f8ce3692412fad843de84d617a038e", + "https://deno.land/std@0.97.0/log/mod.ts": "91711789b28803082b1bdfb123d2c9685a7e01767f2e79c0a82706063ad964d8", + "https://deno.land/std@0.97.0/testing/_diff.ts": "961eaf6d9f5b0a8556c9d835bbc6fa74f5addd7d3b02728ba7936ff93364f7a3", + "https://deno.land/std@0.97.0/testing/asserts.ts": "341292d12eebc44be4c3c2ca101ba8b6b5859cef2fa69d50c217f9d0bfbcfd1f", + "https://deno.land/x/branch@0.1.6/branch.ts": "73afddd373e16d12990c3419ecf2bb8a0a5cc55214ebf734638ff493c10889fb", + "https://deno.land/x/branch@0.1.6/deps.ts": "545b894291831a03b72e43a8407c67739f7c4ae41c98b90b79bbb86d08362d20", + "https://deno.land/x/branch@0.1.6/mod.ts": "08d49becec5bb0df08a582b87076d07a89af1733f6d17938bd8dba95744f7f84", + "https://deno.land/x/cheerio@1.0.7/mod.ts": "3165160f0fe6507408115377a3e55d3cb3095ee1878d5f9b740e84c2d1dc1e0a", + "https://deno.land/x/denon@2.5.0/denon.ts": "6972278bbb30589fd8c4a22788dfc7e76589559422dbf035240312a4005f1119", + "https://deno.land/x/denon@2.5.0/deps.ts": "c0e967b569fc8569d97c1e3c803131a52684520049db8d1d2271843b33bb5c8f", + "https://deno.land/x/denon@2.5.0/info.ts": "14131eb43d562d63cdaf012e125f3e6cfc9939fd184697cc37afc01f9748850b", + "https://deno.land/x/denon@2.5.0/src/args.ts": "f654ea46920048bf8f9f9efa8ddfe3f2cf7eca5c731495e4a533518aacb67a31", + "https://deno.land/x/denon@2.5.0/src/cli.ts": "ce45886c48067529c66d38fc4fee391a451ea7072f290c9fa20808f67e3edd2d", + "https://deno.land/x/denon@2.5.0/src/config.ts": "a129b632e50d41c48a4812a8295df3d7ef784d526541301d334e223e658a28a3", + "https://deno.land/x/denon@2.5.0/src/daemon.ts": "1f3f23822171410a08939a73412cb5b7b87b47c3b8e58640ce450c032e968598", + "https://deno.land/x/denon@2.5.0/src/merge.ts": "8824e4c9e77218a6875caa6445ee97b743f0c5e6a6b986c215bcf732e972ad27", + "https://deno.land/x/denon@2.5.0/src/runner.ts": "5c2702415dcb96f171495c330053387023f211d13181919352f82a0c16a5cf13", + "https://deno.land/x/denon@2.5.0/src/scripts.ts": "b05dc15a3a34ec9662db3164bcce6dae940a5f6b2d90a85309e4f7819614d8d7", + "https://deno.land/x/denon@2.5.0/src/templates.ts": "fc27646efd09dca1166e6935d7bc19a6f19cfc71484ab72701cecaa3e1f3cc19", + "https://deno.land/x/denon@2.5.0/src/watcher.ts": "88b279ca2fd9a4cc5765b5b9d316c5fe1b2c2e47397aa4308f113534f0ea4183", + "https://deno.land/x/hono@v3.0.0-rc.3/compose.ts": "6cf42a9779df9bb53294f796f07796961e2d70ed348cf0dd334669ac2de2fd95", + "https://deno.land/x/hono@v3.0.0-rc.3/context.ts": "97bdf1bfd1e19a3362e03026be043efae44100c3920e7f3215d246c78c3ad64e", + "https://deno.land/x/hono@v3.0.0-rc.3/hono.ts": "fb65306bcb9f42cbf9bcab79b9177f10779c6e3b3087e4d037b78e9c59fc6744", + "https://deno.land/x/hono@v3.0.0-rc.3/mod.ts": "a6f5fc79ba07e98e1918694cb96f78358e0e967def1184ddb941d3a905cd9fbd", + "https://deno.land/x/hono@v3.0.0-rc.3/request.ts": "eac11f9b5bb01ac3e3e301d59e8d9a23a85462f3a6283aafd76dae2aa8a5269a", + "https://deno.land/x/hono@v3.0.0-rc.3/router.ts": "21448bc2e6019574c10fae11237da4367037fa107e68bf3d049cd2fd0efd2adb", + "https://deno.land/x/hono@v3.0.0-rc.3/router/reg-exp-router/index.ts": "52755829213941756159b7a963097bafde5cc4fc22b13b1c7c9184dc0512d1db", + "https://deno.land/x/hono@v3.0.0-rc.3/router/reg-exp-router/node.ts": "08bb532ffe43e6e11510f9f66122baef43288f05f592b17987fc3a2dc195251a", + "https://deno.land/x/hono@v3.0.0-rc.3/router/reg-exp-router/router.ts": "b158d519d7bc5bbae6a8b099a8563c51b90c132116353967ab9bef7f6e86e446", + "https://deno.land/x/hono@v3.0.0-rc.3/router/reg-exp-router/trie.ts": "ab8a4ec6c3cdfdbcd1f53130db28b6174318bdfa815d57c792154203e71bc3d2", + "https://deno.land/x/hono@v3.0.0-rc.3/router/smart-router/index.ts": "74f9b4fe15ea535900f2b9b048581915f12fe94e531dd2b0032f5610e61c3bef", + "https://deno.land/x/hono@v3.0.0-rc.3/router/smart-router/router.ts": "1d54f5c87875d856ed5fc2d22a100e1ff31debe3e9d8e9b1cc18d8e5706239f2", + "https://deno.land/x/hono@v3.0.0-rc.3/router/static-router/index.ts": "f31aaebff3b2b05f00946d3a8b688289a43b5c2bfb124e54ffadeee6a24a1b52", + "https://deno.land/x/hono@v3.0.0-rc.3/router/static-router/router.ts": "75a15b2964dc90a46aed7b313f8760b60af5d5e8a819c3a948b4ad8d3fdb7662", + "https://deno.land/x/hono@v3.0.0-rc.3/router/trie-router/index.ts": "3eb75e7f71ba81801631b30de6b1f5cefb2c7239c03797e2b2cbab5085911b41", + "https://deno.land/x/hono@v3.0.0-rc.3/router/trie-router/node.ts": "514ef8e66a96d1ececc2823421d5a4001d59a1cec241bb545688716cba1e9dbb", + "https://deno.land/x/hono@v3.0.0-rc.3/router/trie-router/router.ts": "0a969528a0c1680b552b20f0ca90e484e968ac279be9d5fd952b61a804d680e7", + "https://deno.land/x/hono@v3.0.0-rc.3/types.ts": "1b8a876c013caee63287c198983740e3467e6f88a7f1a56301418904147370fb", + "https://deno.land/x/hono@v3.0.0-rc.3/utils/body.ts": "095afd5b9cd8458bb78353479911a428a23acbef1ffd545483f7b051c08a9fc0", + "https://deno.land/x/hono@v3.0.0-rc.3/utils/cookie.ts": "545872bd7af3b455c24fd386ecbccfd161e7d4a0038d6b09b1bb22723602f90a", + "https://deno.land/x/hono@v3.0.0-rc.3/utils/http-status.ts": "2d6003e352c1fe918db663fa4bd2b20bf0b9d4e1699ba5e163f317f00b29d938", + "https://deno.land/x/hono@v3.0.0-rc.3/utils/json.ts": "ae34c6191e7a844f04a95efaffb177b6a15a3bc5b17321c5679081940df6ab1d", + "https://deno.land/x/hono@v3.0.0-rc.3/utils/url.ts": "120cfd1297f91dc269454ad4bc3fabb54593cd9994ec2e6c4f56b6d9018419a0", + "https://deno.land/x/hono@v3.0.0-rc.3/validator/rule.ts": "a6614973170e1e4b71e260a678c1b28aecfd17053273e59bf99f1382b4f74eaa", + "https://deno.land/x/hono@v3.0.0-rc.3/validator/sanitizer.ts": "da03fdd70baa6d2f178d616a9f35cea1028a15d1429339ee3c3f9eff9aded38f", + "https://deno.land/x/hono@v3.0.0-rc.3/validator/schema.ts": "14200fd2e40022534f609b1331cd2058f87e060d448d0949bd56d80ad122d1ec", + "https://deno.land/x/hono@v3.0.0-rc.3/validator/validator.ts": "e29a871c60f98cc393638d334194d21c8aafe461765301e441f5c0fce65fff4a", + "https://deno.land/x/oak@v11.1.0/application.ts": "0a728331822b8e27727ceec48a8499657c3163fc48fd379a8a9578a75f3cdb62", + "https://deno.land/x/oak@v11.1.0/body.ts": "78402a4936accb80372c4944384658105604352d6783de7ff1e36b8832dd93c9", + "https://deno.land/x/oak@v11.1.0/buf_reader.ts": "7cf96aa0ac670b75098113cf88a291a68332cc45efa8a9698f064ac5b8098a0f", + "https://deno.land/x/oak@v11.1.0/content_disposition.ts": "8b8c3cb2fba7138cd5b7f82fc3b5ea39b33db924a824b28261659db7e164621e", + "https://deno.land/x/oak@v11.1.0/context.ts": "014d1ce40e62a7901411425541b0d5a08018968a330595bd686f8d00222a35bb", + "https://deno.land/x/oak@v11.1.0/cookies.ts": "d9f94b99f26c6169c6982ce12323c41a548d001bfc28f464264c22dc3dbf2181", + "https://deno.land/x/oak@v11.1.0/deps.ts": "b897b0f2bec99cd8b402b279b7f21de955d98cbd72835b6c912be5e11c26148b", + "https://deno.land/x/oak@v11.1.0/etag.ts": "19918f5e1964e3fe6c9fe524a88ffbf9900ce1dfe4146b187b2a86256bb6b663", + "https://deno.land/x/oak@v11.1.0/headers.ts": "f50fb05614432bda971021633129aa2e8737e0844e0f01c27a937997b4d8dd4f", + "https://deno.land/x/oak@v11.1.0/helpers.ts": "42212afa07a560b2958359cc19577417e89d9574d6579551a0af36ff7f00cc6e", + "https://deno.land/x/oak@v11.1.0/http_request.ts": "0831c828816fcb58a5aa8361c6865c4151f4c8b59fabcef2e2cd235bb28170c5", + "https://deno.land/x/oak@v11.1.0/http_server_flash.ts": "e312754acad26d3d70f243d657547e697921f67f0a2179dbec41a20a3228fd79", + "https://deno.land/x/oak@v11.1.0/http_server_native.ts": "549dffcd2db5cbb0e44ad50cf9c54956b42a10450b1ac66e1362e32a073c8c1b", + "https://deno.land/x/oak@v11.1.0/http_server_native_request.ts": "07910ea2ed51af6c4e69addf9015cdd8d2b5c9ee03fd4993e386834a129a9eb6", + "https://deno.land/x/oak@v11.1.0/isMediaType.ts": "62d638abcf837ece3a8f07a4b7ca59794135cb0d4b73194c7d5837efd4161005", + "https://deno.land/x/oak@v11.1.0/keyStack.ts": "fa0d5898fb8ba34de1c9cdcf4b2e8434952dc9931671858d33560368784a22ef", + "https://deno.land/x/oak@v11.1.0/mediaTyper.ts": "042b853fc8e9c3f6c628dd389e03ef481552bf07242efc3f8a1af042102a6105", + "https://deno.land/x/oak@v11.1.0/middleware.ts": "de14f045a2ddfe845d89b5d3140ff52cbcc6f3b3965391106ce04480f9786737", + "https://deno.land/x/oak@v11.1.0/middleware/proxy.ts": "b927232f97ec18af4185d7912e45b1191e3ffe24a9c875262ad524211b1274c9", + "https://deno.land/x/oak@v11.1.0/mod.ts": "de52855c8f626e30ba683fb265c0a0773ba2f5f117b3549b7d9c857edba58338", + "https://deno.land/x/oak@v11.1.0/multipart.ts": "98fe9f226de8c26a16d067027b69fb1e34ad8c4055767dd157907d06cea36f9a", + "https://deno.land/x/oak@v11.1.0/range.ts": "68a6df7ab3b868843e33f52deb94c3d4cab25cb9ef369691990c2ac15b04fafb", + "https://deno.land/x/oak@v11.1.0/request.ts": "5852ad36389b48e0428a6f3c90854d01f10d1b15949b56001e1e75c2a00ef0f9", + "https://deno.land/x/oak@v11.1.0/response.ts": "867d81f7eb0c65c7b8e0e0e9e145ededd5b6daa9ad922e6adc6a36a525f439a6", + "https://deno.land/x/oak@v11.1.0/router.ts": "187522a549f6c179ff01d321882a8bfacbfb7f3e24b004ec4534a3613c7f9b0e", + "https://deno.land/x/oak@v11.1.0/send.ts": "7ef2591792426d62add91536bb434566d4b224247ca343fdd63e486f9d4e9446", + "https://deno.land/x/oak@v11.1.0/server_sent_event.ts": "948b0fe4cb3fe38c7db15e476eb3b7671ef20e566d130e9f701d7c0146aa47dd", + "https://deno.land/x/oak@v11.1.0/structured_clone.ts": "ecf42598652b8082f37252cb873d6e257ad728e6fe73c6bd61f343d94501fbde", + "https://deno.land/x/oak@v11.1.0/testing.ts": "7612656efd2975f7a2e6848609f5971922dbec46b76372c5c623202fdd7b9a85", + "https://deno.land/x/oak@v11.1.0/types.d.ts": "41951a18c3bfdb11e40707cab75da078ba8a4907cd7d4e11d8536bc2db0dde05", + "https://deno.land/x/oak@v11.1.0/util.ts": "3af8c4ed04c6cc2bedbe66e562a77fc59c72df31c55a902a63885861ca1639d6", + "https://deno.land/x/path_to_regexp@v6.2.1/index.ts": "894060567837bae8fc9c5cbd4d0a05e9024672083d5883b525c031eea940e556", + "https://esm.sh/cheerio@0.22.0": "5a2f1f7dcd4c968f549ec0db3b048aa1012b8816ad46e885e23fdc8facb1e32c", + "https://esm.sh/cheerio@1.0.0-rc.12": "0839e28c3fb4b4cde0f5f4dd7d1c8e1046c1bab9e46a70a04fb6fd100c485724", + "https://esm.sh/v102/@types/cheerio@0.22.31/index.d.ts": "c77167f66a3edb66ebe46a15f791dc3d0a1d1ecf147c9264f668bb251c449bd6", + "https://esm.sh/v102/boolbase@1.0.0/deno/boolbase.js": "c2de9c6051e43e825cebf96303dccc8c84d84db898ee48f19cb64a52df887f31", + "https://esm.sh/v102/cheerio-select@2.1.0/deno/cheerio-select.js": "2fec7aa583d56592225b7429a2821c20042cd65ca446c35d6529d163dfd61735", + "https://esm.sh/v102/cheerio-select@2.1.0/lib/index.d.ts": "5c039892d0096a71b52d8184d3d2408eef83e4c6ec35670db03175a80be6e60d", + "https://esm.sh/v102/cheerio@0.22.0/deno/cheerio.js": "002b7f2816c0abbd5962070985865ac3e52af2de25c6b045c671be96e5181cc7", + "https://esm.sh/v102/cheerio@1.0.0-rc.12/deno/cheerio.js": "cfeb297762a254f2e216c800dedb9b3840f3a269069a0e65a62440b101c3ef55", + "https://esm.sh/v102/cheerio@1.0.0-rc.12/deno/lib/utils.js": "600cb799f2a466b2af3ab761439e5ae8a7645764fe68d99cc2f44262b0cf8291", + "https://esm.sh/v102/cheerio@1.0.0-rc.12/lib/api/attributes.d.ts": "8ef8b9c20dfa57661df423e79e45f681ad33c714ace199b973ed9808463ae45d", + "https://esm.sh/v102/cheerio@1.0.0-rc.12/lib/api/css.d.ts": "af4e53fc738806575cf72b0348618026ebe541119532c432c9a6a1697f145b11", + "https://esm.sh/v102/cheerio@1.0.0-rc.12/lib/api/forms.d.ts": "e0affe9609c143266dde4d1d3ce353bf1144321fc60f8cda8a0c07275943f6a9", + "https://esm.sh/v102/cheerio@1.0.0-rc.12/lib/api/manipulation.d.ts": "d3d6a4dde62d7619cd8d5c9d65951311ea7a259a896ce873edd14da02449e611", + "https://esm.sh/v102/cheerio@1.0.0-rc.12/lib/api/traversing.d.ts": "0fc8540c096d5a585bd4e7919e850c35c9bc189de75930d6b8f581f331a4f0bf", + "https://esm.sh/v102/cheerio@1.0.0-rc.12/lib/cheerio.d.ts": "5ec1bf16a89ec0050f400d5ae83d033ab696e06632e01087dfc0b4fa67686007", + "https://esm.sh/v102/cheerio@1.0.0-rc.12/lib/index.d.ts": "3c3d4dc99b78bec0ce95b850c35745938d6ea225a5ed278b78669e5cf5a4f8c0", + "https://esm.sh/v102/cheerio@1.0.0-rc.12/lib/load.d.ts": "c30cd58287b71c7ccb03dcc95ab1383f93347113807d5af2ce3e7f8e3df377c2", + "https://esm.sh/v102/cheerio@1.0.0-rc.12/lib/options.d.ts": "bb3e452cf32d92559f6b169817947de5ad8f741cdd4a55f9d8e3904b3afec2b9", + "https://esm.sh/v102/cheerio@1.0.0-rc.12/lib/static.d.ts": "198b7820e45b3cc8a3db00cf9908d9333bbafca541a7b66730f43bade0fefb71", + "https://esm.sh/v102/cheerio@1.0.0-rc.12/lib/types.d.ts": "683b7dd072621c88e3a85abb6b48aaca698767a6f604330758697186278d0b94", + "https://esm.sh/v102/css-select@1.2.0/deno/css-select.js": "966c3d9134b00356a172f95587fc743c7ed774732ce06f30a50a67dbc33dbfc0", + "https://esm.sh/v102/css-select@5.1.0/deno/css-select.js": "a49ee3c29bce78fce1557e270017dd62888c89027aaf362da7005374b383b337", + "https://esm.sh/v102/css-select@5.1.0/lib/index.d.ts": "fc057dca7a092a559e4163cc71eec31a370e9ae2cd380f906987b042eb6b58a5", + "https://esm.sh/v102/css-select@5.1.0/lib/pseudo-selectors/aliases.d.ts": "22cfc60f2b8fcaf300f1bcc8f53b97bd9fbefd5da9f298979709ceaa04e26b45", + "https://esm.sh/v102/css-select@5.1.0/lib/pseudo-selectors/filters.d.ts": "a16a447cc2feb1b687f577635d06eb13d4da54cd822c6a29497ff699b4fce7b8", + "https://esm.sh/v102/css-select@5.1.0/lib/pseudo-selectors/index.d.ts": "3bf513cc242ffde32ca83ec6c57e67db6efc7470a545fcbbb7565dae036869b0", + "https://esm.sh/v102/css-select@5.1.0/lib/pseudo-selectors/pseudos.d.ts": "1dab7198656c79af0f5c4b6db6ed18d5522e470d37517d4309dc662328e2561e", + "https://esm.sh/v102/css-select@5.1.0/lib/types.d.ts": "89fff8932ff264f1e014aed511f98062f31c3f72eab7a6ab8c2f250962443d14", + "https://esm.sh/v102/css-what@2.1.3/deno/css-what.js": "977aa0030042272b13be8cad988f5de27912e9303080eccd16fde7067ef0e4fc", + "https://esm.sh/v102/css-what@6.1.0/deno/css-what.js": "b748f3252b086c97e0acf4dcb786fd65e786d9c269e095a6454bbc9cd64bcfe3", + "https://esm.sh/v102/css-what@6.1.0/lib/es/index.d.ts": "dd85117592208130bfbcff4bf22b517783bcce8fc8521a5881783d33701e1f8a", + "https://esm.sh/v102/css-what@6.1.0/lib/es/parse.d.ts": "0f32c1fca455670db2f6fac2b04e5a05b7b73ad2eae781d1fafb64d24dc65c64", + "https://esm.sh/v102/css-what@6.1.0/lib/es/stringify.d.ts": "ff26d3761151ef55a86489fc64aea60dedbab92e37321a4c7e7fe91785535209", + "https://esm.sh/v102/css-what@6.1.0/lib/es/types.d.ts": "65e53618d67a1da2db60d5a47ac408e642468faa6b179935d528b9d43a760177", + "https://esm.sh/v102/dom-serializer@0.2.2/deno/dom-serializer.js": "b425a4dc1c64e65977aa4c085a4e353de5d8eaf24ac73bd3a9eec489ed443548", + "https://esm.sh/v102/dom-serializer@2.0.0/deno/dom-serializer.js": "7b619bd86ce1a05b485fa4cbbd4d0b9032bfef77ee044ec3a36b62739ebed7af", + "https://esm.sh/v102/dom-serializer@2.0.0/lib/index.d.ts": "632c167874e2be808abee6f3d78a0069d705f426015c205c69fc1c6c57f2d06c", + "https://esm.sh/v102/domelementtype@1.3.1/deno/domelementtype.js": "509d98eb79ab5388f367ec1b02bd7acc97835ee0bb46da9a1e7b9ce0e15e6ed6", + "https://esm.sh/v102/domelementtype@2.3.0/deno/domelementtype.js": "2bbc5ada9929825ac019e137ffdb26fcf04e3eaccaf0e8d6786cd1b8bb8b8f63", + "https://esm.sh/v102/domelementtype@2.3.0/lib/index.d.ts": "e307d69c2e131e39db6038b4bd51916c6cd787e01d730ad0c28c60491d0accf2", + "https://esm.sh/v102/domhandler@2.4.2/deno/domhandler.js": "fa6ed1123b128bec6efc6413c199d0678a1d34efb20f2fb840ccef0e2b7721c3", + "https://esm.sh/v102/domhandler@5.0.3/deno/domhandler.js": "cf188b785084294631e5dbc6edfda23be1eb3fff095282537ae55225114395e8", + "https://esm.sh/v102/domhandler@5.0.3/lib/index.d.ts": "587a74d5be3d1ff7904170380e0a40e69ca29c3186e88c9f360462a920051348", + "https://esm.sh/v102/domhandler@5.0.3/lib/node.d.ts": "55f7683e7321076a6fbe5110aa7f8771772441129bca9bd4285320a6d1683390", + "https://esm.sh/v102/domutils@1.5.1/deno/domutils.js": "b6459771e6c020e3928d67113092a43406d8eed179dea10b23338846d02d16c5", + "https://esm.sh/v102/domutils@1.7.0/deno/domutils.js": "18cffd7104709a952f630e35ab5cc2588b38173086763edb844c5518678bf081", + "https://esm.sh/v102/domutils@3.0.1/deno/domutils.js": "b27f8aa0607c839757013be7f35beecb6825457d383cf87f4903148175d6aab5", + "https://esm.sh/v102/domutils@3.0.1/lib/feeds.d.ts": "db0999852041a10e586644d13cc8ba86444a0a51a5f086333c5c4d416e68b989", + "https://esm.sh/v102/domutils@3.0.1/lib/helpers.d.ts": "f3b560ce8385cf26bee74cda6bdaa219b1cc46261ab77059cf3aa07150d45b00", + "https://esm.sh/v102/domutils@3.0.1/lib/index.d.ts": "58996a89198f6560d407fc41b874103bc6016ab5a0829675f5c419a670a5eb87", + "https://esm.sh/v102/domutils@3.0.1/lib/legacy.d.ts": "a6647f8788b9ff0bbb9df729052d1e7e138c1385d82ee1ea071869b143bb8080", + "https://esm.sh/v102/domutils@3.0.1/lib/manipulation.d.ts": "0cc941c2a33b28ccb4b03045d3c78c2c7b5210da8b1134323123cc4be1395fde", + "https://esm.sh/v102/domutils@3.0.1/lib/querying.d.ts": "990a0a5486eef58cb9834f5f4b656eca99ddc14f9b110b57a14f5226de87fe4b", + "https://esm.sh/v102/domutils@3.0.1/lib/stringify.d.ts": "cf4fabbdec72b7743c6cf1aca5f365d639d92f997b5da4cec90665663885e65f", + "https://esm.sh/v102/domutils@3.0.1/lib/traversal.d.ts": "b857b555a4ee710d58e9d7e473698c6e1d9f57691d0f11fd89ca25177ee37ee8", + "https://esm.sh/v102/entities@1.1.2/deno/lib/decode_codepoint.js": "9265815487821210a6abe0ea5fd5bfd3684e95e573673ddb34a171faf1163562", + "https://esm.sh/v102/entities@1.1.2/deno/maps/decode.json.js": "fb17fcb6478440e724bdd42d4f0a80671876d97dcda440087a324c47e3d2b92c", + "https://esm.sh/v102/entities@1.1.2/deno/maps/entities.json.js": "d4d25e195dcb52fe6b5a982c33d3e8f17b0d6d3a8c0e55a5f68bdd169a50dcb6", + "https://esm.sh/v102/entities@1.1.2/deno/maps/legacy.json.js": "edde0f2810fa8241131f414f55d9a2d1fe10a4ab6db3989aafe1550e66433e96", + "https://esm.sh/v102/entities@1.1.2/deno/maps/xml.json.js": "bbc13f3da284a487f2578723efbfdcf0627001bdd53ce1360aa63f8ef33bcf2b", + "https://esm.sh/v102/entities@2.2.0/deno/entities.js": "b0dc118f36dbe97389918ed4c225ac3dcf64fc9aff658ceab5ce7763a672d551", + "https://esm.sh/v102/entities@4.4.0/deno/entities.js": "ecd597a9def9f23216f11eb50f806d1c9afc634a882891e4b7596513766a50be", + "https://esm.sh/v102/entities@4.4.0/deno/lib/decode.js": "899639d51d3861f1dae620e9dfa4b8ca1651d34a1c9465dcfd7226dba31c2459", + "https://esm.sh/v102/entities@4.4.0/deno/lib/escape.js": "3046762ed5a3ccdbb174c5595b1c15d3c0bde7e897130434d0dfca63a1af1aea", + "https://esm.sh/v102/htmlparser2@3.10.1/deno/htmlparser2.js": "10276ed6c85fd83110cd63d9f24f56422a43e3e469e86a1c58ebd7c1d026be80", + "https://esm.sh/v102/htmlparser2@8.0.1/deno/htmlparser2.js": "500441e6c34b3d5dca24d12a23d461085c6770d24708718829b6617b9a4c9084", + "https://esm.sh/v102/htmlparser2@8.0.1/lib/Parser.d.ts": "9055d451e782af8e471d588d05c3d9196a0f5c0f94c61c8f9dca34ba87ab1146", + "https://esm.sh/v102/htmlparser2@8.0.1/lib/Tokenizer.d.ts": "41787f4904cb436cf92cba22f574829aeb7a527138e1dd228a2084e796c11bb8", + "https://esm.sh/v102/htmlparser2@8.0.1/lib/index.d.ts": "e1601ec1e18ef7825f0e5981be1639ea25497862445a7ca3f07a2a4ac034de7f", + "https://esm.sh/v102/inherits@2.0.4/deno/inherits.js": "ac5b8191d9ca26501c02ad35c6f6ab3204bb3c2aecbd29c1d63f6097870c7bfb", + "https://esm.sh/v102/lodash.assignin@4.2.0/deno/lodash.assignin.js": "723c0068c49a17cf6df459dc221ff37ccd0cf06d6705d49f82002ef1723d8baf", + "https://esm.sh/v102/lodash.bind@4.2.1/deno/lodash.bind.js": "ba49644f12630d00dfd0036332612c2454868334762e9e9558631117779efe46", + "https://esm.sh/v102/lodash.defaults@4.2.0/deno/lodash.defaults.js": "a8ec7a5654ef7fd4cd1c93e80f2add623256f67faede6153ebcc53281e5de558", + "https://esm.sh/v102/lodash.filter@4.6.0/deno/lodash.filter.js": "255646b78f0a4bd2614d22710eb4e4db1b89281c96df98b0c7edb3e26cd665e1", + "https://esm.sh/v102/lodash.flatten@4.4.0/deno/lodash.flatten.js": "ab61e0e79aef5e2612dee22eb1a220a8b6c88e7c57329696f415df4bf85d0f6b", + "https://esm.sh/v102/lodash.foreach@4.5.0/deno/lodash.foreach.js": "0625fdbf9b068b10336ddf344b061921c45ab616924065bb40309dce1564fae7", + "https://esm.sh/v102/lodash.map@4.6.0/deno/lodash.map.js": "24c1639d42530c2e2d4d70a8be29a95f37378125f86a68635c076c93a4ced00e", + "https://esm.sh/v102/lodash.merge@4.6.2/deno/lodash.merge.js": "2f90d067848e24658a962cad59dfed834e8ae20e45dddeea21f50f9070a5b95f", + "https://esm.sh/v102/lodash.pick@4.4.0/deno/lodash.pick.js": "dff04f605763c35d3e06e46813e99c59a221661ef0b7562d9f6ec7bb1a7c420e", + "https://esm.sh/v102/lodash.reduce@4.6.0/deno/lodash.reduce.js": "98d5f3cfd4f215512b27b24476df525fb3c81066cc5d9c81abba40e4961d58b7", + "https://esm.sh/v102/lodash.reject@4.6.0/deno/lodash.reject.js": "bbac60f30327d9baebba5bfe188d118ec992beaa46b1b670b82a618cc2ffc055", + "https://esm.sh/v102/lodash.some@4.6.0/deno/lodash.some.js": "3550a793fe0c1d8cba66e897fb0a398fd6ee99c45ec0e7c365acac1e31771d44", + "https://esm.sh/v102/node.ns.d.ts": "0fb081f0cd2150931bd54baa04f31466abd9ca701fd9060d07931402cf8367ba", + "https://esm.sh/v102/node_buffer.js": "445d389cb8c9f9fad5ff869ca2c2a863d178d410795ebd5f2f39d9a029156d56", + "https://esm.sh/v102/nth-check@1.0.2/deno/nth-check.js": "aefc1af9adc80513700aea38e5225ca86938ff3f9f9784cc03e9aaeca5d16c06", + "https://esm.sh/v102/nth-check@2.1.1/deno/nth-check.js": "a7aa78a04c30f4cddecb2f157b46b3b996e7589f3c817fcdcf5bcc403649c67e", + "https://esm.sh/v102/parse5-htmlparser2-tree-adapter@7.0.0/deno/parse5-htmlparser2-tree-adapter.js": "4e88e69baf55e64eb7ef949f745ebaa2c8321954ea738e12dc8507d51635c2b6", + "https://esm.sh/v102/parse5@7.1.2/deno/parse5.js": "32d7bfec42e23826218ea371f638487fdc5be1e9a6ba973366421aad3c2633f9", + "https://esm.sh/v102/readable-stream@3.6.0/deno/readable-stream.js": "a0c7f085c67f708f5f690555c4a3d106ef2200530ac60e8293583923319f7d4b", + "https://esm.sh/v102/util-deprecate@1.0.2/deno/util-deprecate.js": "465830ef20bb4e16da7d89898a5359736a8639c450e10db4fb3634bfbd8dd987" + } +} diff --git a/src/controllers/jobs.controller.ts b/src/controllers/jobs.controller.ts new file mode 100644 index 0000000..c117d49 --- /dev/null +++ b/src/controllers/jobs.controller.ts @@ -0,0 +1,65 @@ +import { Context } from 'https://deno.land/x/oak@v11.1.0/mod.ts'; +import { ScraperService } from '../services/Scraper.service.ts'; + +export async function getJobs(ctx: Context): Promise { + const scraper = new ScraperService('https://www.getonbrd.com'); + const $ = await scraper.execute('/empleos/programacion'); + + const jobsResultList = $( + 'body #right-col .main-container ul.sgb-results-list>div', + ); + + const jobs = $(jobsResultList).map((_i, el) => { + let elCheerio = $(el); + elCheerio = elCheerio.children('a'); + + const elInfo = elCheerio + .children('.gb-results-list__main') + .children('.gb-results-list__info'); + + // const logo = elCheerio + // .children('.gb-results-list__main') + // .children('.gb-results-list__avatar') + // .children('img.gb-results-list__img') + // .attr('src'); + + const title: string = elInfo + .children('.gb-results-list__title') + .children('strong') + .text(); + + const [role, time]: string[] = elInfo + .children('.gb-results-list__title') + .children('span') + .text() + .split('|') + .map((t) => t.trim()); + + const textInfo: string = elInfo + .children('div') + .text(); + + const [companyName, ...locations]: string[] = textInfo + .split('\n') + .filter((t) => t); + + const location = locations + .filter((_t, i) => i > 0) + .join(' '); + + const url: string = elCheerio.attr('href') || ''; + + return { + title, + role, + time, + companyName, + location, + url, + }; + }).toArray(); + + ctx.response.body = { + jobs, + }; +} diff --git a/src/main.ts b/src/main.ts new file mode 100644 index 0000000..843c50c --- /dev/null +++ b/src/main.ts @@ -0,0 +1,9 @@ +import { Server } from './services/Server.service.ts'; + +try { + const server = new Server(); + + server.run(); +} catch (error) { + console.log((error as Error).message); +} diff --git a/src/routes/index.ts b/src/routes/index.ts new file mode 100644 index 0000000..2def478 --- /dev/null +++ b/src/routes/index.ts @@ -0,0 +1,8 @@ +import { Router } from 'https://deno.land/x/oak@v11.1.0/mod.ts'; +import { getJobs } from '../controllers/jobs.controller.ts'; + +const router = new Router(); + +router.get('/jobs', getJobs); + +export const routes = router.routes(); diff --git a/src/services/Scraper.service.ts b/src/services/Scraper.service.ts new file mode 100644 index 0000000..43d7fdd --- /dev/null +++ b/src/services/Scraper.service.ts @@ -0,0 +1,17 @@ +import { CheerioAPI, load } from 'https://esm.sh/cheerio@1.0.0-rc.12'; + +export class ScraperService { + private baseUrl: string; + + constructor(baseUrl: string) { + this.baseUrl = baseUrl; + } + + public async execute(path: string): Promise { + const pathname: string = path.startsWith('/') ? path : `/${path}`; + const response = await fetch(this.baseUrl + pathname); + const html: string = await response.text(); + const $ = load(html); + return $; + } +} diff --git a/src/services/Server.service.ts b/src/services/Server.service.ts new file mode 100644 index 0000000..888c9bd --- /dev/null +++ b/src/services/Server.service.ts @@ -0,0 +1,32 @@ +import { Application } from 'https://deno.land/x/oak@v11.1.0/mod.ts'; +import { routes } from '../routes/index.ts'; + +export class Server { + private readonly app = new Application(); + + constructor() { + this.middlewares(); + this.routes(); + } + + private middlewares() { + // Asegurar que todas las peticiones empiecen por "/api" + this.app.use(async (ctx, next) => { + const path: string[] = ctx.request.url.pathname.split('/'); + if (path[1] === 'api') { + ctx.request.url.pathname = `${path[0]}/${path[2]}`; + await next(); + } + }); + } + + private routes(): void { + this.app.use(routes); + } + + public run(): void { + const port = 8000; + this.app.listen({ hostname: '0.0.0.0', port }); + console.log(`Sever listening on port ${port}`); + } +}