From 916ad4f4b0d3f82f518ec0e268f90e6ff1fc252c Mon Sep 17 00:00:00 2001 From: asos-craigmorten Date: Fri, 29 May 2020 02:56:53 +0100 Subject: [PATCH] feat: migrate to tested third party module ports for some deps. --- .github/CHANGELOG.md | 4 + deps.ts | 9 +- lock.json | 272 ++++++++++++----------- src/middleware/bodyParser/hasBody.ts | 17 -- src/middleware/bodyParser/json.ts | 7 +- src/middleware/bodyParser/raw.ts | 4 +- src/middleware/bodyParser/read.ts | 12 +- src/middleware/bodyParser/text.ts | 4 +- src/middleware/bodyParser/typeChecker.ts | 17 +- src/middleware/bodyParser/urlencoded.ts | 8 +- src/middleware/serveStatic.ts | 14 +- src/response.ts | 2 +- src/utils/contentDisposition.ts | 2 +- src/utils/encodeUrl.ts | 72 ------ src/utils/escapeHtml.ts | 85 ------- src/utils/finalHandler.ts | 3 +- test/units/bodyParser.json.test.ts | 5 + test/units/bodyParser.raw.test.ts | 3 + test/units/bodyParser.text.test.ts | 3 + test/units/bodyParser.urlencoded.test.ts | 3 + version.ts | 2 +- 21 files changed, 200 insertions(+), 348 deletions(-) delete mode 100644 src/middleware/bodyParser/hasBody.ts delete mode 100644 src/utils/encodeUrl.ts delete mode 100644 src/utils/escapeHtml.ts diff --git a/.github/CHANGELOG.md b/.github/CHANGELOG.md index 7dd33075..0c0cfd29 100644 --- a/.github/CHANGELOG.md +++ b/.github/CHANGELOG.md @@ -1,5 +1,9 @@ # ChangeLog +## [0.6.1] - 29-05-2020 + +- refactor: Replace internal ports of NPM modules with tested third party module equivalents. + ## [0.6.0] - 29-05-2020 - feat: deliver content negotiation with the `res.format()` and `res.vary()` methods. diff --git a/deps.ts b/deps.ts index 6960aef4..ae9718c3 100644 --- a/deps.ts +++ b/deps.ts @@ -34,9 +34,14 @@ export { contentType, charset, } from "https://deno.land/x/media_types@v2.3.1/mod.ts"; -export { createHttpError } from "https://deno.land/x/oak@v4.0.0/httpError.ts"; +export { createError } from "https://deno.land/x/http_errors/mod.ts"; export { Accepts } from "https://deno.land/x/accepts@master/mod.ts"; -export { typeofrequest } from "https://deno.land/x/type_is@master/mod.ts"; +export { + typeofrequest, + hasBody, +} from "https://deno.land/x/type_is@master/mod.ts"; export { isIP } from "https://deno.land/x/isIP@master/mod.ts"; export { vary } from "https://deno.land/x/vary@master/mod.ts"; export { lookup } from "https://deno.land/x/media_types@v2.3.3/mod.ts"; +export { escapeHtml } from "https://deno.land/x/escape_html/mod.ts"; +export { encodeUrl } from "https://deno.land/x/encodeurl/mod.ts"; diff --git a/lock.json b/lock.json index 7bfed3da..9baa2b2d 100644 --- a/lock.json +++ b/lock.json @@ -1,148 +1,162 @@ { + "https://deno.land/std@0.52.0/testing/asserts.ts": "1dc683a61218e2d8c5e9e87e3602a347000288fb207b4d7301414935620e24b3", + "https://deno.land/x/evt@1.7.9/lib/types/interfaces/CtxLike.ts": "666492e3600aae3ae75ebfafd14816acb87a738b920a45c4ed060cabc12c02c3", + "https://deno.land/std@0.53.0/path/win32.ts": "61248a2b252bb8534f54dafb4546863545e150d2016c74a32e2a4cfb8e061b3f", + "https://deno.land/x/media_types@v2.3.1/mod.ts": "d8bd0fbb6047902b02ee2f30d1689adbab169893c418639040ef22bfa92e9896", + "https://deno.land/x/isIP@master/mod.ts": "bd55c2180f7275930d9b1ef0b8f031108625ae3f9b87a1fa75cc8ee15d485ff8", + "https://deno.land/std@0.51.0/path/common.ts": "95115757c9dc9e433a641f80ee213553b6752aa6fbb87eb9f16f6045898b6b14", + "https://deno.land/std@0.51.0/path/_constants.ts": "f6c332625f21d49d5a69414ba0956ac784dbf4b26a278041308e4914ba1c7e2e", + "https://deno.land/std@0.51.0/path/mod.ts": "a789541f8df9170311daa98313c5a76c06b5988f2948647957b3ec6e017d963e", + "https://deno.land/std@0.52.0/testing/diff.ts": "8f591074fad5d35c0cafa63b1c5334dc3a17d5b934f3b9e07172eed9d5b55553", + "https://deno.land/std@0.52.0/bytes/mod.ts": "5ad1325fc232f19b59fefbded30013b4bcd39fee4cf1eee73d6a6915ae46bdcd", + "https://deno.land/x/media_types@v2.3.3/mod.ts": "d8bd0fbb6047902b02ee2f30d1689adbab169893c418639040ef22bfa92e9896", + "https://deno.land/std@0.52.0/path/_constants.ts": "f6c332625f21d49d5a69414ba0956ac784dbf4b26a278041308e4914ba1c7e2e", + "https://deno.land/x/evt@1.7.9/lib/Evt.factorize.ts": "878e0577d223f3b295b82d8d1d79f988e57f95148de93568ef1da4580aaf7e0f", + "https://deno.land/std@0.52.0/async/deferred.ts": "ac95025f46580cf5197928ba90995d87f26e202c19ad961bc4e3177310894cdc", + "https://deno.land/std/http/server.ts": "59d5ea54096c65db952aca39b1d3c91e5033592fec5307ebcd06149748d59b78", + "https://deno.land/x/evt@1.7.9/lib/importProxy.ts": "6f57cee2ada724db9575242b44bd7bf598161ea46d8d12e10264fa51a6e7b01f", "https://deno.land/x/evt@1.7.9/lib/LazyStatefulEvt.ts": "3dbdd8f4641d110fa6123628c8abbddddb6cd44c0613916358736be6650bf7f0", - "https://deno.land/std@0.51.0/http/cookie.ts": "71c7b615837acfa2689e55691e8a1741e27cba9c48239f80bb168d77dcc65801", - "https://deno.land/x/evt@1.7.9/lib/types/index.ts": "2f1bdb1e24011cc0ee58f5c2b40b0a4a92ea082873931ad6d391e7899323d8e9", - "https://deno.land/std@0.51.0/http/_io.ts": "025d3735c6b9140fc4bf748bc41dd4e80272de1bc398773ea3e9a8a727cd6032", - "https://deno.land/std@0.53.0/path/_util.ts": "b678a7ecbac6b04c1166832ae54e1024c0431dd2b340b013c46eb2956ab24d4c", - "https://deno.land/std@0.52.0/path/win32.ts": "61248a2b252bb8534f54dafb4546863545e150d2016c74a32e2a4cfb8e061b3f", - "https://deno.land/x/media_types/mod.ts": "d8bd0fbb6047902b02ee2f30d1689adbab169893c418639040ef22bfa92e9896", + "https://deno.land/std@0.53.0/testing/diff.ts": "8f591074fad5d35c0cafa63b1c5334dc3a17d5b934f3b9e07172eed9d5b55553", + "https://deno.land/x/evt@1.7.9/lib/types/Operator.ts": "384bd0410ca2ed861a883619926b6cad4b58c9159b148348641bfc9baba6f57b", + "https://deno.land/x/evt@1.7.9/lib/Evt.ts": "6dcb5c894709d7d7c23b210df5e30b23a8796b94c3b7c9b873ff906d6ae45a2b", + "https://deno.land/std@0.52.0/path/mod.ts": "a789541f8df9170311daa98313c5a76c06b5988f2948647957b3ec6e017d963e", + "https://deno.land/std/datetime/mod.ts": "b533eb7f7627799e5030131ae80dae4d73e100507a3a1fddc1a34be677de7b1b", + "https://deno.land/x/evt@1.7.9/lib/util/compose.ts": "b2ff006b8725190c0df8d0492f6f452eb42aa5f634cf25759b9a5fc81ea56762", + "https://deno.land/std@0.53.0/path/common.ts": "95115757c9dc9e433a641f80ee213553b6752aa6fbb87eb9f16f6045898b6b14", + "https://deno.land/x/evt@1.7.9/tools/typeSafety/index.ts": "77f9d2125366756c0e9f48316f32f72761a5fe24e3c230d8efa64cdb09149b47", "https://deno.land/std@0.51.0/testing/asserts.ts": "213fedbb90a60ae232932c45bd62668f0c5cd17fc0f2a273e96506cba416d181", + "https://deno.land/x/evt@1.7.9/lib/Evt.newCtx.ts": "3e5e660eacb5af62b0e585a2206d06e5ed4680dadf198f8dcc569d52452f59a4", + "https://deno.land/std@0.52.0/io/bufio.ts": "0be99d122e459c0040fbadb5c984935fd12a662c9b8c7fddd1cde4176c6cff27", + "https://deno.land/x/evt@1.7.9/lib/types/lib.dom.ts": "38978a711746f666da1511afb56a64ac36912e1df8662d4ff735c9e37473a579", "https://raw.githubusercontent.com/garronej/run_exclusive/2.2.4/mod.ts": "1219baae8b08f63804cdb2df9d26936cc7a61194a5d06404cbf38bb4b82e6bec", - "https://deno.land/x/evt@1.7.9/lib/util/genericOperators/throttleTime.ts": "742c8bde694db3032335c21d9152a86c4fcbaad7e0052e2c6752c599ebad8bfd", - "https://deno.land/std@0.53.0/path/interface.ts": "89f6e68b0e3bba1401a740c8d688290957de028ed86f95eafe76fe93790ae450", - "https://deno.land/x/evt@1.7.9/mod.ts": "a287b21f79647774e5d3c23b5f4a512e74eb6124346bd7f898c8615d2fc23dc1", - "https://deno.land/x/accepts@master/mod.ts": "928576bb8b922e900fc629f80050a13248cd3bae0ee05d70e0dc69243e71fe15", - "https://deno.land/x/media_types@v2.3.1/deps.ts": "02a37b0bef1e1aed7afcac7fd482aecd2598722914239ff5ca1cae0a8b7cd2ca", - "https://deno.land/std@0.52.0/path/interface.ts": "89f6e68b0e3bba1401a740c8d688290957de028ed86f95eafe76fe93790ae450", - "https://deno.land/std@0.52.0/path/common.ts": "95115757c9dc9e433a641f80ee213553b6752aa6fbb87eb9f16f6045898b6b14", - "https://deno.land/x/content_type/mod.ts": "5dc435e84b665c2968d6845c573569ddeef65a41baa9a04c51e1c5e927806583", - "https://deno.land/x/oak@v4.0.0/httpError.ts": "618fe5418a462abd2434d9ad36198690ddbb50965f47800aa2833a74d10cf3c2", - "https://deno.land/x/evt@1.7.9/lib/Evt.asPostable.ts": "0a6db703bf1379ec9cd792db2e23356e6c1555cba85ae568ad4b3a8b59c153cf", - "https://deno.land/std@0.52.0/hash/sha1.ts": "c1a97bde767b98b88495470f39c30c37e44ac3984409f120ef65fd84c9d27608", "https://deno.land/std@0.52.0/async/mux_async_iterator.ts": "e2a4c2c53aee22374b493b88dfa08ad893bc352c8aeea34f1e543e938ec6ccc6", - "https://deno.land/std@0.53.0/testing/asserts.ts": "1dc683a61218e2d8c5e9e87e3602a347000288fb207b4d7301414935620e24b3", - "https://deno.land/std@0.51.0/path/glob.ts": "ab85e98e4590eae10e561ce8266ad93ebe5af2b68c34dc68b85d9e25bccb4eb7", - "https://deno.land/x/accepts@master/deps.ts": "230c8e4888c7b745a2b6c33cedc53c25f77fadb089c0dddba978418909497aea", + "https://deno.land/std@0.52.0/http/http_status.ts": "84ae4289053c4f045cd655fd3b05f33ce62c685bdc0eac2210b12d827ffa7157", + "https://deno.land/x/evt@1.7.9/lib/Evt.getCtx.ts": "9d49747a2ef5a98a9f8e2c48c1d0ec026bdd06e02cf9a1156f89870535f77df3", + "https://deno.land/std/async/mod.ts": "bf46766747775d0fc4070940d20d45fb311c814989485861cdc8a8ef0e3bbbab", + "https://deno.land/std/path/common.ts": "95115757c9dc9e433a641f80ee213553b6752aa6fbb87eb9f16f6045898b6b14", + "https://raw.githubusercontent.com/garronej/minimal_polyfills/2.1.0/Set.ts": "2298d1990567c657bdc876a5e5552ad46561b036c2f4b52e901810211b36605f", + "https://deno.land/std@0.52.0/path/interface.ts": "89f6e68b0e3bba1401a740c8d688290957de028ed86f95eafe76fe93790ae450", "https://deno.land/std@0.51.0/path/posix.ts": "b742fe902d5d6821c39c02319eb32fc5a92b4d4424b533c47f1a50610afbf381", - "https://deno.land/x/media_types@v2.3.1/mod.ts": "d8bd0fbb6047902b02ee2f30d1689adbab169893c418639040ef22bfa92e9896", - "https://deno.land/x/negotiator/src/language.ts": "690d0560552fe99e47cbc8d325b92665d9dea56fb451957607966cb7ba9cef6b", - "https://deno.land/std@0.53.0/fmt/colors.ts": "ec9d653672a9a3c7b6eafe53c5bc797364a2db2dcf766ab649c1155fea7a80b2", - "https://deno.land/x/negotiator/mod.ts": "d8b28a0a7b2d75c944cebef8f87a58eeb344974d432fe0dea85e2d98e03daf24", - "https://deno.land/x/media_types@v2.3.3/mod.ts": "d8bd0fbb6047902b02ee2f30d1689adbab169893c418639040ef22bfa92e9896", + "https://deno.land/std/http/http_status.ts": "84ae4289053c4f045cd655fd3b05f33ce62c685bdc0eac2210b12d827ffa7157", + "https://deno.land/x/evt@1.7.9/lib/util/genericOperators/index.ts": "af1fa4c0388fbd3a90c78ed60b78c025ae7ffea6f2592e7821e852b715070c99", + "https://deno.land/x/negotiator/src/encoding.ts": "161e3d4ded71fe2421de9188b9ec2be59558ea99a6c3c89b0124b3fdf4d84899", + "https://raw.githubusercontent.com/garronej/run_exclusive/2.2.4/lib/runExclusive.ts": "6376cf9404bfa900daf26ba2a56ddeb18671b8b111ca62b94fec13ad48c8e0a1", + "https://deno.land/std/path/posix.ts": "b742fe902d5d6821c39c02319eb32fc5a92b4d4424b533c47f1a50610afbf381", + "https://deno.land/std@0.52.0/path/glob.ts": "ab85e98e4590eae10e561ce8266ad93ebe5af2b68c34dc68b85d9e25bccb4eb7", + "https://deno.land/x/media_types@v2.3.1/deps.ts": "02a37b0bef1e1aed7afcac7fd482aecd2598722914239ff5ca1cae0a8b7cd2ca", + "https://deno.land/x/evt@1.7.9/lib/util/genericOperators/throttleTime.ts": "742c8bde694db3032335c21d9152a86c4fcbaad7e0052e2c6752c599ebad8bfd", + "https://deno.land/std/path/glob.ts": "ab85e98e4590eae10e561ce8266ad93ebe5af2b68c34dc68b85d9e25bccb4eb7", + "https://deno.land/x/evt@1.7.9/lib/util/invokeOperator.ts": "072a981806d2814d03f445c3b186b1612926553db08cadba3cf08131ca809f07", + "https://deno.land/x/media_types@v2.3.3/db.ts": "ecbb836ceadc885e53192a9923f054ac2417cbdb1892edf960fd328b1be3f665", + "https://deno.land/x/evt@1.7.9/lib/types/helper/index.ts": "c6177abf99ec1f7ced101b5ddbd551797809f04e72ebf2f2d203e76c521ebd6b", + "https://deno.land/x/media_types/mod.ts": "d8bd0fbb6047902b02ee2f30d1689adbab169893c418639040ef22bfa92e9896", + "https://deno.land/x/evt@1.7.9/lib/util/genericOperators/to.ts": "9f1aa067e713d7ba85d095bbdcfe29191138d138baaad2c0db80fc051b81d282", "https://deno.land/std@0.51.0/testing/diff.ts": "8f591074fad5d35c0cafa63b1c5334dc3a17d5b934f3b9e07172eed9d5b55553", - "https://deno.land/std@0.51.0/io/util.ts": "ae133d310a0fdcf298cea7bc09a599c49acb616d34e148e263bcb02976f80dee", - "https://deno.land/std@0.52.0/fmt/colors.ts": "ec9d653672a9a3c7b6eafe53c5bc797364a2db2dcf766ab649c1155fea7a80b2", - "https://deno.land/std@0.52.0/path/_util.ts": "b678a7ecbac6b04c1166832ae54e1024c0431dd2b340b013c46eb2956ab24d4c", - "https://deno.land/std@0.51.0/bytes/mod.ts": "784b292a65f6879bd39d81cb24590be1140fb4cce74bd4a149f67f2b647ad728", - "https://deno.land/std@0.53.0/path/_constants.ts": "f6c332625f21d49d5a69414ba0956ac784dbf4b26a278041308e4914ba1c7e2e", - "https://deno.land/std@0.51.0/http/http_status.ts": "84ae4289053c4f045cd655fd3b05f33ce62c685bdc0eac2210b12d827ffa7157", - "https://deno.land/x/evt@1.7.9/tools/typeSafety/index.ts": "77f9d2125366756c0e9f48316f32f72761a5fe24e3c230d8efa64cdb09149b47", + "https://deno.land/std/encoding/utf8.ts": "8654fa820aa69a37ec5eb11908e20b39d056c9bf1c23ab294303ff467f3d50a1", + "https://deno.land/x/negotiator/src/charset.ts": "ee56810906ed4fb5ee52abd4dfd8b57485685939c6b63fb2b5d289b971465f67", + "https://deno.land/x/http_errors/mod.ts": "520b6b1c437bb93f26d5581164f36bf0dd01f208884503aafc472b9529f11bae", + "https://deno.land/std@0.52.0/http/_io.ts": "025d3735c6b9140fc4bf748bc41dd4e80272de1bc398773ea3e9a8a727cd6032", "https://deno.land/std@0.52.0/path/separator.ts": "7bdb45c19c5c934c49c69faae861b592ef17e6699a923449d3eaaf83ec4e7919", - "https://deno.land/std@0.51.0/path/common.ts": "95115757c9dc9e433a641f80ee213553b6752aa6fbb87eb9f16f6045898b6b14", - "https://deno.land/x/evt@1.7.9/lib/Evt.asNonPostable.ts": "b4dbaef2ec42b12716e34499a31c26bb09ade16de405aee6368b6fc004b3f758", - "https://deno.land/std@0.52.0/http/http_status.ts": "84ae4289053c4f045cd655fd3b05f33ce62c685bdc0eac2210b12d827ffa7157", - "https://deno.land/x/evt@1.7.9/lib/Evt.ts": "6dcb5c894709d7d7c23b210df5e30b23a8796b94c3b7c9b873ff906d6ae45a2b", - "https://deno.land/x/vary@master/mod.ts": "e7c452694b21336419f16e0891f8ea503adaafc7bde956fb29e1a86f450a68e6", - "https://deno.land/std@0.52.0/path/_constants.ts": "f6c332625f21d49d5a69414ba0956ac784dbf4b26a278041308e4914ba1c7e2e", - "https://deno.land/x/evt@1.7.9/tools/Deferred.ts": "d7fde0179647da5c3b8f85a1ad316304c2ee63991db22f3421ac3c342a98af10", - "https://deno.land/x/evt@1.7.9/lib/types/interfaces/CtxLike.ts": "666492e3600aae3ae75ebfafd14816acb87a738b920a45c4ed060cabc12c02c3", - "https://deno.land/std@0.51.0/async/delay.ts": "35957d585a6e3dd87706858fb1d6b551cb278271b03f52c5a2cb70e65e00c26a", - "https://deno.land/std@0.52.0/testing/diff.ts": "8f591074fad5d35c0cafa63b1c5334dc3a17d5b934f3b9e07172eed9d5b55553", - "https://deno.land/x/evt@1.7.9/lib/types/EventTargetLike.ts": "fc235a64cc580ea667ad98ee930a4f9319ba59332e7184e80b327e7ae7bd134a", - "https://raw.githubusercontent.com/garronej/minimal_polyfills/2.1.0/WeakMap.ts": "3b0cb6ab1348897b5e107e932f53213e1459e9759db0c5eea5d01eb9bd3e0ddb", - "https://deno.land/x/media_types@v2.3.3/deps.ts": "b4d4698240d6c87bdb0c51bb79e288305e945b82a0c94c85dec792bd199fec79", + "https://deno.land/x/accepts@master/deps.ts": "230c8e4888c7b745a2b6c33cedc53c25f77fadb089c0dddba978418909497aea", + "https://deno.land/x/http_errors/deps.ts": "3353be28bb8ccb88f18390a25e8fefbcded7eca9cc5471d3ac17b575fe44b266", + "https://deno.land/std@0.52.0/path/_globrex.ts": "a88b9da6a150b8d8e87a7b9eef794f97b10e709910071bb57f8619dd2d0291dc", + "https://deno.land/std/textproto/mod.ts": "aa585cd8dceb14437cf4499d6620c1fe861140ccfe56125eb931db4cfb90c3b2", + "https://deno.land/std@0.53.0/fmt/colors.ts": "ec9d653672a9a3c7b6eafe53c5bc797364a2db2dcf766ab649c1155fea7a80b2", + "https://deno.land/std/http/cookie.ts": "948e9066409bdd78b1ce99774e8254cddcd41c6b8fd5ac80183e3928e2777d15", + "https://deno.land/std/path/interface.ts": "89f6e68b0e3bba1401a740c8d688290957de028ed86f95eafe76fe93790ae450", + "https://deno.land/std/path/_util.ts": "b678a7ecbac6b04c1166832ae54e1024c0431dd2b340b013c46eb2956ab24d4c", + "https://deno.land/std/path/_globrex.ts": "a88b9da6a150b8d8e87a7b9eef794f97b10e709910071bb57f8619dd2d0291dc", + "https://raw.githubusercontent.com/garronej/minimal_polyfills/2.1.0/Array.prototype.find.ts": "59e93f4825b13e1d473c6a0548b45c34ce86a008e01d24b7809c8b022527dc9c", + "https://deno.land/x/media_typer/mod.ts": "01aebf79f0ecf43897a663dca9730d2dbd2a698eac9d297a6ac26b4b647bb7cc", + "https://deno.land/x/evt@1.7.9/lib/Evt.loosenType.ts": "a43aaa204e80db39a0d1008e1fa0b1d159a66509787dcd046cc9f53a4255b4a7", + "https://deno.land/std@0.53.0/path/separator.ts": "7bdb45c19c5c934c49c69faae861b592ef17e6699a923449d3eaaf83ec4e7919", + "https://deno.land/std@0.53.0/path/interface.ts": "89f6e68b0e3bba1401a740c8d688290957de028ed86f95eafe76fe93790ae450", "https://deno.land/x/media_types/deps.ts": "b4d4698240d6c87bdb0c51bb79e288305e945b82a0c94c85dec792bd199fec79", - "https://raw.githubusercontent.com/garronej/run_exclusive/2.2.4/lib/runExclusive.ts": "6376cf9404bfa900daf26ba2a56ddeb18671b8b111ca62b94fec13ad48c8e0a1", - "https://raw.githubusercontent.com/garronej/minimal_polyfills/2.1.0/Object.is.ts": "e90029a06fb86dd63e5f6b799d87702b7abe2397a220b78f1cfcce35b922f15a", - "https://deno.land/x/evt@1.7.9/tools/typeSafety/typeGuard.ts": "ef91a6cccc54dddbe71339b068f8afea25541d731d8d2c4b72a6109071cbd245", - "https://deno.land/std@0.51.0/path/separator.ts": "7bdb45c19c5c934c49c69faae861b592ef17e6699a923449d3eaaf83ec4e7919", - "https://deno.land/std@0.52.0/path/mod.ts": "a789541f8df9170311daa98313c5a76c06b5988f2948647957b3ec6e017d963e", - "https://deno.land/x/evt@1.7.9/lib/Ctx.ts": "33032a434e595e67f9b570403738a77e0c097cf59b77fc3c9d35a90f1f74230d", - "https://deno.land/std@0.53.0/path/posix.ts": "b742fe902d5d6821c39c02319eb32fc5a92b4d4424b533c47f1a50610afbf381", + "https://deno.land/x/evt@1.7.9/lib/Evt.asPostable.ts": "0a6db703bf1379ec9cd792db2e23356e6c1555cba85ae568ad4b3a8b59c153cf", "https://deno.land/x/evt@1.7.9/lib/LazyEvt.ts": "ecc6b67ecdf05aeebd9f65aa4685688e81dfc458abc7d488f09290319bd58f07", - "https://deno.land/x/evt@1.7.9/tools/typeSafety/exclude.ts": "49a66cf27578c7c9e92b9e841d3229e62962b20b0bd81458e45c282f3db519df", - "https://deno.land/x/evt@1.7.9/lib/types/EvtError.ts": "61eb61e75da34ad69c6950dcfb2e5f8760429cb934d5e600c17e8f65188417cf", - "https://deno.land/std@0.51.0/path/_globrex.ts": "a88b9da6a150b8d8e87a7b9eef794f97b10e709910071bb57f8619dd2d0291dc", - "https://deno.land/x/oak@v4.0.0/deps.ts": "13a2453b29497d706b1f148b8653dca92013975f7c99dd41acb0e009084188bf", - "https://deno.land/x/evt@1.7.9/lib/util/compose.ts": "b2ff006b8725190c0df8d0492f6f452eb42aa5f634cf25759b9a5fc81ea56762", - "https://deno.land/x/media_types@v2.3.3/db.ts": "ecbb836ceadc885e53192a9923f054ac2417cbdb1892edf960fd328b1be3f665", - "https://deno.land/std@0.52.0/path/_globrex.ts": "a88b9da6a150b8d8e87a7b9eef794f97b10e709910071bb57f8619dd2d0291dc", - "https://deno.land/std@0.53.0/path/common.ts": "95115757c9dc9e433a641f80ee213553b6752aa6fbb87eb9f16f6045898b6b14", - "https://deno.land/std@0.52.0/encoding/utf8.ts": "8654fa820aa69a37ec5eb11908e20b39d056c9bf1c23ab294303ff467f3d50a1", - "https://deno.land/std@0.51.0/http/server.ts": "d2b977c100d830262d8525915c3f676ce33f1e986926a3cdbc81323cf724b599", - "https://deno.land/x/evt@1.7.9/lib/Evt.parsePropsFromArgs.ts": "a27cffc27661016584dbfc6224f0bcdba8c39897c034a932587dead38eb73feb", - "https://deno.land/std@0.51.0/hash/sha256.ts": "be221d53ae2d1391ed5c47c368bccd0b79582793b2a736ccdcce8b4fc3a5aef5", - "https://deno.land/x/evt@1.7.9/lib/Evt.factorize.ts": "878e0577d223f3b295b82d8d1d79f988e57f95148de93568ef1da4580aaf7e0f", - "https://deno.land/std@0.51.0/path/_util.ts": "b678a7ecbac6b04c1166832ae54e1024c0431dd2b340b013c46eb2956ab24d4c", - "https://deno.land/std@0.53.0/path/glob.ts": "ab85e98e4590eae10e561ce8266ad93ebe5af2b68c34dc68b85d9e25bccb4eb7", + "https://deno.land/x/evt@1.7.9/lib/Evt.useEffect.ts": "da14d655107d4f9b5757281fbbddebc4ee1615d8113e44bc6645b8079de23ee2", + "https://deno.land/std@0.51.0/path/win32.ts": "61248a2b252bb8534f54dafb4546863545e150d2016c74a32e2a4cfb8e061b3f", + "https://deno.land/std/testing/asserts.ts": "4133876642e3a8b79c0b350104e8c88d2cc7c5f1ab3ae1a7b0bee21674634c5b", + "https://deno.land/x/encodeurl/mod.ts": "b797af240fd3c4b3876b3f32b8c2404601e5503c4a10afa719e54815056685d8", + "https://deno.land/std/async/delay.ts": "35957d585a6e3dd87706858fb1d6b551cb278271b03f52c5a2cb70e65e00c26a", "https://deno.land/x/evt@1.7.9/lib/util/index.ts": "6dfdfc04d8a57ab74add8c57b9265c85dbdce3a8e36b908c2ddb35fa50193ea6", - "https://deno.land/std@0.53.0/path/mod.ts": "a789541f8df9170311daa98313c5a76c06b5988f2948647957b3ec6e017d963e", - "https://deno.land/x/evt@1.7.9/tools/typeSafety/matchVoid.ts": "5b5b8f05957a4aa9638e36e8b7360edb9c69f6bde7de4b81372ecc80512f908f", - "https://deno.land/std@0.51.0/async/deferred.ts": "ac95025f46580cf5197928ba90995d87f26e202c19ad961bc4e3177310894cdc", - "https://deno.land/std@0.51.0/fmt/colors.ts": "127ce39ca2ad9714d4ada8d61367f540d76b5b0462263aa839166876b522d3de", - "https://deno.land/std@0.52.0/async/deferred.ts": "ac95025f46580cf5197928ba90995d87f26e202c19ad961bc4e3177310894cdc", - "https://deno.land/x/evt@1.7.9/tools/typeSafety/id.ts": "5e4b76ff7cb41641224adc8d2d94de8dcdaefd122f686944910e8656d244519c", - "https://deno.land/std@0.51.0/io/bufio.ts": "3dd55426bc8b1e27c7f006847ac0bfefb4c0d5144ba2df2d93944dc37114a6e0", - "https://deno.land/std@0.51.0/async/mod.ts": "bf46766747775d0fc4070940d20d45fb311c814989485861cdc8a8ef0e3bbbab", - "https://deno.land/x/evt@1.7.9/lib/util/invokeOperator.ts": "072a981806d2814d03f445c3b186b1612926553db08cadba3cf08131ca809f07", - "https://deno.land/std@0.53.0/path/win32.ts": "61248a2b252bb8534f54dafb4546863545e150d2016c74a32e2a4cfb8e061b3f", - "https://deno.land/x/isIP@master/mod.ts": "bd55c2180f7275930d9b1ef0b8f031108625ae3f9b87a1fa75cc8ee15d485ff8", - "https://deno.land/x/evt@1.7.9/lib/types/helper/index.ts": "c6177abf99ec1f7ced101b5ddbd551797809f04e72ebf2f2d203e76c521ebd6b", - "https://deno.land/x/evt@1.7.9/lib/util/genericOperators/index.ts": "af1fa4c0388fbd3a90c78ed60b78c025ae7ffea6f2592e7821e852b715070c99", - "https://deno.land/x/negotiator/src/encoding.ts": "161e3d4ded71fe2421de9188b9ec2be59558ea99a6c3c89b0124b3fdf4d84899", - "https://deno.land/std@0.52.0/textproto/mod.ts": "aa585cd8dceb14437cf4499d6620c1fe861140ccfe56125eb931db4cfb90c3b2", - "https://deno.land/std@0.51.0/async/mux_async_iterator.ts": "e2a4c2c53aee22374b493b88dfa08ad893bc352c8aeea34f1e543e938ec6ccc6", - "https://deno.land/std@0.51.0/textproto/mod.ts": "3118d7a42c03c242c5a49c2ad91c8396110e14acca1324e7aaefd31a999b71a4", + "https://deno.land/std/bytes/mod.ts": "5ad1325fc232f19b59fefbded30013b4bcd39fee4cf1eee73d6a6915ae46bdcd", + "https://deno.land/std@0.52.0/node/timers.ts": "3d7063ba3b0477c247573c20fe3efc8999a5cee555dbb2cc45cdb06320a907c2", + "https://deno.land/x/evt@1.7.9/tools/typeSafety/exclude.ts": "49a66cf27578c7c9e92b9e841d3229e62962b20b0bd81458e45c282f3db519df", + "https://deno.land/std/async/mux_async_iterator.ts": "e2a4c2c53aee22374b493b88dfa08ad893bc352c8aeea34f1e543e938ec6ccc6", + "https://deno.land/x/evt@1.7.9/lib/index.ts": "0074bc06faf8c9fc6d0218b31cce7dbe3d8f155fdbf44c7e45e75bd6b8e8174e", + "https://deno.land/x/media_types@v2.3.1/db.ts": "ecbb836ceadc885e53192a9923f054ac2417cbdb1892edf960fd328b1be3f665", + "https://deno.land/x/evt@1.7.9/lib/Ctx.ts": "33032a434e595e67f9b570403738a77e0c097cf59b77fc3c9d35a90f1f74230d", + "https://deno.land/std/path/_constants.ts": "f6c332625f21d49d5a69414ba0956ac784dbf4b26a278041308e4914ba1c7e2e", + "https://deno.land/x/evt@1.7.9/lib/Evt.merge.ts": "8721642afb4dbad7c701a4ef061f9089694e44476b92d4b9972300c0f1a06829", + "https://deno.land/std@0.51.0/path/interface.ts": "89f6e68b0e3bba1401a740c8d688290957de028ed86f95eafe76fe93790ae450", + "https://deno.land/std@0.52.0/http/server.ts": "d2b977c100d830262d8525915c3f676ce33f1e986926a3cdbc81323cf724b599", + "https://deno.land/x/media_types@v2.3.3/deps.ts": "b4d4698240d6c87bdb0c51bb79e288305e945b82a0c94c85dec792bd199fec79", "https://deno.land/x/evt@1.7.9/lib/StatefulEvt.ts": "5b19594f118c77f8db06e4eddb6fdea5dc775dfd24262e0dcef889a1ed587c39", - "https://deno.land/x/evt@1.7.9/tools/typeSafety/overwriteReadonlyProp.ts": "02f5fa386e88fae182830b7910b770a746f9baf0f0ce7e5a37e27c0c96990abd", - "https://deno.land/std@0.52.0/io/bufio.ts": "0be99d122e459c0040fbadb5c984935fd12a662c9b8c7fddd1cde4176c6cff27", + "https://deno.land/std@0.53.0/testing/asserts.ts": "1dc683a61218e2d8c5e9e87e3602a347000288fb207b4d7301414935620e24b3", + "https://deno.land/std@0.52.0/http/cookie.ts": "948e9066409bdd78b1ce99774e8254cddcd41c6b8fd5ac80183e3928e2777d15", + "https://deno.land/std@0.52.0/io/util.ts": "ae133d310a0fdcf298cea7bc09a599c49acb616d34e148e263bcb02976f80dee", + "https://deno.land/x/evt@1.7.9/lib/Evt.parsePropsFromArgs.ts": "a27cffc27661016584dbfc6224f0bcdba8c39897c034a932587dead38eb73feb", + "https://deno.land/x/vary@master/mod.ts": "e7c452694b21336419f16e0891f8ea503adaafc7bde956fb29e1a86f450a68e6", + "https://deno.land/x/accepts@master/mod.ts": "928576bb8b922e900fc629f80050a13248cd3bae0ee05d70e0dc69243e71fe15", + "https://deno.land/x/evt@1.7.9/tools/typeSafety/assert.ts": "42d43a9d20f33a3363535e02ef5903cf63be70c6b50ce9b25aea8fc6018121cd", "https://deno.land/std@0.52.0/async/delay.ts": "35957d585a6e3dd87706858fb1d6b551cb278271b03f52c5a2cb70e65e00c26a", - "https://deno.land/std@0.52.0/path/glob.ts": "ab85e98e4590eae10e561ce8266ad93ebe5af2b68c34dc68b85d9e25bccb4eb7", - "https://deno.land/std@0.53.0/path/separator.ts": "7bdb45c19c5c934c49c69faae861b592ef17e6699a923449d3eaaf83ec4e7919", - "https://deno.land/std@0.51.0/path/_constants.ts": "f6c332625f21d49d5a69414ba0956ac784dbf4b26a278041308e4914ba1c7e2e", - "https://deno.land/x/type_is@master/mod.ts": "3e471cf55f7ca9ec137ddb5feacb0d33b26e6b5b61bf7b2e2a4337b6939b8fd8", - "https://deno.land/std@0.52.0/testing/asserts.ts": "1dc683a61218e2d8c5e9e87e3602a347000288fb207b4d7301414935620e24b3", - "https://deno.land/x/evt@1.7.9/lib/types/interfaces/index.ts": "b0d6ca5b4c508fcf8fcdc372936539d1f4903023813e2fc2ff5b5a82bba97882", - "https://deno.land/x/evt@1.7.9/tools/typeSafety/defineAccessors.ts": "225826b62d33edf3ca67f65050fba63814d07c17396e65b85baa29ffd3423fd1", - "https://deno.land/x/evt@1.7.9/lib/Evt.create.ts": "387388929e07f520386d00b67915bab9b779433950313fb71ebf6b1d424a4ece", - "https://deno.land/std@0.52.0/node/timers.ts": "3d7063ba3b0477c247573c20fe3efc8999a5cee555dbb2cc45cdb06320a907c2", + "https://deno.land/std@0.52.0/encoding/utf8.ts": "8654fa820aa69a37ec5eb11908e20b39d056c9bf1c23ab294303ff467f3d50a1", + "https://deno.land/std/path/win32.ts": "61248a2b252bb8534f54dafb4546863545e150d2016c74a32e2a4cfb8e061b3f", "https://deno.land/std@0.52.0/path/posix.ts": "b742fe902d5d6821c39c02319eb32fc5a92b4d4424b533c47f1a50610afbf381", - "https://deno.land/x/evt@1.7.9/lib/Evt.from.ts": "a4c87046b730b38ac14d327957d528def6aefa31be972be30845751279dc9f7b", - "https://deno.land/x/evt@1.7.9/lib/Evt.useEffect.ts": "da14d655107d4f9b5757281fbbddebc4ee1615d8113e44bc6645b8079de23ee2", - "https://deno.land/x/evt@1.7.9/tools/typeSafety/assert.ts": "42d43a9d20f33a3363535e02ef5903cf63be70c6b50ce9b25aea8fc6018121cd", + "https://deno.land/std/io/bufio.ts": "0be99d122e459c0040fbadb5c984935fd12a662c9b8c7fddd1cde4176c6cff27", + "https://deno.land/x/evt@1.7.9/tools/typeSafety/matchVoid.ts": "5b5b8f05957a4aa9638e36e8b7360edb9c69f6bde7de4b81372ecc80512f908f", + "https://deno.land/std@0.52.0/path/_util.ts": "b678a7ecbac6b04c1166832ae54e1024c0431dd2b340b013c46eb2956ab24d4c", + "https://deno.land/x/escape_html/mod.ts": "fd6671533b7f8bbf267047e3d1a20786837b3285c31552fa5f82f1e34f6e37c3", + "https://deno.land/x/evt@1.7.9/lib/types/EventTargetLike.ts": "fc235a64cc580ea667ad98ee930a4f9319ba59332e7184e80b327e7ae7bd134a", + "https://deno.land/x/negotiator/src/media_type.ts": "d93ce1a6480d005a3418761c0cbf5b62b5ca6f71b84666f65f51d16ba819653e", + "https://raw.githubusercontent.com/garronej/minimal_polyfills/2.1.0/WeakMap.ts": "3b0cb6ab1348897b5e107e932f53213e1459e9759db0c5eea5d01eb9bd3e0ddb", + "https://deno.land/std/fmt/colors.ts": "06444b6ebc3842a4b2340d804bfa81fc5452a03513cbb81bd7f6bf8f4b8f3ac4", + "https://deno.land/x/type_is@master/deps.ts": "e02cf93f70606ab11e8b601860625788958db686280fdfad5b6db1546bd879c4", + "https://deno.land/x/evt@1.7.9/tools/typeSafety/defineAccessors.ts": "225826b62d33edf3ca67f65050fba63814d07c17396e65b85baa29ffd3423fd1", + "https://deno.land/x/evt@1.7.9/tools/typeSafety/overwriteReadonlyProp.ts": "02f5fa386e88fae182830b7910b770a746f9baf0f0ce7e5a37e27c0c96990abd", + "https://deno.land/std@0.53.0/path/_util.ts": "b678a7ecbac6b04c1166832ae54e1024c0431dd2b340b013c46eb2956ab24d4c", + "https://deno.land/std/testing/diff.ts": "77338e2b479626c096278d7b4a95f750753ee39558f314db6b794e8d8a98d515", + "https://deno.land/x/evt@1.7.9/mod.ts": "a287b21f79647774e5d3c23b5f4a512e74eb6124346bd7f898c8615d2fc23dc1", + "https://deno.land/x/negotiator/mod.ts": "d8b28a0a7b2d75c944cebef8f87a58eeb344974d432fe0dea85e2d98e03daf24", + "https://deno.land/std@0.51.0/path/separator.ts": "7bdb45c19c5c934c49c69faae861b592ef17e6699a923449d3eaaf83ec4e7919", + "https://deno.land/std@0.53.0/path/_constants.ts": "f6c332625f21d49d5a69414ba0956ac784dbf4b26a278041308e4914ba1c7e2e", + "https://deno.land/x/evt@1.7.9/tools/typeSafety/id.ts": "5e4b76ff7cb41641224adc8d2d94de8dcdaefd122f686944910e8656d244519c", + "https://deno.land/std@0.53.0/path/mod.ts": "a789541f8df9170311daa98313c5a76c06b5988f2948647957b3ec6e017d963e", + "https://deno.land/std@0.51.0/path/glob.ts": "ab85e98e4590eae10e561ce8266ad93ebe5af2b68c34dc68b85d9e25bccb4eb7", + "https://deno.land/std/io/util.ts": "ae133d310a0fdcf298cea7bc09a599c49acb616d34e148e263bcb02976f80dee", + "https://deno.land/x/evt@1.7.9/lib/Evt.asNonPostable.ts": "b4dbaef2ec42b12716e34499a31c26bb09ade16de405aee6368b6fc004b3f758", + "https://deno.land/x/negotiator/src/language.ts": "690d0560552fe99e47cbc8d325b92665d9dea56fb451957607966cb7ba9cef6b", + "https://deno.land/std@0.53.0/path/posix.ts": "b742fe902d5d6821c39c02319eb32fc5a92b4d4424b533c47f1a50610afbf381", "https://raw.githubusercontent.com/garronej/minimal_polyfills/2.1.0/Map.ts": "23e7bae86df110ad8a68097750530f288c5117fe4c4b30e645b449d20fe156a5", - "https://deno.land/x/evt@1.7.9/lib/Evt.loosenType.ts": "a43aaa204e80db39a0d1008e1fa0b1d159a66509787dcd046cc9f53a4255b4a7", - "https://deno.land/x/evt@1.7.9/lib/importProxy.ts": "6f57cee2ada724db9575242b44bd7bf598161ea46d8d12e10264fa51a6e7b01f", - "https://deno.land/std@0.52.0/bytes/mod.ts": "5ad1325fc232f19b59fefbded30013b4bcd39fee4cf1eee73d6a6915ae46bdcd", - "https://deno.land/x/evt@1.7.9/lib/Evt.getCtx.ts": "9d49747a2ef5a98a9f8e2c48c1d0ec026bdd06e02cf9a1156f89870535f77df3", - "https://deno.land/x/evt@1.7.9/lib/util/encapsulateOpState.ts": "d9d74b9b21a2687a7a8aa795764afd85689786ef121d6e1e1648e237edd8b99c", - "https://deno.land/std@0.51.0/path/interface.ts": "89f6e68b0e3bba1401a740c8d688290957de028ed86f95eafe76fe93790ae450", - "https://deno.land/x/media_types@v2.3.1/db.ts": "ecbb836ceadc885e53192a9923f054ac2417cbdb1892edf960fd328b1be3f665", - "https://deno.land/std@0.51.0/path/win32.ts": "61248a2b252bb8534f54dafb4546863545e150d2016c74a32e2a4cfb8e061b3f", - "https://deno.land/x/negotiator/src/charset.ts": "ee56810906ed4fb5ee52abd4dfd8b57485685939c6b63fb2b5d289b971465f67", + "https://deno.land/std/http/mod.ts": "7f2ddc904c7951757228709a2f72c5b3960dee3e81f552f21d382edfdd2a1165", + "https://deno.land/std@0.51.0/path/_globrex.ts": "a88b9da6a150b8d8e87a7b9eef794f97b10e709910071bb57f8619dd2d0291dc", + "https://deno.land/x/content_type/mod.ts": "5dc435e84b665c2968d6845c573569ddeef65a41baa9a04c51e1c5e927806583", "https://deno.land/x/media_types/db.ts": "ecbb836ceadc885e53192a9923f054ac2417cbdb1892edf960fd328b1be3f665", - "https://deno.land/std@0.53.0/path/_globrex.ts": "a88b9da6a150b8d8e87a7b9eef794f97b10e709910071bb57f8619dd2d0291dc", - "https://deno.land/std@0.52.0/io/util.ts": "ae133d310a0fdcf298cea7bc09a599c49acb616d34e148e263bcb02976f80dee", - "https://deno.land/x/type_is@master/deps.ts": "e02cf93f70606ab11e8b601860625788958db686280fdfad5b6db1546bd879c4", - "https://deno.land/std@0.51.0/datetime/mod.ts": "b533eb7f7627799e5030131ae80dae4d73e100507a3a1fddc1a34be677de7b1b", - "https://deno.land/std@0.53.0/testing/diff.ts": "8f591074fad5d35c0cafa63b1c5334dc3a17d5b934f3b9e07172eed9d5b55553", - "https://deno.land/std@0.51.0/path/mod.ts": "a789541f8df9170311daa98313c5a76c06b5988f2948647957b3ec6e017d963e", - "https://deno.land/x/evt@1.7.9/lib/util/genericOperators/to.ts": "9f1aa067e713d7ba85d095bbdcfe29191138d138baaad2c0db80fc051b81d282", - "https://deno.land/std@0.52.0/async/mod.ts": "bf46766747775d0fc4070940d20d45fb311c814989485861cdc8a8ef0e3bbbab", - "https://deno.land/std@0.51.0/encoding/utf8.ts": "8654fa820aa69a37ec5eb11908e20b39d056c9bf1c23ab294303ff467f3d50a1", - "https://deno.land/x/oak@v4.0.0/types.ts": "41b6c1b6c1735ddced291152108e3173d55db7f6ce893ae97533240ef6b8e74e", - "https://deno.land/std@0.52.0/http/cookie.ts": "948e9066409bdd78b1ce99774e8254cddcd41c6b8fd5ac80183e3928e2777d15", - "https://deno.land/std@0.52.0/http/_io.ts": "025d3735c6b9140fc4bf748bc41dd4e80272de1bc398773ea3e9a8a727cd6032", - "https://deno.land/x/evt@1.7.9/lib/types/Operator.ts": "384bd0410ca2ed861a883619926b6cad4b58c9159b148348641bfc9baba6f57b", - "https://raw.githubusercontent.com/garronej/minimal_polyfills/2.1.0/Set.ts": "2298d1990567c657bdc876a5e5552ad46561b036c2f4b52e901810211b36605f", - "https://deno.land/x/evt@1.7.9/lib/Evt.merge.ts": "8721642afb4dbad7c701a4ef061f9089694e44476b92d4b9972300c0f1a06829", - "https://raw.githubusercontent.com/garronej/minimal_polyfills/2.1.0/Array.prototype.find.ts": "59e93f4825b13e1d473c6a0548b45c34ce86a008e01d24b7809c8b022527dc9c", + "https://deno.land/x/evt@1.7.9/lib/Evt.create.ts": "387388929e07f520386d00b67915bab9b779433950313fb71ebf6b1d424a4ece", + "https://deno.land/std@0.52.0/fmt/colors.ts": "ec9d653672a9a3c7b6eafe53c5bc797364a2db2dcf766ab649c1155fea7a80b2", + "https://deno.land/x/type_is@master/mod.ts": "3e471cf55f7ca9ec137ddb5feacb0d33b26e6b5b61bf7b2e2a4337b6939b8fd8", "https://deno.land/std@0.52.0/datetime/mod.ts": "b533eb7f7627799e5030131ae80dae4d73e100507a3a1fddc1a34be677de7b1b", + "https://deno.land/std@0.52.0/path/common.ts": "95115757c9dc9e433a641f80ee213553b6752aa6fbb87eb9f16f6045898b6b14", + "https://deno.land/x/evt@1.7.9/lib/types/EvtError.ts": "61eb61e75da34ad69c6950dcfb2e5f8760429cb934d5e600c17e8f65188417cf", + "https://deno.land/x/evt@1.7.9/tools/typeSafety/typeGuard.ts": "ef91a6cccc54dddbe71339b068f8afea25541d731d8d2c4b72a6109071cbd245", + "https://deno.land/std/http/_io.ts": "025d3735c6b9140fc4bf748bc41dd4e80272de1bc398773ea3e9a8a727cd6032", + "https://deno.land/std/path/mod.ts": "a789541f8df9170311daa98313c5a76c06b5988f2948647957b3ec6e017d963e", + "https://deno.land/x/evt@1.7.9/tools/Deferred.ts": "d7fde0179647da5c3b8f85a1ad316304c2ee63991db22f3421ac3c342a98af10", + "https://deno.land/std@0.52.0/textproto/mod.ts": "aa585cd8dceb14437cf4499d6620c1fe861140ccfe56125eb931db4cfb90c3b2", + "https://deno.land/std@0.52.0/hash/sha1.ts": "c1a97bde767b98b88495470f39c30c37e44ac3984409f120ef65fd84c9d27608", "https://deno.land/x/evt@1.7.9/tools/typeSafety/objectKeys.ts": "47e50004c5c50e6c95c950736bcaaee0acf99ef9c08ee97e2f68bc8b7975e9af", - "https://deno.land/std@0.52.0/http/server.ts": "d2b977c100d830262d8525915c3f676ce33f1e986926a3cdbc81323cf724b599", - "https://deno.land/x/media_typer/mod.ts": "01aebf79f0ecf43897a663dca9730d2dbd2a698eac9d297a6ac26b4b647bb7cc", - "https://deno.land/x/negotiator/src/media_type.ts": "d93ce1a6480d005a3418761c0cbf5b62b5ca6f71b84666f65f51d16ba819653e", - "https://deno.land/x/evt@1.7.9/lib/index.ts": "0074bc06faf8c9fc6d0218b31cce7dbe3d8f155fdbf44c7e45e75bd6b8e8174e", - "https://deno.land/x/evt@1.7.9/lib/Evt.newCtx.ts": "3e5e660eacb5af62b0e585a2206d06e5ed4680dadf198f8dcc569d52452f59a4", - "https://deno.land/x/evt@1.7.9/lib/types/lib.dom.ts": "38978a711746f666da1511afb56a64ac36912e1df8662d4ff735c9e37473a579" + "https://deno.land/x/evt@1.7.9/lib/Evt.from.ts": "a4c87046b730b38ac14d327957d528def6aefa31be972be30845751279dc9f7b", + "https://deno.land/std@0.51.0/fmt/colors.ts": "127ce39ca2ad9714d4ada8d61367f540d76b5b0462263aa839166876b522d3de", + "https://deno.land/std@0.52.0/async/mod.ts": "bf46766747775d0fc4070940d20d45fb311c814989485861cdc8a8ef0e3bbbab", + "https://deno.land/x/evt@1.7.9/lib/types/index.ts": "2f1bdb1e24011cc0ee58f5c2b40b0a4a92ea082873931ad6d391e7899323d8e9", + "https://raw.githubusercontent.com/garronej/minimal_polyfills/2.1.0/Object.is.ts": "e90029a06fb86dd63e5f6b799d87702b7abe2397a220b78f1cfcce35b922f15a", + "https://deno.land/std@0.53.0/path/glob.ts": "ab85e98e4590eae10e561ce8266ad93ebe5af2b68c34dc68b85d9e25bccb4eb7", + "https://deno.land/std/async/deferred.ts": "ac95025f46580cf5197928ba90995d87f26e202c19ad961bc4e3177310894cdc", + "https://deno.land/std/path/separator.ts": "7bdb45c19c5c934c49c69faae861b592ef17e6699a923449d3eaaf83ec4e7919", + "https://deno.land/x/evt@1.7.9/lib/util/encapsulateOpState.ts": "d9d74b9b21a2687a7a8aa795764afd85689786ef121d6e1e1648e237edd8b99c", + "https://deno.land/x/evt@1.7.9/lib/types/interfaces/index.ts": "b0d6ca5b4c508fcf8fcdc372936539d1f4903023813e2fc2ff5b5a82bba97882", + "https://deno.land/std@0.51.0/path/_util.ts": "b678a7ecbac6b04c1166832ae54e1024c0431dd2b340b013c46eb2956ab24d4c", + "https://deno.land/std@0.53.0/path/_globrex.ts": "a88b9da6a150b8d8e87a7b9eef794f97b10e709910071bb57f8619dd2d0291dc", + "https://deno.land/std@0.52.0/path/win32.ts": "61248a2b252bb8534f54dafb4546863545e150d2016c74a32e2a4cfb8e061b3f" } \ No newline at end of file diff --git a/src/middleware/bodyParser/hasBody.ts b/src/middleware/bodyParser/hasBody.ts deleted file mode 100644 index 249bc72e..00000000 --- a/src/middleware/bodyParser/hasBody.ts +++ /dev/null @@ -1,17 +0,0 @@ -import { Request } from "../../types.ts"; - -/** - * Check if a request has a request body. - * A request with a body __must__ either have `transfer-encoding` - * or `content-length` headers set. - * - * REF: http://www.w3.org/Protocols/rfc2616/rfc2616-sec4.html#sec4.3 - * - * @param {Request} req - * @return {boolean} - * @private - */ -export function hasBody(req: Request): boolean { - return typeof req.headers.get("transfer-encoding") !== "undefined" || - !isNaN(parseInt(req.headers.get("content-length") as string)); -} diff --git a/src/middleware/bodyParser/json.ts b/src/middleware/bodyParser/json.ts index 51910c1b..84017b97 100644 --- a/src/middleware/bodyParser/json.ts +++ b/src/middleware/bodyParser/json.ts @@ -29,11 +29,10 @@ * */ -import { createHttpError } from "../../../deps.ts"; +import { createError, hasBody } from "../../../deps.ts"; import { read } from "./read.ts"; import { getCharset } from "./getCharset.ts"; import { typeChecker } from "./typeChecker.ts"; -import { hasBody } from "./hasBody.ts"; import { Request, Response, NextFunction } from "../../types.ts"; /** @@ -106,7 +105,7 @@ export function json(options: any = {}) { } // skip requests without bodies - if (!hasBody(req)) { + if (!hasBody(req.headers)) { req.parsedBody = {}; next(); return; @@ -122,7 +121,7 @@ export function json(options: any = {}) { const charset = getCharset(req) || "utf-8"; if (charset.substr(0, 4) !== "utf-") { next( - createHttpError( + createError( 415, 'unsupported charset "' + charset.toUpperCase() + '"', ), diff --git a/src/middleware/bodyParser/raw.ts b/src/middleware/bodyParser/raw.ts index 5b398746..1e29be52 100644 --- a/src/middleware/bodyParser/raw.ts +++ b/src/middleware/bodyParser/raw.ts @@ -31,7 +31,7 @@ import { read } from "./read.ts"; import { Request, Response, NextFunction } from "../../types.ts"; -import { hasBody } from "./hasBody.ts"; +import { hasBody } from "../../../deps.ts"; import { typeChecker } from "./typeChecker.ts"; /** @@ -64,7 +64,7 @@ export function raw(options: any = {}) { } // skip requests without bodies - if (!hasBody(req)) { + if (!hasBody(req.headers)) { req.parsedBody = ""; next(); return; diff --git a/src/middleware/bodyParser/read.ts b/src/middleware/bodyParser/read.ts index 9689c26b..c1dab543 100644 --- a/src/middleware/bodyParser/read.ts +++ b/src/middleware/bodyParser/read.ts @@ -30,7 +30,7 @@ */ import { Request, Response, NextFunction } from "../../types.ts"; -import { createHttpError } from "../../../deps.ts"; +import { createError } from "../../../deps.ts"; const decoder = new TextDecoder(); @@ -71,7 +71,7 @@ export async function read( const raw = await Deno.readAll(reader); body = decoder.decode(raw); } catch (err) { - next(createHttpError(400, err)); + next(createError(400, err)); } // verify @@ -79,7 +79,7 @@ export async function read( try { verify(req, res, body, encoding); } catch (err) { - next(createHttpError(403, err)); + next(createError(403, err)); return; } } @@ -88,7 +88,7 @@ export async function read( try { req.parsedBody = parse(body); } catch (err) { - next(createHttpError(400, err)); + next(createError(400, err)); return; } @@ -108,7 +108,7 @@ function getBodyReader(req: Request, inflate: boolean = true) { .toLowerCase(); if (inflate === false && encoding !== "identity") { - throw createHttpError( + throw createError( 415, 'unsupported content encoding "' + encoding + '"', ); @@ -121,7 +121,7 @@ function getBodyReader(req: Request, inflate: boolean = true) { case "deflate": case "gzip": default: - throw createHttpError( + throw createError( 415, 'unsupported content encoding "' + encoding + '"', ); diff --git a/src/middleware/bodyParser/text.ts b/src/middleware/bodyParser/text.ts index a7ba81e8..ae01d44f 100644 --- a/src/middleware/bodyParser/text.ts +++ b/src/middleware/bodyParser/text.ts @@ -32,7 +32,7 @@ import { read } from "./read.ts"; import { getCharset } from "./getCharset.ts"; import { Request, Response, NextFunction } from "../../types.ts"; -import { hasBody } from "./hasBody.ts"; +import { hasBody } from "../../../deps.ts"; import { typeChecker } from "./typeChecker.ts"; /** @@ -66,7 +66,7 @@ export function text(options: any = {}) { } // skip requests without bodies - if (!hasBody(req)) { + if (!hasBody(req.headers)) { req.parsedBody = ""; next(); return; diff --git a/src/middleware/bodyParser/typeChecker.ts b/src/middleware/bodyParser/typeChecker.ts index 93d795d6..c3ef97d0 100644 --- a/src/middleware/bodyParser/typeChecker.ts +++ b/src/middleware/bodyParser/typeChecker.ts @@ -30,20 +30,7 @@ */ import { Request } from "../../types.ts"; -import { hasBody } from "./hasBody.ts"; -import { contentType } from "../../../deps.ts"; - -function normalize(type: any) { - return contentType(type || "")?.split(";")[0]; -} - -function typeIs(req: Request, type: string) { - if (!hasBody(req)) { - return false; - } - - return normalize(req.headers.get("Content-Type")) === normalize(type); -} +import { typeofrequest } from "../../../deps.ts"; /** * Get the simple type checker. @@ -53,6 +40,6 @@ function typeIs(req: Request, type: string) { */ export function typeChecker(type: string) { return function checkType(req: Request) { - return Boolean(typeIs(req, type)); + return Boolean(typeofrequest(req.headers, [type])); }; } diff --git a/src/middleware/bodyParser/urlencoded.ts b/src/middleware/bodyParser/urlencoded.ts index 1145bff9..9e4df2d2 100644 --- a/src/middleware/bodyParser/urlencoded.ts +++ b/src/middleware/bodyParser/urlencoded.ts @@ -29,11 +29,11 @@ * */ -import { createHttpError } from "../../../deps.ts"; +import { createError } from "../../../deps.ts"; import { read } from "./read.ts"; import { getCharset } from "./getCharset.ts"; import { Request, Response, NextFunction } from "../../types.ts"; -import { hasBody } from "./hasBody.ts"; +import { hasBody } from "../../../deps.ts"; import { typeChecker } from "./typeChecker.ts"; /** @@ -74,7 +74,7 @@ export function urlencoded(options: any = {}) { } // skip requests without bodies - if (!hasBody(req)) { + if (!hasBody(req.headers)) { (req as any).parsedBody = Object.fromEntries( new URLSearchParams().entries(), ); @@ -90,7 +90,7 @@ export function urlencoded(options: any = {}) { const charset = getCharset(req) || "utf-8"; if (charset !== "utf-8") { return next( - createHttpError( + createError( 415, 'unsupported charset "' + charset.toUpperCase() + '"', ), diff --git a/src/middleware/serveStatic.ts b/src/middleware/serveStatic.ts index 56a8d3be..17b12d31 100644 --- a/src/middleware/serveStatic.ts +++ b/src/middleware/serveStatic.ts @@ -31,9 +31,13 @@ * */ -import { join, fromFileUrl, createHttpError } from "../../deps.ts"; -import { escapeHtml } from "../utils/escapeHtml.ts"; -import { encodeUrl } from "../utils/encodeUrl.ts"; +import { + join, + fromFileUrl, + createError, + escapeHtml, + encodeUrl, +} from "../../deps.ts"; import { originalUrl as original, parseUrl } from "../utils/parseUrl.ts"; import { Response, @@ -184,7 +188,7 @@ function createNotFoundDirectoryListener(): Function { forwardError: boolean, ): void { if (forwardError) { - return next(createHttpError(404)); + return next(createError(404)); } next(); @@ -206,7 +210,7 @@ function createRedirectDirectoryListener(): Function { ): void { if (fullPath.endsWith("/")) { if (forwardError) { - return next(createHttpError(404)); + return next(createError(404)); } return next(); diff --git a/src/response.ts b/src/response.ts index b3e0e8c1..6e2e8f6a 100644 --- a/src/response.ts +++ b/src/response.ts @@ -1,6 +1,5 @@ import { contentDisposition } from "./utils/contentDisposition.ts"; import { stringify } from "./utils/stringify.ts"; -import { encodeUrl } from "./utils/encodeUrl.ts"; import { normalizeType, normalizeTypes } from "./utils/normalizeType.ts"; import { setCookie, @@ -12,6 +11,7 @@ import { basename, contentType, vary, + encodeUrl, } from "../deps.ts"; import { Response as DenoResponse, diff --git a/src/utils/contentDisposition.ts b/src/utils/contentDisposition.ts index 5c6da15c..4f7530ae 100644 --- a/src/utils/contentDisposition.ts +++ b/src/utils/contentDisposition.ts @@ -1,4 +1,4 @@ -import { encodeUrl } from "./encodeUrl.ts"; +import { encodeUrl } from "../../deps.ts"; /** * Creates a Content-Disposition Header value from diff --git a/src/utils/encodeUrl.ts b/src/utils/encodeUrl.ts deleted file mode 100644 index 9e1010a7..00000000 --- a/src/utils/encodeUrl.ts +++ /dev/null @@ -1,72 +0,0 @@ -/*! - * Port of encodeurl (https://github.com/pillarjs/encodeurl) for Deno. - * - * Licensed as follows: - * - * (The MIT License) - * - * Copyright (c) 2016 Douglas Christopher Wilson - * - * Permission is hereby granted, free of charge, to any person obtaining - * a copy of this software and associated documentation files (the - * 'Software'), to deal in the Software without restriction, including - * without limitation the rights to use, copy, modify, merge, publish, - * distribute, sublicense, and/or sell copies of the Software, and to - * permit persons to whom the Software is furnished to do so, subject to - * the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. - * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY - * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, - * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE - * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - -/** - * RegExp to match non-URL code points, *after* encoding (i.e. not including "%") - * and including invalid escape sequences. - * @private - */ -const ENCODE_CHARS_REGEXP = - /(?:[^\x21\x25\x26-\x3B\x3D\x3F-\x5B\x5D\x5F\x61-\x7A\x7E]|%(?:[^0-9A-Fa-f]|[0-9A-Fa-f][^0-9A-Fa-f]|$))+/g; - -/** - * RegExp to match unmatched surrogate pair. - * @private - */ -const UNMATCHED_SURROGATE_PAIR_REGEXP = - /(^|[^\uD800-\uDBFF])[\uDC00-\uDFFF]|[\uD800-\uDBFF]([^\uDC00-\uDFFF]|$)/g; - -/** - * String to replace unmatched surrogate pair with. - * @private - */ -const UNMATCHED_SURROGATE_PAIR_REPLACE = "$1\uFFFD$2"; - -/** - * Encode a URL to a percent-encoded form, excluding already-encoded sequences. - * - * This function will take an already-encoded URL and encode all the non-URL - * code points. This function will not encode the "%" character unless it is - * not part of a valid sequence (`%20` will be left as-is, but `%foo` will - * be encoded as `%25foo`). - * - * This encode is meant to be "safe" and does not throw errors. It will try as - * hard as it can to properly encode the given URL, including replacing any raw, - * unpaired surrogate pairs with the Unicode replacement character prior to - * encoding. - * - * @param {string} url - * @return {string} - * @public - */ -export function encodeUrl(url: string): string { - return String(url) - .replace(UNMATCHED_SURROGATE_PAIR_REGEXP, UNMATCHED_SURROGATE_PAIR_REPLACE) - .replace(ENCODE_CHARS_REGEXP, encodeURI); -} diff --git a/src/utils/escapeHtml.ts b/src/utils/escapeHtml.ts deleted file mode 100644 index 678ab5e9..00000000 --- a/src/utils/escapeHtml.ts +++ /dev/null @@ -1,85 +0,0 @@ -/*! - * Port of escape-html (https://github.com/component/escape-html) for Deno. - * - * Licensed as follows: - * - * (The MIT License) - * - * Copyright (c) 2012-2013 TJ Holowaychuk - * Copyright (c) 2015 Andreas Lubbe - * Copyright (c) 2015 Tiancheng "Timothy" Gu - * - * Permission is hereby granted, free of charge, to any person obtaining - * a copy of this software and associated documentation files (the - * 'Software'), to deal in the Software without restriction, including - * without limitation the rights to use, copy, modify, merge, publish, - * distribute, sublicense, and/or sell copies of the Software, and to - * permit persons to whom the Software is furnished to do so, subject to - * the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. - * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY - * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, - * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE - * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - */ - -const matchHtmlRegExp = /["'&<>]/; - -/** - * Escape special characters in the given string of text. - * - * @param {string} input The string to escape for inserting into HTML - * @return {string} - * @public - */ -export function escapeHtml(input: string) { - var str = "" + input; - var match = matchHtmlRegExp.exec(str); - - if (!match) { - return str; - } - - var escape; - var html = ""; - var index = 0; - var lastIndex = 0; - - for (index = match.index; index < str.length; index++) { - switch (str.charCodeAt(index)) { - case 34: // " - escape = """; - break; - case 38: // & - escape = "&"; - break; - case 39: // ' - escape = "'"; - break; - case 60: // < - escape = "<"; - break; - case 62: // > - escape = ">"; - break; - default: - continue; - } - - if (lastIndex !== index) { - html += str.substring(lastIndex, index); - } - - lastIndex = index + 1; - html += escape; - } - - return lastIndex !== index ? html + str.substring(lastIndex, index) : html; -} diff --git a/src/utils/finalHandler.ts b/src/utils/finalHandler.ts index 27c4bb89..a39a99f5 100644 --- a/src/utils/finalHandler.ts +++ b/src/utils/finalHandler.ts @@ -29,8 +29,7 @@ */ import { parseUrl } from "./parseUrl.ts"; -import { escapeHtml } from "./escapeHtml.ts"; -import { STATUS_TEXT, Status } from "../../deps.ts"; +import { STATUS_TEXT, Status, escapeHtml } from "../../deps.ts"; import { Request, Response, NextFunction, ParsedURL } from "../types.ts"; const DOUBLE_SPACE_REGEXP = /\x20{2}/g; diff --git a/test/units/bodyParser.json.test.ts b/test/units/bodyParser.json.test.ts index 7181e836..ff2a8f58 100644 --- a/test/units/bodyParser.json.test.ts +++ b/test/units/bodyParser.json.test.ts @@ -10,6 +10,7 @@ jsonHeaders.set("Content-Type", "application/json"); const textHeaders = new Headers(); textHeaders.set("Content-Type", "text/plain"); +textHeaders.set("Content-Length", "1"); //TODO: refactor this once have a supertest equivalent allowing for // easy port of Express tests. @@ -30,6 +31,7 @@ describe("bodyParser: json", () => { body: new Deno.Buffer(encoder.encode(JSON.stringify(mockJson))), headers: jsonHeaders, }; + req.headers.set("Content-Length", "1"); const parser = json(); parser(req, {} as any, (err?: any) => { @@ -44,6 +46,7 @@ describe("bodyParser: json", () => { body: new Deno.Buffer(encoder.encode(JSON.stringify([mockJson]))), headers: jsonHeaders, }; + req.headers.set("Content-Length", "1"); const parser = json(); parser(req, {} as any, (err?: any) => { @@ -62,6 +65,7 @@ describe("bodyParser: json", () => { ), headers: jsonHeaders, }; + req.headers.set("Content-Length", "1"); const parser = json(); parser(req, {} as any, (err?: any) => { @@ -79,6 +83,7 @@ describe("bodyParser: json", () => { body: mockBody, headers: textHeaders, }; + req.headers.set("Content-Length", "1"); const parser = json(); parser(req, {} as any, (err?: any) => { diff --git a/test/units/bodyParser.raw.test.ts b/test/units/bodyParser.raw.test.ts index 2f50c70a..08bc1427 100644 --- a/test/units/bodyParser.raw.test.ts +++ b/test/units/bodyParser.raw.test.ts @@ -10,6 +10,7 @@ octetHeaders.set("Content-Type", "application/octet-stream"); const textHeaders = new Headers(); textHeaders.set("Content-Type", "text/plain"); +textHeaders.set("Content-Length", "1"); //TODO: refactor this once have a supertest equivalent allowing for // easy port of Express tests. @@ -30,6 +31,7 @@ describe("bodyParser: raw", () => { body: new Deno.Buffer(encoder.encode(mockText)), headers: octetHeaders, }; + req.headers.set("Content-Length", "1"); const parser = raw(); parser(req, {} as any, (err?: any) => { @@ -47,6 +49,7 @@ describe("bodyParser: raw", () => { body: mockBody, headers: textHeaders, }; + req.headers.set("Content-Length", "1"); const parser = raw(); parser(req, {} as any, (err?: any) => { diff --git a/test/units/bodyParser.text.test.ts b/test/units/bodyParser.text.test.ts index b8733ede..0409f500 100644 --- a/test/units/bodyParser.text.test.ts +++ b/test/units/bodyParser.text.test.ts @@ -7,6 +7,7 @@ const mockText = "Hello Deno!"; const jsonHeaders = new Headers(); jsonHeaders.set("Content-Type", "application/json"); +jsonHeaders.set("Content-Length", "1"); const textHeaders = new Headers(); textHeaders.set("Content-Type", "text/plain"); @@ -16,6 +17,7 @@ textHeaders.set("Content-Type", "text/plain"); describe("bodyParser: text", () => { it("should handle requests without bodies", (done) => { const req: any = { headers: textHeaders }; + req.headers.set("Content-Length", "0"); const parser = text(); parser(req, {} as any, (err?: any) => { @@ -30,6 +32,7 @@ describe("bodyParser: text", () => { body: new Deno.Buffer(encoder.encode(mockText)), headers: textHeaders, }; + req.headers.set("Content-Length", "1"); const parser = text(); parser(req, {} as any, (err?: any) => { diff --git a/test/units/bodyParser.urlencoded.test.ts b/test/units/bodyParser.urlencoded.test.ts index d60e9b45..72b797e8 100644 --- a/test/units/bodyParser.urlencoded.test.ts +++ b/test/units/bodyParser.urlencoded.test.ts @@ -10,6 +10,7 @@ formHeaders.set("Content-Type", "application/x-www-form-urlencoded"); const textHeaders = new Headers(); textHeaders.set("Content-Type", "text/plain"); +textHeaders.set("Content-Length", "1"); //TODO: refactor this once have a supertest equivalent allowing for // easy port of Express tests. @@ -30,6 +31,7 @@ describe("bodyParser: urlencoded", () => { body: new Deno.Buffer(encoder.encode(mockFormData.toString())), headers: formHeaders, }; + req.headers.set("Content-Length", "1"); const parser = urlencoded(); parser(req, {} as any, (err?: any) => { @@ -47,6 +49,7 @@ describe("bodyParser: urlencoded", () => { body: mockBody, headers: textHeaders, }; + req.headers.set("Content-Length", "1"); const parser = urlencoded(); parser(req, {} as any, (err?: any) => { diff --git a/version.ts b/version.ts index e69f0dfb..2960a157 100644 --- a/version.ts +++ b/version.ts @@ -1,7 +1,7 @@ /** * Version of Opine. */ -export const VERSION: string = "0.6.0"; +export const VERSION: string = "0.6.1"; /** * Supported version of Deno.