├── .env.example ├── .gitignore ├── .npmrc ├── .prettierignore ├── .prettierrc ├── README.md ├── bot-get-update ├── index.mjs ├── package-lock.json └── package.json ├── db.sql ├── package-lock.json ├── package.json ├── src ├── app.html ├── hooks.server.js ├── lib │ ├── api-url.js │ └── index.js └── routes │ ├── +page.svelte │ ├── verify │ └── [request_id] │ │ ├── +page.server.js │ │ └── +page.svelte │ └── webhook │ ├── activate │ └── +server.js │ ├── receive │ └── +server.js │ └── status │ └── +server.js ├── static ├── favicon.png ├── s1.png └── s2.jpeg ├── svelte.config.js ├── vite.config.js └── wrangler.toml /.env.example: -------------------------------------------------------------------------------- 1 | TG_WEBHOOK_VERIFY_SECRET="max256token" 2 | TG_BOT_TOKEN="" 3 | TURNSTILE_SECRET_KEY="" 4 | PUBLIC_TURNSTILE_SITE_KEY="" 5 | BASELIME_API_KEY="" 6 | ADMIN_USERNAME="" 7 | ADMIN_PASSWORD="" -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | node_modules 3 | /build 4 | /.svelte-kit 5 | /package 6 | .env 7 | .env.* 8 | !.env.example 9 | vite.config.js.timestamp-* 10 | vite.config.ts.timestamp-* 11 | 12 | # wrangler files 13 | .wrangler 14 | .dev.vars 15 | -------------------------------------------------------------------------------- /.npmrc: -------------------------------------------------------------------------------- 1 | engine-strict=true 2 | -------------------------------------------------------------------------------- /.prettierignore: -------------------------------------------------------------------------------- 1 | # Ignore files for PNPM, NPM and YARN 2 | pnpm-lock.yaml 3 | package-lock.json 4 | yarn.lock 5 | -------------------------------------------------------------------------------- /.prettierrc: -------------------------------------------------------------------------------- 1 | { 2 | "useTabs": true, 3 | "singleQuote": true, 4 | "trailingComma": "none", 5 | "printWidth": 100, 6 | "plugins": ["prettier-plugin-svelte"], 7 | "overrides": [{ "files": "*.svelte", "options": { "parser": "svelte" } }] 8 | } 9 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Telegram Captcha Bot /w Cloudflare Turnstile 2 | 3 | a captcha bot that leveraging telegram login api and cloudflare turnstile, add [@SvelteCaptchabot](https://t.me/@SvelteCaptchabot) to your group! 4 | 5 | | Chat Preview | Site Preview | 6 | | -------------------- | :-------------------: | 7 | | ![s1](static/s1.png) | ![s2](static/s2.jpeg) | 8 | 9 | ## Edit 10 | 11 | Due to worst quality of Telegram Webhook (sometimes Telegram just stop sending updates), I made another part that having task to getting the join service message, check the `bot-get-update` folder 12 | 13 | ## Technology 14 | 15 | - [x] Telegram API 16 | - [x] Baselime.io 17 | - [x] Cloudflare D1 18 | - [x] Cloudflare Pages 19 | - [ ] Cloudflare Durable Object 20 | 21 | ## Schema Init 22 | 23 | ```sh 24 | npm i 25 | npx wrangler d1 create db-name 26 | # paste the output inside wrangler.toml file 27 | npx wrangler d1 execute db-name --remote --file=db.sql 28 | ``` 29 | 30 | ## Bot Config @BotFather 31 | 32 | 1. make sure you turn off privacy config 33 | 2. setting's bot login domain with the same domain as webhook (for telegram auth purpose) 34 | 35 | ## Deployment 36 | 37 | 1. Deploy using Cloudflare Pages GUI 38 | 2. connect the forked version of this project 39 | 3. select `SvelteKit` preset 40 | 4. set environment variable (basically the same as .env.example) 41 | 5. Click "Deploy" 42 | 6. Access `yoursite.com/webhook/activate` to activate Telegram Webhook 43 | -------------------------------------------------------------------------------- /bot-get-update/index.mjs: -------------------------------------------------------------------------------- 1 | import TelegramBot from 'node-telegram-bot-api'; 2 | import { nanoid } from 'nanoid'; 3 | // replace the value below with the Telegram token you receive from @BotFather 4 | const token = process.env.TG_BOT_TOKEN; 5 | const D1_TOKEN = process.env.D1_TOKEN; 6 | const D1_ACCOUNT_ID = process.env.D1_ACCOUNT_ID; 7 | const D1_DB_ID = process.env.D1_DB_ID; 8 | const BASE_URL = process.env.BASE_URL; // url of sveltekit with https:// 9 | 10 | // Create a bot that uses 'polling' to fetch new updates 11 | const bot = new TelegramBot(token, { polling: true }); 12 | 13 | // Listen for any kind of message. There are different kinds of 14 | // messages. 15 | bot.on('message', async (message) => { 16 | // console.log(msg) 17 | // const chatId = msg.chat.id; 18 | 19 | if ('new_chat_member' in message) { 20 | try { 21 | await fetch( 22 | apiUrl('deleteMessage', { chat_id: message.chat.id, message_id: message.message_id }) 23 | ); 24 | } catch (e) { 25 | console.log(e); 26 | } 27 | 28 | const newMember = message['new_chat_member']; 29 | 30 | if (newMember['is_bot']) { 31 | return; 32 | } 33 | 34 | var tgUser = await ( 35 | await fetch(d1Url(), { 36 | method: 'POST', 37 | headers: { 38 | Authorization: D1_TOKEN 39 | }, 40 | body: JSON.stringify({ 41 | params: [newMember.id], 42 | sql: 'SELECT * from tg_user WHERE user_id = ?' 43 | }) 44 | }) 45 | ).json(); 46 | tgUser = tgUser['result'][0]['results']; 47 | 48 | if (tgUser.length == 0) { 49 | await fetch(d1Url(), { 50 | method: 'POST', 51 | headers: { 52 | Authorization: D1_TOKEN 53 | }, 54 | body: JSON.stringify({ 55 | params: [ 56 | newMember.id, 57 | newMember.first_name, 58 | newMember?.last_name || '', 59 | JSON.stringify(newMember), 60 | 0 61 | ], 62 | sql: 'INSERT INTO tg_user VALUES (?, ?, ?, ?, ?)' 63 | }) 64 | }); 65 | } 66 | 67 | const restrictUntil = parseInt(new Date().getTime() / 1000 + 3.024e7); // 350 days 68 | 69 | var responseJson = await ( 70 | await fetch( 71 | apiUrl('restrictChatMember', { 72 | chat_id: message.chat.id, 73 | user_id: newMember.id, 74 | until_date: restrictUntil, 75 | permissions: JSON.stringify({ 76 | can_send_messages: false, 77 | can_send_media_messages: false, 78 | can_send_other_messages: false, 79 | can_add_web_page_previews: false, 80 | can_send_polls: false, 81 | can_change_info: false, 82 | can_pin_messages: false, 83 | can_manage_topics: false, 84 | can_invite_users: false 85 | }) 86 | }) 87 | ) 88 | ).json(); 89 | if (!responseJson.ok) { 90 | console.log(responseJson); 91 | return; 92 | } 93 | 94 | const requestId = nanoid(); 95 | 96 | var responseJson = await ( 97 | await fetch( 98 | apiUrl('sendMessage', { 99 | chat_id: message.chat.id, 100 | parse_mode: 'MarkdownV2', 101 | protect_content: true, 102 | text: `Halo [${newMember.first_name}](tg://user?id=${newMember.id}), Klik Verifikasi untuk bisa mengirim pesan`, 103 | reply_markup: JSON.stringify({ 104 | inline_keyboard: [ 105 | [{ text: 'Verifikasi', login_url: { url: `${BASE_URL}/verify/${requestId}` } }] 106 | ] 107 | }) 108 | }) 109 | ) 110 | ).json(); 111 | if (!responseJson.ok) { 112 | console.log(responseJson); 113 | return; 114 | } 115 | 116 | if (responseJson.ok) { 117 | await fetch(d1Url(), { 118 | method: 'POST', 119 | headers: { 120 | Authorization: D1_TOKEN 121 | }, 122 | body: JSON.stringify({ 123 | params: [ 124 | requestId, 125 | newMember.id, 126 | message.chat.id, 127 | message.date, 128 | 'wait-for-verification', 129 | nanoid(4), 130 | responseJson.result.message_id 131 | ], 132 | sql: 'INSERT INTO tg_waitlist VALUES (?, ?, ?, ?, ?, ?, ?)' 133 | }) 134 | }); 135 | } 136 | } 137 | }); 138 | 139 | function apiUrl(methodName, params = null) { 140 | let query = ''; 141 | if (params) { 142 | query = '?' + new URLSearchParams(params).toString(); 143 | } 144 | return `https://api.telegram.org/bot${process.env.TG_BOT_TOKEN}/${methodName}${query}`; 145 | } 146 | 147 | function d1Url() { 148 | return `https://api.cloudflare.com/client/v4/accounts/${D1_ACCOUNT_ID}/d1/database/${D1_DB_ID}/query`; 149 | } 150 | -------------------------------------------------------------------------------- /bot-get-update/package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "bot-get-update", 3 | "version": "1.0.0", 4 | "lockfileVersion": 3, 5 | "requires": true, 6 | "packages": { 7 | "": { 8 | "name": "bot-get-update", 9 | "version": "1.0.0", 10 | "license": "MIT", 11 | "dependencies": { 12 | "nanoid": "^5.0.7", 13 | "node-telegram-bot-api": "^0.65.1" 14 | } 15 | }, 16 | "node_modules/@cypress/request": { 17 | "version": "3.0.1", 18 | "resolved": "https://registry.npmjs.org/@cypress/request/-/request-3.0.1.tgz", 19 | "integrity": "sha512-TWivJlJi8ZDx2wGOw1dbLuHJKUYX7bWySw377nlnGOW3hP9/MUKIsEdXT/YngWxVdgNCHRBmFlBipE+5/2ZZlQ==", 20 | "dependencies": { 21 | "aws-sign2": "~0.7.0", 22 | "aws4": "^1.8.0", 23 | "caseless": "~0.12.0", 24 | "combined-stream": "~1.0.6", 25 | "extend": "~3.0.2", 26 | "forever-agent": "~0.6.1", 27 | "form-data": "~2.3.2", 28 | "http-signature": "~1.3.6", 29 | "is-typedarray": "~1.0.0", 30 | "isstream": "~0.1.2", 31 | "json-stringify-safe": "~5.0.1", 32 | "mime-types": "~2.1.19", 33 | "performance-now": "^2.1.0", 34 | "qs": "6.10.4", 35 | "safe-buffer": "^5.1.2", 36 | "tough-cookie": "^4.1.3", 37 | "tunnel-agent": "^0.6.0", 38 | "uuid": "^8.3.2" 39 | }, 40 | "engines": { 41 | "node": ">= 6" 42 | } 43 | }, 44 | "node_modules/@cypress/request-promise": { 45 | "version": "5.0.0", 46 | "resolved": "https://registry.npmjs.org/@cypress/request-promise/-/request-promise-5.0.0.tgz", 47 | "integrity": "sha512-eKdYVpa9cBEw2kTBlHeu1PP16Blwtum6QHg/u9s/MoHkZfuo1pRGka1VlUHXF5kdew82BvOJVVGk0x8X0nbp+w==", 48 | "dependencies": { 49 | "bluebird": "^3.5.0", 50 | "request-promise-core": "1.1.3", 51 | "stealthy-require": "^1.1.1", 52 | "tough-cookie": "^4.1.3" 53 | }, 54 | "engines": { 55 | "node": ">=0.10.0" 56 | }, 57 | "peerDependencies": { 58 | "@cypress/request": "^3.0.0" 59 | } 60 | }, 61 | "node_modules/ajv": { 62 | "version": "6.12.6", 63 | "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", 64 | "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", 65 | "peer": true, 66 | "dependencies": { 67 | "fast-deep-equal": "^3.1.1", 68 | "fast-json-stable-stringify": "^2.0.0", 69 | "json-schema-traverse": "^0.4.1", 70 | "uri-js": "^4.2.2" 71 | }, 72 | "funding": { 73 | "type": "github", 74 | "url": "https://github.com/sponsors/epoberezkin" 75 | } 76 | }, 77 | "node_modules/array-buffer-byte-length": { 78 | "version": "1.0.1", 79 | "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz", 80 | "integrity": "sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==", 81 | "dependencies": { 82 | "call-bind": "^1.0.5", 83 | "is-array-buffer": "^3.0.4" 84 | }, 85 | "engines": { 86 | "node": ">= 0.4" 87 | }, 88 | "funding": { 89 | "url": "https://github.com/sponsors/ljharb" 90 | } 91 | }, 92 | "node_modules/array.prototype.findindex": { 93 | "version": "2.2.3", 94 | "resolved": "https://registry.npmjs.org/array.prototype.findindex/-/array.prototype.findindex-2.2.3.tgz", 95 | "integrity": "sha512-Saz3pStJ2X5bg27GTWWLyhJrcwbMVLsnbho2zUVQFW2Pgrh0mSKKvAeZr6BPww7E1AygK33cX7w0W1YERC1RHA==", 96 | "dependencies": { 97 | "call-bind": "^1.0.7", 98 | "define-properties": "^1.2.1", 99 | "es-abstract": "^1.23.0", 100 | "es-object-atoms": "^1.0.0", 101 | "es-shim-unscopables": "^1.0.2" 102 | } 103 | }, 104 | "node_modules/arraybuffer.prototype.slice": { 105 | "version": "1.0.3", 106 | "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.3.tgz", 107 | "integrity": "sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==", 108 | "dependencies": { 109 | "array-buffer-byte-length": "^1.0.1", 110 | "call-bind": "^1.0.5", 111 | "define-properties": "^1.2.1", 112 | "es-abstract": "^1.22.3", 113 | "es-errors": "^1.2.1", 114 | "get-intrinsic": "^1.2.3", 115 | "is-array-buffer": "^3.0.4", 116 | "is-shared-array-buffer": "^1.0.2" 117 | }, 118 | "engines": { 119 | "node": ">= 0.4" 120 | }, 121 | "funding": { 122 | "url": "https://github.com/sponsors/ljharb" 123 | } 124 | }, 125 | "node_modules/asn1": { 126 | "version": "0.2.6", 127 | "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz", 128 | "integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==", 129 | "dependencies": { 130 | "safer-buffer": "~2.1.0" 131 | } 132 | }, 133 | "node_modules/assert-plus": { 134 | "version": "1.0.0", 135 | "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", 136 | "integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==", 137 | "engines": { 138 | "node": ">=0.8" 139 | } 140 | }, 141 | "node_modules/asynckit": { 142 | "version": "0.4.0", 143 | "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", 144 | "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" 145 | }, 146 | "node_modules/available-typed-arrays": { 147 | "version": "1.0.7", 148 | "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", 149 | "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", 150 | "dependencies": { 151 | "possible-typed-array-names": "^1.0.0" 152 | }, 153 | "engines": { 154 | "node": ">= 0.4" 155 | }, 156 | "funding": { 157 | "url": "https://github.com/sponsors/ljharb" 158 | } 159 | }, 160 | "node_modules/aws-sign2": { 161 | "version": "0.7.0", 162 | "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", 163 | "integrity": "sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==", 164 | "engines": { 165 | "node": "*" 166 | } 167 | }, 168 | "node_modules/aws4": { 169 | "version": "1.12.0", 170 | "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.12.0.tgz", 171 | "integrity": "sha512-NmWvPnx0F1SfrQbYwOi7OeaNGokp9XhzNioJ/CSBs8Qa4vxug81mhJEAVZwxXuBmYB5KDRfMq/F3RR0BIU7sWg==" 172 | }, 173 | "node_modules/bcrypt-pbkdf": { 174 | "version": "1.0.2", 175 | "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", 176 | "integrity": "sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==", 177 | "dependencies": { 178 | "tweetnacl": "^0.14.3" 179 | } 180 | }, 181 | "node_modules/bl": { 182 | "version": "1.2.3", 183 | "resolved": "https://registry.npmjs.org/bl/-/bl-1.2.3.tgz", 184 | "integrity": "sha512-pvcNpa0UU69UT341rO6AYy4FVAIkUHuZXRIWbq+zHnsVcRzDDjIAhGuuYoi0d//cwIwtt4pkpKycWEfjdV+vww==", 185 | "dependencies": { 186 | "readable-stream": "^2.3.5", 187 | "safe-buffer": "^5.1.1" 188 | } 189 | }, 190 | "node_modules/bluebird": { 191 | "version": "3.7.2", 192 | "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", 193 | "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==" 194 | }, 195 | "node_modules/call-bind": { 196 | "version": "1.0.7", 197 | "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", 198 | "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", 199 | "dependencies": { 200 | "es-define-property": "^1.0.0", 201 | "es-errors": "^1.3.0", 202 | "function-bind": "^1.1.2", 203 | "get-intrinsic": "^1.2.4", 204 | "set-function-length": "^1.2.1" 205 | }, 206 | "engines": { 207 | "node": ">= 0.4" 208 | }, 209 | "funding": { 210 | "url": "https://github.com/sponsors/ljharb" 211 | } 212 | }, 213 | "node_modules/caseless": { 214 | "version": "0.12.0", 215 | "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", 216 | "integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==" 217 | }, 218 | "node_modules/combined-stream": { 219 | "version": "1.0.8", 220 | "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", 221 | "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", 222 | "dependencies": { 223 | "delayed-stream": "~1.0.0" 224 | }, 225 | "engines": { 226 | "node": ">= 0.8" 227 | } 228 | }, 229 | "node_modules/core-util-is": { 230 | "version": "1.0.3", 231 | "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", 232 | "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" 233 | }, 234 | "node_modules/dashdash": { 235 | "version": "1.14.1", 236 | "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", 237 | "integrity": "sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==", 238 | "dependencies": { 239 | "assert-plus": "^1.0.0" 240 | }, 241 | "engines": { 242 | "node": ">=0.10" 243 | } 244 | }, 245 | "node_modules/data-view-buffer": { 246 | "version": "1.0.1", 247 | "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.1.tgz", 248 | "integrity": "sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==", 249 | "dependencies": { 250 | "call-bind": "^1.0.6", 251 | "es-errors": "^1.3.0", 252 | "is-data-view": "^1.0.1" 253 | }, 254 | "engines": { 255 | "node": ">= 0.4" 256 | }, 257 | "funding": { 258 | "url": "https://github.com/sponsors/ljharb" 259 | } 260 | }, 261 | "node_modules/data-view-byte-length": { 262 | "version": "1.0.1", 263 | "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.1.tgz", 264 | "integrity": "sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==", 265 | "dependencies": { 266 | "call-bind": "^1.0.7", 267 | "es-errors": "^1.3.0", 268 | "is-data-view": "^1.0.1" 269 | }, 270 | "engines": { 271 | "node": ">= 0.4" 272 | }, 273 | "funding": { 274 | "url": "https://github.com/sponsors/ljharb" 275 | } 276 | }, 277 | "node_modules/data-view-byte-offset": { 278 | "version": "1.0.0", 279 | "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.0.tgz", 280 | "integrity": "sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==", 281 | "dependencies": { 282 | "call-bind": "^1.0.6", 283 | "es-errors": "^1.3.0", 284 | "is-data-view": "^1.0.1" 285 | }, 286 | "engines": { 287 | "node": ">= 0.4" 288 | }, 289 | "funding": { 290 | "url": "https://github.com/sponsors/ljharb" 291 | } 292 | }, 293 | "node_modules/debug": { 294 | "version": "3.2.7", 295 | "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", 296 | "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", 297 | "dependencies": { 298 | "ms": "^2.1.1" 299 | } 300 | }, 301 | "node_modules/define-data-property": { 302 | "version": "1.1.4", 303 | "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", 304 | "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", 305 | "dependencies": { 306 | "es-define-property": "^1.0.0", 307 | "es-errors": "^1.3.0", 308 | "gopd": "^1.0.1" 309 | }, 310 | "engines": { 311 | "node": ">= 0.4" 312 | }, 313 | "funding": { 314 | "url": "https://github.com/sponsors/ljharb" 315 | } 316 | }, 317 | "node_modules/define-properties": { 318 | "version": "1.2.1", 319 | "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", 320 | "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", 321 | "dependencies": { 322 | "define-data-property": "^1.0.1", 323 | "has-property-descriptors": "^1.0.0", 324 | "object-keys": "^1.1.1" 325 | }, 326 | "engines": { 327 | "node": ">= 0.4" 328 | }, 329 | "funding": { 330 | "url": "https://github.com/sponsors/ljharb" 331 | } 332 | }, 333 | "node_modules/delayed-stream": { 334 | "version": "1.0.0", 335 | "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", 336 | "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", 337 | "engines": { 338 | "node": ">=0.4.0" 339 | } 340 | }, 341 | "node_modules/ecc-jsbn": { 342 | "version": "0.1.2", 343 | "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", 344 | "integrity": "sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==", 345 | "dependencies": { 346 | "jsbn": "~0.1.0", 347 | "safer-buffer": "^2.1.0" 348 | } 349 | }, 350 | "node_modules/end-of-stream": { 351 | "version": "1.4.4", 352 | "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", 353 | "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", 354 | "dependencies": { 355 | "once": "^1.4.0" 356 | } 357 | }, 358 | "node_modules/es-abstract": { 359 | "version": "1.23.3", 360 | "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.3.tgz", 361 | "integrity": "sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A==", 362 | "dependencies": { 363 | "array-buffer-byte-length": "^1.0.1", 364 | "arraybuffer.prototype.slice": "^1.0.3", 365 | "available-typed-arrays": "^1.0.7", 366 | "call-bind": "^1.0.7", 367 | "data-view-buffer": "^1.0.1", 368 | "data-view-byte-length": "^1.0.1", 369 | "data-view-byte-offset": "^1.0.0", 370 | "es-define-property": "^1.0.0", 371 | "es-errors": "^1.3.0", 372 | "es-object-atoms": "^1.0.0", 373 | "es-set-tostringtag": "^2.0.3", 374 | "es-to-primitive": "^1.2.1", 375 | "function.prototype.name": "^1.1.6", 376 | "get-intrinsic": "^1.2.4", 377 | "get-symbol-description": "^1.0.2", 378 | "globalthis": "^1.0.3", 379 | "gopd": "^1.0.1", 380 | "has-property-descriptors": "^1.0.2", 381 | "has-proto": "^1.0.3", 382 | "has-symbols": "^1.0.3", 383 | "hasown": "^2.0.2", 384 | "internal-slot": "^1.0.7", 385 | "is-array-buffer": "^3.0.4", 386 | "is-callable": "^1.2.7", 387 | "is-data-view": "^1.0.1", 388 | "is-negative-zero": "^2.0.3", 389 | "is-regex": "^1.1.4", 390 | "is-shared-array-buffer": "^1.0.3", 391 | "is-string": "^1.0.7", 392 | "is-typed-array": "^1.1.13", 393 | "is-weakref": "^1.0.2", 394 | "object-inspect": "^1.13.1", 395 | "object-keys": "^1.1.1", 396 | "object.assign": "^4.1.5", 397 | "regexp.prototype.flags": "^1.5.2", 398 | "safe-array-concat": "^1.1.2", 399 | "safe-regex-test": "^1.0.3", 400 | "string.prototype.trim": "^1.2.9", 401 | "string.prototype.trimend": "^1.0.8", 402 | "string.prototype.trimstart": "^1.0.8", 403 | "typed-array-buffer": "^1.0.2", 404 | "typed-array-byte-length": "^1.0.1", 405 | "typed-array-byte-offset": "^1.0.2", 406 | "typed-array-length": "^1.0.6", 407 | "unbox-primitive": "^1.0.2", 408 | "which-typed-array": "^1.1.15" 409 | }, 410 | "engines": { 411 | "node": ">= 0.4" 412 | }, 413 | "funding": { 414 | "url": "https://github.com/sponsors/ljharb" 415 | } 416 | }, 417 | "node_modules/es-define-property": { 418 | "version": "1.0.0", 419 | "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", 420 | "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", 421 | "dependencies": { 422 | "get-intrinsic": "^1.2.4" 423 | }, 424 | "engines": { 425 | "node": ">= 0.4" 426 | } 427 | }, 428 | "node_modules/es-errors": { 429 | "version": "1.3.0", 430 | "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", 431 | "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", 432 | "engines": { 433 | "node": ">= 0.4" 434 | } 435 | }, 436 | "node_modules/es-object-atoms": { 437 | "version": "1.0.0", 438 | "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.0.0.tgz", 439 | "integrity": "sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==", 440 | "dependencies": { 441 | "es-errors": "^1.3.0" 442 | }, 443 | "engines": { 444 | "node": ">= 0.4" 445 | } 446 | }, 447 | "node_modules/es-set-tostringtag": { 448 | "version": "2.0.3", 449 | "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.3.tgz", 450 | "integrity": "sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==", 451 | "dependencies": { 452 | "get-intrinsic": "^1.2.4", 453 | "has-tostringtag": "^1.0.2", 454 | "hasown": "^2.0.1" 455 | }, 456 | "engines": { 457 | "node": ">= 0.4" 458 | } 459 | }, 460 | "node_modules/es-shim-unscopables": { 461 | "version": "1.0.2", 462 | "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.2.tgz", 463 | "integrity": "sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==", 464 | "dependencies": { 465 | "hasown": "^2.0.0" 466 | } 467 | }, 468 | "node_modules/es-to-primitive": { 469 | "version": "1.2.1", 470 | "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", 471 | "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", 472 | "dependencies": { 473 | "is-callable": "^1.1.4", 474 | "is-date-object": "^1.0.1", 475 | "is-symbol": "^1.0.2" 476 | }, 477 | "engines": { 478 | "node": ">= 0.4" 479 | }, 480 | "funding": { 481 | "url": "https://github.com/sponsors/ljharb" 482 | } 483 | }, 484 | "node_modules/eventemitter3": { 485 | "version": "3.1.2", 486 | "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-3.1.2.tgz", 487 | "integrity": "sha512-tvtQIeLVHjDkJYnzf2dgVMxfuSGJeM/7UCG17TT4EumTfNtF+0nebF/4zWOIkCreAbtNqhGEboB6BWrwqNaw4Q==" 488 | }, 489 | "node_modules/extend": { 490 | "version": "3.0.2", 491 | "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", 492 | "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" 493 | }, 494 | "node_modules/extsprintf": { 495 | "version": "1.3.0", 496 | "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", 497 | "integrity": "sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==", 498 | "engines": [ 499 | "node >=0.6.0" 500 | ] 501 | }, 502 | "node_modules/fast-deep-equal": { 503 | "version": "3.1.3", 504 | "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", 505 | "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", 506 | "peer": true 507 | }, 508 | "node_modules/fast-json-stable-stringify": { 509 | "version": "2.1.0", 510 | "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", 511 | "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", 512 | "peer": true 513 | }, 514 | "node_modules/file-type": { 515 | "version": "3.9.0", 516 | "resolved": "https://registry.npmjs.org/file-type/-/file-type-3.9.0.tgz", 517 | "integrity": "sha512-RLoqTXE8/vPmMuTI88DAzhMYC99I8BWv7zYP4A1puo5HIjEJ5EX48ighy4ZyKMG9EDXxBgW6e++cn7d1xuFghA==", 518 | "engines": { 519 | "node": ">=0.10.0" 520 | } 521 | }, 522 | "node_modules/for-each": { 523 | "version": "0.3.3", 524 | "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", 525 | "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", 526 | "dependencies": { 527 | "is-callable": "^1.1.3" 528 | } 529 | }, 530 | "node_modules/forever-agent": { 531 | "version": "0.6.1", 532 | "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", 533 | "integrity": "sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==", 534 | "engines": { 535 | "node": "*" 536 | } 537 | }, 538 | "node_modules/form-data": { 539 | "version": "2.3.3", 540 | "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", 541 | "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", 542 | "dependencies": { 543 | "asynckit": "^0.4.0", 544 | "combined-stream": "^1.0.6", 545 | "mime-types": "^2.1.12" 546 | }, 547 | "engines": { 548 | "node": ">= 0.12" 549 | } 550 | }, 551 | "node_modules/function-bind": { 552 | "version": "1.1.2", 553 | "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", 554 | "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", 555 | "funding": { 556 | "url": "https://github.com/sponsors/ljharb" 557 | } 558 | }, 559 | "node_modules/function.prototype.name": { 560 | "version": "1.1.6", 561 | "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.6.tgz", 562 | "integrity": "sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==", 563 | "dependencies": { 564 | "call-bind": "^1.0.2", 565 | "define-properties": "^1.2.0", 566 | "es-abstract": "^1.22.1", 567 | "functions-have-names": "^1.2.3" 568 | }, 569 | "engines": { 570 | "node": ">= 0.4" 571 | }, 572 | "funding": { 573 | "url": "https://github.com/sponsors/ljharb" 574 | } 575 | }, 576 | "node_modules/functions-have-names": { 577 | "version": "1.2.3", 578 | "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", 579 | "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", 580 | "funding": { 581 | "url": "https://github.com/sponsors/ljharb" 582 | } 583 | }, 584 | "node_modules/get-intrinsic": { 585 | "version": "1.2.4", 586 | "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", 587 | "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", 588 | "dependencies": { 589 | "es-errors": "^1.3.0", 590 | "function-bind": "^1.1.2", 591 | "has-proto": "^1.0.1", 592 | "has-symbols": "^1.0.3", 593 | "hasown": "^2.0.0" 594 | }, 595 | "engines": { 596 | "node": ">= 0.4" 597 | }, 598 | "funding": { 599 | "url": "https://github.com/sponsors/ljharb" 600 | } 601 | }, 602 | "node_modules/get-symbol-description": { 603 | "version": "1.0.2", 604 | "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.2.tgz", 605 | "integrity": "sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==", 606 | "dependencies": { 607 | "call-bind": "^1.0.5", 608 | "es-errors": "^1.3.0", 609 | "get-intrinsic": "^1.2.4" 610 | }, 611 | "engines": { 612 | "node": ">= 0.4" 613 | }, 614 | "funding": { 615 | "url": "https://github.com/sponsors/ljharb" 616 | } 617 | }, 618 | "node_modules/getpass": { 619 | "version": "0.1.7", 620 | "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", 621 | "integrity": "sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==", 622 | "dependencies": { 623 | "assert-plus": "^1.0.0" 624 | } 625 | }, 626 | "node_modules/globalthis": { 627 | "version": "1.0.3", 628 | "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz", 629 | "integrity": "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==", 630 | "dependencies": { 631 | "define-properties": "^1.1.3" 632 | }, 633 | "engines": { 634 | "node": ">= 0.4" 635 | }, 636 | "funding": { 637 | "url": "https://github.com/sponsors/ljharb" 638 | } 639 | }, 640 | "node_modules/gopd": { 641 | "version": "1.0.1", 642 | "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", 643 | "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", 644 | "dependencies": { 645 | "get-intrinsic": "^1.1.3" 646 | }, 647 | "funding": { 648 | "url": "https://github.com/sponsors/ljharb" 649 | } 650 | }, 651 | "node_modules/har-schema": { 652 | "version": "2.0.0", 653 | "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", 654 | "integrity": "sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q==", 655 | "peer": true, 656 | "engines": { 657 | "node": ">=4" 658 | } 659 | }, 660 | "node_modules/har-validator": { 661 | "version": "5.1.5", 662 | "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", 663 | "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", 664 | "deprecated": "this library is no longer supported", 665 | "peer": true, 666 | "dependencies": { 667 | "ajv": "^6.12.3", 668 | "har-schema": "^2.0.0" 669 | }, 670 | "engines": { 671 | "node": ">=6" 672 | } 673 | }, 674 | "node_modules/has-bigints": { 675 | "version": "1.0.2", 676 | "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", 677 | "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", 678 | "funding": { 679 | "url": "https://github.com/sponsors/ljharb" 680 | } 681 | }, 682 | "node_modules/has-property-descriptors": { 683 | "version": "1.0.2", 684 | "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", 685 | "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", 686 | "dependencies": { 687 | "es-define-property": "^1.0.0" 688 | }, 689 | "funding": { 690 | "url": "https://github.com/sponsors/ljharb" 691 | } 692 | }, 693 | "node_modules/has-proto": { 694 | "version": "1.0.3", 695 | "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", 696 | "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==", 697 | "engines": { 698 | "node": ">= 0.4" 699 | }, 700 | "funding": { 701 | "url": "https://github.com/sponsors/ljharb" 702 | } 703 | }, 704 | "node_modules/has-symbols": { 705 | "version": "1.0.3", 706 | "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", 707 | "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", 708 | "engines": { 709 | "node": ">= 0.4" 710 | }, 711 | "funding": { 712 | "url": "https://github.com/sponsors/ljharb" 713 | } 714 | }, 715 | "node_modules/has-tostringtag": { 716 | "version": "1.0.2", 717 | "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", 718 | "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", 719 | "dependencies": { 720 | "has-symbols": "^1.0.3" 721 | }, 722 | "engines": { 723 | "node": ">= 0.4" 724 | }, 725 | "funding": { 726 | "url": "https://github.com/sponsors/ljharb" 727 | } 728 | }, 729 | "node_modules/hasown": { 730 | "version": "2.0.2", 731 | "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", 732 | "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", 733 | "dependencies": { 734 | "function-bind": "^1.1.2" 735 | }, 736 | "engines": { 737 | "node": ">= 0.4" 738 | } 739 | }, 740 | "node_modules/http-signature": { 741 | "version": "1.3.6", 742 | "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.3.6.tgz", 743 | "integrity": "sha512-3adrsD6zqo4GsTqtO7FyrejHNv+NgiIfAfv68+jVlFmSr9OGy7zrxONceFRLKvnnZA5jbxQBX1u9PpB6Wi32Gw==", 744 | "dependencies": { 745 | "assert-plus": "^1.0.0", 746 | "jsprim": "^2.0.2", 747 | "sshpk": "^1.14.1" 748 | }, 749 | "engines": { 750 | "node": ">=0.10" 751 | } 752 | }, 753 | "node_modules/inherits": { 754 | "version": "2.0.4", 755 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", 756 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" 757 | }, 758 | "node_modules/internal-slot": { 759 | "version": "1.0.7", 760 | "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.7.tgz", 761 | "integrity": "sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==", 762 | "dependencies": { 763 | "es-errors": "^1.3.0", 764 | "hasown": "^2.0.0", 765 | "side-channel": "^1.0.4" 766 | }, 767 | "engines": { 768 | "node": ">= 0.4" 769 | } 770 | }, 771 | "node_modules/is-array-buffer": { 772 | "version": "3.0.4", 773 | "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.4.tgz", 774 | "integrity": "sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==", 775 | "dependencies": { 776 | "call-bind": "^1.0.2", 777 | "get-intrinsic": "^1.2.1" 778 | }, 779 | "engines": { 780 | "node": ">= 0.4" 781 | }, 782 | "funding": { 783 | "url": "https://github.com/sponsors/ljharb" 784 | } 785 | }, 786 | "node_modules/is-bigint": { 787 | "version": "1.0.4", 788 | "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", 789 | "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", 790 | "dependencies": { 791 | "has-bigints": "^1.0.1" 792 | }, 793 | "funding": { 794 | "url": "https://github.com/sponsors/ljharb" 795 | } 796 | }, 797 | "node_modules/is-boolean-object": { 798 | "version": "1.1.2", 799 | "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", 800 | "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", 801 | "dependencies": { 802 | "call-bind": "^1.0.2", 803 | "has-tostringtag": "^1.0.0" 804 | }, 805 | "engines": { 806 | "node": ">= 0.4" 807 | }, 808 | "funding": { 809 | "url": "https://github.com/sponsors/ljharb" 810 | } 811 | }, 812 | "node_modules/is-callable": { 813 | "version": "1.2.7", 814 | "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", 815 | "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", 816 | "engines": { 817 | "node": ">= 0.4" 818 | }, 819 | "funding": { 820 | "url": "https://github.com/sponsors/ljharb" 821 | } 822 | }, 823 | "node_modules/is-data-view": { 824 | "version": "1.0.1", 825 | "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.1.tgz", 826 | "integrity": "sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==", 827 | "dependencies": { 828 | "is-typed-array": "^1.1.13" 829 | }, 830 | "engines": { 831 | "node": ">= 0.4" 832 | }, 833 | "funding": { 834 | "url": "https://github.com/sponsors/ljharb" 835 | } 836 | }, 837 | "node_modules/is-date-object": { 838 | "version": "1.0.5", 839 | "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", 840 | "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", 841 | "dependencies": { 842 | "has-tostringtag": "^1.0.0" 843 | }, 844 | "engines": { 845 | "node": ">= 0.4" 846 | }, 847 | "funding": { 848 | "url": "https://github.com/sponsors/ljharb" 849 | } 850 | }, 851 | "node_modules/is-negative-zero": { 852 | "version": "2.0.3", 853 | "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz", 854 | "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==", 855 | "engines": { 856 | "node": ">= 0.4" 857 | }, 858 | "funding": { 859 | "url": "https://github.com/sponsors/ljharb" 860 | } 861 | }, 862 | "node_modules/is-number-object": { 863 | "version": "1.0.7", 864 | "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", 865 | "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", 866 | "dependencies": { 867 | "has-tostringtag": "^1.0.0" 868 | }, 869 | "engines": { 870 | "node": ">= 0.4" 871 | }, 872 | "funding": { 873 | "url": "https://github.com/sponsors/ljharb" 874 | } 875 | }, 876 | "node_modules/is-regex": { 877 | "version": "1.1.4", 878 | "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", 879 | "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", 880 | "dependencies": { 881 | "call-bind": "^1.0.2", 882 | "has-tostringtag": "^1.0.0" 883 | }, 884 | "engines": { 885 | "node": ">= 0.4" 886 | }, 887 | "funding": { 888 | "url": "https://github.com/sponsors/ljharb" 889 | } 890 | }, 891 | "node_modules/is-shared-array-buffer": { 892 | "version": "1.0.3", 893 | "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.3.tgz", 894 | "integrity": "sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==", 895 | "dependencies": { 896 | "call-bind": "^1.0.7" 897 | }, 898 | "engines": { 899 | "node": ">= 0.4" 900 | }, 901 | "funding": { 902 | "url": "https://github.com/sponsors/ljharb" 903 | } 904 | }, 905 | "node_modules/is-string": { 906 | "version": "1.0.7", 907 | "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", 908 | "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", 909 | "dependencies": { 910 | "has-tostringtag": "^1.0.0" 911 | }, 912 | "engines": { 913 | "node": ">= 0.4" 914 | }, 915 | "funding": { 916 | "url": "https://github.com/sponsors/ljharb" 917 | } 918 | }, 919 | "node_modules/is-symbol": { 920 | "version": "1.0.4", 921 | "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", 922 | "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", 923 | "dependencies": { 924 | "has-symbols": "^1.0.2" 925 | }, 926 | "engines": { 927 | "node": ">= 0.4" 928 | }, 929 | "funding": { 930 | "url": "https://github.com/sponsors/ljharb" 931 | } 932 | }, 933 | "node_modules/is-typed-array": { 934 | "version": "1.1.13", 935 | "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.13.tgz", 936 | "integrity": "sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==", 937 | "dependencies": { 938 | "which-typed-array": "^1.1.14" 939 | }, 940 | "engines": { 941 | "node": ">= 0.4" 942 | }, 943 | "funding": { 944 | "url": "https://github.com/sponsors/ljharb" 945 | } 946 | }, 947 | "node_modules/is-typedarray": { 948 | "version": "1.0.0", 949 | "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", 950 | "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==" 951 | }, 952 | "node_modules/is-weakref": { 953 | "version": "1.0.2", 954 | "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", 955 | "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", 956 | "dependencies": { 957 | "call-bind": "^1.0.2" 958 | }, 959 | "funding": { 960 | "url": "https://github.com/sponsors/ljharb" 961 | } 962 | }, 963 | "node_modules/isarray": { 964 | "version": "1.0.0", 965 | "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", 966 | "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" 967 | }, 968 | "node_modules/isstream": { 969 | "version": "0.1.2", 970 | "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", 971 | "integrity": "sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==" 972 | }, 973 | "node_modules/jsbn": { 974 | "version": "0.1.1", 975 | "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", 976 | "integrity": "sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==" 977 | }, 978 | "node_modules/json-schema": { 979 | "version": "0.4.0", 980 | "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", 981 | "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==" 982 | }, 983 | "node_modules/json-schema-traverse": { 984 | "version": "0.4.1", 985 | "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", 986 | "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", 987 | "peer": true 988 | }, 989 | "node_modules/json-stringify-safe": { 990 | "version": "5.0.1", 991 | "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", 992 | "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==" 993 | }, 994 | "node_modules/jsprim": { 995 | "version": "2.0.2", 996 | "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-2.0.2.tgz", 997 | "integrity": "sha512-gqXddjPqQ6G40VdnI6T6yObEC+pDNvyP95wdQhkWkg7crHH3km5qP1FsOXEkzEQwnz6gz5qGTn1c2Y52wP3OyQ==", 998 | "engines": [ 999 | "node >=0.6.0" 1000 | ], 1001 | "dependencies": { 1002 | "assert-plus": "1.0.0", 1003 | "extsprintf": "1.3.0", 1004 | "json-schema": "0.4.0", 1005 | "verror": "1.10.0" 1006 | } 1007 | }, 1008 | "node_modules/lodash": { 1009 | "version": "4.17.21", 1010 | "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", 1011 | "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" 1012 | }, 1013 | "node_modules/mime": { 1014 | "version": "1.6.0", 1015 | "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", 1016 | "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", 1017 | "bin": { 1018 | "mime": "cli.js" 1019 | }, 1020 | "engines": { 1021 | "node": ">=4" 1022 | } 1023 | }, 1024 | "node_modules/mime-db": { 1025 | "version": "1.52.0", 1026 | "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", 1027 | "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", 1028 | "engines": { 1029 | "node": ">= 0.6" 1030 | } 1031 | }, 1032 | "node_modules/mime-types": { 1033 | "version": "2.1.35", 1034 | "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", 1035 | "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", 1036 | "dependencies": { 1037 | "mime-db": "1.52.0" 1038 | }, 1039 | "engines": { 1040 | "node": ">= 0.6" 1041 | } 1042 | }, 1043 | "node_modules/ms": { 1044 | "version": "2.1.3", 1045 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", 1046 | "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" 1047 | }, 1048 | "node_modules/nanoid": { 1049 | "version": "5.0.7", 1050 | "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-5.0.7.tgz", 1051 | "integrity": "sha512-oLxFY2gd2IqnjcYyOXD8XGCftpGtZP2AbHbOkthDkvRywH5ayNtPVy9YlOPcHckXzbLTCHpkb7FB+yuxKV13pQ==", 1052 | "funding": [ 1053 | { 1054 | "type": "github", 1055 | "url": "https://github.com/sponsors/ai" 1056 | } 1057 | ], 1058 | "bin": { 1059 | "nanoid": "bin/nanoid.js" 1060 | }, 1061 | "engines": { 1062 | "node": "^18 || >=20" 1063 | } 1064 | }, 1065 | "node_modules/node-telegram-bot-api": { 1066 | "version": "0.65.1", 1067 | "resolved": "https://registry.npmjs.org/node-telegram-bot-api/-/node-telegram-bot-api-0.65.1.tgz", 1068 | "integrity": "sha512-YhMSgUZCKWxI+MlCuh/2yuMvsqMnZGAA2QOjD10GWk8KszNN5LQOzO+kp1K1wMYuOJoZ7v0+epLpJsSrnmlyQQ==", 1069 | "dependencies": { 1070 | "@cypress/request": "^3.0.1", 1071 | "@cypress/request-promise": "^5.0.0", 1072 | "array.prototype.findindex": "^2.0.2", 1073 | "bl": "^1.2.3", 1074 | "debug": "^3.2.7", 1075 | "eventemitter3": "^3.0.0", 1076 | "file-type": "^3.9.0", 1077 | "mime": "^1.6.0", 1078 | "pump": "^2.0.0" 1079 | }, 1080 | "engines": { 1081 | "node": ">=0.12" 1082 | } 1083 | }, 1084 | "node_modules/oauth-sign": { 1085 | "version": "0.9.0", 1086 | "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", 1087 | "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", 1088 | "peer": true, 1089 | "engines": { 1090 | "node": "*" 1091 | } 1092 | }, 1093 | "node_modules/object-inspect": { 1094 | "version": "1.13.1", 1095 | "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz", 1096 | "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==", 1097 | "funding": { 1098 | "url": "https://github.com/sponsors/ljharb" 1099 | } 1100 | }, 1101 | "node_modules/object-keys": { 1102 | "version": "1.1.1", 1103 | "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", 1104 | "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", 1105 | "engines": { 1106 | "node": ">= 0.4" 1107 | } 1108 | }, 1109 | "node_modules/object.assign": { 1110 | "version": "4.1.5", 1111 | "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.5.tgz", 1112 | "integrity": "sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==", 1113 | "dependencies": { 1114 | "call-bind": "^1.0.5", 1115 | "define-properties": "^1.2.1", 1116 | "has-symbols": "^1.0.3", 1117 | "object-keys": "^1.1.1" 1118 | }, 1119 | "engines": { 1120 | "node": ">= 0.4" 1121 | }, 1122 | "funding": { 1123 | "url": "https://github.com/sponsors/ljharb" 1124 | } 1125 | }, 1126 | "node_modules/once": { 1127 | "version": "1.4.0", 1128 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", 1129 | "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", 1130 | "dependencies": { 1131 | "wrappy": "1" 1132 | } 1133 | }, 1134 | "node_modules/performance-now": { 1135 | "version": "2.1.0", 1136 | "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", 1137 | "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==" 1138 | }, 1139 | "node_modules/possible-typed-array-names": { 1140 | "version": "1.0.0", 1141 | "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz", 1142 | "integrity": "sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==", 1143 | "engines": { 1144 | "node": ">= 0.4" 1145 | } 1146 | }, 1147 | "node_modules/process-nextick-args": { 1148 | "version": "2.0.1", 1149 | "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", 1150 | "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" 1151 | }, 1152 | "node_modules/psl": { 1153 | "version": "1.9.0", 1154 | "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", 1155 | "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==" 1156 | }, 1157 | "node_modules/pump": { 1158 | "version": "2.0.1", 1159 | "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz", 1160 | "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==", 1161 | "dependencies": { 1162 | "end-of-stream": "^1.1.0", 1163 | "once": "^1.3.1" 1164 | } 1165 | }, 1166 | "node_modules/punycode": { 1167 | "version": "2.3.1", 1168 | "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", 1169 | "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", 1170 | "engines": { 1171 | "node": ">=6" 1172 | } 1173 | }, 1174 | "node_modules/qs": { 1175 | "version": "6.10.4", 1176 | "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.4.tgz", 1177 | "integrity": "sha512-OQiU+C+Ds5qiH91qh/mg0w+8nwQuLjM4F4M/PbmhDOoYehPh+Fb0bDjtR1sOvy7YKxvj28Y/M0PhP5uVX0kB+g==", 1178 | "dependencies": { 1179 | "side-channel": "^1.0.4" 1180 | }, 1181 | "engines": { 1182 | "node": ">=0.6" 1183 | }, 1184 | "funding": { 1185 | "url": "https://github.com/sponsors/ljharb" 1186 | } 1187 | }, 1188 | "node_modules/querystringify": { 1189 | "version": "2.2.0", 1190 | "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", 1191 | "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==" 1192 | }, 1193 | "node_modules/readable-stream": { 1194 | "version": "2.3.8", 1195 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", 1196 | "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", 1197 | "dependencies": { 1198 | "core-util-is": "~1.0.0", 1199 | "inherits": "~2.0.3", 1200 | "isarray": "~1.0.0", 1201 | "process-nextick-args": "~2.0.0", 1202 | "safe-buffer": "~5.1.1", 1203 | "string_decoder": "~1.1.1", 1204 | "util-deprecate": "~1.0.1" 1205 | } 1206 | }, 1207 | "node_modules/readable-stream/node_modules/safe-buffer": { 1208 | "version": "5.1.2", 1209 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", 1210 | "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" 1211 | }, 1212 | "node_modules/regexp.prototype.flags": { 1213 | "version": "1.5.2", 1214 | "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.2.tgz", 1215 | "integrity": "sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==", 1216 | "dependencies": { 1217 | "call-bind": "^1.0.6", 1218 | "define-properties": "^1.2.1", 1219 | "es-errors": "^1.3.0", 1220 | "set-function-name": "^2.0.1" 1221 | }, 1222 | "engines": { 1223 | "node": ">= 0.4" 1224 | }, 1225 | "funding": { 1226 | "url": "https://github.com/sponsors/ljharb" 1227 | } 1228 | }, 1229 | "node_modules/request": { 1230 | "version": "2.88.2", 1231 | "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", 1232 | "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", 1233 | "deprecated": "request has been deprecated, see https://github.com/request/request/issues/3142", 1234 | "peer": true, 1235 | "dependencies": { 1236 | "aws-sign2": "~0.7.0", 1237 | "aws4": "^1.8.0", 1238 | "caseless": "~0.12.0", 1239 | "combined-stream": "~1.0.6", 1240 | "extend": "~3.0.2", 1241 | "forever-agent": "~0.6.1", 1242 | "form-data": "~2.3.2", 1243 | "har-validator": "~5.1.3", 1244 | "http-signature": "~1.2.0", 1245 | "is-typedarray": "~1.0.0", 1246 | "isstream": "~0.1.2", 1247 | "json-stringify-safe": "~5.0.1", 1248 | "mime-types": "~2.1.19", 1249 | "oauth-sign": "~0.9.0", 1250 | "performance-now": "^2.1.0", 1251 | "qs": "~6.5.2", 1252 | "safe-buffer": "^5.1.2", 1253 | "tough-cookie": "~2.5.0", 1254 | "tunnel-agent": "^0.6.0", 1255 | "uuid": "^3.3.2" 1256 | }, 1257 | "engines": { 1258 | "node": ">= 6" 1259 | } 1260 | }, 1261 | "node_modules/request-promise-core": { 1262 | "version": "1.1.3", 1263 | "resolved": "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.3.tgz", 1264 | "integrity": "sha512-QIs2+ArIGQVp5ZYbWD5ZLCY29D5CfWizP8eWnm8FoGD1TX61veauETVQbrV60662V0oFBkrDOuaBI8XgtuyYAQ==", 1265 | "dependencies": { 1266 | "lodash": "^4.17.15" 1267 | }, 1268 | "engines": { 1269 | "node": ">=0.10.0" 1270 | }, 1271 | "peerDependencies": { 1272 | "request": "^2.34" 1273 | } 1274 | }, 1275 | "node_modules/request/node_modules/http-signature": { 1276 | "version": "1.2.0", 1277 | "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", 1278 | "integrity": "sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ==", 1279 | "peer": true, 1280 | "dependencies": { 1281 | "assert-plus": "^1.0.0", 1282 | "jsprim": "^1.2.2", 1283 | "sshpk": "^1.7.0" 1284 | }, 1285 | "engines": { 1286 | "node": ">=0.8", 1287 | "npm": ">=1.3.7" 1288 | } 1289 | }, 1290 | "node_modules/request/node_modules/jsprim": { 1291 | "version": "1.4.2", 1292 | "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz", 1293 | "integrity": "sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==", 1294 | "peer": true, 1295 | "dependencies": { 1296 | "assert-plus": "1.0.0", 1297 | "extsprintf": "1.3.0", 1298 | "json-schema": "0.4.0", 1299 | "verror": "1.10.0" 1300 | }, 1301 | "engines": { 1302 | "node": ">=0.6.0" 1303 | } 1304 | }, 1305 | "node_modules/request/node_modules/qs": { 1306 | "version": "6.5.3", 1307 | "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz", 1308 | "integrity": "sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==", 1309 | "peer": true, 1310 | "engines": { 1311 | "node": ">=0.6" 1312 | } 1313 | }, 1314 | "node_modules/request/node_modules/tough-cookie": { 1315 | "version": "2.5.0", 1316 | "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", 1317 | "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", 1318 | "peer": true, 1319 | "dependencies": { 1320 | "psl": "^1.1.28", 1321 | "punycode": "^2.1.1" 1322 | }, 1323 | "engines": { 1324 | "node": ">=0.8" 1325 | } 1326 | }, 1327 | "node_modules/request/node_modules/uuid": { 1328 | "version": "3.4.0", 1329 | "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", 1330 | "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", 1331 | "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.", 1332 | "peer": true, 1333 | "bin": { 1334 | "uuid": "bin/uuid" 1335 | } 1336 | }, 1337 | "node_modules/requires-port": { 1338 | "version": "1.0.0", 1339 | "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", 1340 | "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==" 1341 | }, 1342 | "node_modules/safe-array-concat": { 1343 | "version": "1.1.2", 1344 | "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.2.tgz", 1345 | "integrity": "sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==", 1346 | "dependencies": { 1347 | "call-bind": "^1.0.7", 1348 | "get-intrinsic": "^1.2.4", 1349 | "has-symbols": "^1.0.3", 1350 | "isarray": "^2.0.5" 1351 | }, 1352 | "engines": { 1353 | "node": ">=0.4" 1354 | }, 1355 | "funding": { 1356 | "url": "https://github.com/sponsors/ljharb" 1357 | } 1358 | }, 1359 | "node_modules/safe-array-concat/node_modules/isarray": { 1360 | "version": "2.0.5", 1361 | "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", 1362 | "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==" 1363 | }, 1364 | "node_modules/safe-buffer": { 1365 | "version": "5.2.1", 1366 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", 1367 | "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", 1368 | "funding": [ 1369 | { 1370 | "type": "github", 1371 | "url": "https://github.com/sponsors/feross" 1372 | }, 1373 | { 1374 | "type": "patreon", 1375 | "url": "https://www.patreon.com/feross" 1376 | }, 1377 | { 1378 | "type": "consulting", 1379 | "url": "https://feross.org/support" 1380 | } 1381 | ] 1382 | }, 1383 | "node_modules/safe-regex-test": { 1384 | "version": "1.0.3", 1385 | "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.3.tgz", 1386 | "integrity": "sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==", 1387 | "dependencies": { 1388 | "call-bind": "^1.0.6", 1389 | "es-errors": "^1.3.0", 1390 | "is-regex": "^1.1.4" 1391 | }, 1392 | "engines": { 1393 | "node": ">= 0.4" 1394 | }, 1395 | "funding": { 1396 | "url": "https://github.com/sponsors/ljharb" 1397 | } 1398 | }, 1399 | "node_modules/safer-buffer": { 1400 | "version": "2.1.2", 1401 | "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", 1402 | "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" 1403 | }, 1404 | "node_modules/set-function-length": { 1405 | "version": "1.2.2", 1406 | "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", 1407 | "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", 1408 | "dependencies": { 1409 | "define-data-property": "^1.1.4", 1410 | "es-errors": "^1.3.0", 1411 | "function-bind": "^1.1.2", 1412 | "get-intrinsic": "^1.2.4", 1413 | "gopd": "^1.0.1", 1414 | "has-property-descriptors": "^1.0.2" 1415 | }, 1416 | "engines": { 1417 | "node": ">= 0.4" 1418 | } 1419 | }, 1420 | "node_modules/set-function-name": { 1421 | "version": "2.0.2", 1422 | "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz", 1423 | "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==", 1424 | "dependencies": { 1425 | "define-data-property": "^1.1.4", 1426 | "es-errors": "^1.3.0", 1427 | "functions-have-names": "^1.2.3", 1428 | "has-property-descriptors": "^1.0.2" 1429 | }, 1430 | "engines": { 1431 | "node": ">= 0.4" 1432 | } 1433 | }, 1434 | "node_modules/side-channel": { 1435 | "version": "1.0.6", 1436 | "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz", 1437 | "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==", 1438 | "dependencies": { 1439 | "call-bind": "^1.0.7", 1440 | "es-errors": "^1.3.0", 1441 | "get-intrinsic": "^1.2.4", 1442 | "object-inspect": "^1.13.1" 1443 | }, 1444 | "engines": { 1445 | "node": ">= 0.4" 1446 | }, 1447 | "funding": { 1448 | "url": "https://github.com/sponsors/ljharb" 1449 | } 1450 | }, 1451 | "node_modules/sshpk": { 1452 | "version": "1.18.0", 1453 | "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.18.0.tgz", 1454 | "integrity": "sha512-2p2KJZTSqQ/I3+HX42EpYOa2l3f8Erv8MWKsy2I9uf4wA7yFIkXRffYdsx86y6z4vHtV8u7g+pPlr8/4ouAxsQ==", 1455 | "dependencies": { 1456 | "asn1": "~0.2.3", 1457 | "assert-plus": "^1.0.0", 1458 | "bcrypt-pbkdf": "^1.0.0", 1459 | "dashdash": "^1.12.0", 1460 | "ecc-jsbn": "~0.1.1", 1461 | "getpass": "^0.1.1", 1462 | "jsbn": "~0.1.0", 1463 | "safer-buffer": "^2.0.2", 1464 | "tweetnacl": "~0.14.0" 1465 | }, 1466 | "bin": { 1467 | "sshpk-conv": "bin/sshpk-conv", 1468 | "sshpk-sign": "bin/sshpk-sign", 1469 | "sshpk-verify": "bin/sshpk-verify" 1470 | }, 1471 | "engines": { 1472 | "node": ">=0.10.0" 1473 | } 1474 | }, 1475 | "node_modules/stealthy-require": { 1476 | "version": "1.1.1", 1477 | "resolved": "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz", 1478 | "integrity": "sha512-ZnWpYnYugiOVEY5GkcuJK1io5V8QmNYChG62gSit9pQVGErXtrKuPC55ITaVSukmMta5qpMU7vqLt2Lnni4f/g==", 1479 | "engines": { 1480 | "node": ">=0.10.0" 1481 | } 1482 | }, 1483 | "node_modules/string_decoder": { 1484 | "version": "1.1.1", 1485 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", 1486 | "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", 1487 | "dependencies": { 1488 | "safe-buffer": "~5.1.0" 1489 | } 1490 | }, 1491 | "node_modules/string_decoder/node_modules/safe-buffer": { 1492 | "version": "5.1.2", 1493 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", 1494 | "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" 1495 | }, 1496 | "node_modules/string.prototype.trim": { 1497 | "version": "1.2.9", 1498 | "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.9.tgz", 1499 | "integrity": "sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==", 1500 | "dependencies": { 1501 | "call-bind": "^1.0.7", 1502 | "define-properties": "^1.2.1", 1503 | "es-abstract": "^1.23.0", 1504 | "es-object-atoms": "^1.0.0" 1505 | }, 1506 | "engines": { 1507 | "node": ">= 0.4" 1508 | }, 1509 | "funding": { 1510 | "url": "https://github.com/sponsors/ljharb" 1511 | } 1512 | }, 1513 | "node_modules/string.prototype.trimend": { 1514 | "version": "1.0.8", 1515 | "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.8.tgz", 1516 | "integrity": "sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==", 1517 | "dependencies": { 1518 | "call-bind": "^1.0.7", 1519 | "define-properties": "^1.2.1", 1520 | "es-object-atoms": "^1.0.0" 1521 | }, 1522 | "funding": { 1523 | "url": "https://github.com/sponsors/ljharb" 1524 | } 1525 | }, 1526 | "node_modules/string.prototype.trimstart": { 1527 | "version": "1.0.8", 1528 | "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz", 1529 | "integrity": "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==", 1530 | "dependencies": { 1531 | "call-bind": "^1.0.7", 1532 | "define-properties": "^1.2.1", 1533 | "es-object-atoms": "^1.0.0" 1534 | }, 1535 | "engines": { 1536 | "node": ">= 0.4" 1537 | }, 1538 | "funding": { 1539 | "url": "https://github.com/sponsors/ljharb" 1540 | } 1541 | }, 1542 | "node_modules/tough-cookie": { 1543 | "version": "4.1.3", 1544 | "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.3.tgz", 1545 | "integrity": "sha512-aX/y5pVRkfRnfmuX+OdbSdXvPe6ieKX/G2s7e98f4poJHnqH3281gDPm/metm6E/WRamfx7WC4HUqkWHfQHprw==", 1546 | "dependencies": { 1547 | "psl": "^1.1.33", 1548 | "punycode": "^2.1.1", 1549 | "universalify": "^0.2.0", 1550 | "url-parse": "^1.5.3" 1551 | }, 1552 | "engines": { 1553 | "node": ">=6" 1554 | } 1555 | }, 1556 | "node_modules/tunnel-agent": { 1557 | "version": "0.6.0", 1558 | "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", 1559 | "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", 1560 | "dependencies": { 1561 | "safe-buffer": "^5.0.1" 1562 | }, 1563 | "engines": { 1564 | "node": "*" 1565 | } 1566 | }, 1567 | "node_modules/tweetnacl": { 1568 | "version": "0.14.5", 1569 | "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", 1570 | "integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==" 1571 | }, 1572 | "node_modules/typed-array-buffer": { 1573 | "version": "1.0.2", 1574 | "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.2.tgz", 1575 | "integrity": "sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==", 1576 | "dependencies": { 1577 | "call-bind": "^1.0.7", 1578 | "es-errors": "^1.3.0", 1579 | "is-typed-array": "^1.1.13" 1580 | }, 1581 | "engines": { 1582 | "node": ">= 0.4" 1583 | } 1584 | }, 1585 | "node_modules/typed-array-byte-length": { 1586 | "version": "1.0.1", 1587 | "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.1.tgz", 1588 | "integrity": "sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==", 1589 | "dependencies": { 1590 | "call-bind": "^1.0.7", 1591 | "for-each": "^0.3.3", 1592 | "gopd": "^1.0.1", 1593 | "has-proto": "^1.0.3", 1594 | "is-typed-array": "^1.1.13" 1595 | }, 1596 | "engines": { 1597 | "node": ">= 0.4" 1598 | }, 1599 | "funding": { 1600 | "url": "https://github.com/sponsors/ljharb" 1601 | } 1602 | }, 1603 | "node_modules/typed-array-byte-offset": { 1604 | "version": "1.0.2", 1605 | "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.2.tgz", 1606 | "integrity": "sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==", 1607 | "dependencies": { 1608 | "available-typed-arrays": "^1.0.7", 1609 | "call-bind": "^1.0.7", 1610 | "for-each": "^0.3.3", 1611 | "gopd": "^1.0.1", 1612 | "has-proto": "^1.0.3", 1613 | "is-typed-array": "^1.1.13" 1614 | }, 1615 | "engines": { 1616 | "node": ">= 0.4" 1617 | }, 1618 | "funding": { 1619 | "url": "https://github.com/sponsors/ljharb" 1620 | } 1621 | }, 1622 | "node_modules/typed-array-length": { 1623 | "version": "1.0.6", 1624 | "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.6.tgz", 1625 | "integrity": "sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g==", 1626 | "dependencies": { 1627 | "call-bind": "^1.0.7", 1628 | "for-each": "^0.3.3", 1629 | "gopd": "^1.0.1", 1630 | "has-proto": "^1.0.3", 1631 | "is-typed-array": "^1.1.13", 1632 | "possible-typed-array-names": "^1.0.0" 1633 | }, 1634 | "engines": { 1635 | "node": ">= 0.4" 1636 | }, 1637 | "funding": { 1638 | "url": "https://github.com/sponsors/ljharb" 1639 | } 1640 | }, 1641 | "node_modules/unbox-primitive": { 1642 | "version": "1.0.2", 1643 | "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", 1644 | "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", 1645 | "dependencies": { 1646 | "call-bind": "^1.0.2", 1647 | "has-bigints": "^1.0.2", 1648 | "has-symbols": "^1.0.3", 1649 | "which-boxed-primitive": "^1.0.2" 1650 | }, 1651 | "funding": { 1652 | "url": "https://github.com/sponsors/ljharb" 1653 | } 1654 | }, 1655 | "node_modules/universalify": { 1656 | "version": "0.2.0", 1657 | "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz", 1658 | "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==", 1659 | "engines": { 1660 | "node": ">= 4.0.0" 1661 | } 1662 | }, 1663 | "node_modules/uri-js": { 1664 | "version": "4.4.1", 1665 | "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", 1666 | "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", 1667 | "peer": true, 1668 | "dependencies": { 1669 | "punycode": "^2.1.0" 1670 | } 1671 | }, 1672 | "node_modules/url-parse": { 1673 | "version": "1.5.10", 1674 | "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", 1675 | "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", 1676 | "dependencies": { 1677 | "querystringify": "^2.1.1", 1678 | "requires-port": "^1.0.0" 1679 | } 1680 | }, 1681 | "node_modules/util-deprecate": { 1682 | "version": "1.0.2", 1683 | "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", 1684 | "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" 1685 | }, 1686 | "node_modules/uuid": { 1687 | "version": "8.3.2", 1688 | "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", 1689 | "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", 1690 | "bin": { 1691 | "uuid": "dist/bin/uuid" 1692 | } 1693 | }, 1694 | "node_modules/verror": { 1695 | "version": "1.10.0", 1696 | "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", 1697 | "integrity": "sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==", 1698 | "engines": [ 1699 | "node >=0.6.0" 1700 | ], 1701 | "dependencies": { 1702 | "assert-plus": "^1.0.0", 1703 | "core-util-is": "1.0.2", 1704 | "extsprintf": "^1.2.0" 1705 | } 1706 | }, 1707 | "node_modules/verror/node_modules/core-util-is": { 1708 | "version": "1.0.2", 1709 | "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", 1710 | "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==" 1711 | }, 1712 | "node_modules/which-boxed-primitive": { 1713 | "version": "1.0.2", 1714 | "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", 1715 | "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", 1716 | "dependencies": { 1717 | "is-bigint": "^1.0.1", 1718 | "is-boolean-object": "^1.1.0", 1719 | "is-number-object": "^1.0.4", 1720 | "is-string": "^1.0.5", 1721 | "is-symbol": "^1.0.3" 1722 | }, 1723 | "funding": { 1724 | "url": "https://github.com/sponsors/ljharb" 1725 | } 1726 | }, 1727 | "node_modules/which-typed-array": { 1728 | "version": "1.1.15", 1729 | "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.15.tgz", 1730 | "integrity": "sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==", 1731 | "dependencies": { 1732 | "available-typed-arrays": "^1.0.7", 1733 | "call-bind": "^1.0.7", 1734 | "for-each": "^0.3.3", 1735 | "gopd": "^1.0.1", 1736 | "has-tostringtag": "^1.0.2" 1737 | }, 1738 | "engines": { 1739 | "node": ">= 0.4" 1740 | }, 1741 | "funding": { 1742 | "url": "https://github.com/sponsors/ljharb" 1743 | } 1744 | }, 1745 | "node_modules/wrappy": { 1746 | "version": "1.0.2", 1747 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", 1748 | "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" 1749 | } 1750 | } 1751 | } 1752 | -------------------------------------------------------------------------------- /bot-get-update/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "bot-get-update", 3 | "version": "1.0.0", 4 | "description": "", 5 | "main": "index.js", 6 | "scripts": { 7 | "test": "echo \"Error: no test specified\" && exit 1" 8 | }, 9 | "author": "", 10 | "license": "MIT", 11 | "dependencies": { 12 | "nanoid": "^5.0.7", 13 | "node-telegram-bot-api": "^0.65.1" 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /db.sql: -------------------------------------------------------------------------------- 1 | PRAGMA defer_foreign_keys=TRUE; 2 | CREATE TABLE [tg_user] ("user_id" integer,"first_name" text,"last_name" text,"data" text,"automated_account" integer DEFAULT 0); 3 | CREATE TABLE [tg_waitlist] ("request_id" text PRIMARY KEY,"user_id" integer,"group_id" integer,"join_date" integer,"status" text, "code" TEXT, "bot_message_id" INTEGER); 4 | -------------------------------------------------------------------------------- /package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "svelte-telegram-captcha-bot", 3 | "version": "0.0.1", 4 | "lockfileVersion": 3, 5 | "requires": true, 6 | "packages": { 7 | "": { 8 | "name": "svelte-telegram-captcha-bot", 9 | "version": "0.0.1", 10 | "dependencies": { 11 | "@baselime/edge-logger": "^0.2.2", 12 | "@opentelemetry/api": "^1.8.0", 13 | "@telegram-auth/server": "^1.0.3", 14 | "ascii-text-generator": "^1.0.5", 15 | "is-in-subnet": "^4.0.1", 16 | "nanoid": "^5.0.7" 17 | }, 18 | "devDependencies": { 19 | "@sveltejs/adapter-auto": "^3.0.0", 20 | "@sveltejs/adapter-cloudflare": "^4.4.0", 21 | "@sveltejs/kit": "^2.0.0", 22 | "@sveltejs/vite-plugin-svelte": "^3.0.0", 23 | "prettier": "^3.1.1", 24 | "prettier-plugin-svelte": "^3.1.2", 25 | "svelte": "^4.2.7", 26 | "vite": "^5.0.3", 27 | "wrangler": "^3.50.0" 28 | } 29 | }, 30 | "node_modules/@ampproject/remapping": { 31 | "version": "2.3.0", 32 | "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", 33 | "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==", 34 | "dev": true, 35 | "dependencies": { 36 | "@jridgewell/gen-mapping": "^0.3.5", 37 | "@jridgewell/trace-mapping": "^0.3.24" 38 | }, 39 | "engines": { 40 | "node": ">=6.0.0" 41 | } 42 | }, 43 | "node_modules/@baselime/edge-logger": { 44 | "version": "0.2.2", 45 | "resolved": "https://registry.npmjs.org/@baselime/edge-logger/-/edge-logger-0.2.2.tgz", 46 | "integrity": "sha512-7i50PawqZDLFMzWcFKOoWZeb7AcuHdDwiiiXCUdFSjB3NkCJKO4ZxevUXFR3yL82ROSvrNDz83NEDpxyBx78eA==" 47 | }, 48 | "node_modules/@cloudflare/kv-asset-handler": { 49 | "version": "0.3.1", 50 | "resolved": "https://registry.npmjs.org/@cloudflare/kv-asset-handler/-/kv-asset-handler-0.3.1.tgz", 51 | "integrity": "sha512-lKN2XCfKCmpKb86a1tl4GIwsJYDy9TGuwjhDELLmpKygQhw8X2xR4dusgpC5Tg7q1pB96Eb0rBo81kxSILQMwA==", 52 | "dev": true, 53 | "dependencies": { 54 | "mime": "^3.0.0" 55 | } 56 | }, 57 | "node_modules/@cloudflare/workerd-darwin-64": { 58 | "version": "1.20240405.0", 59 | "resolved": "https://registry.npmjs.org/@cloudflare/workerd-darwin-64/-/workerd-darwin-64-1.20240405.0.tgz", 60 | "integrity": "sha512-ut8kwpHmlz9dNSjoov6v1b6jS50J46Mj9QcMA0t1Hne36InaQk/qqPSd12fN5p2GesZ9OOBJvBdDsTblVdyJ1w==", 61 | "cpu": [ 62 | "x64" 63 | ], 64 | "dev": true, 65 | "optional": true, 66 | "os": [ 67 | "darwin" 68 | ], 69 | "engines": { 70 | "node": ">=16" 71 | } 72 | }, 73 | "node_modules/@cloudflare/workerd-darwin-arm64": { 74 | "version": "1.20240405.0", 75 | "resolved": "https://registry.npmjs.org/@cloudflare/workerd-darwin-arm64/-/workerd-darwin-arm64-1.20240405.0.tgz", 76 | "integrity": "sha512-x3A3Ym+J2DH1uYnw0aedeKOTnUebEo312+Aladv7bFri97pjRJcqVbYhMtOHLkHjwYn7bpKSY2eL5iM+0XT29A==", 77 | "cpu": [ 78 | "arm64" 79 | ], 80 | "dev": true, 81 | "optional": true, 82 | "os": [ 83 | "darwin" 84 | ], 85 | "engines": { 86 | "node": ">=16" 87 | } 88 | }, 89 | "node_modules/@cloudflare/workerd-linux-64": { 90 | "version": "1.20240405.0", 91 | "resolved": "https://registry.npmjs.org/@cloudflare/workerd-linux-64/-/workerd-linux-64-1.20240405.0.tgz", 92 | "integrity": "sha512-3tYpfjtxEQ0R30Pna7OF3Bz0CTx30hc0QNtH61KnkvXtaeYMkWutSKQKXIuVlPa/7v1MHp+8ViBXMflmS7HquA==", 93 | "cpu": [ 94 | "x64" 95 | ], 96 | "dev": true, 97 | "optional": true, 98 | "os": [ 99 | "linux" 100 | ], 101 | "engines": { 102 | "node": ">=16" 103 | } 104 | }, 105 | "node_modules/@cloudflare/workerd-linux-arm64": { 106 | "version": "1.20240405.0", 107 | "resolved": "https://registry.npmjs.org/@cloudflare/workerd-linux-arm64/-/workerd-linux-arm64-1.20240405.0.tgz", 108 | "integrity": "sha512-NpKZlvmdgcX/m4tP5zM91AfJpZrue2/GRA+Sl3szxAivu2uE5jDVf5SS9dzqzCVfPrdhylqH7yeL4U/cafFNOg==", 109 | "cpu": [ 110 | "arm64" 111 | ], 112 | "dev": true, 113 | "optional": true, 114 | "os": [ 115 | "linux" 116 | ], 117 | "engines": { 118 | "node": ">=16" 119 | } 120 | }, 121 | "node_modules/@cloudflare/workerd-windows-64": { 122 | "version": "1.20240405.0", 123 | "resolved": "https://registry.npmjs.org/@cloudflare/workerd-windows-64/-/workerd-windows-64-1.20240405.0.tgz", 124 | "integrity": "sha512-REBeJMxvUCjwuEVzSSIBtzAyM69QjToab8qBst0S9vdih+9DObym4dw8CevdBQhDbFrHiyL9E6pAZpLPNHVgCw==", 125 | "cpu": [ 126 | "x64" 127 | ], 128 | "dev": true, 129 | "optional": true, 130 | "os": [ 131 | "win32" 132 | ], 133 | "engines": { 134 | "node": ">=16" 135 | } 136 | }, 137 | "node_modules/@cloudflare/workers-types": { 138 | "version": "4.20240405.0", 139 | "resolved": "https://registry.npmjs.org/@cloudflare/workers-types/-/workers-types-4.20240405.0.tgz", 140 | "integrity": "sha512-sEVOhyOgXUwfLkgHqbLZa/sfkSYrh7/zLmI6EZNibPaVPvAnAcItbNNl3SAlLyLKuwf8m4wAIAgu9meKWCvXjg==", 141 | "dev": true 142 | }, 143 | "node_modules/@cspotcode/source-map-support": { 144 | "version": "0.8.1", 145 | "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", 146 | "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", 147 | "dev": true, 148 | "dependencies": { 149 | "@jridgewell/trace-mapping": "0.3.9" 150 | }, 151 | "engines": { 152 | "node": ">=12" 153 | } 154 | }, 155 | "node_modules/@cspotcode/source-map-support/node_modules/@jridgewell/trace-mapping": { 156 | "version": "0.3.9", 157 | "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", 158 | "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", 159 | "dev": true, 160 | "dependencies": { 161 | "@jridgewell/resolve-uri": "^3.0.3", 162 | "@jridgewell/sourcemap-codec": "^1.4.10" 163 | } 164 | }, 165 | "node_modules/@esbuild-plugins/node-globals-polyfill": { 166 | "version": "0.2.3", 167 | "resolved": "https://registry.npmjs.org/@esbuild-plugins/node-globals-polyfill/-/node-globals-polyfill-0.2.3.tgz", 168 | "integrity": "sha512-r3MIryXDeXDOZh7ih1l/yE9ZLORCd5e8vWg02azWRGj5SPTuoh69A2AIyn0Z31V/kHBfZ4HgWJ+OK3GTTwLmnw==", 169 | "dev": true, 170 | "peerDependencies": { 171 | "esbuild": "*" 172 | } 173 | }, 174 | "node_modules/@esbuild-plugins/node-modules-polyfill": { 175 | "version": "0.2.2", 176 | "resolved": "https://registry.npmjs.org/@esbuild-plugins/node-modules-polyfill/-/node-modules-polyfill-0.2.2.tgz", 177 | "integrity": "sha512-LXV7QsWJxRuMYvKbiznh+U1ilIop3g2TeKRzUxOG5X3YITc8JyyTa90BmLwqqv0YnX4v32CSlG+vsziZp9dMvA==", 178 | "dev": true, 179 | "dependencies": { 180 | "escape-string-regexp": "^4.0.0", 181 | "rollup-plugin-node-polyfills": "^0.2.1" 182 | }, 183 | "peerDependencies": { 184 | "esbuild": "*" 185 | } 186 | }, 187 | "node_modules/@esbuild/aix-ppc64": { 188 | "version": "0.20.2", 189 | "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.20.2.tgz", 190 | "integrity": "sha512-D+EBOJHXdNZcLJRBkhENNG8Wji2kgc9AZ9KiPr1JuZjsNtyHzrsfLRrY0tk2H2aoFu6RANO1y1iPPUCDYWkb5g==", 191 | "cpu": [ 192 | "ppc64" 193 | ], 194 | "dev": true, 195 | "optional": true, 196 | "os": [ 197 | "aix" 198 | ], 199 | "engines": { 200 | "node": ">=12" 201 | } 202 | }, 203 | "node_modules/@esbuild/android-arm": { 204 | "version": "0.20.2", 205 | "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.20.2.tgz", 206 | "integrity": "sha512-t98Ra6pw2VaDhqNWO2Oph2LXbz/EJcnLmKLGBJwEwXX/JAN83Fym1rU8l0JUWK6HkIbWONCSSatf4sf2NBRx/w==", 207 | "cpu": [ 208 | "arm" 209 | ], 210 | "dev": true, 211 | "optional": true, 212 | "os": [ 213 | "android" 214 | ], 215 | "engines": { 216 | "node": ">=12" 217 | } 218 | }, 219 | "node_modules/@esbuild/android-arm64": { 220 | "version": "0.20.2", 221 | "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.20.2.tgz", 222 | "integrity": "sha512-mRzjLacRtl/tWU0SvD8lUEwb61yP9cqQo6noDZP/O8VkwafSYwZ4yWy24kan8jE/IMERpYncRt2dw438LP3Xmg==", 223 | "cpu": [ 224 | "arm64" 225 | ], 226 | "dev": true, 227 | "optional": true, 228 | "os": [ 229 | "android" 230 | ], 231 | "engines": { 232 | "node": ">=12" 233 | } 234 | }, 235 | "node_modules/@esbuild/android-x64": { 236 | "version": "0.20.2", 237 | "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.20.2.tgz", 238 | "integrity": "sha512-btzExgV+/lMGDDa194CcUQm53ncxzeBrWJcncOBxuC6ndBkKxnHdFJn86mCIgTELsooUmwUm9FkhSp5HYu00Rg==", 239 | "cpu": [ 240 | "x64" 241 | ], 242 | "dev": true, 243 | "optional": true, 244 | "os": [ 245 | "android" 246 | ], 247 | "engines": { 248 | "node": ">=12" 249 | } 250 | }, 251 | "node_modules/@esbuild/darwin-arm64": { 252 | "version": "0.20.2", 253 | "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.20.2.tgz", 254 | "integrity": "sha512-4J6IRT+10J3aJH3l1yzEg9y3wkTDgDk7TSDFX+wKFiWjqWp/iCfLIYzGyasx9l0SAFPT1HwSCR+0w/h1ES/MjA==", 255 | "cpu": [ 256 | "arm64" 257 | ], 258 | "dev": true, 259 | "optional": true, 260 | "os": [ 261 | "darwin" 262 | ], 263 | "engines": { 264 | "node": ">=12" 265 | } 266 | }, 267 | "node_modules/@esbuild/darwin-x64": { 268 | "version": "0.20.2", 269 | "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.20.2.tgz", 270 | "integrity": "sha512-tBcXp9KNphnNH0dfhv8KYkZhjc+H3XBkF5DKtswJblV7KlT9EI2+jeA8DgBjp908WEuYll6pF+UStUCfEpdysA==", 271 | "cpu": [ 272 | "x64" 273 | ], 274 | "dev": true, 275 | "optional": true, 276 | "os": [ 277 | "darwin" 278 | ], 279 | "engines": { 280 | "node": ">=12" 281 | } 282 | }, 283 | "node_modules/@esbuild/freebsd-arm64": { 284 | "version": "0.20.2", 285 | "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.20.2.tgz", 286 | "integrity": "sha512-d3qI41G4SuLiCGCFGUrKsSeTXyWG6yem1KcGZVS+3FYlYhtNoNgYrWcvkOoaqMhwXSMrZRl69ArHsGJ9mYdbbw==", 287 | "cpu": [ 288 | "arm64" 289 | ], 290 | "dev": true, 291 | "optional": true, 292 | "os": [ 293 | "freebsd" 294 | ], 295 | "engines": { 296 | "node": ">=12" 297 | } 298 | }, 299 | "node_modules/@esbuild/freebsd-x64": { 300 | "version": "0.20.2", 301 | "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.20.2.tgz", 302 | "integrity": "sha512-d+DipyvHRuqEeM5zDivKV1KuXn9WeRX6vqSqIDgwIfPQtwMP4jaDsQsDncjTDDsExT4lR/91OLjRo8bmC1e+Cw==", 303 | "cpu": [ 304 | "x64" 305 | ], 306 | "dev": true, 307 | "optional": true, 308 | "os": [ 309 | "freebsd" 310 | ], 311 | "engines": { 312 | "node": ">=12" 313 | } 314 | }, 315 | "node_modules/@esbuild/linux-arm": { 316 | "version": "0.20.2", 317 | "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.20.2.tgz", 318 | "integrity": "sha512-VhLPeR8HTMPccbuWWcEUD1Az68TqaTYyj6nfE4QByZIQEQVWBB8vup8PpR7y1QHL3CpcF6xd5WVBU/+SBEvGTg==", 319 | "cpu": [ 320 | "arm" 321 | ], 322 | "dev": true, 323 | "optional": true, 324 | "os": [ 325 | "linux" 326 | ], 327 | "engines": { 328 | "node": ">=12" 329 | } 330 | }, 331 | "node_modules/@esbuild/linux-arm64": { 332 | "version": "0.20.2", 333 | "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.20.2.tgz", 334 | "integrity": "sha512-9pb6rBjGvTFNira2FLIWqDk/uaf42sSyLE8j1rnUpuzsODBq7FvpwHYZxQ/It/8b+QOS1RYfqgGFNLRI+qlq2A==", 335 | "cpu": [ 336 | "arm64" 337 | ], 338 | "dev": true, 339 | "optional": true, 340 | "os": [ 341 | "linux" 342 | ], 343 | "engines": { 344 | "node": ">=12" 345 | } 346 | }, 347 | "node_modules/@esbuild/linux-ia32": { 348 | "version": "0.20.2", 349 | "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.20.2.tgz", 350 | "integrity": "sha512-o10utieEkNPFDZFQm9CoP7Tvb33UutoJqg3qKf1PWVeeJhJw0Q347PxMvBgVVFgouYLGIhFYG0UGdBumROyiig==", 351 | "cpu": [ 352 | "ia32" 353 | ], 354 | "dev": true, 355 | "optional": true, 356 | "os": [ 357 | "linux" 358 | ], 359 | "engines": { 360 | "node": ">=12" 361 | } 362 | }, 363 | "node_modules/@esbuild/linux-loong64": { 364 | "version": "0.20.2", 365 | "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.20.2.tgz", 366 | "integrity": "sha512-PR7sp6R/UC4CFVomVINKJ80pMFlfDfMQMYynX7t1tNTeivQ6XdX5r2XovMmha/VjR1YN/HgHWsVcTRIMkymrgQ==", 367 | "cpu": [ 368 | "loong64" 369 | ], 370 | "dev": true, 371 | "optional": true, 372 | "os": [ 373 | "linux" 374 | ], 375 | "engines": { 376 | "node": ">=12" 377 | } 378 | }, 379 | "node_modules/@esbuild/linux-mips64el": { 380 | "version": "0.20.2", 381 | "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.20.2.tgz", 382 | "integrity": "sha512-4BlTqeutE/KnOiTG5Y6Sb/Hw6hsBOZapOVF6njAESHInhlQAghVVZL1ZpIctBOoTFbQyGW+LsVYZ8lSSB3wkjA==", 383 | "cpu": [ 384 | "mips64el" 385 | ], 386 | "dev": true, 387 | "optional": true, 388 | "os": [ 389 | "linux" 390 | ], 391 | "engines": { 392 | "node": ">=12" 393 | } 394 | }, 395 | "node_modules/@esbuild/linux-ppc64": { 396 | "version": "0.20.2", 397 | "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.20.2.tgz", 398 | "integrity": "sha512-rD3KsaDprDcfajSKdn25ooz5J5/fWBylaaXkuotBDGnMnDP1Uv5DLAN/45qfnf3JDYyJv/ytGHQaziHUdyzaAg==", 399 | "cpu": [ 400 | "ppc64" 401 | ], 402 | "dev": true, 403 | "optional": true, 404 | "os": [ 405 | "linux" 406 | ], 407 | "engines": { 408 | "node": ">=12" 409 | } 410 | }, 411 | "node_modules/@esbuild/linux-riscv64": { 412 | "version": "0.20.2", 413 | "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.20.2.tgz", 414 | "integrity": "sha512-snwmBKacKmwTMmhLlz/3aH1Q9T8v45bKYGE3j26TsaOVtjIag4wLfWSiZykXzXuE1kbCE+zJRmwp+ZbIHinnVg==", 415 | "cpu": [ 416 | "riscv64" 417 | ], 418 | "dev": true, 419 | "optional": true, 420 | "os": [ 421 | "linux" 422 | ], 423 | "engines": { 424 | "node": ">=12" 425 | } 426 | }, 427 | "node_modules/@esbuild/linux-s390x": { 428 | "version": "0.20.2", 429 | "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.20.2.tgz", 430 | "integrity": "sha512-wcWISOobRWNm3cezm5HOZcYz1sKoHLd8VL1dl309DiixxVFoFe/o8HnwuIwn6sXre88Nwj+VwZUvJf4AFxkyrQ==", 431 | "cpu": [ 432 | "s390x" 433 | ], 434 | "dev": true, 435 | "optional": true, 436 | "os": [ 437 | "linux" 438 | ], 439 | "engines": { 440 | "node": ">=12" 441 | } 442 | }, 443 | "node_modules/@esbuild/linux-x64": { 444 | "version": "0.20.2", 445 | "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.20.2.tgz", 446 | "integrity": "sha512-1MdwI6OOTsfQfek8sLwgyjOXAu+wKhLEoaOLTjbijk6E2WONYpH9ZU2mNtR+lZ2B4uwr+usqGuVfFT9tMtGvGw==", 447 | "cpu": [ 448 | "x64" 449 | ], 450 | "dev": true, 451 | "optional": true, 452 | "os": [ 453 | "linux" 454 | ], 455 | "engines": { 456 | "node": ">=12" 457 | } 458 | }, 459 | "node_modules/@esbuild/netbsd-x64": { 460 | "version": "0.20.2", 461 | "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.20.2.tgz", 462 | "integrity": "sha512-K8/DhBxcVQkzYc43yJXDSyjlFeHQJBiowJ0uVL6Tor3jGQfSGHNNJcWxNbOI8v5k82prYqzPuwkzHt3J1T1iZQ==", 463 | "cpu": [ 464 | "x64" 465 | ], 466 | "dev": true, 467 | "optional": true, 468 | "os": [ 469 | "netbsd" 470 | ], 471 | "engines": { 472 | "node": ">=12" 473 | } 474 | }, 475 | "node_modules/@esbuild/openbsd-x64": { 476 | "version": "0.20.2", 477 | "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.20.2.tgz", 478 | "integrity": "sha512-eMpKlV0SThJmmJgiVyN9jTPJ2VBPquf6Kt/nAoo6DgHAoN57K15ZghiHaMvqjCye/uU4X5u3YSMgVBI1h3vKrQ==", 479 | "cpu": [ 480 | "x64" 481 | ], 482 | "dev": true, 483 | "optional": true, 484 | "os": [ 485 | "openbsd" 486 | ], 487 | "engines": { 488 | "node": ">=12" 489 | } 490 | }, 491 | "node_modules/@esbuild/sunos-x64": { 492 | "version": "0.20.2", 493 | "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.20.2.tgz", 494 | "integrity": "sha512-2UyFtRC6cXLyejf/YEld4Hajo7UHILetzE1vsRcGL3earZEW77JxrFjH4Ez2qaTiEfMgAXxfAZCm1fvM/G/o8w==", 495 | "cpu": [ 496 | "x64" 497 | ], 498 | "dev": true, 499 | "optional": true, 500 | "os": [ 501 | "sunos" 502 | ], 503 | "engines": { 504 | "node": ">=12" 505 | } 506 | }, 507 | "node_modules/@esbuild/win32-arm64": { 508 | "version": "0.20.2", 509 | "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.20.2.tgz", 510 | "integrity": "sha512-GRibxoawM9ZCnDxnP3usoUDO9vUkpAxIIZ6GQI+IlVmr5kP3zUq+l17xELTHMWTWzjxa2guPNyrpq1GWmPvcGQ==", 511 | "cpu": [ 512 | "arm64" 513 | ], 514 | "dev": true, 515 | "optional": true, 516 | "os": [ 517 | "win32" 518 | ], 519 | "engines": { 520 | "node": ">=12" 521 | } 522 | }, 523 | "node_modules/@esbuild/win32-ia32": { 524 | "version": "0.20.2", 525 | "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.20.2.tgz", 526 | "integrity": "sha512-HfLOfn9YWmkSKRQqovpnITazdtquEW8/SoHW7pWpuEeguaZI4QnCRW6b+oZTztdBnZOS2hqJ6im/D5cPzBTTlQ==", 527 | "cpu": [ 528 | "ia32" 529 | ], 530 | "dev": true, 531 | "optional": true, 532 | "os": [ 533 | "win32" 534 | ], 535 | "engines": { 536 | "node": ">=12" 537 | } 538 | }, 539 | "node_modules/@esbuild/win32-x64": { 540 | "version": "0.20.2", 541 | "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.20.2.tgz", 542 | "integrity": "sha512-N49X4lJX27+l9jbLKSqZ6bKNjzQvHaT8IIFUy+YIqmXQdjYCToGWwOItDrfby14c78aDd5NHQl29xingXfCdLQ==", 543 | "cpu": [ 544 | "x64" 545 | ], 546 | "dev": true, 547 | "optional": true, 548 | "os": [ 549 | "win32" 550 | ], 551 | "engines": { 552 | "node": ">=12" 553 | } 554 | }, 555 | "node_modules/@fastify/busboy": { 556 | "version": "2.1.1", 557 | "resolved": "https://registry.npmjs.org/@fastify/busboy/-/busboy-2.1.1.tgz", 558 | "integrity": "sha512-vBZP4NlzfOlerQTnba4aqZoMhE/a9HY7HRqoOPaETQcSQuWEIyZMHGfVu6w9wGtGK5fED5qRs2DteVCjOH60sA==", 559 | "dev": true, 560 | "engines": { 561 | "node": ">=14" 562 | } 563 | }, 564 | "node_modules/@jridgewell/gen-mapping": { 565 | "version": "0.3.5", 566 | "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", 567 | "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", 568 | "dev": true, 569 | "dependencies": { 570 | "@jridgewell/set-array": "^1.2.1", 571 | "@jridgewell/sourcemap-codec": "^1.4.10", 572 | "@jridgewell/trace-mapping": "^0.3.24" 573 | }, 574 | "engines": { 575 | "node": ">=6.0.0" 576 | } 577 | }, 578 | "node_modules/@jridgewell/resolve-uri": { 579 | "version": "3.1.2", 580 | "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", 581 | "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", 582 | "dev": true, 583 | "engines": { 584 | "node": ">=6.0.0" 585 | } 586 | }, 587 | "node_modules/@jridgewell/set-array": { 588 | "version": "1.2.1", 589 | "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", 590 | "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", 591 | "dev": true, 592 | "engines": { 593 | "node": ">=6.0.0" 594 | } 595 | }, 596 | "node_modules/@jridgewell/sourcemap-codec": { 597 | "version": "1.4.15", 598 | "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", 599 | "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", 600 | "dev": true 601 | }, 602 | "node_modules/@jridgewell/trace-mapping": { 603 | "version": "0.3.25", 604 | "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", 605 | "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", 606 | "dev": true, 607 | "dependencies": { 608 | "@jridgewell/resolve-uri": "^3.1.0", 609 | "@jridgewell/sourcemap-codec": "^1.4.14" 610 | } 611 | }, 612 | "node_modules/@opentelemetry/api": { 613 | "version": "1.8.0", 614 | "resolved": "https://registry.npmjs.org/@opentelemetry/api/-/api-1.8.0.tgz", 615 | "integrity": "sha512-I/s6F7yKUDdtMsoBWXJe8Qz40Tui5vsuKCWJEWVL+5q9sSWRzzx6v2KeNsOBEwd94j0eWkpWCH4yB6rZg9Mf0w==", 616 | "engines": { 617 | "node": ">=8.0.0" 618 | } 619 | }, 620 | "node_modules/@polka/url": { 621 | "version": "1.0.0-next.25", 622 | "resolved": "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.25.tgz", 623 | "integrity": "sha512-j7P6Rgr3mmtdkeDGTe0E/aYyWEWVtc5yFXtHCRHs28/jptDEWfaVOc5T7cblqy1XKPPfCxJc/8DwQ5YgLOZOVQ==", 624 | "dev": true 625 | }, 626 | "node_modules/@rollup/rollup-android-arm-eabi": { 627 | "version": "4.14.3", 628 | "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.14.3.tgz", 629 | "integrity": "sha512-X9alQ3XM6I9IlSlmC8ddAvMSyG1WuHk5oUnXGw+yUBs3BFoTizmG1La/Gr8fVJvDWAq+zlYTZ9DBgrlKRVY06g==", 630 | "cpu": [ 631 | "arm" 632 | ], 633 | "dev": true, 634 | "optional": true, 635 | "os": [ 636 | "android" 637 | ] 638 | }, 639 | "node_modules/@rollup/rollup-android-arm64": { 640 | "version": "4.14.3", 641 | "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.14.3.tgz", 642 | "integrity": "sha512-eQK5JIi+POhFpzk+LnjKIy4Ks+pwJ+NXmPxOCSvOKSNRPONzKuUvWE+P9JxGZVxrtzm6BAYMaL50FFuPe0oWMQ==", 643 | "cpu": [ 644 | "arm64" 645 | ], 646 | "dev": true, 647 | "optional": true, 648 | "os": [ 649 | "android" 650 | ] 651 | }, 652 | "node_modules/@rollup/rollup-darwin-arm64": { 653 | "version": "4.14.3", 654 | "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.14.3.tgz", 655 | "integrity": "sha512-Od4vE6f6CTT53yM1jgcLqNfItTsLt5zE46fdPaEmeFHvPs5SjZYlLpHrSiHEKR1+HdRfxuzXHjDOIxQyC3ptBA==", 656 | "cpu": [ 657 | "arm64" 658 | ], 659 | "dev": true, 660 | "optional": true, 661 | "os": [ 662 | "darwin" 663 | ] 664 | }, 665 | "node_modules/@rollup/rollup-darwin-x64": { 666 | "version": "4.14.3", 667 | "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.14.3.tgz", 668 | "integrity": "sha512-0IMAO21axJeNIrvS9lSe/PGthc8ZUS+zC53O0VhF5gMxfmcKAP4ESkKOCwEi6u2asUrt4mQv2rjY8QseIEb1aw==", 669 | "cpu": [ 670 | "x64" 671 | ], 672 | "dev": true, 673 | "optional": true, 674 | "os": [ 675 | "darwin" 676 | ] 677 | }, 678 | "node_modules/@rollup/rollup-linux-arm-gnueabihf": { 679 | "version": "4.14.3", 680 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.14.3.tgz", 681 | "integrity": "sha512-ge2DC7tHRHa3caVEoSbPRJpq7azhG+xYsd6u2MEnJ6XzPSzQsTKyXvh6iWjXRf7Rt9ykIUWHtl0Uz3T6yXPpKw==", 682 | "cpu": [ 683 | "arm" 684 | ], 685 | "dev": true, 686 | "optional": true, 687 | "os": [ 688 | "linux" 689 | ] 690 | }, 691 | "node_modules/@rollup/rollup-linux-arm-musleabihf": { 692 | "version": "4.14.3", 693 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.14.3.tgz", 694 | "integrity": "sha512-ljcuiDI4V3ySuc7eSk4lQ9wU8J8r8KrOUvB2U+TtK0TiW6OFDmJ+DdIjjwZHIw9CNxzbmXY39wwpzYuFDwNXuw==", 695 | "cpu": [ 696 | "arm" 697 | ], 698 | "dev": true, 699 | "optional": true, 700 | "os": [ 701 | "linux" 702 | ] 703 | }, 704 | "node_modules/@rollup/rollup-linux-arm64-gnu": { 705 | "version": "4.14.3", 706 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.14.3.tgz", 707 | "integrity": "sha512-Eci2us9VTHm1eSyn5/eEpaC7eP/mp5n46gTRB3Aar3BgSvDQGJZuicyq6TsH4HngNBgVqC5sDYxOzTExSU+NjA==", 708 | "cpu": [ 709 | "arm64" 710 | ], 711 | "dev": true, 712 | "optional": true, 713 | "os": [ 714 | "linux" 715 | ] 716 | }, 717 | "node_modules/@rollup/rollup-linux-arm64-musl": { 718 | "version": "4.14.3", 719 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.14.3.tgz", 720 | "integrity": "sha512-UrBoMLCq4E92/LCqlh+blpqMz5h1tJttPIniwUgOFJyjWI1qrtrDhhpHPuFxULlUmjFHfloWdixtDhSxJt5iKw==", 721 | "cpu": [ 722 | "arm64" 723 | ], 724 | "dev": true, 725 | "optional": true, 726 | "os": [ 727 | "linux" 728 | ] 729 | }, 730 | "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { 731 | "version": "4.14.3", 732 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.14.3.tgz", 733 | "integrity": "sha512-5aRjvsS8q1nWN8AoRfrq5+9IflC3P1leMoy4r2WjXyFqf3qcqsxRCfxtZIV58tCxd+Yv7WELPcO9mY9aeQyAmw==", 734 | "cpu": [ 735 | "ppc64" 736 | ], 737 | "dev": true, 738 | "optional": true, 739 | "os": [ 740 | "linux" 741 | ] 742 | }, 743 | "node_modules/@rollup/rollup-linux-riscv64-gnu": { 744 | "version": "4.14.3", 745 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.14.3.tgz", 746 | "integrity": "sha512-sk/Qh1j2/RJSX7FhEpJn8n0ndxy/uf0kI/9Zc4b1ELhqULVdTfN6HL31CDaTChiBAOgLcsJ1sgVZjWv8XNEsAQ==", 747 | "cpu": [ 748 | "riscv64" 749 | ], 750 | "dev": true, 751 | "optional": true, 752 | "os": [ 753 | "linux" 754 | ] 755 | }, 756 | "node_modules/@rollup/rollup-linux-s390x-gnu": { 757 | "version": "4.14.3", 758 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.14.3.tgz", 759 | "integrity": "sha512-jOO/PEaDitOmY9TgkxF/TQIjXySQe5KVYB57H/8LRP/ux0ZoO8cSHCX17asMSv3ruwslXW/TLBcxyaUzGRHcqg==", 760 | "cpu": [ 761 | "s390x" 762 | ], 763 | "dev": true, 764 | "optional": true, 765 | "os": [ 766 | "linux" 767 | ] 768 | }, 769 | "node_modules/@rollup/rollup-linux-x64-gnu": { 770 | "version": "4.14.3", 771 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.14.3.tgz", 772 | "integrity": "sha512-8ybV4Xjy59xLMyWo3GCfEGqtKV5M5gCSrZlxkPGvEPCGDLNla7v48S662HSGwRd6/2cSneMQWiv+QzcttLrrOA==", 773 | "cpu": [ 774 | "x64" 775 | ], 776 | "dev": true, 777 | "optional": true, 778 | "os": [ 779 | "linux" 780 | ] 781 | }, 782 | "node_modules/@rollup/rollup-linux-x64-musl": { 783 | "version": "4.14.3", 784 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.14.3.tgz", 785 | "integrity": "sha512-s+xf1I46trOY10OqAtZ5Rm6lzHre/UiLA1J2uOhCFXWkbZrJRkYBPO6FhvGfHmdtQ3Bx793MNa7LvoWFAm93bg==", 786 | "cpu": [ 787 | "x64" 788 | ], 789 | "dev": true, 790 | "optional": true, 791 | "os": [ 792 | "linux" 793 | ] 794 | }, 795 | "node_modules/@rollup/rollup-win32-arm64-msvc": { 796 | "version": "4.14.3", 797 | "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.14.3.tgz", 798 | "integrity": "sha512-+4h2WrGOYsOumDQ5S2sYNyhVfrue+9tc9XcLWLh+Kw3UOxAvrfOrSMFon60KspcDdytkNDh7K2Vs6eMaYImAZg==", 799 | "cpu": [ 800 | "arm64" 801 | ], 802 | "dev": true, 803 | "optional": true, 804 | "os": [ 805 | "win32" 806 | ] 807 | }, 808 | "node_modules/@rollup/rollup-win32-ia32-msvc": { 809 | "version": "4.14.3", 810 | "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.14.3.tgz", 811 | "integrity": "sha512-T1l7y/bCeL/kUwh9OD4PQT4aM7Bq43vX05htPJJ46RTI4r5KNt6qJRzAfNfM+OYMNEVBWQzR2Gyk+FXLZfogGw==", 812 | "cpu": [ 813 | "ia32" 814 | ], 815 | "dev": true, 816 | "optional": true, 817 | "os": [ 818 | "win32" 819 | ] 820 | }, 821 | "node_modules/@rollup/rollup-win32-x64-msvc": { 822 | "version": "4.14.3", 823 | "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.14.3.tgz", 824 | "integrity": "sha512-/BypzV0H1y1HzgYpxqRaXGBRqfodgoBBCcsrujT6QRcakDQdfU+Lq9PENPh5jB4I44YWq+0C2eHsHya+nZY1sA==", 825 | "cpu": [ 826 | "x64" 827 | ], 828 | "dev": true, 829 | "optional": true, 830 | "os": [ 831 | "win32" 832 | ] 833 | }, 834 | "node_modules/@sveltejs/adapter-auto": { 835 | "version": "3.2.0", 836 | "resolved": "https://registry.npmjs.org/@sveltejs/adapter-auto/-/adapter-auto-3.2.0.tgz", 837 | "integrity": "sha512-She5nKT47kwHE18v9NMe6pbJcvULr82u0V3yZ0ej3n1laWKGgkgdEABE9/ak5iDPs93LqsBkuIo51kkwCLBjJA==", 838 | "dev": true, 839 | "dependencies": { 840 | "import-meta-resolve": "^4.0.0" 841 | }, 842 | "peerDependencies": { 843 | "@sveltejs/kit": "^2.0.0" 844 | } 845 | }, 846 | "node_modules/@sveltejs/adapter-cloudflare": { 847 | "version": "4.4.0", 848 | "resolved": "https://registry.npmjs.org/@sveltejs/adapter-cloudflare/-/adapter-cloudflare-4.4.0.tgz", 849 | "integrity": "sha512-sh2kSapbQq3QJFOYcva4MtdzZStoAq2Lr93heGFCR924/OywnW2/Ru7/sxByXW806kvLgStZO+hKZh3Va8WVjw==", 850 | "dev": true, 851 | "dependencies": { 852 | "@cloudflare/workers-types": "^4.20231121.0", 853 | "esbuild": "^0.20.2", 854 | "worktop": "0.8.0-next.18" 855 | }, 856 | "peerDependencies": { 857 | "@sveltejs/kit": "^2.0.0", 858 | "wrangler": "^3.28.4" 859 | } 860 | }, 861 | "node_modules/@sveltejs/kit": { 862 | "version": "2.5.6", 863 | "resolved": "https://registry.npmjs.org/@sveltejs/kit/-/kit-2.5.6.tgz", 864 | "integrity": "sha512-AYb02Jm5MfNqJHc8zrj7ScQAFAKmTUCkpkfoi8EVaZZDdnjkvI7L2GtnTDhpiXSAZRVitZX4qm59sMS1FgL+lQ==", 865 | "dev": true, 866 | "hasInstallScript": true, 867 | "dependencies": { 868 | "@types/cookie": "^0.6.0", 869 | "cookie": "^0.6.0", 870 | "devalue": "^4.3.2", 871 | "esm-env": "^1.0.0", 872 | "import-meta-resolve": "^4.0.0", 873 | "kleur": "^4.1.5", 874 | "magic-string": "^0.30.5", 875 | "mrmime": "^2.0.0", 876 | "sade": "^1.8.1", 877 | "set-cookie-parser": "^2.6.0", 878 | "sirv": "^2.0.4", 879 | "tiny-glob": "^0.2.9" 880 | }, 881 | "bin": { 882 | "svelte-kit": "svelte-kit.js" 883 | }, 884 | "engines": { 885 | "node": ">=18.13" 886 | }, 887 | "peerDependencies": { 888 | "@sveltejs/vite-plugin-svelte": "^3.0.0", 889 | "svelte": "^4.0.0 || ^5.0.0-next.0", 890 | "vite": "^5.0.3" 891 | } 892 | }, 893 | "node_modules/@sveltejs/vite-plugin-svelte": { 894 | "version": "3.1.0", 895 | "resolved": "https://registry.npmjs.org/@sveltejs/vite-plugin-svelte/-/vite-plugin-svelte-3.1.0.tgz", 896 | "integrity": "sha512-sY6ncCvg+O3njnzbZexcVtUqOBE3iYmQPJ9y+yXSkOwG576QI/xJrBnQSRXFLGwJNBa0T78JEKg5cIR0WOAuUw==", 897 | "dev": true, 898 | "dependencies": { 899 | "@sveltejs/vite-plugin-svelte-inspector": "^2.0.0", 900 | "debug": "^4.3.4", 901 | "deepmerge": "^4.3.1", 902 | "kleur": "^4.1.5", 903 | "magic-string": "^0.30.9", 904 | "svelte-hmr": "^0.16.0", 905 | "vitefu": "^0.2.5" 906 | }, 907 | "engines": { 908 | "node": "^18.0.0 || >=20" 909 | }, 910 | "peerDependencies": { 911 | "svelte": "^4.0.0 || ^5.0.0-next.0", 912 | "vite": "^5.0.0" 913 | } 914 | }, 915 | "node_modules/@sveltejs/vite-plugin-svelte-inspector": { 916 | "version": "2.1.0", 917 | "resolved": "https://registry.npmjs.org/@sveltejs/vite-plugin-svelte-inspector/-/vite-plugin-svelte-inspector-2.1.0.tgz", 918 | "integrity": "sha512-9QX28IymvBlSCqsCll5t0kQVxipsfhFFL+L2t3nTWfXnddYwxBuAEtTtlaVQpRz9c37BhJjltSeY4AJSC03SSg==", 919 | "dev": true, 920 | "dependencies": { 921 | "debug": "^4.3.4" 922 | }, 923 | "engines": { 924 | "node": "^18.0.0 || >=20" 925 | }, 926 | "peerDependencies": { 927 | "@sveltejs/vite-plugin-svelte": "^3.0.0", 928 | "svelte": "^4.0.0 || ^5.0.0-next.0", 929 | "vite": "^5.0.0" 930 | } 931 | }, 932 | "node_modules/@telegram-auth/server": { 933 | "version": "1.0.3", 934 | "resolved": "https://registry.npmjs.org/@telegram-auth/server/-/server-1.0.3.tgz", 935 | "integrity": "sha512-H0HLuAdP0V6eXqypx/DN4dAtVpiF2gLN3xZHQpNUfsMWIAgMCjiVtSGK+ig1mkcWezCoXAI49kauUsJpawB0Mg==" 936 | }, 937 | "node_modules/@types/cookie": { 938 | "version": "0.6.0", 939 | "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.6.0.tgz", 940 | "integrity": "sha512-4Kh9a6B2bQciAhf7FSuMRRkUWecJgJu9nPnx3yzpsfXX/c50REIqpHY4C82bXP90qrLtXtkDxTZosYO3UpOwlA==", 941 | "dev": true 942 | }, 943 | "node_modules/@types/estree": { 944 | "version": "1.0.5", 945 | "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", 946 | "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==", 947 | "dev": true 948 | }, 949 | "node_modules/@types/json-schema": { 950 | "version": "7.0.15", 951 | "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", 952 | "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", 953 | "dev": true 954 | }, 955 | "node_modules/@types/node": { 956 | "version": "20.12.7", 957 | "resolved": "https://registry.npmjs.org/@types/node/-/node-20.12.7.tgz", 958 | "integrity": "sha512-wq0cICSkRLVaf3UGLMGItu/PtdY7oaXaI/RVU+xliKVOtRna3PRY57ZDfztpDL0n11vfymMUnXv8QwYCO7L1wg==", 959 | "dev": true, 960 | "dependencies": { 961 | "undici-types": "~5.26.4" 962 | } 963 | }, 964 | "node_modules/@types/node-forge": { 965 | "version": "1.3.11", 966 | "resolved": "https://registry.npmjs.org/@types/node-forge/-/node-forge-1.3.11.tgz", 967 | "integrity": "sha512-FQx220y22OKNTqaByeBGqHWYz4cl94tpcxeFdvBo3wjG6XPBuZ0BNgNZRV5J5TFmmcsJ4IzsLkmGRiQbnYsBEQ==", 968 | "dev": true, 969 | "dependencies": { 970 | "@types/node": "*" 971 | } 972 | }, 973 | "node_modules/acorn": { 974 | "version": "8.11.3", 975 | "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz", 976 | "integrity": "sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==", 977 | "dev": true, 978 | "bin": { 979 | "acorn": "bin/acorn" 980 | }, 981 | "engines": { 982 | "node": ">=0.4.0" 983 | } 984 | }, 985 | "node_modules/acorn-walk": { 986 | "version": "8.3.2", 987 | "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.2.tgz", 988 | "integrity": "sha512-cjkyv4OtNCIeqhHrfS81QWXoCBPExR/J62oyEqepVw8WaQeSqpW2uhuLPh1m9eWhDuOo/jUXVTlifvesOWp/4A==", 989 | "dev": true, 990 | "engines": { 991 | "node": ">=0.4.0" 992 | } 993 | }, 994 | "node_modules/anymatch": { 995 | "version": "3.1.3", 996 | "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", 997 | "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", 998 | "dev": true, 999 | "dependencies": { 1000 | "normalize-path": "^3.0.0", 1001 | "picomatch": "^2.0.4" 1002 | }, 1003 | "engines": { 1004 | "node": ">= 8" 1005 | } 1006 | }, 1007 | "node_modules/aria-query": { 1008 | "version": "5.3.0", 1009 | "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.0.tgz", 1010 | "integrity": "sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==", 1011 | "dev": true, 1012 | "dependencies": { 1013 | "dequal": "^2.0.3" 1014 | } 1015 | }, 1016 | "node_modules/as-table": { 1017 | "version": "1.0.55", 1018 | "resolved": "https://registry.npmjs.org/as-table/-/as-table-1.0.55.tgz", 1019 | "integrity": "sha512-xvsWESUJn0JN421Xb9MQw6AsMHRCUknCe0Wjlxvjud80mU4E6hQf1A6NzQKcYNmYw62MfzEtXc+badstZP3JpQ==", 1020 | "dev": true, 1021 | "dependencies": { 1022 | "printable-characters": "^1.0.42" 1023 | } 1024 | }, 1025 | "node_modules/ascii-text-generator": { 1026 | "version": "1.0.5", 1027 | "resolved": "https://registry.npmjs.org/ascii-text-generator/-/ascii-text-generator-1.0.5.tgz", 1028 | "integrity": "sha512-7v4OVcL5j42unrXsIPfgwwmsSBgocDaNwlVo1J0dvnYQvuCbM+XuefoApq405iBtp/Xc1t1dxETqh9uiiaFUjA==" 1029 | }, 1030 | "node_modules/axobject-query": { 1031 | "version": "4.0.0", 1032 | "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-4.0.0.tgz", 1033 | "integrity": "sha512-+60uv1hiVFhHZeO+Lz0RYzsVHy5Wr1ayX0mwda9KPDVLNJgZ1T9Ny7VmFbLDzxsH0D87I86vgj3gFrjTJUYznw==", 1034 | "dev": true, 1035 | "dependencies": { 1036 | "dequal": "^2.0.3" 1037 | } 1038 | }, 1039 | "node_modules/balanced-match": { 1040 | "version": "1.0.2", 1041 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", 1042 | "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", 1043 | "dev": true 1044 | }, 1045 | "node_modules/binary-extensions": { 1046 | "version": "2.3.0", 1047 | "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", 1048 | "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", 1049 | "dev": true, 1050 | "engines": { 1051 | "node": ">=8" 1052 | }, 1053 | "funding": { 1054 | "url": "https://github.com/sponsors/sindresorhus" 1055 | } 1056 | }, 1057 | "node_modules/blake3-wasm": { 1058 | "version": "2.1.5", 1059 | "resolved": "https://registry.npmjs.org/blake3-wasm/-/blake3-wasm-2.1.5.tgz", 1060 | "integrity": "sha512-F1+K8EbfOZE49dtoPtmxUQrpXaBIl3ICvasLh+nJta0xkz+9kF/7uet9fLnwKqhDrmj6g+6K3Tw9yQPUg2ka5g==", 1061 | "dev": true 1062 | }, 1063 | "node_modules/brace-expansion": { 1064 | "version": "2.0.1", 1065 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", 1066 | "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", 1067 | "dev": true, 1068 | "dependencies": { 1069 | "balanced-match": "^1.0.0" 1070 | } 1071 | }, 1072 | "node_modules/braces": { 1073 | "version": "3.0.2", 1074 | "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", 1075 | "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", 1076 | "dev": true, 1077 | "dependencies": { 1078 | "fill-range": "^7.0.1" 1079 | }, 1080 | "engines": { 1081 | "node": ">=8" 1082 | } 1083 | }, 1084 | "node_modules/capnp-ts": { 1085 | "version": "0.7.0", 1086 | "resolved": "https://registry.npmjs.org/capnp-ts/-/capnp-ts-0.7.0.tgz", 1087 | "integrity": "sha512-XKxXAC3HVPv7r674zP0VC3RTXz+/JKhfyw94ljvF80yynK6VkTnqE3jMuN8b3dUVmmc43TjyxjW4KTsmB3c86g==", 1088 | "dev": true, 1089 | "dependencies": { 1090 | "debug": "^4.3.1", 1091 | "tslib": "^2.2.0" 1092 | } 1093 | }, 1094 | "node_modules/chokidar": { 1095 | "version": "3.6.0", 1096 | "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", 1097 | "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", 1098 | "dev": true, 1099 | "dependencies": { 1100 | "anymatch": "~3.1.2", 1101 | "braces": "~3.0.2", 1102 | "glob-parent": "~5.1.2", 1103 | "is-binary-path": "~2.1.0", 1104 | "is-glob": "~4.0.1", 1105 | "normalize-path": "~3.0.0", 1106 | "readdirp": "~3.6.0" 1107 | }, 1108 | "engines": { 1109 | "node": ">= 8.10.0" 1110 | }, 1111 | "funding": { 1112 | "url": "https://paulmillr.com/funding/" 1113 | }, 1114 | "optionalDependencies": { 1115 | "fsevents": "~2.3.2" 1116 | } 1117 | }, 1118 | "node_modules/code-red": { 1119 | "version": "1.0.4", 1120 | "resolved": "https://registry.npmjs.org/code-red/-/code-red-1.0.4.tgz", 1121 | "integrity": "sha512-7qJWqItLA8/VPVlKJlFXU+NBlo/qyfs39aJcuMT/2ere32ZqvF5OSxgdM5xOfJJ7O429gg2HM47y8v9P+9wrNw==", 1122 | "dev": true, 1123 | "dependencies": { 1124 | "@jridgewell/sourcemap-codec": "^1.4.15", 1125 | "@types/estree": "^1.0.1", 1126 | "acorn": "^8.10.0", 1127 | "estree-walker": "^3.0.3", 1128 | "periscopic": "^3.1.0" 1129 | } 1130 | }, 1131 | "node_modules/commander": { 1132 | "version": "12.0.0", 1133 | "resolved": "https://registry.npmjs.org/commander/-/commander-12.0.0.tgz", 1134 | "integrity": "sha512-MwVNWlYjDTtOjX5PiD7o5pK0UrFU/OYgcJfjjK4RaHZETNtjJqrZa9Y9ds88+A+f+d5lv+561eZ+yCKoS3gbAA==", 1135 | "dev": true, 1136 | "engines": { 1137 | "node": ">=18" 1138 | } 1139 | }, 1140 | "node_modules/cookie": { 1141 | "version": "0.6.0", 1142 | "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.6.0.tgz", 1143 | "integrity": "sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==", 1144 | "dev": true, 1145 | "engines": { 1146 | "node": ">= 0.6" 1147 | } 1148 | }, 1149 | "node_modules/css-tree": { 1150 | "version": "2.3.1", 1151 | "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.3.1.tgz", 1152 | "integrity": "sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==", 1153 | "dev": true, 1154 | "dependencies": { 1155 | "mdn-data": "2.0.30", 1156 | "source-map-js": "^1.0.1" 1157 | }, 1158 | "engines": { 1159 | "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0" 1160 | } 1161 | }, 1162 | "node_modules/data-uri-to-buffer": { 1163 | "version": "2.0.2", 1164 | "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-2.0.2.tgz", 1165 | "integrity": "sha512-ND9qDTLc6diwj+Xe5cdAgVTbLVdXbtxTJRXRhli8Mowuaan+0EJOtdqJ0QCHNSSPyoXGx9HX2/VMnKeC34AChA==", 1166 | "dev": true 1167 | }, 1168 | "node_modules/debug": { 1169 | "version": "4.3.4", 1170 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", 1171 | "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", 1172 | "dev": true, 1173 | "dependencies": { 1174 | "ms": "2.1.2" 1175 | }, 1176 | "engines": { 1177 | "node": ">=6.0" 1178 | }, 1179 | "peerDependenciesMeta": { 1180 | "supports-color": { 1181 | "optional": true 1182 | } 1183 | } 1184 | }, 1185 | "node_modules/deepmerge": { 1186 | "version": "4.3.1", 1187 | "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", 1188 | "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", 1189 | "dev": true, 1190 | "engines": { 1191 | "node": ">=0.10.0" 1192 | } 1193 | }, 1194 | "node_modules/dequal": { 1195 | "version": "2.0.3", 1196 | "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", 1197 | "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", 1198 | "dev": true, 1199 | "engines": { 1200 | "node": ">=6" 1201 | } 1202 | }, 1203 | "node_modules/devalue": { 1204 | "version": "4.3.2", 1205 | "resolved": "https://registry.npmjs.org/devalue/-/devalue-4.3.2.tgz", 1206 | "integrity": "sha512-KqFl6pOgOW+Y6wJgu80rHpo2/3H07vr8ntR9rkkFIRETewbf5GaYYcakYfiKz89K+sLsuPkQIZaXDMjUObZwWg==", 1207 | "dev": true 1208 | }, 1209 | "node_modules/esbuild": { 1210 | "version": "0.20.2", 1211 | "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.20.2.tgz", 1212 | "integrity": "sha512-WdOOppmUNU+IbZ0PaDiTst80zjnrOkyJNHoKupIcVyU8Lvla3Ugx94VzkQ32Ijqd7UhHJy75gNWDMUekcrSJ6g==", 1213 | "dev": true, 1214 | "hasInstallScript": true, 1215 | "bin": { 1216 | "esbuild": "bin/esbuild" 1217 | }, 1218 | "engines": { 1219 | "node": ">=12" 1220 | }, 1221 | "optionalDependencies": { 1222 | "@esbuild/aix-ppc64": "0.20.2", 1223 | "@esbuild/android-arm": "0.20.2", 1224 | "@esbuild/android-arm64": "0.20.2", 1225 | "@esbuild/android-x64": "0.20.2", 1226 | "@esbuild/darwin-arm64": "0.20.2", 1227 | "@esbuild/darwin-x64": "0.20.2", 1228 | "@esbuild/freebsd-arm64": "0.20.2", 1229 | "@esbuild/freebsd-x64": "0.20.2", 1230 | "@esbuild/linux-arm": "0.20.2", 1231 | "@esbuild/linux-arm64": "0.20.2", 1232 | "@esbuild/linux-ia32": "0.20.2", 1233 | "@esbuild/linux-loong64": "0.20.2", 1234 | "@esbuild/linux-mips64el": "0.20.2", 1235 | "@esbuild/linux-ppc64": "0.20.2", 1236 | "@esbuild/linux-riscv64": "0.20.2", 1237 | "@esbuild/linux-s390x": "0.20.2", 1238 | "@esbuild/linux-x64": "0.20.2", 1239 | "@esbuild/netbsd-x64": "0.20.2", 1240 | "@esbuild/openbsd-x64": "0.20.2", 1241 | "@esbuild/sunos-x64": "0.20.2", 1242 | "@esbuild/win32-arm64": "0.20.2", 1243 | "@esbuild/win32-ia32": "0.20.2", 1244 | "@esbuild/win32-x64": "0.20.2" 1245 | } 1246 | }, 1247 | "node_modules/escape-string-regexp": { 1248 | "version": "4.0.0", 1249 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", 1250 | "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", 1251 | "dev": true, 1252 | "engines": { 1253 | "node": ">=10" 1254 | }, 1255 | "funding": { 1256 | "url": "https://github.com/sponsors/sindresorhus" 1257 | } 1258 | }, 1259 | "node_modules/esm-env": { 1260 | "version": "1.0.0", 1261 | "resolved": "https://registry.npmjs.org/esm-env/-/esm-env-1.0.0.tgz", 1262 | "integrity": "sha512-Cf6VksWPsTuW01vU9Mk/3vRue91Zevka5SjyNf3nEpokFRuqt/KjUQoGAwq9qMmhpLTHmXzSIrFRw8zxWzmFBA==", 1263 | "dev": true 1264 | }, 1265 | "node_modules/estree-walker": { 1266 | "version": "3.0.3", 1267 | "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", 1268 | "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", 1269 | "dev": true, 1270 | "dependencies": { 1271 | "@types/estree": "^1.0.0" 1272 | } 1273 | }, 1274 | "node_modules/exit-hook": { 1275 | "version": "2.2.1", 1276 | "resolved": "https://registry.npmjs.org/exit-hook/-/exit-hook-2.2.1.tgz", 1277 | "integrity": "sha512-eNTPlAD67BmP31LDINZ3U7HSF8l57TxOY2PmBJ1shpCvpnxBF93mWCE8YHBnXs8qiUZJc9WDcWIeC3a2HIAMfw==", 1278 | "dev": true, 1279 | "engines": { 1280 | "node": ">=6" 1281 | }, 1282 | "funding": { 1283 | "url": "https://github.com/sponsors/sindresorhus" 1284 | } 1285 | }, 1286 | "node_modules/fill-range": { 1287 | "version": "7.0.1", 1288 | "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", 1289 | "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", 1290 | "dev": true, 1291 | "dependencies": { 1292 | "to-regex-range": "^5.0.1" 1293 | }, 1294 | "engines": { 1295 | "node": ">=8" 1296 | } 1297 | }, 1298 | "node_modules/fs.realpath": { 1299 | "version": "1.0.0", 1300 | "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", 1301 | "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", 1302 | "dev": true 1303 | }, 1304 | "node_modules/fsevents": { 1305 | "version": "2.3.3", 1306 | "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", 1307 | "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", 1308 | "dev": true, 1309 | "hasInstallScript": true, 1310 | "optional": true, 1311 | "os": [ 1312 | "darwin" 1313 | ], 1314 | "engines": { 1315 | "node": "^8.16.0 || ^10.6.0 || >=11.0.0" 1316 | } 1317 | }, 1318 | "node_modules/function-bind": { 1319 | "version": "1.1.2", 1320 | "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", 1321 | "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", 1322 | "dev": true, 1323 | "funding": { 1324 | "url": "https://github.com/sponsors/ljharb" 1325 | } 1326 | }, 1327 | "node_modules/get-source": { 1328 | "version": "2.0.12", 1329 | "resolved": "https://registry.npmjs.org/get-source/-/get-source-2.0.12.tgz", 1330 | "integrity": "sha512-X5+4+iD+HoSeEED+uwrQ07BOQr0kEDFMVqqpBuI+RaZBpBpHCuXxo70bjar6f0b0u/DQJsJ7ssurpP0V60Az+w==", 1331 | "dev": true, 1332 | "dependencies": { 1333 | "data-uri-to-buffer": "^2.0.0", 1334 | "source-map": "^0.6.1" 1335 | } 1336 | }, 1337 | "node_modules/glob": { 1338 | "version": "8.1.0", 1339 | "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", 1340 | "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", 1341 | "dev": true, 1342 | "dependencies": { 1343 | "fs.realpath": "^1.0.0", 1344 | "inflight": "^1.0.4", 1345 | "inherits": "2", 1346 | "minimatch": "^5.0.1", 1347 | "once": "^1.3.0" 1348 | }, 1349 | "engines": { 1350 | "node": ">=12" 1351 | }, 1352 | "funding": { 1353 | "url": "https://github.com/sponsors/isaacs" 1354 | } 1355 | }, 1356 | "node_modules/glob-parent": { 1357 | "version": "5.1.2", 1358 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", 1359 | "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", 1360 | "dev": true, 1361 | "dependencies": { 1362 | "is-glob": "^4.0.1" 1363 | }, 1364 | "engines": { 1365 | "node": ">= 6" 1366 | } 1367 | }, 1368 | "node_modules/glob-to-regexp": { 1369 | "version": "0.4.1", 1370 | "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", 1371 | "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", 1372 | "dev": true 1373 | }, 1374 | "node_modules/globalyzer": { 1375 | "version": "0.1.0", 1376 | "resolved": "https://registry.npmjs.org/globalyzer/-/globalyzer-0.1.0.tgz", 1377 | "integrity": "sha512-40oNTM9UfG6aBmuKxk/giHn5nQ8RVz/SS4Ir6zgzOv9/qC3kKZ9v4etGTcJbEl/NyVQH7FGU7d+X1egr57Md2Q==", 1378 | "dev": true 1379 | }, 1380 | "node_modules/globrex": { 1381 | "version": "0.1.2", 1382 | "resolved": "https://registry.npmjs.org/globrex/-/globrex-0.1.2.tgz", 1383 | "integrity": "sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==", 1384 | "dev": true 1385 | }, 1386 | "node_modules/hasown": { 1387 | "version": "2.0.2", 1388 | "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", 1389 | "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", 1390 | "dev": true, 1391 | "dependencies": { 1392 | "function-bind": "^1.1.2" 1393 | }, 1394 | "engines": { 1395 | "node": ">= 0.4" 1396 | } 1397 | }, 1398 | "node_modules/import-meta-resolve": { 1399 | "version": "4.0.0", 1400 | "resolved": "https://registry.npmjs.org/import-meta-resolve/-/import-meta-resolve-4.0.0.tgz", 1401 | "integrity": "sha512-okYUR7ZQPH+efeuMJGlq4f8ubUgO50kByRPyt/Cy1Io4PSRsPjxME+YlVaCOx+NIToW7hCsZNFJyTPFFKepRSA==", 1402 | "dev": true, 1403 | "funding": { 1404 | "type": "github", 1405 | "url": "https://github.com/sponsors/wooorm" 1406 | } 1407 | }, 1408 | "node_modules/inflight": { 1409 | "version": "1.0.6", 1410 | "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", 1411 | "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", 1412 | "dev": true, 1413 | "dependencies": { 1414 | "once": "^1.3.0", 1415 | "wrappy": "1" 1416 | } 1417 | }, 1418 | "node_modules/inherits": { 1419 | "version": "2.0.4", 1420 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", 1421 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", 1422 | "dev": true 1423 | }, 1424 | "node_modules/is-binary-path": { 1425 | "version": "2.1.0", 1426 | "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", 1427 | "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", 1428 | "dev": true, 1429 | "dependencies": { 1430 | "binary-extensions": "^2.0.0" 1431 | }, 1432 | "engines": { 1433 | "node": ">=8" 1434 | } 1435 | }, 1436 | "node_modules/is-core-module": { 1437 | "version": "2.13.1", 1438 | "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", 1439 | "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", 1440 | "dev": true, 1441 | "dependencies": { 1442 | "hasown": "^2.0.0" 1443 | }, 1444 | "funding": { 1445 | "url": "https://github.com/sponsors/ljharb" 1446 | } 1447 | }, 1448 | "node_modules/is-extglob": { 1449 | "version": "2.1.1", 1450 | "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", 1451 | "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", 1452 | "dev": true, 1453 | "engines": { 1454 | "node": ">=0.10.0" 1455 | } 1456 | }, 1457 | "node_modules/is-glob": { 1458 | "version": "4.0.3", 1459 | "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", 1460 | "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", 1461 | "dev": true, 1462 | "dependencies": { 1463 | "is-extglob": "^2.1.1" 1464 | }, 1465 | "engines": { 1466 | "node": ">=0.10.0" 1467 | } 1468 | }, 1469 | "node_modules/is-in-subnet": { 1470 | "version": "4.0.1", 1471 | "resolved": "https://registry.npmjs.org/is-in-subnet/-/is-in-subnet-4.0.1.tgz", 1472 | "integrity": "sha512-D3mAuAo6vZ+/AxsLkEIZ3moTx7AIGQLLzLQslV6n0RRO/CzdUemXap+lj3OPAehKCbdkGPikxOVUYqRo0GGJAA==", 1473 | "engines": { 1474 | "node": ">=10.23.0" 1475 | } 1476 | }, 1477 | "node_modules/is-number": { 1478 | "version": "7.0.0", 1479 | "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", 1480 | "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", 1481 | "dev": true, 1482 | "engines": { 1483 | "node": ">=0.12.0" 1484 | } 1485 | }, 1486 | "node_modules/is-reference": { 1487 | "version": "3.0.2", 1488 | "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-3.0.2.tgz", 1489 | "integrity": "sha512-v3rht/LgVcsdZa3O2Nqs+NMowLOxeOm7Ay9+/ARQ2F+qEoANRcqrjAZKGN0v8ymUetZGgkp26LTnGT7H0Qo9Pg==", 1490 | "dev": true, 1491 | "dependencies": { 1492 | "@types/estree": "*" 1493 | } 1494 | }, 1495 | "node_modules/json5": { 1496 | "version": "2.2.3", 1497 | "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", 1498 | "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", 1499 | "dev": true, 1500 | "bin": { 1501 | "json5": "lib/cli.js" 1502 | }, 1503 | "engines": { 1504 | "node": ">=6" 1505 | } 1506 | }, 1507 | "node_modules/kleur": { 1508 | "version": "4.1.5", 1509 | "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.5.tgz", 1510 | "integrity": "sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==", 1511 | "dev": true, 1512 | "engines": { 1513 | "node": ">=6" 1514 | } 1515 | }, 1516 | "node_modules/locate-character": { 1517 | "version": "3.0.0", 1518 | "resolved": "https://registry.npmjs.org/locate-character/-/locate-character-3.0.0.tgz", 1519 | "integrity": "sha512-SW13ws7BjaeJ6p7Q6CO2nchbYEc3X3J6WrmTTDto7yMPqVSZTUyY5Tjbid+Ab8gLnATtygYtiDIJGQRRn2ZOiA==", 1520 | "dev": true 1521 | }, 1522 | "node_modules/magic-string": { 1523 | "version": "0.30.9", 1524 | "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.9.tgz", 1525 | "integrity": "sha512-S1+hd+dIrC8EZqKyT9DstTH/0Z+f76kmmvZnkfQVmOpDEF9iVgdYif3Q/pIWHmCoo59bQVGW0kVL3e2nl+9+Sw==", 1526 | "dev": true, 1527 | "dependencies": { 1528 | "@jridgewell/sourcemap-codec": "^1.4.15" 1529 | }, 1530 | "engines": { 1531 | "node": ">=12" 1532 | } 1533 | }, 1534 | "node_modules/mdn-data": { 1535 | "version": "2.0.30", 1536 | "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.30.tgz", 1537 | "integrity": "sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==", 1538 | "dev": true 1539 | }, 1540 | "node_modules/mime": { 1541 | "version": "3.0.0", 1542 | "resolved": "https://registry.npmjs.org/mime/-/mime-3.0.0.tgz", 1543 | "integrity": "sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==", 1544 | "dev": true, 1545 | "bin": { 1546 | "mime": "cli.js" 1547 | }, 1548 | "engines": { 1549 | "node": ">=10.0.0" 1550 | } 1551 | }, 1552 | "node_modules/miniflare": { 1553 | "version": "3.20240405.1", 1554 | "resolved": "https://registry.npmjs.org/miniflare/-/miniflare-3.20240405.1.tgz", 1555 | "integrity": "sha512-oShOR/ckr9JTO1bkPQH0nXvuSgJjoE+E5+M1tvP01Q8Z+Q0GJnzU2+FDYUH8yIK/atHv7snU8yy0X6KWVn1YdQ==", 1556 | "dev": true, 1557 | "dependencies": { 1558 | "@cspotcode/source-map-support": "0.8.1", 1559 | "acorn": "^8.8.0", 1560 | "acorn-walk": "^8.2.0", 1561 | "capnp-ts": "^0.7.0", 1562 | "exit-hook": "^2.2.1", 1563 | "glob-to-regexp": "^0.4.1", 1564 | "stoppable": "^1.1.0", 1565 | "undici": "^5.28.2", 1566 | "workerd": "1.20240405.0", 1567 | "ws": "^8.11.0", 1568 | "youch": "^3.2.2", 1569 | "zod": "^3.20.6" 1570 | }, 1571 | "bin": { 1572 | "miniflare": "bootstrap.js" 1573 | }, 1574 | "engines": { 1575 | "node": ">=16.13" 1576 | } 1577 | }, 1578 | "node_modules/minimatch": { 1579 | "version": "5.1.6", 1580 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", 1581 | "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", 1582 | "dev": true, 1583 | "dependencies": { 1584 | "brace-expansion": "^2.0.1" 1585 | }, 1586 | "engines": { 1587 | "node": ">=10" 1588 | } 1589 | }, 1590 | "node_modules/mri": { 1591 | "version": "1.2.0", 1592 | "resolved": "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz", 1593 | "integrity": "sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==", 1594 | "dev": true, 1595 | "engines": { 1596 | "node": ">=4" 1597 | } 1598 | }, 1599 | "node_modules/mrmime": { 1600 | "version": "2.0.0", 1601 | "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-2.0.0.tgz", 1602 | "integrity": "sha512-eu38+hdgojoyq63s+yTpN4XMBdt5l8HhMhc4VKLO9KM5caLIBvUm4thi7fFaxyTmCKeNnXZ5pAlBwCUnhA09uw==", 1603 | "dev": true, 1604 | "engines": { 1605 | "node": ">=10" 1606 | } 1607 | }, 1608 | "node_modules/ms": { 1609 | "version": "2.1.2", 1610 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", 1611 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", 1612 | "dev": true 1613 | }, 1614 | "node_modules/mustache": { 1615 | "version": "4.2.0", 1616 | "resolved": "https://registry.npmjs.org/mustache/-/mustache-4.2.0.tgz", 1617 | "integrity": "sha512-71ippSywq5Yb7/tVYyGbkBggbU8H3u5Rz56fH60jGFgr8uHwxs+aSKeqmluIVzM0m0kB7xQjKS6qPfd0b2ZoqQ==", 1618 | "dev": true, 1619 | "bin": { 1620 | "mustache": "bin/mustache" 1621 | } 1622 | }, 1623 | "node_modules/nanoid": { 1624 | "version": "5.0.7", 1625 | "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-5.0.7.tgz", 1626 | "integrity": "sha512-oLxFY2gd2IqnjcYyOXD8XGCftpGtZP2AbHbOkthDkvRywH5ayNtPVy9YlOPcHckXzbLTCHpkb7FB+yuxKV13pQ==", 1627 | "funding": [ 1628 | { 1629 | "type": "github", 1630 | "url": "https://github.com/sponsors/ai" 1631 | } 1632 | ], 1633 | "bin": { 1634 | "nanoid": "bin/nanoid.js" 1635 | }, 1636 | "engines": { 1637 | "node": "^18 || >=20" 1638 | } 1639 | }, 1640 | "node_modules/node-forge": { 1641 | "version": "1.3.1", 1642 | "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz", 1643 | "integrity": "sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==", 1644 | "dev": true, 1645 | "engines": { 1646 | "node": ">= 6.13.0" 1647 | } 1648 | }, 1649 | "node_modules/normalize-path": { 1650 | "version": "3.0.0", 1651 | "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", 1652 | "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", 1653 | "dev": true, 1654 | "engines": { 1655 | "node": ">=0.10.0" 1656 | } 1657 | }, 1658 | "node_modules/once": { 1659 | "version": "1.4.0", 1660 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", 1661 | "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", 1662 | "dev": true, 1663 | "dependencies": { 1664 | "wrappy": "1" 1665 | } 1666 | }, 1667 | "node_modules/path-parse": { 1668 | "version": "1.0.7", 1669 | "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", 1670 | "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", 1671 | "dev": true 1672 | }, 1673 | "node_modules/path-to-regexp": { 1674 | "version": "6.2.2", 1675 | "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-6.2.2.tgz", 1676 | "integrity": "sha512-GQX3SSMokngb36+whdpRXE+3f9V8UzyAorlYvOGx87ufGHehNTn5lCxrKtLyZ4Yl/wEKnNnr98ZzOwwDZV5ogw==", 1677 | "dev": true 1678 | }, 1679 | "node_modules/periscopic": { 1680 | "version": "3.1.0", 1681 | "resolved": "https://registry.npmjs.org/periscopic/-/periscopic-3.1.0.tgz", 1682 | "integrity": "sha512-vKiQ8RRtkl9P+r/+oefh25C3fhybptkHKCZSPlcXiJux2tJF55GnEj3BVn4A5gKfq9NWWXXrxkHBwVPUfH0opw==", 1683 | "dev": true, 1684 | "dependencies": { 1685 | "@types/estree": "^1.0.0", 1686 | "estree-walker": "^3.0.0", 1687 | "is-reference": "^3.0.0" 1688 | } 1689 | }, 1690 | "node_modules/picocolors": { 1691 | "version": "1.0.0", 1692 | "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", 1693 | "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", 1694 | "dev": true 1695 | }, 1696 | "node_modules/picomatch": { 1697 | "version": "2.3.1", 1698 | "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", 1699 | "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", 1700 | "dev": true, 1701 | "engines": { 1702 | "node": ">=8.6" 1703 | }, 1704 | "funding": { 1705 | "url": "https://github.com/sponsors/jonschlinkert" 1706 | } 1707 | }, 1708 | "node_modules/postcss": { 1709 | "version": "8.4.38", 1710 | "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.38.tgz", 1711 | "integrity": "sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A==", 1712 | "dev": true, 1713 | "funding": [ 1714 | { 1715 | "type": "opencollective", 1716 | "url": "https://opencollective.com/postcss/" 1717 | }, 1718 | { 1719 | "type": "tidelift", 1720 | "url": "https://tidelift.com/funding/github/npm/postcss" 1721 | }, 1722 | { 1723 | "type": "github", 1724 | "url": "https://github.com/sponsors/ai" 1725 | } 1726 | ], 1727 | "dependencies": { 1728 | "nanoid": "^3.3.7", 1729 | "picocolors": "^1.0.0", 1730 | "source-map-js": "^1.2.0" 1731 | }, 1732 | "engines": { 1733 | "node": "^10 || ^12 || >=14" 1734 | } 1735 | }, 1736 | "node_modules/postcss/node_modules/nanoid": { 1737 | "version": "3.3.7", 1738 | "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", 1739 | "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", 1740 | "dev": true, 1741 | "funding": [ 1742 | { 1743 | "type": "github", 1744 | "url": "https://github.com/sponsors/ai" 1745 | } 1746 | ], 1747 | "bin": { 1748 | "nanoid": "bin/nanoid.cjs" 1749 | }, 1750 | "engines": { 1751 | "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" 1752 | } 1753 | }, 1754 | "node_modules/prettier": { 1755 | "version": "3.2.5", 1756 | "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.2.5.tgz", 1757 | "integrity": "sha512-3/GWa9aOC0YeD7LUfvOG2NiDyhOWRvt1k+rcKhOuYnMY24iiCphgneUfJDyFXd6rZCAnuLBv6UeAULtrhT/F4A==", 1758 | "dev": true, 1759 | "bin": { 1760 | "prettier": "bin/prettier.cjs" 1761 | }, 1762 | "engines": { 1763 | "node": ">=14" 1764 | }, 1765 | "funding": { 1766 | "url": "https://github.com/prettier/prettier?sponsor=1" 1767 | } 1768 | }, 1769 | "node_modules/prettier-plugin-svelte": { 1770 | "version": "3.2.3", 1771 | "resolved": "https://registry.npmjs.org/prettier-plugin-svelte/-/prettier-plugin-svelte-3.2.3.tgz", 1772 | "integrity": "sha512-wJq8RunyFlWco6U0WJV5wNCM7zpBFakS76UBSbmzMGpncpK98NZABaE+s7n8/APDCEVNHXC5Mpq+MLebQtsRlg==", 1773 | "dev": true, 1774 | "peerDependencies": { 1775 | "prettier": "^3.0.0", 1776 | "svelte": "^3.2.0 || ^4.0.0-next.0 || ^5.0.0-next.0" 1777 | } 1778 | }, 1779 | "node_modules/printable-characters": { 1780 | "version": "1.0.42", 1781 | "resolved": "https://registry.npmjs.org/printable-characters/-/printable-characters-1.0.42.tgz", 1782 | "integrity": "sha512-dKp+C4iXWK4vVYZmYSd0KBH5F/h1HoZRsbJ82AVKRO3PEo8L4lBS/vLwhVtpwwuYcoIsVY+1JYKR268yn480uQ==", 1783 | "dev": true 1784 | }, 1785 | "node_modules/readdirp": { 1786 | "version": "3.6.0", 1787 | "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", 1788 | "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", 1789 | "dev": true, 1790 | "dependencies": { 1791 | "picomatch": "^2.2.1" 1792 | }, 1793 | "engines": { 1794 | "node": ">=8.10.0" 1795 | } 1796 | }, 1797 | "node_modules/regexparam": { 1798 | "version": "3.0.0", 1799 | "resolved": "https://registry.npmjs.org/regexparam/-/regexparam-3.0.0.tgz", 1800 | "integrity": "sha512-RSYAtP31mvYLkAHrOlh25pCNQ5hWnT106VukGaaFfuJrZFkGRX5GhUAdPqpSDXxOhA2c4akmRuplv1mRqnBn6Q==", 1801 | "dev": true, 1802 | "engines": { 1803 | "node": ">=8" 1804 | } 1805 | }, 1806 | "node_modules/resolve": { 1807 | "version": "1.22.8", 1808 | "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", 1809 | "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", 1810 | "dev": true, 1811 | "dependencies": { 1812 | "is-core-module": "^2.13.0", 1813 | "path-parse": "^1.0.7", 1814 | "supports-preserve-symlinks-flag": "^1.0.0" 1815 | }, 1816 | "bin": { 1817 | "resolve": "bin/resolve" 1818 | }, 1819 | "funding": { 1820 | "url": "https://github.com/sponsors/ljharb" 1821 | } 1822 | }, 1823 | "node_modules/resolve.exports": { 1824 | "version": "2.0.2", 1825 | "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-2.0.2.tgz", 1826 | "integrity": "sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg==", 1827 | "dev": true, 1828 | "engines": { 1829 | "node": ">=10" 1830 | } 1831 | }, 1832 | "node_modules/rollup": { 1833 | "version": "4.14.3", 1834 | "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.14.3.tgz", 1835 | "integrity": "sha512-ag5tTQKYsj1bhrFC9+OEWqb5O6VYgtQDO9hPDBMmIbePwhfSr+ExlcU741t8Dhw5DkPCQf6noz0jb36D6W9/hw==", 1836 | "dev": true, 1837 | "dependencies": { 1838 | "@types/estree": "1.0.5" 1839 | }, 1840 | "bin": { 1841 | "rollup": "dist/bin/rollup" 1842 | }, 1843 | "engines": { 1844 | "node": ">=18.0.0", 1845 | "npm": ">=8.0.0" 1846 | }, 1847 | "optionalDependencies": { 1848 | "@rollup/rollup-android-arm-eabi": "4.14.3", 1849 | "@rollup/rollup-android-arm64": "4.14.3", 1850 | "@rollup/rollup-darwin-arm64": "4.14.3", 1851 | "@rollup/rollup-darwin-x64": "4.14.3", 1852 | "@rollup/rollup-linux-arm-gnueabihf": "4.14.3", 1853 | "@rollup/rollup-linux-arm-musleabihf": "4.14.3", 1854 | "@rollup/rollup-linux-arm64-gnu": "4.14.3", 1855 | "@rollup/rollup-linux-arm64-musl": "4.14.3", 1856 | "@rollup/rollup-linux-powerpc64le-gnu": "4.14.3", 1857 | "@rollup/rollup-linux-riscv64-gnu": "4.14.3", 1858 | "@rollup/rollup-linux-s390x-gnu": "4.14.3", 1859 | "@rollup/rollup-linux-x64-gnu": "4.14.3", 1860 | "@rollup/rollup-linux-x64-musl": "4.14.3", 1861 | "@rollup/rollup-win32-arm64-msvc": "4.14.3", 1862 | "@rollup/rollup-win32-ia32-msvc": "4.14.3", 1863 | "@rollup/rollup-win32-x64-msvc": "4.14.3", 1864 | "fsevents": "~2.3.2" 1865 | } 1866 | }, 1867 | "node_modules/rollup-plugin-inject": { 1868 | "version": "3.0.2", 1869 | "resolved": "https://registry.npmjs.org/rollup-plugin-inject/-/rollup-plugin-inject-3.0.2.tgz", 1870 | "integrity": "sha512-ptg9PQwzs3orn4jkgXJ74bfs5vYz1NCZlSQMBUA0wKcGp5i5pA1AO3fOUEte8enhGUC+iapTCzEWw2jEFFUO/w==", 1871 | "deprecated": "This package has been deprecated and is no longer maintained. Please use @rollup/plugin-inject.", 1872 | "dev": true, 1873 | "dependencies": { 1874 | "estree-walker": "^0.6.1", 1875 | "magic-string": "^0.25.3", 1876 | "rollup-pluginutils": "^2.8.1" 1877 | } 1878 | }, 1879 | "node_modules/rollup-plugin-inject/node_modules/estree-walker": { 1880 | "version": "0.6.1", 1881 | "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-0.6.1.tgz", 1882 | "integrity": "sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w==", 1883 | "dev": true 1884 | }, 1885 | "node_modules/rollup-plugin-inject/node_modules/magic-string": { 1886 | "version": "0.25.9", 1887 | "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz", 1888 | "integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==", 1889 | "dev": true, 1890 | "dependencies": { 1891 | "sourcemap-codec": "^1.4.8" 1892 | } 1893 | }, 1894 | "node_modules/rollup-plugin-node-polyfills": { 1895 | "version": "0.2.1", 1896 | "resolved": "https://registry.npmjs.org/rollup-plugin-node-polyfills/-/rollup-plugin-node-polyfills-0.2.1.tgz", 1897 | "integrity": "sha512-4kCrKPTJ6sK4/gLL/U5QzVT8cxJcofO0OU74tnB19F40cmuAKSzH5/siithxlofFEjwvw1YAhPmbvGNA6jEroA==", 1898 | "dev": true, 1899 | "dependencies": { 1900 | "rollup-plugin-inject": "^3.0.0" 1901 | } 1902 | }, 1903 | "node_modules/rollup-pluginutils": { 1904 | "version": "2.8.2", 1905 | "resolved": "https://registry.npmjs.org/rollup-pluginutils/-/rollup-pluginutils-2.8.2.tgz", 1906 | "integrity": "sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ==", 1907 | "dev": true, 1908 | "dependencies": { 1909 | "estree-walker": "^0.6.1" 1910 | } 1911 | }, 1912 | "node_modules/rollup-pluginutils/node_modules/estree-walker": { 1913 | "version": "0.6.1", 1914 | "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-0.6.1.tgz", 1915 | "integrity": "sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w==", 1916 | "dev": true 1917 | }, 1918 | "node_modules/sade": { 1919 | "version": "1.8.1", 1920 | "resolved": "https://registry.npmjs.org/sade/-/sade-1.8.1.tgz", 1921 | "integrity": "sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==", 1922 | "dev": true, 1923 | "dependencies": { 1924 | "mri": "^1.1.0" 1925 | }, 1926 | "engines": { 1927 | "node": ">=6" 1928 | } 1929 | }, 1930 | "node_modules/safe-stable-stringify": { 1931 | "version": "2.4.3", 1932 | "resolved": "https://registry.npmjs.org/safe-stable-stringify/-/safe-stable-stringify-2.4.3.tgz", 1933 | "integrity": "sha512-e2bDA2WJT0wxseVd4lsDP4+3ONX6HpMXQa1ZhFQ7SU+GjvORCmShbCMltrtIDfkYhVHrOcPtj+KhmDBdPdZD1g==", 1934 | "dev": true, 1935 | "engines": { 1936 | "node": ">=10" 1937 | } 1938 | }, 1939 | "node_modules/selfsigned": { 1940 | "version": "2.4.1", 1941 | "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-2.4.1.tgz", 1942 | "integrity": "sha512-th5B4L2U+eGLq1TVh7zNRGBapioSORUeymIydxgFpwww9d2qyKvtuPU2jJuHvYAwwqi2Y596QBL3eEqcPEYL8Q==", 1943 | "dev": true, 1944 | "dependencies": { 1945 | "@types/node-forge": "^1.3.0", 1946 | "node-forge": "^1" 1947 | }, 1948 | "engines": { 1949 | "node": ">=10" 1950 | } 1951 | }, 1952 | "node_modules/set-cookie-parser": { 1953 | "version": "2.6.0", 1954 | "resolved": "https://registry.npmjs.org/set-cookie-parser/-/set-cookie-parser-2.6.0.tgz", 1955 | "integrity": "sha512-RVnVQxTXuerk653XfuliOxBP81Sf0+qfQE73LIYKcyMYHG94AuH0kgrQpRDuTZnSmjpysHmzxJXKNfa6PjFhyQ==", 1956 | "dev": true 1957 | }, 1958 | "node_modules/sirv": { 1959 | "version": "2.0.4", 1960 | "resolved": "https://registry.npmjs.org/sirv/-/sirv-2.0.4.tgz", 1961 | "integrity": "sha512-94Bdh3cC2PKrbgSOUqTiGPWVZeSiXfKOVZNJniWoqrWrRkB1CJzBU3NEbiTsPcYy1lDsANA/THzS+9WBiy5nfQ==", 1962 | "dev": true, 1963 | "dependencies": { 1964 | "@polka/url": "^1.0.0-next.24", 1965 | "mrmime": "^2.0.0", 1966 | "totalist": "^3.0.0" 1967 | }, 1968 | "engines": { 1969 | "node": ">= 10" 1970 | } 1971 | }, 1972 | "node_modules/source-map": { 1973 | "version": "0.6.1", 1974 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", 1975 | "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", 1976 | "dev": true, 1977 | "engines": { 1978 | "node": ">=0.10.0" 1979 | } 1980 | }, 1981 | "node_modules/source-map-js": { 1982 | "version": "1.2.0", 1983 | "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.0.tgz", 1984 | "integrity": "sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==", 1985 | "dev": true, 1986 | "engines": { 1987 | "node": ">=0.10.0" 1988 | } 1989 | }, 1990 | "node_modules/sourcemap-codec": { 1991 | "version": "1.4.8", 1992 | "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", 1993 | "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", 1994 | "deprecated": "Please use @jridgewell/sourcemap-codec instead", 1995 | "dev": true 1996 | }, 1997 | "node_modules/stacktracey": { 1998 | "version": "2.1.8", 1999 | "resolved": "https://registry.npmjs.org/stacktracey/-/stacktracey-2.1.8.tgz", 2000 | "integrity": "sha512-Kpij9riA+UNg7TnphqjH7/CzctQ/owJGNbFkfEeve4Z4uxT5+JapVLFXcsurIfN34gnTWZNJ/f7NMG0E8JDzTw==", 2001 | "dev": true, 2002 | "dependencies": { 2003 | "as-table": "^1.0.36", 2004 | "get-source": "^2.0.12" 2005 | } 2006 | }, 2007 | "node_modules/stoppable": { 2008 | "version": "1.1.0", 2009 | "resolved": "https://registry.npmjs.org/stoppable/-/stoppable-1.1.0.tgz", 2010 | "integrity": "sha512-KXDYZ9dszj6bzvnEMRYvxgeTHU74QBFL54XKtP3nyMuJ81CFYtABZ3bAzL2EdFUaEwJOBOgENyFj3R7oTzDyyw==", 2011 | "dev": true, 2012 | "engines": { 2013 | "node": ">=4", 2014 | "npm": ">=6" 2015 | } 2016 | }, 2017 | "node_modules/supports-preserve-symlinks-flag": { 2018 | "version": "1.0.0", 2019 | "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", 2020 | "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", 2021 | "dev": true, 2022 | "engines": { 2023 | "node": ">= 0.4" 2024 | }, 2025 | "funding": { 2026 | "url": "https://github.com/sponsors/ljharb" 2027 | } 2028 | }, 2029 | "node_modules/svelte": { 2030 | "version": "4.2.14", 2031 | "resolved": "https://registry.npmjs.org/svelte/-/svelte-4.2.14.tgz", 2032 | "integrity": "sha512-ry3+YlWqZpHxLy45MW4MZIxNdvB+Wl7p2nnstWKbOAewaJyNJuOtivSbRChcfIej6wFBjWqyKmf/NgK1uW2JAA==", 2033 | "dev": true, 2034 | "dependencies": { 2035 | "@ampproject/remapping": "^2.2.1", 2036 | "@jridgewell/sourcemap-codec": "^1.4.15", 2037 | "@jridgewell/trace-mapping": "^0.3.18", 2038 | "@types/estree": "^1.0.1", 2039 | "acorn": "^8.9.0", 2040 | "aria-query": "^5.3.0", 2041 | "axobject-query": "^4.0.0", 2042 | "code-red": "^1.0.3", 2043 | "css-tree": "^2.3.1", 2044 | "estree-walker": "^3.0.3", 2045 | "is-reference": "^3.0.1", 2046 | "locate-character": "^3.0.0", 2047 | "magic-string": "^0.30.4", 2048 | "periscopic": "^3.1.0" 2049 | }, 2050 | "engines": { 2051 | "node": ">=16" 2052 | } 2053 | }, 2054 | "node_modules/svelte-hmr": { 2055 | "version": "0.16.0", 2056 | "resolved": "https://registry.npmjs.org/svelte-hmr/-/svelte-hmr-0.16.0.tgz", 2057 | "integrity": "sha512-Gyc7cOS3VJzLlfj7wKS0ZnzDVdv3Pn2IuVeJPk9m2skfhcu5bq3wtIZyQGggr7/Iim5rH5cncyQft/kRLupcnA==", 2058 | "dev": true, 2059 | "engines": { 2060 | "node": "^12.20 || ^14.13.1 || >= 16" 2061 | }, 2062 | "peerDependencies": { 2063 | "svelte": "^3.19.0 || ^4.0.0" 2064 | } 2065 | }, 2066 | "node_modules/tiny-glob": { 2067 | "version": "0.2.9", 2068 | "resolved": "https://registry.npmjs.org/tiny-glob/-/tiny-glob-0.2.9.tgz", 2069 | "integrity": "sha512-g/55ssRPUjShh+xkfx9UPDXqhckHEsHr4Vd9zX55oSdGZc/MD0m3sferOkwWtp98bv+kcVfEHtRJgBVJzelrzg==", 2070 | "dev": true, 2071 | "dependencies": { 2072 | "globalyzer": "0.1.0", 2073 | "globrex": "^0.1.2" 2074 | } 2075 | }, 2076 | "node_modules/to-regex-range": { 2077 | "version": "5.0.1", 2078 | "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", 2079 | "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", 2080 | "dev": true, 2081 | "dependencies": { 2082 | "is-number": "^7.0.0" 2083 | }, 2084 | "engines": { 2085 | "node": ">=8.0" 2086 | } 2087 | }, 2088 | "node_modules/totalist": { 2089 | "version": "3.0.1", 2090 | "resolved": "https://registry.npmjs.org/totalist/-/totalist-3.0.1.tgz", 2091 | "integrity": "sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==", 2092 | "dev": true, 2093 | "engines": { 2094 | "node": ">=6" 2095 | } 2096 | }, 2097 | "node_modules/ts-json-schema-generator": { 2098 | "version": "1.5.1", 2099 | "resolved": "https://registry.npmjs.org/ts-json-schema-generator/-/ts-json-schema-generator-1.5.1.tgz", 2100 | "integrity": "sha512-apX5qG2+NA66j7b4AJm8q/DpdTeOsjfh7A3LpKsUiil0FepkNwtN28zYgjrsiiya2/OPhsr/PSjX5FUYg79rCg==", 2101 | "dev": true, 2102 | "dependencies": { 2103 | "@types/json-schema": "^7.0.15", 2104 | "commander": "^12.0.0", 2105 | "glob": "^8.0.3", 2106 | "json5": "^2.2.3", 2107 | "normalize-path": "^3.0.0", 2108 | "safe-stable-stringify": "^2.4.3", 2109 | "typescript": "~5.4.2" 2110 | }, 2111 | "bin": { 2112 | "ts-json-schema-generator": "bin/ts-json-schema-generator" 2113 | }, 2114 | "engines": { 2115 | "node": ">=10.0.0" 2116 | } 2117 | }, 2118 | "node_modules/tslib": { 2119 | "version": "2.6.2", 2120 | "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", 2121 | "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", 2122 | "dev": true 2123 | }, 2124 | "node_modules/typescript": { 2125 | "version": "5.4.5", 2126 | "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.4.5.tgz", 2127 | "integrity": "sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ==", 2128 | "dev": true, 2129 | "bin": { 2130 | "tsc": "bin/tsc", 2131 | "tsserver": "bin/tsserver" 2132 | }, 2133 | "engines": { 2134 | "node": ">=14.17" 2135 | } 2136 | }, 2137 | "node_modules/undici": { 2138 | "version": "5.28.4", 2139 | "resolved": "https://registry.npmjs.org/undici/-/undici-5.28.4.tgz", 2140 | "integrity": "sha512-72RFADWFqKmUb2hmmvNODKL3p9hcB6Gt2DOQMis1SEBaV6a4MH8soBvzg+95CYhCKPFedut2JY9bMfrDl9D23g==", 2141 | "dev": true, 2142 | "dependencies": { 2143 | "@fastify/busboy": "^2.0.0" 2144 | }, 2145 | "engines": { 2146 | "node": ">=14.0" 2147 | } 2148 | }, 2149 | "node_modules/undici-types": { 2150 | "version": "5.26.5", 2151 | "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", 2152 | "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", 2153 | "dev": true 2154 | }, 2155 | "node_modules/vite": { 2156 | "version": "5.2.9", 2157 | "resolved": "https://registry.npmjs.org/vite/-/vite-5.2.9.tgz", 2158 | "integrity": "sha512-uOQWfuZBlc6Y3W/DTuQ1Sr+oIXWvqljLvS881SVmAj00d5RdgShLcuXWxseWPd4HXwiYBFW/vXHfKFeqj9uQnw==", 2159 | "dev": true, 2160 | "dependencies": { 2161 | "esbuild": "^0.20.1", 2162 | "postcss": "^8.4.38", 2163 | "rollup": "^4.13.0" 2164 | }, 2165 | "bin": { 2166 | "vite": "bin/vite.js" 2167 | }, 2168 | "engines": { 2169 | "node": "^18.0.0 || >=20.0.0" 2170 | }, 2171 | "funding": { 2172 | "url": "https://github.com/vitejs/vite?sponsor=1" 2173 | }, 2174 | "optionalDependencies": { 2175 | "fsevents": "~2.3.3" 2176 | }, 2177 | "peerDependencies": { 2178 | "@types/node": "^18.0.0 || >=20.0.0", 2179 | "less": "*", 2180 | "lightningcss": "^1.21.0", 2181 | "sass": "*", 2182 | "stylus": "*", 2183 | "sugarss": "*", 2184 | "terser": "^5.4.0" 2185 | }, 2186 | "peerDependenciesMeta": { 2187 | "@types/node": { 2188 | "optional": true 2189 | }, 2190 | "less": { 2191 | "optional": true 2192 | }, 2193 | "lightningcss": { 2194 | "optional": true 2195 | }, 2196 | "sass": { 2197 | "optional": true 2198 | }, 2199 | "stylus": { 2200 | "optional": true 2201 | }, 2202 | "sugarss": { 2203 | "optional": true 2204 | }, 2205 | "terser": { 2206 | "optional": true 2207 | } 2208 | } 2209 | }, 2210 | "node_modules/vitefu": { 2211 | "version": "0.2.5", 2212 | "resolved": "https://registry.npmjs.org/vitefu/-/vitefu-0.2.5.tgz", 2213 | "integrity": "sha512-SgHtMLoqaeeGnd2evZ849ZbACbnwQCIwRH57t18FxcXoZop0uQu0uzlIhJBlF/eWVzuce0sHeqPcDo+evVcg8Q==", 2214 | "dev": true, 2215 | "peerDependencies": { 2216 | "vite": "^3.0.0 || ^4.0.0 || ^5.0.0" 2217 | }, 2218 | "peerDependenciesMeta": { 2219 | "vite": { 2220 | "optional": true 2221 | } 2222 | } 2223 | }, 2224 | "node_modules/workerd": { 2225 | "version": "1.20240405.0", 2226 | "resolved": "https://registry.npmjs.org/workerd/-/workerd-1.20240405.0.tgz", 2227 | "integrity": "sha512-AWrOSBh4Ll7sBWHuh0aywm8hDkKqsZmcwnDB0PVGszWZM5mndNBI5iJ/8haXVpdoyqkJQEVdhET9JDi4yU8tRg==", 2228 | "dev": true, 2229 | "hasInstallScript": true, 2230 | "bin": { 2231 | "workerd": "bin/workerd" 2232 | }, 2233 | "engines": { 2234 | "node": ">=16" 2235 | }, 2236 | "optionalDependencies": { 2237 | "@cloudflare/workerd-darwin-64": "1.20240405.0", 2238 | "@cloudflare/workerd-darwin-arm64": "1.20240405.0", 2239 | "@cloudflare/workerd-linux-64": "1.20240405.0", 2240 | "@cloudflare/workerd-linux-arm64": "1.20240405.0", 2241 | "@cloudflare/workerd-windows-64": "1.20240405.0" 2242 | } 2243 | }, 2244 | "node_modules/worktop": { 2245 | "version": "0.8.0-next.18", 2246 | "resolved": "https://registry.npmjs.org/worktop/-/worktop-0.8.0-next.18.tgz", 2247 | "integrity": "sha512-+TvsA6VAVoMC3XDKR5MoC/qlLqDixEfOBysDEKnPIPou/NvoPWCAuXHXMsswwlvmEuvX56lQjvELLyLuzTKvRw==", 2248 | "dev": true, 2249 | "dependencies": { 2250 | "mrmime": "^2.0.0", 2251 | "regexparam": "^3.0.0" 2252 | }, 2253 | "engines": { 2254 | "node": ">=12" 2255 | } 2256 | }, 2257 | "node_modules/wrangler": { 2258 | "version": "3.50.0", 2259 | "resolved": "https://registry.npmjs.org/wrangler/-/wrangler-3.50.0.tgz", 2260 | "integrity": "sha512-JlLuch+6DtaC5HGp8YD9Au++XvMv34g3ySdlB5SyPbaObELi8P9ZID5vgyf9AA75djzxL7cuNOk1YdKCJEuq0w==", 2261 | "dev": true, 2262 | "dependencies": { 2263 | "@cloudflare/kv-asset-handler": "0.3.1", 2264 | "@esbuild-plugins/node-globals-polyfill": "^0.2.3", 2265 | "@esbuild-plugins/node-modules-polyfill": "^0.2.2", 2266 | "blake3-wasm": "^2.1.5", 2267 | "chokidar": "^3.5.3", 2268 | "esbuild": "0.17.19", 2269 | "miniflare": "3.20240405.1", 2270 | "nanoid": "^3.3.3", 2271 | "path-to-regexp": "^6.2.0", 2272 | "resolve": "^1.22.8", 2273 | "resolve.exports": "^2.0.2", 2274 | "selfsigned": "^2.0.1", 2275 | "source-map": "0.6.1", 2276 | "ts-json-schema-generator": "^1.5.0", 2277 | "xxhash-wasm": "^1.0.1" 2278 | }, 2279 | "bin": { 2280 | "wrangler": "bin/wrangler.js", 2281 | "wrangler2": "bin/wrangler.js" 2282 | }, 2283 | "engines": { 2284 | "node": ">=16.17.0" 2285 | }, 2286 | "optionalDependencies": { 2287 | "fsevents": "~2.3.2" 2288 | }, 2289 | "peerDependencies": { 2290 | "@cloudflare/workers-types": "^4.20240405.0" 2291 | }, 2292 | "peerDependenciesMeta": { 2293 | "@cloudflare/workers-types": { 2294 | "optional": true 2295 | } 2296 | } 2297 | }, 2298 | "node_modules/wrangler/node_modules/@esbuild/android-arm": { 2299 | "version": "0.17.19", 2300 | "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.17.19.tgz", 2301 | "integrity": "sha512-rIKddzqhmav7MSmoFCmDIb6e2W57geRsM94gV2l38fzhXMwq7hZoClug9USI2pFRGL06f4IOPHHpFNOkWieR8A==", 2302 | "cpu": [ 2303 | "arm" 2304 | ], 2305 | "dev": true, 2306 | "optional": true, 2307 | "os": [ 2308 | "android" 2309 | ], 2310 | "engines": { 2311 | "node": ">=12" 2312 | } 2313 | }, 2314 | "node_modules/wrangler/node_modules/@esbuild/android-arm64": { 2315 | "version": "0.17.19", 2316 | "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.17.19.tgz", 2317 | "integrity": "sha512-KBMWvEZooR7+kzY0BtbTQn0OAYY7CsiydT63pVEaPtVYF0hXbUaOyZog37DKxK7NF3XacBJOpYT4adIJh+avxA==", 2318 | "cpu": [ 2319 | "arm64" 2320 | ], 2321 | "dev": true, 2322 | "optional": true, 2323 | "os": [ 2324 | "android" 2325 | ], 2326 | "engines": { 2327 | "node": ">=12" 2328 | } 2329 | }, 2330 | "node_modules/wrangler/node_modules/@esbuild/android-x64": { 2331 | "version": "0.17.19", 2332 | "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.17.19.tgz", 2333 | "integrity": "sha512-uUTTc4xGNDT7YSArp/zbtmbhO0uEEK9/ETW29Wk1thYUJBz3IVnvgEiEwEa9IeLyvnpKrWK64Utw2bgUmDveww==", 2334 | "cpu": [ 2335 | "x64" 2336 | ], 2337 | "dev": true, 2338 | "optional": true, 2339 | "os": [ 2340 | "android" 2341 | ], 2342 | "engines": { 2343 | "node": ">=12" 2344 | } 2345 | }, 2346 | "node_modules/wrangler/node_modules/@esbuild/darwin-arm64": { 2347 | "version": "0.17.19", 2348 | "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.17.19.tgz", 2349 | "integrity": "sha512-80wEoCfF/hFKM6WE1FyBHc9SfUblloAWx6FJkFWTWiCoht9Mc0ARGEM47e67W9rI09YoUxJL68WHfDRYEAvOhg==", 2350 | "cpu": [ 2351 | "arm64" 2352 | ], 2353 | "dev": true, 2354 | "optional": true, 2355 | "os": [ 2356 | "darwin" 2357 | ], 2358 | "engines": { 2359 | "node": ">=12" 2360 | } 2361 | }, 2362 | "node_modules/wrangler/node_modules/@esbuild/darwin-x64": { 2363 | "version": "0.17.19", 2364 | "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.17.19.tgz", 2365 | "integrity": "sha512-IJM4JJsLhRYr9xdtLytPLSH9k/oxR3boaUIYiHkAawtwNOXKE8KoU8tMvryogdcT8AU+Bflmh81Xn6Q0vTZbQw==", 2366 | "cpu": [ 2367 | "x64" 2368 | ], 2369 | "dev": true, 2370 | "optional": true, 2371 | "os": [ 2372 | "darwin" 2373 | ], 2374 | "engines": { 2375 | "node": ">=12" 2376 | } 2377 | }, 2378 | "node_modules/wrangler/node_modules/@esbuild/freebsd-arm64": { 2379 | "version": "0.17.19", 2380 | "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.17.19.tgz", 2381 | "integrity": "sha512-pBwbc7DufluUeGdjSU5Si+P3SoMF5DQ/F/UmTSb8HXO80ZEAJmrykPyzo1IfNbAoaqw48YRpv8shwd1NoI0jcQ==", 2382 | "cpu": [ 2383 | "arm64" 2384 | ], 2385 | "dev": true, 2386 | "optional": true, 2387 | "os": [ 2388 | "freebsd" 2389 | ], 2390 | "engines": { 2391 | "node": ">=12" 2392 | } 2393 | }, 2394 | "node_modules/wrangler/node_modules/@esbuild/freebsd-x64": { 2395 | "version": "0.17.19", 2396 | "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.17.19.tgz", 2397 | "integrity": "sha512-4lu+n8Wk0XlajEhbEffdy2xy53dpR06SlzvhGByyg36qJw6Kpfk7cp45DR/62aPH9mtJRmIyrXAS5UWBrJT6TQ==", 2398 | "cpu": [ 2399 | "x64" 2400 | ], 2401 | "dev": true, 2402 | "optional": true, 2403 | "os": [ 2404 | "freebsd" 2405 | ], 2406 | "engines": { 2407 | "node": ">=12" 2408 | } 2409 | }, 2410 | "node_modules/wrangler/node_modules/@esbuild/linux-arm": { 2411 | "version": "0.17.19", 2412 | "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.17.19.tgz", 2413 | "integrity": "sha512-cdmT3KxjlOQ/gZ2cjfrQOtmhG4HJs6hhvm3mWSRDPtZ/lP5oe8FWceS10JaSJC13GBd4eH/haHnqf7hhGNLerA==", 2414 | "cpu": [ 2415 | "arm" 2416 | ], 2417 | "dev": true, 2418 | "optional": true, 2419 | "os": [ 2420 | "linux" 2421 | ], 2422 | "engines": { 2423 | "node": ">=12" 2424 | } 2425 | }, 2426 | "node_modules/wrangler/node_modules/@esbuild/linux-arm64": { 2427 | "version": "0.17.19", 2428 | "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.17.19.tgz", 2429 | "integrity": "sha512-ct1Tg3WGwd3P+oZYqic+YZF4snNl2bsnMKRkb3ozHmnM0dGWuxcPTTntAF6bOP0Sp4x0PjSF+4uHQ1xvxfRKqg==", 2430 | "cpu": [ 2431 | "arm64" 2432 | ], 2433 | "dev": true, 2434 | "optional": true, 2435 | "os": [ 2436 | "linux" 2437 | ], 2438 | "engines": { 2439 | "node": ">=12" 2440 | } 2441 | }, 2442 | "node_modules/wrangler/node_modules/@esbuild/linux-ia32": { 2443 | "version": "0.17.19", 2444 | "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.17.19.tgz", 2445 | "integrity": "sha512-w4IRhSy1VbsNxHRQpeGCHEmibqdTUx61Vc38APcsRbuVgK0OPEnQ0YD39Brymn96mOx48Y2laBQGqgZ0j9w6SQ==", 2446 | "cpu": [ 2447 | "ia32" 2448 | ], 2449 | "dev": true, 2450 | "optional": true, 2451 | "os": [ 2452 | "linux" 2453 | ], 2454 | "engines": { 2455 | "node": ">=12" 2456 | } 2457 | }, 2458 | "node_modules/wrangler/node_modules/@esbuild/linux-loong64": { 2459 | "version": "0.17.19", 2460 | "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.17.19.tgz", 2461 | "integrity": "sha512-2iAngUbBPMq439a+z//gE+9WBldoMp1s5GWsUSgqHLzLJ9WoZLZhpwWuym0u0u/4XmZ3gpHmzV84PonE+9IIdQ==", 2462 | "cpu": [ 2463 | "loong64" 2464 | ], 2465 | "dev": true, 2466 | "optional": true, 2467 | "os": [ 2468 | "linux" 2469 | ], 2470 | "engines": { 2471 | "node": ">=12" 2472 | } 2473 | }, 2474 | "node_modules/wrangler/node_modules/@esbuild/linux-mips64el": { 2475 | "version": "0.17.19", 2476 | "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.17.19.tgz", 2477 | "integrity": "sha512-LKJltc4LVdMKHsrFe4MGNPp0hqDFA1Wpt3jE1gEyM3nKUvOiO//9PheZZHfYRfYl6AwdTH4aTcXSqBerX0ml4A==", 2478 | "cpu": [ 2479 | "mips64el" 2480 | ], 2481 | "dev": true, 2482 | "optional": true, 2483 | "os": [ 2484 | "linux" 2485 | ], 2486 | "engines": { 2487 | "node": ">=12" 2488 | } 2489 | }, 2490 | "node_modules/wrangler/node_modules/@esbuild/linux-ppc64": { 2491 | "version": "0.17.19", 2492 | "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.17.19.tgz", 2493 | "integrity": "sha512-/c/DGybs95WXNS8y3Ti/ytqETiW7EU44MEKuCAcpPto3YjQbyK3IQVKfF6nbghD7EcLUGl0NbiL5Rt5DMhn5tg==", 2494 | "cpu": [ 2495 | "ppc64" 2496 | ], 2497 | "dev": true, 2498 | "optional": true, 2499 | "os": [ 2500 | "linux" 2501 | ], 2502 | "engines": { 2503 | "node": ">=12" 2504 | } 2505 | }, 2506 | "node_modules/wrangler/node_modules/@esbuild/linux-riscv64": { 2507 | "version": "0.17.19", 2508 | "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.17.19.tgz", 2509 | "integrity": "sha512-FC3nUAWhvFoutlhAkgHf8f5HwFWUL6bYdvLc/TTuxKlvLi3+pPzdZiFKSWz/PF30TB1K19SuCxDTI5KcqASJqA==", 2510 | "cpu": [ 2511 | "riscv64" 2512 | ], 2513 | "dev": true, 2514 | "optional": true, 2515 | "os": [ 2516 | "linux" 2517 | ], 2518 | "engines": { 2519 | "node": ">=12" 2520 | } 2521 | }, 2522 | "node_modules/wrangler/node_modules/@esbuild/linux-s390x": { 2523 | "version": "0.17.19", 2524 | "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.17.19.tgz", 2525 | "integrity": "sha512-IbFsFbxMWLuKEbH+7sTkKzL6NJmG2vRyy6K7JJo55w+8xDk7RElYn6xvXtDW8HCfoKBFK69f3pgBJSUSQPr+4Q==", 2526 | "cpu": [ 2527 | "s390x" 2528 | ], 2529 | "dev": true, 2530 | "optional": true, 2531 | "os": [ 2532 | "linux" 2533 | ], 2534 | "engines": { 2535 | "node": ">=12" 2536 | } 2537 | }, 2538 | "node_modules/wrangler/node_modules/@esbuild/linux-x64": { 2539 | "version": "0.17.19", 2540 | "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.17.19.tgz", 2541 | "integrity": "sha512-68ngA9lg2H6zkZcyp22tsVt38mlhWde8l3eJLWkyLrp4HwMUr3c1s/M2t7+kHIhvMjglIBrFpncX1SzMckomGw==", 2542 | "cpu": [ 2543 | "x64" 2544 | ], 2545 | "dev": true, 2546 | "optional": true, 2547 | "os": [ 2548 | "linux" 2549 | ], 2550 | "engines": { 2551 | "node": ">=12" 2552 | } 2553 | }, 2554 | "node_modules/wrangler/node_modules/@esbuild/netbsd-x64": { 2555 | "version": "0.17.19", 2556 | "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.17.19.tgz", 2557 | "integrity": "sha512-CwFq42rXCR8TYIjIfpXCbRX0rp1jo6cPIUPSaWwzbVI4aOfX96OXY8M6KNmtPcg7QjYeDmN+DD0Wp3LaBOLf4Q==", 2558 | "cpu": [ 2559 | "x64" 2560 | ], 2561 | "dev": true, 2562 | "optional": true, 2563 | "os": [ 2564 | "netbsd" 2565 | ], 2566 | "engines": { 2567 | "node": ">=12" 2568 | } 2569 | }, 2570 | "node_modules/wrangler/node_modules/@esbuild/openbsd-x64": { 2571 | "version": "0.17.19", 2572 | "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.17.19.tgz", 2573 | "integrity": "sha512-cnq5brJYrSZ2CF6c35eCmviIN3k3RczmHz8eYaVlNasVqsNY+JKohZU5MKmaOI+KkllCdzOKKdPs762VCPC20g==", 2574 | "cpu": [ 2575 | "x64" 2576 | ], 2577 | "dev": true, 2578 | "optional": true, 2579 | "os": [ 2580 | "openbsd" 2581 | ], 2582 | "engines": { 2583 | "node": ">=12" 2584 | } 2585 | }, 2586 | "node_modules/wrangler/node_modules/@esbuild/sunos-x64": { 2587 | "version": "0.17.19", 2588 | "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.17.19.tgz", 2589 | "integrity": "sha512-vCRT7yP3zX+bKWFeP/zdS6SqdWB8OIpaRq/mbXQxTGHnIxspRtigpkUcDMlSCOejlHowLqII7K2JKevwyRP2rg==", 2590 | "cpu": [ 2591 | "x64" 2592 | ], 2593 | "dev": true, 2594 | "optional": true, 2595 | "os": [ 2596 | "sunos" 2597 | ], 2598 | "engines": { 2599 | "node": ">=12" 2600 | } 2601 | }, 2602 | "node_modules/wrangler/node_modules/@esbuild/win32-arm64": { 2603 | "version": "0.17.19", 2604 | "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.17.19.tgz", 2605 | "integrity": "sha512-yYx+8jwowUstVdorcMdNlzklLYhPxjniHWFKgRqH7IFlUEa0Umu3KuYplf1HUZZ422e3NU9F4LGb+4O0Kdcaag==", 2606 | "cpu": [ 2607 | "arm64" 2608 | ], 2609 | "dev": true, 2610 | "optional": true, 2611 | "os": [ 2612 | "win32" 2613 | ], 2614 | "engines": { 2615 | "node": ">=12" 2616 | } 2617 | }, 2618 | "node_modules/wrangler/node_modules/@esbuild/win32-ia32": { 2619 | "version": "0.17.19", 2620 | "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.17.19.tgz", 2621 | "integrity": "sha512-eggDKanJszUtCdlVs0RB+h35wNlb5v4TWEkq4vZcmVt5u/HiDZrTXe2bWFQUez3RgNHwx/x4sk5++4NSSicKkw==", 2622 | "cpu": [ 2623 | "ia32" 2624 | ], 2625 | "dev": true, 2626 | "optional": true, 2627 | "os": [ 2628 | "win32" 2629 | ], 2630 | "engines": { 2631 | "node": ">=12" 2632 | } 2633 | }, 2634 | "node_modules/wrangler/node_modules/@esbuild/win32-x64": { 2635 | "version": "0.17.19", 2636 | "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.17.19.tgz", 2637 | "integrity": "sha512-lAhycmKnVOuRYNtRtatQR1LPQf2oYCkRGkSFnseDAKPl8lu5SOsK/e1sXe5a0Pc5kHIHe6P2I/ilntNv2xf3cA==", 2638 | "cpu": [ 2639 | "x64" 2640 | ], 2641 | "dev": true, 2642 | "optional": true, 2643 | "os": [ 2644 | "win32" 2645 | ], 2646 | "engines": { 2647 | "node": ">=12" 2648 | } 2649 | }, 2650 | "node_modules/wrangler/node_modules/esbuild": { 2651 | "version": "0.17.19", 2652 | "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.17.19.tgz", 2653 | "integrity": "sha512-XQ0jAPFkK/u3LcVRcvVHQcTIqD6E2H1fvZMA5dQPSOWb3suUbWbfbRf94pjc0bNzRYLfIrDRQXr7X+LHIm5oHw==", 2654 | "dev": true, 2655 | "hasInstallScript": true, 2656 | "bin": { 2657 | "esbuild": "bin/esbuild" 2658 | }, 2659 | "engines": { 2660 | "node": ">=12" 2661 | }, 2662 | "optionalDependencies": { 2663 | "@esbuild/android-arm": "0.17.19", 2664 | "@esbuild/android-arm64": "0.17.19", 2665 | "@esbuild/android-x64": "0.17.19", 2666 | "@esbuild/darwin-arm64": "0.17.19", 2667 | "@esbuild/darwin-x64": "0.17.19", 2668 | "@esbuild/freebsd-arm64": "0.17.19", 2669 | "@esbuild/freebsd-x64": "0.17.19", 2670 | "@esbuild/linux-arm": "0.17.19", 2671 | "@esbuild/linux-arm64": "0.17.19", 2672 | "@esbuild/linux-ia32": "0.17.19", 2673 | "@esbuild/linux-loong64": "0.17.19", 2674 | "@esbuild/linux-mips64el": "0.17.19", 2675 | "@esbuild/linux-ppc64": "0.17.19", 2676 | "@esbuild/linux-riscv64": "0.17.19", 2677 | "@esbuild/linux-s390x": "0.17.19", 2678 | "@esbuild/linux-x64": "0.17.19", 2679 | "@esbuild/netbsd-x64": "0.17.19", 2680 | "@esbuild/openbsd-x64": "0.17.19", 2681 | "@esbuild/sunos-x64": "0.17.19", 2682 | "@esbuild/win32-arm64": "0.17.19", 2683 | "@esbuild/win32-ia32": "0.17.19", 2684 | "@esbuild/win32-x64": "0.17.19" 2685 | } 2686 | }, 2687 | "node_modules/wrangler/node_modules/nanoid": { 2688 | "version": "3.3.7", 2689 | "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", 2690 | "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", 2691 | "dev": true, 2692 | "funding": [ 2693 | { 2694 | "type": "github", 2695 | "url": "https://github.com/sponsors/ai" 2696 | } 2697 | ], 2698 | "bin": { 2699 | "nanoid": "bin/nanoid.cjs" 2700 | }, 2701 | "engines": { 2702 | "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" 2703 | } 2704 | }, 2705 | "node_modules/wrappy": { 2706 | "version": "1.0.2", 2707 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", 2708 | "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", 2709 | "dev": true 2710 | }, 2711 | "node_modules/ws": { 2712 | "version": "8.17.1", 2713 | "resolved": "https://registry.npmjs.org/ws/-/ws-8.17.1.tgz", 2714 | "integrity": "sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==", 2715 | "dev": true, 2716 | "engines": { 2717 | "node": ">=10.0.0" 2718 | }, 2719 | "peerDependencies": { 2720 | "bufferutil": "^4.0.1", 2721 | "utf-8-validate": ">=5.0.2" 2722 | }, 2723 | "peerDependenciesMeta": { 2724 | "bufferutil": { 2725 | "optional": true 2726 | }, 2727 | "utf-8-validate": { 2728 | "optional": true 2729 | } 2730 | } 2731 | }, 2732 | "node_modules/xxhash-wasm": { 2733 | "version": "1.0.2", 2734 | "resolved": "https://registry.npmjs.org/xxhash-wasm/-/xxhash-wasm-1.0.2.tgz", 2735 | "integrity": "sha512-ibF0Or+FivM9lNrg+HGJfVX8WJqgo+kCLDc4vx6xMeTce7Aj+DLttKbxxRR/gNLSAelRc1omAPlJ77N/Jem07A==", 2736 | "dev": true 2737 | }, 2738 | "node_modules/youch": { 2739 | "version": "3.3.3", 2740 | "resolved": "https://registry.npmjs.org/youch/-/youch-3.3.3.tgz", 2741 | "integrity": "sha512-qSFXUk3UZBLfggAW3dJKg0BMblG5biqSF8M34E06o5CSsZtH92u9Hqmj2RzGiHDi64fhe83+4tENFP2DB6t6ZA==", 2742 | "dev": true, 2743 | "dependencies": { 2744 | "cookie": "^0.5.0", 2745 | "mustache": "^4.2.0", 2746 | "stacktracey": "^2.1.8" 2747 | } 2748 | }, 2749 | "node_modules/youch/node_modules/cookie": { 2750 | "version": "0.5.0", 2751 | "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", 2752 | "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==", 2753 | "dev": true, 2754 | "engines": { 2755 | "node": ">= 0.6" 2756 | } 2757 | }, 2758 | "node_modules/zod": { 2759 | "version": "3.22.4", 2760 | "resolved": "https://registry.npmjs.org/zod/-/zod-3.22.4.tgz", 2761 | "integrity": "sha512-iC+8Io04lddc+mVqQ9AZ7OQ2MrUKGN+oIQyq1vemgt46jwCwLfhq7/pwnBnNXXXZb8VTVLKwp9EDkx+ryxIWmg==", 2762 | "dev": true, 2763 | "funding": { 2764 | "url": "https://github.com/sponsors/colinhacks" 2765 | } 2766 | } 2767 | } 2768 | } 2769 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "svelte-telegram-captcha-bot", 3 | "version": "0.0.1", 4 | "private": true, 5 | "scripts": { 6 | "dev": "vite dev", 7 | "build": "CF_PAGES=1 vite build", 8 | "preview": "npm run build && wrangler pages dev .svelte-kit/cloudflare", 9 | "lint": "prettier --check .", 10 | "format": "prettier --write .", 11 | "deploy": "npm run build && wrangler pages deploy .svelte-kit/cloudflare" 12 | }, 13 | "devDependencies": { 14 | "@sveltejs/adapter-auto": "^3.0.0", 15 | "@sveltejs/adapter-cloudflare": "^4.4.0", 16 | "@sveltejs/kit": "^2.0.0", 17 | "@sveltejs/vite-plugin-svelte": "^3.0.0", 18 | "prettier": "^3.1.1", 19 | "prettier-plugin-svelte": "^3.1.2", 20 | "svelte": "^4.2.7", 21 | "vite": "^5.0.3", 22 | "wrangler": "^3.50.0" 23 | }, 24 | "type": "module", 25 | "dependencies": { 26 | "@baselime/edge-logger": "^0.2.2", 27 | "@opentelemetry/api": "^1.8.0", 28 | "@telegram-auth/server": "^1.0.3", 29 | "ascii-text-generator": "^1.0.5", 30 | "is-in-subnet": "^4.0.1", 31 | "nanoid": "^5.0.7" 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /src/app.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | %sveltekit.head% 8 | 9 | 10 |
%sveltekit.body%
11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /src/hooks.server.js: -------------------------------------------------------------------------------- 1 | import { BaselimeLogger } from '@baselime/edge-logger'; 2 | import { env } from '$env/dynamic/private'; 3 | import { dev } from '$app/environment'; 4 | 5 | export async function handle({ event, resolve }) { 6 | const context = event.platform?.context || { 7 | waitUntil: () => {}, 8 | passThroughOnException: () => {} 9 | }; 10 | 11 | var namespace = event.url.pathname; 12 | if (namespace.startsWith('/verify')) { 13 | namespace = '/verify'; 14 | } 15 | const logger = new BaselimeLogger({ 16 | ctx: context, 17 | namespace: namespace, 18 | dataset: 'tgcaptchabot-ds', 19 | apiKey: env.BASELIME_API_KEY, 20 | service: 'tgcaptchabot', 21 | isLocalDev: dev, 22 | requestId: crypto.randomUUID() 23 | }); 24 | 25 | event.locals.logger = logger; 26 | const response = await resolve(event); 27 | if (response.status >= 500) { 28 | const { url } = event; 29 | const ip = event.request.headers.get('cf-connecting-ip'); 30 | logger.error('WebAppError', { 31 | url: { 32 | href: url.href, 33 | origin: url.origin, 34 | protocol: url.protocol, 35 | hostname: url.hostname, 36 | port: url.port, 37 | pathname: url.pathname, 38 | search: url.search, 39 | hash: url.hash 40 | }, 41 | ip 42 | }); 43 | } 44 | 45 | context.waitUntil(logger.flush()); 46 | return response; 47 | } 48 | -------------------------------------------------------------------------------- /src/lib/api-url.js: -------------------------------------------------------------------------------- 1 | import { env } from '$env/dynamic/private'; 2 | 3 | /** 4 | * Return url to telegram api, optionally with parameters added 5 | * https://github.com/cvzi/telegram-bot-cloudflare/blob/b149ea8d0300c5c879adee1a48f4841169ac64d8/bot4.js#L126 6 | */ 7 | function apiUrl(methodName, params = null) { 8 | let query = ''; 9 | if (params) { 10 | query = '?' + new URLSearchParams(params).toString(); 11 | } 12 | return `https://api.telegram.org/bot${env.TG_BOT_TOKEN}/${methodName}${query}`; 13 | } 14 | 15 | export { apiUrl }; 16 | -------------------------------------------------------------------------------- /src/lib/index.js: -------------------------------------------------------------------------------- 1 | // place files you want to import through the `$lib` alias in this folder. 2 | -------------------------------------------------------------------------------- /src/routes/+page.svelte: -------------------------------------------------------------------------------- 1 |

