├── .dockerignore ├── .editorconfig ├── .github └── FUNDING.yml ├── .gitignore ├── .nvmrc ├── .replit ├── Dockerfile ├── README.md ├── captain-definition ├── manifest.yml ├── package.json ├── src ├── authorize.ts ├── constants.ts ├── index.ts ├── util │ ├── analytics.ts │ └── preventPings.ts └── views │ ├── blocks │ ├── code.ts │ ├── color.ts │ ├── font-family.ts │ ├── language.ts │ ├── message.ts │ └── theme.ts │ ├── home.ts │ └── modal.ts ├── static ├── css │ └── index.css ├── html │ ├── index.html │ ├── privacy-policy.html │ └── terms-of-service.html └── images │ ├── carbon-slack.png │ ├── carbon-ss-1.jpg │ └── carbon-ss-2.jpg ├── tsconfig.json └── yarn.lock /.dockerignore: -------------------------------------------------------------------------------- 1 | node_modules/ 2 | -------------------------------------------------------------------------------- /.editorconfig: -------------------------------------------------------------------------------- 1 | root = true 2 | 3 | [*] 4 | charset = utf-8 5 | indent_style = tab 6 | indent_size = 2 7 | max_line_length = 100 8 | trim_trailing_whitespace = true -------------------------------------------------------------------------------- /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | # These are supported funding model platforms 2 | 3 | open_collective: faisalsayed10 4 | ko_fi: faisalsayed10 5 | liberapay: faisalsayed10 6 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | .env 3 | *.error.log 4 | dist/ 5 | .DS_Store -------------------------------------------------------------------------------- /.nvmrc: -------------------------------------------------------------------------------- 1 | 14.0.0 -------------------------------------------------------------------------------- /.replit: -------------------------------------------------------------------------------- 1 | language = "nodejs" 2 | run = "npm run build && node dist/index.js" -------------------------------------------------------------------------------- /Dockerfile: -------------------------------------------------------------------------------- 1 | FROM node:18.16.1-alpine 2 | 3 | RUN apk add --no-cache git 4 | 5 | WORKDIR /usr/src/app 6 | 7 | COPY ["package.json", "yarn.lock", "./"] 8 | 9 | RUN yarn install --production=false 10 | 11 | COPY . . 12 | 13 | RUN yarn build 14 | 15 | ENV NODE_ENV production 16 | ENV PORT 80 17 | EXPOSE 80 18 | 19 | CMD ["node", "dist/index.js"] 20 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Carbon for Slack 2 | 3 | This is Carbon for Slack. 4 | It integrates the core functionality of [carbon-app](https://carbon.now.sh) into a Slack bot and makes it possible for you to create and share beautiful images of your code directly in Slack. 5 | 6 | How to use it? 7 | 1. Invoke the `/carbon` command (IMPORTANT: invoke the command only where you want to post your code because the image will be directly posted once you submit). 8 | 2. Add your desired code, theme, font, background in the appropriate fields. 9 | 3. Click Submit. 10 | 4. Wait for a few seconds and voila! 11 | 12 | ## Screenshots: 13 | 14 | ![slackbot-modal](https://carbon-slack.fayd.me/images/carbon-ss-1.jpg) 15 | 16 | ![output](https://carbon-slack.fayd.me/images/carbon-ss-2.jpg) 17 | 18 | 19 | Slack App Directory Listing: https://slack.com/apps/A01U2UBUMN0-carbon-for-slack?tab=more_info 20 | -------------------------------------------------------------------------------- /captain-definition: -------------------------------------------------------------------------------- 1 | { 2 | "schemaVersion": 2, 3 | "dockerfilePath": "./Dockerfile" 4 | } 5 | -------------------------------------------------------------------------------- /manifest.yml: -------------------------------------------------------------------------------- 1 | _metadata: 2 | major_version: 1 3 | minor_version: 1 4 | display_information: 5 | name: Carbon for Slack 6 | description: Create and share beautiful images of your source code directly from Slack 7 | background_color: "#0040ff" 8 | long_description: "Bot which helps you create and share beautiful images of your 9 | source code directly from Slack! (and without even going to carbon's 10 | website: https://carbon.now.sh)\r 11 | 12 | This makes it easier to share code snippets without leaving Slack at 13 | all!\r 14 | 15 | \r 16 | 17 | How to use it?\r 18 | 19 | 1. Invoke the /carbon command (IMPORTANT: invoke the command only where 20 | you want to post your code because the image will be directly posted once 21 | you submit)\r 22 | 23 | \r 24 | 25 | 2. Add your code, theme, font, background.\r 26 | 27 | \r 28 | 29 | 3.Click Submit.\r 30 | 31 | \r 32 | 33 | 4. Wait for a few seconds and voila!\r 34 | 35 | \r 36 | 37 | Source: https://github.com/faisalsayed10/carbon-slack/" 38 | features: 39 | bot_user: 40 | display_name: carbon-slack 41 | always_online: false 42 | shortcuts: 43 | - name: Delete Message 44 | type: message 45 | callback_id: delete_carbon 46 | description: Delete your message containing a carbon image 47 | slash_commands: 48 | - command: /carbon 49 | url: https://2d67-203-114-232-58.ngrok.io/slack/events 50 | description: Create an Image 51 | should_escape: false 52 | oauth_config: 53 | redirect_urls: 54 | - https://2d67-203-114-232-58.ngrok.io/slack/oauth_redirect 55 | - https://fayd.me/api/carbon-slack/verified 56 | scopes: 57 | user: 58 | - files:read 59 | - files:write 60 | bot: 61 | - channels:read 62 | - chat:write 63 | - chat:write.public 64 | - commands 65 | - files:read 66 | - files:write 67 | - team:read 68 | settings: 69 | interactivity: 70 | is_enabled: true 71 | request_url: https://2d67-203-114-232-58.ngrok.io/slack/events 72 | org_deploy_enabled: false 73 | socket_mode_enabled: false 74 | token_rotation_enabled: false 75 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "carbon-slack", 3 | "version": "1.0.0", 4 | "main": "index.js", 5 | "license": "MIT", 6 | "scripts": { 7 | "start": "ts-node src/index.ts", 8 | "dev": "nodemon --watch './**/*.ts' --exec 'ts-node' src/index.ts", 9 | "build": "rm -rf dist/ && tsc -p ." 10 | }, 11 | "dependencies": { 12 | "@slack/bolt": "^3.4.1", 13 | "axios": "^0.24.0", 14 | "deta": "^1.0.0", 15 | "express": "^4.17.1", 16 | "lodash": "^4.17.21", 17 | "node-fetch": "^2.6.2", 18 | "random-hex": "^1.0.2", 19 | "stump.js": "^1.1.0", 20 | "uuid": "^8.3.2" 21 | }, 22 | "devDependencies": { 23 | "@types/express": "^4.17.13", 24 | "@types/lodash": "^4.14.172", 25 | "@types/node-fetch": "^3.0.3", 26 | "@types/uuid": "^8.3.1", 27 | "dotenv": "^8.2.0", 28 | "nodemon": "^2.0.7", 29 | "ts-node": "^10.2.1", 30 | "typescript": "^4.4.3" 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /src/authorize.ts: -------------------------------------------------------------------------------- 1 | import { Installation, InstallationQuery } from "@slack/oauth"; 2 | import { installationStore } from "./constants"; 3 | 4 | export const storeInstallation = async (installation: Installation) => { 5 | const installationDetails = { 6 | appId: installation.appId, 7 | authVersion: installation.authVersion, 8 | bot: installation.bot, 9 | enterprise: { id: installation.enterprise?.id, name: installation.enterprise?.name }, 10 | enterpriseUrl: installation?.enterpriseUrl, 11 | // incomingWebhook: installation.incomingWebhook, 12 | isEnterpriseInstall: installation.isEnterpriseInstall, 13 | metadata: installation?.metadata, 14 | team: installation.team, 15 | tokenType: installation.tokenType, 16 | user: installation.user, 17 | } as any; 18 | 19 | if (installation.isEnterpriseInstall && installation.enterprise !== undefined) { 20 | await installationStore.put(installationDetails, installation.enterprise.id); 21 | return; 22 | } 23 | 24 | if (installation.team !== undefined) { 25 | await installationStore.put(installationDetails, installation.team.id); 26 | return; 27 | } 28 | throw new Error("Failed saving installation data to installationStore"); 29 | }; 30 | 31 | export const fetchInstallation = async (installQuery: InstallationQuery) => { 32 | if (installQuery.isEnterpriseInstall && installQuery.enterpriseId !== undefined) { 33 | const installation = await installationStore.get(installQuery.enterpriseId); 34 | return installation as unknown as Installation<"v1" | "v2", boolean>; 35 | } 36 | 37 | if (installQuery.teamId !== undefined) { 38 | const installation = await installationStore.get(installQuery.teamId); 39 | return installation as unknown as Installation<"v1" | "v2", boolean>; 40 | } 41 | throw new Error("Failed fetching installation"); 42 | }; 43 | 44 | export const deleteInstallation = async (installQuery: InstallationQuery) => { 45 | if (installQuery.isEnterpriseInstall && installQuery.enterpriseId !== undefined) 46 | return await installationStore.delete(installQuery.enterpriseId); 47 | 48 | if (installQuery.teamId !== undefined) return await installationStore.delete(installQuery.teamId); 49 | 50 | throw new Error("Failed to delete installation"); 51 | }; 52 | -------------------------------------------------------------------------------- /src/constants.ts: -------------------------------------------------------------------------------- 1 | import { Deta } from "deta"; 2 | import Stump from "stump.js"; 3 | 4 | export const stump = new Stump(['Debug', 'Timestamp']); 5 | 6 | export const installationStore = Deta(process.env.DETA_PROJECT_KEY).Base("carbon_workspaces"); 7 | 8 | export const FONTS = [ 9 | { 10 | text: { type: "plain_text", text: "Anonymous Pro" }, 11 | value: "Anonymous Pro", 12 | }, 13 | { 14 | text: { type: "plain_text", text: "Droid Sans Mono" }, 15 | value: "Droid Sans Mono", 16 | }, 17 | { 18 | text: { type: "plain_text", text: "Fantasque Sans Mono" }, 19 | value: "Fantasque Sans Mono", 20 | }, 21 | { text: { type: "plain_text", text: "Fira Code" }, value: "Fira Code" }, 22 | { text: { type: "plain_text", text: "Hack" }, value: "Hack" }, 23 | { 24 | text: { type: "plain_text", text: "IBM Plex Mono" }, 25 | value: "IBM Plex Mono", 26 | }, 27 | { text: { type: "plain_text", text: "Inconsolata" }, value: "Inconsolata" }, 28 | { text: { type: "plain_text", text: "Iosevka" }, value: "Iosevka" }, 29 | { 30 | text: { type: "plain_text", text: "JetBrains Mono" }, 31 | value: "JetBrains Mono", 32 | }, 33 | { text: { type: "plain_text", text: "Monoid" }, value: "Monoid" }, 34 | { 35 | text: { type: "plain_text", text: "Source Code Pro" }, 36 | value: "Source Code Pro", 37 | }, 38 | { text: { type: "plain_text", text: "Space Mono" }, value: "Space Mono" }, 39 | { text: { type: "plain_text", text: "Ubuntu Mono" }, value: "Ubuntu Mono" }, 40 | ]; 41 | 42 | export const THEMES = [ 43 | { 44 | text: { type: "plain_text", text: "3024 Night" }, 45 | value: "3024-night", 46 | }, 47 | { 48 | text: { type: "plain_text", text: "A11y Dark" }, 49 | value: "a11y-dark", 50 | }, 51 | { 52 | text: { type: "plain_text", text: "Blackboard" }, 53 | value: "blackboard", 54 | }, 55 | { 56 | text: { type: "plain_text", text: "Base 16 (Dark)" }, 57 | value: "base16-dark", 58 | }, 59 | { 60 | text: { type: "plain_text", text: "Base 16 (Light)" }, 61 | value: "base16-light", 62 | }, 63 | { text: { type: "plain_text", text: "Cobalt" }, value: "cobalt" }, 64 | { text: { type: "plain_text", text: "Dracula" }, value: "dracula" }, 65 | { text: { type: "plain_text", text: "Duotone" }, value: "duotone-dark" }, 66 | { text: { type: "plain_text", text: "Hopscotch" }, value: "hopscotch" }, 67 | { text: { type: "plain_text", text: "Lucario" }, value: "lucario" }, 68 | { text: { type: "plain_text", text: "Material" }, value: "material" }, 69 | { text: { type: "plain_text", text: "Monokai" }, value: "monokai" }, 70 | { text: { type: "plain_text", text: "Night Owl" }, value: "night-owl" }, 71 | { text: { type: "plain_text", text: "Nord" }, value: "nord" }, 72 | { text: { type: "plain_text", text: "Oceanic Next" }, value: "oceanic-next" }, 73 | { 74 | text: { 75 | type: "plain_text", 76 | text: "One Light", 77 | }, 78 | value: "one-light", 79 | }, 80 | { text: { type: "plain_text", text: "One Dark" }, value: "one-dark" }, 81 | { text: { type: "plain_text", text: "Panda" }, value: "panda-syntax" }, 82 | { text: { type: "plain_text", text: "Paraiso" }, value: "paraiso-dark" }, 83 | { text: { type: "plain_text", text: "Seti" }, value: "seti" }, 84 | { 85 | text: { 86 | type: "plain_text", 87 | text: "Shades of Purple ", 88 | }, 89 | value: "shades-of-purple", 90 | }, 91 | { 92 | text: { 93 | type: "plain_text", 94 | text: "Solarized (Dark)", 95 | }, 96 | value: "solarized dark", 97 | }, 98 | { 99 | text: { 100 | type: "plain_text", 101 | text: "Solarized (Light)", 102 | }, 103 | value: "solarized light", 104 | }, 105 | { 106 | text: { 107 | type: "plain_text", 108 | text: "SynthWave '84", 109 | }, 110 | value: "synthwave-84", 111 | }, 112 | { 113 | text: { 114 | type: "plain_text", 115 | text: "Twilight", 116 | }, 117 | value: "twilight", 118 | }, 119 | { text: { type: "plain_text", text: "Verminal" }, value: "verminal" }, 120 | { text: { type: "plain_text", text: "VSCode" }, value: "vscode" }, 121 | { text: { type: "plain_text", text: "Yeti" }, value: "yeti" }, 122 | { text: { type: "plain_text", text: "Zenburn" }, value: "zenburn" }, 123 | ]; 124 | 125 | // needs refactoring 126 | export const LANGUAGES = [ 127 | { 128 | text: { 129 | type: "plain_text", 130 | text: "Auto", 131 | }, 132 | value: "auto", 133 | }, 134 | { 135 | text: { 136 | type: "plain_text", 137 | text: "Apache", 138 | }, 139 | value: "apache", 140 | }, 141 | { 142 | text: { 143 | type: "plain_text", 144 | text: "Bash", 145 | }, 146 | value: "shell", 147 | }, 148 | { 149 | text: { 150 | type: "plain_text", 151 | text: "Plain Text", 152 | }, 153 | value: "text", 154 | }, 155 | { 156 | text: { 157 | type: "plain_text", 158 | text: "C", 159 | }, 160 | value: "c", 161 | }, 162 | { 163 | text: { 164 | type: "plain_text", 165 | text: "C++", 166 | }, 167 | value: "clike", 168 | }, 169 | { 170 | text: { 171 | type: "plain_text", 172 | text: "C#", 173 | }, 174 | value: "clike", 175 | }, 176 | { 177 | text: { 178 | type: "plain_text", 179 | text: "Clojure", 180 | }, 181 | value: "clojure", 182 | }, 183 | { 184 | text: { 185 | type: "plain_text", 186 | text: "COBOL", 187 | }, 188 | value: "cobol", 189 | }, 190 | { 191 | text: { 192 | type: "plain_text", 193 | text: "CoffeeScript", 194 | }, 195 | value: "coffeescript", 196 | }, 197 | { 198 | text: { 199 | type: "plain_text", 200 | text: "Crystal", 201 | }, 202 | value: "crystal", 203 | }, 204 | { 205 | text: { 206 | type: "plain_text", 207 | text: "CSS", 208 | }, 209 | value: "css", 210 | }, 211 | { 212 | text: { 213 | type: "plain_text", 214 | text: "D", 215 | }, 216 | value: "d", 217 | }, 218 | { 219 | text: { 220 | type: "plain_text", 221 | text: "Dart", 222 | }, 223 | value: "dart", 224 | }, 225 | { 226 | text: { 227 | type: "plain_text", 228 | text: "Diff", 229 | }, 230 | value: "diff", 231 | }, 232 | { 233 | text: { 234 | type: "plain_text", 235 | text: "Django", 236 | }, 237 | value: "django", 238 | }, 239 | { 240 | text: { 241 | type: "plain_text", 242 | text: "Docker", 243 | }, 244 | value: "dockerfile", 245 | }, 246 | { 247 | text: { 248 | type: "plain_text", 249 | text: "Elixir", 250 | }, 251 | value: "elixir", 252 | }, 253 | { 254 | text: { 255 | type: "plain_text", 256 | text: "Elm", 257 | }, 258 | value: "elm", 259 | }, 260 | { 261 | text: { 262 | type: "plain_text", 263 | text: "Erlang", 264 | }, 265 | value: "erlang", 266 | }, 267 | { 268 | text: { 269 | type: "plain_text", 270 | text: "Fortran", 271 | }, 272 | value: "fortran", 273 | }, 274 | { 275 | text: { 276 | type: "plain_text", 277 | text: "Gherkin", 278 | }, 279 | value: "gherkin", 280 | }, 281 | { 282 | text: { 283 | type: "plain_text", 284 | text: "GraphQL", 285 | }, 286 | value: "graphql", 287 | }, 288 | { 289 | text: { 290 | type: "plain_text", 291 | text: "Go", 292 | }, 293 | value: "go", 294 | }, 295 | { 296 | text: { 297 | type: "plain_text", 298 | text: "Groovy", 299 | }, 300 | value: "groovy", 301 | }, 302 | { 303 | text: { 304 | type: "plain_text", 305 | text: "Handlebars", 306 | }, 307 | value: "handlebars", 308 | }, 309 | { 310 | text: { 311 | type: "plain_text", 312 | text: "Haskell", 313 | }, 314 | value: "haskell", 315 | }, 316 | { 317 | text: { 318 | type: "plain_text", 319 | text: "HTML/XML", 320 | }, 321 | value: "htmlmixed", 322 | }, 323 | { 324 | text: { 325 | type: "plain_text", 326 | text: "Java", 327 | }, 328 | value: "java", 329 | }, 330 | { 331 | text: { 332 | type: "plain_text", 333 | text: "JavaScript", 334 | }, 335 | value: "javascript", 336 | }, 337 | { 338 | text: { 339 | type: "plain_text", 340 | text: "JSON", 341 | }, 342 | value: "javascript", 343 | }, 344 | { 345 | text: { 346 | type: "plain_text", 347 | text: "JSX", 348 | }, 349 | value: "jsx", 350 | }, 351 | { 352 | text: { 353 | type: "plain_text", 354 | text: "Julia", 355 | }, 356 | value: "julia", 357 | }, 358 | { 359 | text: { 360 | type: "plain_text", 361 | text: "Kotlin", 362 | }, 363 | value: "kotlin", 364 | }, 365 | { 366 | text: { 367 | type: "plain_text", 368 | text: "LaTeX", 369 | }, 370 | value: "stex", 371 | }, 372 | { 373 | text: { 374 | type: "plain_text", 375 | text: "Lisp", 376 | }, 377 | value: "commonlisp", 378 | }, 379 | { 380 | text: { 381 | type: "plain_text", 382 | text: "Lua", 383 | }, 384 | value: "lua", 385 | }, 386 | { 387 | text: { 388 | type: "plain_text", 389 | text: "Markdown", 390 | }, 391 | value: "markdown", 392 | }, 393 | { 394 | text: { 395 | type: "plain_text", 396 | text: "Mathematica", 397 | }, 398 | value: "mathematica", 399 | }, 400 | { 401 | text: { 402 | type: "plain_text", 403 | text: "MATLAB/Octave", 404 | }, 405 | value: "octave", 406 | }, 407 | { 408 | text: { 409 | type: "plain_text", 410 | text: "MySQL", 411 | }, 412 | value: "sql", 413 | }, 414 | { 415 | text: { 416 | type: "plain_text", 417 | text: "N-Triples", 418 | }, 419 | value: "ntriples", 420 | }, 421 | { 422 | text: { 423 | type: "plain_text", 424 | text: "NGINX", 425 | }, 426 | value: "nginx", 427 | }, 428 | { 429 | text: { 430 | type: "plain_text", 431 | text: "Nim", 432 | }, 433 | value: "nim", 434 | }, 435 | { 436 | text: { 437 | type: "plain_text", 438 | text: "Objective C", 439 | }, 440 | value: "objectivec", 441 | }, 442 | { 443 | text: { 444 | type: "plain_text", 445 | text: "OCaml/F#", 446 | }, 447 | value: "mllike", 448 | }, 449 | { 450 | text: { 451 | type: "plain_text", 452 | text: "Pascal", 453 | }, 454 | value: "pascal", 455 | }, 456 | { 457 | text: { 458 | type: "plain_text", 459 | text: "Perl", 460 | }, 461 | value: "perl", 462 | }, 463 | { 464 | text: { 465 | type: "plain_text", 466 | text: "PHP", 467 | }, 468 | value: "php", 469 | }, 470 | { 471 | text: { 472 | type: "plain_text", 473 | text: "PowerShell", 474 | }, 475 | value: "powershell", 476 | }, 477 | { 478 | text: { 479 | type: "plain_text", 480 | text: "Python", 481 | }, 482 | value: "python", 483 | }, 484 | { 485 | text: { 486 | type: "plain_text", 487 | text: "R", 488 | }, 489 | value: "r", 490 | }, 491 | { 492 | text: { 493 | type: "plain_text", 494 | text: "RISC-V", 495 | }, 496 | value: "riscv", 497 | }, 498 | { 499 | text: { 500 | type: "plain_text", 501 | text: "Ruby", 502 | }, 503 | value: "ruby", 504 | }, 505 | { 506 | text: { 507 | type: "plain_text", 508 | text: "Rust", 509 | }, 510 | value: "rust", 511 | }, 512 | { 513 | text: { 514 | type: "plain_text", 515 | text: "Sass", 516 | }, 517 | value: "sass", 518 | }, 519 | { 520 | text: { 521 | type: "plain_text", 522 | text: "Scala", 523 | }, 524 | value: "scala", 525 | }, 526 | { 527 | text: { 528 | type: "plain_text", 529 | text: "Smalltalk", 530 | }, 531 | value: "smalltalk", 532 | }, 533 | { 534 | text: { 535 | type: "plain_text", 536 | text: "Solidity", 537 | }, 538 | value: "solidity", 539 | }, 540 | { 541 | text: { 542 | type: "plain_text", 543 | text: "SPARQL", 544 | }, 545 | value: "sparql", 546 | }, 547 | { 548 | text: { 549 | type: "plain_text", 550 | text: "SQL", 551 | }, 552 | value: "sql", 553 | }, 554 | { 555 | text: { 556 | type: "plain_text", 557 | text: "Stylus", 558 | }, 559 | value: "stylus", 560 | }, 561 | { 562 | text: { 563 | type: "plain_text", 564 | text: "Swift", 565 | }, 566 | value: "swift", 567 | }, 568 | { 569 | text: { 570 | type: "plain_text", 571 | text: "TCL", 572 | }, 573 | value: "tcl", 574 | }, 575 | { 576 | text: { 577 | type: "plain_text", 578 | text: "TOML", 579 | }, 580 | value: "toml", 581 | }, 582 | { 583 | text: { 584 | type: "plain_text", 585 | text: "Turtle", 586 | }, 587 | value: "turtle", 588 | }, 589 | { 590 | text: { 591 | type: "plain_text", 592 | text: "TypeScript", 593 | }, 594 | value: "javascript", 595 | }, 596 | { 597 | text: { 598 | type: "plain_text", 599 | text: "TSX", 600 | }, 601 | value: "jsx", 602 | }, 603 | { 604 | text: { 605 | type: "plain_text", 606 | text: "Twig", 607 | }, 608 | value: "twig", 609 | }, 610 | { 611 | text: { 612 | type: "plain_text", 613 | text: "VB.NET", 614 | }, 615 | value: "vb", 616 | }, 617 | { 618 | text: { 619 | type: "plain_text", 620 | text: "Verilog", 621 | }, 622 | value: "verilog", 623 | }, 624 | { 625 | text: { 626 | type: "plain_text", 627 | text: "VHDL", 628 | }, 629 | value: "vhdl", 630 | }, 631 | { 632 | text: { 633 | type: "plain_text", 634 | text: "Vue", 635 | }, 636 | value: "vue", 637 | }, 638 | { 639 | text: { 640 | type: "plain_text", 641 | text: "XQuery", 642 | }, 643 | value: "xquery", 644 | }, 645 | { 646 | text: { 647 | type: "plain_text", 648 | text: "YAML", 649 | }, 650 | value: "yaml", 651 | }, 652 | ]; 653 | -------------------------------------------------------------------------------- /src/index.ts: -------------------------------------------------------------------------------- 1 | require("dotenv").config(); 2 | import { App, ExpressReceiver } from "@slack/bolt"; 3 | import express from "express"; 4 | import _ from "lodash"; 5 | import path from "path"; 6 | import { deleteInstallation, fetchInstallation, storeInstallation } from "./authorize"; 7 | import { stump } from "./constants"; 8 | import { sendEvent } from "./util/analytics"; 9 | import removeSpecialTags from "./util/preventPings"; 10 | import home, { helpText } from "./views/home"; 11 | import { Modal } from "./views/modal"; 12 | 13 | let channel = {}; 14 | const PORT = parseInt(process.env.PORT) || 5000; 15 | 16 | const receiver = new ExpressReceiver({ 17 | signingSecret: process.env.SLACK_SIGNING_SECRET, 18 | clientId: process.env.SLACK_CLIENT_ID, 19 | clientSecret: process.env.SLACK_CLIENT_SECRET, 20 | scopes: ["channels:read", "chat:write", "chat:write.public", "commands", "team:read"], 21 | stateSecret: process.env.STATE_SECRET, 22 | installerOptions: { 23 | redirectUriPath: "/slack/oauth_redirect", 24 | installPath: "/slack/install", 25 | userScopes: "files:write", 26 | }, 27 | installationStore: { storeInstallation, fetchInstallation, deleteInstallation }, 28 | }); 29 | 30 | const app = new App({ receiver }); 31 | 32 | receiver.router.use("/images", express.static(path.join(__dirname, "../static/images"))); 33 | receiver.router.use("/css", express.static(path.join(__dirname, "../static/css"))); 34 | receiver.router.get("/", (_, res) => 35 | res.sendFile(path.join(__dirname, "../static/html/index.html")) 36 | ); 37 | receiver.router.get("/privacy-policy", (_, res) => 38 | res.sendFile(path.join(__dirname, "../static/html/privacy-policy.html")) 39 | ); 40 | receiver.router.get("/terms-of-service", (_, res) => 41 | res.sendFile(path.join(__dirname, "../static/html/terms-of-service.html")) 42 | ); 43 | 44 | app.command("/carbon", async ({ ack, body, client, command, respond }) => { 45 | await ack(); 46 | channel[body.user_id] = body.channel_id; 47 | 48 | try { 49 | if (command.text.trim().toLowerCase() === "help") { 50 | await respond({ response_type: "ephemeral", text: helpText }); 51 | return; 52 | } 53 | 54 | await client.views.open({ trigger_id: body.trigger_id, view_id: body.view_id, view: Modal() }); 55 | await sendEvent('command', '/carbon'); 56 | } catch (err) { 57 | stump.error(err); 58 | } 59 | }); 60 | 61 | app.view("modal_view_1", async ({ ack, view, client, body }) => { 62 | await ack(); 63 | 64 | const values = view.state.values; 65 | const message = removeSpecialTags(values.message_input.message.value); 66 | const code = removeSpecialTags(values.code_input.code.value); 67 | const backgroundColor = values.color_input.color.value; 68 | const theme = _.get(values, 'theme_input["theme_select-action"].selected_option.value'); 69 | const language = _.get(values, 'lang_input["language_select-action"].selected_option.value'); 70 | const fontFamily = _.get(values, 'ff_input["font_select-action"]?.selected_option?.value'); 71 | 72 | // const data = { code: encodeURIComponent(code), backgroundColor, language, theme, fontFamily }; 73 | // const url = await getImage(data, client, body); 74 | 75 | const url = `https://carbon-api.caprover.fayd.me?code=${encodeURIComponent(code)}&theme=${theme}&backgroundColor=${backgroundColor}&language=${language}&fontFamily=${fontFamily}`; 76 | 77 | try { 78 | await sendEvent("submit", "image-posted"); 79 | await client.chat.postMessage({ 80 | channel: channel[body.user.id], 81 | blocks: [ 82 | { 83 | type: "section", 84 | text: { 85 | type: "mrkdwn", 86 | text: message, 87 | }, 88 | }, 89 | { 90 | type: "image", 91 | image_url: url, 92 | alt_text: "carbon_image", 93 | }, 94 | { 95 | type: "actions", 96 | elements: [ 97 | { 98 | type: "button", 99 | text: { 100 | type: "plain_text", 101 | text: "Copy Code", 102 | }, 103 | value: code, 104 | action_id: "copy_code", 105 | }, 106 | ], 107 | }, 108 | { 109 | type: "context", 110 | elements: [ 111 | { 112 | type: "mrkdwn", 113 | text: `:sparkles: Created with \`/carbon\` by <@${body.user.name}>`, 114 | }, 115 | ], 116 | }, 117 | ], 118 | text: `<@${body.user.name}>: ${message}`, 119 | }); 120 | } catch (err) { 121 | stump.error(err); 122 | app.client.chat.postEphemeral({ 123 | user: body.user.id, 124 | channel: channel[body.user.id], 125 | text: ` await ack()); 134 | app.action("font_select-action", async ({ ack }) => await ack()); 135 | app.action("language_select-action", async ({ ack }) => await ack()); 136 | app.event("app_home_opened", async ({ client, event }) => { 137 | await client.views.publish({ user_id: event.user, view: home }); 138 | }); 139 | 140 | app.action("copy_code", async ({ body, ack, client, payload }) => { 141 | await ack(); 142 | await client.chat.postEphemeral({ 143 | channel: body.channel.id, 144 | user: body.user.id, 145 | text: `:sparkles: Copy this code: \n \`\`\`${(payload as any).value}\`\`\``, 146 | }); 147 | }); 148 | 149 | app.shortcut("delete_carbon", async ({ body, ack, client, payload }) => { 150 | await ack(); 151 | const deleteRequester = payload.user.id; 152 | console.log((payload as any).message.blocks[0].text) 153 | const originalSender = (payload as any).message.blocks[0].text.text.split("<@")[1].split(">:")[0]; 154 | const ts = (payload as any).message.ts; 155 | const channel = (payload as any).channel.id; 156 | 157 | if (deleteRequester === originalSender) await client.chat.delete({ ts, channel }); 158 | }); 159 | 160 | (async () => { 161 | await app.start(PORT); 162 | stump.info("⚡️ Bolt app is running! PORT= ", PORT); 163 | })(); 164 | -------------------------------------------------------------------------------- /src/util/analytics.ts: -------------------------------------------------------------------------------- 1 | import axios from "axios"; 2 | require("dotenv").config(); 3 | 4 | export const event_data = (type: string, value: string) => ({ 5 | payload: { 6 | website: "fb96c1ac-76ff-4a7f-af17-4d47f24d6f2f", 7 | url: "/", 8 | event_type: type, 9 | event_value: value, 10 | hostname: "https://carbon-slack.fayd.me", 11 | language: "en-US", 12 | screen: "1920x1080", 13 | }, 14 | type: "event", 15 | }); 16 | 17 | export const sendEvent = async (type: string, value: string) => { 18 | try { 19 | await axios.post(`${process.env.UMAMI}/api/collect`, event_data(type, value), { 20 | headers: { "User-Agent": "carbon-slack/2.1.0" }, 21 | }); 22 | } catch (err) { } 23 | } 24 | -------------------------------------------------------------------------------- /src/util/preventPings.ts: -------------------------------------------------------------------------------- 1 | export default (str: string) => { 2 | return str 3 | .replace(//g, (t) => t.slice(2).slice(0, -1)) 4 | .replace(/@(channel|here|everyone)/g, (t) => t.slice(1)); 5 | } 6 | -------------------------------------------------------------------------------- /src/views/blocks/code.ts: -------------------------------------------------------------------------------- 1 | export default { 2 | type: "input", 3 | block_id: "code_input", 4 | label: { 5 | type: "plain_text", 6 | text: "Enter your code:", 7 | }, 8 | element: { 9 | type: "plain_text_input", 10 | action_id: "code", 11 | multiline: true, 12 | min_length: 1, 13 | placeholder: { 14 | type: "plain_text", 15 | text: "console.log('Hello')", 16 | }, 17 | }, 18 | }; -------------------------------------------------------------------------------- /src/views/blocks/color.ts: -------------------------------------------------------------------------------- 1 | import randomHex from "random-hex"; 2 | 3 | export const getColor = () => { 4 | const defaultHex = randomHex.generate().split("#")[1]; 5 | return { 6 | type: "input", 7 | block_id: "color_input", 8 | label: { 9 | type: "plain_text", 10 | text: "Background Color:", 11 | }, 12 | element: { 13 | type: "plain_text_input", 14 | action_id: "color", 15 | max_length: 6, 16 | placeholder: { 17 | type: "plain_text", 18 | text: "Hex Code (Without #)", 19 | }, 20 | initial_value: defaultHex, 21 | }, 22 | }; 23 | }; 24 | -------------------------------------------------------------------------------- /src/views/blocks/font-family.ts: -------------------------------------------------------------------------------- 1 | import { FONTS } from "../../constants"; 2 | 3 | export default { 4 | type: "section", 5 | block_id: "ff_input", 6 | text: { 7 | type: "mrkdwn", 8 | text: "Font Family:", 9 | }, 10 | accessory: { 11 | type: "static_select", 12 | placeholder: { 13 | type: "plain_text", 14 | text: "Select an item", 15 | }, 16 | options: FONTS, 17 | action_id: "font_select-action", 18 | }, 19 | }; 20 | -------------------------------------------------------------------------------- /src/views/blocks/language.ts: -------------------------------------------------------------------------------- 1 | import { LANGUAGES } from "../../constants"; 2 | 3 | export default { 4 | type: "section", 5 | block_id: "lang_input", 6 | text: { 7 | type: "mrkdwn", 8 | text: "Language:", 9 | }, 10 | accessory: { 11 | type: "static_select", 12 | placeholder: { 13 | type: "plain_text", 14 | text: "Select an item", 15 | emoji: true, 16 | }, 17 | options: LANGUAGES, 18 | action_id: "language_select-action", 19 | }, 20 | }; 21 | -------------------------------------------------------------------------------- /src/views/blocks/message.ts: -------------------------------------------------------------------------------- 1 | export default { 2 | type: "input", 3 | block_id: "message_input", 4 | label: { 5 | type: "plain_text", 6 | text: "Enter message to be attached:", 7 | }, 8 | element: { 9 | type: "plain_text_input", 10 | action_id: "message", 11 | multiline: true, 12 | }, 13 | }; 14 | -------------------------------------------------------------------------------- /src/views/blocks/theme.ts: -------------------------------------------------------------------------------- 1 | import { THEMES } from "../../constants"; 2 | 3 | export default { 4 | type: "section", 5 | block_id: "theme_input", 6 | text: { 7 | type: "mrkdwn", 8 | text: "Theme:", 9 | }, 10 | accessory: { 11 | type: "static_select", 12 | placeholder: { 13 | type: "plain_text", 14 | text: "Select an item", 15 | emoji: true, 16 | }, 17 | options: THEMES, 18 | action_id: "theme_select-action", 19 | }, 20 | }; 21 | -------------------------------------------------------------------------------- /src/views/home.ts: -------------------------------------------------------------------------------- 1 | import { View } from "@slack/bolt"; 2 | require("dotenv").config(); 3 | 4 | export const helpText = `:wave: Hey! This is Carbon for Slack. 5 | It integrates the core functionality of into a Slack bot and makes it possible for you to create and share beautiful images of your code directly in Slack. 6 | 7 | How to use it? 8 | 9 | 1. Invoke the \`/carbon\` command (*IMPORTANT*: invoke the command only where you want to post your code because the image will be directly posted once you submit) 10 | *NOTE: Inorder to invoke this command in private channel, the bot must be added as a member of the channel.* 11 | 12 | 2. Add your desired code, theme, font, background in the appropriate fields. 13 | 14 | 3. Click Submit. 15 | 16 | 4. Wait for a few seconds and voila! 17 | 18 | For more information, check out .`; 19 | 20 | export const errorText = `Hey, it seems like something went wrong and the command couldn't be invoked. 21 | If you're invoking this command in a *private channel*, make sure you've *added the bot* to that channel.`; 22 | 23 | export default { 24 | type: "home", 25 | blocks: [ 26 | { 27 | type: "section", 28 | text: { type: "mrkdwn", text: helpText }, 29 | }, 30 | { 31 | type: "context", 32 | elements: [ 33 | { 34 | type: "image", 35 | image_url: "https://github.githubassets.com/images/modules/logos_page/GitHub-Mark.png", 36 | alt_text: "github's octocat", 37 | }, 38 | { 39 | type: "mrkdwn", 40 | text: "This Slack bot is fully open-sourced at ", 41 | }, 42 | ], 43 | }, 44 | ], 45 | } as View; 46 | -------------------------------------------------------------------------------- /src/views/modal.ts: -------------------------------------------------------------------------------- 1 | import { View } from "@slack/bolt"; 2 | import code from "./blocks/code"; 3 | import { getColor } from "./blocks/color"; 4 | import fontFamily from "./blocks/font-family"; 5 | import language from "./blocks/language"; 6 | import message from "./blocks/message"; 7 | import theme from "./blocks/theme"; 8 | 9 | export const Modal: () => View = () => ({ 10 | type: "modal", 11 | callback_id: "modal_view_1", 12 | title: { 13 | type: "plain_text", 14 | text: "Carbon", 15 | emoji: true, 16 | }, 17 | submit: { 18 | type: "plain_text", 19 | text: "Submit", 20 | emoji: true, 21 | }, 22 | close: { 23 | type: "plain_text", 24 | text: "Cancel", 25 | emoji: true, 26 | }, 27 | blocks: [message, code, getColor(), { type: "divider" }, theme, language, fontFamily], 28 | }); 29 | -------------------------------------------------------------------------------- /static/css/index.css: -------------------------------------------------------------------------------- 1 | @import url("https://fonts.googleapis.com/css2?family=Poppins:wght@100;200;300;400;500;600;700;800;900&display=swap"); 2 | 3 | html { 4 | min-height: 100vh; 5 | background-color: #330000; 6 | background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='100%25' height='100%25' viewBox='0 0 800 400'%3E%3Cdefs%3E%3CradialGradient id='a' cx='396' cy='281' r='514' gradientUnits='userSpaceOnUse'%3E%3Cstop offset='0' stop-color='%23D18'/%3E%3Cstop offset='1' stop-color='%23330000'/%3E%3C/radialGradient%3E%3ClinearGradient id='b' gradientUnits='userSpaceOnUse' x1='400' y1='148' x2='400' y2='333'%3E%3Cstop offset='0' stop-color='%23FA3' stop-opacity='0'/%3E%3Cstop offset='1' stop-color='%23FA3' stop-opacity='0.5'/%3E%3C/linearGradient%3E%3C/defs%3E%3Crect fill='url(%23a)' width='800' height='400'/%3E%3Cg fill-opacity='0.4'%3E%3Ccircle fill='url(%23b)' cx='267.5' cy='61' r='300'/%3E%3Ccircle fill='url(%23b)' cx='532.5' cy='61' r='300'/%3E%3Ccircle fill='url(%23b)' cx='400' cy='30' r='300'/%3E%3C/g%3E%3C/svg%3E"); 7 | background-attachment: fixed; 8 | background-size: cover; 9 | } 10 | 11 | * { 12 | text-align: center; 13 | font-family: "Poppins", sans-serif; 14 | color: #fff; 15 | font-smooth: antialiased; 16 | margin: 0; 17 | padding: 0; 18 | } 19 | 20 | .main { 21 | display: flex; 22 | align-items: center; 23 | justify-content: center; 24 | flex-direction: column; 25 | min-height: 80vh; 26 | } 27 | 28 | .navbar { 29 | display: flex; 30 | align-items: center; 31 | justify-content: start; 32 | margin: 10px; 33 | margin-left: 20px; 34 | } 35 | 36 | a { 37 | text-decoration: none; 38 | font-weight: 400; 39 | font-size: 14px; 40 | } 41 | 42 | .nav-link { 43 | margin-left: 20px; 44 | color: #dadada; 45 | } 46 | 47 | h1 { 48 | font-weight: 600; 49 | font-size: 32px; 50 | } 51 | 52 | h2 { 53 | font-weight: 500; 54 | } 55 | 56 | h3 { 57 | font-weight: 400; 58 | } 59 | 60 | .title { 61 | text-decoration: underline; 62 | } 63 | 64 | .title, 65 | .subtitle { 66 | margin-top: 15px; 67 | } 68 | 69 | .slack-button { 70 | margin-top: 15px; 71 | } 72 | 73 | .images { 74 | display: flex; 75 | align-items: center; 76 | justify-content: space-evenly; 77 | } 78 | 79 | .image { 80 | max-width: 450px; 81 | margin: 25px; 82 | } 83 | 84 | .terms-and-conditions { 85 | display: flex; 86 | justify-content: space-evenly; 87 | align-items: center; 88 | color: #dadada; 89 | margin: 15px; 90 | } 91 | 92 | @media (max-width: 850px) { 93 | .images { 94 | flex-direction: column; 95 | } 96 | } -------------------------------------------------------------------------------- /static/html/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | Carbon for Slack 10 | 11 | 12 | 17 |
18 | carbon for slack logo 19 |

