├── .gitattributes
├── LICENSE
├── README-TR.md
├── README.md
├── assets
├── css
│ └── index.css
├── fonts
│ ├── whitney-300.woff
│ ├── whitney-400.woff
│ ├── whitney-500.woff
│ ├── whitney-600.woff
│ └── whitney-700.woff
├── js
│ ├── components.js
│ └── script.js
├── libs
│ └── color-picker
│ │ ├── LICENSE
│ │ ├── color-picker.min.css
│ │ └── color-picker.min.js
└── media
│ ├── banner.png
│ ├── discord-embed-builder-logo-v2.png
│ ├── gui.old.png
│ ├── gui.png
│ ├── image.png
│ ├── json.old.png
│ └── json.png
├── builder.config.js
├── package-lock.json
├── package.json
├── server.js
└── views
└── index.ejs
/.gitattributes:
--------------------------------------------------------------------------------
1 | # Auto detect text files and perform LF normalization
2 | * text=auto
3 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | Apache License
2 | Version 2.0, January 2004
3 | http://www.apache.org/licenses/
4 |
5 | TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
6 |
7 | 1. Definitions.
8 |
9 | "License" shall mean the terms and conditions for use, reproduction,
10 | and distribution as defined by Sections 1 through 9 of this document.
11 |
12 | "Licensor" shall mean the copyright owner or entity authorized by
13 | the copyright owner that is granting the License.
14 |
15 | "Legal Entity" shall mean the union of the acting entity and all
16 | other entities that control, are controlled by, or are under common
17 | control with that entity. For the purposes of this definition,
18 | "control" means (i) the power, direct or indirect, to cause the
19 | direction or management of such entity, whether by contract or
20 | otherwise, or (ii) ownership of fifty percent (50%) or more of the
21 | outstanding shares, or (iii) beneficial ownership of such entity.
22 |
23 | "You" (or "Your") shall mean an individual or Legal Entity
24 | exercising permissions granted by this License.
25 |
26 | "Source" form shall mean the preferred form for making modifications,
27 | including but not limited to software source code, documentation
28 | source, and configuration files.
29 |
30 | "Object" form shall mean any form resulting from mechanical
31 | transformation or translation of a Source form, including but
32 | not limited to compiled object code, generated documentation,
33 | and conversions to other media types.
34 |
35 | "Work" shall mean the work of authorship, whether in Source or
36 | Object form, made available under the License, as indicated by a
37 | copyright notice that is included in or attached to the work
38 | (an example is provided in the Appendix below).
39 |
40 | "Derivative Works" shall mean any work, whether in Source or Object
41 | form, that is based on (or derived from) the Work and for which the
42 | editorial revisions, annotations, elaborations, or other modifications
43 | represent, as a whole, an original work of authorship. For the purposes
44 | of this License, Derivative Works shall not include works that remain
45 | separable from, or merely link (or bind by name) to the interfaces of,
46 | the Work and Derivative Works thereof.
47 |
48 | "Contribution" shall mean any work of authorship, including
49 | the original version of the Work and any modifications or additions
50 | to that Work or Derivative Works thereof, that is intentionally
51 | submitted to Licensor for inclusion in the Work by the copyright owner
52 | or by an individual or Legal Entity authorized to submit on behalf of
53 | the copyright owner. For the purposes of this definition, "submitted"
54 | means any form of electronic, verbal, or written communication sent
55 | to the Licensor or its representatives, including but not limited to
56 | communication on electronic mailing lists, source code control systems,
57 | and issue tracking systems that are managed by, or on behalf of, the
58 | Licensor for the purpose of discussing and improving the Work, but
59 | excluding communication that is conspicuously marked or otherwise
60 | designated in writing by the copyright owner as "Not a Contribution."
61 |
62 | "Contributor" shall mean Licensor and any individual or Legal Entity
63 | on behalf of whom a Contribution has been received by Licensor and
64 | subsequently incorporated within the Work.
65 |
66 | 2. Grant of Copyright License. Subject to the terms and conditions of
67 | this License, each Contributor hereby grants to You a perpetual,
68 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable
69 | copyright license to reproduce, prepare Derivative Works of,
70 | publicly display, publicly perform, sublicense, and distribute the
71 | Work and such Derivative Works in Source or Object form.
72 |
73 | 3. Grant of Patent License. Subject to the terms and conditions of
74 | this License, each Contributor hereby grants to You a perpetual,
75 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable
76 | (except as stated in this section) patent license to make, have made,
77 | use, offer to sell, sell, import, and otherwise transfer the Work,
78 | where such license applies only to those patent claims licensable
79 | by such Contributor that are necessarily infringed by their
80 | Contribution(s) alone or by combination of their Contribution(s)
81 | with the Work to which such Contribution(s) was submitted. If You
82 | institute patent litigation against any entity (including a
83 | cross-claim or counterclaim in a lawsuit) alleging that the Work
84 | or a Contribution incorporated within the Work constitutes direct
85 | or contributory patent infringement, then any patent licenses
86 | granted to You under this License for that Work shall terminate
87 | as of the date such litigation is filed.
88 |
89 | 4. Redistribution. You may reproduce and distribute copies of the
90 | Work or Derivative Works thereof in any medium, with or without
91 | modifications, and in Source or Object form, provided that You
92 | meet the following conditions:
93 |
94 | (a) You must give any other recipients of the Work or
95 | Derivative Works a copy of this License; and
96 |
97 | (b) You must cause any modified files to carry prominent notices
98 | stating that You changed the files; and
99 |
100 | (c) You must retain, in the Source form of any Derivative Works
101 | that You distribute, all copyright, patent, trademark, and
102 | attribution notices from the Source form of the Work,
103 | excluding those notices that do not pertain to any part of
104 | the Derivative Works; and
105 |
106 | (d) If the Work includes a "NOTICE" text file as part of its
107 | distribution, then any Derivative Works that You distribute must
108 | include a readable copy of the attribution notices contained
109 | within such NOTICE file, excluding those notices that do not
110 | pertain to any part of the Derivative Works, in at least one
111 | of the following places: within a NOTICE text file distributed
112 | as part of the Derivative Works; within the Source form or
113 | documentation, if provided along with the Derivative Works; or,
114 | within a display generated by the Derivative Works, if and
115 | wherever such third-party notices normally appear. The contents
116 | of the NOTICE file are for informational purposes only and
117 | do not modify the License. You may add Your own attribution
118 | notices within Derivative Works that You distribute, alongside
119 | or as an addendum to the NOTICE text from the Work, provided
120 | that such additional attribution notices cannot be construed
121 | as modifying the License.
122 |
123 | You may add Your own copyright statement to Your modifications and
124 | may provide additional or different license terms and conditions
125 | for use, reproduction, or distribution of Your modifications, or
126 | for any such Derivative Works as a whole, provided Your use,
127 | reproduction, and distribution of the Work otherwise complies with
128 | the conditions stated in this License.
129 |
130 | 5. Submission of Contributions. Unless You explicitly state otherwise,
131 | any Contribution intentionally submitted for inclusion in the Work
132 | by You to the Licensor shall be under the terms and conditions of
133 | this License, without any additional terms or conditions.
134 | Notwithstanding the above, nothing herein shall supersede or modify
135 | the terms of any separate license agreement you may have executed
136 | with Licensor regarding such Contributions.
137 |
138 | 6. Trademarks. This License does not grant permission to use the trade
139 | names, trademarks, service marks, or product names of the Licensor,
140 | except as required for reasonable and customary use in describing the
141 | origin of the Work and reproducing the content of the NOTICE file.
142 |
143 | 7. Disclaimer of Warranty. Unless required by applicable law or
144 | agreed to in writing, Licensor provides the Work (and each
145 | Contributor provides its Contributions) on an "AS IS" BASIS,
146 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
147 | implied, including, without limitation, any warranties or conditions
148 | of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
149 | PARTICULAR PURPOSE. You are solely responsible for determining the
150 | appropriateness of using or redistributing the Work and assume any
151 | risks associated with Your exercise of permissions under this License.
152 |
153 | 8. Limitation of Liability. In no event and under no legal theory,
154 | whether in tort (including negligence), contract, or otherwise,
155 | unless required by applicable law (such as deliberate and grossly
156 | negligent acts) or agreed to in writing, shall any Contributor be
157 | liable to You for damages, including any direct, indirect, special,
158 | incidental, or consequential damages of any character arising as a
159 | result of this License or out of the use or inability to use the
160 | Work (including but not limited to damages for loss of goodwill,
161 | work stoppage, computer failure or malfunction, or any and all
162 | other commercial damages or losses), even if such Contributor
163 | has been advised of the possibility of such damages.
164 |
165 | 9. Accepting Warranty or Additional Liability. While redistributing
166 | the Work or Derivative Works thereof, You may choose to offer,
167 | and charge a fee for, acceptance of support, warranty, indemnity,
168 | or other liability obligations and/or rights consistent with this
169 | License. However, in accepting such obligations, You may act only
170 | on Your own behalf and on Your sole responsibility, not on behalf
171 | of any other Contributor, and only if You agree to indemnify,
172 | defend, and hold each Contributor harmless for any liability
173 | incurred by, or claims asserted against, such Contributor by reason
174 | of your accepting any such warranty or additional liability.
175 |
176 | END OF TERMS AND CONDITIONS
177 |
178 | APPENDIX: How to apply the Apache License to your work.
179 |
180 | To apply the Apache License to your work, attach the following
181 | boilerplate notice, with the fields enclosed by brackets "[]"
182 | replaced with your own identifying information. (Don't include
183 | the brackets!) The text should be enclosed in the appropriate
184 | comment syntax for the file format. We also recommend that a
185 | file or class name and description of purpose be included on the
186 | same "printed page" as the copyright notice for easier
187 | identification within third-party archives.
188 |
189 | Copyright [yyyy] [name of copyright owner]
190 |
191 | Licensed under the Apache License, Version 2.0 (the "License");
192 | you may not use this file except in compliance with the License.
193 | You may obtain a copy of the License at
194 |
195 | http://www.apache.org/licenses/LICENSE-2.0
196 |
197 | Unless required by applicable law or agreed to in writing, software
198 | distributed under the License is distributed on an "AS IS" BASIS,
199 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
200 | See the License for the specific language governing permissions and
201 | limitations under the License.
202 |
--------------------------------------------------------------------------------
/README-TR.md:
--------------------------------------------------------------------------------
1 | # Discord Embed Builder
2 |
3 |
4 |
Language
5 |
6 | Türkçe | [English >>](https://github.com/parsherr/discord-embed-builder)
7 |
8 |
9 |
10 |
11 |
12 |
Discord için gelişmiş embed mesaj oluşturucu
13 |
14 |
15 | ## 🚀 Özellikler
16 |
17 | - 🎨 Modern ve kullanıcı dostu arayüz
18 | - 📝 Sürükle & Bırak ile kolay düzenleme
19 | - 🌈 Özelleştirilebilir renk seçenekleri
20 | - 🔗 Webhook desteği
21 | - 📱 Mobil uyumlu tasarım
22 | - 🌙 Koyu tema desteği
23 | - ⚡ Hızlı ve anlık önizleme
24 | - 🔄 JSON import/export özelliği
25 |
26 | ## 🛠️ Teknolojiler
27 |
28 | - Node.js
29 | - Express.js
30 | - EJS Template Engine
31 | - Discord.js
32 | - TailwindCSS
33 | - FontAwesome
34 |
35 | ## 🌐 Demo
36 |
37 | [Live Demo](https://discord-embed-builder-parsherr.vercel.app/)
38 |
39 | ## 💻 Kurulum
40 |
41 | 1. Repoyu klonlayın:
42 | ```bash
43 | git clone https://github.com/parsherr/discord-embed-builder.git
44 | ```
45 |
46 | 2. Bağımlılıkları yükleyin:
47 | ```bash
48 | cd discord-embed-builder
49 | npm install
50 | ```
51 |
52 | 3. Geliştirme sunucusunu başlatın:
53 | ```bash
54 | npm run dev
55 | ```
56 |
57 | 4. Tarayıcınızda açın:
58 | ```
59 | http://localhost:3000
60 | ```
61 |
62 | ## 🔧 Yapılandırma
63 |
64 | 1. `.env` dosyası oluşturun:
65 | ```env
66 | PORT=3000
67 | ```
68 |
69 | 2. Webhook URL'nizi güvenli bir şekilde saklayın ve paylaşmayın
70 |
71 | ## 📝 Kullanım
72 |
73 | 1. Embed mesajınızı oluşturun
74 | 2. Webhook URL'nizi girin
75 | 3. "Send" butonuna tıklayın
76 | 4. Discord kanalınızda mesajınızı görün
77 |
78 | ## 🤝 Katkıda Bulunma
79 |
80 | 1. Fork'layın
81 | 2. Feature branch oluşturun (`git checkout -b feature/amazing-feature`)
82 | 3. Commit'leyin (`git commit -m 'feat: amazing feature added'`)
83 | 4. Push'layın (`git push origin feature/amazing-feature`)
84 | 5. Pull Request açın
85 |
86 | ## 📄 Lisans
87 |
88 | Bu proje Apache-2.0 lisansı altında lisanslanmıştır. Detaylar için [LICENSE](LICENSE) dosyasına bakın.
89 |
90 | ## 👤 Geliştirici
91 |
92 | **Parsherr**
93 |
94 | * GitHub: [@parsherr](https://github.com/parsherr)
95 |
96 | ## ⭐ Destek
97 |
98 | Beğendiyseniz ⭐️ vermeyi unutmayın!
99 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Discord Embed Builder
2 |
3 |
4 |
Language
5 |
6 | English | [Türkçe >>](./README-TR.md)
7 |
8 |
9 |
10 |
11 |
12 |
Advanced embed message builder for Discord
13 |
14 |
15 | ## 🚀 Features
16 |
17 | - 🎨 Modern and user-friendly interface
18 | - 📝 Easy editing with Drag & Drop
19 | - 🌈 Customizable color options
20 | - 🔗 Webhook support
21 | - 📱 Mobile responsive design
22 | - 🌙 Dark theme support
23 | - ⚡ Fast and instant preview
24 | - 🔄 JSON import/export functionality
25 |
26 | ## 🛠️ Technologies
27 |
28 | - Node.js
29 | - Express.js
30 | - EJS Template Engine
31 | - Discord.js
32 | - TailwindCSS
33 | - FontAwesome
34 |
35 | ## 🌐 Demo
36 |
37 | [Live Demo](http://us1.botcore.org:5016/)
38 |
39 | ## 💻 Installation
40 |
41 | 1. Clone the repository:
42 | ```bash
43 | git clone https://github.com/parsherr/discord-embed-builder.git
44 | ```
45 |
46 | 2. Install dependencies:
47 | ```bash
48 | cd discord-embed-builder
49 | npm install
50 | ```
51 |
52 | 3. Start the development server:
53 | ```bash
54 | npm run dev
55 | ```
56 |
57 | 4. Open in your browser:
58 | ```
59 | http://localhost:3000
60 | ```
61 |
62 | ## 🔧 Configuration
63 |
64 | 1. Create a `.env` file:
65 | ```env
66 | PORT=3000
67 | ```
68 |
69 | 2. Store your Webhook URL securely and do not share it
70 |
71 | ## 📝 Usage
72 |
73 | 1. Create your embed message
74 | 2. Enter your Webhook URL
75 | 3. Click the "Send" button
76 | 4. View your message in your Discord channel
77 |
78 | ## 🤝 Contributing
79 |
80 | 1. Fork it
81 | 2. Create your feature branch (`git checkout -b feature/amazing-feature`)
82 | 3. Commit your changes (`git commit -m 'feat: amazing feature added'`)
83 | 4. Push to the branch (`git push origin feature/amazing-feature`)
84 | 5. Open a Pull Request
85 |
86 | ## 📄 License
87 |
88 | This project is licensed under the Apache-2.0 License. See the [LICENSE](LICENSE) file for details.
89 |
90 | ## 👤 Developer
91 |
92 | **Parsherr**
93 |
94 | * GitHub: [@parsherr](https://github.com/parsherr)
95 |
96 | ## ⭐ Support
97 |
98 | Don't forget to give a ⭐️ if you liked it!
99 |
--------------------------------------------------------------------------------
/assets/fonts/whitney-300.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/parsherr/discord-embed-builder/114fb93ddf46656e34e2de3dd3e30dcf80918b54/assets/fonts/whitney-300.woff
--------------------------------------------------------------------------------
/assets/fonts/whitney-400.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/parsherr/discord-embed-builder/114fb93ddf46656e34e2de3dd3e30dcf80918b54/assets/fonts/whitney-400.woff
--------------------------------------------------------------------------------
/assets/fonts/whitney-500.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/parsherr/discord-embed-builder/114fb93ddf46656e34e2de3dd3e30dcf80918b54/assets/fonts/whitney-500.woff
--------------------------------------------------------------------------------
/assets/fonts/whitney-600.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/parsherr/discord-embed-builder/114fb93ddf46656e34e2de3dd3e30dcf80918b54/assets/fonts/whitney-600.woff
--------------------------------------------------------------------------------
/assets/fonts/whitney-700.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/parsherr/discord-embed-builder/114fb93ddf46656e34e2de3dd3e30dcf80918b54/assets/fonts/whitney-700.woff
--------------------------------------------------------------------------------
/assets/libs/color-picker/LICENSE:
--------------------------------------------------------------------------------
1 | The MIT License (MIT)
2 |
3 | Copyright (c) 2020 Taufik Nurrohman
4 |
5 |
6 |
7 | Permission is hereby granted, free of charge, to any person obtaining a copy
8 | of this software and associated documentation files (the "Software"), to deal
9 | in the Software without restriction, including without limitation the rights
10 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
11 | copies of the Software, and to permit persons to whom the Software is
12 | furnished to do so, subject to the following conditions:
13 |
14 | The above copyright notice and this permission notice shall be included in all
15 | copies or substantial portions of the Software.
16 |
17 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
18 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
19 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
20 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
21 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
22 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
23 | SOFTWARE.
24 |
--------------------------------------------------------------------------------
/assets/libs/color-picker/color-picker.min.css:
--------------------------------------------------------------------------------
1 | .color-picker,
2 | .color-picker *,
3 | .color-picker ::after,
4 | .color-picker ::before,
5 | .color-picker::after,
6 | .color-picker::before {
7 | box-sizing: border-box;
8 | }
9 | .color-picker {
10 | position: absolute;
11 | top: 0;
12 | left: 0;
13 | z-index: 9999;
14 | box-shadow: 1px 3px 6px rgba(0, 0, 0, 0.5);
15 | }
16 | .color-picker > div {
17 | display: flex;
18 | height: 10em;
19 | border: 1px solid #000;
20 | color: #000;
21 | }
22 | .color-picker > div * {
23 | border-color: inherit;
24 | color: inherit;
25 | }
26 | .color-picker i {
27 | font: inherit;
28 | font-size: 12px;
29 | }
30 | .color-picker\:a,
31 | .color-picker\:h,
32 | .color-picker\:sv {
33 | background-size: 100% 100%;
34 | position: relative;
35 | }
36 | .color-picker\:a,
37 | .color-picker\:h {
38 | width: 1.5em;
39 | border-left: 1px solid;
40 | cursor: ns-resize;
41 | overflow: hidden;
42 | }
43 | .color-picker\:a div,
44 | .color-picker\:h div,
45 | .color-picker\:sv div {
46 | position: absolute;
47 | top: 0;
48 | right: 0;
49 | bottom: 0;
50 | left: 0;
51 | }
52 | .color-picker\:a i,
53 | .color-picker\:h i {
54 | display: block;
55 | height: 0.5em;
56 | position: absolute;
57 | top: -0.25em;
58 | right: 0;
59 | left: 0;
60 | z-index: 2;
61 | }
62 | .color-picker\:a i::before,
63 | .color-picker\:h i::before {
64 | display: block;
65 | content: "";
66 | position: absolute;
67 | top: 0;
68 | right: 0;
69 | bottom: 0;
70 | left: 0;
71 | border: 0.25em solid;
72 | border-top-color: transparent;
73 | border-bottom-color: transparent;
74 | }
75 | .color-picker\:sv {
76 | width: 10em;
77 | cursor: crosshair;
78 | overflow: hidden;
79 | }
80 | .color-picker\:sv i {
81 | display: block;
82 | width: 0.75em;
83 | height: 0.75em;
84 | position: absolute;
85 | top: -0.375em;
86 | right: -0.375em;
87 | z-index: 2;
88 | }
89 | .color-picker\:sv i::before {
90 | display: block;
91 | content: "";
92 | position: absolute;
93 | top: 0;
94 | right: 0;
95 | bottom: 0;
96 | left: 0;
97 | border: 1px solid #fff;
98 | border-radius: 100%;
99 | box-shadow: 0 0 2px #000;
100 | }
101 | .color-picker\:a div {
102 | z-index: 2;
103 | }
104 | .color-picker\:a div + div {
105 | background-image: linear-gradient(45deg, #ddd 25%, transparent 25%, transparent 75%, #ddd 75%, #ddd 100%), linear-gradient(45deg, #ddd 25%, #fff 25%, #fff 75%, #ddd 75%, #ddd 100%);
106 | background-size: 0.5em 0.5em;
107 | background-position: 0 0, 0.25em 0.25em;
108 | z-index: 1;
109 | }
110 | .color-picker\:h div {
111 | background-image: linear-gradient(to top, red 0, #ff0 17%, #0f0 33%, #0ff 50%, #00f 67%, #f0f 83%, red 100%);
112 | }
113 | .color-picker\:sv div + div {
114 | background-image: linear-gradient(to right, #fff, rgba(255, 255, 255, 0));
115 | }
116 | .color-picker\:sv div + div + div {
117 | background-image: linear-gradient(to top, #000, rgba(0, 0, 0, 0));
118 | }
119 | .color-picker\:a,
120 | .color-picker\:h,
121 | .color-picker\:sv {
122 | -webkit-touch-callout: none;
123 | -webkit-user-select: none;
124 | -moz-user-select: none;
125 | -ms-user-select: none;
126 | user-select: none;
127 | -webkit-tap-highlight-color: transparent;
128 | -webkit-tap-highlight-color: transparent;
129 | }
--------------------------------------------------------------------------------
/assets/libs/color-picker/color-picker.min.js:
--------------------------------------------------------------------------------
1 | /*!
2 | * ==============================================================
3 | * COLOR PICKER 2.1.6
4 | * ==============================================================
5 | * Author: Taufik Nurrohman
6 | * License: MIT
7 | * --------------------------------------------------------------
8 | */
9 | ((e, t, n) => {
10 | let r = t.documentElement,
11 | i = "HEX",
12 | o = "top",
13 | u = "right",
14 | c = "left",
15 | l = "px",
16 | f = e.setTimeout,
17 | s = ["touchstart", "mousedown"],
18 | a = ["touchmove", "mousemove"],
19 | d = ["orientationchange", "resize"],
20 | h = ["touchend", "mouseup"];
21 | function p(e) {
22 | let t,
23 | n,
24 | r,
25 | i,
26 | o,
27 | u,
28 | c,
29 | l,
30 | f = +e[0],
31 | s = +e[1],
32 | a = +e[2];
33 | switch (((u = a * (1 - s)), (c = a * (1 - (o = 6 * f - (i = Math.floor(6 * f))) * s)), (l = a * (1 - (1 - o) * s)), (i = i || 0), (c = c || 0), (l = l || 0), i % 6)) {
34 | case 0:
35 | (t = a), (n = l), (r = u);
36 | break;
37 | case 1:
38 | (t = c), (n = a), (r = u);
39 | break;
40 | case 2:
41 | (t = u), (n = a), (r = l);
42 | break;
43 | case 3:
44 | (t = u), (n = c), (r = a);
45 | break;
46 | case 4:
47 | (t = l), (n = u), (r = a);
48 | break;
49 | case 5:
50 | (t = a), (n = u), (r = c);
51 | }
52 | return [L(255 * t), L(255 * n), L(255 * r), w(e[3]) ? +e[3] : 1];
53 | }
54 | function g(e) {
55 | let t,
56 | n,
57 | r = +e[0] / 255,
58 | i = +e[1] / 255,
59 | o = +e[2] / 255,
60 | u = Math.max(r, i, o),
61 | c = Math.min(r, i, o),
62 | l = u,
63 | f = u - c;
64 | if (((n = 0 === u ? 0 : f / u), u === c)) t = 0;
65 | else {
66 | switch (u) {
67 | case r:
68 | t = (i - o) / f + (i < o ? 6 : 0);
69 | break;
70 | case i:
71 | t = (o - r) / f + 2;
72 | break;
73 | case o:
74 | t = (r - i) / f + 4;
75 | }
76 | t /= 6;
77 | }
78 | return [t, n, l, w(e[3]) ? +e[3] : 1];
79 | }
80 | function v(e, t) {
81 | let n = t.touches ? t.touches[0].clientX : t.clientX,
82 | r = t.touches ? t.touches[0].clientY : t.clientY,
83 | i = E(e);
84 | return [n - i[0], r - i[1]];
85 | }
86 | function b(e, t) {
87 | if (e === t) return e;
88 | for (; (e = e.parentElement) && e !== t; );
89 | return e;
90 | }
91 | function m(e) {
92 | e && e.preventDefault();
93 | }
94 | function C(e, t, n) {
95 | for (let r = 0, i = t.length; r < i; ++r) e.removeEventListener(t[r], n, !1);
96 | }
97 | function k(e, t, n) {
98 | for (let r = 0, i = t.length; r < i; ++r) e.addEventListener(t[r], n, !1);
99 | }
100 | function y(e) {
101 | return "function" == typeof e;
102 | }
103 | function w(e) {
104 | return void 0 !== e && null !== e;
105 | }
106 | function x(e) {
107 | return "string" == typeof e;
108 | }
109 | function E(t) {
110 | let n, i, o;
111 | return t === e ? ((n = e.pageXOffset || r.scrollLeft), (i = e.pageYOffset || r.scrollTop)) : ((n = (o = t.getBoundingClientRect()).left), (i = o.top)), [n, i];
112 | }
113 | function P(t) {
114 | return t === e ? [e.innerWidth, e.innerHeight] : [t.offsetWidth, t.offsetHeight];
115 | }
116 | function H(e, t, n) {
117 | e.style[t] = n;
118 | }
119 | function M(e, t) {
120 | return e < t[0] ? t[0] : e > t[1] ? t[1] : e;
121 | }
122 | function O(e, t) {
123 | return parseInt(e, t || 10);
124 | }
125 | function X(e, n, r) {
126 | return (e = t.createElement(e)), n && n.appendChild(e), r && (e.className = r), e;
127 | }
128 | function L(e) {
129 | return Math.round(e);
130 | }
131 | function Y(e, t) {
132 | return e.toString(t);
133 | }
134 | ((e) => {
135 | (e[i] = (e) => {
136 | if (x(e)) {
137 | let t = (e = e.trim()).length;
138 | if ((4 !== t && 7 !== t) || "#" !== e[0]) {
139 | if ((5 === t || 9 === t) && "#" === e[0] && /^#([a-f\d]{3,4}){1,2}$/i.test(e))
140 | return 5 === t ? [O(e[1] + e[1], 16), O(e[2] + e[2], 16), O(e[3] + e[3], 16), O(e[4] + e[4], 16) / 255] : [O(e[1] + e[2], 16), O(e[3] + e[4], 16), O(e[5] + e[6], 16), O(e[7] + e[8], 16) / 255];
141 | } else if (/^#([a-f\d]{3}){1,2}$/i.test(e)) return 4 === t ? [O(e[1] + e[1], 16), O(e[2] + e[2], 16), O(e[3] + e[3], 16), 1] : [O(e[1] + e[2], 16), O(e[3] + e[4], 16), O(e[5] + e[6], 16), 1];
142 | return [0, 0, 0, 1];
143 | }
144 | return "#" + ("000000" + Y(+e[2] | (+e[1] << 8) | (+e[0] << 16), 16)).slice(-6) + (w(e[3]) && e[3] < 1 ? Y(L(255 * e[3]) + 65536, 16).substr(-2) : "");
145 | }),
146 | (e.instances = {}),
147 | (e.state = { class: "color-picker", color: i, parent: null }),
148 | (e.version = "2.1.6");
149 | })(
150 | (e.CP = function (n, O) {
151 | if (!n) return;
152 | let L = this,
153 | Y = e.CP,
154 | I = {},
155 | N = Object.assign({}, Y.state, x(O) ? { color: O } : O || {}),
156 | T = N.class,
157 | W = X("div", 0, T);
158 | if (n.CP) return L;
159 | if (!(L instanceof Y)) return new Y(n, O);
160 | (Y.instances[n.id || n.name || Object.keys(Y.instances).length] = L), (n.CP = 1), (L.visible = !1);
161 | let $,
162 | z,
163 | B,
164 | D,
165 | R = t.body,
166 | S = le(),
167 | q = g(S),
168 | A = X("div", W),
169 | F = X("div", A, T + ":sv"),
170 | G = X("div", A, T + ":h"),
171 | J = X("div", A, T + ":a"),
172 | K = X("div", F),
173 | Q = (X("div", F), X("div", F), X("i", F)),
174 | U = (X("div", G), X("i", G)),
175 | V = X("div", J),
176 | Z = (X("div", J), X("i", J)),
177 | _ = 0,
178 | ee = 0,
179 | te = 0,
180 | ne = 0,
181 | re = 0,
182 | ie = 0;
183 | function oe(e) {
184 | if (I.focus) ue("focus", S);
185 | else {
186 | let t = e.target;
187 | n === b(t, n) ? !ce() && $(N.parent) : z();
188 | }
189 | }
190 | function ue(e, t) {
191 | if (!w(I[e])) return L;
192 | for (let n = 0, r = I[e].length; n < r; ++n) I[e][n].apply(L, t);
193 | return L;
194 | }
195 | function ce() {
196 | return W.parentNode;
197 | }
198 | function le(e) {
199 | let t,
200 | r = Y[y(Y[N.color]) ? N.color : i];
201 | return (t = n.dataset.color) ? (w(e) ? (n.dataset.color = r(t)) : r(t)) : (t = n.value) ? (w(e) ? (n.value = r(t)) : r(t)) : (t = n.textContent) ? (w(e) ? (n.textContent = r(t)) : r(t)) : w(e) ? void 0 : [0, 0, 0, 1];
202 | }
203 | !(function i(y, x) {
204 | (q = g((S = le()))),
205 | y || ((x || N.parent || R).appendChild(W), (L.visible = !0)),
206 | ($ = (e) => (i(0, e), ue("enter", S), L)),
207 | (z = () => {
208 | let n = ce();
209 | return n && (n.removeChild(W), (L.current = null), (L.visible = !1)), C(F, s, ge), C(G, s, ve), C(J, s, be), C(t, a, he), C(t, h, pe), C(e, d, D), ue("exit", S), L;
210 | }),
211 | (B = (t) => {
212 | let i = P(e),
213 | u = P(r),
214 | f = i[0] - u[0],
215 | s = i[1] - r.clientHeight,
216 | a = E(e),
217 | d = E(n),
218 | h = P(W),
219 | p = h[0],
220 | g = h[1],
221 | v = d[0] + a[0],
222 | b = d[1] + a[1] + P(n)[1];
223 | if ("object" == typeof t) w(t[0]) && (v = t[0]), w(t[1]) && (b = t[1]);
224 | else {
225 | let e = a[0],
226 | t = a[1],
227 | n = a[0] + i[0] - p - f,
228 | r = a[1] + i[1] - g - s;
229 | (v = M(v, [e, n]) >> 0), (b = M(b, [t, r]) >> 0);
230 | }
231 | return H(W, c, v + l), H(W, o, b + l), ue("fit", S), L;
232 | }),
233 | (D = () => B());
234 | let j = P(F),
235 | O = j[0],
236 | X = j[1],
237 | Y = P(Q),
238 | T = Y[0],
239 | A = Y[1],
240 | fe = P(G)[1],
241 | se = P(U)[1],
242 | ae = P(J)[1],
243 | de = P(Z)[1];
244 | function he(e) {
245 | ne &&
246 | (function (e) {
247 | let t = v(F, e),
248 | n = M(t[0], [0, O]),
249 | r = M(t[1], [0, X]);
250 | (q[1] = 1 - (O - n) / O), (q[2] = (X - r) / X), me();
251 | })(e),
252 | re &&
253 | (function (e) {
254 | (q[0] = (fe - M(v(G, e)[1], [0, fe])) / fe), me();
255 | })(e),
256 | ie &&
257 | (function (e) {
258 | (q[3] = (ae - M(v(J, e)[1], [0, ae])) / ae), me();
259 | })(e),
260 | (S = p(q)),
261 | (ne || re || ie) && (ue(_ || ee || te ? "start" : "drag", S), ue("change", S)),
262 | (_ = ee = te = 0);
263 | }
264 | function pe(e) {
265 | S = p(q);
266 | let t = e.target,
267 | r = n === b(t, n),
268 | i = W === b(t, W);
269 | (L.current = null), r || i ? i && (ne || re || ie) && ue("stop", S) : I.blur ? ue("blur", S) : ce() && z(), (ne = re = ie = 0);
270 | }
271 | function ge(e) {
272 | (L.current = F), (_ = ne = 1), he(e), m(e);
273 | }
274 | function ve(e) {
275 | (L.current = G), (ee = re = 1), he(e), m(e);
276 | }
277 | function be(e) {
278 | (L.current = J), (te = ie = 1), he(e), m(e);
279 | }
280 | function me() {
281 | var e;
282 | w((e = q)[1]) && H(Q, u, O - T / 2 - O * +e[1] + l), w(e[2]) && H(Q, o, X - A / 2 - X * +e[2] + l), w(e[0]) && H(U, o, fe - se / 2 - fe * +e[0] + l), w(e[3]) && H(Z, o, ae - de / 2 - ae * +e[3] + l);
283 | let t = p(q),
284 | n = p([q[0], 1, 1]);
285 | H(K, "backgroundColor", "rgb(" + n[0] + "," + n[1] + "," + n[2] + ")"), H(V, "backgroundImage", "linear-gradient(rgb(" + t[0] + "," + t[1] + "," + t[2] + "),transparent)");
286 | }
287 | y
288 | ? (k(n, s, oe),
289 | f(() => {
290 | ue("change", S);
291 | }, 1))
292 | : (k(F, s, ge), k(G, s, ve), k(J, s, be), k(t, a, he), k(t, h, pe), k(e, d, D), B()),
293 | (L.get = () => le()),
294 | (L.set = (e, t, n, r) => ((q = g([e, t, n, r])), me(), L)),
295 | me();
296 | })(1),
297 | (L.color = (e, t, n, r) => Y[y(Y[N.color]) ? N.color : i]([e, t, n, r])),
298 | (L.current = null),
299 | (L.enter = $),
300 | (L.exit = z),
301 | (L.fire = ue),
302 | (L.fit = B),
303 | (L.hooks = I),
304 | (L.off = function (e, t) {
305 | if (!w(e)) return (I = {}), L;
306 | if (w(I[e]))
307 | if (w(t)) {
308 | for (let n = 0, r = I[e].length; n < r; ++n) t === I[e][n] && I[e].splice(n, 1);
309 | 0 === j && delete I[e];
310 | } else delete I[e];
311 | return L;
312 | }),
313 | (L.on = function (e, t) {
314 | return w(I[e]) || (I[e] = []), w(t) && I[e].push(t), L;
315 | }),
316 | (L.pop = () => (n.CP ? (delete n.CP, C(n, s, oe), z(), ue("pop", S)) : L)),
317 | (L.self = W),
318 | (L.source = n),
319 | (L.state = N),
320 | (L.value = (e, t, n, r) => (L.set(e, t, n, r), ue("change", [e, t, n, r])));
321 | })
322 | );
323 | })(window, document);
--------------------------------------------------------------------------------
/assets/media/banner.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/parsherr/discord-embed-builder/114fb93ddf46656e34e2de3dd3e30dcf80918b54/assets/media/banner.png
--------------------------------------------------------------------------------
/assets/media/discord-embed-builder-logo-v2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/parsherr/discord-embed-builder/114fb93ddf46656e34e2de3dd3e30dcf80918b54/assets/media/discord-embed-builder-logo-v2.png
--------------------------------------------------------------------------------
/assets/media/gui.old.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/parsherr/discord-embed-builder/114fb93ddf46656e34e2de3dd3e30dcf80918b54/assets/media/gui.old.png
--------------------------------------------------------------------------------
/assets/media/gui.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/parsherr/discord-embed-builder/114fb93ddf46656e34e2de3dd3e30dcf80918b54/assets/media/gui.png
--------------------------------------------------------------------------------
/assets/media/image.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/parsherr/discord-embed-builder/114fb93ddf46656e34e2de3dd3e30dcf80918b54/assets/media/image.png
--------------------------------------------------------------------------------
/assets/media/json.old.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/parsherr/discord-embed-builder/114fb93ddf46656e34e2de3dd3e30dcf80918b54/assets/media/json.old.png
--------------------------------------------------------------------------------
/assets/media/json.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/parsherr/discord-embed-builder/114fb93ddf46656e34e2de3dd3e30dcf80918b54/assets/media/json.png
--------------------------------------------------------------------------------
/builder.config.js:
--------------------------------------------------------------------------------
1 | /**
2 | * This script file will (or atleast should) run before the main script file runs.
3 | * This file should contain stuff like options, global variables (etc.) to be used by the main script.
4 | */
5 |
6 | // Options
7 |
8 | // URL options can override the options below.
9 | // Options set through the menu can override both until the page is refreshed.
10 | options = {
11 | username: 'Discord Bot',
12 | avatar: 'https://cdn.discordapp.com/embed/avatars/1.png',
13 | verified: false,
14 | noUser: false,
15 | data: null,
16 | guiTabs: ['author', 'description'],
17 | useJsonEditor: false,
18 | reverseColumns: false,
19 | allowPlaceholders: false,
20 | autoUpdateURL: false,
21 | autoParams: false,
22 | hideEditor: false,
23 | hidePreview: false,
24 | hideMenu: false,
25 | single: false,
26 | noMultiEmbedsOption: false,
27 | sourceOption: false, // Display link to source code in menu.
28 | }
29 |
30 | // Default JSON object
31 |
32 | // json = {
33 | // content: "Hello world",
34 | // embed: {
35 | // title: "A title",
36 | // description: "A description",
37 | // }
38 | // }
39 |
40 |
41 | // Write any code under the 'DOMContentLoaded' event to run after the page has loaded.
42 | addEventListener('DOMContentLoaded', () => {
43 | // console.log('Hello 👋');
44 |
45 | // Remove the colour picker
46 | // document.querySelector('.colors').remove()
47 | })
--------------------------------------------------------------------------------
/package-lock.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "discord-embed-builder",
3 | "version": "1.0.0",
4 | "lockfileVersion": 3,
5 | "requires": true,
6 | "packages": {
7 | "": {
8 | "name": "discord-embed-builder",
9 | "version": "1.0.0",
10 | "license": "ISC",
11 | "dependencies": {
12 | "axios": "^1.6.2",
13 | "cors": "^2.8.5",
14 | "discord.js": "^14.14.1",
15 | "dotenv": "^16.3.1",
16 | "ejs": "^3.1.9",
17 | "express": "^4.18.2"
18 | },
19 | "devDependencies": {
20 | "nodemon": "^3.1.9"
21 | }
22 | },
23 | "node_modules/@discordjs/builders": {
24 | "version": "1.10.1",
25 | "resolved": "https://registry.npmjs.org/@discordjs/builders/-/builders-1.10.1.tgz",
26 | "integrity": "sha512-OWo1fY4ztL1/M/DUyRPShB4d/EzVfuUvPTRRHRIt/YxBrUYSz0a+JicD5F5zHFoNs2oTuWavxCOVFV1UljHTng==",
27 | "license": "Apache-2.0",
28 | "dependencies": {
29 | "@discordjs/formatters": "^0.6.0",
30 | "@discordjs/util": "^1.1.1",
31 | "@sapphire/shapeshift": "^4.0.0",
32 | "discord-api-types": "^0.37.119",
33 | "fast-deep-equal": "^3.1.3",
34 | "ts-mixer": "^6.0.4",
35 | "tslib": "^2.6.3"
36 | },
37 | "engines": {
38 | "node": ">=16.11.0"
39 | },
40 | "funding": {
41 | "url": "https://github.com/discordjs/discord.js?sponsor"
42 | }
43 | },
44 | "node_modules/@discordjs/collection": {
45 | "version": "1.5.3",
46 | "resolved": "https://registry.npmjs.org/@discordjs/collection/-/collection-1.5.3.tgz",
47 | "integrity": "sha512-SVb428OMd3WO1paV3rm6tSjM4wC+Kecaa1EUGX7vc6/fddvw/6lg90z4QtCqm21zvVe92vMMDt9+DkIvjXImQQ==",
48 | "license": "Apache-2.0",
49 | "engines": {
50 | "node": ">=16.11.0"
51 | }
52 | },
53 | "node_modules/@discordjs/formatters": {
54 | "version": "0.6.0",
55 | "resolved": "https://registry.npmjs.org/@discordjs/formatters/-/formatters-0.6.0.tgz",
56 | "integrity": "sha512-YIruKw4UILt/ivO4uISmrGq2GdMY6EkoTtD0oS0GvkJFRZbTSdPhzYiUILbJ/QslsvC9H9nTgGgnarnIl4jMfw==",
57 | "license": "Apache-2.0",
58 | "dependencies": {
59 | "discord-api-types": "^0.37.114"
60 | },
61 | "engines": {
62 | "node": ">=16.11.0"
63 | },
64 | "funding": {
65 | "url": "https://github.com/discordjs/discord.js?sponsor"
66 | }
67 | },
68 | "node_modules/@discordjs/rest": {
69 | "version": "2.4.3",
70 | "resolved": "https://registry.npmjs.org/@discordjs/rest/-/rest-2.4.3.tgz",
71 | "integrity": "sha512-+SO4RKvWsM+y8uFHgYQrcTl/3+cY02uQOH7/7bKbVZsTfrfpoE62o5p+mmV+s7FVhTX82/kQUGGbu4YlV60RtA==",
72 | "license": "Apache-2.0",
73 | "dependencies": {
74 | "@discordjs/collection": "^2.1.1",
75 | "@discordjs/util": "^1.1.1",
76 | "@sapphire/async-queue": "^1.5.3",
77 | "@sapphire/snowflake": "^3.5.3",
78 | "@vladfrangu/async_event_emitter": "^2.4.6",
79 | "discord-api-types": "^0.37.119",
80 | "magic-bytes.js": "^1.10.0",
81 | "tslib": "^2.6.3",
82 | "undici": "6.21.1"
83 | },
84 | "engines": {
85 | "node": ">=18"
86 | },
87 | "funding": {
88 | "url": "https://github.com/discordjs/discord.js?sponsor"
89 | }
90 | },
91 | "node_modules/@discordjs/rest/node_modules/@discordjs/collection": {
92 | "version": "2.1.1",
93 | "resolved": "https://registry.npmjs.org/@discordjs/collection/-/collection-2.1.1.tgz",
94 | "integrity": "sha512-LiSusze9Tc7qF03sLCujF5iZp7K+vRNEDBZ86FT9aQAv3vxMLihUvKvpsCWiQ2DJq1tVckopKm1rxomgNUc9hg==",
95 | "license": "Apache-2.0",
96 | "engines": {
97 | "node": ">=18"
98 | },
99 | "funding": {
100 | "url": "https://github.com/discordjs/discord.js?sponsor"
101 | }
102 | },
103 | "node_modules/@discordjs/util": {
104 | "version": "1.1.1",
105 | "resolved": "https://registry.npmjs.org/@discordjs/util/-/util-1.1.1.tgz",
106 | "integrity": "sha512-eddz6UnOBEB1oITPinyrB2Pttej49M9FZQY8NxgEvc3tq6ZICZ19m70RsmzRdDHk80O9NoYN/25AqJl8vPVf/g==",
107 | "license": "Apache-2.0",
108 | "engines": {
109 | "node": ">=18"
110 | },
111 | "funding": {
112 | "url": "https://github.com/discordjs/discord.js?sponsor"
113 | }
114 | },
115 | "node_modules/@discordjs/ws": {
116 | "version": "1.2.1",
117 | "resolved": "https://registry.npmjs.org/@discordjs/ws/-/ws-1.2.1.tgz",
118 | "integrity": "sha512-PBvenhZG56a6tMWF/f4P6f4GxZKJTBG95n7aiGSPTnodmz4N5g60t79rSIAq7ywMbv8A4jFtexMruH+oe51aQQ==",
119 | "license": "Apache-2.0",
120 | "dependencies": {
121 | "@discordjs/collection": "^2.1.0",
122 | "@discordjs/rest": "^2.4.3",
123 | "@discordjs/util": "^1.1.0",
124 | "@sapphire/async-queue": "^1.5.2",
125 | "@types/ws": "^8.5.10",
126 | "@vladfrangu/async_event_emitter": "^2.2.4",
127 | "discord-api-types": "^0.37.119",
128 | "tslib": "^2.6.2",
129 | "ws": "^8.17.0"
130 | },
131 | "engines": {
132 | "node": ">=16.11.0"
133 | },
134 | "funding": {
135 | "url": "https://github.com/discordjs/discord.js?sponsor"
136 | }
137 | },
138 | "node_modules/@discordjs/ws/node_modules/@discordjs/collection": {
139 | "version": "2.1.1",
140 | "resolved": "https://registry.npmjs.org/@discordjs/collection/-/collection-2.1.1.tgz",
141 | "integrity": "sha512-LiSusze9Tc7qF03sLCujF5iZp7K+vRNEDBZ86FT9aQAv3vxMLihUvKvpsCWiQ2DJq1tVckopKm1rxomgNUc9hg==",
142 | "license": "Apache-2.0",
143 | "engines": {
144 | "node": ">=18"
145 | },
146 | "funding": {
147 | "url": "https://github.com/discordjs/discord.js?sponsor"
148 | }
149 | },
150 | "node_modules/@sapphire/async-queue": {
151 | "version": "1.5.5",
152 | "resolved": "https://registry.npmjs.org/@sapphire/async-queue/-/async-queue-1.5.5.tgz",
153 | "integrity": "sha512-cvGzxbba6sav2zZkH8GPf2oGk9yYoD5qrNWdu9fRehifgnFZJMV+nuy2nON2roRO4yQQ+v7MK/Pktl/HgfsUXg==",
154 | "license": "MIT",
155 | "engines": {
156 | "node": ">=v14.0.0",
157 | "npm": ">=7.0.0"
158 | }
159 | },
160 | "node_modules/@sapphire/shapeshift": {
161 | "version": "4.0.0",
162 | "resolved": "https://registry.npmjs.org/@sapphire/shapeshift/-/shapeshift-4.0.0.tgz",
163 | "integrity": "sha512-d9dUmWVA7MMiKobL3VpLF8P2aeanRTu6ypG2OIaEv/ZHH/SUQ2iHOVyi5wAPjQ+HmnMuL0whK9ez8I/raWbtIg==",
164 | "license": "MIT",
165 | "dependencies": {
166 | "fast-deep-equal": "^3.1.3",
167 | "lodash": "^4.17.21"
168 | },
169 | "engines": {
170 | "node": ">=v16"
171 | }
172 | },
173 | "node_modules/@sapphire/snowflake": {
174 | "version": "3.5.3",
175 | "resolved": "https://registry.npmjs.org/@sapphire/snowflake/-/snowflake-3.5.3.tgz",
176 | "integrity": "sha512-jjmJywLAFoWeBi1W7994zZyiNWPIiqRRNAmSERxyg93xRGzNYvGjlZ0gR6x0F4gPRi2+0O6S71kOZYyr3cxaIQ==",
177 | "license": "MIT",
178 | "engines": {
179 | "node": ">=v14.0.0",
180 | "npm": ">=7.0.0"
181 | }
182 | },
183 | "node_modules/@types/node": {
184 | "version": "22.13.4",
185 | "resolved": "https://registry.npmjs.org/@types/node/-/node-22.13.4.tgz",
186 | "integrity": "sha512-ywP2X0DYtX3y08eFVx5fNIw7/uIv8hYUKgXoK8oayJlLnKcRfEYCxWMVE1XagUdVtCJlZT1AU4LXEABW+L1Peg==",
187 | "license": "MIT",
188 | "dependencies": {
189 | "undici-types": "~6.20.0"
190 | }
191 | },
192 | "node_modules/@types/ws": {
193 | "version": "8.5.14",
194 | "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.14.tgz",
195 | "integrity": "sha512-bd/YFLW+URhBzMXurx7lWByOu+xzU9+kb3RboOteXYDfW+tr+JZa99OyNmPINEGB/ahzKrEuc8rcv4gnpJmxTw==",
196 | "license": "MIT",
197 | "dependencies": {
198 | "@types/node": "*"
199 | }
200 | },
201 | "node_modules/@vladfrangu/async_event_emitter": {
202 | "version": "2.4.6",
203 | "resolved": "https://registry.npmjs.org/@vladfrangu/async_event_emitter/-/async_event_emitter-2.4.6.tgz",
204 | "integrity": "sha512-RaI5qZo6D2CVS6sTHFKg1v5Ohq/+Bo2LZ5gzUEwZ/WkHhwtGTCB/sVLw8ijOkAUxasZ+WshN/Rzj4ywsABJ5ZA==",
205 | "license": "MIT",
206 | "engines": {
207 | "node": ">=v14.0.0",
208 | "npm": ">=7.0.0"
209 | }
210 | },
211 | "node_modules/accepts": {
212 | "version": "1.3.8",
213 | "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz",
214 | "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==",
215 | "license": "MIT",
216 | "dependencies": {
217 | "mime-types": "~2.1.34",
218 | "negotiator": "0.6.3"
219 | },
220 | "engines": {
221 | "node": ">= 0.6"
222 | }
223 | },
224 | "node_modules/ansi-styles": {
225 | "version": "4.3.0",
226 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
227 | "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
228 | "license": "MIT",
229 | "dependencies": {
230 | "color-convert": "^2.0.1"
231 | },
232 | "engines": {
233 | "node": ">=8"
234 | },
235 | "funding": {
236 | "url": "https://github.com/chalk/ansi-styles?sponsor=1"
237 | }
238 | },
239 | "node_modules/anymatch": {
240 | "version": "3.1.3",
241 | "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz",
242 | "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==",
243 | "dev": true,
244 | "license": "ISC",
245 | "dependencies": {
246 | "normalize-path": "^3.0.0",
247 | "picomatch": "^2.0.4"
248 | },
249 | "engines": {
250 | "node": ">= 8"
251 | }
252 | },
253 | "node_modules/array-flatten": {
254 | "version": "1.1.1",
255 | "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz",
256 | "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==",
257 | "license": "MIT"
258 | },
259 | "node_modules/async": {
260 | "version": "3.2.6",
261 | "resolved": "https://registry.npmjs.org/async/-/async-3.2.6.tgz",
262 | "integrity": "sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==",
263 | "license": "MIT"
264 | },
265 | "node_modules/asynckit": {
266 | "version": "0.4.0",
267 | "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
268 | "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==",
269 | "license": "MIT"
270 | },
271 | "node_modules/axios": {
272 | "version": "1.7.9",
273 | "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.9.tgz",
274 | "integrity": "sha512-LhLcE7Hbiryz8oMDdDptSrWowmB4Bl6RCt6sIJKpRB4XtVf0iEgewX3au/pJqm+Py1kCASkb/FFKjxQaLtxJvw==",
275 | "license": "MIT",
276 | "dependencies": {
277 | "follow-redirects": "^1.15.6",
278 | "form-data": "^4.0.0",
279 | "proxy-from-env": "^1.1.0"
280 | }
281 | },
282 | "node_modules/balanced-match": {
283 | "version": "1.0.2",
284 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
285 | "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
286 | "license": "MIT"
287 | },
288 | "node_modules/binary-extensions": {
289 | "version": "2.3.0",
290 | "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz",
291 | "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==",
292 | "dev": true,
293 | "license": "MIT",
294 | "engines": {
295 | "node": ">=8"
296 | },
297 | "funding": {
298 | "url": "https://github.com/sponsors/sindresorhus"
299 | }
300 | },
301 | "node_modules/body-parser": {
302 | "version": "1.20.3",
303 | "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.3.tgz",
304 | "integrity": "sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==",
305 | "license": "MIT",
306 | "dependencies": {
307 | "bytes": "3.1.2",
308 | "content-type": "~1.0.5",
309 | "debug": "2.6.9",
310 | "depd": "2.0.0",
311 | "destroy": "1.2.0",
312 | "http-errors": "2.0.0",
313 | "iconv-lite": "0.4.24",
314 | "on-finished": "2.4.1",
315 | "qs": "6.13.0",
316 | "raw-body": "2.5.2",
317 | "type-is": "~1.6.18",
318 | "unpipe": "1.0.0"
319 | },
320 | "engines": {
321 | "node": ">= 0.8",
322 | "npm": "1.2.8000 || >= 1.4.16"
323 | }
324 | },
325 | "node_modules/brace-expansion": {
326 | "version": "1.1.11",
327 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
328 | "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
329 | "license": "MIT",
330 | "dependencies": {
331 | "balanced-match": "^1.0.0",
332 | "concat-map": "0.0.1"
333 | }
334 | },
335 | "node_modules/braces": {
336 | "version": "3.0.3",
337 | "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz",
338 | "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==",
339 | "dev": true,
340 | "license": "MIT",
341 | "dependencies": {
342 | "fill-range": "^7.1.1"
343 | },
344 | "engines": {
345 | "node": ">=8"
346 | }
347 | },
348 | "node_modules/bytes": {
349 | "version": "3.1.2",
350 | "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz",
351 | "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==",
352 | "license": "MIT",
353 | "engines": {
354 | "node": ">= 0.8"
355 | }
356 | },
357 | "node_modules/call-bind-apply-helpers": {
358 | "version": "1.0.2",
359 | "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz",
360 | "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==",
361 | "license": "MIT",
362 | "dependencies": {
363 | "es-errors": "^1.3.0",
364 | "function-bind": "^1.1.2"
365 | },
366 | "engines": {
367 | "node": ">= 0.4"
368 | }
369 | },
370 | "node_modules/call-bound": {
371 | "version": "1.0.3",
372 | "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.3.tgz",
373 | "integrity": "sha512-YTd+6wGlNlPxSuri7Y6X8tY2dmm12UMH66RpKMhiX6rsk5wXXnYgbUcOt8kiS31/AjfoTOvCsE+w8nZQLQnzHA==",
374 | "license": "MIT",
375 | "dependencies": {
376 | "call-bind-apply-helpers": "^1.0.1",
377 | "get-intrinsic": "^1.2.6"
378 | },
379 | "engines": {
380 | "node": ">= 0.4"
381 | },
382 | "funding": {
383 | "url": "https://github.com/sponsors/ljharb"
384 | }
385 | },
386 | "node_modules/chalk": {
387 | "version": "4.1.2",
388 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
389 | "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
390 | "license": "MIT",
391 | "dependencies": {
392 | "ansi-styles": "^4.1.0",
393 | "supports-color": "^7.1.0"
394 | },
395 | "engines": {
396 | "node": ">=10"
397 | },
398 | "funding": {
399 | "url": "https://github.com/chalk/chalk?sponsor=1"
400 | }
401 | },
402 | "node_modules/chokidar": {
403 | "version": "3.6.0",
404 | "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz",
405 | "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==",
406 | "dev": true,
407 | "license": "MIT",
408 | "dependencies": {
409 | "anymatch": "~3.1.2",
410 | "braces": "~3.0.2",
411 | "glob-parent": "~5.1.2",
412 | "is-binary-path": "~2.1.0",
413 | "is-glob": "~4.0.1",
414 | "normalize-path": "~3.0.0",
415 | "readdirp": "~3.6.0"
416 | },
417 | "engines": {
418 | "node": ">= 8.10.0"
419 | },
420 | "funding": {
421 | "url": "https://paulmillr.com/funding/"
422 | },
423 | "optionalDependencies": {
424 | "fsevents": "~2.3.2"
425 | }
426 | },
427 | "node_modules/color-convert": {
428 | "version": "2.0.1",
429 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
430 | "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
431 | "license": "MIT",
432 | "dependencies": {
433 | "color-name": "~1.1.4"
434 | },
435 | "engines": {
436 | "node": ">=7.0.0"
437 | }
438 | },
439 | "node_modules/color-name": {
440 | "version": "1.1.4",
441 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
442 | "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
443 | "license": "MIT"
444 | },
445 | "node_modules/combined-stream": {
446 | "version": "1.0.8",
447 | "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
448 | "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
449 | "license": "MIT",
450 | "dependencies": {
451 | "delayed-stream": "~1.0.0"
452 | },
453 | "engines": {
454 | "node": ">= 0.8"
455 | }
456 | },
457 | "node_modules/concat-map": {
458 | "version": "0.0.1",
459 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
460 | "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==",
461 | "license": "MIT"
462 | },
463 | "node_modules/content-disposition": {
464 | "version": "0.5.4",
465 | "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz",
466 | "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==",
467 | "license": "MIT",
468 | "dependencies": {
469 | "safe-buffer": "5.2.1"
470 | },
471 | "engines": {
472 | "node": ">= 0.6"
473 | }
474 | },
475 | "node_modules/content-type": {
476 | "version": "1.0.5",
477 | "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz",
478 | "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==",
479 | "license": "MIT",
480 | "engines": {
481 | "node": ">= 0.6"
482 | }
483 | },
484 | "node_modules/cookie": {
485 | "version": "0.7.1",
486 | "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.1.tgz",
487 | "integrity": "sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w==",
488 | "license": "MIT",
489 | "engines": {
490 | "node": ">= 0.6"
491 | }
492 | },
493 | "node_modules/cookie-signature": {
494 | "version": "1.0.6",
495 | "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz",
496 | "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==",
497 | "license": "MIT"
498 | },
499 | "node_modules/cors": {
500 | "version": "2.8.5",
501 | "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz",
502 | "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==",
503 | "license": "MIT",
504 | "dependencies": {
505 | "object-assign": "^4",
506 | "vary": "^1"
507 | },
508 | "engines": {
509 | "node": ">= 0.10"
510 | }
511 | },
512 | "node_modules/debug": {
513 | "version": "2.6.9",
514 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
515 | "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
516 | "license": "MIT",
517 | "dependencies": {
518 | "ms": "2.0.0"
519 | }
520 | },
521 | "node_modules/delayed-stream": {
522 | "version": "1.0.0",
523 | "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
524 | "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==",
525 | "license": "MIT",
526 | "engines": {
527 | "node": ">=0.4.0"
528 | }
529 | },
530 | "node_modules/depd": {
531 | "version": "2.0.0",
532 | "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz",
533 | "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==",
534 | "license": "MIT",
535 | "engines": {
536 | "node": ">= 0.8"
537 | }
538 | },
539 | "node_modules/destroy": {
540 | "version": "1.2.0",
541 | "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz",
542 | "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==",
543 | "license": "MIT",
544 | "engines": {
545 | "node": ">= 0.8",
546 | "npm": "1.2.8000 || >= 1.4.16"
547 | }
548 | },
549 | "node_modules/discord-api-types": {
550 | "version": "0.37.119",
551 | "resolved": "https://registry.npmjs.org/discord-api-types/-/discord-api-types-0.37.119.tgz",
552 | "integrity": "sha512-WasbGFXEB+VQWXlo6IpW3oUv73Yuau1Ig4AZF/m13tXcTKnMpc/mHjpztIlz4+BM9FG9BHQkEXiPto3bKduQUg==",
553 | "license": "MIT"
554 | },
555 | "node_modules/discord.js": {
556 | "version": "14.18.0",
557 | "resolved": "https://registry.npmjs.org/discord.js/-/discord.js-14.18.0.tgz",
558 | "integrity": "sha512-SvU5kVUvwunQhN2/+0t55QW/1EHfB1lp0TtLZUSXVHDmyHTrdOj5LRKdR0zLcybaA15F+NtdWuWmGOX9lE+CAw==",
559 | "license": "Apache-2.0",
560 | "dependencies": {
561 | "@discordjs/builders": "^1.10.1",
562 | "@discordjs/collection": "1.5.3",
563 | "@discordjs/formatters": "^0.6.0",
564 | "@discordjs/rest": "^2.4.3",
565 | "@discordjs/util": "^1.1.1",
566 | "@discordjs/ws": "^1.2.1",
567 | "@sapphire/snowflake": "3.5.3",
568 | "discord-api-types": "^0.37.119",
569 | "fast-deep-equal": "3.1.3",
570 | "lodash.snakecase": "4.1.1",
571 | "tslib": "^2.6.3",
572 | "undici": "6.21.1"
573 | },
574 | "engines": {
575 | "node": ">=18"
576 | },
577 | "funding": {
578 | "url": "https://github.com/discordjs/discord.js?sponsor"
579 | }
580 | },
581 | "node_modules/dotenv": {
582 | "version": "16.4.7",
583 | "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.4.7.tgz",
584 | "integrity": "sha512-47qPchRCykZC03FhkYAhrvwU4xDBFIj1QPqaarj6mdM/hgUzfPHcpkHJOn3mJAufFeeAxAzeGsr5X0M4k6fLZQ==",
585 | "license": "BSD-2-Clause",
586 | "engines": {
587 | "node": ">=12"
588 | },
589 | "funding": {
590 | "url": "https://dotenvx.com"
591 | }
592 | },
593 | "node_modules/dunder-proto": {
594 | "version": "1.0.1",
595 | "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz",
596 | "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==",
597 | "license": "MIT",
598 | "dependencies": {
599 | "call-bind-apply-helpers": "^1.0.1",
600 | "es-errors": "^1.3.0",
601 | "gopd": "^1.2.0"
602 | },
603 | "engines": {
604 | "node": ">= 0.4"
605 | }
606 | },
607 | "node_modules/ee-first": {
608 | "version": "1.1.1",
609 | "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
610 | "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==",
611 | "license": "MIT"
612 | },
613 | "node_modules/ejs": {
614 | "version": "3.1.10",
615 | "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.10.tgz",
616 | "integrity": "sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA==",
617 | "license": "Apache-2.0",
618 | "dependencies": {
619 | "jake": "^10.8.5"
620 | },
621 | "bin": {
622 | "ejs": "bin/cli.js"
623 | },
624 | "engines": {
625 | "node": ">=0.10.0"
626 | }
627 | },
628 | "node_modules/encodeurl": {
629 | "version": "2.0.0",
630 | "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz",
631 | "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==",
632 | "license": "MIT",
633 | "engines": {
634 | "node": ">= 0.8"
635 | }
636 | },
637 | "node_modules/es-define-property": {
638 | "version": "1.0.1",
639 | "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz",
640 | "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==",
641 | "license": "MIT",
642 | "engines": {
643 | "node": ">= 0.4"
644 | }
645 | },
646 | "node_modules/es-errors": {
647 | "version": "1.3.0",
648 | "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz",
649 | "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==",
650 | "license": "MIT",
651 | "engines": {
652 | "node": ">= 0.4"
653 | }
654 | },
655 | "node_modules/es-object-atoms": {
656 | "version": "1.1.1",
657 | "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz",
658 | "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==",
659 | "license": "MIT",
660 | "dependencies": {
661 | "es-errors": "^1.3.0"
662 | },
663 | "engines": {
664 | "node": ">= 0.4"
665 | }
666 | },
667 | "node_modules/es-set-tostringtag": {
668 | "version": "2.1.0",
669 | "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz",
670 | "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==",
671 | "license": "MIT",
672 | "dependencies": {
673 | "es-errors": "^1.3.0",
674 | "get-intrinsic": "^1.2.6",
675 | "has-tostringtag": "^1.0.2",
676 | "hasown": "^2.0.2"
677 | },
678 | "engines": {
679 | "node": ">= 0.4"
680 | }
681 | },
682 | "node_modules/escape-html": {
683 | "version": "1.0.3",
684 | "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
685 | "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==",
686 | "license": "MIT"
687 | },
688 | "node_modules/etag": {
689 | "version": "1.8.1",
690 | "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz",
691 | "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==",
692 | "license": "MIT",
693 | "engines": {
694 | "node": ">= 0.6"
695 | }
696 | },
697 | "node_modules/express": {
698 | "version": "4.21.2",
699 | "resolved": "https://registry.npmjs.org/express/-/express-4.21.2.tgz",
700 | "integrity": "sha512-28HqgMZAmih1Czt9ny7qr6ek2qddF4FclbMzwhCREB6OFfH+rXAnuNCwo1/wFvrtbgsQDb4kSbX9de9lFbrXnA==",
701 | "license": "MIT",
702 | "dependencies": {
703 | "accepts": "~1.3.8",
704 | "array-flatten": "1.1.1",
705 | "body-parser": "1.20.3",
706 | "content-disposition": "0.5.4",
707 | "content-type": "~1.0.4",
708 | "cookie": "0.7.1",
709 | "cookie-signature": "1.0.6",
710 | "debug": "2.6.9",
711 | "depd": "2.0.0",
712 | "encodeurl": "~2.0.0",
713 | "escape-html": "~1.0.3",
714 | "etag": "~1.8.1",
715 | "finalhandler": "1.3.1",
716 | "fresh": "0.5.2",
717 | "http-errors": "2.0.0",
718 | "merge-descriptors": "1.0.3",
719 | "methods": "~1.1.2",
720 | "on-finished": "2.4.1",
721 | "parseurl": "~1.3.3",
722 | "path-to-regexp": "0.1.12",
723 | "proxy-addr": "~2.0.7",
724 | "qs": "6.13.0",
725 | "range-parser": "~1.2.1",
726 | "safe-buffer": "5.2.1",
727 | "send": "0.19.0",
728 | "serve-static": "1.16.2",
729 | "setprototypeof": "1.2.0",
730 | "statuses": "2.0.1",
731 | "type-is": "~1.6.18",
732 | "utils-merge": "1.0.1",
733 | "vary": "~1.1.2"
734 | },
735 | "engines": {
736 | "node": ">= 0.10.0"
737 | },
738 | "funding": {
739 | "type": "opencollective",
740 | "url": "https://opencollective.com/express"
741 | }
742 | },
743 | "node_modules/fast-deep-equal": {
744 | "version": "3.1.3",
745 | "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
746 | "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
747 | "license": "MIT"
748 | },
749 | "node_modules/filelist": {
750 | "version": "1.0.4",
751 | "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz",
752 | "integrity": "sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==",
753 | "license": "Apache-2.0",
754 | "dependencies": {
755 | "minimatch": "^5.0.1"
756 | }
757 | },
758 | "node_modules/filelist/node_modules/brace-expansion": {
759 | "version": "2.0.1",
760 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
761 | "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
762 | "license": "MIT",
763 | "dependencies": {
764 | "balanced-match": "^1.0.0"
765 | }
766 | },
767 | "node_modules/filelist/node_modules/minimatch": {
768 | "version": "5.1.6",
769 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz",
770 | "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==",
771 | "license": "ISC",
772 | "dependencies": {
773 | "brace-expansion": "^2.0.1"
774 | },
775 | "engines": {
776 | "node": ">=10"
777 | }
778 | },
779 | "node_modules/fill-range": {
780 | "version": "7.1.1",
781 | "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz",
782 | "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==",
783 | "dev": true,
784 | "license": "MIT",
785 | "dependencies": {
786 | "to-regex-range": "^5.0.1"
787 | },
788 | "engines": {
789 | "node": ">=8"
790 | }
791 | },
792 | "node_modules/finalhandler": {
793 | "version": "1.3.1",
794 | "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.3.1.tgz",
795 | "integrity": "sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==",
796 | "license": "MIT",
797 | "dependencies": {
798 | "debug": "2.6.9",
799 | "encodeurl": "~2.0.0",
800 | "escape-html": "~1.0.3",
801 | "on-finished": "2.4.1",
802 | "parseurl": "~1.3.3",
803 | "statuses": "2.0.1",
804 | "unpipe": "~1.0.0"
805 | },
806 | "engines": {
807 | "node": ">= 0.8"
808 | }
809 | },
810 | "node_modules/follow-redirects": {
811 | "version": "1.15.9",
812 | "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.9.tgz",
813 | "integrity": "sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==",
814 | "funding": [
815 | {
816 | "type": "individual",
817 | "url": "https://github.com/sponsors/RubenVerborgh"
818 | }
819 | ],
820 | "license": "MIT",
821 | "engines": {
822 | "node": ">=4.0"
823 | },
824 | "peerDependenciesMeta": {
825 | "debug": {
826 | "optional": true
827 | }
828 | }
829 | },
830 | "node_modules/form-data": {
831 | "version": "4.0.2",
832 | "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.2.tgz",
833 | "integrity": "sha512-hGfm/slu0ZabnNt4oaRZ6uREyfCj6P4fT/n6A1rGV+Z0VdGXjfOhVUpkn6qVQONHGIFwmveGXyDs75+nr6FM8w==",
834 | "license": "MIT",
835 | "dependencies": {
836 | "asynckit": "^0.4.0",
837 | "combined-stream": "^1.0.8",
838 | "es-set-tostringtag": "^2.1.0",
839 | "mime-types": "^2.1.12"
840 | },
841 | "engines": {
842 | "node": ">= 6"
843 | }
844 | },
845 | "node_modules/forwarded": {
846 | "version": "0.2.0",
847 | "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz",
848 | "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==",
849 | "license": "MIT",
850 | "engines": {
851 | "node": ">= 0.6"
852 | }
853 | },
854 | "node_modules/fresh": {
855 | "version": "0.5.2",
856 | "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz",
857 | "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==",
858 | "license": "MIT",
859 | "engines": {
860 | "node": ">= 0.6"
861 | }
862 | },
863 | "node_modules/fsevents": {
864 | "version": "2.3.3",
865 | "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz",
866 | "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==",
867 | "dev": true,
868 | "hasInstallScript": true,
869 | "license": "MIT",
870 | "optional": true,
871 | "os": [
872 | "darwin"
873 | ],
874 | "engines": {
875 | "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
876 | }
877 | },
878 | "node_modules/function-bind": {
879 | "version": "1.1.2",
880 | "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz",
881 | "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==",
882 | "license": "MIT",
883 | "funding": {
884 | "url": "https://github.com/sponsors/ljharb"
885 | }
886 | },
887 | "node_modules/get-intrinsic": {
888 | "version": "1.2.7",
889 | "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.7.tgz",
890 | "integrity": "sha512-VW6Pxhsrk0KAOqs3WEd0klDiF/+V7gQOpAvY1jVU/LHmaD/kQO4523aiJuikX/QAKYiW6x8Jh+RJej1almdtCA==",
891 | "license": "MIT",
892 | "dependencies": {
893 | "call-bind-apply-helpers": "^1.0.1",
894 | "es-define-property": "^1.0.1",
895 | "es-errors": "^1.3.0",
896 | "es-object-atoms": "^1.0.0",
897 | "function-bind": "^1.1.2",
898 | "get-proto": "^1.0.0",
899 | "gopd": "^1.2.0",
900 | "has-symbols": "^1.1.0",
901 | "hasown": "^2.0.2",
902 | "math-intrinsics": "^1.1.0"
903 | },
904 | "engines": {
905 | "node": ">= 0.4"
906 | },
907 | "funding": {
908 | "url": "https://github.com/sponsors/ljharb"
909 | }
910 | },
911 | "node_modules/get-proto": {
912 | "version": "1.0.1",
913 | "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz",
914 | "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==",
915 | "license": "MIT",
916 | "dependencies": {
917 | "dunder-proto": "^1.0.1",
918 | "es-object-atoms": "^1.0.0"
919 | },
920 | "engines": {
921 | "node": ">= 0.4"
922 | }
923 | },
924 | "node_modules/glob-parent": {
925 | "version": "5.1.2",
926 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
927 | "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
928 | "dev": true,
929 | "license": "ISC",
930 | "dependencies": {
931 | "is-glob": "^4.0.1"
932 | },
933 | "engines": {
934 | "node": ">= 6"
935 | }
936 | },
937 | "node_modules/gopd": {
938 | "version": "1.2.0",
939 | "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz",
940 | "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==",
941 | "license": "MIT",
942 | "engines": {
943 | "node": ">= 0.4"
944 | },
945 | "funding": {
946 | "url": "https://github.com/sponsors/ljharb"
947 | }
948 | },
949 | "node_modules/has-flag": {
950 | "version": "4.0.0",
951 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
952 | "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
953 | "license": "MIT",
954 | "engines": {
955 | "node": ">=8"
956 | }
957 | },
958 | "node_modules/has-symbols": {
959 | "version": "1.1.0",
960 | "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz",
961 | "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==",
962 | "license": "MIT",
963 | "engines": {
964 | "node": ">= 0.4"
965 | },
966 | "funding": {
967 | "url": "https://github.com/sponsors/ljharb"
968 | }
969 | },
970 | "node_modules/has-tostringtag": {
971 | "version": "1.0.2",
972 | "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz",
973 | "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==",
974 | "license": "MIT",
975 | "dependencies": {
976 | "has-symbols": "^1.0.3"
977 | },
978 | "engines": {
979 | "node": ">= 0.4"
980 | },
981 | "funding": {
982 | "url": "https://github.com/sponsors/ljharb"
983 | }
984 | },
985 | "node_modules/hasown": {
986 | "version": "2.0.2",
987 | "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz",
988 | "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==",
989 | "license": "MIT",
990 | "dependencies": {
991 | "function-bind": "^1.1.2"
992 | },
993 | "engines": {
994 | "node": ">= 0.4"
995 | }
996 | },
997 | "node_modules/http-errors": {
998 | "version": "2.0.0",
999 | "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz",
1000 | "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==",
1001 | "license": "MIT",
1002 | "dependencies": {
1003 | "depd": "2.0.0",
1004 | "inherits": "2.0.4",
1005 | "setprototypeof": "1.2.0",
1006 | "statuses": "2.0.1",
1007 | "toidentifier": "1.0.1"
1008 | },
1009 | "engines": {
1010 | "node": ">= 0.8"
1011 | }
1012 | },
1013 | "node_modules/iconv-lite": {
1014 | "version": "0.4.24",
1015 | "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
1016 | "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
1017 | "license": "MIT",
1018 | "dependencies": {
1019 | "safer-buffer": ">= 2.1.2 < 3"
1020 | },
1021 | "engines": {
1022 | "node": ">=0.10.0"
1023 | }
1024 | },
1025 | "node_modules/ignore-by-default": {
1026 | "version": "1.0.1",
1027 | "resolved": "https://registry.npmjs.org/ignore-by-default/-/ignore-by-default-1.0.1.tgz",
1028 | "integrity": "sha512-Ius2VYcGNk7T90CppJqcIkS5ooHUZyIQK+ClZfMfMNFEF9VSE73Fq+906u/CWu92x4gzZMWOwfFYckPObzdEbA==",
1029 | "dev": true,
1030 | "license": "ISC"
1031 | },
1032 | "node_modules/inherits": {
1033 | "version": "2.0.4",
1034 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
1035 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
1036 | "license": "ISC"
1037 | },
1038 | "node_modules/ipaddr.js": {
1039 | "version": "1.9.1",
1040 | "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz",
1041 | "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==",
1042 | "license": "MIT",
1043 | "engines": {
1044 | "node": ">= 0.10"
1045 | }
1046 | },
1047 | "node_modules/is-binary-path": {
1048 | "version": "2.1.0",
1049 | "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz",
1050 | "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==",
1051 | "dev": true,
1052 | "license": "MIT",
1053 | "dependencies": {
1054 | "binary-extensions": "^2.0.0"
1055 | },
1056 | "engines": {
1057 | "node": ">=8"
1058 | }
1059 | },
1060 | "node_modules/is-extglob": {
1061 | "version": "2.1.1",
1062 | "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
1063 | "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==",
1064 | "dev": true,
1065 | "license": "MIT",
1066 | "engines": {
1067 | "node": ">=0.10.0"
1068 | }
1069 | },
1070 | "node_modules/is-glob": {
1071 | "version": "4.0.3",
1072 | "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
1073 | "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
1074 | "dev": true,
1075 | "license": "MIT",
1076 | "dependencies": {
1077 | "is-extglob": "^2.1.1"
1078 | },
1079 | "engines": {
1080 | "node": ">=0.10.0"
1081 | }
1082 | },
1083 | "node_modules/is-number": {
1084 | "version": "7.0.0",
1085 | "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
1086 | "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
1087 | "dev": true,
1088 | "license": "MIT",
1089 | "engines": {
1090 | "node": ">=0.12.0"
1091 | }
1092 | },
1093 | "node_modules/jake": {
1094 | "version": "10.9.2",
1095 | "resolved": "https://registry.npmjs.org/jake/-/jake-10.9.2.tgz",
1096 | "integrity": "sha512-2P4SQ0HrLQ+fw6llpLnOaGAvN2Zu6778SJMrCUwns4fOoG9ayrTiZk3VV8sCPkVZF8ab0zksVpS8FDY5pRCNBA==",
1097 | "license": "Apache-2.0",
1098 | "dependencies": {
1099 | "async": "^3.2.3",
1100 | "chalk": "^4.0.2",
1101 | "filelist": "^1.0.4",
1102 | "minimatch": "^3.1.2"
1103 | },
1104 | "bin": {
1105 | "jake": "bin/cli.js"
1106 | },
1107 | "engines": {
1108 | "node": ">=10"
1109 | }
1110 | },
1111 | "node_modules/lodash": {
1112 | "version": "4.17.21",
1113 | "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
1114 | "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==",
1115 | "license": "MIT"
1116 | },
1117 | "node_modules/lodash.snakecase": {
1118 | "version": "4.1.1",
1119 | "resolved": "https://registry.npmjs.org/lodash.snakecase/-/lodash.snakecase-4.1.1.tgz",
1120 | "integrity": "sha512-QZ1d4xoBHYUeuouhEq3lk3Uq7ldgyFXGBhg04+oRLnIz8o9T65Eh+8YdroUwn846zchkA9yDsDl5CVVaV2nqYw==",
1121 | "license": "MIT"
1122 | },
1123 | "node_modules/magic-bytes.js": {
1124 | "version": "1.10.0",
1125 | "resolved": "https://registry.npmjs.org/magic-bytes.js/-/magic-bytes.js-1.10.0.tgz",
1126 | "integrity": "sha512-/k20Lg2q8LE5xiaaSkMXk4sfvI+9EGEykFS4b0CHHGWqDYU0bGUFSwchNOMA56D7TCs9GwVTkqe9als1/ns8UQ==",
1127 | "license": "MIT"
1128 | },
1129 | "node_modules/math-intrinsics": {
1130 | "version": "1.1.0",
1131 | "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz",
1132 | "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==",
1133 | "license": "MIT",
1134 | "engines": {
1135 | "node": ">= 0.4"
1136 | }
1137 | },
1138 | "node_modules/media-typer": {
1139 | "version": "0.3.0",
1140 | "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
1141 | "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==",
1142 | "license": "MIT",
1143 | "engines": {
1144 | "node": ">= 0.6"
1145 | }
1146 | },
1147 | "node_modules/merge-descriptors": {
1148 | "version": "1.0.3",
1149 | "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.3.tgz",
1150 | "integrity": "sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==",
1151 | "license": "MIT",
1152 | "funding": {
1153 | "url": "https://github.com/sponsors/sindresorhus"
1154 | }
1155 | },
1156 | "node_modules/methods": {
1157 | "version": "1.1.2",
1158 | "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz",
1159 | "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==",
1160 | "license": "MIT",
1161 | "engines": {
1162 | "node": ">= 0.6"
1163 | }
1164 | },
1165 | "node_modules/mime": {
1166 | "version": "1.6.0",
1167 | "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz",
1168 | "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==",
1169 | "license": "MIT",
1170 | "bin": {
1171 | "mime": "cli.js"
1172 | },
1173 | "engines": {
1174 | "node": ">=4"
1175 | }
1176 | },
1177 | "node_modules/mime-db": {
1178 | "version": "1.52.0",
1179 | "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
1180 | "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
1181 | "license": "MIT",
1182 | "engines": {
1183 | "node": ">= 0.6"
1184 | }
1185 | },
1186 | "node_modules/mime-types": {
1187 | "version": "2.1.35",
1188 | "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
1189 | "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
1190 | "license": "MIT",
1191 | "dependencies": {
1192 | "mime-db": "1.52.0"
1193 | },
1194 | "engines": {
1195 | "node": ">= 0.6"
1196 | }
1197 | },
1198 | "node_modules/minimatch": {
1199 | "version": "3.1.2",
1200 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
1201 | "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
1202 | "license": "ISC",
1203 | "dependencies": {
1204 | "brace-expansion": "^1.1.7"
1205 | },
1206 | "engines": {
1207 | "node": "*"
1208 | }
1209 | },
1210 | "node_modules/ms": {
1211 | "version": "2.0.0",
1212 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
1213 | "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
1214 | "license": "MIT"
1215 | },
1216 | "node_modules/negotiator": {
1217 | "version": "0.6.3",
1218 | "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz",
1219 | "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==",
1220 | "license": "MIT",
1221 | "engines": {
1222 | "node": ">= 0.6"
1223 | }
1224 | },
1225 | "node_modules/nodemon": {
1226 | "version": "3.1.9",
1227 | "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-3.1.9.tgz",
1228 | "integrity": "sha512-hdr1oIb2p6ZSxu3PB2JWWYS7ZQ0qvaZsc3hK8DR8f02kRzc8rjYmxAIvdz+aYC+8F2IjNaB7HMcSDg8nQpJxyg==",
1229 | "dev": true,
1230 | "license": "MIT",
1231 | "dependencies": {
1232 | "chokidar": "^3.5.2",
1233 | "debug": "^4",
1234 | "ignore-by-default": "^1.0.1",
1235 | "minimatch": "^3.1.2",
1236 | "pstree.remy": "^1.1.8",
1237 | "semver": "^7.5.3",
1238 | "simple-update-notifier": "^2.0.0",
1239 | "supports-color": "^5.5.0",
1240 | "touch": "^3.1.0",
1241 | "undefsafe": "^2.0.5"
1242 | },
1243 | "bin": {
1244 | "nodemon": "bin/nodemon.js"
1245 | },
1246 | "engines": {
1247 | "node": ">=10"
1248 | },
1249 | "funding": {
1250 | "type": "opencollective",
1251 | "url": "https://opencollective.com/nodemon"
1252 | }
1253 | },
1254 | "node_modules/nodemon/node_modules/debug": {
1255 | "version": "4.4.0",
1256 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz",
1257 | "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==",
1258 | "dev": true,
1259 | "license": "MIT",
1260 | "dependencies": {
1261 | "ms": "^2.1.3"
1262 | },
1263 | "engines": {
1264 | "node": ">=6.0"
1265 | },
1266 | "peerDependenciesMeta": {
1267 | "supports-color": {
1268 | "optional": true
1269 | }
1270 | }
1271 | },
1272 | "node_modules/nodemon/node_modules/has-flag": {
1273 | "version": "3.0.0",
1274 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
1275 | "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==",
1276 | "dev": true,
1277 | "license": "MIT",
1278 | "engines": {
1279 | "node": ">=4"
1280 | }
1281 | },
1282 | "node_modules/nodemon/node_modules/ms": {
1283 | "version": "2.1.3",
1284 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
1285 | "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
1286 | "dev": true,
1287 | "license": "MIT"
1288 | },
1289 | "node_modules/nodemon/node_modules/supports-color": {
1290 | "version": "5.5.0",
1291 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
1292 | "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
1293 | "dev": true,
1294 | "license": "MIT",
1295 | "dependencies": {
1296 | "has-flag": "^3.0.0"
1297 | },
1298 | "engines": {
1299 | "node": ">=4"
1300 | }
1301 | },
1302 | "node_modules/normalize-path": {
1303 | "version": "3.0.0",
1304 | "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
1305 | "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==",
1306 | "dev": true,
1307 | "license": "MIT",
1308 | "engines": {
1309 | "node": ">=0.10.0"
1310 | }
1311 | },
1312 | "node_modules/object-assign": {
1313 | "version": "4.1.1",
1314 | "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
1315 | "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==",
1316 | "license": "MIT",
1317 | "engines": {
1318 | "node": ">=0.10.0"
1319 | }
1320 | },
1321 | "node_modules/object-inspect": {
1322 | "version": "1.13.4",
1323 | "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz",
1324 | "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==",
1325 | "license": "MIT",
1326 | "engines": {
1327 | "node": ">= 0.4"
1328 | },
1329 | "funding": {
1330 | "url": "https://github.com/sponsors/ljharb"
1331 | }
1332 | },
1333 | "node_modules/on-finished": {
1334 | "version": "2.4.1",
1335 | "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz",
1336 | "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==",
1337 | "license": "MIT",
1338 | "dependencies": {
1339 | "ee-first": "1.1.1"
1340 | },
1341 | "engines": {
1342 | "node": ">= 0.8"
1343 | }
1344 | },
1345 | "node_modules/parseurl": {
1346 | "version": "1.3.3",
1347 | "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz",
1348 | "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==",
1349 | "license": "MIT",
1350 | "engines": {
1351 | "node": ">= 0.8"
1352 | }
1353 | },
1354 | "node_modules/path-to-regexp": {
1355 | "version": "0.1.12",
1356 | "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.12.tgz",
1357 | "integrity": "sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ==",
1358 | "license": "MIT"
1359 | },
1360 | "node_modules/picomatch": {
1361 | "version": "2.3.1",
1362 | "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
1363 | "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
1364 | "dev": true,
1365 | "license": "MIT",
1366 | "engines": {
1367 | "node": ">=8.6"
1368 | },
1369 | "funding": {
1370 | "url": "https://github.com/sponsors/jonschlinkert"
1371 | }
1372 | },
1373 | "node_modules/proxy-addr": {
1374 | "version": "2.0.7",
1375 | "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz",
1376 | "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==",
1377 | "license": "MIT",
1378 | "dependencies": {
1379 | "forwarded": "0.2.0",
1380 | "ipaddr.js": "1.9.1"
1381 | },
1382 | "engines": {
1383 | "node": ">= 0.10"
1384 | }
1385 | },
1386 | "node_modules/proxy-from-env": {
1387 | "version": "1.1.0",
1388 | "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz",
1389 | "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==",
1390 | "license": "MIT"
1391 | },
1392 | "node_modules/pstree.remy": {
1393 | "version": "1.1.8",
1394 | "resolved": "https://registry.npmjs.org/pstree.remy/-/pstree.remy-1.1.8.tgz",
1395 | "integrity": "sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w==",
1396 | "dev": true,
1397 | "license": "MIT"
1398 | },
1399 | "node_modules/qs": {
1400 | "version": "6.13.0",
1401 | "resolved": "https://registry.npmjs.org/qs/-/qs-6.13.0.tgz",
1402 | "integrity": "sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==",
1403 | "license": "BSD-3-Clause",
1404 | "dependencies": {
1405 | "side-channel": "^1.0.6"
1406 | },
1407 | "engines": {
1408 | "node": ">=0.6"
1409 | },
1410 | "funding": {
1411 | "url": "https://github.com/sponsors/ljharb"
1412 | }
1413 | },
1414 | "node_modules/range-parser": {
1415 | "version": "1.2.1",
1416 | "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz",
1417 | "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==",
1418 | "license": "MIT",
1419 | "engines": {
1420 | "node": ">= 0.6"
1421 | }
1422 | },
1423 | "node_modules/raw-body": {
1424 | "version": "2.5.2",
1425 | "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz",
1426 | "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==",
1427 | "license": "MIT",
1428 | "dependencies": {
1429 | "bytes": "3.1.2",
1430 | "http-errors": "2.0.0",
1431 | "iconv-lite": "0.4.24",
1432 | "unpipe": "1.0.0"
1433 | },
1434 | "engines": {
1435 | "node": ">= 0.8"
1436 | }
1437 | },
1438 | "node_modules/readdirp": {
1439 | "version": "3.6.0",
1440 | "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz",
1441 | "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==",
1442 | "dev": true,
1443 | "license": "MIT",
1444 | "dependencies": {
1445 | "picomatch": "^2.2.1"
1446 | },
1447 | "engines": {
1448 | "node": ">=8.10.0"
1449 | }
1450 | },
1451 | "node_modules/safe-buffer": {
1452 | "version": "5.2.1",
1453 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
1454 | "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
1455 | "funding": [
1456 | {
1457 | "type": "github",
1458 | "url": "https://github.com/sponsors/feross"
1459 | },
1460 | {
1461 | "type": "patreon",
1462 | "url": "https://www.patreon.com/feross"
1463 | },
1464 | {
1465 | "type": "consulting",
1466 | "url": "https://feross.org/support"
1467 | }
1468 | ],
1469 | "license": "MIT"
1470 | },
1471 | "node_modules/safer-buffer": {
1472 | "version": "2.1.2",
1473 | "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
1474 | "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==",
1475 | "license": "MIT"
1476 | },
1477 | "node_modules/semver": {
1478 | "version": "7.7.1",
1479 | "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz",
1480 | "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==",
1481 | "dev": true,
1482 | "license": "ISC",
1483 | "bin": {
1484 | "semver": "bin/semver.js"
1485 | },
1486 | "engines": {
1487 | "node": ">=10"
1488 | }
1489 | },
1490 | "node_modules/send": {
1491 | "version": "0.19.0",
1492 | "resolved": "https://registry.npmjs.org/send/-/send-0.19.0.tgz",
1493 | "integrity": "sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==",
1494 | "license": "MIT",
1495 | "dependencies": {
1496 | "debug": "2.6.9",
1497 | "depd": "2.0.0",
1498 | "destroy": "1.2.0",
1499 | "encodeurl": "~1.0.2",
1500 | "escape-html": "~1.0.3",
1501 | "etag": "~1.8.1",
1502 | "fresh": "0.5.2",
1503 | "http-errors": "2.0.0",
1504 | "mime": "1.6.0",
1505 | "ms": "2.1.3",
1506 | "on-finished": "2.4.1",
1507 | "range-parser": "~1.2.1",
1508 | "statuses": "2.0.1"
1509 | },
1510 | "engines": {
1511 | "node": ">= 0.8.0"
1512 | }
1513 | },
1514 | "node_modules/send/node_modules/encodeurl": {
1515 | "version": "1.0.2",
1516 | "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
1517 | "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==",
1518 | "license": "MIT",
1519 | "engines": {
1520 | "node": ">= 0.8"
1521 | }
1522 | },
1523 | "node_modules/send/node_modules/ms": {
1524 | "version": "2.1.3",
1525 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
1526 | "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
1527 | "license": "MIT"
1528 | },
1529 | "node_modules/serve-static": {
1530 | "version": "1.16.2",
1531 | "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.2.tgz",
1532 | "integrity": "sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==",
1533 | "license": "MIT",
1534 | "dependencies": {
1535 | "encodeurl": "~2.0.0",
1536 | "escape-html": "~1.0.3",
1537 | "parseurl": "~1.3.3",
1538 | "send": "0.19.0"
1539 | },
1540 | "engines": {
1541 | "node": ">= 0.8.0"
1542 | }
1543 | },
1544 | "node_modules/setprototypeof": {
1545 | "version": "1.2.0",
1546 | "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz",
1547 | "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==",
1548 | "license": "ISC"
1549 | },
1550 | "node_modules/side-channel": {
1551 | "version": "1.1.0",
1552 | "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz",
1553 | "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==",
1554 | "license": "MIT",
1555 | "dependencies": {
1556 | "es-errors": "^1.3.0",
1557 | "object-inspect": "^1.13.3",
1558 | "side-channel-list": "^1.0.0",
1559 | "side-channel-map": "^1.0.1",
1560 | "side-channel-weakmap": "^1.0.2"
1561 | },
1562 | "engines": {
1563 | "node": ">= 0.4"
1564 | },
1565 | "funding": {
1566 | "url": "https://github.com/sponsors/ljharb"
1567 | }
1568 | },
1569 | "node_modules/side-channel-list": {
1570 | "version": "1.0.0",
1571 | "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz",
1572 | "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==",
1573 | "license": "MIT",
1574 | "dependencies": {
1575 | "es-errors": "^1.3.0",
1576 | "object-inspect": "^1.13.3"
1577 | },
1578 | "engines": {
1579 | "node": ">= 0.4"
1580 | },
1581 | "funding": {
1582 | "url": "https://github.com/sponsors/ljharb"
1583 | }
1584 | },
1585 | "node_modules/side-channel-map": {
1586 | "version": "1.0.1",
1587 | "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz",
1588 | "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==",
1589 | "license": "MIT",
1590 | "dependencies": {
1591 | "call-bound": "^1.0.2",
1592 | "es-errors": "^1.3.0",
1593 | "get-intrinsic": "^1.2.5",
1594 | "object-inspect": "^1.13.3"
1595 | },
1596 | "engines": {
1597 | "node": ">= 0.4"
1598 | },
1599 | "funding": {
1600 | "url": "https://github.com/sponsors/ljharb"
1601 | }
1602 | },
1603 | "node_modules/side-channel-weakmap": {
1604 | "version": "1.0.2",
1605 | "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz",
1606 | "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==",
1607 | "license": "MIT",
1608 | "dependencies": {
1609 | "call-bound": "^1.0.2",
1610 | "es-errors": "^1.3.0",
1611 | "get-intrinsic": "^1.2.5",
1612 | "object-inspect": "^1.13.3",
1613 | "side-channel-map": "^1.0.1"
1614 | },
1615 | "engines": {
1616 | "node": ">= 0.4"
1617 | },
1618 | "funding": {
1619 | "url": "https://github.com/sponsors/ljharb"
1620 | }
1621 | },
1622 | "node_modules/simple-update-notifier": {
1623 | "version": "2.0.0",
1624 | "resolved": "https://registry.npmjs.org/simple-update-notifier/-/simple-update-notifier-2.0.0.tgz",
1625 | "integrity": "sha512-a2B9Y0KlNXl9u/vsW6sTIu9vGEpfKu2wRV6l1H3XEas/0gUIzGzBoP/IouTcUQbm9JWZLH3COxyn03TYlFax6w==",
1626 | "dev": true,
1627 | "license": "MIT",
1628 | "dependencies": {
1629 | "semver": "^7.5.3"
1630 | },
1631 | "engines": {
1632 | "node": ">=10"
1633 | }
1634 | },
1635 | "node_modules/statuses": {
1636 | "version": "2.0.1",
1637 | "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz",
1638 | "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==",
1639 | "license": "MIT",
1640 | "engines": {
1641 | "node": ">= 0.8"
1642 | }
1643 | },
1644 | "node_modules/supports-color": {
1645 | "version": "7.2.0",
1646 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
1647 | "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
1648 | "license": "MIT",
1649 | "dependencies": {
1650 | "has-flag": "^4.0.0"
1651 | },
1652 | "engines": {
1653 | "node": ">=8"
1654 | }
1655 | },
1656 | "node_modules/to-regex-range": {
1657 | "version": "5.0.1",
1658 | "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
1659 | "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
1660 | "dev": true,
1661 | "license": "MIT",
1662 | "dependencies": {
1663 | "is-number": "^7.0.0"
1664 | },
1665 | "engines": {
1666 | "node": ">=8.0"
1667 | }
1668 | },
1669 | "node_modules/toidentifier": {
1670 | "version": "1.0.1",
1671 | "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz",
1672 | "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==",
1673 | "license": "MIT",
1674 | "engines": {
1675 | "node": ">=0.6"
1676 | }
1677 | },
1678 | "node_modules/touch": {
1679 | "version": "3.1.1",
1680 | "resolved": "https://registry.npmjs.org/touch/-/touch-3.1.1.tgz",
1681 | "integrity": "sha512-r0eojU4bI8MnHr8c5bNo7lJDdI2qXlWWJk6a9EAFG7vbhTjElYhBVS3/miuE0uOuoLdb8Mc/rVfsmm6eo5o9GA==",
1682 | "dev": true,
1683 | "license": "ISC",
1684 | "bin": {
1685 | "nodetouch": "bin/nodetouch.js"
1686 | }
1687 | },
1688 | "node_modules/ts-mixer": {
1689 | "version": "6.0.4",
1690 | "resolved": "https://registry.npmjs.org/ts-mixer/-/ts-mixer-6.0.4.tgz",
1691 | "integrity": "sha512-ufKpbmrugz5Aou4wcr5Wc1UUFWOLhq+Fm6qa6P0w0K5Qw2yhaUoiWszhCVuNQyNwrlGiscHOmqYoAox1PtvgjA==",
1692 | "license": "MIT"
1693 | },
1694 | "node_modules/tslib": {
1695 | "version": "2.8.1",
1696 | "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz",
1697 | "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==",
1698 | "license": "0BSD"
1699 | },
1700 | "node_modules/type-is": {
1701 | "version": "1.6.18",
1702 | "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz",
1703 | "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==",
1704 | "license": "MIT",
1705 | "dependencies": {
1706 | "media-typer": "0.3.0",
1707 | "mime-types": "~2.1.24"
1708 | },
1709 | "engines": {
1710 | "node": ">= 0.6"
1711 | }
1712 | },
1713 | "node_modules/undefsafe": {
1714 | "version": "2.0.5",
1715 | "resolved": "https://registry.npmjs.org/undefsafe/-/undefsafe-2.0.5.tgz",
1716 | "integrity": "sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA==",
1717 | "dev": true,
1718 | "license": "MIT"
1719 | },
1720 | "node_modules/undici": {
1721 | "version": "6.21.1",
1722 | "resolved": "https://registry.npmjs.org/undici/-/undici-6.21.1.tgz",
1723 | "integrity": "sha512-q/1rj5D0/zayJB2FraXdaWxbhWiNKDvu8naDT2dl1yTlvJp4BLtOcp2a5BvgGNQpYYJzau7tf1WgKv3b+7mqpQ==",
1724 | "license": "MIT",
1725 | "engines": {
1726 | "node": ">=18.17"
1727 | }
1728 | },
1729 | "node_modules/undici-types": {
1730 | "version": "6.20.0",
1731 | "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.20.0.tgz",
1732 | "integrity": "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==",
1733 | "license": "MIT"
1734 | },
1735 | "node_modules/unpipe": {
1736 | "version": "1.0.0",
1737 | "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
1738 | "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==",
1739 | "license": "MIT",
1740 | "engines": {
1741 | "node": ">= 0.8"
1742 | }
1743 | },
1744 | "node_modules/utils-merge": {
1745 | "version": "1.0.1",
1746 | "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz",
1747 | "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==",
1748 | "license": "MIT",
1749 | "engines": {
1750 | "node": ">= 0.4.0"
1751 | }
1752 | },
1753 | "node_modules/vary": {
1754 | "version": "1.1.2",
1755 | "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
1756 | "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==",
1757 | "license": "MIT",
1758 | "engines": {
1759 | "node": ">= 0.8"
1760 | }
1761 | },
1762 | "node_modules/ws": {
1763 | "version": "8.18.0",
1764 | "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.0.tgz",
1765 | "integrity": "sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==",
1766 | "license": "MIT",
1767 | "engines": {
1768 | "node": ">=10.0.0"
1769 | },
1770 | "peerDependencies": {
1771 | "bufferutil": "^4.0.1",
1772 | "utf-8-validate": ">=5.0.2"
1773 | },
1774 | "peerDependenciesMeta": {
1775 | "bufferutil": {
1776 | "optional": true
1777 | },
1778 | "utf-8-validate": {
1779 | "optional": true
1780 | }
1781 | }
1782 | }
1783 | }
1784 | }
1785 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "discord-embed-builder",
3 | "version": "1.0.0",
4 | "description": "Discord Embed Builder with Webhook Support",
5 | "main": "server.js",
6 | "scripts": {
7 | "start": "node server.js",
8 | "dev": "nodemon server.js",
9 | "build": "npm install"
10 | },
11 | "engines": {
12 | "node": ">=14.0.0"
13 | },
14 | "keywords": [
15 | "discord",
16 | "embed",
17 | "webhook"
18 | ],
19 | "author": "Parsher",
20 | "license": "ISC",
21 | "dependencies": {
22 | "axios": "^1.6.2",
23 | "cors": "^2.8.5",
24 | "discord.js": "^14.14.1",
25 | "dotenv": "^16.3.1",
26 | "ejs": "^3.1.9",
27 | "express": "^4.18.2"
28 | },
29 | "devDependencies": {
30 | "nodemon": "^3.1.9"
31 | }
32 | }
33 |
--------------------------------------------------------------------------------
/server.js:
--------------------------------------------------------------------------------
1 | const express = require('express');
2 | const cors = require('cors');
3 | const axios = require('axios');
4 | const { WebhookClient } = require('discord.js');
5 | const path = require('path');
6 | require('dotenv').config();
7 |
8 | const app = express();
9 |
10 | // Rate limiting için değişkenler
11 | const webhookCooldowns = new Map();
12 | const COOLDOWN_SECONDS = 5;
13 |
14 | // Middleware
15 | app.use(cors());
16 | app.use(express.json());
17 | app.use(express.urlencoded({ extended: true }));
18 |
19 | // Static dosya yolları - Basitleştirilmiş hali
20 | app.use(express.static('public'));
21 | app.use('/assets', express.static(path.join(__dirname, 'public/assets')));
22 |
23 | // View engine
24 | app.set('view engine', 'ejs');
25 | app.set('views', path.join(__dirname, 'views'));
26 |
27 | // Error handler
28 | app.use((err, req, res, next) => {
29 | console.error(err.stack);
30 | res.status(500).json({ error: 'Bir şeyler ters gitti!' });
31 | });
32 |
33 | // Ana sayfa
34 | app.get('/', (req, res) => {
35 | try {
36 | res.render('index');
37 | } catch (error) {
38 | console.error('Render hatası:', error);
39 | res.status(500).send('Sayfa yüklenirken bir hata oluştu');
40 | }
41 | });
42 |
43 | // Webhook bilgilerini getir
44 | app.get('/api/webhook-info', async (req, res) => {
45 | try {
46 | const { url } = req.query;
47 |
48 | if (!url) {
49 | return res.status(400).json({ error: 'Webhook URL required' });
50 | }
51 |
52 | // Webhook bilgilerini al
53 | const response = await axios.get(url);
54 |
55 | if (!response.data) {
56 | return res.status(400).json({ error: 'Geçersiz webhook URL' });
57 | }
58 |
59 | // Sadece gerekli bilgileri gönder
60 | res.json({
61 | name: response.data.name,
62 | avatar_url: response.data.avatar ? `https://cdn.discordapp.com/avatars/${response.data.id}/${response.data.avatar}.png` : 'https://cdn.discordapp.com/embed/avatars/0.png',
63 | channel_id: response.data.channel_id,
64 | guild_id: response.data.guild_id
65 | });
66 | } catch (error) {
67 | console.error('Webhook bilgi hatası:', error);
68 | res.status(500).json({ error: 'Webhook bilgileri alınamadı' });
69 | }
70 | });
71 |
72 | // Webhook'a embed gönder
73 | app.post('/api/send-webhook', async (req, res) => {
74 | try {
75 | const { url, embedData } = req.body;
76 |
77 | if (!url) {
78 | return res.status(400).json({ error: 'Webhook URL gerekli' });
79 | }
80 |
81 | // Cooldown kontrolü
82 | const now = Date.now();
83 | const lastUsed = webhookCooldowns.get(url);
84 |
85 | if (lastUsed) {
86 | const timeElapsed = now - lastUsed;
87 | const timeRemaining = (COOLDOWN_SECONDS * 1000) - timeElapsed;
88 |
89 | if (timeRemaining > 0) {
90 | return res.status(429).json({
91 | error: 'Please wait 5 seconds - Rate limit exceeded',
92 | message: `Lütfen ${Math.ceil(timeRemaining / 1000)} saniye bekleyin`,
93 | retryAfter: timeRemaining
94 | });
95 | }
96 | }
97 |
98 | // Webhook gönderme işlemi
99 | const webhookClient = new WebhookClient({ url });
100 | await webhookClient.send(embedData);
101 |
102 | // Cooldown güncelleme
103 | webhookCooldowns.set(url, now);
104 | setTimeout(() => webhookCooldowns.delete(url), COOLDOWN_SECONDS * 1000);
105 |
106 | res.json({ success: true });
107 | } catch (error) {
108 | console.error('Webhook gönderme hatası:', error);
109 | res.status(500).json({ error: error.message });
110 | }
111 | });
112 |
113 | const PORT = process.env.PORT || 3000;
114 | app.listen(PORT, () => {
115 | console.log(`Server http://localhost:${PORT} adresinde çalışıyor`);
116 | });
--------------------------------------------------------------------------------
/views/index.ejs:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 | Embed Builder
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
48 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
93 |
94 |
95 |
96 |
97 |
98 |
99 |
100 |
101 |
102 |
103 |
104 |
105 |
106 |
107 |
108 |
109 |
110 |
210 |
211 |
212 |
213 |
217 |
218 |
219 | Send
220 |
221 |
222 |
223 |
224 |
225 |
226 |
227 |
Message content
228 |
229 |
230 |
231 |
232 |
233 |
Embed 1
234 |
235 |
236 |
237 |
238 |
239 |
240 |
241 |
242 |
243 |
244 |
245 |
246 |
247 |
248 |
249 |
252 |
253 |
262 |
263 |
264 |
265 |
266 |
267 |
268 |
269 |
270 |
271 |
272 |
273 |
274 |
275 |
276 |
277 |
278 |
279 |
280 |
281 |
282 |
283 |
287 |
290 |
291 |
292 |
293 |
296 |
297 |
298 |
299 |
300 |
301 |
302 |
303 |
304 |
305 |
306 |
307 |
308 |
309 |
310 |
311 | Inline
312 |
313 |
314 |
315 |
316 |
317 |
318 |
319 |
320 |
Remove
321 |
322 |
323 |
324 |
325 |
New Field
326 |
327 |
328 |
329 |
330 |
331 |
332 |
333 |
334 |
335 |
336 |
337 |
338 |
339 |
340 |
341 |
342 |
343 |
344 |
345 |
346 |
347 |
348 |
349 |
350 |
351 |
352 |
353 |
354 |
355 |
356 |
357 |
360 |
361 |
362 |
363 |
364 |
365 |
366 |
367 |
368 |
369 |
370 |
371 |
372 |
373 |
374 |
375 |
376 |
377 |
378 |
379 |
380 |
381 |
382 |
383 |
384 |
385 |
386 |
387 |
388 |
389 |
390 |
393 |
394 |
395 |
396 |
397 |
398 |
399 |
400 |
401 |
402 |
403 |
404 |
405 |
406 |
407 |
408 |
409 |
410 |
411 |
412 |
413 |
414 |
415 |
416 |
417 |
418 |
419 |
420 |
421 |
422 |
423 |
426 |
427 |
428 |
429 |
430 |
431 |
432 |
433 |
434 |
435 |
436 |
437 |
438 |
439 |
440 |
441 |
442 |
443 |
444 |
445 |
446 |
447 |
448 |
449 |
450 |
451 |
452 |
453 |
454 |
455 |
456 |
465 |
466 |
467 |
468 |
473 |
Add embed
474 |
475 |
476 |
477 |
478 |
479 |
480 |
481 |
482 |
483 | #
484 |
485 |
486 |
487 |
488 |
489 |
490 |
491 |
492 |
493 |
494 |
495 |
496 |
497 |
498 |
499 |
500 |
501 |
502 |
503 |
504 |
505 |
506 |
507 |
508 |
509 |
510 |
511 |
512 |
513 |
514 |
515 |
516 |
517 |
518 |
519 |
520 |
521 |
522 |
523 |
524 |
525 |
526 |
527 |
528 |
529 |
530 |
531 |
532 |
533 |
534 |
535 |
Embed Colour
536 |
Pick the embed colour
537 |
538 |
539 |
540 |
541 |
542 |
543 |
544 |
545 |
546 |
547 |
548 |
549 |
550 |
551 |
552 |
553 |
554 |
555 |
556 |
557 |
558 |
559 |
560 |
561 | Discord Bot
562 |
563 |
564 |
565 |
566 | APP
567 |
568 |
569 |
570 |
571 |
572 |
573 |
574 |
575 |
576 |
577 |
578 |
579 |
590 |
591 |
592 |
593 |
594 |
595 |
596 |
597 |
598 |
599 |
600 |
601 |
602 |
603 |
604 |
605 |
Nothing here
606 |
607 |
608 |
There is an error
609 |
610 |
611 |
612 |
613 |
614 |
615 |
--------------------------------------------------------------------------------