Welcome to SvelteKit

2 |

Visit kit.svelte.dev to read the documentation

3 | -------------------------------------------------------------------------------- /src/routes/verify/[request_id]/+page.server.js: -------------------------------------------------------------------------------- 1 | import { error } from '@sveltejs/kit'; 2 | import { env } from '$env/dynamic/private'; 3 | import { AuthDataValidator } from '@telegram-auth/server'; 4 | import { apiUrl } from '$lib/api-url.js'; 5 | 6 | /* 7 | * @type {import('./$types').PageServerLoad} 8 | */ 9 | export async function load({ params, platform, url, locals }) { 10 | const tgWaitlist = await platform.env.DB.prepare( 11 | `SELECT tg_waitlist.*, tg_user.first_name, tg_user.last_name 12 | FROM tg_waitlist 13 | JOIN tg_user ON tg_waitlist.user_id = tg_user.user_id 14 | WHERE tg_waitlist.request_id = ?;` 15 | ) 16 | .bind(params.request_id) 17 | .first(); 18 | 19 | if (!tgWaitlist) { 20 | error(404, 'invalid request id'); 21 | } 22 | 23 | try { 24 | const validator = new AuthDataValidator({ botToken: env.TG_BOT_TOKEN }); 25 | const user = await validator.validate(url.searchParams); 26 | 27 | if (user.id != tgWaitlist.user_id) { 28 | error(403, 'forbidden'); 29 | } 30 | } catch (e) { 31 | locals.logger.error('invalid signature', { payload: { error: e.message } }); 32 | return error(403, 'invalid signature ' + e.message); 33 | } 34 | 35 | return { 36 | urlParam: url.searchParams.toString(), 37 | name: tgWaitlist.first_name + (tgWaitlist.last_name || '') 38 | }; 39 | } 40 | 41 | export const actions = { 42 | default: async ({ request, params, platform, url, locals }) => { 43 | const form = await request.formData(); 44 | const token = form.get('cf-turnstile-response'); 45 | const ip = request.headers.get('CF-Connecting-IP'); 46 | 47 | let formData = new FormData(); 48 | formData.append('secret', env.TURNSTILE_SECRET_KEY); 49 | formData.append('response', token); 50 | formData.append('remoteip', ip); 51 | 52 | const cfUrl = 'https://challenges.cloudflare.com/turnstile/v0/siteverify'; 53 | const captchaRes = await fetch(cfUrl, { body: formData, method: 'POST' }); 54 | const outcome = await captchaRes.json(); 55 | 56 | if (outcome?.success != true) { 57 | locals.logger.warn('Failed to validate Captcha', { payload: { request } }); 58 | return { success: false, message: 'Gagal Memvalidasi Captcha' }; 59 | } 60 | 61 | const tgWaitlist = await platform.env.DB.prepare( 62 | `SELECT tg_waitlist.*, tg_user.first_name, tg_user.last_name 63 | FROM tg_waitlist 64 | JOIN tg_user ON tg_waitlist.user_id = tg_user.user_id 65 | WHERE tg_waitlist.request_id = ?;` 66 | ) 67 | .bind(params.request_id) 68 | .first(); 69 | 70 | if (!tgWaitlist) { 71 | error(404, 'invalid request id'); 72 | } 73 | 74 | try { 75 | const validator = new AuthDataValidator({ botToken: env.TG_BOT_TOKEN }); 76 | const user = await validator.validate(url.searchParams); 77 | 78 | if (user.id != tgWaitlist.user_id) { 79 | error(403, 'forbidden'); 80 | } 81 | } catch (e) { 82 | locals.logger.error('invalid signature', { payload: { error: e.message, request } }); 83 | return error(403, 'invalid signature ' + e.message); 84 | } 85 | 86 | var responseJson = await ( 87 | await fetch( 88 | apiUrl('restrictChatMember', { 89 | chat_id: tgWaitlist.group_id, 90 | user_id: tgWaitlist.user_id, 91 | permissions: JSON.stringify({ 92 | can_send_messages: true, 93 | can_send_audios: true, 94 | can_send_documents: true, 95 | can_send_photos: true, 96 | can_send_videos: true, 97 | can_send_video_notes: true, 98 | can_send_voice_notes: true, 99 | can_send_polls: true, 100 | can_send_other_message: true, 101 | can_add_web_page_previews: true, 102 | can_change_info: true, 103 | can_invite_users: true, 104 | can_pin_messages: true, 105 | can_manage_topics: true 106 | }) 107 | }) 108 | ) 109 | ).json(); 110 | 111 | if (!responseJson.ok) { 112 | locals.logger.error('error tg update', { payload: { response: responseJson, request } }); 113 | error(500, 'error tg update'); 114 | } 115 | 116 | var responseJson = await ( 117 | await fetch( 118 | apiUrl('deleteMessage', { 119 | chat_id: tgWaitlist.group_id, 120 | message_id: tgWaitlist.bot_message_id 121 | }) 122 | ) 123 | ).json(); 124 | 125 | if (!responseJson.ok) { 126 | locals.logger.error('error tg update', { payload: { response: responseJson, request } }); 127 | error(500, 'tg sudah di allow, namun error menghapus pesan robot'); 128 | } 129 | 130 | await platform.env.DB.prepare("UPDATE tg_waitlist SET status = 'verified' WHERE request_id = ?") 131 | .bind(params.request_id) 132 | .run(); 133 | 134 | return { success: true, message: 'Berhasil memverifikasi, silahkan kembali ke grup' }; 135 | } 136 | }; 137 | -------------------------------------------------------------------------------- /src/routes/verify/[request_id]/+page.svelte: -------------------------------------------------------------------------------- 1 | 23 | 24 | 25 | Verifikasi Captcha Grup Telegram 26 | 27 | 28 |