Carbon for Slack

20 |

Create beautiful code images directly in Slack ✨

21 | Add to Slack 22 |
23 |
24 | carbon screenshot 1 25 | carbon screenshot 2 26 |
27 | 31 | 32 | -------------------------------------------------------------------------------- /static/html/privacy-policy.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | Carbon for Slack - Privacy Policy 9 | 10 | 11 |
12 |

Privacy Policy

13 |

Last updated: April 20, 2021

14 |

15 | This Privacy Policy describes Our policies and procedures on the collection, use and 16 | disclosure of Your information when You use the Service and tells You about Your privacy 17 | rights and how the law protects You. 18 |

19 |

20 | We use Your Personal data to provide and improve the Service. By using the Service, You 21 | agree to the collection and use of information in accordance with this Privacy Policy. 22 |

23 |

Interpretation and Definitions

24 |

Interpretation

25 |

26 | The words of which the initial letter is capitalized have meanings defined under the 27 | following conditions. The following definitions shall have the same meaning regardless of 28 | whether they appear in singular or in plural. 29 |

30 |

Definitions

31 |

For the purposes of this Privacy Policy:

32 |
    33 |
  • 34 |

    35 | Account means a unique account created for You to access our Service or 36 | parts of our Service. 37 |

    38 |
  • 39 |
  • 40 |

    41 | Company (referred to as either "the Company", "We", 42 | "Us" or "Our" in this Agreement) refers to Carbon for Slack. 43 |

    44 |
  • 45 |
  • 46 |

    Country refers to: India

    47 |
  • 48 |
  • 49 |

    50 | Device means any device that can access the Service such as a computer, 51 | a cellphone or a digital tablet. 52 |

    53 |
  • 54 |
  • 55 |

    56 | Personal Data is any information that relates to an identified or 57 | identifiable individual. 58 |

    59 |
  • 60 |
  • 61 |

    Service refers to the Website.

    62 |
  • 63 |
  • 64 |

    65 | Service Provider means any natural or legal person who processes the 66 | data on behalf of the Company. It refers to third-party companies or individuals 67 | employed by the Company to facilitate the Service, to provide the Service on behalf of 68 | the Company, to perform services related to the Service or to assist the Company in 69 | analyzing how the Service is used. 70 |

    71 |
  • 72 |
  • 73 |

    74 | Third-party Social Media Service refers to any website or any social 75 | network website through which a User can log in or create an account to use the Service. 76 |

    77 |
  • 78 |
  • 79 |

    80 | Usage Data refers to data collected automatically, either generated by 81 | the use of the Service or from the Service infrastructure itself (for example, the 82 | duration of a page visit). 83 |

    84 |
  • 85 |
  • 86 |

    87 | Website refers to Carbon for Slack, accessible from 88 | 89 | https://carbon-slack.fayd.me 90 | 91 |

    92 |
  • 93 |
  • 94 |

    95 | You means the individual accessing or using the Service, or the 96 | company, or other legal entity on behalf of which such individual is accessing or using 97 | the Service, as applicable. 98 |

    99 |
  • 100 |
