From 858ce6d5d88f4e31ed215a368008ff9862142719 Mon Sep 17 00:00:00 2001 From: Nathan Flurry Date: Fri, 7 Jun 2024 16:17:55 -0700 Subject: [PATCH] chore: migrate from yaml to json --- modules/auth/module.json | 52 +++++++ modules/auth/module.yaml | 37 ----- modules/currency/module.json | 45 ++++++ modules/currency/module.yaml | 32 ---- modules/email/module.json | 27 ++++ modules/email/module.yaml | 18 --- modules/friends/module.json | 77 +++++++++ modules/friends/module.yaml | 56 ------- modules/rate_limit/module.json | 29 ++++ modules/rate_limit/module.yaml | 20 --- modules/tokens/module.json | 50 ++++++ modules/tokens/module.yaml | 35 ----- modules/users/module.json | 44 ++++++ modules/users/module.yaml | 31 ---- tests/basic/backend.json | 42 +++++ tests/basic/backend.yaml | 27 ---- tests/basic/deno.lock | 276 +++++++++++++++++++++++++++++++++ 17 files changed, 642 insertions(+), 256 deletions(-) create mode 100644 modules/auth/module.json delete mode 100644 modules/auth/module.yaml create mode 100644 modules/currency/module.json delete mode 100644 modules/currency/module.yaml create mode 100644 modules/email/module.json delete mode 100644 modules/email/module.yaml create mode 100644 modules/friends/module.json delete mode 100644 modules/friends/module.yaml create mode 100644 modules/rate_limit/module.json delete mode 100644 modules/rate_limit/module.yaml create mode 100644 modules/tokens/module.json delete mode 100644 modules/tokens/module.yaml create mode 100644 modules/users/module.json delete mode 100644 modules/users/module.yaml create mode 100644 tests/basic/backend.json delete mode 100644 tests/basic/backend.yaml create mode 100644 tests/basic/deno.lock diff --git a/modules/auth/module.json b/modules/auth/module.json new file mode 100644 index 00000000..f54f48fc --- /dev/null +++ b/modules/auth/module.json @@ -0,0 +1,52 @@ +{ + "name": "Authentication", + "description": "Authenticate users with multiple authentication methods.", + "icon": "key", + "tags": [ + "core", + "auth", + "user" + ], + "authors": [ + "rivet-gg", + "NathanFlurry" + ], + "status": "stable", + "dependencies": { + "email": {}, + "users": {}, + "rate_limit": {} + }, + "scripts": { + "auth_email_passwordless": { + "name": "Authenticate Email Passwordless", + "description": "Send a one-time verification code to a user's email address to authenticate them.", + "public": true + }, + "verify_email_passwordless": { + "name": "Verify Email Passwordless", + "description": "Verify a user's email address with a one-time verification code.", + "public": true + } + }, + "errors": { + "provider_disabled": { + "name": "Provider Disabled" + }, + "verification_code_invalid": { + "name": "Verification Code Invalid" + }, + "verification_code_attempt_limit": { + "name": "Verification Code Attempt Limit" + }, + "verification_code_expired": { + "name": "Verification Code Expired" + }, + "verification_code_already_used": { + "name": "Verification Code Already Used" + }, + "email_already_used": { + "name": "Email Already Used" + } + } +} \ No newline at end of file diff --git a/modules/auth/module.yaml b/modules/auth/module.yaml deleted file mode 100644 index b5d0bd32..00000000 --- a/modules/auth/module.yaml +++ /dev/null @@ -1,37 +0,0 @@ -name: Authentication -description: Authenticate users with multiple authentication methods. -icon: key -tags: - - core - - auth - - user -authors: - - rivet-gg - - NathanFlurry -status: stable -dependencies: - email: {} - users: {} - rate_limit: {} -scripts: - auth_email_passwordless: - name: Authenticate Email Passwordless - description: Send a one-time verification code to a user's email address to authenticate them. - public: true - verify_email_passwordless: - name: Verify Email Passwordless - description: Verify a user's email address with a one-time verification code. - public: true -errors: - provider_disabled: - name: Provider Disabled - verification_code_invalid: - name: Verification Code Invalid - verification_code_attempt_limit: - name: Verification Code Attempt Limit - verification_code_expired: - name: Verification Code Expired - verification_code_already_used: - name: Verification Code Already Used - email_already_used: - name: Email Already Used diff --git a/modules/currency/module.json b/modules/currency/module.json new file mode 100644 index 00000000..ed9641ff --- /dev/null +++ b/modules/currency/module.json @@ -0,0 +1,45 @@ +{ + "name": "Currency", + "description": "Track user balances and allow them to deposit and withdraw.", + "icon": "coin", + "tags": [ + "economy" + ], + "authors": [ + "ABCxFF" + ], + "status": "preview", + "dependencies": { + "rate_limit": {}, + "users": {} + }, + "scripts": { + "deposit": { + "name": "Deposit" + }, + "withdraw": { + "name": "Withdraw" + }, + "get_balance": { + "name": "Get Balance" + }, + "set_balance": { + "name": "Set Balance" + }, + "get_balance_by_token": { + "name": "Get Balance by Token", + "public": true + } + }, + "errors": { + "invalid_user": { + "name": "Invalid User" + }, + "invalid_amount": { + "name": "Invalid Amount" + }, + "not_enough_funds": { + "name": "Not Enough Funds" + } + } +} \ No newline at end of file diff --git a/modules/currency/module.yaml b/modules/currency/module.yaml deleted file mode 100644 index 7caa2169..00000000 --- a/modules/currency/module.yaml +++ /dev/null @@ -1,32 +0,0 @@ -name: Currency -description: Track user balances and allow them to deposit and withdraw. -icon: coin -tags: - - economy -authors: - - ABCxFF -status: preview -dependencies: - rate_limit: {} - users: {} -scripts: - # Maybe deposit? - deposit: - name: Deposit - # Maybe withdraw? - withdraw: - name: Withdraw - get_balance: - name: Get Balance - set_balance: - name: Set Balance - get_balance_by_token: - name: Get Balance by Token - public: true -errors: - invalid_user: - name: Invalid User - invalid_amount: - name: Invalid Amount - not_enough_funds: - name: Not Enough Funds diff --git a/modules/email/module.json b/modules/email/module.json new file mode 100644 index 00000000..374f1d84 --- /dev/null +++ b/modules/email/module.json @@ -0,0 +1,27 @@ +{ + "name": "Email", + "description": "Send emails using multiple providers.", + "icon": "envelope", + "tags": [ + "email" + ], + "authors": [ + "rivet-gg", + "NathanFlurry" + ], + "status": "stable", + "scripts": { + "send_email": { + "name": "Send Email" + } + }, + "errors": { + "email_missing_content": { + "name": "Email Missing Content", + "description": "Email must have `html` and/or `text`" + }, + "sendgrid_error": { + "name": "SendGrid Error" + } + } +} \ No newline at end of file diff --git a/modules/email/module.yaml b/modules/email/module.yaml deleted file mode 100644 index 5cec1a5e..00000000 --- a/modules/email/module.yaml +++ /dev/null @@ -1,18 +0,0 @@ -name: Email -description: Send emails using multiple providers. -icon: envelope -tags: - - email -authors: - - rivet-gg - - NathanFlurry -status: stable -scripts: - send_email: - name: Send Email -errors: - email_missing_content: - name: Email Missing Content - description: Email must have `html` and/or `text` - sendgrid_error: - name: SendGrid Error diff --git a/modules/friends/module.json b/modules/friends/module.json new file mode 100644 index 00000000..a6bb3f08 --- /dev/null +++ b/modules/friends/module.json @@ -0,0 +1,77 @@ +{ + "name": "Friends", + "description": "Allow users to send and accept friend requests.", + "icon": "user-group", + "tags": [ + "social" + ], + "authors": [ + "rivet-gg", + "NathanFlurry" + ], + "status": "beta", + "dependencies": { + "rate_limit": {}, + "users": {} + }, + "scripts": { + "send_request": { + "name": "Send Request", + "description": "Send a friend request to another user.", + "public": true + }, + "accept_request": { + "name": "Accept Request", + "description": "Accept a friend request from another user.", + "public": true + }, + "decline_request": { + "name": "Decline Request", + "description": "Decline a friend request from another user.", + "public": true + }, + "remove_friend": { + "name": "Remove Friend", + "description": "Remove a friend from your friends list.", + "public": true + }, + "list_friends": { + "name": "List Friends", + "description": "List all friends of a user.", + "public": true + }, + "list_outgoing_friend_requests": { + "name": "List Outgoing Friend Requests", + "description": "List all friend requests sent by a user.", + "public": true + }, + "list_incoming_friend_requests": { + "name": "List Incoming Friend Requests", + "description": "List all friend requests received by a user.", + "public": true + } + }, + "errors": { + "already_friends": { + "name": "Already Friends" + }, + "friend_request_not_found": { + "name": "Friend Request Not Found" + }, + "friend_request_already_exists": { + "name": "Friend Request Already Exists" + }, + "not_friend_request_recipient": { + "name": "Not Friend Request Recipient" + }, + "friend_request_already_accepted": { + "name": "Friend Request Already Accepted" + }, + "friend_request_already_declined": { + "name": "Friend Request Already Declined" + }, + "cannot_send_to_self": { + "name": "Cannot Send to Self" + } + } +} \ No newline at end of file diff --git a/modules/friends/module.yaml b/modules/friends/module.yaml deleted file mode 100644 index 38d2d812..00000000 --- a/modules/friends/module.yaml +++ /dev/null @@ -1,56 +0,0 @@ -name: Friends -description: Allow users to send and accept friend requests. -icon: user-group -tags: - - social -authors: - - rivet-gg - - NathanFlurry -status: beta -dependencies: - rate_limit: {} - users: {} -scripts: - send_request: - name: Send Request - description: Send a friend request to another user. - public: true - accept_request: - name: Accept Request - description: Accept a friend request from another user. - public: true - decline_request: - name: Decline Request - description: Decline a friend request from another user. - public: true - remove_friend: - name: Remove Friend - description: Remove a friend from your friends list. - public: true - list_friends: - name: List Friends - description: List all friends of a user. - public: true - list_outgoing_friend_requests: - name: List Outgoing Friend Requests - description: List all friend requests sent by a user. - public: true - list_incoming_friend_requests: - name: List Incoming Friend Requests - description: List all friend requests received by a user. - public: true -errors: - already_friends: - name: Already Friends - friend_request_not_found: - name: Friend Request Not Found - friend_request_already_exists: - name: Friend Request Already Exists - not_friend_request_recipient: - name: Not Friend Request Recipient - friend_request_already_accepted: - name: Friend Request Already Accepted - friend_request_already_declined: - name: Friend Request Already Declined - cannot_send_to_self: - name: Cannot Send to Self diff --git a/modules/rate_limit/module.json b/modules/rate_limit/module.json new file mode 100644 index 00000000..12c7a4a3 --- /dev/null +++ b/modules/rate_limit/module.json @@ -0,0 +1,29 @@ +{ + "name": "Rate Limit", + "description": "Prevent abuse by limiting request rate.", + "icon": "gauge-circle-minus", + "tags": [ + "core", + "utility" + ], + "authors": [ + "rivet-gg", + "NathanFlurry" + ], + "status": "stable", + "scripts": { + "throttle": { + "name": "Throttle", + "description": "Limit the amount of times an request can be made by a given key." + }, + "throttle_public": { + "name": "Throttle Public", + "description": "Limit the amount of times a public request can be made by a given key. This will rate limit based off the user's IP address." + } + }, + "errors": { + "rate_limit_exceeded": { + "name": "Rate Limit Exceeded" + } + } +} \ No newline at end of file diff --git a/modules/rate_limit/module.yaml b/modules/rate_limit/module.yaml deleted file mode 100644 index 2e54df5e..00000000 --- a/modules/rate_limit/module.yaml +++ /dev/null @@ -1,20 +0,0 @@ -name: Rate Limit -description: Prevent abuse by limiting request rate. -icon: gauge-circle-minus -tags: - - core - - utility -authors: - - rivet-gg - - NathanFlurry -status: stable -scripts: - throttle: - name: Throttle - description: Limit the amount of times an request can be made by a given key. - throttle_public: - name: Throttle Public - description: Limit the amount of times a public request can be made by a given key. This will rate limit based off the user's IP address. -errors: - rate_limit_exceeded: - name: Rate Limit Exceeded diff --git a/modules/tokens/module.json b/modules/tokens/module.json new file mode 100644 index 00000000..b04475f2 --- /dev/null +++ b/modules/tokens/module.json @@ -0,0 +1,50 @@ +{ + "name": "Tokens", + "description": "Create & verify tokens for authorization purposes.", + "icon": "lock", + "tags": [ + "core", + "utility" + ], + "authors": [ + "rivet-gg", + "NathanFlurry" + ], + "status": "stable", + "scripts": { + "create": { + "name": "Create Token" + }, + "get": { + "name": "Get Token", + "description": "Get a token by its ID." + }, + "get_by_token": { + "name": "Get Token by Token", + "description": "Get a token by its secret token." + }, + "revoke": { + "name": "Revoke Token", + "description": "Revoke a token, preventing it from being used again." + }, + "validate": { + "name": "Validate Token", + "description": "Validate a token. Throws an error if the token is invalid." + }, + "extend": { + "name": "Extend Token", + "description": "Extend or remove the expiration date of a token. (Only works on valid tokens.)" + } + }, + "errors": { + "token_not_found": { + "name": "Token Not Found" + }, + "token_revoked": { + "name": "Token Revoked" + }, + "token_expired": { + "name": "Token Expired" + } + } +} \ No newline at end of file diff --git a/modules/tokens/module.yaml b/modules/tokens/module.yaml deleted file mode 100644 index 0f3c3bf0..00000000 --- a/modules/tokens/module.yaml +++ /dev/null @@ -1,35 +0,0 @@ -name: Tokens -description: Create & verify tokens for authorization purposes. -icon: lock -tags: - - core - - utility -authors: - - rivet-gg - - NathanFlurry -status: stable -scripts: - create: - name: Create Token - get: - name: Get Token - description: Get a token by its ID. - get_by_token: - name: Get Token by Token - description: Get a token by its secret token. - revoke: - name: Revoke Token - description: Revoke a token, preventing it from being used again. - validate: - name: Validate Token - description: Validate a token. Throws an error if the token is invalid. - extend: - name: Extend Token - description: Extend or remove the expiration date of a token. (Only works on valid tokens.) -errors: - token_not_found: - name: Token Not Found - token_revoked: - name: Token Revoked - token_expired: - name: Token Expired diff --git a/modules/users/module.json b/modules/users/module.json new file mode 100644 index 00000000..c21c8260 --- /dev/null +++ b/modules/users/module.json @@ -0,0 +1,44 @@ +{ + "name": "Users", + "description": "Identify and manage users.", + "icon": "user", + "tags": [ + "core", + "social" + ], + "authors": [ + "rivet-gg", + "NathanFlurry" + ], + "status": "stable", + "dependencies": { + "rate_limit": {}, + "tokens": {} + }, + "scripts": { + "get_user": { + "name": "Get User", + "public": true + }, + "create_user": { + "name": "Create User" + }, + "authenticate_user": { + "name": "Validate User Token", + "description": "Validate a user token. Throws an error if the token is invalid.", + "public": true + }, + "create_user_token": { + "name": "Create User Token", + "description": "Create a token for a user to authenticate future requests." + } + }, + "errors": { + "token_not_user_token": { + "name": "Token Not User Token" + }, + "unknown_identity_type": { + "name": "Unknown Identity Type" + } + } +} \ No newline at end of file diff --git a/modules/users/module.yaml b/modules/users/module.yaml deleted file mode 100644 index 46b02ddb..00000000 --- a/modules/users/module.yaml +++ /dev/null @@ -1,31 +0,0 @@ -name: Users -description: Identify and manage users. -icon: user -tags: - - core - - social -authors: - - rivet-gg - - NathanFlurry -status: stable -dependencies: - rate_limit: {} - tokens: {} -scripts: - get_user: - name: Get User - public: true - create_user: - name: Create User - authenticate_user: - name: Validate User Token - description: Validate a user token. Throws an error if the token is invalid. - public: true - create_user_token: - name: Create User Token - description: Create a token for a user to authenticate future requests. -errors: - token_not_user_token: - name: Token Not User Token - unknown_identity_type: - name: Unknown Identity Type diff --git a/tests/basic/backend.json b/tests/basic/backend.json new file mode 100644 index 00000000..8275e85e --- /dev/null +++ b/tests/basic/backend.json @@ -0,0 +1,42 @@ +{ + "registries": { + "local": { + "local": { + "directory": "../../modules" + } + } + }, + "modules": { + "currency": { + "registry": "local" + }, + "friends": { + "registry": "local" + }, + "rate_limit": { + "registry": "local" + }, + "tokens": { + "registry": "local" + }, + "users": { + "registry": "local" + }, + "auth": { + "registry": "local", + "config": { + "email": { + "fromEmail": "hello@rivet.gg" + } + } + }, + "email": { + "registry": "local", + "config": { + "provider": { + "test": {} + } + } + } + } +} \ No newline at end of file diff --git a/tests/basic/backend.yaml b/tests/basic/backend.yaml deleted file mode 100644 index 19142bec..00000000 --- a/tests/basic/backend.yaml +++ /dev/null @@ -1,27 +0,0 @@ -registries: - local: - local: - directory: ../../modules -modules: - currency: - registry: local - friends: - registry: local - rate_limit: - registry: local - tokens: - registry: local - users: - registry: local - auth: - registry: local - config: - email: - fromEmail: hello@rivet.gg - email: - registry: local - config: - provider: - test: {} - # sendGrid: - # apiKeyVariable: SENDGRID_API_KEY diff --git a/tests/basic/deno.lock b/tests/basic/deno.lock new file mode 100644 index 00000000..4387d3fe --- /dev/null +++ b/tests/basic/deno.lock @@ -0,0 +1,276 @@ +{ + "version": "3", + "packages": { + "specifiers": { + "npm:@prisma/adapter-pg@^5.12.0": "npm:@prisma/adapter-pg@5.14.0_pg@8.11.5", + "npm:pg@^8.11.3": "npm:pg@8.11.5" + }, + "npm": { + "@prisma/adapter-pg@5.14.0_pg@8.11.5": { + "integrity": "sha512-AcV1DKY4ps3zvBIKolCzmBD+resdG4oH14I0iG3SntMjjnCbC/COefIInSV038c8g20RoHJO7fPyf1WPKicRgQ==", + "dependencies": { + "@prisma/driver-adapter-utils": "@prisma/driver-adapter-utils@5.14.0", + "pg": "pg@8.11.5", + "postgres-array": "postgres-array@3.0.2" + } + }, + "@prisma/debug@5.14.0": { + "integrity": "sha512-iq56qBZuFfX3fCxoxT8gBX33lQzomBU0qIUaEj1RebsKVz1ob/BVH1XSBwwwvRVtZEV1b7Fxx2eVu34Ge/mg3w==", + "dependencies": {} + }, + "@prisma/driver-adapter-utils@5.14.0": { + "integrity": "sha512-EyAfdKjk0M7CaA7BfiwDTPLs7udOwt+RUnyWIPSg7uBEFp2GS/l9Ig7CCgMZFcBFc62v0c6Z/R3WFuQ+bNxfnA==", + "dependencies": { + "@prisma/debug": "@prisma/debug@5.14.0" + } + }, + "pg-cloudflare@1.1.1": { + "integrity": "sha512-xWPagP/4B6BgFO+EKz3JONXv3YDgvkbVrGw2mTo3D6tVDQRh1e7cqVGvyR3BE+eQgAvx1XhW/iEASj4/jCWl3Q==", + "dependencies": {} + }, + "pg-connection-string@2.6.4": { + "integrity": "sha512-v+Z7W/0EO707aNMaAEfiGnGL9sxxumwLl2fJvCQtMn9Fxsg+lPpPkdcyBSv/KFgpGdYkMfn+EI1Or2EHjpgLCA==", + "dependencies": {} + }, + "pg-int8@1.0.1": { + "integrity": "sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw==", + "dependencies": {} + }, + "pg-pool@3.6.2_pg@8.11.5": { + "integrity": "sha512-Htjbg8BlwXqSBQ9V8Vjtc+vzf/6fVUuak/3/XXKA9oxZprwW3IMDQTGHP+KDmVL7rtd+R1QjbnCFPuTHm3G4hg==", + "dependencies": { + "pg": "pg@8.11.5" + } + }, + "pg-protocol@1.6.1": { + "integrity": "sha512-jPIlvgoD63hrEuihvIg+tJhoGjUsLPn6poJY9N5CnlPd91c2T18T/9zBtLxZSb1EhYxBRoZJtzScCaWlYLtktg==", + "dependencies": {} + }, + "pg-types@2.2.0": { + "integrity": "sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA==", + "dependencies": { + "pg-int8": "pg-int8@1.0.1", + "postgres-array": "postgres-array@2.0.0", + "postgres-bytea": "postgres-bytea@1.0.0", + "postgres-date": "postgres-date@1.0.7", + "postgres-interval": "postgres-interval@1.2.0" + } + }, + "pg@8.11.5": { + "integrity": "sha512-jqgNHSKL5cbDjFlHyYsCXmQDrfIX/3RsNwYqpd4N0Kt8niLuNoRNH+aazv6cOd43gPh9Y4DjQCtb+X0MH0Hvnw==", + "dependencies": { + "pg-cloudflare": "pg-cloudflare@1.1.1", + "pg-connection-string": "pg-connection-string@2.6.4", + "pg-pool": "pg-pool@3.6.2_pg@8.11.5", + "pg-protocol": "pg-protocol@1.6.1", + "pg-types": "pg-types@2.2.0", + "pgpass": "pgpass@1.0.5" + } + }, + "pgpass@1.0.5": { + "integrity": "sha512-FdW9r/jQZhSeohs1Z3sI1yxFQNFvMcnmfuj4WBMUTxOrAyLMaTcE1aAMBiTlbMNaXvBCQuVi0R7hd8udDSP7ug==", + "dependencies": { + "split2": "split2@4.2.0" + } + }, + "postgres-array@2.0.0": { + "integrity": "sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA==", + "dependencies": {} + }, + "postgres-array@3.0.2": { + "integrity": "sha512-6faShkdFugNQCLwucjPcY5ARoW1SlbnrZjmGl0IrrqewpvxvhSLHimCVzqeuULCbG0fQv7Dtk1yDbG3xv7Veog==", + "dependencies": {} + }, + "postgres-bytea@1.0.0": { + "integrity": "sha512-xy3pmLuQqRBZBXDULy7KbaitYqLcmxigw14Q5sj8QBVLqEwXfeybIKVWiqAXTlcvdvb0+xkOtDbfQMOf4lST1w==", + "dependencies": {} + }, + "postgres-date@1.0.7": { + "integrity": "sha512-suDmjLVQg78nMK2UZ454hAG+OAW+HQPZ6n++TNDUX+L0+uUlLywnoxJKDou51Zm+zTCjrCl0Nq6J9C5hP9vK/Q==", + "dependencies": {} + }, + "postgres-interval@1.2.0": { + "integrity": "sha512-9ZhXKM/rw350N1ovuWHbGxnGh/SNJ4cnxHiM0rxE4VN41wsg8P8zWn9hv/buK00RP4WvlOyr/RBDiptyxVbkZQ==", + "dependencies": { + "xtend": "xtend@4.0.2" + } + }, + "split2@4.2.0": { + "integrity": "sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==", + "dependencies": {} + }, + "xtend@4.0.2": { + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "dependencies": {} + } + } + }, + "redirects": { + "https://esm.sh/ajv-formats@^2.1.1": "https://esm.sh/ajv-formats@2.1.1", + "https://esm.sh/ajv@^8.12.0": "https://esm.sh/ajv@8.12.0" + }, + "remote": { + "https://deno.land/std@0.208.0/assert/_constants.ts": "8a9da298c26750b28b326b297316cdde860bc237533b07e1337c021379e6b2a9", + "https://deno.land/std@0.208.0/assert/_diff.ts": "58e1461cc61d8eb1eacbf2a010932bf6a05b79344b02ca38095f9b805795dc48", + "https://deno.land/std@0.208.0/assert/_format.ts": "a69126e8a469009adf4cf2a50af889aca364c349797e63174884a52ff75cf4c7", + "https://deno.land/std@0.208.0/assert/assert.ts": "9a97dad6d98c238938e7540736b826440ad8c1c1e54430ca4c4e623e585607ee", + "https://deno.land/std@0.208.0/assert/assert_almost_equals.ts": "e15ca1f34d0d5e0afae63b3f5d975cbd18335a132e42b0c747d282f62ad2cd6c", + "https://deno.land/std@0.208.0/assert/assert_array_includes.ts": "6856d7f2c3544bc6e62fb4646dfefa3d1df5ff14744d1bca19f0cbaf3b0d66c9", + "https://deno.land/std@0.208.0/assert/assert_equals.ts": "d8ec8a22447fbaf2fc9d7c3ed2e66790fdb74beae3e482855d75782218d68227", + "https://deno.land/std@0.208.0/assert/assert_exists.ts": "407cb6b9fb23a835cd8d5ad804e2e2edbbbf3870e322d53f79e1c7a512e2efd7", + "https://deno.land/std@0.208.0/assert/assert_false.ts": "0ccbcaae910f52c857192ff16ea08bda40fdc79de80846c206bfc061e8c851c6", + "https://deno.land/std@0.208.0/assert/assert_greater.ts": "ae2158a2d19313bf675bf7251d31c6dc52973edb12ac64ac8fc7064152af3e63", + "https://deno.land/std@0.208.0/assert/assert_greater_or_equal.ts": "1439da5ebbe20855446cac50097ac78b9742abe8e9a43e7de1ce1426d556e89c", + "https://deno.land/std@0.208.0/assert/assert_instance_of.ts": "3aedb3d8186e120812d2b3a5dea66a6e42bf8c57a8bd927645770bd21eea554c", + "https://deno.land/std@0.208.0/assert/assert_is_error.ts": "c21113094a51a296ffaf036767d616a78a2ae5f9f7bbd464cd0197476498b94b", + "https://deno.land/std@0.208.0/assert/assert_less.ts": "aec695db57db42ec3e2b62e97e1e93db0063f5a6ec133326cc290ff4b71b47e4", + "https://deno.land/std@0.208.0/assert/assert_less_or_equal.ts": "5fa8b6a3ffa20fd0a05032fe7257bf985d207b85685fdbcd23651b70f928c848", + "https://deno.land/std@0.208.0/assert/assert_match.ts": "c4083f80600bc190309903c95e397a7c9257ff8b5ae5c7ef91e834704e672e9b", + "https://deno.land/std@0.208.0/assert/assert_not_equals.ts": "9f1acab95bd1f5fc9a1b17b8027d894509a745d91bac1718fdab51dc76831754", + "https://deno.land/std@0.208.0/assert/assert_not_instance_of.ts": "0c14d3dfd9ab7a5276ed8ed0b18c703d79a3d106102077ec437bfe7ed912bd22", + "https://deno.land/std@0.208.0/assert/assert_not_match.ts": "3796a5b0c57a1ce6c1c57883dd4286be13a26f715ea662318ab43a8491a13ab0", + "https://deno.land/std@0.208.0/assert/assert_not_strict_equals.ts": "4cdef83df17488df555c8aac1f7f5ec2b84ad161b6d0645ccdbcc17654e80c99", + "https://deno.land/std@0.208.0/assert/assert_object_match.ts": "d8fc2867cfd92eeacf9cea621e10336b666de1874a6767b5ec48988838370b54", + "https://deno.land/std@0.208.0/assert/assert_rejects.ts": "45c59724de2701e3b1f67c391d6c71c392363635aad3f68a1b3408f9efca0057", + "https://deno.land/std@0.208.0/assert/assert_strict_equals.ts": "b1f538a7ea5f8348aeca261d4f9ca603127c665e0f2bbfeb91fa272787c87265", + "https://deno.land/std@0.208.0/assert/assert_string_includes.ts": "b821d39ebf5cb0200a348863c86d8c4c4b398e02012ce74ad15666fc4b631b0c", + "https://deno.land/std@0.208.0/assert/assert_throws.ts": "63784e951475cb7bdfd59878cd25a0931e18f6dc32a6077c454b2cd94f4f4bcd", + "https://deno.land/std@0.208.0/assert/assertion_error.ts": "4d0bde9b374dfbcbe8ac23f54f567b77024fb67dbb1906a852d67fe050d42f56", + "https://deno.land/std@0.208.0/assert/equal.ts": "9f1a46d5993966d2596c44e5858eec821859b45f783a5ee2f7a695dfc12d8ece", + "https://deno.land/std@0.208.0/assert/fail.ts": "c36353d7ae6e1f7933d45f8ea51e358c8c4b67d7e7502028598fe1fea062e278", + "https://deno.land/std@0.208.0/assert/mod.ts": "37c49a26aae2b254bbe25723434dc28cd7532e444cf0b481a97c045d110ec085", + "https://deno.land/std@0.208.0/assert/unimplemented.ts": "d56fbeecb1f108331a380f72e3e010a1f161baa6956fd0f7cf3e095ae1a4c75a", + "https://deno.land/std@0.208.0/assert/unreachable.ts": "4600dc0baf7d9c15a7f7d234f00c23bca8f3eba8b140286aaca7aa998cf9a536", + "https://deno.land/std@0.208.0/fmt/colors.ts": "34b3f77432925eb72cf0bfb351616949746768620b8e5ead66da532f93d10ba2", + "https://deno.land/std@0.214.0/assert/assert.ts": "bec068b2fccdd434c138a555b19a2c2393b71dfaada02b7d568a01541e67cdc5", + "https://deno.land/std@0.214.0/assert/assertion_error.ts": "9f689a101ee586c4ce92f52fa7ddd362e86434ffdf1f848e45987dc7689976b8", + "https://deno.land/std@0.214.0/async/delay.ts": "8e1d18fe8b28ff95885e2bc54eccec1713f57f756053576d8228e6ca110793ad", + "https://deno.land/std@0.214.0/bytes/copy.ts": "f29c03168853720dfe82eaa57793d0b9e3543ebfe5306684182f0f1e3bfd422a", + "https://deno.land/std@0.214.0/crypto/_fnv/fnv32.ts": "ba2c5ef976b9f047d7ce2d33dfe18671afc75154bcf20ef89d932b2fe8820535", + "https://deno.land/std@0.214.0/crypto/_fnv/fnv64.ts": "580cadfe2ff333fe253d15df450f927c8ac7e408b704547be26aab41b5772558", + "https://deno.land/std@0.214.0/crypto/_fnv/mod.ts": "8dbb60f062a6e77b82f7a62ac11fabfba52c3cd408c21916b130d8f57a880f96", + "https://deno.land/std@0.214.0/crypto/_fnv/util.ts": "27b36ce3440d0a180af6bf1cfc2c326f68823288540a354dc1d636b781b9b75f", + "https://deno.land/std@0.214.0/crypto/_wasm/lib/deno_std_wasm_crypto.generated.mjs": "76c727912539737def4549bb62a96897f37eb334b979f49c57b8af7a1617635e", + "https://deno.land/std@0.214.0/crypto/_wasm/mod.ts": "c55f91473846827f077dfd7e5fc6e2726dee5003b6a5747610707cdc638a22ba", + "https://deno.land/std@0.214.0/crypto/crypto.ts": "4448f8461c797adba8d70a2c60f7795a546d7a0926e96366391bffdd06491c16", + "https://deno.land/std@0.214.0/datetime/_common.ts": "a62214c1924766e008e27d3d843ceba4b545dc2aa9880de0ecdef9966d5736b6", + "https://deno.land/std@0.214.0/datetime/parse.ts": "bb248bbcb3cd54bcaf504a1ee670fc4695e429d9019c06af954bbe2bcb8f1d02", + "https://deno.land/std@0.214.0/encoding/_util.ts": "beacef316c1255da9bc8e95afb1fa56ed69baef919c88dc06ae6cb7a6103d376", + "https://deno.land/std@0.214.0/encoding/base64.ts": "96e61a556d933201266fea84ae500453293f2aff130057b579baafda096a96bc", + "https://deno.land/std@0.214.0/encoding/hex.ts": "4d47d3b25103cf81a2ed38f54b394d39a77b63338e1eaa04b70c614cb45ec2e6", + "https://deno.land/std@0.214.0/fmt/colors.ts": "aeaee795471b56fc62a3cb2e174ed33e91551b535f44677f6320336aabb54fbb", + "https://deno.land/std@0.214.0/io/buf_reader.ts": "c73aad99491ee6db3d6b001fa4a780e9245c67b9296f5bad9c0fa7384e35d47a", + "https://deno.land/std@0.214.0/io/buf_writer.ts": "f82f640c8b3a820f600a8da429ad0537037c7d6a78426bbca2396fb1f75d3ef4", + "https://deno.land/std@0.214.0/io/types.ts": "748bbb3ac96abda03594ef5a0db15ce5450dcc6c0d841c8906f8b10ac8d32c96", + "https://deno.land/std@0.214.0/path/_common/assert_path.ts": "2ca275f36ac1788b2acb60fb2b79cb06027198bc2ba6fb7e163efaedde98c297", + "https://deno.land/std@0.214.0/path/_common/basename.ts": "569744855bc8445f3a56087fd2aed56bdad39da971a8d92b138c9913aecc5fa2", + "https://deno.land/std@0.214.0/path/_common/common.ts": "6157c7ec1f4db2b4a9a187efd6ce76dcaf1e61cfd49f87e40d4ea102818df031", + "https://deno.land/std@0.214.0/path/_common/constants.ts": "dc5f8057159f4b48cd304eb3027e42f1148cf4df1fb4240774d3492b5d12ac0c", + "https://deno.land/std@0.214.0/path/_common/dirname.ts": "684df4aa71a04bbcc346c692c8485594fc8a90b9408dfbc26ff32cf3e0c98cc8", + "https://deno.land/std@0.214.0/path/_common/format.ts": "92500e91ea5de21c97f5fe91e178bae62af524b72d5fcd246d6d60ae4bcada8b", + "https://deno.land/std@0.214.0/path/_common/from_file_url.ts": "d672bdeebc11bf80e99bf266f886c70963107bdd31134c4e249eef51133ceccf", + "https://deno.land/std@0.214.0/path/_common/glob_to_reg_exp.ts": "2007aa87bed6eb2c8ae8381adcc3125027543d9ec347713c1ad2c68427330770", + "https://deno.land/std@0.214.0/path/_common/normalize.ts": "684df4aa71a04bbcc346c692c8485594fc8a90b9408dfbc26ff32cf3e0c98cc8", + "https://deno.land/std@0.214.0/path/_common/normalize_string.ts": "dfdf657a1b1a7db7999f7c575ee7e6b0551d9c20f19486c6c3f5ff428384c965", + "https://deno.land/std@0.214.0/path/_common/relative.ts": "faa2753d9b32320ed4ada0733261e3357c186e5705678d9dd08b97527deae607", + "https://deno.land/std@0.214.0/path/_common/strip_trailing_separators.ts": "7024a93447efcdcfeaa9339a98fa63ef9d53de363f1fbe9858970f1bba02655a", + "https://deno.land/std@0.214.0/path/_common/to_file_url.ts": "7f76adbc83ece1bba173e6e98a27c647712cab773d3f8cbe0398b74afc817883", + "https://deno.land/std@0.214.0/path/_interface.ts": "a1419fcf45c0ceb8acdccc94394e3e94f99e18cfd32d509aab514c8841799600", + "https://deno.land/std@0.214.0/path/_os.ts": "8fb9b90fb6b753bd8c77cfd8a33c2ff6c5f5bc185f50de8ca4ac6a05710b2c15", + "https://deno.land/std@0.214.0/path/basename.ts": "5d341aadb7ada266e2280561692c165771d071c98746fcb66da928870cd47668", + "https://deno.land/std@0.214.0/path/common.ts": "03e52e22882402c986fe97ca3b5bb4263c2aa811c515ce84584b23bac4cc2643", + "https://deno.land/std@0.214.0/path/constants.ts": "0c206169ca104938ede9da48ac952de288f23343304a1c3cb6ec7625e7325f36", + "https://deno.land/std@0.214.0/path/dirname.ts": "85bd955bf31d62c9aafdd7ff561c4b5fb587d11a9a5a45e2b01aedffa4238a7c", + "https://deno.land/std@0.214.0/path/extname.ts": "593303db8ae8c865cbd9ceec6e55d4b9ac5410c1e276bfd3131916591b954441", + "https://deno.land/std@0.214.0/path/format.ts": "98fad25f1af7b96a48efb5b67378fcc8ed77be895df8b9c733b86411632162af", + "https://deno.land/std@0.214.0/path/from_file_url.ts": "911833ae4fd10a1c84f6271f36151ab785955849117dc48c6e43b929504ee069", + "https://deno.land/std@0.214.0/path/glob_to_regexp.ts": "83c5fd36a8c86f5e72df9d0f45317f9546afa2ce39acaafe079d43a865aced08", + "https://deno.land/std@0.214.0/path/is_absolute.ts": "4791afc8bfd0c87f0526eaa616b0d16e7b3ab6a65b62942e50eac68de4ef67d7", + "https://deno.land/std@0.214.0/path/is_glob.ts": "a65f6195d3058c3050ab905705891b412ff942a292bcbaa1a807a74439a14141", + "https://deno.land/std@0.214.0/path/join.ts": "ae2ec5ca44c7e84a235fd532e4a0116bfb1f2368b394db1c4fb75e3c0f26a33a", + "https://deno.land/std@0.214.0/path/join_globs.ts": "e9589869a33dc3982101898ee50903db918ca00ad2614dbe3934d597d7b1fbea", + "https://deno.land/std@0.214.0/path/mod.ts": "ffeaccb713dbe6c72e015b7c767f753f8ec5fbc3b621ff5eeee486ffc2c0ddda", + "https://deno.land/std@0.214.0/path/normalize.ts": "4155743ccceeed319b350c1e62e931600272fad8ad00c417b91df093867a8352", + "https://deno.land/std@0.214.0/path/normalize_glob.ts": "98ee8268fad271193603271c203ae973280b5abfbdd2cbca1053fd2af71869ca", + "https://deno.land/std@0.214.0/path/parse.ts": "65e8e285f1a63b714e19ef24b68f56e76934c3df0b6e65fd440d3991f4f8aefb", + "https://deno.land/std@0.214.0/path/posix/_util.ts": "1e3937da30f080bfc99fe45d7ed23c47dd8585c5e473b2d771380d3a6937cf9d", + "https://deno.land/std@0.214.0/path/posix/basename.ts": "39ee27a29f1f35935d3603ccf01d53f3d6e0c5d4d0f84421e65bd1afeff42843", + "https://deno.land/std@0.214.0/path/posix/common.ts": "26f60ccc8b2cac3e1613000c23ac5a7d392715d479e5be413473a37903a2b5d4", + "https://deno.land/std@0.214.0/path/posix/constants.ts": "93481efb98cdffa4c719c22a0182b994e5a6aed3047e1962f6c2c75b7592bef1", + "https://deno.land/std@0.214.0/path/posix/dirname.ts": "6535d2bdd566118963537b9dda8867ba9e2a361015540dc91f5afbb65c0cce8b", + "https://deno.land/std@0.214.0/path/posix/extname.ts": "8d36ae0082063c5e1191639699e6f77d3acf501600a3d87b74943f0ae5327427", + "https://deno.land/std@0.214.0/path/posix/format.ts": "185e9ee2091a42dd39e2a3b8e4925370ee8407572cee1ae52838aed96310c5c1", + "https://deno.land/std@0.214.0/path/posix/from_file_url.ts": "951aee3a2c46fd0ed488899d024c6352b59154c70552e90885ed0c2ab699bc40", + "https://deno.land/std@0.214.0/path/posix/glob_to_regexp.ts": "54d3ff40f309e3732ab6e5b19d7111d2d415248bcd35b67a99defcbc1972e697", + "https://deno.land/std@0.214.0/path/posix/is_absolute.ts": "cebe561ad0ae294f0ce0365a1879dcfca8abd872821519b4fcc8d8967f888ede", + "https://deno.land/std@0.214.0/path/posix/is_glob.ts": "8a8b08c08bf731acf2c1232218f1f45a11131bc01de81e5f803450a5914434b9", + "https://deno.land/std@0.214.0/path/posix/join.ts": "aef88d5fa3650f7516730865dbb951594d1a955b785e2450dbee93b8e32694f3", + "https://deno.land/std@0.214.0/path/posix/join_globs.ts": "ee2f4676c5b8a0dfa519da58b8ade4d1c4aa8dd3fe35619edec883ae9df1f8c9", + "https://deno.land/std@0.214.0/path/posix/mod.ts": "563a18c2b3ddc62f3e4a324ff0f583e819b8602a72ad880cb98c9e2e34f8db5b", + "https://deno.land/std@0.214.0/path/posix/normalize.ts": "baeb49816a8299f90a0237d214cef46f00ba3e95c0d2ceb74205a6a584b58a91", + "https://deno.land/std@0.214.0/path/posix/normalize_glob.ts": "65f0138fa518ef9ece354f32889783fc38cdf985fb02dcf1c3b14fa47d665640", + "https://deno.land/std@0.214.0/path/posix/parse.ts": "d5bac4eb21262ab168eead7e2196cb862940c84cee572eafedd12a0d34adc8fb", + "https://deno.land/std@0.214.0/path/posix/relative.ts": "3907d6eda41f0ff723d336125a1ad4349112cd4d48f693859980314d5b9da31c", + "https://deno.land/std@0.214.0/path/posix/resolve.ts": "bac20d9921beebbbb2b73706683b518b1d0c1b1da514140cee409e90d6b2913a", + "https://deno.land/std@0.214.0/path/posix/separator.ts": "c9ecae5c843170118156ac5d12dc53e9caf6a1a4c96fc8b1a0ab02dff5c847b0", + "https://deno.land/std@0.214.0/path/posix/to_file_url.ts": "7aa752ba66a35049e0e4a4be5a0a31ac6b645257d2e031142abb1854de250aaf", + "https://deno.land/std@0.214.0/path/posix/to_namespaced_path.ts": "28b216b3c76f892a4dca9734ff1cc0045d135532bfd9c435ae4858bfa5a2ebf0", + "https://deno.land/std@0.214.0/path/relative.ts": "ab739d727180ed8727e34ed71d976912461d98e2b76de3d3de834c1066667add", + "https://deno.land/std@0.214.0/path/resolve.ts": "a6f977bdb4272e79d8d0ed4333e3d71367cc3926acf15ac271f1d059c8494d8d", + "https://deno.land/std@0.214.0/path/separator.ts": "c6c890507f944a1f5cb7d53b8d638d6ce3cf0f34609c8d84a10c1eaa400b77a9", + "https://deno.land/std@0.214.0/path/to_file_url.ts": "88f049b769bce411e2d2db5bd9e6fd9a185a5fbd6b9f5ad8f52bef517c4ece1b", + "https://deno.land/std@0.214.0/path/to_namespaced_path.ts": "b706a4103b104cfadc09600a5f838c2ba94dbcdb642344557122dda444526e40", + "https://deno.land/std@0.214.0/path/windows/_util.ts": "d5f47363e5293fced22c984550d5e70e98e266cc3f31769e1710511803d04808", + "https://deno.land/std@0.214.0/path/windows/basename.ts": "e2dbf31d1d6385bfab1ce38c333aa290b6d7ae9e0ecb8234a654e583cf22f8fe", + "https://deno.land/std@0.214.0/path/windows/common.ts": "26f60ccc8b2cac3e1613000c23ac5a7d392715d479e5be413473a37903a2b5d4", + "https://deno.land/std@0.214.0/path/windows/constants.ts": "5afaac0a1f67b68b0a380a4ef391bf59feb55856aa8c60dfc01bd3b6abb813f5", + "https://deno.land/std@0.214.0/path/windows/dirname.ts": "33e421be5a5558a1346a48e74c330b8e560be7424ed7684ea03c12c21b627bc9", + "https://deno.land/std@0.214.0/path/windows/extname.ts": "165a61b00d781257fda1e9606a48c78b06815385e7d703232548dbfc95346bef", + "https://deno.land/std@0.214.0/path/windows/format.ts": "bbb5ecf379305b472b1082cd2fdc010e44a0020030414974d6029be9ad52aeb6", + "https://deno.land/std@0.214.0/path/windows/from_file_url.ts": "ced2d587b6dff18f963f269d745c4a599cf82b0c4007356bd957cb4cb52efc01", + "https://deno.land/std@0.214.0/path/windows/glob_to_regexp.ts": "6dcd1242bd8907aa9660cbdd7c93446e6927b201112b0cba37ca5d80f81be51b", + "https://deno.land/std@0.214.0/path/windows/is_absolute.ts": "4a8f6853f8598cf91a835f41abed42112cebab09478b072e4beb00ec81f8ca8a", + "https://deno.land/std@0.214.0/path/windows/is_glob.ts": "8a8b08c08bf731acf2c1232218f1f45a11131bc01de81e5f803450a5914434b9", + "https://deno.land/std@0.214.0/path/windows/join.ts": "e0b3356615c1a75c56ebb6a7311157911659e11fd533d80d724800126b761ac3", + "https://deno.land/std@0.214.0/path/windows/join_globs.ts": "ee2f4676c5b8a0dfa519da58b8ade4d1c4aa8dd3fe35619edec883ae9df1f8c9", + "https://deno.land/std@0.214.0/path/windows/mod.ts": "7d6062927bda47c47847ffb55d8f1a37b0383840aee5c7dfc93984005819689c", + "https://deno.land/std@0.214.0/path/windows/normalize.ts": "78126170ab917f0ca355a9af9e65ad6bfa5be14d574c5fb09bb1920f52577780", + "https://deno.land/std@0.214.0/path/windows/normalize_glob.ts": "179c86ba89f4d3fe283d2addbe0607341f79ee9b1ae663abcfb3439db2e97810", + "https://deno.land/std@0.214.0/path/windows/parse.ts": "b9239edd892a06a06625c1b58425e199f018ce5649ace024d144495c984da734", + "https://deno.land/std@0.214.0/path/windows/relative.ts": "3e1abc7977ee6cc0db2730d1f9cb38be87b0ce4806759d271a70e4997fc638d7", + "https://deno.land/std@0.214.0/path/windows/resolve.ts": "75b2e3e1238d840782cee3d8864d82bfaa593c7af8b22f19c6422cf82f330ab3", + "https://deno.land/std@0.214.0/path/windows/separator.ts": "e51c5522140eff4f8402617c5c68a201fdfa3a1a8b28dc23587cff931b665e43", + "https://deno.land/std@0.214.0/path/windows/to_file_url.ts": "1cd63fd35ec8d1370feaa4752eccc4cc05ea5362a878be8dc7db733650995484", + "https://deno.land/std@0.214.0/path/windows/to_namespaced_path.ts": "4ffa4fb6fae321448d5fe810b3ca741d84df4d7897e61ee29be961a6aac89a4c", + "https://deno.land/x/postgres@v0.17.2/client.ts": "315a27543a86c5703555d9be06f291ecd51bf403ee25a5bdc7d1c3387e8116ad", + "https://deno.land/x/postgres@v0.17.2/client/error.ts": "ceecfa85128738885b9e190bcddf048bf790733905f4af521edfbac14a3f74cb", + "https://deno.land/x/postgres@v0.17.2/connection/auth.ts": "db15c1659742ef4d2791b32834950278dc7a40cb931f8e434e6569298e58df51", + "https://deno.land/x/postgres@v0.17.2/connection/connection.ts": "d6fa4ecee66e2f3a428a1578cfe814581d7c3cb7aa5081d69b4471cfd18836d0", + "https://deno.land/x/postgres@v0.17.2/connection/connection_params.ts": "0701fdb3733dd529b224eced8d4b9003fbf36c4973f60a95f23d55441b5d098e", + "https://deno.land/x/postgres@v0.17.2/connection/message.ts": "20da5d80fc4d7ddb7b850083e0b3fa8734eb26642221dad89c62e27d78e57a4d", + "https://deno.land/x/postgres@v0.17.2/connection/message_code.ts": "12bcb110df6945152f9f6c63128786558d7ad1e61006920daaa16ef85b3bab7d", + "https://deno.land/x/postgres@v0.17.2/connection/packet.ts": "050aeff1fc13c9349e89451a155ffcd0b1343dc313a51f84439e3e45f64b56c8", + "https://deno.land/x/postgres@v0.17.2/connection/scram.ts": "532d4d58b565a2ab48fb5e1e14dc9bfb3bb283d535011e371e698eb4a89dd994", + "https://deno.land/x/postgres@v0.17.2/deps.ts": "442fac2c34416e9a9767483b03b34089b09abe1b4c2587d2ec803572ce161975", + "https://deno.land/x/postgres@v0.17.2/mod.ts": "cad81d11aec600d9170b3e43bd8443c648a900de192de10d51f333ba61d90cc8", + "https://deno.land/x/postgres@v0.17.2/pool.ts": "2289f029e7a3bd3d460d4faa71399a920b7406c92a97c0715d6e31dbf1380ec3", + "https://deno.land/x/postgres@v0.17.2/query/array_parser.ts": "60b891010890a0540822293d11f0c11f2eb90c2f267a72d0bf916fe09d13408d", + "https://deno.land/x/postgres@v0.17.2/query/decode.ts": "3085949877ffd69e48765f54a49e8c1a6bd87dda7cdaf67502167fe667916cb9", + "https://deno.land/x/postgres@v0.17.2/query/decoders.ts": "6a73da1024086ab91e233648c850dccbde59248b90d87054bbbd7f0bf4a50681", + "https://deno.land/x/postgres@v0.17.2/query/encode.ts": "5b1c305bc7352a6f9fe37f235dddfc23e26419c77a133b4eaea42cf136481aa6", + "https://deno.land/x/postgres@v0.17.2/query/oid.ts": "8c33e1325f34e4ca9f11a48b8066c8cfcace5f64bc1eb17ad7247af4936999e1", + "https://deno.land/x/postgres@v0.17.2/query/query.ts": "8522bf4fedf97d15c81db43b38b3ea09c272f955c77c4d4058907f91a57705b8", + "https://deno.land/x/postgres@v0.17.2/query/transaction.ts": "8f4eef68f8e9b4be216199404315e6e08fe1fe98afb2e640bffd077662f79678", + "https://deno.land/x/postgres@v0.17.2/query/types.ts": "540f6f973d493d63f2c0059a09f3368071f57931bba68bea408a635a3e0565d6", + "https://deno.land/x/postgres@v0.17.2/utils/deferred.ts": "5420531adb6c3ea29ca8aac57b9b59bd3e4b9a938a4996bbd0947a858f611080", + "https://deno.land/x/postgres@v0.17.2/utils/utils.ts": "ca47193ea03ff5b585e487a06f106d367e509263a960b787197ce0c03113a738", + "https://esm.sh/ajv-formats@2.1.1": "575b3830618970ddc3aba96310bf4df7358bb37fcea101f58b36897ff3ac2ea7", + "https://esm.sh/ajv@8.12.0": "965ce16eff0cefef99e67478c5ee760928bd8931d40c3b958325cdd6ab6149f2", + "https://esm.sh/v135/ajv-formats@2.1.1/denonext/ajv-formats.mjs": "06092e00b42202633ae6dab4b53287c133af882ddb14c6707277cdb237634967", + "https://esm.sh/v135/ajv@8.12.0/denonext/ajv.mjs": "4645df9093d0f8be0e964070a4a7aea8adea06e8883660340931f7a3f979fc65", + "https://esm.sh/v135/ajv@8.12.0/denonext/dist/compile/codegen.js": "d981238e5b1e78217e1c6db59cbd594369279722c608ed630d08717ee44edd84", + "https://esm.sh/v135/fast-deep-equal@3.1.3/denonext/fast-deep-equal.mjs": "6313b3e05436550e1c0aeb2a282206b9b8d9213b4c6f247964dd7bb4835fb9e5", + "https://esm.sh/v135/json-schema-traverse@1.0.0/denonext/json-schema-traverse.mjs": "c5da8353bc014e49ebbb1a2c0162d29969a14c325da19644e511f96ba670cc45", + "https://esm.sh/v135/uri-js@4.4.1/denonext/uri-js.mjs": "901d462f9db207376b39ec603d841d87e6b9e9568ce97dfaab12aa77d0f99f74" + } +}