Halo {data.name}, Lakukan verifikasi captcha

29 | 30 | {#if form} 31 | {form.message} 32 | {:else} 33 | lakukan verifikasi untuk bisa berdiskusi di grup. 34 | 35 |
36 |
37 | {#if clickMe} 38 | 39 | {:else} 40 | 41 | {/if} 42 |
43 | {/if} 44 | -------------------------------------------------------------------------------- /src/routes/webhook/activate/+server.js: -------------------------------------------------------------------------------- 1 | import { env } from '$env/dynamic/private'; 2 | import { apiUrl } from '$lib/api-url.js'; 3 | import { error, json } from '@sveltejs/kit'; 4 | 5 | export async function GET({ request, url }) { 6 | const authorization = request.headers.get('Authorization'); 7 | 8 | if (!authorization || !authorization.startsWith('Basic ')) 9 | return new Response('Unauthorized', { 10 | status: 401, 11 | headers: { 12 | 'WWW-Authenticate': 'Basic realm="Protected"' 13 | } 14 | }); 15 | 16 | const token = authorization.replace('Basic ', ''); 17 | 18 | const [username, password] = atob(token).split(':'); 19 | 20 | if (username != env.ADMIN_USERNAME || password != env.ADMIN_PASSWORD) { 21 | error(401, 'unauthorized'); 22 | } 23 | 24 | await fetch(apiUrl('deleteWebhook', {})); 25 | 26 | const allowed_updates = [ 27 | 'update_id', 28 | 'message', 29 | 'edited_message', 30 | 'channel_post', 31 | 'edited_channel_post', 32 | 'business_connection', 33 | 'business_message', 34 | 'edited_business_message', 35 | 'deleted_business_messages', 36 | 'message_reaction', 37 | 'message_reaction_count', 38 | 'inline_query', 39 | 'chosen_inline_result', 40 | 'shipping_query', 41 | 'pre_checkout_query', 42 | 'poll', 43 | 'poll_answer', 44 | 'my_chat_member', 45 | 'chat_member', 46 | 'chat_join_request', 47 | 'chat_boost', 48 | 'removed_chat_boost' 49 | ]; 50 | const webhookUrl = `${url.protocol}//${url.hostname}/webhook/receive`; 51 | const r = await ( 52 | await fetch( 53 | apiUrl('setWebhook', { 54 | url: webhookUrl, 55 | allowed_updates, 56 | max_connections: 100, 57 | secret_token: env.TG_WEBHOOK_VERIFY_SECRET 58 | }) 59 | ) 60 | ).json(); 61 | return json(r); 62 | } 63 | -------------------------------------------------------------------------------- /src/routes/webhook/receive/+server.js: -------------------------------------------------------------------------------- 1 | import { env } from '$env/dynamic/private'; 2 | import { json } from '@sveltejs/kit'; 3 | import { apiUrl } from '$lib/api-url.js'; 4 | import { isInSubnet } from 'is-in-subnet'; 5 | import { customAlphabet } from 'nanoid'; 6 | 7 | const nanoid = customAlphabet('23456789ABCDEFGHJKLMNPRTWXYZ', 10); 8 | 9 | export async function POST({ request, url, platform, locals }) { 10 | const ip = request.headers.get('cf-connecting-ip'); 11 | 12 | const payload = await request.json(); 13 | 14 | if (!isInSubnet(ip, '149.154.160.0/20') && !isInSubnet(ip, '91.108.4.0/22')) { 15 | locals.logger.info('Request from outside allowed subnet', { ip }); 16 | return json({}); 17 | } 18 | 19 | if ('message' in payload) { 20 | const message = payload.message; 21 | 22 | if (message.from.is_bot) { 23 | return json({}); 24 | } 25 | 26 | if ('new_chat_member' in message) { 27 | locals.logger.info('new webhook request', { ...payload, ip }); 28 | locals.logger.flush(); 29 | 30 | try { 31 | await fetch( 32 | apiUrl('deleteMessage', { chat_id: message.chat.id, message_id: message.message_id }) 33 | ); 34 | } catch (e) { 35 | locals.logger.error('service message delete', e); 36 | } 37 | 38 | const newMember = message['new_chat_member']; 39 | 40 | if (newMember['is_bot']) { 41 | return json({}); 42 | } 43 | 44 | const tgUser = await platform.env.DB.prepare('SELECT * from tg_user WHERE user_id = ?') 45 | .bind(newMember.id) 46 | .first(); 47 | 48 | if (!tgUser) { 49 | await platform.env.DB.prepare('INSERT INTO tg_user VALUES (?, ?, ?, ?, ?)') 50 | .bind( 51 | newMember.id, 52 | newMember.first_name, 53 | newMember?.last_name || '', 54 | JSON.stringify(newMember), 55 | 0 56 | ) 57 | .run(); 58 | } else { 59 | switch (tgUser.automated_account) { 60 | case 1: 61 | await fetch( 62 | apiUrl('banChatMember', { 63 | chat_id: message.chat.id, 64 | user_id: newMember.id, 65 | until_date: 0, 66 | revoke_messages: true 67 | }) 68 | ); 69 | locals.logger.warn('Banned user with automated account', { payload: { newMember } }); 70 | return json({}); 71 | case 2: 72 | locals.logger.info('Allowing user with non-automated account', { 73 | payload: { newMember } 74 | }); 75 | return json({}); 76 | } 77 | } 78 | 79 | const restrictUntil = parseInt(new Date().getTime() / 1000 + 3.024e7); // 350 days 80 | 81 | var responseJson = await ( 82 | await fetch( 83 | apiUrl('restrictChatMember', { 84 | chat_id: message.chat.id, 85 | user_id: newMember.id, 86 | until_date: restrictUntil, 87 | permissions: JSON.stringify({ 88 | can_send_messages: false, 89 | can_send_media_messages: false, 90 | can_send_other_messages: false, 91 | can_add_web_page_previews: false, 92 | can_send_polls: false, 93 | can_change_info: false, 94 | can_pin_messages: false, 95 | can_manage_topics: false, 96 | can_invite_users: false 97 | }) 98 | }) 99 | ) 100 | ).json(); 101 | if (!responseJson.ok) { 102 | locals.logger.error('error restrict', { payload: { response: responseJson, request } }); 103 | error(500, 'error'); 104 | } 105 | 106 | const requestId = nanoid(); 107 | 108 | var responseJson = await ( 109 | await fetch( 110 | apiUrl('sendMessage', { 111 | chat_id: message.chat.id, 112 | parse_mode: 'MarkdownV2', 113 | protect_content: true, 114 | text: `Halo [${newMember.first_name}](tg://user?id=${newMember.id}), Klik Verifikasi untuk bisa mengirim pesan`, 115 | reply_markup: JSON.stringify({ 116 | inline_keyboard: [ 117 | [{ text: 'Verifikasi', login_url: { url: `${url.origin}/verify/${requestId}` } }] 118 | ] 119 | }) 120 | }) 121 | ) 122 | ).json(); 123 | if (!responseJson.ok) { 124 | locals.logger.error('error send greeting', { 125 | payload: { response: responseJson, request } 126 | }); 127 | error(500, 'error'); 128 | } 129 | 130 | if (responseJson.ok) { 131 | await platform.env.DB.prepare('INSERT INTO tg_waitlist VALUES (?, ?, ?, ?, ?, ?, ?)') 132 | .bind( 133 | requestId, 134 | newMember.id, 135 | message.chat.id, 136 | message.date, 137 | 'wait-for-verification', 138 | nanoid(4), 139 | responseJson.result.message_id 140 | ) 141 | .run(); 142 | } 143 | } 144 | } 145 | 146 | return json({}); 147 | } 148 | -------------------------------------------------------------------------------- /src/routes/webhook/status/+server.js: -------------------------------------------------------------------------------- 1 | import { env } from '$env/dynamic/private'; 2 | import { apiUrl } from '$lib/api-url.js'; 3 | import { error, json } from '@sveltejs/kit'; 4 | 5 | export async function GET({ request, url }) { 6 | const authorization = request.headers.get('Authorization'); 7 | 8 | if (!authorization || !authorization.startsWith('Basic ')) 9 | return new Response('Unauthorized', { 10 | status: 401, 11 | headers: { 12 | 'WWW-Authenticate': 'Basic realm="Protected"' 13 | } 14 | }); 15 | 16 | const token = authorization.replace('Basic ', ''); 17 | 18 | const [username, password] = atob(token).split(':'); 19 | 20 | if (username != env.ADMIN_USERNAME || password != env.ADMIN_PASSWORD) { 21 | error(401, 'unauthorized'); 22 | } 23 | 24 | const webhookUrl = `${url.protocol}//${url.hostname}/webhook/receive`; 25 | const r = await ( 26 | await fetch( 27 | apiUrl('getWebhookInfo', { url: webhookUrl, secret_token: env.TG_WEBHOOK_VERIFY_SECRET }) 28 | ) 29 | ).json(); 30 | return json(r); 31 | } 32 | -------------------------------------------------------------------------------- /static/favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codenoid/sveltekit-telegram-captcha-bot/8d73c1f619d05b8f103ef8e38f935ca6c2080455/static/favicon.png -------------------------------------------------------------------------------- /static/s1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codenoid/sveltekit-telegram-captcha-bot/8d73c1f619d05b8f103ef8e38f935ca6c2080455/static/s1.png -------------------------------------------------------------------------------- /static/s2.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codenoid/sveltekit-telegram-captcha-bot/8d73c1f619d05b8f103ef8e38f935ca6c2080455/static/s2.jpeg -------------------------------------------------------------------------------- /svelte.config.js: -------------------------------------------------------------------------------- 1 | import adapter from '@sveltejs/adapter-cloudflare'; 2 | 3 | /** @type {import('@sveltejs/kit').Config} */ 4 | const config = { 5 | kit: { 6 | // adapter-auto only supports some environments, see https://kit.svelte.dev/docs/adapter-auto for a list. 7 | // If your environment is not supported or you settled on a specific environment, switch out the adapter. 8 | // See https://kit.svelte.dev/docs/adapters for more information about adapters. 9 | adapter: adapter(), 10 | csrf: { checkOrigin: false } 11 | } 12 | }; 13 | 14 | export default config; 15 | -------------------------------------------------------------------------------- /vite.config.js: -------------------------------------------------------------------------------- 1 | import { sveltekit } from '@sveltejs/kit/vite'; 2 | import { defineConfig } from 'vite'; 3 | 4 | export default defineConfig({ 5 | plugins: [sveltekit()] 6 | }); 7 | -------------------------------------------------------------------------------- /wrangler.toml: -------------------------------------------------------------------------------- 1 | #:schema node_modules/wrangler/config-schema.json 2 | name = "svelte-telegram-captcha-bot" 3 | compatibility_date = "2024-04-05" 4 | 5 | logpush = true 6 | # Variable bindings. These are arbitrary, plaintext strings (similar to environment variables) 7 | # Note: Use secrets to store sensitive data. 8 | # Docs: https://developers.cloudflare.com/pages/functions/bindings/#environment-variables 9 | # [vars] 10 | # MY_VARIABLE = "production_value" 11 | 12 | # Bind the Workers AI model catalog. Run machine learning models, powered by serverless GPUs, on Cloudflare’s global network 13 | # Docs: https://developers.cloudflare.com/pages/functions/bindings/#workers-ai 14 | # [ai] 15 | # binding = "AI" 16 | 17 | # Bind a D1 database. D1 is Cloudflare’s native serverless SQL database. 18 | # Docs: https://developers.cloudflare.com/pages/functions/bindings/#d1-databases 19 | [[d1_databases]] 20 | binding = "DB" 21 | database_name = "tgcaptchabot" 22 | database_id = "0fb60fed-f03f-482e-8581-5459e35a6ab7" 23 | 24 | # Bind a Durable Object. Durable objects are a scale-to-zero compute primitive based on the actor model. 25 | # Durable Objects can live for as long as needed. Use these when you need a long-running "server", such as in realtime apps. 26 | # Docs: https://developers.cloudflare.com/workers/runtime-apis/durable-objects 27 | # [[durable_objects.bindings]] 28 | # name = "MY_DURABLE_OBJECT" 29 | # class_name = "MyDurableObject" 30 | # script_name = 'my-durable-object' 31 | 32 | # Bind a KV Namespace. Use KV as persistent storage for small key-value pairs. 33 | # Docs: https://developers.cloudflare.com/pages/functions/bindings/#kv-namespaces 34 | # [[kv_namespaces]] 35 | # binding = "MY_KV_NAMESPACE" 36 | # id = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" 37 | 38 | # Bind a Queue producer. Use this binding to schedule an arbitrary task that may be processed later by a Queue consumer. 39 | # Docs: https://developers.cloudflare.com/pages/functions/bindings/#queue-producers 40 | # [[queues.producers]] 41 | # binding = "MY_QUEUE" 42 | # queue = "my-queue" 43 | 44 | # Bind an R2 Bucket. Use R2 to store arbitrarily large blobs of data, such as files. 45 | # Docs: https://developers.cloudflare.com/pages/functions/bindings/#r2-buckets 46 | # [[r2_buckets]] 47 | # binding = "MY_BUCKET" 48 | # bucket_name = "my-bucket" 49 | 50 | # Bind another Worker service. Use this binding to call another Worker without network overhead. 51 | # Docs: https://developers.cloudflare.com/pages/functions/bindings/#service-bindings 52 | # [[services]] 53 | # binding = "MY_SERVICE" 54 | # service = "my-service" --------------------------------------------------------------------------------