101 |

Collecting and Using Your Personal Data

102 |

Types of Data Collected

103 |

Personal Data

104 |

105 | While using Our Service, We may ask You to provide Us with certain personally identifiable 106 | information that can be used to contact or identify You. Personally identifiable information 107 | may include, but is not limited to: 108 |

109 |
    110 |
  • 111 |

    Email address

    112 |
  • 113 |
  • 114 |

    First name and last name

    115 |
  • 116 |
  • 117 |

    Usage Data

    118 |
  • 119 |
120 |

Usage Data

121 |

Usage Data is collected automatically when using the Service.

122 |

123 | Usage Data may include information such as Your Device's Internet Protocol address (e.g. IP 124 | address), browser type, browser version, the pages of our Service that You visit, the time 125 | and date of Your visit, the time spent on those pages, unique device identifiers and other 126 | diagnostic data. 127 |

128 |

129 | When You access the Service by or through a mobile device, We may collect certain 130 | information automatically, including, but not limited to, the type of mobile device You use, 131 | Your mobile device unique ID, the IP address of Your mobile device, Your mobile operating 132 | system, the type of mobile Internet browser You use, unique device identifiers and other 133 | diagnostic data. 134 |

135 |

136 | We may also collect information that Your browser sends whenever You visit our Service or 137 | when You access the Service by or through a mobile device. 138 |

139 |

Tracking Technologies and Cookies

140 |

141 | We use Cookies and similar tracking technologies to track the activity on Our Service and 142 | store certain information. Tracking technologies used are beacons, tags, and scripts to 143 | collect and track information and to improve and analyze Our Service. The technologies We 144 | use may include: 145 |

146 |
    147 |
  • 148 | Cookies or Browser Cookies. A cookie is a small file placed on Your 149 | Device. You can instruct Your browser to refuse all Cookies or to indicate when a Cookie 150 | is being sent. However, if You do not accept Cookies, You may not be able to use some 151 | parts of our Service. Unless you have adjusted Your browser setting so that it will refuse 152 | Cookies, our Service may use Cookies. 153 |
  • 154 |
  • 155 | Flash Cookies. Certain features of our Service may use local stored 156 | objects (or Flash Cookies) to collect and store information about Your preferences or Your 157 | activity on our Service. Flash Cookies are not managed by the same browser settings as 158 | those used for Browser Cookies. For more information on how You can delete Flash Cookies, 159 | please read "Where can I change the settings for disabling, or deleting local shared 160 | objects?" available at{" "} 161 | 166 | https://helpx.adobe.com/flash-player/kb/disable-local-shared-objects-flash.html#main_Where_can_I_change_the_settings_for_disabling__or_deleting_local_shared_objects_ 167 | 168 |
  • 169 |
  • 170 | Web Beacons. Certain sections of our Service and our emails may contain 171 | small electronic files known as web beacons (also referred to as clear gifs, pixel tags, 172 | and single-pixel gifs) that permit the Company, for example, to count users who have 173 | visited those pages or opened an email and for other related website statistics (for 174 | example, recording the popularity of a certain section and verifying system and server 175 | integrity). 176 |
  • 177 |
178 |

179 | Cookies can be "Persistent" or "Session" Cookies. Persistent Cookies 180 | remain on Your personal computer or mobile device when You go offline, while Session Cookies 181 | are deleted as soon as You close Your web browser. Learn more about cookies:{" "} 182 | 183 | What Are Cookies? 184 | 185 | . 186 |

187 |

We use both Session and Persistent Cookies for the purposes set out below:

188 |
    189 |
  • 190 |

    191 | Necessary / Essential Cookies 192 |

    193 |

    Type: Session Cookies

    194 |

    Administered by: Us

    195 |

    196 | Purpose: These Cookies are essential to provide You with services available through the 197 | Website and to enable You to use some of its features. They help to authenticate users 198 | and prevent fraudulent use of user accounts. Without these Cookies, the services that 199 | You have asked for cannot be provided, and We only use these Cookies to provide You with 200 | those services. 201 |

    202 |
  • 203 |
  • 204 |

    205 | Cookies Policy / Notice Acceptance Cookies 206 |

    207 |

    Type: Persistent Cookies

    208 |

    Administered by: Us

    209 |

    210 | Purpose: These Cookies identify if users have accepted the use of cookies on the 211 | Website. 212 |

    213 |
  • 214 |
  • 215 |

    216 | Functionality Cookies 217 |

    218 |

    Type: Persistent Cookies

    219 |

    Administered by: Us

    220 |

    221 | Purpose: These Cookies allow us to remember choices You make when You use the Website, 222 | such as remembering your login details or language preference. The purpose of these 223 | Cookies is to provide You with a more personal experience and to avoid You having to 224 | re-enter your preferences every time You use the Website. 225 |

    226 |
  • 227 |
228 |

229 | For more information about the cookies we use and your choices regarding cookies, please 230 | visit our Cookies Policy or the Cookies section of our Privacy Policy. 231 |

232 |

Use of Your Personal Data

233 |

The Company may use Personal Data for the following purposes:

234 |
    235 |
  • 236 |

    237 | To provide and maintain our Service, including to monitor the usage of 238 | our Service. 239 |

    240 |
  • 241 |
  • 242 |

    243 | To manage Your Account: to manage Your registration as a user of the 244 | Service. The Personal Data You provide can give You access to different functionalities 245 | of the Service that are available to You as a registered user. 246 |

    247 |
  • 248 |
  • 249 |

    250 | For the performance of a contract: the development, compliance and 251 | undertaking of the purchase contract for the products, items or services You have 252 | purchased or of any other contract with Us through the Service. 253 |

    254 |
  • 255 |
  • 256 |

    257 | To contact You: To contact You by email, telephone calls, SMS, or other 258 | equivalent forms of electronic communication, such as a mobile application's push 259 | notifications regarding updates or informative communications related to the 260 | functionalities, products or contracted services, including the security updates, when 261 | necessary or reasonable for their implementation. 262 |

    263 |
  • 264 |
  • 265 |

    266 | To provide You with news, special offers and general information about 267 | other goods, services and events which we offer that are similar to those that you have 268 | already purchased or enquired about unless You have opted not to receive such 269 | information. 270 |

    271 |
  • 272 |
  • 273 |

    To manage Your requests: To attend and manage Your requests to Us.

    274 |
  • 275 |
  • 276 |

    277 | For business transfers: We may use Your information to evaluate or 278 | conduct a merger, divestiture, restructuring, reorganization, dissolution, or other sale 279 | or transfer of some or all of Our assets, whether as a going concern or as part of 280 | bankruptcy, liquidation, or similar proceeding, in which Personal Data held by Us about 281 | our Service users is among the assets transferred. 282 |

    283 |
  • 284 |
  • 285 |

    286 | For other purposes: We may use Your information for other purposes, 287 | such as data analysis, identifying usage trends, determining the effectiveness of our 288 | promotional campaigns and to evaluate and improve our Service, products, services, 289 | marketing and your experience. 290 |

    291 |
  • 292 |
293 |

We may share Your personal information in the following situations:

294 |
    295 |
  • 296 | With Service Providers: We may share Your personal information with 297 | Service Providers to monitor and analyze the use of our Service, to contact You. 298 |
  • 299 |
  • 300 | For business transfers: We may share or transfer Your personal 301 | information in connection with, or during negotiations of, any merger, sale of Company 302 | assets, financing, or acquisition of all or a portion of Our business to another company. 303 |
  • 304 |
  • 305 | With Affiliates: We may share Your information with Our affiliates, in 306 | which case we will require those affiliates to honor this Privacy Policy. Affiliates 307 | include Our parent company and any other subsidiaries, joint venture partners or other 308 | companies that We control or that are under common control with Us. 309 |
  • 310 |
  • 311 | With business partners: We may share Your information with Our business 312 | partners to offer You certain products, services or promotions. 313 |
  • 314 |
  • 315 | With other users: when You share personal information or otherwise 316 | interact in the public areas with other users, such information may be viewed by all users 317 | and may be publicly distributed outside. If You interact with other users or register 318 | through a Third-Party Social Media Service, Your contacts on the Third-Party Social Media 319 | Service may see Your name, profile, pictures and description of Your activity. Similarly, 320 | other users will be able to view descriptions of Your activity, communicate with You and 321 | view Your profile. 322 |
  • 323 |
  • 324 | With Your consent: We may disclose Your personal information for any 325 | other purpose with Your consent. 326 |
  • 327 |
328 |

Retention of Your Personal Data

329 |

330 | The Company will retain Your Personal Data only for as long as is necessary for the purposes 331 | set out in this Privacy Policy. We will retain and use Your Personal Data to the extent 332 | necessary to comply with our legal obligations (for example, if we are required to retain 333 | your data to comply with applicable laws), resolve disputes, and enforce our legal 334 | agreements and policies. 335 |

336 |

337 | The Company will also retain Usage Data for internal analysis purposes. Usage Data is 338 | generally retained for a shorter period of time, except when this data is used to strengthen 339 | the security or to improve the functionality of Our Service, or We are legally obligated to 340 | retain this data for longer time periods. 341 |

342 |

Transfer of Your Personal Data

343 |

344 | Your information, including Personal Data, is processed at the Company's operating offices 345 | and in any other places where the parties involved in the processing are located. It means 346 | that this information may be transferred to — and maintained on — computers located outside 347 | of Your state, province, country or other governmental jurisdiction where the data 348 | protection laws may differ than those from Your jurisdiction. 349 |

350 |

351 | Your consent to this Privacy Policy followed by Your submission of such information 352 | represents Your agreement to that transfer. 353 |

354 |

355 | The Company will take all steps reasonably necessary to ensure that Your data is treated 356 | securely and in accordance with this Privacy Policy and no transfer of Your Personal Data 357 | will take place to an organization or a country unless there are adequate controls in place 358 | including the security of Your data and other personal information. 359 |

360 |

Disclosure of Your Personal Data

361 |

Business Transactions

362 |

363 | If the Company is involved in a merger, acquisition or asset sale, Your Personal Data may be 364 | transferred. We will provide notice before Your Personal Data is transferred and becomes 365 | subject to a different Privacy Policy. 366 |

367 |

Law enforcement

368 |

369 | Under certain circumstances, the Company may be required to disclose Your Personal Data if 370 | required to do so by law or in response to valid requests by public authorities (e.g. a 371 | court or a government agency). 372 |

373 |

Other legal requirements

374 |

375 | The Company may disclose Your Personal Data in the good faith belief that such action is 376 | necessary to: 377 |

378 |
    379 |
  • Comply with a legal obligation
  • 380 |
  • Protect and defend the rights or property of the Company
  • 381 |
  • Prevent or investigate possible wrongdoing in connection with the Service
  • 382 |
  • Protect the personal safety of Users of the Service or the public
  • 383 |
  • Protect against legal liability
  • 384 |
385 |

Security of Your Personal Data

386 |

387 | The security of Your Personal Data is important to Us, but remember that no method of 388 | transmission over the Internet, or method of electronic storage is 100% secure. While We 389 | strive to use commercially acceptable means to protect Your Personal Data, We cannot 390 | guarantee its absolute security. 391 |

392 |

Data Removal Policy

393 |

394 | If you wish to remove any data related to you from our records completely, you may contact 395 | us at faisal.sayed502@gmail.com 396 | Once you request the deletion of your data, we will delete it as soon as possible. 397 |

398 |

Children's Privacy

399 |

400 | Our Service does not address anyone under the age of 13. We do not knowingly collect 401 | personally identifiable information from anyone under the age of 13. If You are a parent or 402 | guardian and You are aware that Your child has provided Us with Personal Data, please 403 | contact Us. If We become aware that We have collected Personal Data from anyone under the 404 | age of 13 without verification of parental consent, We take steps to remove that information 405 | from Our servers. 406 |

407 |

408 | If We need to rely on consent as a legal basis for processing Your information and Your 409 | country requires consent from a parent, We may require Your parent's consent before We 410 | collect and use that information. 411 |

412 |

Links to Other Websites

413 |

414 | Our Service may contain links to other websites that are not operated by Us. If You click on 415 | a third party link, You will be directed to that third party's site. We strongly advise You 416 | to review the Privacy Policy of every site You visit. 417 |

418 |

419 | We have no control over and assume no responsibility for the content, privacy policies or 420 | practices of any third party sites or services. 421 |

422 |

Changes to this Privacy Policy

423 |

424 | We may update Our Privacy Policy from time to time. We will notify You of any changes by 425 | posting the new Privacy Policy on this page. 426 |

427 |

