From 4a02c4b49b3e1c216c456edea3d0cd40d27475b0 Mon Sep 17 00:00:00 2001 From: "Regmi C. Mahesh" <0xmahadev@gmail.com> Date: Sat, 1 Apr 2023 22:36:48 +0545 Subject: [PATCH] initialize server structure --- server/app.ts | 67 +++ server/components/logger.ts | 0 server/deno.jsonc | 5 + server/deno.lock | 878 +++++++++++++++++++++++++++++++++++ server/error.ts | 3 + server/main_test.ts | 6 + server/middlewares/logger.ts | 0 server/routes/index.ts | 38 ++ server/server.ts | 8 + 9 files changed, 1005 insertions(+) create mode 100644 server/app.ts create mode 100644 server/components/logger.ts create mode 100644 server/deno.jsonc create mode 100644 server/deno.lock create mode 100644 server/error.ts create mode 100644 server/main_test.ts create mode 100644 server/middlewares/logger.ts create mode 100644 server/routes/index.ts create mode 100644 server/server.ts diff --git a/server/app.ts b/server/app.ts new file mode 100644 index 0000000..6d2a7c6 --- /dev/null +++ b/server/app.ts @@ -0,0 +1,67 @@ +import { Application } from "https://deno.land/x/oak@v12.1.0/mod.ts"; +import { + handlers, + LevelName, + Logger, +} from "https://deno.land/std@0.181.0/log/mod.ts"; + +import { SESv2Client } from "npm:@aws-sdk/client-sesv2"; +import { router } from "./routes/index.ts"; + +export interface ApplicationState { + ses: SESv2Client; + logger: Logger; + _initialized: boolean; +} + +interface ApplicationConfig { + PORT: number; + LOG_LEVEL: LevelName; +} + +const defaultConfig: ApplicationConfig = { + PORT: 8000, + LOG_LEVEL: "DEBUG", +}; + +export class App { + private app: Application; + + private initializeState() { + this.app.state = { + ses: new SESv2Client({ region: "us-east-1" }), + + //TODO: make the logger configurable + logger: new Logger("app", this.config.LOG_LEVEL, { + handlers: [new handlers.ConsoleHandler(this.config.LOG_LEVEL)], + }), + + _initialized: true, + }; + } + + private initializeRoutes() { + console.log(router.routes()); + this.app.use(router.routes()); + this.app.state.logger.info("Routes initialized"); + } + + private setupErrorHandler() { + this.app.addEventListener("error", (evt) => { + console.log(evt); + }); + } + + constructor(private config: ApplicationConfig = defaultConfig) { + this.app = new Application(); + + this.initializeState(); + this.initializeRoutes(); + this.setupErrorHandler(); + } + + public async start() { + this.app.state.logger.info(`Listening on port ${this.config.PORT}`); + await this.app.listen({ port: this.config.PORT }); + } +} diff --git a/server/components/logger.ts b/server/components/logger.ts new file mode 100644 index 0000000..e69de29 diff --git a/server/deno.jsonc b/server/deno.jsonc new file mode 100644 index 0000000..5869bf3 --- /dev/null +++ b/server/deno.jsonc @@ -0,0 +1,5 @@ +{ + "tasks": { + "dev": "deno run --watch -A server.ts ", + } +} diff --git a/server/deno.lock b/server/deno.lock new file mode 100644 index 0000000..ce943bf --- /dev/null +++ b/server/deno.lock @@ -0,0 +1,878 @@ +{ + "version": "2", + "remote": { + "https://deno.land/std@0.178.0/_util/asserts.ts": "178dfc49a464aee693a7e285567b3d0b555dc805ff490505a8aae34f9cfb1462", + "https://deno.land/std@0.178.0/_util/os.ts": "d932f56d41e4f6a6093d56044e29ce637f8dcc43c5a90af43504a889cf1775e3", + "https://deno.land/std@0.178.0/async/deferred.ts": "42790112f36a75a57db4a96d33974a936deb7b04d25c6084a9fa8a49f135def8", + "https://deno.land/std@0.178.0/bytes/bytes_list.ts": "b4cbdfd2c263a13e8a904b12d082f6177ea97d9297274a4be134e989450dfa6a", + "https://deno.land/std@0.178.0/bytes/concat.ts": "d26d6f3d7922e6d663dacfcd357563b7bf4a380ce5b9c2bbe0c8586662f25ce2", + "https://deno.land/std@0.178.0/bytes/copy.ts": "939d89e302a9761dcf1d9c937c7711174ed74c59eef40a1e4569a05c9de88219", + "https://deno.land/std@0.178.0/bytes/ends_with.ts": "4228811ebc71615d27f065c54b5e815ec1972538772b0f413c0efe05245b472e", + "https://deno.land/std@0.178.0/bytes/equals.ts": "b87494ce5442dc786db46f91378100028c402f83a14a2f7bbff6bda7810aefe3", + "https://deno.land/std@0.178.0/bytes/includes_needle.ts": "76a8163126fb2f8bf86fd7f22192c3bb04bf6a20b987a095127c2ca08adf3ba6", + "https://deno.land/std@0.178.0/bytes/index_of_needle.ts": "65c939607df609374c4415598fa4dad04a2f14c4d98cd15775216f0aaf597f24", + "https://deno.land/std@0.178.0/bytes/last_index_of_needle.ts": "7181072883cb4908c6ce8f7a5bb1d96787eef2c2ab3aa94fe4268ab326a53cbf", + "https://deno.land/std@0.178.0/bytes/mod.ts": "e869bba1e7a2e3a9cc6c2d55471888429a544e70a840c087672e656e7ba21815", + "https://deno.land/std@0.178.0/bytes/repeat.ts": "6f5e490d8d72bcbf8d84a6bb04690b9b3eb5822c5a11687bca73a2318a842294", + "https://deno.land/std@0.178.0/bytes/starts_with.ts": "3e607a70c9c09f5140b7a7f17a695221abcc7244d20af3eb47ccbb63f5885135", + "https://deno.land/std@0.178.0/crypto/keystack.ts": "877ab0f19eb7d37ad6495190d3c3e39f58e9c52e0b6a966f82fd6df67ca55f90", + "https://deno.land/std@0.178.0/crypto/timing_safe_equal.ts": "29a3e05afa48277ab4d9588c0b61f4afe542529302af180c866a4f2a09524169", + "https://deno.land/std@0.178.0/encoding/base64.ts": "7de04c2f8aeeb41453b09b186480be90f2ff357613b988e99fabb91d2eeceba1", + "https://deno.land/std@0.178.0/encoding/base64url.ts": "3f1178f6446834457b16bfde8b559c1cd3481727fe384d3385e4a9995dc2d851", + "https://deno.land/std@0.178.0/http/_negotiation/common.ts": "14d1a52427ab258a4b7161cd80e1d8a207b7cc64b46e911780f57ead5f4323c6", + "https://deno.land/std@0.178.0/http/_negotiation/encoding.ts": "ff747d107277c88cb7a6a62a08eeb8d56dad91564cbcccb30694d5dc126dcc53", + "https://deno.land/std@0.178.0/http/_negotiation/language.ts": "7bcddd8db3330bdb7ce4fc00a213c5547c1968139864201efd67ef2d0d51887d", + "https://deno.land/std@0.178.0/http/_negotiation/media_type.ts": "58847517cd549384ad677c0fe89e0a4815be36fe7a303ea63cee5f6a1d7e1692", + "https://deno.land/std@0.178.0/http/cookie_map.ts": "8cf428c03ef17c197196a5c382495cd4adecbfb597f6f8f3cd7e1775c3e79ffd", + "https://deno.land/std@0.178.0/http/http_errors.ts": "57169d9bdf4cda1982a3742693c146ab1bf2cbc88df003b40ac905a30013d4cb", + "https://deno.land/std@0.178.0/http/http_status.ts": "8a7bcfe3ac025199ad804075385e57f63d055b2aed539d943ccc277616d6f932", + "https://deno.land/std@0.178.0/http/negotiation.ts": "32761c921afa7847cf767fe81c81785721abccc0db0fc51c7ec2a45868b4ee4a", + "https://deno.land/std@0.178.0/io/buf_reader.ts": "90a7adcb3638d8e1361695cdf844d58bcd97c41711dc6f9f8acc0626ebe097f5", + "https://deno.land/std@0.178.0/io/buf_writer.ts": "2fcaadd9f157970fede6e79c8ea9a58556d8cf3c8a686c3fcaaf3875460092cc", + "https://deno.land/std@0.178.0/io/buffer.ts": "e2b7564f684dad625cab08f5106f33572d325705d19a36822b3272fbdfb8f726", + "https://deno.land/std@0.178.0/io/copy_n.ts": "c498021ce291576a68b5bae9f9d3a27f97644f4af6c1047fb1cff054af19e436", + "https://deno.land/std@0.178.0/io/limited_reader.ts": "d709b5b3113d4cbf934415ba242596e0ecb130e8868fb47197217e09dbb59558", + "https://deno.land/std@0.178.0/io/mod.ts": "2665bcccc1fd6e8627cca167c3e92aaecbd9897556b6f69e6d258070ef63fd9b", + "https://deno.land/std@0.178.0/io/multi_reader.ts": "5f7ef6e987486322b38c72e206b8fbc8916d55a87fbcdc97a8b2596386c28d44", + "https://deno.land/std@0.178.0/io/read_delim.ts": "7e102c66f00a118fa1e1ccd4abb080496f43766686907fd8b9522fdf85443586", + "https://deno.land/std@0.178.0/io/read_int.ts": "7cb8bcdfaf1107586c3bacc583d11c64c060196cb070bb13ae8c2061404f911f", + "https://deno.land/std@0.178.0/io/read_lines.ts": "baee9e35034f2fdfccf63bc24b7e3cb45aa1c1c5de26d178f7bcbc572e87772f", + "https://deno.land/std@0.178.0/io/read_long.ts": "f0aaa420e3da1261c5d33c5e729f09922f3d9fa49f046258d4ff7a00d800c71e", + "https://deno.land/std@0.178.0/io/read_range.ts": "28152daf32e43dd9f7d41d8466852b0d18ad766cd5c4334c91fef6e1b3a74eb5", + "https://deno.land/std@0.178.0/io/read_short.ts": "805cb329574b850b84bf14a92c052c59b5977a492cd780c41df8ad40826c1a20", + "https://deno.land/std@0.178.0/io/read_string_delim.ts": "46eb0c9db3547caf8c759631effa200bbe48924f9b34f41edc627bde36cee52d", + "https://deno.land/std@0.178.0/io/slice_long_to_bytes.ts": "b096472afa3a0dd90fa84584dde7706ed29fc16d48009a581c49368f09fe70f4", + "https://deno.land/std@0.178.0/io/string_reader.ts": "ad9cbecb8509732afcf3d73bb72fa551ec0ccc34f9b8127826247f0190753a65", + "https://deno.land/std@0.178.0/io/string_writer.ts": "8a03c5858c24965a54c6538bed15f32a7c72f5704a12bda56f83a40e28e5433e", + "https://deno.land/std@0.178.0/media_types/_db.ts": "7606d83e31f23ce1a7968cbaee852810c2cf477903a095696cdc62eaab7ce570", + "https://deno.land/std@0.178.0/media_types/_util.ts": "916efbd30b6148a716f110e67a4db29d6949bf4048997b754415dd7e42c52378", + "https://deno.land/std@0.178.0/media_types/content_type.ts": "c682589a0aeb016bfed355cc1ed6fbb3ead2ea48fc0000ac5de6a5730613ad1c", + "https://deno.land/std@0.178.0/media_types/extension.ts": "7a4ef2813d7182f724a941f38161525996e4a67abc3cf6a0f9bc2168d73a0f0e", + "https://deno.land/std@0.178.0/media_types/extensions_by_type.ts": "4358023feac696e6e9d49c0f1e76a859f03ca254df57812f31f8536890c3a443", + "https://deno.land/std@0.178.0/media_types/format_media_type.ts": "1e35e16562e5c417401ffc388a9f8f421f97f0ee06259cbe990c51bae4e6c7a8", + "https://deno.land/std@0.178.0/media_types/get_charset.ts": "8be15a1fd31a545736b91ace56d0e4c66ea0d7b3fdc5c90760e8202e7b4b1fad", + "https://deno.land/std@0.178.0/media_types/mod.ts": "d3f0b99f85053bc0b98ecc24eaa3546dfa09b856dc0bbaf60d8956d2cdd710c8", + "https://deno.land/std@0.178.0/media_types/parse_media_type.ts": "bed260d868ea271445ae41d748e7afed9b5a7f407d2777ead08cecf73e9278de", + "https://deno.land/std@0.178.0/media_types/type_by_extension.ts": "6076a7fc63181d70f92ec582fdea2c927eb2cfc7f9c9bee9d6add2aca86f2355", + "https://deno.land/std@0.178.0/media_types/vendor/mime-db.v1.52.0.ts": "6925bbcae81ca37241e3f55908d0505724358cda3384eaea707773b2c7e99586", + "https://deno.land/std@0.178.0/path/_constants.ts": "e49961f6f4f48039c0dfed3c3f93e963ca3d92791c9d478ac5b43183413136e0", + "https://deno.land/std@0.178.0/path/_interface.ts": "6471159dfbbc357e03882c2266d21ef9afdb1e4aa771b0545e90db58a0ba314b", + "https://deno.land/std@0.178.0/path/_util.ts": "d7abb1e0dea065f427b89156e28cdeb32b045870acdf865833ba808a73b576d0", + "https://deno.land/std@0.178.0/path/common.ts": "ee7505ab01fd22de3963b64e46cff31f40de34f9f8de1fff6a1bd2fe79380000", + "https://deno.land/std@0.178.0/path/glob.ts": "d479e0a695621c94d3fd7fe7abd4f9499caf32a8de13f25073451c6ef420a4e1", + "https://deno.land/std@0.178.0/path/mod.ts": "4b83694ac500d7d31b0cdafc927080a53dc0c3027eb2895790fb155082b0d232", + "https://deno.land/std@0.178.0/path/posix.ts": "8b7c67ac338714b30c816079303d0285dd24af6b284f7ad63da5b27372a2c94d", + "https://deno.land/std@0.178.0/path/separator.ts": "0fb679739d0d1d7bf45b68dacfb4ec7563597a902edbaf3c59b50d5bcadd93b1", + "https://deno.land/std@0.178.0/path/win32.ts": "d186344e5583bcbf8b18af416d13d82b35a317116e6460a5a3953508c3de5bba", + "https://deno.land/std@0.178.0/streams/_common.ts": "f45cba84f0d813de3326466095539602364a9ba521f804cc758f7a475cda692d", + "https://deno.land/std@0.178.0/streams/buffer.ts": "7e7676c29e0e72f6821c3b5fede2540886a216bb91c849bb5db20bb82a01d8a1", + "https://deno.land/std@0.178.0/streams/byte_slice_stream.ts": "cf5785b0d9223ebb51fcf6679d881dfaf614c3b288fb4577b511b6f7801a01aa", + "https://deno.land/std@0.178.0/streams/copy.ts": "de0de21701d8cceba84ca01d9731c77f4b3597bb9de6a1b08f32250353feeae8", + "https://deno.land/std@0.178.0/streams/delimiter_stream.ts": "de8f822a1c394cdb805a97e364400955cd1757cc282d932b4040a0f78fba3b5f", + "https://deno.land/std@0.178.0/streams/early_zip_readable_streams.ts": "64828085be5812ec5f4896c10b59f14e5a322b2c0439be9331dde332ae9c91de", + "https://deno.land/std@0.178.0/streams/iterate_reader.ts": "06491ed8f1bb1c619abbfa04c10b173ff95a93e51fe5037b7c1ad0b5cc01fc7d", + "https://deno.land/std@0.178.0/streams/limited_bytes_transform_stream.ts": "3bc04143b8b91a923f5ee81a3c618b6606ac7da66ccbcde62a67aaa0375cbc71", + "https://deno.land/std@0.178.0/streams/limited_transform_stream.ts": "b336f5d649a06e35e2692849e3682a673bb32531738443eb2ce9f57538722f75", + "https://deno.land/std@0.178.0/streams/merge_readable_streams.ts": "5d6302888f4bb0616dafb5768771be0aec9bedc05fbae6b3d726d05ffbec5b15", + "https://deno.land/std@0.178.0/streams/mod.ts": "c07ec010e700b9ea887dc36ca08729828bc7912f711e4054e24d33fd46282252", + "https://deno.land/std@0.178.0/streams/read_all.ts": "bfa220b0e1d06fa4d0cb5178baba8f8b466019a7411511982bfa2320ca292815", + "https://deno.land/std@0.178.0/streams/readable_stream_from_iterable.ts": "cae337ddafd2abc5e3df699ef2af888ac04091f12732ae658448fba2c7b187e8", + "https://deno.land/std@0.178.0/streams/readable_stream_from_reader.ts": "9aceaeefa9e04b08f56b2d07272baedc3b6432840b66198d72fa2ada3e6608ea", + "https://deno.land/std@0.178.0/streams/reader_from_iterable.ts": "05f7759b9336fd4c233d9daadf92aec9a7d2c07a05986da466a935cec2dd79d9", + "https://deno.land/std@0.178.0/streams/reader_from_stream_reader.ts": "3fda9390ec8520c8a9ea2aba2579208b18880a7663d7a9feec8f193b7af14e41", + "https://deno.land/std@0.178.0/streams/text_delimiter_stream.ts": "ee216316360366c3744197f5665a066a25e6baa8cfe836fbe9a0033e079e089e", + "https://deno.land/std@0.178.0/streams/text_line_stream.ts": "a9dd2636c6b90e626e19df26c97034c5f638bdd957cbd5c531d6278fe1d08e90", + "https://deno.land/std@0.178.0/streams/to_transform_stream.ts": "31c8cce967a2f602be5f164973a5c6cedd4c76e1d2fbc22ae0081b084f73fb0e", + "https://deno.land/std@0.178.0/streams/writable_stream_from_writer.ts": "0320b759aa343f9f4f58b014fe301d9a7abcbfb8413d260502a885995e6a0776", + "https://deno.land/std@0.178.0/streams/write_all.ts": "3b2e1ce44913f966348ce353d02fa5369e94115181037cd8b602510853ec3033", + "https://deno.land/std@0.178.0/streams/writer_from_stream_writer.ts": "31126a6bf2e678c5a718011d4831dbe75dbdbd885965d3dbd5dd105e6f20f976", + "https://deno.land/std@0.178.0/streams/zip_readable_streams.ts": "9eb82070d83055fe6f077192fb204dc7612695a4b330148e9aa376df1a65e708", + "https://deno.land/std@0.178.0/types.d.ts": "220ed56662a0bd393ba5d124aa6ae2ad36a00d2fcbc0e8666a65f4606aaa9784", + "https://deno.land/std@0.181.0/_util/asserts.ts": "178dfc49a464aee693a7e285567b3d0b555dc805ff490505a8aae34f9cfb1462", + "https://deno.land/std@0.181.0/bytes/copy.ts": "939d89e302a9761dcf1d9c937c7711174ed74c59eef40a1e4569a05c9de88219", + "https://deno.land/std@0.181.0/fmt/colors.ts": "d67e3cd9f472535241a8e410d33423980bec45047e343577554d3356e1f0ef4e", + "https://deno.land/std@0.181.0/fs/exists.ts": "b8c8a457b71e9d7f29b9d2f87aad8dba2739cbe637e8926d6ba6e92567875f8e", + "https://deno.land/std@0.181.0/io/buf_writer.ts": "48c33c8f00b61dcbc7958706741cec8e59810bd307bc6a326cbd474fe8346dfd", + "https://deno.land/std@0.181.0/log/handlers.ts": "38871ecbfa67b0d39dc3384210439ac9a13cba6118b912236f9011b5989b9a4d", + "https://deno.land/std@0.181.0/log/levels.ts": "6309147664e9e008cd6671610f2505c4c95f181f6bae4816a84b33e0aec66859", + "https://deno.land/std@0.181.0/log/logger.ts": "257ceb47e3f5f872068073de9809b015a7400e8d86dd40563c1d80169e578f71", + "https://deno.land/std@0.181.0/log/mod.ts": "36d156ad18de3f1806c6ddafa4965129be99ccafc27f1813de528d65b6c528bf", + "https://deno.land/std@0.181.0/types.d.ts": "dbaeb2c4d7c526db9828fc8df89d8aecf53b9ced72e0c4568f97ddd8cda616a4", + "https://deno.land/x/oak@v12.1.0/application.ts": "641c071bf14b476d603be18a984573e8a7c0da9c1bfc141ae44dad8012f2c5d6", + "https://deno.land/x/oak@v12.1.0/body.ts": "c7392f1dae04a360838f43b9cdd2f83d29c1eff4e6071d5f0cf1f3999b1602bc", + "https://deno.land/x/oak@v12.1.0/buf_reader.ts": "7cf96aa0ac670b75098113cf88a291a68332cc45efa8a9698f064ac5b8098a0f", + "https://deno.land/x/oak@v12.1.0/content_disposition.ts": "8b8c3cb2fba7138cd5b7f82fc3b5ea39b33db924a824b28261659db7e164621e", + "https://deno.land/x/oak@v12.1.0/context.ts": "81b97dab6b35ab872d5b2ff5221b4bc71b425f7069ce1a1dcc1d20c50a09865f", + "https://deno.land/x/oak@v12.1.0/deps.ts": "29134b39303d85527915650d6f11909c1e29c4cd208dd2ad9887ce2537167b42", + "https://deno.land/x/oak@v12.1.0/etag.ts": "19918f5e1964e3fe6c9fe524a88ffbf9900ce1dfe4146b187b2a86256bb6b663", + "https://deno.land/x/oak@v12.1.0/headers.ts": "f50fb05614432bda971021633129aa2e8737e0844e0f01c27a937997b4d8dd4f", + "https://deno.land/x/oak@v12.1.0/helpers.ts": "42212afa07a560b2958359cc19577417e89d9574d6579551a0af36ff7f00cc6e", + "https://deno.land/x/oak@v12.1.0/http_request.ts": "9f2cc5f4b9e72c5156dd4710875d9f54f992d69ca1a8ad5e0915a773f0e26e8b", + "https://deno.land/x/oak@v12.1.0/http_server_flash.ts": "6afeb6bfe77a08d99b205ebf09d18c98b4050ce9cbc66e24be1fba6e46bc7a4f", + "https://deno.land/x/oak@v12.1.0/http_server_native.ts": "0141e1339ed9a33bc26ce537ddab5adbb3542b35916d92de286aed4937e4a6d6", + "https://deno.land/x/oak@v12.1.0/http_server_native_request.ts": "be315d476550e149c58d7ccd2812be30f373ceedc9c323c300eef03b7c071aa9", + "https://deno.land/x/oak@v12.1.0/isMediaType.ts": "62d638abcf837ece3a8f07a4b7ca59794135cb0d4b73194c7d5837efd4161005", + "https://deno.land/x/oak@v12.1.0/mediaTyper.ts": "042b853fc8e9c3f6c628dd389e03ef481552bf07242efc3f8a1af042102a6105", + "https://deno.land/x/oak@v12.1.0/middleware.ts": "de14f045a2ddfe845d89b5d3140ff52cbcc6f3b3965391106ce04480f9786737", + "https://deno.land/x/oak@v12.1.0/middleware/proxy.ts": "b927232f97ec18af4185d7912e45b1191e3ffe24a9c875262ad524211b1274c9", + "https://deno.land/x/oak@v12.1.0/mod.ts": "210619d431e41c763486467b0498ef50de79119d750abc57331f76e36f642fc1", + "https://deno.land/x/oak@v12.1.0/multipart.ts": "98fe9f226de8c26a16d067027b69fb1e34ad8c4055767dd157907d06cea36f9a", + "https://deno.land/x/oak@v12.1.0/range.ts": "68a6df7ab3b868843e33f52deb94c3d4cab25cb9ef369691990c2ac15b04fafb", + "https://deno.land/x/oak@v12.1.0/request.ts": "5852ad36389b48e0428a6f3c90854d01f10d1b15949b56001e1e75c2a00ef0f9", + "https://deno.land/x/oak@v12.1.0/response.ts": "867d81f7eb0c65c7b8e0e0e9e145ededd5b6daa9ad922e6adc6a36a525f439a6", + "https://deno.land/x/oak@v12.1.0/router.ts": "5b266091e55f634c9130e6de5dd331ddfc4c190ee7916a25e0a0f75502edbc32", + "https://deno.land/x/oak@v12.1.0/send.ts": "c592a6782c82442d011923297a724c2cba8de14c4a9384c6eb9cebb766817e92", + "https://deno.land/x/oak@v12.1.0/server_sent_event.ts": "948b0fe4cb3fe38c7db15e476eb3b7671ef20e566d130e9f701d7c0146aa47dd", + "https://deno.land/x/oak@v12.1.0/structured_clone.ts": "9c2d21c62f616400305a60cbd29eb06764ee97edc423223424b6cf55df0e8be2", + "https://deno.land/x/oak@v12.1.0/testing.ts": "a0be5c84981afde666de29630f34b09d944ca1a2fe6a5185644b60ad95e16d18", + "https://deno.land/x/oak@v12.1.0/types.d.ts": "41951a18c3bfdb11e40707cab75da078ba8a4907cd7d4e11d8536bc2db0dde05", + "https://deno.land/x/oak@v12.1.0/util.ts": "3af8c4ed04c6cc2bedbe66e562a77fc59c72df31c55a902a63885861ca1639d6", + "https://deno.land/x/path_to_regexp@v6.2.1/index.ts": "894060567837bae8fc9c5cbd4d0a05e9024672083d5883b525c031eea940e556" + }, + "npm": { + "specifiers": { + "@aws-sdk/client-dynamodb": "@aws-sdk/client-dynamodb@3.303.0", + "@aws-sdk/client-sesv2": "@aws-sdk/client-sesv2@3.303.0" + }, + "packages": { + "@aws-crypto/ie11-detection@3.0.0": { + "integrity": "sha512-341lBBkiY1DfDNKai/wXM3aujNBkXR7tq1URPQDL9wi3AUbI80NR74uF1TXHMm7po1AcnFk8iu2S2IeU/+/A+Q==", + "dependencies": { + "tslib": "tslib@1.14.1" + } + }, + "@aws-crypto/sha256-browser@3.0.0": { + "integrity": "sha512-8VLmW2B+gjFbU5uMeqtQM6Nj0/F1bro80xQXCW6CQBWgosFWXTx77aeOF5CAIAmbOK64SdMBJdNr6J41yP5mvQ==", + "dependencies": { + "@aws-crypto/ie11-detection": "@aws-crypto/ie11-detection@3.0.0", + "@aws-crypto/sha256-js": "@aws-crypto/sha256-js@3.0.0", + "@aws-crypto/supports-web-crypto": "@aws-crypto/supports-web-crypto@3.0.0", + "@aws-crypto/util": "@aws-crypto/util@3.0.0", + "@aws-sdk/types": "@aws-sdk/types@3.303.0", + "@aws-sdk/util-locate-window": "@aws-sdk/util-locate-window@3.295.0", + "@aws-sdk/util-utf8-browser": "@aws-sdk/util-utf8-browser@3.259.0", + "tslib": "tslib@1.14.1" + } + }, + "@aws-crypto/sha256-js@3.0.0": { + "integrity": "sha512-PnNN7os0+yd1XvXAy23CFOmTbMaDxgxXtTKHybrJ39Y8kGzBATgBFibWJKH6BhytLI/Zyszs87xCOBNyBig6vQ==", + "dependencies": { + "@aws-crypto/util": "@aws-crypto/util@3.0.0", + "@aws-sdk/types": "@aws-sdk/types@3.303.0", + "tslib": "tslib@1.14.1" + } + }, + "@aws-crypto/supports-web-crypto@3.0.0": { + "integrity": "sha512-06hBdMwUAb2WFTuGG73LSC0wfPu93xWwo5vL2et9eymgmu3Id5vFAHBbajVWiGhPO37qcsdCap/FqXvJGJWPIg==", + "dependencies": { + "tslib": "tslib@1.14.1" + } + }, + "@aws-crypto/util@3.0.0": { + "integrity": "sha512-2OJlpeJpCR48CC8r+uKVChzs9Iungj9wkZrl8Z041DWEWvyIHILYKCPNzJghKsivj+S3mLo6BVc7mBNzdxA46w==", + "dependencies": { + "@aws-sdk/types": "@aws-sdk/types@3.303.0", + "@aws-sdk/util-utf8-browser": "@aws-sdk/util-utf8-browser@3.259.0", + "tslib": "tslib@1.14.1" + } + }, + "@aws-sdk/abort-controller@3.303.0": { + "integrity": "sha512-LzNzpeyTppcmV/6SAQI3T/huOkMrUnFveplgVNwJxw+rVqmqmGV6z6vpg+oRICRDcjXWYiSiaClxxSVvOy0sDQ==", + "dependencies": { + "@aws-sdk/types": "@aws-sdk/types@3.303.0", + "tslib": "tslib@2.5.0" + } + }, + "@aws-sdk/client-dynamodb@3.303.0": { + "integrity": "sha512-Ki90c+WcG8/36oSxHZypekSdt2taDc1/bg/HY+IA33P/h0tgBbg1IrqrrFyT/HKCcZqR6tIzS5qZOkw0GAHBYQ==", + "dependencies": { + "@aws-crypto/sha256-browser": "@aws-crypto/sha256-browser@3.0.0", + "@aws-crypto/sha256-js": "@aws-crypto/sha256-js@3.0.0", + "@aws-sdk/client-sts": "@aws-sdk/client-sts@3.303.0", + "@aws-sdk/config-resolver": "@aws-sdk/config-resolver@3.303.0", + "@aws-sdk/credential-provider-node": "@aws-sdk/credential-provider-node@3.303.0", + "@aws-sdk/fetch-http-handler": "@aws-sdk/fetch-http-handler@3.303.0", + "@aws-sdk/hash-node": "@aws-sdk/hash-node@3.303.0", + "@aws-sdk/invalid-dependency": "@aws-sdk/invalid-dependency@3.303.0", + "@aws-sdk/middleware-content-length": "@aws-sdk/middleware-content-length@3.303.0", + "@aws-sdk/middleware-endpoint": "@aws-sdk/middleware-endpoint@3.303.0", + "@aws-sdk/middleware-endpoint-discovery": "@aws-sdk/middleware-endpoint-discovery@3.303.0", + "@aws-sdk/middleware-host-header": "@aws-sdk/middleware-host-header@3.303.0", + "@aws-sdk/middleware-logger": "@aws-sdk/middleware-logger@3.303.0", + "@aws-sdk/middleware-recursion-detection": "@aws-sdk/middleware-recursion-detection@3.303.0", + "@aws-sdk/middleware-retry": "@aws-sdk/middleware-retry@3.303.0", + "@aws-sdk/middleware-serde": "@aws-sdk/middleware-serde@3.303.0", + "@aws-sdk/middleware-signing": "@aws-sdk/middleware-signing@3.303.0", + "@aws-sdk/middleware-stack": "@aws-sdk/middleware-stack@3.303.0", + "@aws-sdk/middleware-user-agent": "@aws-sdk/middleware-user-agent@3.303.0", + "@aws-sdk/node-config-provider": "@aws-sdk/node-config-provider@3.303.0", + "@aws-sdk/node-http-handler": "@aws-sdk/node-http-handler@3.303.0", + "@aws-sdk/protocol-http": "@aws-sdk/protocol-http@3.303.0", + "@aws-sdk/smithy-client": "@aws-sdk/smithy-client@3.303.0", + "@aws-sdk/types": "@aws-sdk/types@3.303.0", + "@aws-sdk/url-parser": "@aws-sdk/url-parser@3.303.0", + "@aws-sdk/util-base64": "@aws-sdk/util-base64@3.303.0", + "@aws-sdk/util-body-length-browser": "@aws-sdk/util-body-length-browser@3.303.0", + "@aws-sdk/util-body-length-node": "@aws-sdk/util-body-length-node@3.303.0", + "@aws-sdk/util-defaults-mode-browser": "@aws-sdk/util-defaults-mode-browser@3.303.0", + "@aws-sdk/util-defaults-mode-node": "@aws-sdk/util-defaults-mode-node@3.303.0", + "@aws-sdk/util-endpoints": "@aws-sdk/util-endpoints@3.303.0", + "@aws-sdk/util-retry": "@aws-sdk/util-retry@3.303.0", + "@aws-sdk/util-user-agent-browser": "@aws-sdk/util-user-agent-browser@3.303.0", + "@aws-sdk/util-user-agent-node": "@aws-sdk/util-user-agent-node@3.303.0", + "@aws-sdk/util-utf8": "@aws-sdk/util-utf8@3.303.0", + "@aws-sdk/util-waiter": "@aws-sdk/util-waiter@3.303.0", + "tslib": "tslib@2.5.0", + "uuid": "uuid@8.3.2" + } + }, + "@aws-sdk/client-sesv2@3.303.0": { + "integrity": "sha512-7Fht51deRW+KFbb665/g/DfhQhblj9cx0iRGfDtCLIYdVqN1dUJZxoEOSmjymlXAmdF53WN2QMqaStYFJ3Y89w==", + "dependencies": { + "@aws-crypto/sha256-browser": "@aws-crypto/sha256-browser@3.0.0", + "@aws-crypto/sha256-js": "@aws-crypto/sha256-js@3.0.0", + "@aws-sdk/client-sts": "@aws-sdk/client-sts@3.303.0", + "@aws-sdk/config-resolver": "@aws-sdk/config-resolver@3.303.0", + "@aws-sdk/credential-provider-node": "@aws-sdk/credential-provider-node@3.303.0", + "@aws-sdk/fetch-http-handler": "@aws-sdk/fetch-http-handler@3.303.0", + "@aws-sdk/hash-node": "@aws-sdk/hash-node@3.303.0", + "@aws-sdk/invalid-dependency": "@aws-sdk/invalid-dependency@3.303.0", + "@aws-sdk/middleware-content-length": "@aws-sdk/middleware-content-length@3.303.0", + "@aws-sdk/middleware-endpoint": "@aws-sdk/middleware-endpoint@3.303.0", + "@aws-sdk/middleware-host-header": "@aws-sdk/middleware-host-header@3.303.0", + "@aws-sdk/middleware-logger": "@aws-sdk/middleware-logger@3.303.0", + "@aws-sdk/middleware-recursion-detection": "@aws-sdk/middleware-recursion-detection@3.303.0", + "@aws-sdk/middleware-retry": "@aws-sdk/middleware-retry@3.303.0", + "@aws-sdk/middleware-serde": "@aws-sdk/middleware-serde@3.303.0", + "@aws-sdk/middleware-signing": "@aws-sdk/middleware-signing@3.303.0", + "@aws-sdk/middleware-stack": "@aws-sdk/middleware-stack@3.303.0", + "@aws-sdk/middleware-user-agent": "@aws-sdk/middleware-user-agent@3.303.0", + "@aws-sdk/node-config-provider": "@aws-sdk/node-config-provider@3.303.0", + "@aws-sdk/node-http-handler": "@aws-sdk/node-http-handler@3.303.0", + "@aws-sdk/protocol-http": "@aws-sdk/protocol-http@3.303.0", + "@aws-sdk/smithy-client": "@aws-sdk/smithy-client@3.303.0", + "@aws-sdk/types": "@aws-sdk/types@3.303.0", + "@aws-sdk/url-parser": "@aws-sdk/url-parser@3.303.0", + "@aws-sdk/util-base64": "@aws-sdk/util-base64@3.303.0", + "@aws-sdk/util-body-length-browser": "@aws-sdk/util-body-length-browser@3.303.0", + "@aws-sdk/util-body-length-node": "@aws-sdk/util-body-length-node@3.303.0", + "@aws-sdk/util-defaults-mode-browser": "@aws-sdk/util-defaults-mode-browser@3.303.0", + "@aws-sdk/util-defaults-mode-node": "@aws-sdk/util-defaults-mode-node@3.303.0", + "@aws-sdk/util-endpoints": "@aws-sdk/util-endpoints@3.303.0", + "@aws-sdk/util-retry": "@aws-sdk/util-retry@3.303.0", + "@aws-sdk/util-user-agent-browser": "@aws-sdk/util-user-agent-browser@3.303.0", + "@aws-sdk/util-user-agent-node": "@aws-sdk/util-user-agent-node@3.303.0", + "@aws-sdk/util-utf8": "@aws-sdk/util-utf8@3.303.0", + "tslib": "tslib@2.5.0" + } + }, + "@aws-sdk/client-sso-oidc@3.303.0": { + "integrity": "sha512-oOdDcBjxGiJ6mFWUMVr+A1hAzGRpcZ+oLAhCakpvpXCUG50PZSBFP+vOQXgHY/XNolqDg+IHq60oE9HoPzGleg==", + "dependencies": { + "@aws-crypto/sha256-browser": "@aws-crypto/sha256-browser@3.0.0", + "@aws-crypto/sha256-js": "@aws-crypto/sha256-js@3.0.0", + "@aws-sdk/config-resolver": "@aws-sdk/config-resolver@3.303.0", + "@aws-sdk/fetch-http-handler": "@aws-sdk/fetch-http-handler@3.303.0", + "@aws-sdk/hash-node": "@aws-sdk/hash-node@3.303.0", + "@aws-sdk/invalid-dependency": "@aws-sdk/invalid-dependency@3.303.0", + "@aws-sdk/middleware-content-length": "@aws-sdk/middleware-content-length@3.303.0", + "@aws-sdk/middleware-endpoint": "@aws-sdk/middleware-endpoint@3.303.0", + "@aws-sdk/middleware-host-header": "@aws-sdk/middleware-host-header@3.303.0", + "@aws-sdk/middleware-logger": "@aws-sdk/middleware-logger@3.303.0", + "@aws-sdk/middleware-recursion-detection": "@aws-sdk/middleware-recursion-detection@3.303.0", + "@aws-sdk/middleware-retry": "@aws-sdk/middleware-retry@3.303.0", + "@aws-sdk/middleware-serde": "@aws-sdk/middleware-serde@3.303.0", + "@aws-sdk/middleware-stack": "@aws-sdk/middleware-stack@3.303.0", + "@aws-sdk/middleware-user-agent": "@aws-sdk/middleware-user-agent@3.303.0", + "@aws-sdk/node-config-provider": "@aws-sdk/node-config-provider@3.303.0", + "@aws-sdk/node-http-handler": "@aws-sdk/node-http-handler@3.303.0", + "@aws-sdk/protocol-http": "@aws-sdk/protocol-http@3.303.0", + "@aws-sdk/smithy-client": "@aws-sdk/smithy-client@3.303.0", + "@aws-sdk/types": "@aws-sdk/types@3.303.0", + "@aws-sdk/url-parser": "@aws-sdk/url-parser@3.303.0", + "@aws-sdk/util-base64": "@aws-sdk/util-base64@3.303.0", + "@aws-sdk/util-body-length-browser": "@aws-sdk/util-body-length-browser@3.303.0", + "@aws-sdk/util-body-length-node": "@aws-sdk/util-body-length-node@3.303.0", + "@aws-sdk/util-defaults-mode-browser": "@aws-sdk/util-defaults-mode-browser@3.303.0", + "@aws-sdk/util-defaults-mode-node": "@aws-sdk/util-defaults-mode-node@3.303.0", + "@aws-sdk/util-endpoints": "@aws-sdk/util-endpoints@3.303.0", + "@aws-sdk/util-retry": "@aws-sdk/util-retry@3.303.0", + "@aws-sdk/util-user-agent-browser": "@aws-sdk/util-user-agent-browser@3.303.0", + "@aws-sdk/util-user-agent-node": "@aws-sdk/util-user-agent-node@3.303.0", + "@aws-sdk/util-utf8": "@aws-sdk/util-utf8@3.303.0", + "tslib": "tslib@2.5.0" + } + }, + "@aws-sdk/client-sso@3.303.0": { + "integrity": "sha512-LZ+Z6vGnEdqmxx0dqtZP97n5VX5uUKu4lJmDR3sdGolxAUqCY1FxHDZd9DzCFXR8rwoJK4VJTL+exzeVp4Ly/g==", + "dependencies": { + "@aws-crypto/sha256-browser": "@aws-crypto/sha256-browser@3.0.0", + "@aws-crypto/sha256-js": "@aws-crypto/sha256-js@3.0.0", + "@aws-sdk/config-resolver": "@aws-sdk/config-resolver@3.303.0", + "@aws-sdk/fetch-http-handler": "@aws-sdk/fetch-http-handler@3.303.0", + "@aws-sdk/hash-node": "@aws-sdk/hash-node@3.303.0", + "@aws-sdk/invalid-dependency": "@aws-sdk/invalid-dependency@3.303.0", + "@aws-sdk/middleware-content-length": "@aws-sdk/middleware-content-length@3.303.0", + "@aws-sdk/middleware-endpoint": "@aws-sdk/middleware-endpoint@3.303.0", + "@aws-sdk/middleware-host-header": "@aws-sdk/middleware-host-header@3.303.0", + "@aws-sdk/middleware-logger": "@aws-sdk/middleware-logger@3.303.0", + "@aws-sdk/middleware-recursion-detection": "@aws-sdk/middleware-recursion-detection@3.303.0", + "@aws-sdk/middleware-retry": "@aws-sdk/middleware-retry@3.303.0", + "@aws-sdk/middleware-serde": "@aws-sdk/middleware-serde@3.303.0", + "@aws-sdk/middleware-stack": "@aws-sdk/middleware-stack@3.303.0", + "@aws-sdk/middleware-user-agent": "@aws-sdk/middleware-user-agent@3.303.0", + "@aws-sdk/node-config-provider": "@aws-sdk/node-config-provider@3.303.0", + "@aws-sdk/node-http-handler": "@aws-sdk/node-http-handler@3.303.0", + "@aws-sdk/protocol-http": "@aws-sdk/protocol-http@3.303.0", + "@aws-sdk/smithy-client": "@aws-sdk/smithy-client@3.303.0", + "@aws-sdk/types": "@aws-sdk/types@3.303.0", + "@aws-sdk/url-parser": "@aws-sdk/url-parser@3.303.0", + "@aws-sdk/util-base64": "@aws-sdk/util-base64@3.303.0", + "@aws-sdk/util-body-length-browser": "@aws-sdk/util-body-length-browser@3.303.0", + "@aws-sdk/util-body-length-node": "@aws-sdk/util-body-length-node@3.303.0", + "@aws-sdk/util-defaults-mode-browser": "@aws-sdk/util-defaults-mode-browser@3.303.0", + "@aws-sdk/util-defaults-mode-node": "@aws-sdk/util-defaults-mode-node@3.303.0", + "@aws-sdk/util-endpoints": "@aws-sdk/util-endpoints@3.303.0", + "@aws-sdk/util-retry": "@aws-sdk/util-retry@3.303.0", + "@aws-sdk/util-user-agent-browser": "@aws-sdk/util-user-agent-browser@3.303.0", + "@aws-sdk/util-user-agent-node": "@aws-sdk/util-user-agent-node@3.303.0", + "@aws-sdk/util-utf8": "@aws-sdk/util-utf8@3.303.0", + "tslib": "tslib@2.5.0" + } + }, + "@aws-sdk/client-sts@3.303.0": { + "integrity": "sha512-oda7mOfGyJZe62DZ5BVH3L84yeDM0Ja/fSpTjwV9hqFqzgtW83TCpiNegcJmvmGWDYaPmE2qpfDPqPzymB0sBg==", + "dependencies": { + "@aws-crypto/sha256-browser": "@aws-crypto/sha256-browser@3.0.0", + "@aws-crypto/sha256-js": "@aws-crypto/sha256-js@3.0.0", + "@aws-sdk/config-resolver": "@aws-sdk/config-resolver@3.303.0", + "@aws-sdk/credential-provider-node": "@aws-sdk/credential-provider-node@3.303.0", + "@aws-sdk/fetch-http-handler": "@aws-sdk/fetch-http-handler@3.303.0", + "@aws-sdk/hash-node": "@aws-sdk/hash-node@3.303.0", + "@aws-sdk/invalid-dependency": "@aws-sdk/invalid-dependency@3.303.0", + "@aws-sdk/middleware-content-length": "@aws-sdk/middleware-content-length@3.303.0", + "@aws-sdk/middleware-endpoint": "@aws-sdk/middleware-endpoint@3.303.0", + "@aws-sdk/middleware-host-header": "@aws-sdk/middleware-host-header@3.303.0", + "@aws-sdk/middleware-logger": "@aws-sdk/middleware-logger@3.303.0", + "@aws-sdk/middleware-recursion-detection": "@aws-sdk/middleware-recursion-detection@3.303.0", + "@aws-sdk/middleware-retry": "@aws-sdk/middleware-retry@3.303.0", + "@aws-sdk/middleware-sdk-sts": "@aws-sdk/middleware-sdk-sts@3.303.0", + "@aws-sdk/middleware-serde": "@aws-sdk/middleware-serde@3.303.0", + "@aws-sdk/middleware-signing": "@aws-sdk/middleware-signing@3.303.0", + "@aws-sdk/middleware-stack": "@aws-sdk/middleware-stack@3.303.0", + "@aws-sdk/middleware-user-agent": "@aws-sdk/middleware-user-agent@3.303.0", + "@aws-sdk/node-config-provider": "@aws-sdk/node-config-provider@3.303.0", + "@aws-sdk/node-http-handler": "@aws-sdk/node-http-handler@3.303.0", + "@aws-sdk/protocol-http": "@aws-sdk/protocol-http@3.303.0", + "@aws-sdk/smithy-client": "@aws-sdk/smithy-client@3.303.0", + "@aws-sdk/types": "@aws-sdk/types@3.303.0", + "@aws-sdk/url-parser": "@aws-sdk/url-parser@3.303.0", + "@aws-sdk/util-base64": "@aws-sdk/util-base64@3.303.0", + "@aws-sdk/util-body-length-browser": "@aws-sdk/util-body-length-browser@3.303.0", + "@aws-sdk/util-body-length-node": "@aws-sdk/util-body-length-node@3.303.0", + "@aws-sdk/util-defaults-mode-browser": "@aws-sdk/util-defaults-mode-browser@3.303.0", + "@aws-sdk/util-defaults-mode-node": "@aws-sdk/util-defaults-mode-node@3.303.0", + "@aws-sdk/util-endpoints": "@aws-sdk/util-endpoints@3.303.0", + "@aws-sdk/util-retry": "@aws-sdk/util-retry@3.303.0", + "@aws-sdk/util-user-agent-browser": "@aws-sdk/util-user-agent-browser@3.303.0", + "@aws-sdk/util-user-agent-node": "@aws-sdk/util-user-agent-node@3.303.0", + "@aws-sdk/util-utf8": "@aws-sdk/util-utf8@3.303.0", + "fast-xml-parser": "fast-xml-parser@4.1.2", + "tslib": "tslib@2.5.0" + } + }, + "@aws-sdk/config-resolver@3.303.0": { + "integrity": "sha512-uGZ47jcH86AwWcjZjuOL5jK5qE4izrEol8oF7KY214kjmavbKQstyUqmcwL2lr/YpDNFkCYgUxWRpduqVm8zmw==", + "dependencies": { + "@aws-sdk/types": "@aws-sdk/types@3.303.0", + "@aws-sdk/util-config-provider": "@aws-sdk/util-config-provider@3.295.0", + "@aws-sdk/util-middleware": "@aws-sdk/util-middleware@3.303.0", + "tslib": "tslib@2.5.0" + } + }, + "@aws-sdk/credential-provider-env@3.303.0": { + "integrity": "sha512-rtXumfF4cGrVk9fWACeLCfdpmlzlDUkzwSR60/3enC5Antcxl3fFY5T1BzNFvz0mB0zcwm4kaAwIcljX67DNRA==", + "dependencies": { + "@aws-sdk/property-provider": "@aws-sdk/property-provider@3.303.0", + "@aws-sdk/types": "@aws-sdk/types@3.303.0", + "tslib": "tslib@2.5.0" + } + }, + "@aws-sdk/credential-provider-imds@3.303.0": { + "integrity": "sha512-ruomcFkKUpJkZb87em698//A0AVpt1KN9dn8N8eVyOuvZzebVxSW4AJoVgOKd5Av4PVcZgEqRX0kOOVp0iTrWg==", + "dependencies": { + "@aws-sdk/node-config-provider": "@aws-sdk/node-config-provider@3.303.0", + "@aws-sdk/property-provider": "@aws-sdk/property-provider@3.303.0", + "@aws-sdk/types": "@aws-sdk/types@3.303.0", + "@aws-sdk/url-parser": "@aws-sdk/url-parser@3.303.0", + "tslib": "tslib@2.5.0" + } + }, + "@aws-sdk/credential-provider-ini@3.303.0": { + "integrity": "sha512-4J50F6fEjQmAstSQOpJFG+rnbEqtwA7nDG6PxNm98VSTH2mYJV0YgBdvydfBKrKINAT4xYZta5Sc4WEIpSo0TA==", + "dependencies": { + "@aws-sdk/credential-provider-env": "@aws-sdk/credential-provider-env@3.303.0", + "@aws-sdk/credential-provider-imds": "@aws-sdk/credential-provider-imds@3.303.0", + "@aws-sdk/credential-provider-process": "@aws-sdk/credential-provider-process@3.303.0", + "@aws-sdk/credential-provider-sso": "@aws-sdk/credential-provider-sso@3.303.0", + "@aws-sdk/credential-provider-web-identity": "@aws-sdk/credential-provider-web-identity@3.303.0", + "@aws-sdk/property-provider": "@aws-sdk/property-provider@3.303.0", + "@aws-sdk/shared-ini-file-loader": "@aws-sdk/shared-ini-file-loader@3.303.0", + "@aws-sdk/types": "@aws-sdk/types@3.303.0", + "tslib": "tslib@2.5.0" + } + }, + "@aws-sdk/credential-provider-node@3.303.0": { + "integrity": "sha512-OlKb7O2jDtrzkzLT/PUb5kxuGGTIyPn2alXzGT+7LdJ9/tP8KlqSVMtnH2UYPPdcc/daK16+MRNL5ylxmnRJ7Q==", + "dependencies": { + "@aws-sdk/credential-provider-env": "@aws-sdk/credential-provider-env@3.303.0", + "@aws-sdk/credential-provider-imds": "@aws-sdk/credential-provider-imds@3.303.0", + "@aws-sdk/credential-provider-ini": "@aws-sdk/credential-provider-ini@3.303.0", + "@aws-sdk/credential-provider-process": "@aws-sdk/credential-provider-process@3.303.0", + "@aws-sdk/credential-provider-sso": "@aws-sdk/credential-provider-sso@3.303.0", + "@aws-sdk/credential-provider-web-identity": "@aws-sdk/credential-provider-web-identity@3.303.0", + "@aws-sdk/property-provider": "@aws-sdk/property-provider@3.303.0", + "@aws-sdk/shared-ini-file-loader": "@aws-sdk/shared-ini-file-loader@3.303.0", + "@aws-sdk/types": "@aws-sdk/types@3.303.0", + "tslib": "tslib@2.5.0" + } + }, + "@aws-sdk/credential-provider-process@3.303.0": { + "integrity": "sha512-1pxDYRscGlERAjFE5hSF1KQdcyOGzssuRTdLvez4I/mSIOAJLMmBAnmHGI/DME2LzDVrC9dklA6LHSC2sn3quQ==", + "dependencies": { + "@aws-sdk/property-provider": "@aws-sdk/property-provider@3.303.0", + "@aws-sdk/shared-ini-file-loader": "@aws-sdk/shared-ini-file-loader@3.303.0", + "@aws-sdk/types": "@aws-sdk/types@3.303.0", + "tslib": "tslib@2.5.0" + } + }, + "@aws-sdk/credential-provider-sso@3.303.0": { + "integrity": "sha512-/szzM1BzZGjHwV4mSiZo65cyDleJqnxM9Y4autg55mb3dFwcCiMGI6TGbdegumrNZZlCTeTA1lIhA9PdT4gDAQ==", + "dependencies": { + "@aws-sdk/client-sso": "@aws-sdk/client-sso@3.303.0", + "@aws-sdk/property-provider": "@aws-sdk/property-provider@3.303.0", + "@aws-sdk/shared-ini-file-loader": "@aws-sdk/shared-ini-file-loader@3.303.0", + "@aws-sdk/token-providers": "@aws-sdk/token-providers@3.303.0", + "@aws-sdk/types": "@aws-sdk/types@3.303.0", + "tslib": "tslib@2.5.0" + } + }, + "@aws-sdk/credential-provider-web-identity@3.303.0": { + "integrity": "sha512-qi5CP4ocseqdj3kMi0vgLx8XrdanLNvCAfgiEF6LjUJI88R2snZAYNUSd+Y2n04mKAalns+mUwfUN2JyL66d5g==", + "dependencies": { + "@aws-sdk/property-provider": "@aws-sdk/property-provider@3.303.0", + "@aws-sdk/types": "@aws-sdk/types@3.303.0", + "tslib": "tslib@2.5.0" + } + }, + "@aws-sdk/endpoint-cache@3.303.0": { + "integrity": "sha512-Ybh3AciI0PiMmlQgMNBmJXo4dnik9/OMihHUSWlZtLNA0480ZIwMbpUgs2O4SX2S2+a+ZqgyF/o1nFodaWl6ZA==", + "dependencies": { + "mnemonist": "mnemonist@0.38.3", + "tslib": "tslib@2.5.0" + } + }, + "@aws-sdk/fetch-http-handler@3.303.0": { + "integrity": "sha512-Bc6C86/KQOSWPa741h9QEVcApyignYV5vC5+zZjmKkcyPxrVxTmL3kTJidpVOtVfCmTIrNN/WhAVDzLBbh1ycQ==", + "dependencies": { + "@aws-sdk/protocol-http": "@aws-sdk/protocol-http@3.303.0", + "@aws-sdk/querystring-builder": "@aws-sdk/querystring-builder@3.303.0", + "@aws-sdk/types": "@aws-sdk/types@3.303.0", + "@aws-sdk/util-base64": "@aws-sdk/util-base64@3.303.0", + "tslib": "tslib@2.5.0" + } + }, + "@aws-sdk/hash-node@3.303.0": { + "integrity": "sha512-jSo4A/JxTabZ9jHrx7nhKIXnOmvPg/SSYnoHaFdVS5URJrNt1w+nSvW1wLGMEMOvu5+NU3bldBBSb+h0Ocwv1A==", + "dependencies": { + "@aws-sdk/types": "@aws-sdk/types@3.303.0", + "@aws-sdk/util-buffer-from": "@aws-sdk/util-buffer-from@3.303.0", + "@aws-sdk/util-utf8": "@aws-sdk/util-utf8@3.303.0", + "tslib": "tslib@2.5.0" + } + }, + "@aws-sdk/invalid-dependency@3.303.0": { + "integrity": "sha512-RXNcLxOrUJaMMqk5uIYEf6X9XCMockT27bS8Dde/0ms015VOo8Wn2hHU9wEmGeFvLccC2UU4gPzvmj74w70q2Q==", + "dependencies": { + "@aws-sdk/types": "@aws-sdk/types@3.303.0", + "tslib": "tslib@2.5.0" + } + }, + "@aws-sdk/is-array-buffer@3.303.0": { + "integrity": "sha512-IitBTr+pou7v5BrYLFH/SbIf3g1LIgMhcI3bDXBq2FjzmDftj4bW8BOmg05b9YKf2TrrggvJ4yk/jH+yYFXoJQ==", + "dependencies": { + "tslib": "tslib@2.5.0" + } + }, + "@aws-sdk/middleware-content-length@3.303.0": { + "integrity": "sha512-0UL5TWSL1JRpjT6gjGsZXfia5oL7vxzj+CfMCqkP6gjVF69eRcgu426Xc6TJwDcr6jIFPeamDBTLyt9ZAAr6hg==", + "dependencies": { + "@aws-sdk/protocol-http": "@aws-sdk/protocol-http@3.303.0", + "@aws-sdk/types": "@aws-sdk/types@3.303.0", + "tslib": "tslib@2.5.0" + } + }, + "@aws-sdk/middleware-endpoint-discovery@3.303.0": { + "integrity": "sha512-tVIAjnButEDzx7QJvUy/4fYnhzT/CTE8pN1aoO+h9BicImnIbvo9cJyeJxYQz7o5tcipZ69TlOEcP8HF3vg21Q==", + "dependencies": { + "@aws-sdk/endpoint-cache": "@aws-sdk/endpoint-cache@3.303.0", + "@aws-sdk/protocol-http": "@aws-sdk/protocol-http@3.303.0", + "@aws-sdk/types": "@aws-sdk/types@3.303.0", + "tslib": "tslib@2.5.0" + } + }, + "@aws-sdk/middleware-endpoint@3.303.0": { + "integrity": "sha512-z2i8LJ6YTKbqXh9rY/KbXihvhq6P0JVI6SnkwT2hesJp0Nfldx85jsaLzj1+ioNKlQ+51u9UmBnO404DgNCAbg==", + "dependencies": { + "@aws-sdk/middleware-serde": "@aws-sdk/middleware-serde@3.303.0", + "@aws-sdk/types": "@aws-sdk/types@3.303.0", + "@aws-sdk/url-parser": "@aws-sdk/url-parser@3.303.0", + "@aws-sdk/util-middleware": "@aws-sdk/util-middleware@3.303.0", + "tslib": "tslib@2.5.0" + } + }, + "@aws-sdk/middleware-host-header@3.303.0": { + "integrity": "sha512-LUyhtjbuosrD0QAsBZJwT3yp146I7Xjehf42OP3dWbRuklMEilI0Res5K2/nknf3/ZKUj6sf7BbJoU8E+SpRiQ==", + "dependencies": { + "@aws-sdk/protocol-http": "@aws-sdk/protocol-http@3.303.0", + "@aws-sdk/types": "@aws-sdk/types@3.303.0", + "tslib": "tslib@2.5.0" + } + }, + "@aws-sdk/middleware-logger@3.303.0": { + "integrity": "sha512-y2sqmmBdm4gXUL4SyN+ucfO/sxtOEDj2sB12ArRpDGyerfNLhAf7xpL4lXkjPx/7wTIjlBWoO2G/yK6t00P6fA==", + "dependencies": { + "@aws-sdk/types": "@aws-sdk/types@3.303.0", + "tslib": "tslib@2.5.0" + } + }, + "@aws-sdk/middleware-recursion-detection@3.303.0": { + "integrity": "sha512-z3MTsZMtPg6hYWl6a0o07q7zgsDXPYeP14XFVMc8NXqiAyNcm/OYwanpXyNjsEKI/X0nlpJ/Rs+IRCbaIqV9Mw==", + "dependencies": { + "@aws-sdk/protocol-http": "@aws-sdk/protocol-http@3.303.0", + "@aws-sdk/types": "@aws-sdk/types@3.303.0", + "tslib": "tslib@2.5.0" + } + }, + "@aws-sdk/middleware-retry@3.303.0": { + "integrity": "sha512-wxlqrdGOrCm2Jsra7YyfLyO34YRB/FNlXzwuJiZkqoAb/40ZAuFcWqDv41SP44y8liFXqfsMGuywJ7mK2cHvnA==", + "dependencies": { + "@aws-sdk/protocol-http": "@aws-sdk/protocol-http@3.303.0", + "@aws-sdk/service-error-classification": "@aws-sdk/service-error-classification@3.303.0", + "@aws-sdk/types": "@aws-sdk/types@3.303.0", + "@aws-sdk/util-middleware": "@aws-sdk/util-middleware@3.303.0", + "@aws-sdk/util-retry": "@aws-sdk/util-retry@3.303.0", + "tslib": "tslib@2.5.0", + "uuid": "uuid@8.3.2" + } + }, + "@aws-sdk/middleware-sdk-sts@3.303.0": { + "integrity": "sha512-igp7htNCUPhVL9Q6rJSgcx3qy/P2l2KAiS0oozOTaTXt3h0LbOusSXtwyA7qvLYeRthnw6msVW+rVBAW3Vo+3g==", + "dependencies": { + "@aws-sdk/middleware-signing": "@aws-sdk/middleware-signing@3.303.0", + "@aws-sdk/types": "@aws-sdk/types@3.303.0", + "tslib": "tslib@2.5.0" + } + }, + "@aws-sdk/middleware-serde@3.303.0": { + "integrity": "sha512-mmZozwYKgUgXkJrLVqgIYoOQ8DfKZS3pBBT3ZxWzv5Hz5M3oRqFgfVYljkeDM2CTvBweHpqVRTWqPDMcZisucg==", + "dependencies": { + "@aws-sdk/types": "@aws-sdk/types@3.303.0", + "tslib": "tslib@2.5.0" + } + }, + "@aws-sdk/middleware-signing@3.303.0": { + "integrity": "sha512-rrLQcS2wFsUGj9Kyx78LRgRS8jwiixz/Nyv06SmcKhP680sweETpQz/EA+wcVEVRXmUI6vs4NtqXz36dU0X8Nw==", + "dependencies": { + "@aws-sdk/property-provider": "@aws-sdk/property-provider@3.303.0", + "@aws-sdk/protocol-http": "@aws-sdk/protocol-http@3.303.0", + "@aws-sdk/signature-v4": "@aws-sdk/signature-v4@3.303.0", + "@aws-sdk/types": "@aws-sdk/types@3.303.0", + "@aws-sdk/util-middleware": "@aws-sdk/util-middleware@3.303.0", + "tslib": "tslib@2.5.0" + } + }, + "@aws-sdk/middleware-stack@3.303.0": { + "integrity": "sha512-6KmdroXLexzILGxF/Xq0cGBs+B8Ipm1pff8qnWCT6KldYp+Q40bVcJrExkVHDN1uOsOxu20ixW2yujOKS356zg==", + "dependencies": { + "tslib": "tslib@2.5.0" + } + }, + "@aws-sdk/middleware-user-agent@3.303.0": { + "integrity": "sha512-ZVMVNxPRn2jXog3V4xWokSYoQxTKAdKlNoCfjqFplsF70r8sXfgZtOMF5ZhGo+Hgsx7GqpR/NWPKJtZD2nigpg==", + "dependencies": { + "@aws-sdk/protocol-http": "@aws-sdk/protocol-http@3.303.0", + "@aws-sdk/types": "@aws-sdk/types@3.303.0", + "@aws-sdk/util-endpoints": "@aws-sdk/util-endpoints@3.303.0", + "tslib": "tslib@2.5.0" + } + }, + "@aws-sdk/node-config-provider@3.303.0": { + "integrity": "sha512-Ywbo9+2SkbdmNgCoxYJrv+YrFDtBH7hHtn2ywtzP4t57d4t0V/LNrNQsrAsXxqy48OS5r2ovOLHiqJS5jp1oyw==", + "dependencies": { + "@aws-sdk/property-provider": "@aws-sdk/property-provider@3.303.0", + "@aws-sdk/shared-ini-file-loader": "@aws-sdk/shared-ini-file-loader@3.303.0", + "@aws-sdk/types": "@aws-sdk/types@3.303.0", + "tslib": "tslib@2.5.0" + } + }, + "@aws-sdk/node-http-handler@3.303.0": { + "integrity": "sha512-5Te+mwBIOiQr2nM7/SNVFkvYHOH/CswOmUMV4Gxc7YjuervhrYvVFs2P+lL+c8rfiVMTLWjnJ6JiL2JdJfYgnQ==", + "dependencies": { + "@aws-sdk/abort-controller": "@aws-sdk/abort-controller@3.303.0", + "@aws-sdk/protocol-http": "@aws-sdk/protocol-http@3.303.0", + "@aws-sdk/querystring-builder": "@aws-sdk/querystring-builder@3.303.0", + "@aws-sdk/types": "@aws-sdk/types@3.303.0", + "tslib": "tslib@2.5.0" + } + }, + "@aws-sdk/property-provider@3.303.0": { + "integrity": "sha512-d1qbn0pCz+jvB0dcWMWuIlWYM8dWCg3185ngMgUQxkgUk7/kEbwGBsmT+xtZAMQcwcgPkSm8qeATEQ7ToiH8eQ==", + "dependencies": { + "@aws-sdk/types": "@aws-sdk/types@3.303.0", + "tslib": "tslib@2.5.0" + } + }, + "@aws-sdk/protocol-http@3.303.0": { + "integrity": "sha512-eqblSsdmKBzgNl06dUnL4toq/OQgZyxVsxHCz2nI/xBk5lI/qAZIJyEgP2GmP8aoWwneAq33roG0VLZoxQ8exg==", + "dependencies": { + "@aws-sdk/types": "@aws-sdk/types@3.303.0", + "tslib": "tslib@2.5.0" + } + }, + "@aws-sdk/querystring-builder@3.303.0": { + "integrity": "sha512-0eMp2gd7Ro0svJ6YVnp9cUiGtrc1d/HynyMfbDkLkqWJAnHMz7Oc1GjK5YyL1hdxm0W+JWZCPR0SovLiaboKDw==", + "dependencies": { + "@aws-sdk/types": "@aws-sdk/types@3.303.0", + "@aws-sdk/util-uri-escape": "@aws-sdk/util-uri-escape@3.303.0", + "tslib": "tslib@2.5.0" + } + }, + "@aws-sdk/querystring-parser@3.303.0": { + "integrity": "sha512-KNJSQiTFiA7W5eYCox8bLGM7kghC3Azad86HQhdsYO0jCoPxcgj8MeP6T7fPTIC4WcTwcWb7T1MpzoeBiKMOTQ==", + "dependencies": { + "@aws-sdk/types": "@aws-sdk/types@3.303.0", + "tslib": "tslib@2.5.0" + } + }, + "@aws-sdk/service-error-classification@3.303.0": { + "integrity": "sha512-eO13PzdtRO9C+g3tyFOpIblX2SbDrIbg2bNtB8JOfjVi3E1b5VsSTXXU/cKV+lbZ9XMzMn3VzGSvpo6AjzfpxA==", + "dependencies": {} + }, + "@aws-sdk/shared-ini-file-loader@3.303.0": { + "integrity": "sha512-yI84mnnh3pdQtIOo+oGWofaI0rvfhp3DOavB8KHIkQr+RcjF+fxsqbelRfVb25gx7yEWPNCMB8wM+HhklSEFJg==", + "dependencies": { + "@aws-sdk/types": "@aws-sdk/types@3.303.0", + "tslib": "tslib@2.5.0" + } + }, + "@aws-sdk/signature-v4@3.303.0": { + "integrity": "sha512-muw5yclLOgXPHIxv60mhO6R0GVjKbf+M6E/cWvIEVGq8Ke+mLMYNFYNdKP/f/8JgTtW2xwQ7pIK3U8x284ZqPw==", + "dependencies": { + "@aws-sdk/is-array-buffer": "@aws-sdk/is-array-buffer@3.303.0", + "@aws-sdk/types": "@aws-sdk/types@3.303.0", + "@aws-sdk/util-hex-encoding": "@aws-sdk/util-hex-encoding@3.295.0", + "@aws-sdk/util-middleware": "@aws-sdk/util-middleware@3.303.0", + "@aws-sdk/util-uri-escape": "@aws-sdk/util-uri-escape@3.303.0", + "@aws-sdk/util-utf8": "@aws-sdk/util-utf8@3.303.0", + "tslib": "tslib@2.5.0" + } + }, + "@aws-sdk/smithy-client@3.303.0": { + "integrity": "sha512-WDTC9ODdpRAXo8+Mtr5hsPJeR3y3LxfZZFg5dplJgkaxV+MFdnsUCxZfAZMnxcGy5Q2qTzlLLNk9CpadS72v+g==", + "dependencies": { + "@aws-sdk/middleware-stack": "@aws-sdk/middleware-stack@3.303.0", + "@aws-sdk/types": "@aws-sdk/types@3.303.0", + "tslib": "tslib@2.5.0" + } + }, + "@aws-sdk/token-providers@3.303.0": { + "integrity": "sha512-7G7VYbqyX0v6RTD/m7XmArZToMek4jYXR/TuuGHK6ifNJeMDwkU4BcoVDj37vvTPYp6qKU5IE+bE3XmPyVWnGQ==", + "dependencies": { + "@aws-sdk/client-sso-oidc": "@aws-sdk/client-sso-oidc@3.303.0", + "@aws-sdk/property-provider": "@aws-sdk/property-provider@3.303.0", + "@aws-sdk/shared-ini-file-loader": "@aws-sdk/shared-ini-file-loader@3.303.0", + "@aws-sdk/types": "@aws-sdk/types@3.303.0", + "tslib": "tslib@2.5.0" + } + }, + "@aws-sdk/types@3.303.0": { + "integrity": "sha512-H+Cy8JDTsK87MID6MJbV9ad5xdS9YvaLZSeveC2Zs1WNu2Rp6X9j+mg3EqDSmBKUQVAFRy2b+CSKkH3nnBMedw==", + "dependencies": { + "tslib": "tslib@2.5.0" + } + }, + "@aws-sdk/url-parser@3.303.0": { + "integrity": "sha512-PXMXGhr89s0MiPTf8Ft/v3sPzh2geSrFhTVSO/01blfBQqtuu0JMqORhLheOdi16AhQNVlYHDW2tWdx7/T+KsA==", + "dependencies": { + "@aws-sdk/querystring-parser": "@aws-sdk/querystring-parser@3.303.0", + "@aws-sdk/types": "@aws-sdk/types@3.303.0", + "tslib": "tslib@2.5.0" + } + }, + "@aws-sdk/util-base64@3.303.0": { + "integrity": "sha512-oj+p/GHHPcZEKjiiOHU/CyNQeh8i+8dfMMzU+VGdoK5jHaVG8h2b+V7GPf7I4wDkG2ySCK5b5Jw5NUHwdTJ13Q==", + "dependencies": { + "@aws-sdk/util-buffer-from": "@aws-sdk/util-buffer-from@3.303.0", + "tslib": "tslib@2.5.0" + } + }, + "@aws-sdk/util-body-length-browser@3.303.0": { + "integrity": "sha512-T643m0pKzgjAvPFy4W8zL+aszG3T22U8hb6stlMvT0z++Smv8QfIvkIkXjWyH2KlOt5GKliHwdOv8SAi0FSMJQ==", + "dependencies": { + "tslib": "tslib@2.5.0" + } + }, + "@aws-sdk/util-body-length-node@3.303.0": { + "integrity": "sha512-/hS8z6e18Le60hJr2TUIFoUjUiAsnQsuDn6DxX74GXhMOHeSwZDJ9jHF39quYkNMmAE37GrVH4MI9vE0pN27qw==", + "dependencies": { + "tslib": "tslib@2.5.0" + } + }, + "@aws-sdk/util-buffer-from@3.303.0": { + "integrity": "sha512-hUU+NW+SW6RNojtAKnnmz+tDShVKlEx2YsS4a5fSfrKRUes+zWz10cxVX0RQfysd3R6tdSHhbjsSj8eCIybheg==", + "dependencies": { + "@aws-sdk/is-array-buffer": "@aws-sdk/is-array-buffer@3.303.0", + "tslib": "tslib@2.5.0" + } + }, + "@aws-sdk/util-config-provider@3.295.0": { + "integrity": "sha512-/5Dl1aV2yI8YQjqwmg4RTnl/E9NmNsx7HIwBZt+dTcOrM0LMUwczQBFFcLyqCj/qv5y+VsvLoAAA/OiBT7hb3w==", + "dependencies": { + "tslib": "tslib@2.5.0" + } + }, + "@aws-sdk/util-defaults-mode-browser@3.303.0": { + "integrity": "sha512-jtZgCKelFe4/SHDHQu9ydbYttxSfqSlQojA5qxTJxLvzryIB+/GTHQ+sYWyMyzaD489W9elt1/cSsXd4LtPK0A==", + "dependencies": { + "@aws-sdk/property-provider": "@aws-sdk/property-provider@3.303.0", + "@aws-sdk/types": "@aws-sdk/types@3.303.0", + "bowser": "bowser@2.11.0", + "tslib": "tslib@2.5.0" + } + }, + "@aws-sdk/util-defaults-mode-node@3.303.0": { + "integrity": "sha512-c86iyot/u9bCVcy/rlWL+0kdR51c7C2d2yDXvO9iFCdMKAs28Hw1ijGczVmOcUQ61zKNFSGYx+VekHXN9IWYOg==", + "dependencies": { + "@aws-sdk/config-resolver": "@aws-sdk/config-resolver@3.303.0", + "@aws-sdk/credential-provider-imds": "@aws-sdk/credential-provider-imds@3.303.0", + "@aws-sdk/node-config-provider": "@aws-sdk/node-config-provider@3.303.0", + "@aws-sdk/property-provider": "@aws-sdk/property-provider@3.303.0", + "@aws-sdk/types": "@aws-sdk/types@3.303.0", + "tslib": "tslib@2.5.0" + } + }, + "@aws-sdk/util-endpoints@3.303.0": { + "integrity": "sha512-dPg9+l3VY3nclWFiWAVNWek5lQwgdtY8oRYOgCeyntce9FlNrPQgCRTVr36D0iQ0aNCs0GWzfjgL+rIdCF66/w==", + "dependencies": { + "@aws-sdk/types": "@aws-sdk/types@3.303.0", + "tslib": "tslib@2.5.0" + } + }, + "@aws-sdk/util-hex-encoding@3.295.0": { + "integrity": "sha512-XJcoVo41kHzhe28PBm/rqt5mdCp8R6abwiW9ug1dA6FOoPUO8kBUxDv6xaOmA2hfRvd2ocFfBXaUCBqUowkGcQ==", + "dependencies": { + "tslib": "tslib@2.5.0" + } + }, + "@aws-sdk/util-locate-window@3.295.0": { + "integrity": "sha512-d/s+zhUx5Kh4l/ecMP/TBjzp1GR/g89Q4nWH6+wH5WgdHsK+LG+vmsk6mVNuP/8wsCofYG4NBqp5Ulbztbm9QA==", + "dependencies": { + "tslib": "tslib@2.5.0" + } + }, + "@aws-sdk/util-middleware@3.303.0": { + "integrity": "sha512-HAfBcbZw1+pY3dIEDM4jVpH1ViFcGH5s0q1dr+x4rcLGpMM3B4dH0HUgDPtycG8sw+nk+9jGgiEtgaCNOpJLGA==", + "dependencies": { + "tslib": "tslib@2.5.0" + } + }, + "@aws-sdk/util-retry@3.303.0": { + "integrity": "sha512-RWwRNjoWMcpDouz69wPuFXWFVzwYtUkTbJfa46SjKl1IwqMHS4f9yjJfCwJIoLOW9M/o2JB7nD0Ij3gqqzajLw==", + "dependencies": { + "@aws-sdk/service-error-classification": "@aws-sdk/service-error-classification@3.303.0", + "tslib": "tslib@2.5.0" + } + }, + "@aws-sdk/util-uri-escape@3.303.0": { + "integrity": "sha512-N3ULNuHCL3QzAlCTY+XRRkRQTYCTU8RRuzFCJX0pDpz9t2K+tLT7DbxqupWGNFGl5Xlulf1Is14J3BP/Dx91rA==", + "dependencies": { + "tslib": "tslib@2.5.0" + } + }, + "@aws-sdk/util-user-agent-browser@3.303.0": { + "integrity": "sha512-Kex3abpUrTX9z129jiI8sfjIUmQDwiWjhkvBkPmrwjFY/sZcnOcXj5nP2iwJ+k6CnA5ZK5PjZ6P62t+eJ5MTXw==", + "dependencies": { + "@aws-sdk/types": "@aws-sdk/types@3.303.0", + "bowser": "bowser@2.11.0", + "tslib": "tslib@2.5.0" + } + }, + "@aws-sdk/util-user-agent-node@3.303.0": { + "integrity": "sha512-QYUg8F/Ho6AsVZaSSRMf/LWoEPDyOwgKZBw3AbKoH6RxAdAsdL1SXz5t4A6jHakP9TLVN2Yw2WRbHDe4LATASQ==", + "dependencies": { + "@aws-sdk/node-config-provider": "@aws-sdk/node-config-provider@3.303.0", + "@aws-sdk/types": "@aws-sdk/types@3.303.0", + "tslib": "tslib@2.5.0" + } + }, + "@aws-sdk/util-utf8-browser@3.259.0": { + "integrity": "sha512-UvFa/vR+e19XookZF8RzFZBrw2EUkQWxiBW0yYQAhvk3C+QVGl0H3ouca8LDBlBfQKXwmW3huo/59H8rwb1wJw==", + "dependencies": { + "tslib": "tslib@2.5.0" + } + }, + "@aws-sdk/util-utf8@3.303.0": { + "integrity": "sha512-tZXVuMOIONPOuOGBs/XRdzxv6jUvTM620dRFFIHZwlGiW8bo0x0LlonrzDAJZA4e9ZwmxJIj8Ji13WVRBGvZWg==", + "dependencies": { + "@aws-sdk/util-buffer-from": "@aws-sdk/util-buffer-from@3.303.0", + "tslib": "tslib@2.5.0" + } + }, + "@aws-sdk/util-waiter@3.303.0": { + "integrity": "sha512-rh1NtjORXAgHyp5GY96cf48Vhhd+t8k/DFKaiuSEkIydcxJABUbNdP/U7EurGMq5kyozyMB2a+cHULeXsh0YFQ==", + "dependencies": { + "@aws-sdk/abort-controller": "@aws-sdk/abort-controller@3.303.0", + "@aws-sdk/types": "@aws-sdk/types@3.303.0", + "tslib": "tslib@2.5.0" + } + }, + "bowser@2.11.0": { + "integrity": "sha512-AlcaJBi/pqqJBIQ8U9Mcpc9i8Aqxn88Skv5d+xBX006BY5u8N3mGLHa5Lgppa7L/HfwgwLgZ6NYs+Ag6uUmJRA==", + "dependencies": {} + }, + "fast-xml-parser@4.1.2": { + "integrity": "sha512-CDYeykkle1LiA/uqQyNwYpFbyF6Axec6YapmpUP+/RHWIoR1zKjocdvNaTsxCxZzQ6v9MLXaSYm9Qq0thv0DHg==", + "dependencies": { + "strnum": "strnum@1.0.5" + } + }, + "mnemonist@0.38.3": { + "integrity": "sha512-2K9QYubXx/NAjv4VLq1d1Ly8pWNC5L3BrixtdkyTegXWJIqY+zLNDhhX/A+ZwWt70tB1S8H4BE8FLYEFyNoOBw==", + "dependencies": { + "obliterator": "obliterator@1.6.1" + } + }, + "obliterator@1.6.1": { + "integrity": "sha512-9WXswnqINnnhOG/5SLimUlzuU1hFJUc8zkwyD59Sd+dPOMf05PmnYG/d6Q7HZ+KmgkZJa1PxRso6QdM3sTNHig==", + "dependencies": {} + }, + "strnum@1.0.5": { + "integrity": "sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==", + "dependencies": {} + }, + "tslib@1.14.1": { + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dependencies": {} + }, + "tslib@2.5.0": { + "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==", + "dependencies": {} + }, + "uuid@8.3.2": { + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "dependencies": {} + } + } + } +} diff --git a/server/error.ts b/server/error.ts new file mode 100644 index 0000000..97bf769 --- /dev/null +++ b/server/error.ts @@ -0,0 +1,3 @@ +import { HttpError } from "https://deno.land/x/oak@v12.1.0/mod.ts"; + +export interface ApplicationError extends HttpError {} diff --git a/server/main_test.ts b/server/main_test.ts new file mode 100644 index 0000000..055521a --- /dev/null +++ b/server/main_test.ts @@ -0,0 +1,6 @@ +import { assertEquals } from "https://deno.land/std@0.181.0/testing/asserts.ts"; +import { add } from "./main.ts"; + +Deno.test(function addTest() { + assertEquals(add(2, 3), 5); +}); diff --git a/server/middlewares/logger.ts b/server/middlewares/logger.ts new file mode 100644 index 0000000..e69de29 diff --git a/server/routes/index.ts b/server/routes/index.ts new file mode 100644 index 0000000..42ff576 --- /dev/null +++ b/server/routes/index.ts @@ -0,0 +1,38 @@ +import { + HttpError, + isHttpError, + Router, + Status, +} from "https://deno.land/x/oak@v12.1.0/mod.ts"; + +import { ApplicationState } from "../app.ts"; + +export const router = new Router(); + + +router.use(async (ctx, next) => { + try { + await next(); + } catch (err) { + console.log(err.test); + } +}); + +router.use(async (ctx, next) => { + ctx.response.type = "application/json"; + await next(); +}); + +router.get("/", (ctx) => { + ctx.response.body = "HI"; +}); + +router.post("/", async (ctx) => { + const body = ctx.request.body({ type: "json" }); + + const data = await body.value; + + if (!data) { + ctx.throw(Status.BadRequest, "Body is empty", { test: "asdf" }); + } +}); diff --git a/server/server.ts b/server/server.ts new file mode 100644 index 0000000..a5d91d7 --- /dev/null +++ b/server/server.ts @@ -0,0 +1,8 @@ +import { App } from "./app.ts"; + +async function serve() { + const app = new App(); + await app.start(); +} + +serve();