├── .env.example
├── .gitignore
├── img
├── icon.png
└── twitter.svg
├── tsconfig.json
├── Dockerfile
├── package.json
├── readme.md
├── views
├── 404.ejs
└── index.ejs
├── style.sass
├── .github
└── workflows
│ └── deploy.yml
├── index.ts
├── LICENSE
└── pnpm-lock.yaml
/.env.example:
--------------------------------------------------------------------------------
1 | TOKEN=
2 | PORT=3000
3 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | node_modules
2 | out
3 | .env
4 | debug.log
5 | *.lock
6 |
--------------------------------------------------------------------------------
/img/icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/advaith1/stickers/HEAD/img/icon.png
--------------------------------------------------------------------------------
/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "allowSyntheticDefaultImports": true,
4 | "moduleResolution": "node",
5 | "outDir": "out",
6 | "target": "ES2020"
7 | }
8 | }
9 |
--------------------------------------------------------------------------------
/Dockerfile:
--------------------------------------------------------------------------------
1 | FROM node:18-alpine
2 | ENV PNPM_HOME="/pnpm"
3 | ENV PATH="$PNPM_HOME:$PATH"
4 | WORKDIR /app
5 | COPY . .
6 | RUN apk update && apk add build-base curl
7 | RUN corepack enable
8 | RUN pnpm i
9 | RUN pnpm i -g sass typescript typescript-transpile-only
10 | RUN tsc-transpile-only
11 | RUN pnpm sass
12 | CMD ["pnpm", "start"]
13 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "dependencies": {
3 | "bulma": "0.9.2",
4 | "dotenv": "^8.6.0",
5 | "ejs": "^3.1.10",
6 | "express": "^4.21.2",
7 | "node-fetch": "^2.7.0",
8 | "sass": "1.32.13"
9 | },
10 | "devDependencies": {
11 | "@types/express": "^4.17.21",
12 | "@types/node-fetch": "^2.6.12",
13 | "typescript": "^5.7.3"
14 | },
15 | "scripts": {
16 | "tsc": "tsc",
17 | "start": "node -r dotenv/config out",
18 | "sass": "sass --no-source-map style.sass out/style.css"
19 | },
20 | "type": "module"
21 | }
22 |
--------------------------------------------------------------------------------
/readme.md:
--------------------------------------------------------------------------------
1 | # [Discord Sticker List](https://stickers.advaith.io)
2 |
3 | Shows a page with all currently available [Discord stickers](https://dis.gd/stickerswhen), displayed in columns by sticker pack, showing the sticker's tags on hover.
4 |
5 | To avoid hitting Discord ratelimits, data is cached for 30 seconds.
6 |
7 | You can view the site at [stickers.advaith.io](https://stickers.advaith.io).
8 |
9 | ---
10 |
11 | ### Setup
12 |
13 | Requires [Node.js](https://nodejs.org) 14+, [TypeScript](https://typescriptlang.org), [pnpm](https://pnpm.js.org), and [Sass](https://sass-lang.com). You must also have a [Discord bot application](https://discord.com/developers).
14 |
15 | 1. Rename `.env.example` to `.env` and fill it out
16 | 2. Install dependencies with `pnpm i`
17 | 3. Compile the TypeScript code with `tsc`
18 | 4. Compile the Sass code with `pnpm sass`
19 | 5. Run with `pnpm start`
20 |
--------------------------------------------------------------------------------
/views/404.ejs:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | 404 | Discord Sticker List
7 |
8 |
9 |
16 |
17 |
18 |
19 |
20 |
21 |
22 | 404: Page Not Found
23 |
24 |
25 | go home
26 |
27 |
28 |
29 |
30 |
31 |
32 |
--------------------------------------------------------------------------------
/img/twitter.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/style.sass:
--------------------------------------------------------------------------------
1 | .spacer
2 | width: 5px
3 | display: inline-block
4 |
5 | #img[src=""]
6 | display: none
7 |
8 | #lottie
9 | max-width: 160px
10 | max-height: 160px
11 |
12 | .emoji
13 | height: 1em
14 | width: 1em
15 | margin: 0 .05em 0 .1em
16 | vertical-align: -0.1em
17 |
18 | #twitter
19 | width: 1em
20 |
21 | .column
22 | min-width: 250px
23 |
24 | .section
25 | overflow: auto
26 |
27 | @media screen and (min-width: 769px)
28 | #info
29 | height: 5.5em
30 |
31 | #img-col
32 | margin: auto 0 10px
33 |
34 | @import "node_modules/bulma/sass/utilities/_all"
35 |
36 | $scheme-main: #141414
37 | $text: $white-ter
38 | $text-strong: $white-ter
39 | $link: $cyan
40 | $link-hover: $blue
41 | $footer-background-color: transparent
42 |
43 | @import "node_modules/bulma/sass/base/_all"
44 | @import "node_modules/bulma/sass/elements/_all"
45 | @import "node_modules/bulma/sass/grid/_all"
46 | @import "node_modules/bulma/sass/helpers/_all"
47 | @import "node_modules/bulma/sass/layout/_all"
48 |
--------------------------------------------------------------------------------
/.github/workflows/deploy.yml:
--------------------------------------------------------------------------------
1 | name: Deploy
2 | on:
3 | push:
4 | branches:
5 | - main
6 | jobs:
7 | build:
8 | runs-on: ubuntu-latest
9 | steps:
10 | - uses: actions/checkout@v2
11 | - name: Login
12 | run: echo "${{ secrets.DOCKER_PASSWORD }}" | docker login ${{ secrets.DOCKER_HOST }} -u admin --password-stdin
13 | - name: Build
14 | run: docker build -t ${{ secrets.DOCKER_HOST }}/stickers:${{github.sha}} .
15 | - name: Push
16 | run: docker push ${{ secrets.DOCKER_HOST }}/stickers:${{github.sha}}
17 | deploy:
18 | needs: build
19 | runs-on: ubuntu-latest
20 | steps:
21 | - name: Login
22 | run: |
23 | mkdir ~/.kube
24 | echo "${{ secrets.KUBE_CONFIG }}" > ~/.kube/config
25 | - name: Set image
26 | run: kubectl set image deployment/stickers stickers=${{ secrets.DOCKER_HOST }}/stickers:${{github.sha}}
27 | - name: Rollout status
28 | run: kubectl rollout status deployment/stickers
29 |
--------------------------------------------------------------------------------
/index.ts:
--------------------------------------------------------------------------------
1 | import express from 'express'
2 | import fetch from 'node-fetch'
3 | import path from 'path'
4 |
5 | const app = express()
6 | app.set('view engine', 'ejs')
7 |
8 | const token = process.env.TOKEN
9 |
10 | let cache: {
11 | lastUpdated?: number
12 | data?: object
13 | } = {}
14 |
15 | app.get('/', async (_, res) => {
16 | if(!cache.data || Date.now() - cache.lastUpdated > 30000) {
17 | const r = await fetch('https://discord.com/api/v10/sticker-packs', {headers: {authorization: `Bot ${token}`}})
18 | cache.data = await r.json()
19 | cache.lastUpdated = Date.now()
20 | }
21 | res.render('index', { data: cache.data })
22 | })
23 |
24 | app.get('/lottie/:id', async (req, res) => {
25 | const r = await fetch(`https://discord.com/stickers/${req.params.id}.json`)
26 | r.body.pipe(res)
27 | })
28 |
29 | app.get('/style.css', (_, res) => res.sendFile(path.resolve('out/style.css')))
30 |
31 | app.use('/img', express.static(path.resolve('img')))
32 |
33 | app.use((_, res) => res.status(404).render('404'))
34 |
35 | app.listen(process.env.PORT, () => console.log('✔ started!'))
36 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2020 Advaith
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/views/index.ejs:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | Discord Sticker List
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 | Discord Sticker List
30 |
31 |
32 | All the currently available Discord standard stickers
33 |
34 |
35 | Hover over a sticker to show it
36 |
37 |
38 | Name:
39 | Description:
40 | Tags:
41 |
42 |
43 |
44 |
![Sticker Image]()
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 | <% data.sticker_packs?.map(pack => { %>
55 |
56 |
57 |
58 |
59 |
60 |
61 |
<%= pack.name %>
62 | <% pack.stickers.sort((a, b) => a.name.localeCompare(b.name)).map(sticker => { %>
63 |
<%= sticker.name %>
64 | <% }) %>
65 |
66 | <% }) %>
67 |
68 |
69 |
70 |
73 |
103 |
104 |
105 |
--------------------------------------------------------------------------------
/pnpm-lock.yaml:
--------------------------------------------------------------------------------
1 | lockfileVersion: '9.0'
2 |
3 | settings:
4 | autoInstallPeers: true
5 | excludeLinksFromLockfile: false
6 |
7 | importers:
8 |
9 | .:
10 | dependencies:
11 | bulma:
12 | specifier: 0.9.2
13 | version: 0.9.2
14 | dotenv:
15 | specifier: ^8.6.0
16 | version: 8.6.0
17 | ejs:
18 | specifier: ^3.1.10
19 | version: 3.1.10
20 | express:
21 | specifier: ^4.21.2
22 | version: 4.21.2
23 | node-fetch:
24 | specifier: ^2.7.0
25 | version: 2.7.0
26 | sass:
27 | specifier: 1.32.13
28 | version: 1.32.13
29 | devDependencies:
30 | '@types/express':
31 | specifier: ^4.17.21
32 | version: 4.17.21
33 | '@types/node-fetch':
34 | specifier: ^2.6.12
35 | version: 2.6.12
36 | typescript:
37 | specifier: ^5.7.3
38 | version: 5.7.3
39 |
40 | packages:
41 |
42 | '@types/body-parser@1.19.0':
43 | resolution: {integrity: sha512-W98JrE0j2K78swW4ukqMleo8R7h/pFETjM2DQ90MF6XK2i4LO4W3gQ71Lt4w3bfm2EvVSyWHplECvB5sK22yFQ==}
44 |
45 | '@types/connect@3.4.33':
46 | resolution: {integrity: sha512-2+FrkXY4zllzTNfJth7jOqEHC+enpLeGslEhpnTAkg21GkRrWV4SsAtqchtT4YS9/nODBU2/ZfsBY2X4J/dX7A==}
47 |
48 | '@types/express-serve-static-core@4.19.6':
49 | resolution: {integrity: sha512-N4LZ2xG7DatVqhCZzOGb1Yi5lMbXSZcmdLDe9EzSndPV2HpWYWzRbaerl2n27irrm94EPpprqa8KpskPT085+A==}
50 |
51 | '@types/express@4.17.21':
52 | resolution: {integrity: sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ==}
53 |
54 | '@types/mime@1.3.5':
55 | resolution: {integrity: sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==}
56 |
57 | '@types/mime@2.0.3':
58 | resolution: {integrity: sha512-Jus9s4CDbqwocc5pOAnh8ShfrnMcPHuJYzVcSUU7lrh8Ni5HuIqX3oilL86p3dlTrk0LzHRCgA/GQ7uNCw6l2Q==}
59 |
60 | '@types/node-fetch@2.6.12':
61 | resolution: {integrity: sha512-8nneRWKCg3rMtF69nLQJnOYUcbafYeFSjqkw3jCRLsqkWFlHaoQrr5mXmofFGOx3DKn7UfmBMyov8ySvLRVldA==}
62 |
63 | '@types/node@22.10.10':
64 | resolution: {integrity: sha512-X47y/mPNzxviAGY5TcYPtYL8JsY3kAq2n8fMmKoRCxq/c4v4pyGNCzM2R6+M5/umG4ZfHuT+sgqDYqWc9rJ6ww==}
65 |
66 | '@types/qs@6.9.5':
67 | resolution: {integrity: sha512-/JHkVHtx/REVG0VVToGRGH2+23hsYLHdyG+GrvoUGlGAd0ErauXDyvHtRI/7H7mzLm+tBCKA7pfcpkQ1lf58iQ==}
68 |
69 | '@types/range-parser@1.2.7':
70 | resolution: {integrity: sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==}
71 |
72 | '@types/send@0.17.4':
73 | resolution: {integrity: sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==}
74 |
75 | '@types/serve-static@1.13.7':
76 | resolution: {integrity: sha512-3diZWucbR+xTmbDlU+FRRxBf+31OhFew7cJXML/zh9NmvSPTNoFecAwHB66BUqFgENJtqMiyl7JAwUE/siqdLw==}
77 |
78 | accepts@1.3.8:
79 | resolution: {integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==}
80 | engines: {node: '>= 0.6'}
81 |
82 | ansi-styles@4.3.0:
83 | resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==}
84 | engines: {node: '>=8'}
85 |
86 | anymatch@3.1.3:
87 | resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==}
88 | engines: {node: '>= 8'}
89 |
90 | array-flatten@1.1.1:
91 | resolution: {integrity: sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=}
92 |
93 | async@3.2.6:
94 | resolution: {integrity: sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==}
95 |
96 | asynckit@0.4.0:
97 | resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==}
98 |
99 | balanced-match@1.0.2:
100 | resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==}
101 |
102 | binary-extensions@2.3.0:
103 | resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==}
104 | engines: {node: '>=8'}
105 |
106 | body-parser@1.20.3:
107 | resolution: {integrity: sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==}
108 | engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16}
109 |
110 | brace-expansion@1.1.11:
111 | resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==}
112 |
113 | brace-expansion@2.0.1:
114 | resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==}
115 |
116 | braces@3.0.3:
117 | resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==}
118 | engines: {node: '>=8'}
119 |
120 | bulma@0.9.2:
121 | resolution: {integrity: sha512-e14EF+3VSZ488yL/lJH0tR8mFWiEQVCMi/BQUMi2TGMBOk+zrDg4wryuwm/+dRSHJw0gMawp2tsW7X1JYUCE3A==}
122 |
123 | bytes@3.1.2:
124 | resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==}
125 | engines: {node: '>= 0.8'}
126 |
127 | call-bind-apply-helpers@1.0.1:
128 | resolution: {integrity: sha512-BhYE+WDaywFg2TBWYNXAE+8B1ATnThNBqXHP5nQu0jWJdVvY2hvkpyB3qOmtmDePiS5/BDQ8wASEWGMWRG148g==}
129 | engines: {node: '>= 0.4'}
130 |
131 | call-bound@1.0.3:
132 | resolution: {integrity: sha512-YTd+6wGlNlPxSuri7Y6X8tY2dmm12UMH66RpKMhiX6rsk5wXXnYgbUcOt8kiS31/AjfoTOvCsE+w8nZQLQnzHA==}
133 | engines: {node: '>= 0.4'}
134 |
135 | chalk@4.1.2:
136 | resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==}
137 | engines: {node: '>=10'}
138 |
139 | chokidar@3.6.0:
140 | resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==}
141 | engines: {node: '>= 8.10.0'}
142 |
143 | color-convert@2.0.1:
144 | resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==}
145 | engines: {node: '>=7.0.0'}
146 |
147 | color-name@1.1.4:
148 | resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==}
149 |
150 | combined-stream@1.0.8:
151 | resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==}
152 | engines: {node: '>= 0.8'}
153 |
154 | concat-map@0.0.1:
155 | resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==}
156 |
157 | content-disposition@0.5.4:
158 | resolution: {integrity: sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==}
159 | engines: {node: '>= 0.6'}
160 |
161 | content-type@1.0.4:
162 | resolution: {integrity: sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==}
163 | engines: {node: '>= 0.6'}
164 |
165 | content-type@1.0.5:
166 | resolution: {integrity: sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==}
167 | engines: {node: '>= 0.6'}
168 |
169 | cookie-signature@1.0.6:
170 | resolution: {integrity: sha1-4wOogrNCzD7oylE6eZmXNNqzriw=}
171 |
172 | cookie@0.7.1:
173 | resolution: {integrity: sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w==}
174 | engines: {node: '>= 0.6'}
175 |
176 | debug@2.6.9:
177 | resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==}
178 | peerDependencies:
179 | supports-color: '*'
180 | peerDependenciesMeta:
181 | supports-color:
182 | optional: true
183 |
184 | delayed-stream@1.0.0:
185 | resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==}
186 | engines: {node: '>=0.4.0'}
187 |
188 | depd@2.0.0:
189 | resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==}
190 | engines: {node: '>= 0.8'}
191 |
192 | destroy@1.2.0:
193 | resolution: {integrity: sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==}
194 | engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16}
195 |
196 | dotenv@8.6.0:
197 | resolution: {integrity: sha512-IrPdXQsk2BbzvCBGBOTmmSH5SodmqZNt4ERAZDmW4CT+tL8VtvinqywuANaFu4bOMWki16nqf0e4oC0QIaDr/g==}
198 | engines: {node: '>=10'}
199 |
200 | dunder-proto@1.0.1:
201 | resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==}
202 | engines: {node: '>= 0.4'}
203 |
204 | ee-first@1.1.1:
205 | resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==}
206 |
207 | ejs@3.1.10:
208 | resolution: {integrity: sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA==}
209 | engines: {node: '>=0.10.0'}
210 | hasBin: true
211 |
212 | encodeurl@1.0.2:
213 | resolution: {integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==}
214 | engines: {node: '>= 0.8'}
215 |
216 | encodeurl@2.0.0:
217 | resolution: {integrity: sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==}
218 | engines: {node: '>= 0.8'}
219 |
220 | es-define-property@1.0.1:
221 | resolution: {integrity: sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==}
222 | engines: {node: '>= 0.4'}
223 |
224 | es-errors@1.3.0:
225 | resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==}
226 | engines: {node: '>= 0.4'}
227 |
228 | es-object-atoms@1.1.1:
229 | resolution: {integrity: sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==}
230 | engines: {node: '>= 0.4'}
231 |
232 | escape-html@1.0.3:
233 | resolution: {integrity: sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=}
234 |
235 | etag@1.8.1:
236 | resolution: {integrity: sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=}
237 | engines: {node: '>= 0.6'}
238 |
239 | express@4.21.2:
240 | resolution: {integrity: sha512-28HqgMZAmih1Czt9ny7qr6ek2qddF4FclbMzwhCREB6OFfH+rXAnuNCwo1/wFvrtbgsQDb4kSbX9de9lFbrXnA==}
241 | engines: {node: '>= 0.10.0'}
242 |
243 | filelist@1.0.4:
244 | resolution: {integrity: sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==}
245 |
246 | fill-range@7.1.1:
247 | resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==}
248 | engines: {node: '>=8'}
249 |
250 | finalhandler@1.3.1:
251 | resolution: {integrity: sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==}
252 | engines: {node: '>= 0.8'}
253 |
254 | form-data@4.0.1:
255 | resolution: {integrity: sha512-tzN8e4TX8+kkxGPK8D5u0FNmjPUjw3lwC9lSLxxoB/+GtsJG91CO8bSWy73APlgAZzZbXEYZJuxjkHH2w+Ezhw==}
256 | engines: {node: '>= 6'}
257 |
258 | forwarded@0.2.0:
259 | resolution: {integrity: sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==}
260 | engines: {node: '>= 0.6'}
261 |
262 | fresh@0.5.2:
263 | resolution: {integrity: sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=}
264 | engines: {node: '>= 0.6'}
265 |
266 | fsevents@2.3.3:
267 | resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==}
268 | engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0}
269 | os: [darwin]
270 |
271 | function-bind@1.1.2:
272 | resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==}
273 |
274 | get-intrinsic@1.2.7:
275 | resolution: {integrity: sha512-VW6Pxhsrk0KAOqs3WEd0klDiF/+V7gQOpAvY1jVU/LHmaD/kQO4523aiJuikX/QAKYiW6x8Jh+RJej1almdtCA==}
276 | engines: {node: '>= 0.4'}
277 |
278 | get-proto@1.0.1:
279 | resolution: {integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==}
280 | engines: {node: '>= 0.4'}
281 |
282 | glob-parent@5.1.2:
283 | resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==}
284 | engines: {node: '>= 6'}
285 |
286 | gopd@1.2.0:
287 | resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==}
288 | engines: {node: '>= 0.4'}
289 |
290 | has-flag@4.0.0:
291 | resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==}
292 | engines: {node: '>=8'}
293 |
294 | has-symbols@1.1.0:
295 | resolution: {integrity: sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==}
296 | engines: {node: '>= 0.4'}
297 |
298 | hasown@2.0.2:
299 | resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==}
300 | engines: {node: '>= 0.4'}
301 |
302 | http-errors@2.0.0:
303 | resolution: {integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==}
304 | engines: {node: '>= 0.8'}
305 |
306 | iconv-lite@0.4.24:
307 | resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==}
308 | engines: {node: '>=0.10.0'}
309 |
310 | inherits@2.0.4:
311 | resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==}
312 |
313 | ipaddr.js@1.9.1:
314 | resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==}
315 | engines: {node: '>= 0.10'}
316 |
317 | is-binary-path@2.1.0:
318 | resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==}
319 | engines: {node: '>=8'}
320 |
321 | is-extglob@2.1.1:
322 | resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==}
323 | engines: {node: '>=0.10.0'}
324 |
325 | is-glob@4.0.3:
326 | resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==}
327 | engines: {node: '>=0.10.0'}
328 |
329 | is-number@7.0.0:
330 | resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==}
331 | engines: {node: '>=0.12.0'}
332 |
333 | jake@10.9.2:
334 | resolution: {integrity: sha512-2P4SQ0HrLQ+fw6llpLnOaGAvN2Zu6778SJMrCUwns4fOoG9ayrTiZk3VV8sCPkVZF8ab0zksVpS8FDY5pRCNBA==}
335 | engines: {node: '>=10'}
336 | hasBin: true
337 |
338 | math-intrinsics@1.1.0:
339 | resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==}
340 | engines: {node: '>= 0.4'}
341 |
342 | media-typer@0.3.0:
343 | resolution: {integrity: sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=}
344 | engines: {node: '>= 0.6'}
345 |
346 | merge-descriptors@1.0.3:
347 | resolution: {integrity: sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==}
348 |
349 | methods@1.1.2:
350 | resolution: {integrity: sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=}
351 | engines: {node: '>= 0.6'}
352 |
353 | mime-db@1.44.0:
354 | resolution: {integrity: sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg==}
355 | engines: {node: '>= 0.6'}
356 |
357 | mime-db@1.52.0:
358 | resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==}
359 | engines: {node: '>= 0.6'}
360 |
361 | mime-types@2.1.27:
362 | resolution: {integrity: sha512-JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w==}
363 | engines: {node: '>= 0.6'}
364 |
365 | mime-types@2.1.35:
366 | resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==}
367 | engines: {node: '>= 0.6'}
368 |
369 | mime@1.6.0:
370 | resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==}
371 | engines: {node: '>=4'}
372 | hasBin: true
373 |
374 | minimatch@3.1.2:
375 | resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==}
376 |
377 | minimatch@5.1.6:
378 | resolution: {integrity: sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==}
379 | engines: {node: '>=10'}
380 |
381 | ms@2.0.0:
382 | resolution: {integrity: sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=}
383 |
384 | ms@2.1.3:
385 | resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==}
386 |
387 | negotiator@0.6.3:
388 | resolution: {integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==}
389 | engines: {node: '>= 0.6'}
390 |
391 | node-fetch@2.7.0:
392 | resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==}
393 | engines: {node: 4.x || >=6.0.0}
394 | peerDependencies:
395 | encoding: ^0.1.0
396 | peerDependenciesMeta:
397 | encoding:
398 | optional: true
399 |
400 | normalize-path@3.0.0:
401 | resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==}
402 | engines: {node: '>=0.10.0'}
403 |
404 | object-inspect@1.13.3:
405 | resolution: {integrity: sha512-kDCGIbxkDSXE3euJZZXzc6to7fCrKHNI/hSRQnRuQ+BWjFNzZwiFF8fj/6o2t2G9/jTj8PSIYTfCLelLZEeRpA==}
406 | engines: {node: '>= 0.4'}
407 |
408 | on-finished@2.4.1:
409 | resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==}
410 | engines: {node: '>= 0.8'}
411 |
412 | parseurl@1.3.3:
413 | resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==}
414 | engines: {node: '>= 0.8'}
415 |
416 | path-to-regexp@0.1.12:
417 | resolution: {integrity: sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ==}
418 |
419 | picomatch@2.3.1:
420 | resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==}
421 | engines: {node: '>=8.6'}
422 |
423 | proxy-addr@2.0.7:
424 | resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==}
425 | engines: {node: '>= 0.10'}
426 |
427 | qs@6.13.0:
428 | resolution: {integrity: sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==}
429 | engines: {node: '>=0.6'}
430 |
431 | range-parser@1.2.1:
432 | resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==}
433 | engines: {node: '>= 0.6'}
434 |
435 | raw-body@2.5.2:
436 | resolution: {integrity: sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==}
437 | engines: {node: '>= 0.8'}
438 |
439 | readdirp@3.6.0:
440 | resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==}
441 | engines: {node: '>=8.10.0'}
442 |
443 | safe-buffer@5.2.1:
444 | resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==}
445 |
446 | safer-buffer@2.1.2:
447 | resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==}
448 |
449 | sass@1.32.13:
450 | resolution: {integrity: sha512-dEgI9nShraqP7cXQH+lEXVf73WOPCse0QlFzSD8k+1TcOxCMwVXfQlr0jtoluZysQOyJGnfr21dLvYKDJq8HkA==}
451 | engines: {node: '>=8.9.0'}
452 | hasBin: true
453 |
454 | send@0.19.0:
455 | resolution: {integrity: sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==}
456 | engines: {node: '>= 0.8.0'}
457 |
458 | serve-static@1.16.2:
459 | resolution: {integrity: sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==}
460 | engines: {node: '>= 0.8.0'}
461 |
462 | setprototypeof@1.2.0:
463 | resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==}
464 |
465 | side-channel-list@1.0.0:
466 | resolution: {integrity: sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==}
467 | engines: {node: '>= 0.4'}
468 |
469 | side-channel-map@1.0.1:
470 | resolution: {integrity: sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==}
471 | engines: {node: '>= 0.4'}
472 |
473 | side-channel-weakmap@1.0.2:
474 | resolution: {integrity: sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==}
475 | engines: {node: '>= 0.4'}
476 |
477 | side-channel@1.1.0:
478 | resolution: {integrity: sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==}
479 | engines: {node: '>= 0.4'}
480 |
481 | statuses@2.0.1:
482 | resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==}
483 | engines: {node: '>= 0.8'}
484 |
485 | supports-color@7.2.0:
486 | resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==}
487 | engines: {node: '>=8'}
488 |
489 | to-regex-range@5.0.1:
490 | resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==}
491 | engines: {node: '>=8.0'}
492 |
493 | toidentifier@1.0.1:
494 | resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==}
495 | engines: {node: '>=0.6'}
496 |
497 | tr46@0.0.3:
498 | resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==}
499 |
500 | type-is@1.6.18:
501 | resolution: {integrity: sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==}
502 | engines: {node: '>= 0.6'}
503 |
504 | typescript@5.7.3:
505 | resolution: {integrity: sha512-84MVSjMEHP+FQRPy3pX9sTVV/INIex71s9TL2Gm5FG/WG1SqXeKyZ0k7/blY/4FdOzI12CBy1vGc4og/eus0fw==}
506 | engines: {node: '>=14.17'}
507 | hasBin: true
508 |
509 | undici-types@6.20.0:
510 | resolution: {integrity: sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==}
511 |
512 | unpipe@1.0.0:
513 | resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==}
514 | engines: {node: '>= 0.8'}
515 |
516 | utils-merge@1.0.1:
517 | resolution: {integrity: sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=}
518 | engines: {node: '>= 0.4.0'}
519 |
520 | vary@1.1.2:
521 | resolution: {integrity: sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=}
522 | engines: {node: '>= 0.8'}
523 |
524 | webidl-conversions@3.0.1:
525 | resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==}
526 |
527 | whatwg-url@5.0.0:
528 | resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==}
529 |
530 | snapshots:
531 |
532 | '@types/body-parser@1.19.0':
533 | dependencies:
534 | '@types/connect': 3.4.33
535 | '@types/node': 22.10.10
536 |
537 | '@types/connect@3.4.33':
538 | dependencies:
539 | '@types/node': 22.10.10
540 |
541 | '@types/express-serve-static-core@4.19.6':
542 | dependencies:
543 | '@types/node': 22.10.10
544 | '@types/qs': 6.9.5
545 | '@types/range-parser': 1.2.7
546 | '@types/send': 0.17.4
547 |
548 | '@types/express@4.17.21':
549 | dependencies:
550 | '@types/body-parser': 1.19.0
551 | '@types/express-serve-static-core': 4.19.6
552 | '@types/qs': 6.9.5
553 | '@types/serve-static': 1.13.7
554 |
555 | '@types/mime@1.3.5': {}
556 |
557 | '@types/mime@2.0.3': {}
558 |
559 | '@types/node-fetch@2.6.12':
560 | dependencies:
561 | '@types/node': 22.10.10
562 | form-data: 4.0.1
563 |
564 | '@types/node@22.10.10':
565 | dependencies:
566 | undici-types: 6.20.0
567 |
568 | '@types/qs@6.9.5': {}
569 |
570 | '@types/range-parser@1.2.7': {}
571 |
572 | '@types/send@0.17.4':
573 | dependencies:
574 | '@types/mime': 1.3.5
575 | '@types/node': 22.10.10
576 |
577 | '@types/serve-static@1.13.7':
578 | dependencies:
579 | '@types/mime': 2.0.3
580 | '@types/node': 22.10.10
581 |
582 | accepts@1.3.8:
583 | dependencies:
584 | mime-types: 2.1.35
585 | negotiator: 0.6.3
586 |
587 | ansi-styles@4.3.0:
588 | dependencies:
589 | color-convert: 2.0.1
590 |
591 | anymatch@3.1.3:
592 | dependencies:
593 | normalize-path: 3.0.0
594 | picomatch: 2.3.1
595 |
596 | array-flatten@1.1.1: {}
597 |
598 | async@3.2.6: {}
599 |
600 | asynckit@0.4.0: {}
601 |
602 | balanced-match@1.0.2: {}
603 |
604 | binary-extensions@2.3.0: {}
605 |
606 | body-parser@1.20.3:
607 | dependencies:
608 | bytes: 3.1.2
609 | content-type: 1.0.5
610 | debug: 2.6.9
611 | depd: 2.0.0
612 | destroy: 1.2.0
613 | http-errors: 2.0.0
614 | iconv-lite: 0.4.24
615 | on-finished: 2.4.1
616 | qs: 6.13.0
617 | raw-body: 2.5.2
618 | type-is: 1.6.18
619 | unpipe: 1.0.0
620 | transitivePeerDependencies:
621 | - supports-color
622 |
623 | brace-expansion@1.1.11:
624 | dependencies:
625 | balanced-match: 1.0.2
626 | concat-map: 0.0.1
627 |
628 | brace-expansion@2.0.1:
629 | dependencies:
630 | balanced-match: 1.0.2
631 |
632 | braces@3.0.3:
633 | dependencies:
634 | fill-range: 7.1.1
635 |
636 | bulma@0.9.2: {}
637 |
638 | bytes@3.1.2: {}
639 |
640 | call-bind-apply-helpers@1.0.1:
641 | dependencies:
642 | es-errors: 1.3.0
643 | function-bind: 1.1.2
644 |
645 | call-bound@1.0.3:
646 | dependencies:
647 | call-bind-apply-helpers: 1.0.1
648 | get-intrinsic: 1.2.7
649 |
650 | chalk@4.1.2:
651 | dependencies:
652 | ansi-styles: 4.3.0
653 | supports-color: 7.2.0
654 |
655 | chokidar@3.6.0:
656 | dependencies:
657 | anymatch: 3.1.3
658 | braces: 3.0.3
659 | glob-parent: 5.1.2
660 | is-binary-path: 2.1.0
661 | is-glob: 4.0.3
662 | normalize-path: 3.0.0
663 | readdirp: 3.6.0
664 | optionalDependencies:
665 | fsevents: 2.3.3
666 |
667 | color-convert@2.0.1:
668 | dependencies:
669 | color-name: 1.1.4
670 |
671 | color-name@1.1.4: {}
672 |
673 | combined-stream@1.0.8:
674 | dependencies:
675 | delayed-stream: 1.0.0
676 |
677 | concat-map@0.0.1: {}
678 |
679 | content-disposition@0.5.4:
680 | dependencies:
681 | safe-buffer: 5.2.1
682 |
683 | content-type@1.0.4: {}
684 |
685 | content-type@1.0.5: {}
686 |
687 | cookie-signature@1.0.6: {}
688 |
689 | cookie@0.7.1: {}
690 |
691 | debug@2.6.9:
692 | dependencies:
693 | ms: 2.0.0
694 |
695 | delayed-stream@1.0.0: {}
696 |
697 | depd@2.0.0: {}
698 |
699 | destroy@1.2.0: {}
700 |
701 | dotenv@8.6.0: {}
702 |
703 | dunder-proto@1.0.1:
704 | dependencies:
705 | call-bind-apply-helpers: 1.0.1
706 | es-errors: 1.3.0
707 | gopd: 1.2.0
708 |
709 | ee-first@1.1.1: {}
710 |
711 | ejs@3.1.10:
712 | dependencies:
713 | jake: 10.9.2
714 |
715 | encodeurl@1.0.2: {}
716 |
717 | encodeurl@2.0.0: {}
718 |
719 | es-define-property@1.0.1: {}
720 |
721 | es-errors@1.3.0: {}
722 |
723 | es-object-atoms@1.1.1:
724 | dependencies:
725 | es-errors: 1.3.0
726 |
727 | escape-html@1.0.3: {}
728 |
729 | etag@1.8.1: {}
730 |
731 | express@4.21.2:
732 | dependencies:
733 | accepts: 1.3.8
734 | array-flatten: 1.1.1
735 | body-parser: 1.20.3
736 | content-disposition: 0.5.4
737 | content-type: 1.0.4
738 | cookie: 0.7.1
739 | cookie-signature: 1.0.6
740 | debug: 2.6.9
741 | depd: 2.0.0
742 | encodeurl: 2.0.0
743 | escape-html: 1.0.3
744 | etag: 1.8.1
745 | finalhandler: 1.3.1
746 | fresh: 0.5.2
747 | http-errors: 2.0.0
748 | merge-descriptors: 1.0.3
749 | methods: 1.1.2
750 | on-finished: 2.4.1
751 | parseurl: 1.3.3
752 | path-to-regexp: 0.1.12
753 | proxy-addr: 2.0.7
754 | qs: 6.13.0
755 | range-parser: 1.2.1
756 | safe-buffer: 5.2.1
757 | send: 0.19.0
758 | serve-static: 1.16.2
759 | setprototypeof: 1.2.0
760 | statuses: 2.0.1
761 | type-is: 1.6.18
762 | utils-merge: 1.0.1
763 | vary: 1.1.2
764 | transitivePeerDependencies:
765 | - supports-color
766 |
767 | filelist@1.0.4:
768 | dependencies:
769 | minimatch: 5.1.6
770 |
771 | fill-range@7.1.1:
772 | dependencies:
773 | to-regex-range: 5.0.1
774 |
775 | finalhandler@1.3.1:
776 | dependencies:
777 | debug: 2.6.9
778 | encodeurl: 2.0.0
779 | escape-html: 1.0.3
780 | on-finished: 2.4.1
781 | parseurl: 1.3.3
782 | statuses: 2.0.1
783 | unpipe: 1.0.0
784 | transitivePeerDependencies:
785 | - supports-color
786 |
787 | form-data@4.0.1:
788 | dependencies:
789 | asynckit: 0.4.0
790 | combined-stream: 1.0.8
791 | mime-types: 2.1.35
792 |
793 | forwarded@0.2.0: {}
794 |
795 | fresh@0.5.2: {}
796 |
797 | fsevents@2.3.3:
798 | optional: true
799 |
800 | function-bind@1.1.2: {}
801 |
802 | get-intrinsic@1.2.7:
803 | dependencies:
804 | call-bind-apply-helpers: 1.0.1
805 | es-define-property: 1.0.1
806 | es-errors: 1.3.0
807 | es-object-atoms: 1.1.1
808 | function-bind: 1.1.2
809 | get-proto: 1.0.1
810 | gopd: 1.2.0
811 | has-symbols: 1.1.0
812 | hasown: 2.0.2
813 | math-intrinsics: 1.1.0
814 |
815 | get-proto@1.0.1:
816 | dependencies:
817 | dunder-proto: 1.0.1
818 | es-object-atoms: 1.1.1
819 |
820 | glob-parent@5.1.2:
821 | dependencies:
822 | is-glob: 4.0.3
823 |
824 | gopd@1.2.0: {}
825 |
826 | has-flag@4.0.0: {}
827 |
828 | has-symbols@1.1.0: {}
829 |
830 | hasown@2.0.2:
831 | dependencies:
832 | function-bind: 1.1.2
833 |
834 | http-errors@2.0.0:
835 | dependencies:
836 | depd: 2.0.0
837 | inherits: 2.0.4
838 | setprototypeof: 1.2.0
839 | statuses: 2.0.1
840 | toidentifier: 1.0.1
841 |
842 | iconv-lite@0.4.24:
843 | dependencies:
844 | safer-buffer: 2.1.2
845 |
846 | inherits@2.0.4: {}
847 |
848 | ipaddr.js@1.9.1: {}
849 |
850 | is-binary-path@2.1.0:
851 | dependencies:
852 | binary-extensions: 2.3.0
853 |
854 | is-extglob@2.1.1: {}
855 |
856 | is-glob@4.0.3:
857 | dependencies:
858 | is-extglob: 2.1.1
859 |
860 | is-number@7.0.0: {}
861 |
862 | jake@10.9.2:
863 | dependencies:
864 | async: 3.2.6
865 | chalk: 4.1.2
866 | filelist: 1.0.4
867 | minimatch: 3.1.2
868 |
869 | math-intrinsics@1.1.0: {}
870 |
871 | media-typer@0.3.0: {}
872 |
873 | merge-descriptors@1.0.3: {}
874 |
875 | methods@1.1.2: {}
876 |
877 | mime-db@1.44.0: {}
878 |
879 | mime-db@1.52.0: {}
880 |
881 | mime-types@2.1.27:
882 | dependencies:
883 | mime-db: 1.44.0
884 |
885 | mime-types@2.1.35:
886 | dependencies:
887 | mime-db: 1.52.0
888 |
889 | mime@1.6.0: {}
890 |
891 | minimatch@3.1.2:
892 | dependencies:
893 | brace-expansion: 1.1.11
894 |
895 | minimatch@5.1.6:
896 | dependencies:
897 | brace-expansion: 2.0.1
898 |
899 | ms@2.0.0: {}
900 |
901 | ms@2.1.3: {}
902 |
903 | negotiator@0.6.3: {}
904 |
905 | node-fetch@2.7.0:
906 | dependencies:
907 | whatwg-url: 5.0.0
908 |
909 | normalize-path@3.0.0: {}
910 |
911 | object-inspect@1.13.3: {}
912 |
913 | on-finished@2.4.1:
914 | dependencies:
915 | ee-first: 1.1.1
916 |
917 | parseurl@1.3.3: {}
918 |
919 | path-to-regexp@0.1.12: {}
920 |
921 | picomatch@2.3.1: {}
922 |
923 | proxy-addr@2.0.7:
924 | dependencies:
925 | forwarded: 0.2.0
926 | ipaddr.js: 1.9.1
927 |
928 | qs@6.13.0:
929 | dependencies:
930 | side-channel: 1.1.0
931 |
932 | range-parser@1.2.1: {}
933 |
934 | raw-body@2.5.2:
935 | dependencies:
936 | bytes: 3.1.2
937 | http-errors: 2.0.0
938 | iconv-lite: 0.4.24
939 | unpipe: 1.0.0
940 |
941 | readdirp@3.6.0:
942 | dependencies:
943 | picomatch: 2.3.1
944 |
945 | safe-buffer@5.2.1: {}
946 |
947 | safer-buffer@2.1.2: {}
948 |
949 | sass@1.32.13:
950 | dependencies:
951 | chokidar: 3.6.0
952 |
953 | send@0.19.0:
954 | dependencies:
955 | debug: 2.6.9
956 | depd: 2.0.0
957 | destroy: 1.2.0
958 | encodeurl: 1.0.2
959 | escape-html: 1.0.3
960 | etag: 1.8.1
961 | fresh: 0.5.2
962 | http-errors: 2.0.0
963 | mime: 1.6.0
964 | ms: 2.1.3
965 | on-finished: 2.4.1
966 | range-parser: 1.2.1
967 | statuses: 2.0.1
968 | transitivePeerDependencies:
969 | - supports-color
970 |
971 | serve-static@1.16.2:
972 | dependencies:
973 | encodeurl: 2.0.0
974 | escape-html: 1.0.3
975 | parseurl: 1.3.3
976 | send: 0.19.0
977 | transitivePeerDependencies:
978 | - supports-color
979 |
980 | setprototypeof@1.2.0: {}
981 |
982 | side-channel-list@1.0.0:
983 | dependencies:
984 | es-errors: 1.3.0
985 | object-inspect: 1.13.3
986 |
987 | side-channel-map@1.0.1:
988 | dependencies:
989 | call-bound: 1.0.3
990 | es-errors: 1.3.0
991 | get-intrinsic: 1.2.7
992 | object-inspect: 1.13.3
993 |
994 | side-channel-weakmap@1.0.2:
995 | dependencies:
996 | call-bound: 1.0.3
997 | es-errors: 1.3.0
998 | get-intrinsic: 1.2.7
999 | object-inspect: 1.13.3
1000 | side-channel-map: 1.0.1
1001 |
1002 | side-channel@1.1.0:
1003 | dependencies:
1004 | es-errors: 1.3.0
1005 | object-inspect: 1.13.3
1006 | side-channel-list: 1.0.0
1007 | side-channel-map: 1.0.1
1008 | side-channel-weakmap: 1.0.2
1009 |
1010 | statuses@2.0.1: {}
1011 |
1012 | supports-color@7.2.0:
1013 | dependencies:
1014 | has-flag: 4.0.0
1015 |
1016 | to-regex-range@5.0.1:
1017 | dependencies:
1018 | is-number: 7.0.0
1019 |
1020 | toidentifier@1.0.1: {}
1021 |
1022 | tr46@0.0.3: {}
1023 |
1024 | type-is@1.6.18:
1025 | dependencies:
1026 | media-typer: 0.3.0
1027 | mime-types: 2.1.27
1028 |
1029 | typescript@5.7.3: {}
1030 |
1031 | undici-types@6.20.0: {}
1032 |
1033 | unpipe@1.0.0: {}
1034 |
1035 | utils-merge@1.0.1: {}
1036 |
1037 | vary@1.1.2: {}
1038 |
1039 | webidl-conversions@3.0.1: {}
1040 |
1041 | whatwg-url@5.0.0:
1042 | dependencies:
1043 | tr46: 0.0.3
1044 | webidl-conversions: 3.0.1
1045 |
--------------------------------------------------------------------------------