428 | We will let You know via email and/or a prominent notice on Our Service, prior to the change 429 | becoming effective and update the "Last updated" date at the top of this Privacy 430 | Policy. 431 |

432 |

433 | You are advised to review this Privacy Policy periodically for any changes. Changes to this 434 | Privacy Policy are effective when they are posted on this page. 435 |

436 |

Contact Us

437 |

If you have any questions about this Privacy Policy, You can contact us:

438 |
    439 |
  • By email: faisal.sayed502@gmail.com
  • 440 |
441 |
442 | 443 | 444 | -------------------------------------------------------------------------------- /static/html/terms-of-service.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | Carbon for Slack - Terms of Service 9 | 10 | 11 |
12 |

Terms and Conditions

13 |

Last updated: April 20, 2021

14 |

Please read these terms and conditions carefully before using Our Service.

15 |

Interpretation and Definitions

16 |

Interpretation

17 |

18 | The words of which the initial letter is capitalized have meanings defined under the 19 | following conditions. The following definitions shall have the same meaning regardless of 20 | whether they appear in singular or in plural. 21 |

22 |

Definitions

23 |

For the purposes of these Terms and Conditions:

24 |
    25 |
  • 26 |

    27 | Affiliate means an entity that controls, is controlled by or is under 28 | common control with a party, where "control" means ownership of 50% or more of 29 | the shares, equity interest or other securities entitled to vote for election of 30 | directors or other managing authority. 31 |

    32 |
  • 33 |
  • 34 |

    Country refers to: Maharashtra, India

    35 |
  • 36 |
  • 37 |

    38 | Company (referred to as either "the Company", "We", 39 | "Us" or "Our" in this Agreement) refers to Carbon for Slack. 40 |

    41 |
  • 42 |
  • 43 |

    44 | Device means any device that can access the Service such as a computer, 45 | a cellphone or a digital tablet. 46 |

    47 |
  • 48 |
  • 49 |

    Service refers to the Website.

    50 |
  • 51 |
  • 52 |

    53 | Terms and Conditions (also referred as "Terms") mean these 54 | Terms and Conditions that form the entire agreement between You and the Company 55 | regarding the use of the Service. 56 |

    57 |
  • 58 |
  • 59 |

    60 | Third-party Social Media Service means any services or content 61 | (including data, information, products or services) provided by a third-party that may 62 | be displayed, included or made available by the Service. 63 |

    64 |
  • 65 |
  • 66 |

    67 | Website refers to Carbon for Slack, accessible from 68 | 69 | https://carbon-slack.fayd.me 70 | 71 |

    72 |
  • 73 |
  • 74 |

    75 | You means the individual accessing or using the Service, or the 76 | company, or other legal entity on behalf of which such individual is accessing or using 77 | the Service, as applicable. 78 |

    79 |
  • 80 |
81 |

Acknowledgment

82 |

83 | These are the Terms and Conditions governing the use of this Service and the agreement that 84 | operates between You and the Company. These Terms and Conditions set out the rights and 85 | obligations of all users regarding the use of the Service. 86 |

87 |

88 | Your access to and use of the Service is conditioned on Your acceptance of and compliance 89 | with these Terms and Conditions. These Terms and Conditions apply to all visitors, users and 90 | others who access or use the Service. 91 |

92 |

93 | By accessing or using the Service You agree to be bound by these Terms and Conditions. If 94 | You disagree with any part of these Terms and Conditions then You may not access the 95 | Service. 96 |

97 |

98 | You represent that you are over the age of 18. The Company does not permit those under 18 to 99 | use the Service. 100 |

101 |

102 | Your access to and use of the Service is also conditioned on Your acceptance of and 103 | compliance with the Privacy Policy of the Company. Our Privacy Policy describes Our policies 104 | and procedures on the collection, use and disclosure of Your personal information when You 105 | use the Application or the Website and tells You about Your privacy rights and how the law 106 | protects You. Please read Our Privacy Policy carefully before using Our Service. 107 |

108 |

Links to Other Websites

109 |

110 | Our Service may contain links to third-party web sites or services that are not owned or 111 | controlled by the Company. 112 |

113 |

114 | The Company has no control over, and assumes no responsibility for, the content, privacy 115 | policies, or practices of any third party web sites or services. You further acknowledge and 116 | agree that the Company shall not be responsible or liable, directly or indirectly, for any 117 | damage or loss caused or alleged to be caused by or in connection with the use of or 118 | reliance on any such content, goods or services available on or through any such web sites 119 | or services. 120 |

121 |

122 | We strongly advise You to read the terms and conditions and privacy policies of any 123 | third-party web sites or services that You visit. 124 |

125 |

Termination

126 |

127 | We may terminate or suspend Your access immediately, without prior notice or liability, for 128 | any reason whatsoever, including without limitation if You breach these Terms and 129 | Conditions. 130 |

131 |

Upon termination, Your right to use the Service will cease immediately.

132 |

Limitation of Liability

133 |

134 | Notwithstanding any damages that You might incur, the entire liability of the Company and 135 | any of its suppliers under any provision of this Terms and Your exclusive remedy for all of 136 | the foregoing shall be limited to the amount actually paid by You through the Service or 100 137 | USD if You haven't purchased anything through the Service. 138 |

139 |

140 | To the maximum extent permitted by applicable law, in no event shall the Company or its 141 | suppliers be liable for any special, incidental, indirect, or consequential damages 142 | whatsoever (including, but not limited to, damages for loss of profits, loss of data or 143 | other information, for business interruption, for personal injury, loss of privacy arising 144 | out of or in any way related to the use of or inability to use the Service, third-party 145 | software and/or third-party hardware used with the Service, or otherwise in connection with 146 | any provision of this Terms), even if the Company or any supplier has been advised of the 147 | possibility of such damages and even if the remedy fails of its essential purpose. 148 |

149 |

150 | Some states do not allow the exclusion of implied warranties or limitation of liability for 151 | incidental or consequential damages, which means that some of the above limitations may not 152 | apply. In these states, each party's liability will be limited to the greatest extent 153 | permitted by law. 154 |

155 |

"AS IS" and "AS AVAILABLE" Disclaimer

156 |

157 | The Service is provided to You "AS IS" and "AS AVAILABLE" and with all 158 | faults and defects without warranty of any kind. To the maximum extent permitted under 159 | applicable law, the Company, on its own behalf and on behalf of its Affiliates and its and 160 | their respective licensors and service providers, expressly disclaims all warranties, 161 | whether express, implied, statutory or otherwise, with respect to the Service, including all 162 | implied warranties of merchantability, fitness for a particular purpose, title and 163 | non-infringement, and warranties that may arise out of course of dealing, course of 164 | performance, usage or trade practice. Without limitation to the foregoing, the Company 165 | provides no warranty or undertaking, and makes no representation of any kind that the 166 | Service will meet Your requirements, achieve any intended results, be compatible or work 167 | with any other software, applications, systems or services, operate without interruption, 168 | meet any performance or reliability standards or be error free or that any errors or defects 169 | can or will be corrected. 170 |

171 |

172 | Without limiting the foregoing, neither the Company nor any of the company's provider makes 173 | any representation or warranty of any kind, express or implied: (i) as to the operation or 174 | availability of the Service, or the information, content, and materials or products included 175 | thereon; (ii) that the Service will be uninterrupted or error-free; (iii) as to the 176 | accuracy, reliability, or currency of any information or content provided through the 177 | Service; or (iv) that the Service, its servers, the content, or e-mails sent from or on 178 | behalf of the Company are free of viruses, scripts, trojan horses, worms, malware, timebombs 179 | or other harmful components. 180 |

181 |

182 | Some jurisdictions do not allow the exclusion of certain types of warranties or limitations 183 | on applicable statutory rights of a consumer, so some or all of the above exclusions and 184 | limitations may not apply to You. But in such a case the exclusions and limitations set 185 | forth in this section shall be applied to the greatest extent enforceable under applicable 186 | law. 187 |

188 |

Governing Law

189 |

190 | The laws of the Country, excluding its conflicts of law rules, shall govern this Terms and 191 | Your use of the Service. Your use of the Application may also be subject to other local, 192 | state, national, or international laws. 193 |

194 |

Disputes Resolution

195 |

196 | If You have any concern or dispute about the Service, You agree to first try to resolve the 197 | dispute informally by contacting the Company. 198 |

199 |

For European Union (EU) Users

200 |

201 | If You are a European Union consumer, you will benefit from any mandatory provisions of the 202 | law of the country in which you are resident in. 203 |

204 |

United States Legal Compliance

205 |

206 | You represent and warrant that (i) You are not located in a country that is subject to the 207 | United States government embargo, or that has been designated by the United States 208 | government as a "terrorist supporting" country, and (ii) You are not listed on any 209 | United States government list of prohibited or restricted parties. 210 |

211 |

Severability and Waiver

212 |

Severability

213 |

214 | If any provision of these Terms is held to be unenforceable or invalid, such provision will 215 | be changed and interpreted to accomplish the objectives of such provision to the greatest 216 | extent possible under applicable law and the remaining provisions will continue in full 217 | force and effect. 218 |

219 |

Waiver

220 |

221 | Except as provided herein, the failure to exercise a right or to require performance of an 222 | obligation under this Terms shall not effect a party's ability to exercise such right or 223 | require such performance at any time thereafter nor shall be the waiver of a breach 224 | constitute a waiver of any subsequent breach. 225 |

226 |

Translation Interpretation

227 |

228 | These Terms and Conditions may have been translated if We have made them available to You on 229 | our Service. You agree that the original English text shall prevail in the case of a 230 | dispute. 231 |

232 |

Changes to These Terms and Conditions

233 |

234 | We reserve the right, at Our sole discretion, to modify or replace these Terms at any time. 235 | If a revision is material We will make reasonable efforts to provide at least 30 days' 236 | notice prior to any new terms taking effect. What constitutes a material change will be 237 | determined at Our sole discretion. 238 |

239 |

240 | By continuing to access or use Our Service after those revisions become effective, You agree 241 | to be bound by the revised terms. If You do not agree to the new terms, in whole or in part, 242 | please stop using the website and the Service. 243 |

244 |

Contact Us

245 |

If you have any questions about these Terms and Conditions, You can contact us:

246 |
    247 |
  • By email: faisal.sayed502@gmail.com
  • 248 |
249 |
250 | 251 | 252 | -------------------------------------------------------------------------------- /static/images/carbon-slack.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/faisalsayed10/carbon-slack/096c76ae7c16376f8c9fcc76f9977b765232455c/static/images/carbon-slack.png -------------------------------------------------------------------------------- /static/images/carbon-ss-1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/faisalsayed10/carbon-slack/096c76ae7c16376f8c9fcc76f9977b765232455c/static/images/carbon-ss-1.jpg -------------------------------------------------------------------------------- /static/images/carbon-ss-2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/faisalsayed10/carbon-slack/096c76ae7c16376f8c9fcc76f9977b765232455c/static/images/carbon-ss-2.jpg -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "es6", 4 | "module": "commonjs", 5 | "moduleResolution": "node", 6 | "esModuleInterop": true, 7 | "resolveJsonModule": true, 8 | "allowSyntheticDefaultImports": true, 9 | "strict": false, 10 | "allowJs": true, 11 | "sourceMap": true, 12 | "rootDir": "src/", 13 | "outDir": "dist" 14 | }, 15 | "include": ["*", "src/"] 16 | } -------------------------------------------------------------------------------- /yarn.lock: -------------------------------------------------------------------------------- 1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. 2 | # yarn lockfile v1 3 | 4 | 5 | "@cspotcode/source-map-support@^0.8.0": 6 | version "0.8.1" 7 | resolved "https://registry.yarnpkg.com/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz#00629c35a688e05a88b1cda684fb9d5e73f000a1" 8 | integrity sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw== 9 | dependencies: 10 | "@jridgewell/trace-mapping" "0.3.9" 11 | 12 | "@jridgewell/resolve-uri@^3.0.3": 13 | version "3.1.1" 14 | resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz#c08679063f279615a3326583ba3a90d1d82cc721" 15 | integrity sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA== 16 | 17 | "@jridgewell/sourcemap-codec@^1.4.10": 18 | version "1.4.15" 19 | resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz#d7c6e6755c78567a951e04ab52ef0fd26de59f32" 20 | integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg== 21 | 22 | "@jridgewell/trace-mapping@0.3.9": 23 | version "0.3.9" 24 | resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz#6534fd5933a53ba7cbf3a17615e273a0d1273ff9" 25 | integrity sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ== 26 | dependencies: 27 | "@jridgewell/resolve-uri" "^3.0.3" 28 | "@jridgewell/sourcemap-codec" "^1.4.10" 29 | 30 | "@slack/bolt@^3.4.1": 31 | version "3.13.1" 32 | resolved "https://registry.yarnpkg.com/@slack/bolt/-/bolt-3.13.1.tgz#8dafd9d0eb050124e6be1ab532a0b1ca99524cd8" 33 | integrity sha512-ifWmlgW2pmtVfbb2YLuicKJu0PQEY0ZncAXTBxIgTP+EIl9okZnY5uIfCqFWzR9LkU0JWGdxMrHVKTptHV3YRQ== 34 | dependencies: 35 | "@slack/logger" "^3.0.0" 36 | "@slack/oauth" "^2.6.1" 37 | "@slack/socket-mode" "^1.3.0" 38 | "@slack/types" "^2.7.0" 39 | "@slack/web-api" "^6.7.1" 40 | "@types/express" "^4.16.1" 41 | "@types/node" "18.16.0" 42 | "@types/promise.allsettled" "^1.0.3" 43 | "@types/tsscmp" "^1.0.0" 44 | axios "^0.27.2" 45 | express "^4.16.4" 46 | path-to-regexp "^6.2.1" 47 | please-upgrade-node "^3.2.0" 48 | promise.allsettled "^1.0.2" 49 | raw-body "^2.3.3" 50 | tsscmp "^1.0.6" 51 | 52 | "@slack/logger@^3.0.0": 53 | version "3.0.0" 54 | resolved "https://registry.yarnpkg.com/@slack/logger/-/logger-3.0.0.tgz#b736d4e1c112c22a10ffab0c2d364620aedcb714" 55 | integrity sha512-DTuBFbqu4gGfajREEMrkq5jBhcnskinhr4+AnfJEk48zhVeEv3XnUKGIX98B74kxhYsIMfApGGySTn7V3b5yBA== 56 | dependencies: 57 | "@types/node" ">=12.0.0" 58 | 59 | "@slack/oauth@^2.6.1": 60 | version "2.6.1" 61 | resolved "https://registry.yarnpkg.com/@slack/oauth/-/oauth-2.6.1.tgz#96327397455d5cf8797c891c9f10a4c5050638ce" 62 | integrity sha512-Qm8LI+W9gtC5YQz/3yq7b6Qza7SSIJ9jVIgbkrY3AGwT4E0P6mUFV5gKHadvDEfTGG3ZiWuKMyC06ZpexZsQgg== 63 | dependencies: 64 | "@slack/logger" "^3.0.0" 65 | "@slack/web-api" "^6.3.0" 66 | "@types/jsonwebtoken" "^8.3.7" 67 | "@types/node" ">=12" 68 | jsonwebtoken "^9.0.0" 69 | lodash.isstring "^4.0.1" 70 | 71 | "@slack/socket-mode@^1.3.0": 72 | version "1.3.2" 73 | resolved "https://registry.yarnpkg.com/@slack/socket-mode/-/socket-mode-1.3.2.tgz#b3c4db146779cb63ec240a10de722deadd907305" 74 | integrity sha512-6LiwYE6k4DNbnctZZSLfERiOzWngAvXogxQEYzUkxeZgh2GC6EdmRq6OEbZXOBe71/K66YVx05VfR7B4b1ScTQ== 75 | dependencies: 76 | "@slack/logger" "^3.0.0" 77 | "@slack/web-api" "^6.2.3" 78 | "@types/node" ">=12.0.0" 79 | "@types/p-queue" "^2.3.2" 80 | "@types/ws" "^7.4.7" 81 | eventemitter3 "^3.1.0" 82 | finity "^0.5.4" 83 | p-cancelable "^1.1.0" 84 | p-queue "^2.4.2" 85 | ws "^7.5.3" 86 | 87 | "@slack/types@^2.0.0", "@slack/types@^2.7.0": 88 | version "2.8.0" 89 | resolved "https://registry.yarnpkg.com/@slack/types/-/types-2.8.0.tgz#11ea10872262a7e6f86f54e5bcd4f91e3a41fe91" 90 | integrity sha512-ghdfZSF0b4NC9ckBA8QnQgC9DJw2ZceDq0BIjjRSv6XAZBXJdWgxIsYz0TYnWSiqsKZGH2ZXbj9jYABZdH3OSQ== 91 | 92 | "@slack/web-api@^6.2.3", "@slack/web-api@^6.3.0", "@slack/web-api@^6.7.1": 93 | version "6.8.1" 94 | resolved "https://registry.yarnpkg.com/@slack/web-api/-/web-api-6.8.1.tgz#c6c1e7405c884c4d9048f8b1d3901bd138d00610" 95 | integrity sha512-eMPk2S99S613gcu7odSw/LV+Qxr8A+RXvBD0GYW510wJuTERiTjP5TgCsH8X09+lxSumbDE88wvWbuFuvGa74g== 96 | dependencies: 97 | "@slack/logger" "^3.0.0" 98 | "@slack/types" "^2.0.0" 99 | "@types/is-stream" "^1.1.0" 100 | "@types/node" ">=12.0.0" 101 | axios "^0.27.2" 102 | eventemitter3 "^3.1.0" 103 | form-data "^2.5.0" 104 | is-electron "2.2.0" 105 | is-stream "^1.1.0" 106 | p-queue "^6.6.1" 107 | p-retry "^4.0.0" 108 | 109 | "@tsconfig/node10@^1.0.7": 110 | version "1.0.9" 111 | resolved "https://registry.yarnpkg.com/@tsconfig/node10/-/node10-1.0.9.tgz#df4907fc07a886922637b15e02d4cebc4c0021b2" 112 | integrity sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA== 113 | 114 | "@tsconfig/node12@^1.0.7": 115 | version "1.0.11" 116 | resolved "https://registry.yarnpkg.com/@tsconfig/node12/-/node12-1.0.11.tgz#ee3def1f27d9ed66dac6e46a295cffb0152e058d" 117 | integrity sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag== 118 | 119 | "@tsconfig/node14@^1.0.0": 120 | version "1.0.3" 121 | resolved "https://registry.yarnpkg.com/@tsconfig/node14/-/node14-1.0.3.tgz#e4386316284f00b98435bf40f72f75a09dabf6c1" 122 | integrity sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow== 123 | 124 | "@tsconfig/node16@^1.0.2": 125 | version "1.0.4" 126 | resolved "https://registry.yarnpkg.com/@tsconfig/node16/-/node16-1.0.4.tgz#0b92dcc0cc1c81f6f306a381f28e31b1a56536e9" 127 | integrity sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA== 128 | 129 | "@types/body-parser@*": 130 | version "1.19.2" 131 | resolved "https://registry.yarnpkg.com/@types/body-parser/-/body-parser-1.19.2.tgz#aea2059e28b7658639081347ac4fab3de166e6f0" 132 | integrity sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g== 133 | dependencies: 134 | "@types/connect" "*" 135 | "@types/node" "*" 136 | 137 | "@types/connect@*": 138 | version "3.4.35" 139 | resolved "https://registry.yarnpkg.com/@types/connect/-/connect-3.4.35.tgz#5fcf6ae445e4021d1fc2219a4873cc73a3bb2ad1" 140 | integrity sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ== 141 | dependencies: 142 | "@types/node" "*" 143 | 144 | "@types/express-serve-static-core@^4.17.33": 145 | version "4.17.35" 146 | resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.17.35.tgz#c95dd4424f0d32e525d23812aa8ab8e4d3906c4f" 147 | integrity sha512-wALWQwrgiB2AWTT91CB62b6Yt0sNHpznUXeZEcnPU3DRdlDIz74x8Qg1UUYKSVFi+va5vKOLYRBI1bRKiLLKIg== 148 | dependencies: 149 | "@types/node" "*" 150 | "@types/qs" "*" 151 | "@types/range-parser" "*" 152 | "@types/send" "*" 153 | 154 | "@types/express@^4.16.1", "@types/express@^4.17.13": 155 | version "4.17.17" 156 | resolved "https://registry.yarnpkg.com/@types/express/-/express-4.17.17.tgz#01d5437f6ef9cfa8668e616e13c2f2ac9a491ae4" 157 | integrity sha512-Q4FmmuLGBG58btUnfS1c1r/NQdlp3DMfGDGig8WhfpA2YRUtEkxAjkZb0yvplJGYdF1fsQ81iMDcH24sSCNC/Q== 158 | dependencies: 159 | "@types/body-parser" "*" 160 | "@types/express-serve-static-core" "^4.17.33" 161 | "@types/qs" "*" 162 | "@types/serve-static" "*" 163 | 164 | "@types/http-errors@*": 165 | version "2.0.1" 166 | resolved "https://registry.yarnpkg.com/@types/http-errors/-/http-errors-2.0.1.tgz#20172f9578b225f6c7da63446f56d4ce108d5a65" 167 | integrity sha512-/K3ds8TRAfBvi5vfjuz8y6+GiAYBZ0x4tXv1Av6CWBWn0IlADc+ZX9pMq7oU0fNQPnBwIZl3rmeLp6SBApbxSQ== 168 | 169 | "@types/is-stream@^1.1.0": 170 | version "1.1.0" 171 | resolved "https://registry.yarnpkg.com/@types/is-stream/-/is-stream-1.1.0.tgz#b84d7bb207a210f2af9bed431dc0fbe9c4143be1" 172 | integrity sha512-jkZatu4QVbR60mpIzjINmtS1ZF4a/FqdTUTBeQDVOQ2PYyidtwFKr0B5G6ERukKwliq+7mIXvxyppwzG5EgRYg== 173 | dependencies: 174 | "@types/node" "*" 175 | 176 | "@types/jsonwebtoken@^8.3.7": 177 | version "8.5.9" 178 | resolved "https://registry.yarnpkg.com/@types/jsonwebtoken/-/jsonwebtoken-8.5.9.tgz#2c064ecb0b3128d837d2764aa0b117b0ff6e4586" 179 | integrity sha512-272FMnFGzAVMGtu9tkr29hRL6bZj4Zs1KZNeHLnKqAvp06tAIcarTMwOh8/8bz4FmKRcMxZhZNeUAQsNLoiPhg== 180 | dependencies: 181 | "@types/node" "*" 182 | 183 | "@types/lodash@^4.14.172": 184 | version "4.14.195" 185 | resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.195.tgz#bafc975b252eb6cea78882ce8a7b6bf22a6de632" 186 | integrity sha512-Hwx9EUgdwf2GLarOjQp5ZH8ZmblzcbTBC2wtQWNKARBSxM9ezRIAUpeDTgoQRAFB0+8CNWXVA9+MaSOzOF3nPg== 187 | 188 | "@types/mime@*": 189 | version "3.0.1" 190 | resolved "https://registry.yarnpkg.com/@types/mime/-/mime-3.0.1.tgz#5f8f2bca0a5863cb69bc0b0acd88c96cb1d4ae10" 191 | integrity sha512-Y4XFY5VJAuw0FgAqPNd6NNoV44jbq9Bz2L7Rh/J6jLTiHBSBJa9fxqQIvkIld4GsoDOcCbvzOUAbLPsSKKg+uA== 192 | 193 | "@types/mime@^1": 194 | version "1.3.2" 195 | resolved "https://registry.yarnpkg.com/@types/mime/-/mime-1.3.2.tgz#93e25bf9ee75fe0fd80b594bc4feb0e862111b5a" 196 | integrity sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw== 197 | 198 | "@types/node-fetch@^3.0.3": 199 | version "3.0.3" 200 | resolved "https://registry.yarnpkg.com/@types/node-fetch/-/node-fetch-3.0.3.tgz#9d969c9a748e841554a40ee435d26e53fa3ee899" 201 | integrity sha512-HhggYPH5N+AQe/OmN6fmhKmRRt2XuNJow+R3pQwJxOOF9GuwM7O2mheyGeIrs5MOIeNjDEdgdoyHBOrFeJBR3g== 202 | dependencies: 203 | node-fetch "*" 204 | 205 | "@types/node@*", "@types/node@>=12", "@types/node@>=12.0.0": 206 | version "20.4.1" 207 | resolved "https://registry.yarnpkg.com/@types/node/-/node-20.4.1.tgz#a6033a8718653c50ac4962977e14d0f984d9527d" 208 | integrity sha512-JIzsAvJeA/5iY6Y/OxZbv1lUcc8dNSE77lb2gnBH+/PJ3lFR1Ccvgwl5JWnHAkNHcRsT0TbpVOsiMKZ1F/yyJg== 209 | 210 | "@types/node@18.16.0": 211 | version "18.16.0" 212 | resolved "https://registry.yarnpkg.com/@types/node/-/node-18.16.0.tgz#4668bc392bb6938637b47e98b1f2ed5426f33316" 213 | integrity sha512-BsAaKhB+7X+H4GnSjGhJG9Qi8Tw+inU9nJDwmD5CgOmBLEI6ArdhikpLX7DjbjDRDTbqZzU2LSQNZg8WGPiSZQ== 214 | 215 | "@types/p-queue@^2.3.2": 216 | version "2.3.2" 217 | resolved "https://registry.yarnpkg.com/@types/p-queue/-/p-queue-2.3.2.tgz#16bc5fece69ef85efaf2bce8b13f3ebe39c5a1c8" 218 | integrity sha512-eKAv5Ql6k78dh3ULCsSBxX6bFNuGjTmof5Q/T6PiECDq0Yf8IIn46jCyp3RJvCi8owaEmm3DZH1PEImjBMd/vQ== 219 | 220 | "@types/promise.allsettled@^1.0.3": 221 | version "1.0.3" 222 | resolved "https://registry.yarnpkg.com/@types/promise.allsettled/-/promise.allsettled-1.0.3.tgz#6f3166618226a570b98c8250fc78687a912e56d5" 223 | integrity sha512-b/IFHHTkYkTqu41IH9UtpICwqrpKj2oNlb4KHPzFQDMiz+h1BgAeATeO0/XTph4+UkH9W2U0E4B4j64KWOovag== 224 | 225 | "@types/qs@*": 226 | version "6.9.7" 227 | resolved "https://registry.yarnpkg.com/@types/qs/-/qs-6.9.7.tgz#63bb7d067db107cc1e457c303bc25d511febf6cb" 228 | integrity sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw== 229 | 230 | "@types/range-parser@*": 231 | version "1.2.4" 232 | resolved "https://registry.yarnpkg.com/@types/range-parser/-/range-parser-1.2.4.tgz#cd667bcfdd025213aafb7ca5915a932590acdcdc" 233 | integrity sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw== 234 | 235 | "@types/retry@0.12.0": 236 | version "0.12.0" 237 | resolved "https://registry.yarnpkg.com/@types/retry/-/retry-0.12.0.tgz#2b35eccfcee7d38cd72ad99232fbd58bffb3c84d" 238 | integrity sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA== 239 | 240 | "@types/send@*": 241 | version "0.17.1" 242 | resolved "https://registry.yarnpkg.com/@types/send/-/send-0.17.1.tgz#ed4932b8a2a805f1fe362a70f4e62d0ac994e301" 243 | integrity sha512-Cwo8LE/0rnvX7kIIa3QHCkcuF21c05Ayb0ZfxPiv0W8VRiZiNW/WuRupHKpqqGVGf7SUA44QSOUKaEd9lIrd/Q== 244 | dependencies: 245 | "@types/mime" "^1" 246 | "@types/node" "*" 247 | 248 | "@types/serve-static@*": 249 | version "1.15.2" 250 | resolved "https://registry.yarnpkg.com/@types/serve-static/-/serve-static-1.15.2.tgz#3e5419ecd1e40e7405d34093f10befb43f63381a" 251 | integrity sha512-J2LqtvFYCzaj8pVYKw8klQXrLLk7TBZmQ4ShlcdkELFKGwGMfevMLneMMRkMgZxotOD9wg497LpC7O8PcvAmfw== 252 | dependencies: 253 | "@types/http-errors" "*" 254 | "@types/mime" "*" 255 | "@types/node" "*" 256 | 257 | "@types/tsscmp@^1.0.0": 258 | version "1.0.0" 259 | resolved "https://registry.yarnpkg.com/@types/tsscmp/-/tsscmp-1.0.0.tgz#761c885a530f9673ae6fda0cae38253ffd46cba6" 260 | integrity sha512-rj18XR6c4Ohds86Lq8MI1NMRrXes4eLo4H06e5bJyKucE1rXGsfBBbFGD2oDC+DSufQCpnU3TTW7QAiwLx+7Yw== 261 | 262 | "@types/uuid@^8.3.1": 263 | version "8.3.4" 264 | resolved "https://registry.yarnpkg.com/@types/uuid/-/uuid-8.3.4.tgz#bd86a43617df0594787d38b735f55c805becf1bc" 265 | integrity sha512-c/I8ZRb51j+pYGAu5CrFMRxqZ2ke4y2grEBO5AUjgSkSk+qT2Ea+OdWElz/OiMf5MNpn2b17kuVBwZLQJXzihw== 266 | 267 | "@types/ws@^7.4.7": 268 | version "7.4.7" 269 | resolved "https://registry.yarnpkg.com/@types/ws/-/ws-7.4.7.tgz#f7c390a36f7a0679aa69de2d501319f4f8d9b702" 270 | integrity sha512-JQbbmxZTZehdc2iszGKs5oC3NFnjeay7mtAWrdt7qNtAVK0g19muApzAy4bm9byz79xa2ZnO/BOBC2R8RC5Lww== 271 | dependencies: 272 | "@types/node" "*" 273 | 274 | abbrev@1: 275 | version "1.1.1" 276 | resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" 277 | integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q== 278 | 279 | accepts@~1.3.8: 280 | version "1.3.8" 281 | resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.8.tgz#0bf0be125b67014adcb0b0921e62db7bffe16b2e" 282 | integrity sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw== 283 | dependencies: 284 | mime-types "~2.1.34" 285 | negotiator "0.6.3" 286 | 287 | acorn-walk@^8.1.1: 288 | version "8.2.0" 289 | resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.2.0.tgz#741210f2e2426454508853a2f44d0ab83b7f69c1" 290 | integrity sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA== 291 | 292 | acorn@^8.4.1: 293 | version "8.10.0" 294 | resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.10.0.tgz#8be5b3907a67221a81ab23c7889c4c5526b62ec5" 295 | integrity sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw== 296 | 297 | anymatch@~3.1.2: 298 | version "3.1.3" 299 | resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.3.tgz#790c58b19ba1720a84205b57c618d5ad8524973e" 300 | integrity sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw== 301 | dependencies: 302 | normalize-path "^3.0.0" 303 | picomatch "^2.0.4" 304 | 305 | arg@^4.1.0: 306 | version "4.1.3" 307 | resolved "https://registry.yarnpkg.com/arg/-/arg-4.1.3.tgz#269fc7ad5b8e42cb63c896d5666017261c144089" 308 | integrity sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA== 309 | 310 | array-buffer-byte-length@^1.0.0: 311 | version "1.0.0" 312 | resolved "https://registry.yarnpkg.com/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz#fabe8bc193fea865f317fe7807085ee0dee5aead" 313 | integrity sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A== 314 | dependencies: 315 | call-bind "^1.0.2" 316 | is-array-buffer "^3.0.1" 317 | 318 | array-flatten@1.1.1: 319 | version "1.1.1" 320 | resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" 321 | integrity sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg== 322 | 323 | array.prototype.map@^1.0.5: 324 | version "1.0.5" 325 | resolved "https://registry.yarnpkg.com/array.prototype.map/-/array.prototype.map-1.0.5.tgz#6e43c2fee6c0fb5e4806da2dc92eb00970809e55" 326 | integrity sha512-gfaKntvwqYIuC7mLLyv2wzZIJqrRhn5PZ9EfFejSx6a78sV7iDsGpG9P+3oUPtm1Rerqm6nrKS4FYuTIvWfo3g== 327 | dependencies: 328 | call-bind "^1.0.2" 329 | define-properties "^1.1.4" 330 | es-abstract "^1.20.4" 331 | es-array-method-boxes-properly "^1.0.0" 332 | is-string "^1.0.7" 333 | 334 | asynckit@^0.4.0: 335 | version "0.4.0" 336 | resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" 337 | integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q== 338 | 339 | available-typed-arrays@^1.0.5: 340 | version "1.0.5" 341 | resolved "https://registry.yarnpkg.com/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz#92f95616501069d07d10edb2fc37d3e1c65123b7" 342 | integrity sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw== 343 | 344 | axios@^0.24.0: 345 | version "0.24.0" 346 | resolved "https://registry.yarnpkg.com/axios/-/axios-0.24.0.tgz#804e6fa1e4b9c5288501dd9dff56a7a0940d20d6" 347 | integrity sha512-Q6cWsys88HoPgAaFAVUb0WpPk0O8iTeisR9IMqy9G8AbO4NlpVknrnQS03zzF9PGAWgO3cgletO3VjV/P7VztA== 348 | dependencies: 349 | follow-redirects "^1.14.4" 350 | 351 | axios@^0.27.2: 352 | version "0.27.2" 353 | resolved "https://registry.yarnpkg.com/axios/-/axios-0.27.2.tgz#207658cc8621606e586c85db4b41a750e756d972" 354 | integrity sha512-t+yRIyySRTp/wua5xEr+z1q60QmLq8ABsS5O9Me1AsE5dfKqgnCFzwiCZZ/cGNd1lq4/7akDWMxdhVlucjmnOQ== 355 | dependencies: 356 | follow-redirects "^1.14.9" 357 | form-data "^4.0.0" 358 | 359 | balanced-match@^1.0.0: 360 | version "1.0.2" 361 | resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" 362 | integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== 363 | 364 | binary-extensions@^2.0.0: 365 | version "2.2.0" 366 | resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" 367 | integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== 368 | 369 | body-parser@1.20.1: 370 | version "1.20.1" 371 | resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.20.1.tgz#b1812a8912c195cd371a3ee5e66faa2338a5c668" 372 | integrity sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw== 373 | dependencies: 374 | bytes "3.1.2" 375 | content-type "~1.0.4" 376 | debug "2.6.9" 377 | depd "2.0.0" 378 | destroy "1.2.0" 379 | http-errors "2.0.0" 380 | iconv-lite "0.4.24" 381 | on-finished "2.4.1" 382 | qs "6.11.0" 383 | raw-body "2.5.1" 384 | type-is "~1.6.18" 385 | unpipe "1.0.0" 386 | 387 | brace-expansion@^1.1.7: 388 | version "1.1.11" 389 | resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" 390 | integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== 391 | dependencies: 392 | balanced-match "^1.0.0" 393 | concat-map "0.0.1" 394 | 395 | braces@~3.0.2: 396 | version "3.0.2" 397 | resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" 398 | integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== 399 | dependencies: 400 | fill-range "^7.0.1" 401 | 402 | buffer-equal-constant-time@1.0.1: 403 | version "1.0.1" 404 | resolved "https://registry.yarnpkg.com/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz#f8e71132f7ffe6e01a5c9697a4c6f3e48d5cc819" 405 | integrity sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA== 406 | 407 | bytes@3.1.2: 408 | version "3.1.2" 409 | resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.2.tgz#8b0beeb98605adf1b128fa4386403c009e0221a5" 410 | integrity sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg== 411 | 412 | call-bind@^1.0.0, call-bind@^1.0.2: 413 | version "1.0.2" 414 | resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c" 415 | integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA== 416 | dependencies: 417 | function-bind "^1.1.1" 418 | get-intrinsic "^1.0.2" 419 | 420 | chokidar@^3.5.2: 421 | version "3.5.3" 422 | resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd" 423 | integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw== 424 | dependencies: 425 | anymatch "~3.1.2" 426 | braces "~3.0.2" 427 | glob-parent "~5.1.2" 428 | is-binary-path "~2.1.0" 429 | is-glob "~4.0.1" 430 | normalize-path "~3.0.0" 431 | readdirp "~3.6.0" 432 | optionalDependencies: 433 | fsevents "~2.3.2" 434 | 435 | combined-stream@^1.0.6, combined-stream@^1.0.8: 436 | version "1.0.8" 437 | resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" 438 | integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== 439 | dependencies: 440 | delayed-stream "~1.0.0" 441 | 442 | concat-map@0.0.1: 443 | version "0.0.1" 444 | resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" 445 | integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== 446 | 447 | content-disposition@0.5.4: 448 | version "0.5.4" 449 | resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.4.tgz#8b82b4efac82512a02bb0b1dcec9d2c5e8eb5bfe" 450 | integrity sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ== 451 | dependencies: 452 | safe-buffer "5.2.1" 453 | 454 | content-type@~1.0.4: 455 | version "1.0.5" 456 | resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.5.tgz#8b773162656d1d1086784c8f23a54ce6d73d7918" 457 | integrity sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA== 458 | 459 | cookie-signature@1.0.6: 460 | version "1.0.6" 461 | resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" 462 | integrity sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ== 463 | 464 | cookie@0.5.0: 465 | version "0.5.0" 466 | resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.5.0.tgz#d1f5d71adec6558c58f389987c366aa47e994f8b" 467 | integrity sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw== 468 | 469 | create-require@^1.1.0: 470 | version "1.1.1" 471 | resolved "https://registry.yarnpkg.com/create-require/-/create-require-1.1.1.tgz#c1d7e8f1e5f6cfc9ff65f9cd352d37348756c333" 472 | integrity sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ== 473 | 474 | data-uri-to-buffer@^4.0.0: 475 | version "4.0.1" 476 | resolved "https://registry.yarnpkg.com/data-uri-to-buffer/-/data-uri-to-buffer-4.0.1.tgz#d8feb2b2881e6a4f58c2e08acfd0e2834e26222e" 477 | integrity sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A== 478 | 479 | debug@2.6.9: 480 | version "2.6.9" 481 | resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" 482 | integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== 483 | dependencies: 484 | ms "2.0.0" 485 | 486 | debug@^3.2.7: 487 | version "3.2.7" 488 | resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a" 489 | integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== 490 | dependencies: 491 | ms "^2.1.1" 492 | 493 | define-properties@^1.1.3, define-properties@^1.1.4, define-properties@^1.2.0: 494 | version "1.2.0" 495 | resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.2.0.tgz#52988570670c9eacedd8064f4a990f2405849bd5" 496 | integrity sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA== 497 | dependencies: 498 | has-property-descriptors "^1.0.0" 499 | object-keys "^1.1.1" 500 | 501 | delayed-stream@~1.0.0: 502 | version "1.0.0" 503 | resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" 504 | integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ== 505 | 506 | depd@2.0.0: 507 | version "2.0.0" 508 | resolved "https://registry.yarnpkg.com/depd/-/depd-2.0.0.tgz#b696163cc757560d09cf22cc8fad1571b79e76df" 509 | integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw== 510 | 511 | destroy@1.2.0: 512 | version "1.2.0" 513 | resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.2.0.tgz#4803735509ad8be552934c67df614f94e66fa015" 514 | integrity sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg== 515 | 516 | deta@^1.0.0: 517 | version "1.1.0" 518 | resolved "https://registry.yarnpkg.com/deta/-/deta-1.1.0.tgz#7a5ce103d859a182b35614034387541525b5c8be" 519 | integrity sha512-mQAvfAsB++McPMT3Gb39KWkxfFzaPSF+z8XNpomakkUslg9xTu6Z8gVjAXaDGJm0LFEIIZQdokpU+lOJOXtOqw== 520 | dependencies: 521 | node-fetch "^2.6.7" 522 | 523 | diff@^4.0.1: 524 | version "4.0.2" 525 | resolved "https://registry.yarnpkg.com/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d" 526 | integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A== 527 | 528 | dotenv@^8.2.0: 529 | version "8.6.0" 530 | resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-8.6.0.tgz#061af664d19f7f4d8fc6e4ff9b584ce237adcb8b" 531 | integrity sha512-IrPdXQsk2BbzvCBGBOTmmSH5SodmqZNt4ERAZDmW4CT+tL8VtvinqywuANaFu4bOMWki16nqf0e4oC0QIaDr/g== 532 | 533 | ecdsa-sig-formatter@1.0.11: 534 | version "1.0.11" 535 | resolved "https://registry.yarnpkg.com/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz#ae0f0fa2d85045ef14a817daa3ce9acd0489e5bf" 536 | integrity sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ== 537 | dependencies: 538 | safe-buffer "^5.0.1" 539 | 540 | ee-first@1.1.1: 541 | version "1.1.1" 542 | resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" 543 | integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow== 544 | 545 | encodeurl@~1.0.2: 546 | version "1.0.2" 547 | resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" 548 | integrity sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w== 549 | 550 | es-abstract@^1.19.0, es-abstract@^1.20.4: 551 | version "1.21.2" 552 | resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.21.2.tgz#a56b9695322c8a185dc25975aa3b8ec31d0e7eff" 553 | integrity sha512-y/B5POM2iBnIxCiernH1G7rC9qQoM77lLIMQLuob0zhp8C56Po81+2Nj0WFKnd0pNReDTnkYryc+zhOzpEIROg== 554 | dependencies: 555 | array-buffer-byte-length "^1.0.0" 556 | available-typed-arrays "^1.0.5" 557 | call-bind "^1.0.2" 558 | es-set-tostringtag "^2.0.1" 559 | es-to-primitive "^1.2.1" 560 | function.prototype.name "^1.1.5" 561 | get-intrinsic "^1.2.0" 562 | get-symbol-description "^1.0.0" 563 | globalthis "^1.0.3" 564 | gopd "^1.0.1" 565 | has "^1.0.3" 566 | has-property-descriptors "^1.0.0" 567 | has-proto "^1.0.1" 568 | has-symbols "^1.0.3" 569 | internal-slot "^1.0.5" 570 | is-array-buffer "^3.0.2" 571 | is-callable "^1.2.7" 572 | is-negative-zero "^2.0.2" 573 | is-regex "^1.1.4" 574 | is-shared-array-buffer "^1.0.2" 575 | is-string "^1.0.7" 576 | is-typed-array "^1.1.10" 577 | is-weakref "^1.0.2" 578 | object-inspect "^1.12.3" 579 | object-keys "^1.1.1" 580 | object.assign "^4.1.4" 581 | regexp.prototype.flags "^1.4.3" 582 | safe-regex-test "^1.0.0" 583 | string.prototype.trim "^1.2.7" 584 | string.prototype.trimend "^1.0.6" 585 | string.prototype.trimstart "^1.0.6" 586 | typed-array-length "^1.0.4" 587 | unbox-primitive "^1.0.2" 588 | which-typed-array "^1.1.9" 589 | 590 | es-array-method-boxes-properly@^1.0.0: 591 | version "1.0.0" 592 | resolved "https://registry.yarnpkg.com/es-array-method-boxes-properly/-/es-array-method-boxes-properly-1.0.0.tgz#873f3e84418de4ee19c5be752990b2e44718d09e" 593 | integrity sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA== 594 | 595 | es-get-iterator@^1.0.2: 596 | version "1.1.3" 597 | resolved "https://registry.yarnpkg.com/es-get-iterator/-/es-get-iterator-1.1.3.tgz#3ef87523c5d464d41084b2c3c9c214f1199763d6" 598 | integrity sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw== 599 | dependencies: 600 | call-bind "^1.0.2" 601 | get-intrinsic "^1.1.3" 602 | has-symbols "^1.0.3" 603 | is-arguments "^1.1.1" 604 | is-map "^2.0.2" 605 | is-set "^2.0.2" 606 | is-string "^1.0.7" 607 | isarray "^2.0.5" 608 | stop-iteration-iterator "^1.0.0" 609 | 610 | es-set-tostringtag@^2.0.1: 611 | version "2.0.1" 612 | resolved "https://registry.yarnpkg.com/es-set-tostringtag/-/es-set-tostringtag-2.0.1.tgz#338d502f6f674301d710b80c8592de8a15f09cd8" 613 | integrity sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg== 614 | dependencies: 615 | get-intrinsic "^1.1.3" 616 | has "^1.0.3" 617 | has-tostringtag "^1.0.0" 618 | 619 | es-to-primitive@^1.2.1: 620 | version "1.2.1" 621 | resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a" 622 | integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA== 623 | dependencies: 624 | is-callable "^1.1.4" 625 | is-date-object "^1.0.1" 626 | is-symbol "^1.0.2" 627 | 628 | escape-html@~1.0.3: 629 | version "1.0.3" 630 | resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" 631 | integrity sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow== 632 | 633 | etag@~1.8.1: 634 | version "1.8.1" 635 | resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" 636 | integrity sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg== 637 | 638 | eventemitter3@^3.1.0: 639 | version "3.1.2" 640 | resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-3.1.2.tgz#2d3d48f9c346698fce83a85d7d664e98535df6e7" 641 | integrity sha512-tvtQIeLVHjDkJYnzf2dgVMxfuSGJeM/7UCG17TT4EumTfNtF+0nebF/4zWOIkCreAbtNqhGEboB6BWrwqNaw4Q== 642 | 643 | eventemitter3@^4.0.4: 644 | version "4.0.7" 645 | resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.7.tgz#2de9b68f6528d5644ef5c59526a1b4a07306169f" 646 | integrity sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw== 647 | 648 | express@^4.16.4, express@^4.17.1: 649 | version "4.18.2" 650 | resolved "https://registry.yarnpkg.com/express/-/express-4.18.2.tgz#3fabe08296e930c796c19e3c516979386ba9fd59" 651 | integrity sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ== 652 | dependencies: 653 | accepts "~1.3.8" 654 | array-flatten "1.1.1" 655 | body-parser "1.20.1" 656 | content-disposition "0.5.4" 657 | content-type "~1.0.4" 658 | cookie "0.5.0" 659 | cookie-signature "1.0.6" 660 | debug "2.6.9" 661 | depd "2.0.0" 662 | encodeurl "~1.0.2" 663 | escape-html "~1.0.3" 664 | etag "~1.8.1" 665 | finalhandler "1.2.0" 666 | fresh "0.5.2" 667 | http-errors "2.0.0" 668 | merge-descriptors "1.0.1" 669 | methods "~1.1.2" 670 | on-finished "2.4.1" 671 | parseurl "~1.3.3" 672 | path-to-regexp "0.1.7" 673 | proxy-addr "~2.0.7" 674 | qs "6.11.0" 675 | range-parser "~1.2.1" 676 | safe-buffer "5.2.1" 677 | send "0.18.0" 678 | serve-static "1.15.0" 679 | setprototypeof "1.2.0" 680 | statuses "2.0.1" 681 | type-is "~1.6.18" 682 | utils-merge "1.0.1" 683 | vary "~1.1.2" 684 | 685 | fetch-blob@^3.1.2, fetch-blob@^3.1.4: 686 | version "3.2.0" 687 | resolved "https://registry.yarnpkg.com/fetch-blob/-/fetch-blob-3.2.0.tgz#f09b8d4bbd45adc6f0c20b7e787e793e309dcce9" 688 | integrity sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ== 689 | dependencies: 690 | node-domexception "^1.0.0" 691 | web-streams-polyfill "^3.0.3" 692 | 693 | fill-range@^7.0.1: 694 | version "7.0.1" 695 | resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" 696 | integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== 697 | dependencies: 698 | to-regex-range "^5.0.1" 699 | 700 | finalhandler@1.2.0: 701 | version "1.2.0" 702 | resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.2.0.tgz#7d23fe5731b207b4640e4fcd00aec1f9207a7b32" 703 | integrity sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg== 704 | dependencies: 705 | debug "2.6.9" 706 | encodeurl "~1.0.2" 707 | escape-html "~1.0.3" 708 | on-finished "2.4.1" 709 | parseurl "~1.3.3" 710 | statuses "2.0.1" 711 | unpipe "~1.0.0" 712 | 713 | finity@^0.5.4: 714 | version "0.5.4" 715 | resolved "https://registry.yarnpkg.com/finity/-/finity-0.5.4.tgz#f2a8a9198e8286467328ec32c8bfcc19a2229c11" 716 | integrity sha512-3l+5/1tuw616Lgb0QBimxfdd2TqaDGpfCBpfX6EqtFmqUV3FtQnVEX4Aa62DagYEqnsTIjZcTfbq9msDbXYgyA== 717 | 718 | follow-redirects@^1.14.4, follow-redirects@^1.14.9: 719 | version "1.15.2" 720 | resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.2.tgz#b460864144ba63f2681096f274c4e57026da2c13" 721 | integrity sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA== 722 | 723 | for-each@^0.3.3: 724 | version "0.3.3" 725 | resolved "https://registry.yarnpkg.com/for-each/-/for-each-0.3.3.tgz#69b447e88a0a5d32c3e7084f3f1710034b21376e" 726 | integrity sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw== 727 | dependencies: 728 | is-callable "^1.1.3" 729 | 730 | form-data@^2.5.0: 731 | version "2.5.1" 732 | resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.5.1.tgz#f2cbec57b5e59e23716e128fe44d4e5dd23895f4" 733 | integrity sha512-m21N3WOmEEURgk6B9GLOE4RuWOFf28Lhh9qGYeNlGq4VDXUlJy2th2slBNU8Gp8EzloYZOibZJ7t5ecIrFSjVA== 734 | dependencies: 735 | asynckit "^0.4.0" 736 | combined-stream "^1.0.6" 737 | mime-types "^2.1.12" 738 | 739 | form-data@^4.0.0: 740 | version "4.0.0" 741 | resolved "https://registry.yarnpkg.com/form-data/-/form-data-4.0.0.tgz#93919daeaf361ee529584b9b31664dc12c9fa452" 742 | integrity sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww== 743 | dependencies: 744 | asynckit "^0.4.0" 745 | combined-stream "^1.0.8" 746 | mime-types "^2.1.12" 747 | 748 | formdata-polyfill@^4.0.10: 749 | version "4.0.10" 750 | resolved "https://registry.yarnpkg.com/formdata-polyfill/-/formdata-polyfill-4.0.10.tgz#24807c31c9d402e002ab3d8c720144ceb8848423" 751 | integrity sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g== 752 | dependencies: 753 | fetch-blob "^3.1.2" 754 | 755 | forwarded@0.2.0: 756 | version "0.2.0" 757 | resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.2.0.tgz#2269936428aad4c15c7ebe9779a84bf0b2a81811" 758 | integrity sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow== 759 | 760 | fresh@0.5.2: 761 | version "0.5.2" 762 | resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" 763 | integrity sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q== 764 | 765 | fsevents@~2.3.2: 766 | version "2.3.2" 767 | resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" 768 | integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== 769 | 770 | function-bind@^1.1.1: 771 | version "1.1.1" 772 | resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" 773 | integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== 774 | 775 | function.prototype.name@^1.1.5: 776 | version "1.1.5" 777 | resolved "https://registry.yarnpkg.com/function.prototype.name/-/function.prototype.name-1.1.5.tgz#cce0505fe1ffb80503e6f9e46cc64e46a12a9621" 778 | integrity sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA== 779 | dependencies: 780 | call-bind "^1.0.2" 781 | define-properties "^1.1.3" 782 | es-abstract "^1.19.0" 783 | functions-have-names "^1.2.2" 784 | 785 | functions-have-names@^1.2.2, functions-have-names@^1.2.3: 786 | version "1.2.3" 787 | resolved "https://registry.yarnpkg.com/functions-have-names/-/functions-have-names-1.2.3.tgz#0404fe4ee2ba2f607f0e0ec3c80bae994133b834" 788 | integrity sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ== 789 | 790 | get-intrinsic@^1.0.2, get-intrinsic@^1.1.1, get-intrinsic@^1.1.3, get-intrinsic@^1.2.0: 791 | version "1.2.1" 792 | resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.1.tgz#d295644fed4505fc9cde952c37ee12b477a83d82" 793 | integrity sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw== 794 | dependencies: 795 | function-bind "^1.1.1" 796 | has "^1.0.3" 797 | has-proto "^1.0.1" 798 | has-symbols "^1.0.3" 799 | 800 | get-symbol-description@^1.0.0: 801 | version "1.0.0" 802 | resolved "https://registry.yarnpkg.com/get-symbol-description/-/get-symbol-description-1.0.0.tgz#7fdb81c900101fbd564dd5f1a30af5aadc1e58d6" 803 | integrity sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw== 804 | dependencies: 805 | call-bind "^1.0.2" 806 | get-intrinsic "^1.1.1" 807 | 808 | glob-parent@~5.1.2: 809 | version "5.1.2" 810 | resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" 811 | integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== 812 | dependencies: 813 | is-glob "^4.0.1" 814 | 815 | globalthis@^1.0.3: 816 | version "1.0.3" 817 | resolved "https://registry.yarnpkg.com/globalthis/-/globalthis-1.0.3.tgz#5852882a52b80dc301b0660273e1ed082f0b6ccf" 818 | integrity sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA== 819 | dependencies: 820 | define-properties "^1.1.3" 821 | 822 | gopd@^1.0.1: 823 | version "1.0.1" 824 | resolved "https://registry.yarnpkg.com/gopd/-/gopd-1.0.1.tgz#29ff76de69dac7489b7c0918a5788e56477c332c" 825 | integrity sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA== 826 | dependencies: 827 | get-intrinsic "^1.1.3" 828 | 829 | has-bigints@^1.0.1, has-bigints@^1.0.2: 830 | version "1.0.2" 831 | resolved "https://registry.yarnpkg.com/has-bigints/-/has-bigints-1.0.2.tgz#0871bd3e3d51626f6ca0966668ba35d5602d6eaa" 832 | integrity sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ== 833 | 834 | has-flag@^3.0.0: 835 | version "3.0.0" 836 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" 837 | integrity sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw== 838 | 839 | has-property-descriptors@^1.0.0: 840 | version "1.0.0" 841 | resolved "https://registry.yarnpkg.com/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz#610708600606d36961ed04c196193b6a607fa861" 842 | integrity sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ== 843 | dependencies: 844 | get-intrinsic "^1.1.1" 845 | 846 | has-proto@^1.0.1: 847 | version "1.0.1" 848 | resolved "https://registry.yarnpkg.com/has-proto/-/has-proto-1.0.1.tgz#1885c1305538958aff469fef37937c22795408e0" 849 | integrity sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg== 850 | 851 | has-symbols@^1.0.2, has-symbols@^1.0.3: 852 | version "1.0.3" 853 | resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8" 854 | integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A== 855 | 856 | has-tostringtag@^1.0.0: 857 | version "1.0.0" 858 | resolved "https://registry.yarnpkg.com/has-tostringtag/-/has-tostringtag-1.0.0.tgz#7e133818a7d394734f941e73c3d3f9291e658b25" 859 | integrity sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ== 860 | dependencies: 861 | has-symbols "^1.0.2" 862 | 863 | has@^1.0.3: 864 | version "1.0.3" 865 | resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" 866 | integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== 867 | dependencies: 868 | function-bind "^1.1.1" 869 | 870 | http-errors@2.0.0: 871 | version "2.0.0" 872 | resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-2.0.0.tgz#b7774a1486ef73cf7667ac9ae0858c012c57b9d3" 873 | integrity sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ== 874 | dependencies: 875 | depd "2.0.0" 876 | inherits "2.0.4" 877 | setprototypeof "1.2.0" 878 | statuses "2.0.1" 879 | toidentifier "1.0.1" 880 | 881 | iconv-lite@0.4.24: 882 | version "0.4.24" 883 | resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" 884 | integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== 885 | dependencies: 886 | safer-buffer ">= 2.1.2 < 3" 887 | 888 | ignore-by-default@^1.0.1: 889 | version "1.0.1" 890 | resolved "https://registry.yarnpkg.com/ignore-by-default/-/ignore-by-default-1.0.1.tgz#48ca6d72f6c6a3af00a9ad4ae6876be3889e2b09" 891 | integrity sha512-Ius2VYcGNk7T90CppJqcIkS5ooHUZyIQK+ClZfMfMNFEF9VSE73Fq+906u/CWu92x4gzZMWOwfFYckPObzdEbA== 892 | 893 | inherits@2.0.4: 894 | version "2.0.4" 895 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" 896 | integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== 897 | 898 | internal-slot@^1.0.4, internal-slot@^1.0.5: 899 | version "1.0.5" 900 | resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.5.tgz#f2a2ee21f668f8627a4667f309dc0f4fb6674986" 901 | integrity sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ== 902 | dependencies: 903 | get-intrinsic "^1.2.0" 904 | has "^1.0.3" 905 | side-channel "^1.0.4" 906 | 907 | ipaddr.js@1.9.1: 908 | version "1.9.1" 909 | resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3" 910 | integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g== 911 | 912 | is-arguments@^1.1.1: 913 | version "1.1.1" 914 | resolved "https://registry.yarnpkg.com/is-arguments/-/is-arguments-1.1.1.tgz#15b3f88fda01f2a97fec84ca761a560f123efa9b" 915 | integrity sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA== 916 | dependencies: 917 | call-bind "^1.0.2" 918 | has-tostringtag "^1.0.0" 919 | 920 | is-array-buffer@^3.0.1, is-array-buffer@^3.0.2: 921 | version "3.0.2" 922 | resolved "https://registry.yarnpkg.com/is-array-buffer/-/is-array-buffer-3.0.2.tgz#f2653ced8412081638ecb0ebbd0c41c6e0aecbbe" 923 | integrity sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w== 924 | dependencies: 925 | call-bind "^1.0.2" 926 | get-intrinsic "^1.2.0" 927 | is-typed-array "^1.1.10" 928 | 929 | is-bigint@^1.0.1: 930 | version "1.0.4" 931 | resolved "https://registry.yarnpkg.com/is-bigint/-/is-bigint-1.0.4.tgz#08147a1875bc2b32005d41ccd8291dffc6691df3" 932 | integrity sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg== 933 | dependencies: 934 | has-bigints "^1.0.1" 935 | 936 | is-binary-path@~2.1.0: 937 | version "2.1.0" 938 | resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" 939 | integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== 940 | dependencies: 941 | binary-extensions "^2.0.0" 942 | 943 | is-boolean-object@^1.1.0: 944 | version "1.1.2" 945 | resolved "https://registry.yarnpkg.com/is-boolean-object/-/is-boolean-object-1.1.2.tgz#5c6dc200246dd9321ae4b885a114bb1f75f63719" 946 | integrity sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA== 947 | dependencies: 948 | call-bind "^1.0.2" 949 | has-tostringtag "^1.0.0" 950 | 951 | is-callable@^1.1.3, is-callable@^1.1.4, is-callable@^1.2.7: 952 | version "1.2.7" 953 | resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.7.tgz#3bc2a85ea742d9e36205dcacdd72ca1fdc51b055" 954 | integrity sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA== 955 | 956 | is-date-object@^1.0.1: 957 | version "1.0.5" 958 | resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.5.tgz#0841d5536e724c25597bf6ea62e1bd38298df31f" 959 | integrity sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ== 960 | dependencies: 961 | has-tostringtag "^1.0.0" 962 | 963 | is-electron@2.2.0: 964 | version "2.2.0" 965 | resolved "https://registry.yarnpkg.com/is-electron/-/is-electron-2.2.0.tgz#8943084f09e8b731b3a7a0298a7b5d56f6b7eef0" 966 | integrity sha512-SpMppC2XR3YdxSzczXReBjqs2zGscWQpBIKqwXYBFic0ERaxNVgwLCHwOLZeESfdJQjX0RDvrJ1lBXX2ij+G1Q== 967 | 968 | is-extglob@^2.1.1: 969 | version "2.1.1" 970 | resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" 971 | integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== 972 | 973 | is-glob@^4.0.1, is-glob@~4.0.1: 974 | version "4.0.3" 975 | resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" 976 | integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== 977 | dependencies: 978 | is-extglob "^2.1.1" 979 | 980 | is-map@^2.0.2: 981 | version "2.0.2" 982 | resolved "https://registry.yarnpkg.com/is-map/-/is-map-2.0.2.tgz#00922db8c9bf73e81b7a335827bc2a43f2b91127" 983 | integrity sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg== 984 | 985 | is-negative-zero@^2.0.2: 986 | version "2.0.2" 987 | resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.2.tgz#7bf6f03a28003b8b3965de3ac26f664d765f3150" 988 | integrity sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA== 989 | 990 | is-number-object@^1.0.4: 991 | version "1.0.7" 992 | resolved "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.0.7.tgz#59d50ada4c45251784e9904f5246c742f07a42fc" 993 | integrity sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ== 994 | dependencies: 995 | has-tostringtag "^1.0.0" 996 | 997 | is-number@^7.0.0: 998 | version "7.0.0" 999 | resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" 1000 | integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== 1001 | 1002 | is-regex@^1.1.4: 1003 | version "1.1.4" 1004 | resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.4.tgz#eef5663cd59fa4c0ae339505323df6854bb15958" 1005 | integrity sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg== 1006 | dependencies: 1007 | call-bind "^1.0.2" 1008 | has-tostringtag "^1.0.0" 1009 | 1010 | is-set@^2.0.2: 1011 | version "2.0.2" 1012 | resolved "https://registry.yarnpkg.com/is-set/-/is-set-2.0.2.tgz#90755fa4c2562dc1c5d4024760d6119b94ca18ec" 1013 | integrity sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g== 1014 | 1015 | is-shared-array-buffer@^1.0.2: 1016 | version "1.0.2" 1017 | resolved "https://registry.yarnpkg.com/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz#8f259c573b60b6a32d4058a1a07430c0a7344c79" 1018 | integrity sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA== 1019 | dependencies: 1020 | call-bind "^1.0.2" 1021 | 1022 | is-stream@^1.1.0: 1023 | version "1.1.0" 1024 | resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" 1025 | integrity sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ== 1026 | 1027 | is-string@^1.0.5, is-string@^1.0.7: 1028 | version "1.0.7" 1029 | resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.7.tgz#0dd12bf2006f255bb58f695110eff7491eebc0fd" 1030 | integrity sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg== 1031 | dependencies: 1032 | has-tostringtag "^1.0.0" 1033 | 1034 | is-symbol@^1.0.2, is-symbol@^1.0.3: 1035 | version "1.0.4" 1036 | resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.4.tgz#a6dac93b635b063ca6872236de88910a57af139c" 1037 | integrity sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg== 1038 | dependencies: 1039 | has-symbols "^1.0.2" 1040 | 1041 | is-typed-array@^1.1.10, is-typed-array@^1.1.9: 1042 | version "1.1.10" 1043 | resolved "https://registry.yarnpkg.com/is-typed-array/-/is-typed-array-1.1.10.tgz#36a5b5cb4189b575d1a3e4b08536bfb485801e3f" 1044 | integrity sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A== 1045 | dependencies: 1046 | available-typed-arrays "^1.0.5" 1047 | call-bind "^1.0.2" 1048 | for-each "^0.3.3" 1049 | gopd "^1.0.1" 1050 | has-tostringtag "^1.0.0" 1051 | 1052 | is-weakref@^1.0.2: 1053 | version "1.0.2" 1054 | resolved "https://registry.yarnpkg.com/is-weakref/-/is-weakref-1.0.2.tgz#9529f383a9338205e89765e0392efc2f100f06f2" 1055 | integrity sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ== 1056 | dependencies: 1057 | call-bind "^1.0.2" 1058 | 1059 | isarray@^2.0.5: 1060 | version "2.0.5" 1061 | resolved "https://registry.yarnpkg.com/isarray/-/isarray-2.0.5.tgz#8af1e4c1221244cc62459faf38940d4e644a5723" 1062 | integrity sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw== 1063 | 1064 | iterate-iterator@^1.0.1: 1065 | version "1.0.2" 1066 | resolved "https://registry.yarnpkg.com/iterate-iterator/-/iterate-iterator-1.0.2.tgz#551b804c9eaa15b847ea6a7cdc2f5bf1ec150f91" 1067 | integrity sha512-t91HubM4ZDQ70M9wqp+pcNpu8OyJ9UAtXntT/Bcsvp5tZMnz9vRa+IunKXeI8AnfZMTv0jNuVEmGeLSMjVvfPw== 1068 | 1069 | iterate-value@^1.0.2: 1070 | version "1.0.2" 1071 | resolved "https://registry.yarnpkg.com/iterate-value/-/iterate-value-1.0.2.tgz#935115bd37d006a52046535ebc8d07e9c9337f57" 1072 | integrity sha512-A6fMAio4D2ot2r/TYzr4yUWrmwNdsN5xL7+HUiyACE4DXm+q8HtPcnFTp+NnW3k4N05tZ7FVYFFb2CR13NxyHQ== 1073 | dependencies: 1074 | es-get-iterator "^1.0.2" 1075 | iterate-iterator "^1.0.1" 1076 | 1077 | jsonwebtoken@^9.0.0: 1078 | version "9.0.1" 1079 | resolved "https://registry.yarnpkg.com/jsonwebtoken/-/jsonwebtoken-9.0.1.tgz#81d8c901c112c24e497a55daf6b2be1225b40145" 1080 | integrity sha512-K8wx7eJ5TPvEjuiVSkv167EVboBDv9PZdDoF7BgeQnBLVvZWW9clr2PsQHVJDTKaEIH5JBIwHujGcHp7GgI2eg== 1081 | dependencies: 1082 | jws "^3.2.2" 1083 | lodash "^4.17.21" 1084 | ms "^2.1.1" 1085 | semver "^7.3.8" 1086 | 1087 | jwa@^1.4.1: 1088 | version "1.4.1" 1089 | resolved "https://registry.yarnpkg.com/jwa/-/jwa-1.4.1.tgz#743c32985cb9e98655530d53641b66c8645b039a" 1090 | integrity sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA== 1091 | dependencies: 1092 | buffer-equal-constant-time "1.0.1" 1093 | ecdsa-sig-formatter "1.0.11" 1094 | safe-buffer "^5.0.1" 1095 | 1096 | jws@^3.2.2: 1097 | version "3.2.2" 1098 | resolved "https://registry.yarnpkg.com/jws/-/jws-3.2.2.tgz#001099f3639468c9414000e99995fa52fb478304" 1099 | integrity sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA== 1100 | dependencies: 1101 | jwa "^1.4.1" 1102 | safe-buffer "^5.0.1" 1103 | 1104 | lodash.isstring@^4.0.1: 1105 | version "4.0.1" 1106 | resolved "https://registry.yarnpkg.com/lodash.isstring/-/lodash.isstring-4.0.1.tgz#d527dfb5456eca7cc9bb95d5daeaf88ba54a5451" 1107 | integrity sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw== 1108 | 1109 | lodash@^4.17.21: 1110 | version "4.17.21" 1111 | resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" 1112 | integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== 1113 | 1114 | lru-cache@^6.0.0: 1115 | version "6.0.0" 1116 | resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" 1117 | integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== 1118 | dependencies: 1119 | yallist "^4.0.0" 1120 | 1121 | make-error@^1.1.1: 1122 | version "1.3.6" 1123 | resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2" 1124 | integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw== 1125 | 1126 | media-typer@0.3.0: 1127 | version "0.3.0" 1128 | resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" 1129 | integrity sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ== 1130 | 1131 | merge-descriptors@1.0.1: 1132 | version "1.0.1" 1133 | resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" 1134 | integrity sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w== 1135 | 1136 | methods@~1.1.2: 1137 | version "1.1.2" 1138 | resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" 1139 | integrity sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w== 1140 | 1141 | mime-db@1.52.0: 1142 | version "1.52.0" 1143 | resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" 1144 | integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== 1145 | 1146 | mime-types@^2.1.12, mime-types@~2.1.24, mime-types@~2.1.34: 1147 | version "2.1.35" 1148 | resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" 1149 | integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== 1150 | dependencies: 1151 | mime-db "1.52.0" 1152 | 1153 | mime@1.6.0: 1154 | version "1.6.0" 1155 | resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" 1156 | integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== 1157 | 1158 | minimatch@^3.1.2: 1159 | version "3.1.2" 1160 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" 1161 | integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== 1162 | dependencies: 1163 | brace-expansion "^1.1.7" 1164 | 1165 | ms@2.0.0: 1166 | version "2.0.0" 1167 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" 1168 | integrity sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A== 1169 | 1170 | ms@2.1.3, ms@^2.1.1: 1171 | version "2.1.3" 1172 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" 1173 | integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== 1174 | 1175 | negotiator@0.6.3: 1176 | version "0.6.3" 1177 | resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.3.tgz#58e323a72fedc0d6f9cd4d31fe49f51479590ccd" 1178 | integrity sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg== 1179 | 1180 | node-domexception@^1.0.0: 1181 | version "1.0.0" 1182 | resolved "https://registry.yarnpkg.com/node-domexception/-/node-domexception-1.0.0.tgz#6888db46a1f71c0b76b3f7555016b63fe64766e5" 1183 | integrity sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ== 1184 | 1185 | node-fetch@*: 1186 | version "3.3.1" 1187 | resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-3.3.1.tgz#b3eea7b54b3a48020e46f4f88b9c5a7430d20b2e" 1188 | integrity sha512-cRVc/kyto/7E5shrWca1Wsea4y6tL9iYJE5FBCius3JQfb/4P4I295PfhgbJQBLTx6lATE4z+wK0rPM4VS2uow== 1189 | dependencies: 1190 | data-uri-to-buffer "^4.0.0" 1191 | fetch-blob "^3.1.4" 1192 | formdata-polyfill "^4.0.10" 1193 | 1194 | node-fetch@^2.6.1, node-fetch@^2.6.2, node-fetch@^2.6.7: 1195 | version "2.6.12" 1196 | resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.12.tgz#02eb8e22074018e3d5a83016649d04df0e348fba" 1197 | integrity sha512-C/fGU2E8ToujUivIO0H+tpQ6HWo4eEmchoPIoXtxCrVghxdKq+QOHqEZW7tuP3KlV3bC8FRMO5nMCC7Zm1VP6g== 1198 | dependencies: 1199 | whatwg-url "^5.0.0" 1200 | 1201 | nodemon@^2.0.7: 1202 | version "2.0.22" 1203 | resolved "https://registry.yarnpkg.com/nodemon/-/nodemon-2.0.22.tgz#182c45c3a78da486f673d6c1702e00728daf5258" 1204 | integrity sha512-B8YqaKMmyuCO7BowF1Z1/mkPqLk6cs/l63Ojtd6otKjMx47Dq1utxfRxcavH1I7VSaL8n5BUaoutadnsX3AAVQ== 1205 | dependencies: 1206 | chokidar "^3.5.2" 1207 | debug "^3.2.7" 1208 | ignore-by-default "^1.0.1" 1209 | minimatch "^3.1.2" 1210 | pstree.remy "^1.1.8" 1211 | semver "^5.7.1" 1212 | simple-update-notifier "^1.0.7" 1213 | supports-color "^5.5.0" 1214 | touch "^3.1.0" 1215 | undefsafe "^2.0.5" 1216 | 1217 | nopt@~1.0.10: 1218 | version "1.0.10" 1219 | resolved "https://registry.yarnpkg.com/nopt/-/nopt-1.0.10.tgz#6ddd21bd2a31417b92727dd585f8a6f37608ebee" 1220 | integrity sha512-NWmpvLSqUrgrAC9HCuxEvb+PSloHpqVu+FqcO4eeF2h5qYRhA7ev6KvelyQAKtegUbC6RypJnlEOhd8vloNKYg== 1221 | dependencies: 1222 | abbrev "1" 1223 | 1224 | normalize-path@^3.0.0, normalize-path@~3.0.0: 1225 | version "3.0.0" 1226 | resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" 1227 | integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== 1228 | 1229 | object-inspect@^1.12.3, object-inspect@^1.9.0: 1230 | version "1.12.3" 1231 | resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.12.3.tgz#ba62dffd67ee256c8c086dfae69e016cd1f198b9" 1232 | integrity sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g== 1233 | 1234 | object-keys@^1.1.1: 1235 | version "1.1.1" 1236 | resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" 1237 | integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== 1238 | 1239 | object.assign@^4.1.4: 1240 | version "4.1.4" 1241 | resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.4.tgz#9673c7c7c351ab8c4d0b516f4343ebf4dfb7799f" 1242 | integrity sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ== 1243 | dependencies: 1244 | call-bind "^1.0.2" 1245 | define-properties "^1.1.4" 1246 | has-symbols "^1.0.3" 1247 | object-keys "^1.1.1" 1248 | 1249 | on-finished@2.4.1: 1250 | version "2.4.1" 1251 | resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.4.1.tgz#58c8c44116e54845ad57f14ab10b03533184ac3f" 1252 | integrity sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg== 1253 | dependencies: 1254 | ee-first "1.1.1" 1255 | 1256 | p-cancelable@^1.1.0: 1257 | version "1.1.0" 1258 | resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-1.1.0.tgz#d078d15a3af409220c886f1d9a0ca2e441ab26cc" 1259 | integrity sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw== 1260 | 1261 | p-finally@^1.0.0: 1262 | version "1.0.0" 1263 | resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" 1264 | integrity sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow== 1265 | 1266 | p-queue@^2.4.2: 1267 | version "2.4.2" 1268 | resolved "https://registry.yarnpkg.com/p-queue/-/p-queue-2.4.2.tgz#03609826682b743be9a22dba25051bd46724fc34" 1269 | integrity sha512-n8/y+yDJwBjoLQe1GSJbbaYQLTI7QHNZI2+rpmCDbe++WLf9HC3gf6iqj5yfPAV71W4UF3ql5W1+UBPXoXTxng== 1270 | 1271 | p-queue@^6.6.1: 1272 | version "6.6.2" 1273 | resolved "https://registry.yarnpkg.com/p-queue/-/p-queue-6.6.2.tgz#2068a9dcf8e67dd0ec3e7a2bcb76810faa85e426" 1274 | integrity sha512-RwFpb72c/BhQLEXIZ5K2e+AhgNVmIejGlTgiB9MzZ0e93GRvqZ7uSi0dvRF7/XIXDeNkra2fNHBxTyPDGySpjQ== 1275 | dependencies: 1276 | eventemitter3 "^4.0.4" 1277 | p-timeout "^3.2.0" 1278 | 1279 | p-retry@^4.0.0: 1280 | version "4.6.2" 1281 | resolved "https://registry.yarnpkg.com/p-retry/-/p-retry-4.6.2.tgz#9baae7184057edd4e17231cee04264106e092a16" 1282 | integrity sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ== 1283 | dependencies: 1284 | "@types/retry" "0.12.0" 1285 | retry "^0.13.1" 1286 | 1287 | p-timeout@^3.2.0: 1288 | version "3.2.0" 1289 | resolved "https://registry.yarnpkg.com/p-timeout/-/p-timeout-3.2.0.tgz#c7e17abc971d2a7962ef83626b35d635acf23dfe" 1290 | integrity sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg== 1291 | dependencies: 1292 | p-finally "^1.0.0" 1293 | 1294 | parseurl@~1.3.3: 1295 | version "1.3.3" 1296 | resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" 1297 | integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== 1298 | 1299 | path-to-regexp@0.1.7: 1300 | version "0.1.7" 1301 | resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" 1302 | integrity sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ== 1303 | 1304 | path-to-regexp@^6.2.1: 1305 | version "6.2.1" 1306 | resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-6.2.1.tgz#d54934d6798eb9e5ef14e7af7962c945906918e5" 1307 | integrity sha512-JLyh7xT1kizaEvcaXOQwOc2/Yhw6KZOvPf1S8401UyLk86CU79LN3vl7ztXGm/pZ+YjoyAJ4rxmHwbkBXJX+yw== 1308 | 1309 | picomatch@^2.0.4, picomatch@^2.2.1: 1310 | version "2.3.1" 1311 | resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" 1312 | integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== 1313 | 1314 | please-upgrade-node@^3.2.0: 1315 | version "3.2.0" 1316 | resolved "https://registry.yarnpkg.com/please-upgrade-node/-/please-upgrade-node-3.2.0.tgz#aeddd3f994c933e4ad98b99d9a556efa0e2fe942" 1317 | integrity sha512-gQR3WpIgNIKwBMVLkpMUeR3e1/E1y42bqDQZfql+kDeXd8COYfM8PQA4X6y7a8u9Ua9FHmsrrmirW2vHs45hWg== 1318 | dependencies: 1319 | semver-compare "^1.0.0" 1320 | 1321 | promise.allsettled@^1.0.2: 1322 | version "1.0.6" 1323 | resolved "https://registry.yarnpkg.com/promise.allsettled/-/promise.allsettled-1.0.6.tgz#8dc8ba8edf429feb60f8e81335b920e109c94b6e" 1324 | integrity sha512-22wJUOD3zswWFqgwjNHa1965LvqTX87WPu/lreY2KSd7SVcERfuZ4GfUaOnJNnvtoIv2yXT/W00YIGMetXtFXg== 1325 | dependencies: 1326 | array.prototype.map "^1.0.5" 1327 | call-bind "^1.0.2" 1328 | define-properties "^1.1.4" 1329 | es-abstract "^1.20.4" 1330 | get-intrinsic "^1.1.3" 1331 | iterate-value "^1.0.2" 1332 | 1333 | proxy-addr@~2.0.7: 1334 | version "2.0.7" 1335 | resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.7.tgz#f19fe69ceab311eeb94b42e70e8c2070f9ba1025" 1336 | integrity sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg== 1337 | dependencies: 1338 | forwarded "0.2.0" 1339 | ipaddr.js "1.9.1" 1340 | 1341 | pstree.remy@^1.1.8: 1342 | version "1.1.8" 1343 | resolved "https://registry.yarnpkg.com/pstree.remy/-/pstree.remy-1.1.8.tgz#c242224f4a67c21f686839bbdb4ac282b8373d3a" 1344 | integrity sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w== 1345 | 1346 | qs@6.11.0: 1347 | version "6.11.0" 1348 | resolved "https://registry.yarnpkg.com/qs/-/qs-6.11.0.tgz#fd0d963446f7a65e1367e01abd85429453f0c37a" 1349 | integrity sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q== 1350 | dependencies: 1351 | side-channel "^1.0.4" 1352 | 1353 | random-hex@^1.0.2: 1354 | version "1.0.2" 1355 | resolved "https://registry.yarnpkg.com/random-hex/-/random-hex-1.0.2.tgz#17b5524413455ddb710c8c4846a11ab7195bf49f" 1356 | integrity sha512-MZa4hZIAFdVV/mzB1YZjdwrjzsjuYzR7gY1R9GDCQqGJYbbyQHp9+uS3T3vmhYM+GagELvufkE1eD0T1nSS1uQ== 1357 | 1358 | range-parser@~1.2.1: 1359 | version "1.2.1" 1360 | resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" 1361 | integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== 1362 | 1363 | raw-body@2.5.1: 1364 | version "2.5.1" 1365 | resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.5.1.tgz#fe1b1628b181b700215e5fd42389f98b71392857" 1366 | integrity sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig== 1367 | dependencies: 1368 | bytes "3.1.2" 1369 | http-errors "2.0.0" 1370 | iconv-lite "0.4.24" 1371 | unpipe "1.0.0" 1372 | 1373 | raw-body@^2.3.3: 1374 | version "2.5.2" 1375 | resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.5.2.tgz#99febd83b90e08975087e8f1f9419a149366b68a" 1376 | integrity sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA== 1377 | dependencies: 1378 | bytes "3.1.2" 1379 | http-errors "2.0.0" 1380 | iconv-lite "0.4.24" 1381 | unpipe "1.0.0" 1382 | 1383 | readdirp@~3.6.0: 1384 | version "3.6.0" 1385 | resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" 1386 | integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== 1387 | dependencies: 1388 | picomatch "^2.2.1" 1389 | 1390 | regexp.prototype.flags@^1.4.3: 1391 | version "1.5.0" 1392 | resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.5.0.tgz#fe7ce25e7e4cca8db37b6634c8a2c7009199b9cb" 1393 | integrity sha512-0SutC3pNudRKgquxGoRGIz946MZVHqbNfPjBdxeOhBrdgDKlRoXmYLQN9xRbrR09ZXWeGAdPuif7egofn6v5LA== 1394 | dependencies: 1395 | call-bind "^1.0.2" 1396 | define-properties "^1.2.0" 1397 | functions-have-names "^1.2.3" 1398 | 1399 | retry@^0.13.1: 1400 | version "0.13.1" 1401 | resolved "https://registry.yarnpkg.com/retry/-/retry-0.13.1.tgz#185b1587acf67919d63b357349e03537b2484658" 1402 | integrity sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg== 1403 | 1404 | safe-buffer@5.2.1, safe-buffer@^5.0.1: 1405 | version "5.2.1" 1406 | resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" 1407 | integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== 1408 | 1409 | safe-regex-test@^1.0.0: 1410 | version "1.0.0" 1411 | resolved "https://registry.yarnpkg.com/safe-regex-test/-/safe-regex-test-1.0.0.tgz#793b874d524eb3640d1873aad03596db2d4f2295" 1412 | integrity sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA== 1413 | dependencies: 1414 | call-bind "^1.0.2" 1415 | get-intrinsic "^1.1.3" 1416 | is-regex "^1.1.4" 1417 | 1418 | "safer-buffer@>= 2.1.2 < 3": 1419 | version "2.1.2" 1420 | resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" 1421 | integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== 1422 | 1423 | semver-compare@^1.0.0: 1424 | version "1.0.0" 1425 | resolved "https://registry.yarnpkg.com/semver-compare/-/semver-compare-1.0.0.tgz#0dee216a1c941ab37e9efb1788f6afc5ff5537fc" 1426 | integrity sha512-YM3/ITh2MJ5MtzaM429anh+x2jiLVjqILF4m4oyQB18W7Ggea7BfqdH/wGMK7dDiMghv/6WG7znWMwUDzJiXow== 1427 | 1428 | semver@^5.7.1: 1429 | version "5.7.1" 1430 | resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" 1431 | integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== 1432 | 1433 | semver@^7.3.8: 1434 | version "7.5.4" 1435 | resolved "https://registry.yarnpkg.com/semver/-/semver-7.5.4.tgz#483986ec4ed38e1c6c48c34894a9182dbff68a6e" 1436 | integrity sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA== 1437 | dependencies: 1438 | lru-cache "^6.0.0" 1439 | 1440 | semver@~7.0.0: 1441 | version "7.0.0" 1442 | resolved "https://registry.yarnpkg.com/semver/-/semver-7.0.0.tgz#5f3ca35761e47e05b206c6daff2cf814f0316b8e" 1443 | integrity sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A== 1444 | 1445 | send@0.18.0: 1446 | version "0.18.0" 1447 | resolved "https://registry.yarnpkg.com/send/-/send-0.18.0.tgz#670167cc654b05f5aa4a767f9113bb371bc706be" 1448 | integrity sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg== 1449 | dependencies: 1450 | debug "2.6.9" 1451 | depd "2.0.0" 1452 | destroy "1.2.0" 1453 | encodeurl "~1.0.2" 1454 | escape-html "~1.0.3" 1455 | etag "~1.8.1" 1456 | fresh "0.5.2" 1457 | http-errors "2.0.0" 1458 | mime "1.6.0" 1459 | ms "2.1.3" 1460 | on-finished "2.4.1" 1461 | range-parser "~1.2.1" 1462 | statuses "2.0.1" 1463 | 1464 | serve-static@1.15.0: 1465 | version "1.15.0" 1466 | resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.15.0.tgz#faaef08cffe0a1a62f60cad0c4e513cff0ac9540" 1467 | integrity sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g== 1468 | dependencies: 1469 | encodeurl "~1.0.2" 1470 | escape-html "~1.0.3" 1471 | parseurl "~1.3.3" 1472 | send "0.18.0" 1473 | 1474 | setprototypeof@1.2.0: 1475 | version "1.2.0" 1476 | resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.2.0.tgz#66c9a24a73f9fc28cbe66b09fed3d33dcaf1b424" 1477 | integrity sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw== 1478 | 1479 | side-channel@^1.0.4: 1480 | version "1.0.4" 1481 | resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.4.tgz#efce5c8fdc104ee751b25c58d4290011fa5ea2cf" 1482 | integrity sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw== 1483 | dependencies: 1484 | call-bind "^1.0.0" 1485 | get-intrinsic "^1.0.2" 1486 | object-inspect "^1.9.0" 1487 | 1488 | simple-update-notifier@^1.0.7: 1489 | version "1.1.0" 1490 | resolved "https://registry.yarnpkg.com/simple-update-notifier/-/simple-update-notifier-1.1.0.tgz#67694c121de354af592b347cdba798463ed49c82" 1491 | integrity sha512-VpsrsJSUcJEseSbMHkrsrAVSdvVS5I96Qo1QAQ4FxQ9wXFcB+pjj7FB7/us9+GcgfW4ziHtYMc1J0PLczb55mg== 1492 | dependencies: 1493 | semver "~7.0.0" 1494 | 1495 | statuses@2.0.1: 1496 | version "2.0.1" 1497 | resolved "https://registry.yarnpkg.com/statuses/-/statuses-2.0.1.tgz#55cb000ccf1d48728bd23c685a063998cf1a1b63" 1498 | integrity sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ== 1499 | 1500 | stop-iteration-iterator@^1.0.0: 1501 | version "1.0.0" 1502 | resolved "https://registry.yarnpkg.com/stop-iteration-iterator/-/stop-iteration-iterator-1.0.0.tgz#6a60be0b4ee757d1ed5254858ec66b10c49285e4" 1503 | integrity sha512-iCGQj+0l0HOdZ2AEeBADlsRC+vsnDsZsbdSiH1yNSjcfKM7fdpCMfqAL/dwF5BLiw/XhRft/Wax6zQbhq2BcjQ== 1504 | dependencies: 1505 | internal-slot "^1.0.4" 1506 | 1507 | string.prototype.trim@^1.2.7: 1508 | version "1.2.7" 1509 | resolved "https://registry.yarnpkg.com/string.prototype.trim/-/string.prototype.trim-1.2.7.tgz#a68352740859f6893f14ce3ef1bb3037f7a90533" 1510 | integrity sha512-p6TmeT1T3411M8Cgg9wBTMRtY2q9+PNy9EV1i2lIXUN/btt763oIfxwN3RR8VU6wHX8j/1CFy0L+YuThm6bgOg== 1511 | dependencies: 1512 | call-bind "^1.0.2" 1513 | define-properties "^1.1.4" 1514 | es-abstract "^1.20.4" 1515 | 1516 | string.prototype.trimend@^1.0.6: 1517 | version "1.0.6" 1518 | resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.6.tgz#c4a27fa026d979d79c04f17397f250a462944533" 1519 | integrity sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ== 1520 | dependencies: 1521 | call-bind "^1.0.2" 1522 | define-properties "^1.1.4" 1523 | es-abstract "^1.20.4" 1524 | 1525 | string.prototype.trimstart@^1.0.6: 1526 | version "1.0.6" 1527 | resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.6.tgz#e90ab66aa8e4007d92ef591bbf3cd422c56bdcf4" 1528 | integrity sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA== 1529 | dependencies: 1530 | call-bind "^1.0.2" 1531 | define-properties "^1.1.4" 1532 | es-abstract "^1.20.4" 1533 | 1534 | stump.js@^1.1.0: 1535 | version "1.1.0" 1536 | resolved "https://registry.yarnpkg.com/stump.js/-/stump.js-1.1.0.tgz#4664bb7fc686a837b716889dcf1d031cf84ffcba" 1537 | integrity sha512-lQQ7brFtWj+0YQIk0bJhKBUGcehf9YY2O89W2sGd5S6dpYVDXQFlbzsMSHm+W2aOLzcqvB2PunYkBLpoPGBpxg== 1538 | dependencies: 1539 | node-fetch "^2.6.1" 1540 | 1541 | supports-color@^5.5.0: 1542 | version "5.5.0" 1543 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" 1544 | integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== 1545 | dependencies: 1546 | has-flag "^3.0.0" 1547 | 1548 | to-regex-range@^5.0.1: 1549 | version "5.0.1" 1550 | resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" 1551 | integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== 1552 | dependencies: 1553 | is-number "^7.0.0" 1554 | 1555 | toidentifier@1.0.1: 1556 | version "1.0.1" 1557 | resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.1.tgz#3be34321a88a820ed1bd80dfaa33e479fbb8dd35" 1558 | integrity sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA== 1559 | 1560 | touch@^3.1.0: 1561 | version "3.1.0" 1562 | resolved "https://registry.yarnpkg.com/touch/-/touch-3.1.0.tgz#fe365f5f75ec9ed4e56825e0bb76d24ab74af83b" 1563 | integrity sha512-WBx8Uy5TLtOSRtIq+M03/sKDrXCLHxwDcquSP2c43Le03/9serjQBIztjRz6FkJez9D/hleyAXTBGLwwZUw9lA== 1564 | dependencies: 1565 | nopt "~1.0.10" 1566 | 1567 | tr46@~0.0.3: 1568 | version "0.0.3" 1569 | resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" 1570 | integrity sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw== 1571 | 1572 | ts-node@^10.2.1: 1573 | version "10.9.1" 1574 | resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-10.9.1.tgz#e73de9102958af9e1f0b168a6ff320e25adcff4b" 1575 | integrity sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw== 1576 | dependencies: 1577 | "@cspotcode/source-map-support" "^0.8.0" 1578 | "@tsconfig/node10" "^1.0.7" 1579 | "@tsconfig/node12" "^1.0.7" 1580 | "@tsconfig/node14" "^1.0.0" 1581 | "@tsconfig/node16" "^1.0.2" 1582 | acorn "^8.4.1" 1583 | acorn-walk "^8.1.1" 1584 | arg "^4.1.0" 1585 | create-require "^1.1.0" 1586 | diff "^4.0.1" 1587 | make-error "^1.1.1" 1588 | v8-compile-cache-lib "^3.0.1" 1589 | yn "3.1.1" 1590 | 1591 | tsscmp@^1.0.6: 1592 | version "1.0.6" 1593 | resolved "https://registry.yarnpkg.com/tsscmp/-/tsscmp-1.0.6.tgz#85b99583ac3589ec4bfef825b5000aa911d605eb" 1594 | integrity sha512-LxhtAkPDTkVCMQjt2h6eBVY28KCjikZqZfMcC15YBeNjkgUpdCfBu5HoiOTDu86v6smE8yOjyEktJ8hlbANHQA== 1595 | 1596 | type-is@~1.6.18: 1597 | version "1.6.18" 1598 | resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131" 1599 | integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g== 1600 | dependencies: 1601 | media-typer "0.3.0" 1602 | mime-types "~2.1.24" 1603 | 1604 | typed-array-length@^1.0.4: 1605 | version "1.0.4" 1606 | resolved "https://registry.yarnpkg.com/typed-array-length/-/typed-array-length-1.0.4.tgz#89d83785e5c4098bec72e08b319651f0eac9c1bb" 1607 | integrity sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng== 1608 | dependencies: 1609 | call-bind "^1.0.2" 1610 | for-each "^0.3.3" 1611 | is-typed-array "^1.1.9" 1612 | 1613 | typescript@^4.4.3: 1614 | version "4.9.5" 1615 | resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.9.5.tgz#095979f9bcc0d09da324d58d03ce8f8374cbe65a" 1616 | integrity sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g== 1617 | 1618 | unbox-primitive@^1.0.2: 1619 | version "1.0.2" 1620 | resolved "https://registry.yarnpkg.com/unbox-primitive/-/unbox-primitive-1.0.2.tgz#29032021057d5e6cdbd08c5129c226dff8ed6f9e" 1621 | integrity sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw== 1622 | dependencies: 1623 | call-bind "^1.0.2" 1624 | has-bigints "^1.0.2" 1625 | has-symbols "^1.0.3" 1626 | which-boxed-primitive "^1.0.2" 1627 | 1628 | undefsafe@^2.0.5: 1629 | version "2.0.5" 1630 | resolved "https://registry.yarnpkg.com/undefsafe/-/undefsafe-2.0.5.tgz#38733b9327bdcd226db889fb723a6efd162e6e2c" 1631 | integrity sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA== 1632 | 1633 | unpipe@1.0.0, unpipe@~1.0.0: 1634 | version "1.0.0" 1635 | resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" 1636 | integrity sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ== 1637 | 1638 | utils-merge@1.0.1: 1639 | version "1.0.1" 1640 | resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" 1641 | integrity sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA== 1642 | 1643 | uuid@^8.3.2: 1644 | version "8.3.2" 1645 | resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" 1646 | integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== 1647 | 1648 | v8-compile-cache-lib@^3.0.1: 1649 | version "3.0.1" 1650 | resolved "https://registry.yarnpkg.com/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz#6336e8d71965cb3d35a1bbb7868445a7c05264bf" 1651 | integrity sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg== 1652 | 1653 | vary@~1.1.2: 1654 | version "1.1.2" 1655 | resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" 1656 | integrity sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg== 1657 | 1658 | web-streams-polyfill@^3.0.3: 1659 | version "3.2.1" 1660 | resolved "https://registry.yarnpkg.com/web-streams-polyfill/-/web-streams-polyfill-3.2.1.tgz#71c2718c52b45fd49dbeee88634b3a60ceab42a6" 1661 | integrity sha512-e0MO3wdXWKrLbL0DgGnUV7WHVuw9OUvL4hjgnPkIeEvESk74gAITi5G606JtZPp39cd8HA9VQzCIvA49LpPN5Q== 1662 | 1663 | webidl-conversions@^3.0.0: 1664 | version "3.0.1" 1665 | resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" 1666 | integrity sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ== 1667 | 1668 | whatwg-url@^5.0.0: 1669 | version "5.0.0" 1670 | resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d" 1671 | integrity sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw== 1672 | dependencies: 1673 | tr46 "~0.0.3" 1674 | webidl-conversions "^3.0.0" 1675 | 1676 | which-boxed-primitive@^1.0.2: 1677 | version "1.0.2" 1678 | resolved "https://registry.yarnpkg.com/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz#13757bc89b209b049fe5d86430e21cf40a89a8e6" 1679 | integrity sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg== 1680 | dependencies: 1681 | is-bigint "^1.0.1" 1682 | is-boolean-object "^1.1.0" 1683 | is-number-object "^1.0.4" 1684 | is-string "^1.0.5" 1685 | is-symbol "^1.0.3" 1686 | 1687 | which-typed-array@^1.1.9: 1688 | version "1.1.9" 1689 | resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.9.tgz#307cf898025848cf995e795e8423c7f337efbde6" 1690 | integrity sha512-w9c4xkx6mPidwp7180ckYWfMmvxpjlZuIudNtDf4N/tTAUB8VJbX25qZoAsrtGuYNnGw3pa0AXgbGKRB8/EceA== 1691 | dependencies: 1692 | available-typed-arrays "^1.0.5" 1693 | call-bind "^1.0.2" 1694 | for-each "^0.3.3" 1695 | gopd "^1.0.1" 1696 | has-tostringtag "^1.0.0" 1697 | is-typed-array "^1.1.10" 1698 | 1699 | ws@^7.5.3: 1700 | version "7.5.9" 1701 | resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.9.tgz#54fa7db29f4c7cec68b1ddd3a89de099942bb591" 1702 | integrity sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q== 1703 | 1704 | yallist@^4.0.0: 1705 | version "4.0.0" 1706 | resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" 1707 | integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== 1708 | 1709 | yn@3.1.1: 1710 | version "3.1.1" 1711 | resolved "https://registry.yarnpkg.com/yn/-/yn-3.1.1.tgz#1e87401a09d767c1d5eab26a6e4c185182d2eb50" 1712 | integrity sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q== 1713 | --------------------------------------------------------------------------------