├── .gitignore
├── LICENSE
├── README.md
├── controllers
└── api
│ ├── imageController.js
│ └── textController.js
├── data
└── api
│ ├── image.json
│ └── text.json
├── helpers
└── getRandom.js
├── index.js
├── package.json
├── routes
└── api
│ ├── image.js
│ └── text.js
├── vercel.json
└── yarn.lock
/.gitignore:
--------------------------------------------------------------------------------
1 | /node_modules
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | Copyright (c) 2021 ardhptr21
2 |
3 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
4 |
5 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
6 |
7 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
8 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 |
2 |
3 | # Candaan API 🤣
4 |
5 | **Candaan API** merupakan Rest API yang dibuat untuk mendapatkan beberapa jokes jokes receh dari Indonesia, semua data data yang ada di **Candaan API** diambil dari internet yang kemudian dikumpulkan menjadi satu, untuk dibuat Rest API
6 |
7 | [](https://github.com/tterb/atomic-design-ui/blob/master/LICENSEs)
8 | [](https://github.com/ardhptr21/)
9 |
10 |
11 |
12 | # Endpoint 🔗
13 |
14 | **BASE URL: [https://candaan-api.vercel.app](https://candaan-api.vercel.app)**
15 |
16 | | Endpoint | Description | Parameter | Method |
17 | | ------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------- | ------ |
18 | | `/` | Menampilkan informasi **Candaan API** | NO | GET |
19 | | `/api/text` | Mendapatkan semua data candaan berupa `array of string` sebanyak data yang ada | NO | GET |
20 | | `/api/text/random` | Mendapatkan satu data candaan secara random berupa `string` jika tidak menyertakan query `count`, dan jika menyertakan query `count` berupa `number` akan mengembalikan data random berupa `array of string` sebanyak value dari query `count` | `count` | GET |
21 | | `/api/image` | Mendapatkan semua data candaan berupa `array of object` sebanyak data yang ada | NO | GET |
22 | | `/api/image/random` | Mendapatkan satu data candaan secara random berupa `object` jika tidak menyertakan query `count`, dan jika menyertakan query `count` berupa `number` akan mengembalikan data random berupa `array of object` sebanyak value dari query `count` | `count` | GET |
23 |
24 | # Contoh 💻
25 |
26 | ### **Mendapatkan Semua Data `Text`**
27 |
28 | **Request**
29 |
30 | ```javascript
31 | // Melakukan request data text menggunakan Fetch API Javascript
32 | fetch("https://candaan-api.vecel.app/api/text")
33 | .then((response) => response.json())
34 | .then((result) => console.log(result));
35 | ```
36 |
37 | **Response**
38 |
39 | ```json
40 | // Hasil response data text setelah melakukan request
41 | {
42 | "status": 200,
43 | "total": 100,
44 | "end_point": "/api/text",
45 | "method": "GET",
46 | "data": [
47 | "Gula gula apa yang bukan gula? Gula aren't xixixi, belum paham? coba google translate dulu aokwoakwoak",
48 | "Barusan saya mau masak, tapi tiba tiba pancinya jalan sendiri nggak tau ke mana, ehh ternyata itu Panci Petualang..... Panji Petualang maksudnya hehehe",
49 | "Motivasi hari ini: kalo kamu masih diselimuti masalah berarti kamu manusia, karena kalo kamu diselimuti wijen berarti onde-onde",
50 | "Apa bener kalo kita ngisi bensin premium, motor kita nggak ada iklannya? wkwkwkkw",
51 | "Kalo mau manasin motor enaknya direbus apa digoreng?!!",
52 | "Pohon pisang kalau dikagetin copot gak yahh jantungnya?",
53 | "Mau nanya nih, kalau baju tidur bangunnya jam berapa, ya?",
54 | "Kemarin anak saya demam, terus saya kompres ehh malah jadi rar",
55 | "Kalo cinta masih mandang fisik, suruh aja pacaran sama ikan karena ikan banyak fisiknya huhuhuhu",
56 | "Kenapa kalau naik motor maunya ketawa terus???? karena duduknya diatas jokes",
57 | "Pisang kalo masih panas namanya apa? Hihang Hoheng xixixii",
58 | "Benda yang kalau dibalik selalu rusak?? Kasur",
59 | ....
60 | ]
61 | }
62 | ```
63 |
64 | ---
65 |
66 | ### Mendapatkan Data `Image` Secara Random
67 |
68 | **Request**
69 |
70 | ```javascript
71 | // Melakukan request data image menggunakan Fetch API Javascript, tanpa parameter query count
72 | fetch("https://candaan-api.vecel.app/api/image/random")
73 | .then((response) => response.json())
74 | .then((result) => console.log(result));
75 |
76 | // Melakukan request data image menggunakan Fetch API Javascript, dengan parameter query count
77 | fetch("https://candaan-api.vecel.app/api/image/random?count=3")
78 | .then((response) => response.json())
79 | .then((result) => console.log(result));
80 | ```
81 |
82 | **Response**
83 |
84 | ```json
85 | // Hasil response data image setelah melakukan request, tanpa query count
86 | {
87 | "status": 200,
88 | "end_point": "/api/image/random/",
89 | "method": "GET",
90 | "data": {
91 | "url": "https://cdns.klimg.com/dream.co.id/resized/664xauto//real/2020/06/17/554361/meme-lucu.jpg",
92 | "source": "https://dream.co.id"
93 | }
94 | }
95 |
96 | // Hasil response data image setelah melakukan request, dengan query count
97 | {
98 | "status": 200,
99 | "end_point": "/api/image/random?count=3",
100 | "method": "GET",
101 | "data": [
102 | {
103 | "url": "https://cdn-brilio-net.akamaized.net/news/2018/06/02/143598/783255-jokes-anak-sd-ngeselin.jpg",
104 | "source": "https://brilio.net"
105 | },
106 | {
107 | "url": "https://cdn-brilio-net.akamaized.net/news/2020/09/29/192813/1320634-jokes-bapak-di-whatsapp.jpg",
108 | "source": "https://brilio.net"
109 | },
110 | {
111 | "url": "https://awsimages.detik.net.id/community/media/visual/2020/01/23/c83d8b90-916a-42f1-947d-42bf59a969af.jpeg?a=1",
112 | "source": "https://detik.com"
113 | }
114 | ]
115 | }
116 | ```
117 |
118 | # Thanks 😁
119 |
--------------------------------------------------------------------------------
/controllers/api/imageController.js:
--------------------------------------------------------------------------------
1 | const image = require("../../data/api/image.json");
2 | const getRandom = require("../../helpers/getRandom");
3 |
4 | module.exports.getAllImageJokes = (req, res) => {
5 | res.status(200).json({
6 | status: 200,
7 | total: image.length,
8 | end_point: req.originalUrl,
9 | method: req.method,
10 | data: image,
11 | });
12 | };
13 |
14 | module.exports.randomImageJoke = (req, res) => {
15 | const count = parseInt(req.query.count);
16 |
17 | if (req.query.count !== undefined) {
18 | if (isNaN(count)) {
19 | return res.status(400).json({
20 | status: 400,
21 | end_point: req.originalUrl,
22 | method: req.method,
23 | error: "The query param 'count' is not a valid number",
24 | });
25 | }
26 |
27 | if (count > 1) {
28 | const data = [];
29 | for (let i = 0; i < count; i++) {
30 | data.push(image[getRandom(image.length)]);
31 | }
32 |
33 | return res.status(200).json({
34 | status: 200,
35 | end_point: req.originalUrl,
36 | method: req.method,
37 | data,
38 | });
39 | }
40 | }
41 |
42 | res.status(200).json({
43 | status: 200,
44 | end_point: req.originalUrl,
45 | method: req.method,
46 | data: image[getRandom(image.length)],
47 | });
48 | };
49 |
--------------------------------------------------------------------------------
/controllers/api/textController.js:
--------------------------------------------------------------------------------
1 | const text = require("../../data/api/text.json");
2 | const getRandom = require("../../helpers/getRandom");
3 |
4 | module.exports.getAllTextJokes = (req, res) => {
5 | res.status(200).json({
6 | status: 200,
7 | total: text.length,
8 | end_point: req.originalUrl,
9 | method: req.method,
10 | data: text,
11 | });
12 | };
13 |
14 | module.exports.randomTextJoke = (req, res) => {
15 | const count = parseInt(req.query.count);
16 |
17 | if (req.query.count !== undefined) {
18 | if (isNaN(count)) {
19 | return res.status(400).json({
20 | status: 400,
21 | end_point: req.originalUrl,
22 | method: req.method,
23 | error: "The query param 'count' is not a valid number",
24 | });
25 | }
26 |
27 | if (count > 1) {
28 | const data = [];
29 | for (let i = 0; i < count; i++) {
30 | data.push(text[getRandom(text.length)]);
31 | }
32 |
33 | return res.status(200).json({
34 | status: 200,
35 | end_point: req.originalUrl,
36 | method: req.method,
37 | data,
38 | });
39 | }
40 | }
41 |
42 | res.status(200).json({
43 | status: 200,
44 | end_point: req.originalUrl,
45 | method: req.method,
46 | data: text[getRandom(text.length)],
47 | });
48 | };
49 |
--------------------------------------------------------------------------------
/data/api/image.json:
--------------------------------------------------------------------------------
1 | [
2 | {
3 | "url": "https://i.pinimg.com/564x/a8/62/03/a86203c0a81489bbf2994aa9d5515b75.jpg",
4 | "source": "https://pinterest.com"
5 | },
6 | {
7 | "url": "https://i.pinimg.com/564x/64/e1/72/64e1728289ec8382116a1779030e64b7.jpg",
8 | "source": "https://pinterest.com"
9 | },
10 | {
11 | "url": "https://awsimages.detik.net.id/community/media/visual/2020/01/23/c83d8b90-916a-42f1-947d-42bf59a969af.jpeg?a=1",
12 | "source": "https://detik.com"
13 | },
14 | {
15 | "url": "https://cdn.idntimes.com/content-images/community/2017/05/s1-e1ad26b8c542521ac828cd3703cc5de1.JPG",
16 | "source": "https://idntimes.com"
17 | },
18 | {
19 | "url": "https://cdn.idntimes.com/content-images/community/2017/05/s3-3255e7c51fe5fc1526d52f4613f84a2c.JPG",
20 | "source": "https://idntimes.com"
21 | },
22 | {
23 | "url": "https://cdn.idntimes.com/content-images/community/2017/05/s4-cc741aee203c34fab3d0617919e5edb2.JPG",
24 | "source": "https://idntimes.com"
25 | },
26 | {
27 | "url": "https://cdn.idntimes.com/content-images/community/2017/05/s5-10177aeee54c1fb4a9bc2755c9ba9ac8.JPG",
28 | "source": "https://idntimes.com"
29 | },
30 | {
31 | "url": "https://cdn.idntimes.com/content-images/community/2017/05/s1-e1ad26b8c542521ac828cd3703cc5de1.JPG",
32 | "source": "https://idntimes.com"
33 | },
34 | {
35 | "url": "https://cdn.idntimes.com/content-images/community/2017/05/s6-f1b7892e4ef1eb80a799938b9c2410f2.JPG",
36 | "source": "https://idntimes.com"
37 | },
38 | {
39 | "url": "https://cdn.idntimes.com/content-images/community/2017/05/s7-976a8ff1ea75c337099ca6e26c692565.JPG",
40 | "source": "https://idntimes.com"
41 | },
42 | {
43 | "url": "https://cdn.idntimes.com/content-images/community/2017/05/s8-2c5952a038849ffdfd226b64194b99ff.JPG",
44 | "source": "https://idntimes.com"
45 | },
46 | {
47 | "url": "https://cdn.idntimes.com/content-images/community/2017/05/s9-bfd5e8f81dca89be9bd239020dbe562c.JPG",
48 | "source": "https://idntimes.com"
49 | },
50 | {
51 | "url": "https://cdn.idntimes.com/content-images/community/2017/05/s10-4fa9630b6420db354c9efca9ebd492f8.JPG",
52 | "source": "https://idntimes.com"
53 | },
54 | {
55 | "url": "https://cdn.idntimes.com/content-images/community/2017/05/s11-b7185c7cf7fe371e4161ea102e111a78.JPG",
56 | "source": "https://idntimes.com"
57 | },
58 | {
59 | "url": "https://cdn.idntimes.com/content-images/community/2017/05/s13-ef193f509a2c1378fcaa4e29a7142a84.JPG",
60 | "source": "https://idntimes.com"
61 | },
62 | {
63 | "url": "https://cdn.idntimes.com/content-images/community/2017/05/s14-cd84299b05cc9a43f5329eff87c39a30.JPG",
64 | "source": "https://idntimes.com"
65 | },
66 | {
67 | "url": "https://cdn0-production-images-kly.akamaized.net/idyjufuvj2NY2TR3eht_Ms5iZQ0=/640x640/smart/filters:quality(75):strip_icc():format(webp)/kly-media-production/medias/3166741/original/074507100_1593565369-jokes_receh.jpg",
68 | "source": "https://liputan6.com"
69 | },
70 | {
71 | "url": "https://cdn1-production-images-kly.akamaized.net/6eMFzQtb_gnAzFA3Z0QHs_2NqYc=/640x640/smart/filters:quality(75):strip_icc():format(webp)/kly-media-production/medias/3166742/original/077400100_1593565369-jokes_receh.jpg3.jpg",
72 | "source": "https://liputan6.com"
73 | },
74 | {
75 | "url": "https://cdn1-production-images-kly.akamaized.net/wRpxq5lk7ZbBPsn7zyQX7gz78Uw=/640x640/smart/filters:quality(75):strip_icc():format(webp)/kly-media-production/medias/3166743/original/079724600_1593565369-jokes_receh.jpg4.jpg",
76 | "source": "https://liputan6.com"
77 | },
78 | {
79 | "url": "https://cdn1-production-images-kly.akamaized.net/R2YzeMYJBQarV1f6RsbZHEmv4KY=/640x640/smart/filters:quality(75):strip_icc():format(webp)/kly-media-production/medias/3166744/original/081844800_1593565369-jokes_receh.jpg5.jpg",
80 | "source": "https://liputan6.com"
81 | },
82 | {
83 | "url": "https://cdn1-production-images-kly.akamaized.net/Dk3s1xlh7h1hBysa34_TH2pT9hs=/640x640/smart/filters:quality(75):strip_icc():format(webp)/kly-media-production/medias/3166747/original/052108300_1593565660-jokes_receh.jpg6.jpg",
84 | "source": "https://liputan6.com"
85 | },
86 | {
87 | "url": "https://cdn0-production-images-kly.akamaized.net/xM9YrfBlmiiM2Oa-0zcv1Zu47NY=/640x640/smart/filters:quality(75):strip_icc():format(webp)/kly-media-production/medias/3570336/original/004435100_1631532672-E_ECfm7VUAYjiYg.jpg",
88 | "source": "https://liputan6.com"
89 | },
90 | {
91 | "url": "https://cdn0-production-images-kly.akamaized.net/Bkh-90akboftZVJwjDqpcC2g7uo=/640x360/smart/filters:quality(75):strip_icc():format(webp)/kly-media-production/medias/3570337/original/012087200_1631532672-d.jpg",
92 | "source": "https://liputan6.com"
93 | },
94 | {
95 | "url": "https://cdn0-production-images-kly.akamaized.net/kYhyMy6OtPKoKugneq8aUpZuPTw=/640x360/smart/filters:quality(75):strip_icc():format(webp)/kly-media-production/medias/3570338/original/020481800_1631532672-E_DqIsdVUAAjqwk.jpg",
96 | "source": "https://liputan6.com"
97 | },
98 | {
99 | "url": "https://cdn0-production-images-kly.akamaized.net/vDXoajMkGXP6m1W6Wc8_isDuMbg=/640x853/smart/filters:quality(75):strip_icc():format(webp)/kly-media-production/medias/3570339/original/025506400_1631532672-r.JPG",
100 | "source": "https://liputan6.com"
101 | },
102 | {
103 | "url": "https://cdn0-production-images-kly.akamaized.net/2T_jWa7tnflTks2l_B14wdo8qNQ=/640x360/smart/filters:quality(75):strip_icc():format(webp)/kly-media-production/medias/3570340/original/030975700_1631532672-g.jpg",
104 | "source": "https://liputan6.com"
105 | },
106 | {
107 | "url": "https://cdn0-production-images-kly.akamaized.net/sjoNHxE1_cy08G8nWOGyGGUY4yk=/640x853/smart/filters:quality(75):strip_icc():format(webp)/kly-media-production/medias/3570341/original/039581700_1631532672-E_E0PWbVQAQ1yjs.jpg",
108 | "source": "https://liputan6.com"
109 | },
110 | {
111 | "url": "https://cdn0-production-images-kly.akamaized.net/9B_zouCJoMEBHgBMocorgZaDbGU=/640x853/smart/filters:quality(75):strip_icc():format(webp)/kly-media-production/medias/3570342/original/046654700_1631532672-E_ED1FIVEAoSdlX.jpg",
112 | "source": "https://liputan6.com"
113 | },
114 | {
115 | "url": "https://cdn-image.hipwee.com/wp-content/uploads/2018/04/hipwee-Da_cmlfUQAAZz-3-2-750x422.jpg",
116 | "source": "https://hipwee.com/"
117 | },
118 | {
119 | "url": "https://cdn-image.hipwee.com/wp-content/uploads/2018/04/hipwee-Screenshot-2018-4-26-Handoko-Tjung-on-Twitter-Sahabat-dekat-biasanya-akan-mengajak-makan-kepiting-bareng-karena-sahabat-ya....png",
120 | "source": "https://hipwee.com/"
121 | },
122 | {
123 | "url": "https://cdn-image.hipwee.com/wp-content/uploads/2018/04/hipwee-Screenshot-2018-4-26-nurmanhidayah-on-Twitter-Penyanyi-apa-yg-ngajakin-maen-ayunan-maudy-ayun-ga-.png",
124 | "source": "https://hipwee.com/"
125 | },
126 | {
127 | "url": "https://cdn-image.hipwee.com/wp-content/uploads/2018/04/hipwee-Screenshot-2018-4-26-Hanna-on-Twitter-Penyanyi-apa-yang-tiap-naek-sepeda-gak-kebut-an-Melly-Goes-selow-.png",
128 | "source": "https://hipwee.com/"
129 | },
130 | {
131 | "url": "https://cdn-image.hipwee.com/wp-content/uploads/2018/04/hipwee-Screenshot-2018-4-26-Monica-on-Twitter-Penyanyi-apa-yg-punya-banyak-temen-Glenn-friendly-.png",
132 | "source": "https://hipwee.com/"
133 | },
134 | {
135 | "url": "https://cdn-image.hipwee.com/wp-content/uploads/2018/04/hipwee-Screenshot-2018-4-26-on-Twitter-Artis-apa-yang-suka-kenalan-Adipati-salken-.png",
136 | "source": "https://hipwee.com/"
137 | },
138 | {
139 | "url": "https://cdn-image.hipwee.com/wp-content/uploads/2018/04/hipwee-Screenshot-2018-4-26-Megy-on-Twitter-Penyanyi-apa-yang-bisa-stand-up-Uus-dahlia-.png",
140 | "source": "https://hipwee.com/"
141 | },
142 | {
143 | "url": "https://cdn-image.hipwee.com/wp-content/uploads/2018/04/hipwee-Screenshot-2018-4-26-ngapain-lur-on-Twitter-Penyanyi-yang-hobi-mikir-Ayu-thingking-.png",
144 | "source": "https://hipwee.com/"
145 | },
146 | {
147 | "url": "https://cdn-image.hipwee.com/wp-content/uploads/2018/04/hipwee-Screenshot-2018-4-26-Fia-on-Twitter-Artis-yg-ditunggu-tunggu-di-bulan-ramadhan-Afgan-magrib-v-.png",
148 | "source": "https://hipwee.com/"
149 | },
150 | {
151 | "url": "https://media.suara.com/pictures/original/2020/06/29/63192-candaan-bapak-bapak-dok-twitteratrebornblessing.jpg",
152 | "source": "https://suara.com"
153 | },
154 | {
155 | "url": "https://media.suara.com/pictures/original/2020/06/29/10935-candaan-bapak-bapak-dok-twitteratrebornblessing.jpg",
156 | "source": "https://suara.com"
157 | },
158 | {
159 | "url": "https://media.suara.com/pictures/original/2020/06/29/14611-candaan-bapak-bapak-dok-twitteratrebornblessing.jpg",
160 | "source": "https://suara.com"
161 | },
162 | {
163 | "url": "https://media.suara.com/pictures/original/2020/06/29/48942-candaan-bapak-bapak-dok-twitteratrebornblessing.jpg",
164 | "source": "https://suara.com"
165 | },
166 | {
167 | "url": "https://media.suara.com/pictures/original/2020/06/29/35074-candaan-bapak-bapak-dok-twitteratrebornblessing.jpg",
168 | "source": "https://suara.com"
169 | },
170 | {
171 | "url": "https://cdn-brilio-net.akamaized.net/news/2018/06/02/143598/783251-jokes-anak-sd-ngeselin.jpg",
172 | "source": "https://brilio.net"
173 | },
174 | {
175 | "url": "https://cdn-brilio-net.akamaized.net/news/2018/06/02/143598/783252-jokes-anak-sd-ngeselin.jpg",
176 | "source": "https://brilio.net"
177 | },
178 | {
179 | "url": "https://cdn-brilio-net.akamaized.net/news/2018/06/02/143598/783255-jokes-anak-sd-ngeselin.jpg",
180 | "source": "https://brilio.net"
181 | },
182 | {
183 | "url": "https://cdn-brilio-net.akamaized.net/news/2018/06/02/143598/783253-jokes-anak-sd-ngeselin.jpg",
184 | "source": "https://brilio.net"
185 | },
186 | {
187 | "url": "https://cdn-brilio-net.akamaized.net/news/2018/06/02/143598/783254-jokes-anak-sd-ngeselin.jpg",
188 | "source": "https://brilio.net"
189 | },
190 | {
191 | "url": "https://cdn-brilio-net.akamaized.net/news/2018/06/02/143598/783256-jokes-anak-sd-ngeselin.jpg",
192 | "source": "https://brilio.net"
193 | },
194 | {
195 | "url": "https://www.brilio.net/foto/view/https://cdn-brilio-net.akamaized.net/news/2018/06/02/143598/783258-jokes-anak-sd-ngeselin.jpg",
196 | "source": "https://brilio.net"
197 | },
198 | {
199 | "url": "https://i.pinimg.com/564x/f2/8b/51/f28b511c1b52a9e38d3e57d178a4774c.jpg",
200 | "source": "https://pinterest.com"
201 | },
202 | {
203 | "url": "https://akcdn.detik.net.id/community/media/visual/2020/01/23/27a09431-acd8-457a-be85-03caa08fff69.jpeg?a=1",
204 | "source": "https://detik.com"
205 | },
206 | {
207 | "url": "https://akcdn.detik.net.id/community/media/visual/2020/01/23/76ac3c5b-560e-4453-98e5-e7be206a1e61.jpeg?a=1",
208 | "source": "https://detik.com"
209 | },
210 | {
211 | "url": "https://akcdn.detik.net.id/community/media/visual/2020/01/24/12c5b521-9c12-494b-9431-9f1f1a3dbe89.png?a=1",
212 | "source": "https://detik.com"
213 | },
214 | {
215 | "url": "https://akcdn.detik.net.id/community/media/visual/2020/01/23/e3f8aa62-bdc4-48f0-b0c3-55ac6f3665a6.jpeg?a=1",
216 | "source": "https://detik.com"
217 | },
218 | {
219 | "url": "https://i.pinimg.com/564x/23/c2/f9/23c2f9f455646021937c93545a431c1c.jpg",
220 | "source": "https://pinterest.com"
221 | },
222 | {
223 | "url": "https://i.pinimg.com/236x/a6/4d/cb/a64dcbda662ae9693d352c3dc255fcc6.jpg",
224 | "source": "https://pinterest.com"
225 | },
226 | {
227 | "url": "https://i.pinimg.com/564x/07/45/f4/0745f4c4a917dd48816eac755c952b5f.jpg",
228 | "source": "https://pinterest.com"
229 | },
230 | {
231 | "url": "https://i.pinimg.com/564x/f8/47/34/f84734ae82e9738183c49ece1c7c77c1.jpg",
232 | "source": "https://pinterest.com"
233 | },
234 | {
235 | "url": "https://i.pinimg.com/564x/ed/15/7c/ed157c5a5156640088b7066fcd421759.jpg",
236 | "source": "https://pinterest.com"
237 | },
238 | {
239 | "url": "https://i.pinimg.com/564x/0d/69/08/0d6908d76819bc227fe38974e748094a.jpg",
240 | "source": "https://pinterest.com"
241 | },
242 | {
243 | "url": "https://i.pinimg.com/564x/1d/f3/ef/1df3efe84426e31e31d20683eb4a4982.jpg",
244 | "source": "https://pinterest.com"
245 | },
246 | {
247 | "url": "https://i.pinimg.com/564x/c8/a0/ac/c8a0ac665150b95bbf78616f23063b0d.jpg",
248 | "source": "https://pinterest.com"
249 | },
250 | {
251 | "url": "https://i.pinimg.com/564x/33/b3/e0/33b3e02e729d060270817f242616baa9.jpg",
252 | "source": "https://pinterest.com"
253 | },
254 | {
255 | "url": "https://i.pinimg.com/564x/be/1b/d0/be1bd06b69176673172cace947a17f49.jpg",
256 | "source": "https://pinterest.com"
257 | },
258 | {
259 | "url": "https://i.pinimg.com/564x/b1/4e/ca/b14ecaf9cabc3354227547ff5a61df96.jpg",
260 | "source": "https://pinterest.com"
261 | },
262 | {
263 | "url": "https://cdns.klimg.com/dream.co.id/resized/664xauto//real/2020/06/17/554349/meme-lucu.jpg",
264 | "source": "https://dream.co.id"
265 | },
266 | {
267 | "url": "https://cdns.klimg.com/dream.co.id/resized/664xauto//real/2020/06/17/554350/meme-lucu.jpg",
268 | "source": "https://dream.co.id"
269 | },
270 | {
271 | "url": "https://cdns.klimg.com/dream.co.id/resized/664xauto//real/2020/06/17/554351/meme-lucu.jpg",
272 | "source": "https://dream.co.id"
273 | },
274 | {
275 | "url": "https://cdns.klimg.com/dream.co.id/resized/664xauto//real/2020/06/17/554353/meme-lucu.jpg",
276 | "source": "https://dream.co.id"
277 | },
278 | {
279 | "url": "https://cdns.klimg.com/dream.co.id/resized/664xauto//real/2020/06/17/554354/meme-lucu.jpg",
280 | "source": "https://dream.co.id"
281 | },
282 | {
283 | "url": "https://cdns.klimg.com/dream.co.id/resized/664xauto//real/2020/06/17/554360/meme-lucu.jpg",
284 | "source": "https://dream.co.id"
285 | },
286 | {
287 | "url": "https://cdns.klimg.com/dream.co.id/resized/664xauto//real/2020/06/17/554361/meme-lucu.jpg",
288 | "source": "https://dream.co.id"
289 | },
290 | {
291 | "url": "https://cdns.klimg.com/dream.co.id/resized/664xauto//real/2020/06/17/554362/meme-lucu.jpg",
292 | "source": "https://dream.co.id"
293 | },
294 | {
295 | "url": "https://cdn.idntimes.com/content-images/community/2021/07/img-20210717-142547-6ff4389e5b5ccef71e70121535467561-81a06e3844b9adbc4f447bbbae0e6555.jpg",
296 | "source": "https://idntimes.com"
297 | },
298 | {
299 | "url": "https://cdn.idntimes.com/content-images/community/2021/07/img-20210717-141901-6ff4389e5b5ccef71e70121535467561-cb58ca536d8cea45196475b71f0dde5d.jpg",
300 | "source": "https://idntimes.com"
301 | },
302 | {
303 | "url": "https://cdn.idntimes.com/content-images/community/2021/07/img-20210717-141637-6ff4389e5b5ccef71e70121535467561-1b8b4cce5a49fd2ecdbc929a10c54659.jpg",
304 | "source": "https://idntimes.com"
305 | },
306 | {
307 | "url": "https://cdn.idntimes.com/content-images/community/2021/06/image-90ea24e6fdbb9ca983dc9a206121e06a.jpg",
308 | "source": "https://idntimes.com"
309 | },
310 | {
311 | "url": "https://cdn.idntimes.com/content-images/community/2021/06/image-3301d35d72feba5ea9bc6dbfa7e64fa6.jpg",
312 | "source": "https://idntimes.com"
313 | },
314 | {
315 | "url": "https://cdn.idntimes.com/content-images/community/2021/06/image-1a9409e8d0356e7b328b750668581659.jpg",
316 | "source": "https://idntimes.com"
317 | },
318 | {
319 | "url": "https://cdn.idntimes.com/content-images/community/2021/06/image-8b4b1e1ea5b35b07ccd4c1e74d893c84.jpg",
320 | "source": "https://idntimes.com"
321 | },
322 | {
323 | "url": "https://cdn.idntimes.com/content-images/community/2021/06/image-05b94a849c73376fa01a8c143125d5c6.jpg",
324 | "source": "https://idntimes.com"
325 | },
326 | {
327 | "url": "https://cdn.idntimes.com/content-images/community/2021/06/image-4e9d5cff358dbe695e04ba6529c577a8.jpg",
328 | "source": "https://idntimes.com"
329 | },
330 | {
331 | "url": "https://cdn.idntimes.com/content-images/community/2021/06/image-42833d69f20d3c251541c88959402c7d.jpg",
332 | "source": "https://idntimes.com"
333 | },
334 | {
335 | "url": "https://s3.theasianparent.com/cdn-cgi/image/width=450,quality=90/tap-assets-prod/wp-content/uploads/sites/24/2021/08/jokes3.jpg",
336 | "source": "https://theasianparent.com"
337 | },
338 | {
339 | "url": "https://s3.theasianparent.com/cdn-cgi/image/width=450,quality=90/tap-assets-prod/wp-content/uploads/sites/24/2021/08/jokes4.jpg",
340 | "source": "https://theasianparent.com"
341 | },
342 | {
343 | "url": "https://s3.theasianparent.com/cdn-cgi/image/width=450,quality=90/tap-assets-prod/wp-content/uploads/sites/24/2021/08/jokes5.jpg",
344 | "source": "https://theasianparent.com"
345 | },
346 | {
347 | "url": "https://s3.theasianparent.com/cdn-cgi/image/width=450,quality=90/tap-assets-prod/wp-content/uploads/sites/24/2021/08/jokes7.jpg",
348 | "source": "https://theasianparent.com"
349 | },
350 | {
351 | "url": "https://s3.theasianparent.com/cdn-cgi/image/width=450,quality=90/tap-assets-prod/wp-content/uploads/sites/24/2021/08/jokes8.jpg",
352 | "source": "https://theasianparent.com"
353 | },
354 | {
355 | "url": "https://cdn0-production-images-kly.akamaized.net/e_z9fTVsZqHLdqOzoplWgCjq3As=/640x360/smart/filters:quality(75):strip_icc():format(webp)/kly-media-production/medias/3259449/original/021365600_1601980495-3.jpg",
356 | "source": "https://liputan6.com"
357 | },
358 | {
359 | "url": "https://media-assets-ggwp.s3.ap-southeast-1.amazonaws.com/2020/06/Ebqhx9gUMAECX17-e1593500399270.jpg",
360 | "source": "https://liputan6.com"
361 | },
362 | {
363 | "url": "https://cdn.idntimes.com/content-images/community/2021/07/img-20210717-141950-6ff4389e5b5ccef71e70121535467561-0503caad67e00c2ca2e18aea30013ce9.jpg",
364 | "source": "https://idntimes.com"
365 | },
366 | {
367 | "url": "https://cdn.idntimes.com/content-images/community/2021/07/img-20210717-141613-6ff4389e5b5ccef71e70121535467561-75e810790b8f5b9292c609aad1b73ed6.jpg",
368 | "source": "https://idntimes.com"
369 | },
370 | {
371 | "url": "https://cdn-image.hipwee.com/wp-content/uploads/2020/07/hipwee-EckEpW8UwAErfg_.jpg",
372 | "source": "https://idntimes.com"
373 | },
374 | {
375 | "url": "https://cdn-image.hipwee.com/wp-content/uploads/2020/07/hipwee-EckDk9XUwAA4msI-360x640.jpg",
376 | "source": "https://hipwee.com/"
377 | },
378 | {
379 | "url": "https://cdn-image.hipwee.com/wp-content/uploads/2020/07/hipwee-Ecj1yD5U8AAvrGi.jpg",
380 | "source": "https://hipwee.com/"
381 | },
382 | {
383 | "url": "https://cdn-brilio-net.akamaized.net/news/2020/09/29/192813/1320634-jokes-bapak-di-whatsapp.jpg",
384 | "source": "https://brilio.net"
385 | },
386 | {
387 | "url": "https://cdn-brilio-net.akamaized.net/news/2020/09/29/192813/1320635-jokes-bapak-di-whatsapp.jpg",
388 | "source": "https://brilio.net"
389 | },
390 | {
391 | "url": "https://cdn-brilio-net.akamaized.net/news/2020/09/29/192813/1320640-1000xauto-jokes-bapak-di-whatsapp.jpg",
392 | "source": "https://brilio.net"
393 | },
394 | {
395 | "url": "https://cdn-brilio-net.akamaized.net/news/2020/09/29/192813/1320641-jokes-bapak-di-whatsapp.jpg",
396 | "source": "https://brilio.net"
397 | },
398 | {
399 | "url": "https://cdn-brilio-net.akamaized.net/news/2020/09/29/192813/1320644-1000xauto-jokes-bapak-di-whatsapp.jpg",
400 | "source": "https://brilio.net"
401 | }
402 | ]
403 |
--------------------------------------------------------------------------------
/data/api/text.json:
--------------------------------------------------------------------------------
1 | [
2 | "Barusan saya ke apotek beli obat tidur, pas pulang saya bawa nya pelan pelan, takut obatnya bangun xixixi",
3 | "Pack pasien yang terkena gejala rindu dilarikan kemana pack? Ke ruang I see you eaaaaa",
4 | "Pack, kendaraan apa yang imut kalo lagi jalan? Kereta api. Cute cute cute :)",
5 | "HuRuf hUrUF apAh YaNK sERink Kedingan???? \"Huruf B\" KaRena aDA Di tengAh AC....",
6 | "Gula gula apa yang bukan gula? Gula aren't xixixi, belum paham? coba google translate dulu aokwoakwoak",
7 | "Barusan saya mau masak, tapi tiba tiba pancinya jalan sendiri nggak tau ke mana, ehh ternyata itu Panci Petualang..... Panji Petualang maksudnya hehehe",
8 | "Motivasi hari ini: kalo kamu masih diselimuti masalah berarti kamu manusia, karena kalo kamu diselimuti wijen berarti onde-onde",
9 | "Apa bener kalo kita ngisi bensin premium, motor kita nggak ada iklannya? wkwkwkkw",
10 | "Kalo mau manasin motor enaknya direbus apa digoreng?!!",
11 | "Pohon pisang kalau dikagetin copot gak yahh jantungnya?",
12 | "Mau nanya nih, kalau baju tidur bangunnya jam berapa, ya?",
13 | "Kemarin anak saya demam, terus saya kompres ehh malah jadi rar",
14 | "Kalo cinta masih mandang fisik, suruh aja pacaran sama ikan karena ikan banyak fisiknya huhuhuhu",
15 | "Kenapa kalau naik motor maunya ketawa terus???? karena duduknya diatas jokes",
16 | "Pisang kalo masih panas namanya apa? Hihang Hoheng xixixii",
17 | "Benda yang kalau dibalik selalu rusak?? Kasur",
18 | "Kalo dipotong malah tambah tinggi, apa itu? Celanan",
19 | "Kenapa kerang adanya dilaut, karena kalau di darat nanti jadi kering heuheuehue",
20 | "Buah apa yang nggak seger? ehmmmm buah Alpucat hehehe",
21 | "Jangan panggil aku mantan. Sebut saja aku alumni. Siapa tahu kita bisa reuni. ehm ehm ehm",
22 | "Manusia boleh berencana, tapi saldo juga yang menentukan xixixi.",
23 | "Manusia itu emang susah nyalahin diri sendiri. Leher pegal dibilang salah bantal.",
24 | "Biarpun katanya nggak higienis, tapi makan di pinggir jalan masih jauh lebih sehat daripada makan di tengah jalan.",
25 | "Hargai kedua orang tuamu, mereka berhasil lulus dari sekolah tanpa bantuan Google.",
26 | "Berhentilah menuntut ilmu, karena ilmu tidak bersalah.",
27 | "Mau mandi males, harus jalan ke kamar mandi, ada toilet online nggak yah biar dianterin.",
28 | "Waktu tak dapat diputar, dijilat, apalagi dicelupin.",
29 | "Kalau ada yang nyari aku, suruh cari di google xixixi",
30 | "Kamu stres karena tugas menumpuk? Tenang, ada solusinya! Dijejerin aja tugasnya biar nggak numpuk :)",
31 | "Jangan lupa titik koma; xixixi",
32 | "Cara termudah mencari barang hilang di rumah adalah dengan membeli yang baru.",
33 | "Cantik nggak harus putih, tapi harus perempuan aowkaokawok",
34 | "Alat masak apa yang suka kesel??? Paan cii...",
35 | "Ultraman kalau lagi flu? Ultraflu.....",
36 | "Kenapa gajah nggak bisa terbang? karena nggak punya sayap xixixi",
37 | "Gunung merapi itu aktif kan? Tapi kenapa dichat nggak dibales :(",
38 | "Sop, sop apa yang ramai anak-anak kecil? Sop...yandu heheehe",
39 | "Kenapa zombie kalo nyerang rame-rame? Kalau nyerang sendiri namanya Zomblo yahhhhhhh",
40 | "Kenapa tempe bikinnya lama?? karena bikinnya dari ke-delay.....",
41 | "Kalau kamu cari cowok yg ganteng aku mundur, tapiii kalau kamu cari cowok yang sholeh, kaya, dan pintar, aku pulang aja sekalian :v",
42 | "Kalo semua hal harus dipikirkan masak-masak, gimana coba oranga yang gabisa masak aowkoawokaok",
43 | "Bang, ngapain ngobrol sama martabak? || Pesenan pelanggan mas, katanya martabaknya jangan dikacangin. huhuhuhuhu",
44 | "Bener nggak sih? Orang jelek kalo ikut tarik tambang nggak bakal menang, karena dia nggak menarik?",
45 | "Cobaan itu emang banyak Kalo dikit namanya cobain",
46 | "Penyanyi luar negeri yang susah nelen? Ed Sered wkwkwk",
47 | "Siapa artis yang kebanyakan mikir? Ayu Thinking.",
48 | "Pemain bola apa yang beratnya 3 kg? Bambang tabung gas.",
49 | "Hewan apa yang taat lalu lintas? Unta. Unta-makan keselamatan.",
50 | "Hewan apa yang paling hening? Semute.",
51 | "Hitam, putih, merah, apakah itu? Zebra abis dikerokin.",
52 | "Ayam apa yang bisa terbang dari Jakarta ke Makassar? Ayam nekat.",
53 | "Ikan apa yang suka berhenti? Ikan pause.",
54 | "Ikan apa yang bisa terbang, hayo? Lele-lawar.",
55 | "Ayam apa yang paling besar? Ayam semesta.",
56 | "Hewan apa yang nggak pernah salah? Kucing ga wrong.",
57 | "Buah apa yang sering jadi tanda film selesai? Toamat.",
58 | "Buah apa yang paling rajin? Apel pagi.",
59 | "Buah apa yang nggak ada otaknya? Semua buah dong xixixixi",
60 | "Artis apa yang suka kenalan? Adipate Salken wkwkwk",
61 | "Penyanyi apa yang matre? Fulus",
62 | "Kenapa kalo lagi mikir orang suka megang jidatnya? Ya iyalah, masa megang jidat orang lain!",
63 | "Sayur, sayur apa yang dilarang polisi? Jawabannya, lalapan liar wkwkwkw!",
64 | "Bapak bapak minta es batu tiba tiba ngomong gini \"ini es kemaren ya kok udah dingin?\" xixiixi",
65 | "Tadi lagi makan bubur, buburnya kecil tapi bisa digedein, ehhh ternyata bubur zoom zoom xixixi ngakak aBIezzz",
66 | "Bundaran HI kalo diputerin 3x jadinya apa sii? HIHIHI",
67 | "Kenapa kursi disebut benda padat padahal jelas jelas dia chair wkwkwk",
68 | "Kenapa ya negeri ini masih panas, padahalkan udah masuk ASEAN",
69 | "Apa iya kalau hewan kangguru ke kampus jadi kangdosen?",
70 | "Ehmmm apakah kalau kita mengutarakan sesuatu apa boleh sambil menghadap selatan?",
71 | "Cara agar tidak stress: 1. beli kacang, 2. lepasin. Karena melepas peanut huhuhuhu",
72 | "Nasi apa yang jadi youtuber? Nasi Judge wkwkwkk",
73 | "Pak TOLOOONG!! Ibu kota Banten dii Serang!!",
74 | "Tau kenapa wanita mudah tergoda oleh buaya? karena mereka percaya lidah buaya banyak manfaatnya xixixxi",
75 | "Yaampun pengen banget makan siang, tapi ini udah malam :(",
76 | "Pernah denger jantung pisang deg2an nggak?",
77 | "Minumam, minuman apa yang udah hijrah???? Nutri Syar'ii xixixi",
78 | "Apa bener anak teknik informatika kalau mati masuk Recycle Bin",
79 | "Kerang kerang apa yang nggak bisa dimakan? Kerang air lahhh akwoakowkowk",
80 | "Ikan sapu-sapu atau biasa disebut Cleaning Share Fish akwoakowkaokwo",
81 | "Apa bener kalau kalo petani membajak sawah, sawahnya bakal bikin status \"Sorry dibajak\"",
82 | "Kenapa kita harus cari istri yang pintar masak? kan itu rumah tangga bukan rumah makan",
83 | "Kenapa motor mio nggak manis? karna kalo manis namanya motor milo xixixi ngakakkk abiezzzz",
84 | "Kenapa kaca spion arahnya kebelakang, karna kalo kedepan nggak bisa lihat dong hahahahaha",
85 | "Bapak-bapak, kemarin saya beli permen karet, pas saya kunyah rasanya pedes. Ternyata karetnya dua xixixi (emangnya nasi padang wkwkwk)",
86 | "\"Anak saya ngeyel Pak, kuliah ngambil komputer, pulang pulang bonyok.\"",
87 | "\"Bapak-bapak, mohon infonya kalau buku nikah hilang, bikin lagi atau nikah lagi?\"",
88 | "Kipas angin itu aneh, nengok kanan kiri tapi gak nyebrang-nyebrang huhuhuhu",
89 | "Apa bahasa inggrisnya adat? Adat is tiadat",
90 | "Kalau keluarga kita ganjil apakah boleh mengucapkan kami \"segenap keluarga\"?",
91 | "Tau gak persamaan you’re welcome sama terima kasih kembali? Sama-sama sama-sama sama-sama",
92 | "Kalo seorang istri nggak bekerja dan suka hal jepang, apa bisa dibilang wibu rumah tangga?",
93 | "Apa bener kalau tayo warna kuning jadi tayi?? canda tayi wkwkwkwk",
94 | "Sayur apa yang suka ikut perang? Sayur mayor xixixixi",
95 | "Nama kota di jawa tengah yang isinya bapack bapack semua?? Purwodaddy akwoakoakoakowk",
96 | "Serius nanya : \"Kalau main ular tangga bagusnya pake ular apa?\"",
97 | "Bau bau apa yang romantis??? A-miss you :*",
98 | "Tau nggak suara pucuk itu gimana? pucuk pucuk pucuk hahahaha",
99 | "Kasian ya sama keong, kalau udang nikah nggak bisa tinggal serumah :(",
100 | "Hati hati ya kalau renang di kolam renang, karena kolam renang mengandung copyright :v",
101 | "Makanan apa yang gaboleh dimakan?? Donat eat xixixixi"
102 | ]
103 |
--------------------------------------------------------------------------------
/helpers/getRandom.js:
--------------------------------------------------------------------------------
1 | module.exports = (length) => {
2 | const random = Math.floor(Math.random() * length);
3 | return random;
4 | };
5 |
--------------------------------------------------------------------------------
/index.js:
--------------------------------------------------------------------------------
1 | const express = require("express");
2 | const cors = require("cors");
3 | const chalk = require("chalk");
4 |
5 | const textRoutes = require("./routes/api/text.js");
6 | const imageRoutes = require("./routes/api/image");
7 |
8 | const app = express();
9 | const PORT = process.env.PORT || 3000 || 5000 || 8080;
10 |
11 | /**============================================
12 | * SETUP MIDDLEWARE
13 | *=============================================**/
14 | app.use(cors());
15 | app.set("json spaces", 2);
16 |
17 | /**============================================
18 | * SETUP ROUTES
19 | *=============================================**/
20 | app.get("/", (req, res) => {
21 | res.status(200).json({
22 | api_name: "Candaan API",
23 | author: "ardhptr21",
24 | description:
25 | "Candaan API merupakan Rest API yang dibuat untuk mendapatkan beberapa jokes jokes receh dari Indonesia, semua data data yang ada di Candaan API diambil dari internet yang kemudian dikumpulkan menjadi satu, untuk dibuat Rest API",
26 | version: "v1.0.0",
27 | end_points: {
28 | "/api/text": "Mendapatkan semua data candaan berupa teks",
29 | "/api/text/random": "Mendapatkan satu data candaan berupa teks secara random",
30 | "/api/image": "Mendapatkan semua data candaan berupa gambar secara random",
31 | "/api/image/random": "Mendapatkan satu data candaan berupa gambar secara random",
32 | },
33 | repository: "https://github.com/ardhptr21/candaan-api",
34 | email: "ardhiputrapradana21@gmail.com",
35 | social: {
36 | github: "https://github.com/ardhptr21",
37 | instagram: "https://instagram.com/ardhptr21",
38 | twitter: "https://twitter.com/ardhptr21",
39 | },
40 | });
41 | });
42 |
43 | app.use("/api/text", textRoutes);
44 | app.use("/api/image", imageRoutes);
45 |
46 | /**============================================
47 | * LISTENING APP
48 | *=============================================**/
49 | app.listen(PORT, () => console.log(chalk.blue.bold(`App now running on port ${chalk.yellow(PORT)}, yeayy😉`)));
50 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "candaan-api",
3 | "version": "1.0.0",
4 | "description": "Candaan API merupakan Rest API yang dibuat untuk mendapatkan beberapa jokes jokes receh dari Indonesia, semua data data yang ada di Candaan API diambil dari internet yang kemudian dikumpulkan menjadi satu, untuk dibuat Rest API",
5 | "main": "index.js",
6 | "engines": {
7 | "node": "14.x"
8 | },
9 | "scripts": {
10 | "start": "node index.js"
11 | },
12 | "repository": {
13 | "type": "git",
14 | "url": "git+https://github.com/ardhptr21/candaan-api.git"
15 | },
16 | "keywords": [
17 | "api",
18 | "node",
19 | "restapi",
20 | "joke"
21 | ],
22 | "author": "ardhptr21",
23 | "license": "MIT",
24 | "dependencies": {
25 | "chalk": "^4.1.2",
26 | "cors": "^2.8.5",
27 | "express": "^4.17.1"
28 | }
29 | }
30 |
--------------------------------------------------------------------------------
/routes/api/image.js:
--------------------------------------------------------------------------------
1 | const express = require("express");
2 | const imageController = require("../../controllers/api/imageController.js");
3 | const router = express.Router();
4 |
5 | router.get("/", imageController.getAllImageJokes);
6 | router.get("/random", imageController.randomImageJoke);
7 |
8 | module.exports = router;
9 |
--------------------------------------------------------------------------------
/routes/api/text.js:
--------------------------------------------------------------------------------
1 | const express = require("express");
2 | const textController = require("../../controllers/api/textController.js");
3 | const router = express.Router();
4 |
5 | router.get("/", textController.getAllTextJokes);
6 | router.get("/random", textController.randomTextJoke);
7 |
8 | module.exports = router;
9 |
--------------------------------------------------------------------------------
/vercel.json:
--------------------------------------------------------------------------------
1 | {
2 | "version": 2,
3 | "builds": [
4 | {
5 | "src": "./index.js",
6 | "use": "@vercel/node"
7 | }
8 | ],
9 | "routes": [
10 | {
11 | "src": "/(.*)",
12 | "dest": "/"
13 | }
14 | ]
15 | }
16 |
--------------------------------------------------------------------------------
/yarn.lock:
--------------------------------------------------------------------------------
1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
2 | # yarn lockfile v1
3 |
4 |
5 | accepts@~1.3.7:
6 | version "1.3.7"
7 | resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.7.tgz#531bc726517a3b2b41f850021c6cc15eaab507cd"
8 | integrity sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==
9 | dependencies:
10 | mime-types "~2.1.24"
11 | negotiator "0.6.2"
12 |
13 | ansi-styles@^4.1.0:
14 | version "4.3.0"
15 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937"
16 | integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==
17 | dependencies:
18 | color-convert "^2.0.1"
19 |
20 | array-flatten@1.1.1:
21 | version "1.1.1"
22 | resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2"
23 | integrity sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=
24 |
25 | body-parser@1.19.0:
26 | version "1.19.0"
27 | resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.19.0.tgz#96b2709e57c9c4e09a6fd66a8fd979844f69f08a"
28 | integrity sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==
29 | dependencies:
30 | bytes "3.1.0"
31 | content-type "~1.0.4"
32 | debug "2.6.9"
33 | depd "~1.1.2"
34 | http-errors "1.7.2"
35 | iconv-lite "0.4.24"
36 | on-finished "~2.3.0"
37 | qs "6.7.0"
38 | raw-body "2.4.0"
39 | type-is "~1.6.17"
40 |
41 | bytes@3.1.0:
42 | version "3.1.0"
43 | resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.0.tgz#f6cf7933a360e0588fa9fde85651cdc7f805d1f6"
44 | integrity sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==
45 |
46 | chalk@^4.1.2:
47 | version "4.1.2"
48 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01"
49 | integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==
50 | dependencies:
51 | ansi-styles "^4.1.0"
52 | supports-color "^7.1.0"
53 |
54 | color-convert@^2.0.1:
55 | version "2.0.1"
56 | resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3"
57 | integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==
58 | dependencies:
59 | color-name "~1.1.4"
60 |
61 | color-name@~1.1.4:
62 | version "1.1.4"
63 | resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2"
64 | integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==
65 |
66 | content-disposition@0.5.3:
67 | version "0.5.3"
68 | resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.3.tgz#e130caf7e7279087c5616c2007d0485698984fbd"
69 | integrity sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==
70 | dependencies:
71 | safe-buffer "5.1.2"
72 |
73 | content-type@~1.0.4:
74 | version "1.0.4"
75 | resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b"
76 | integrity sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==
77 |
78 | cookie-signature@1.0.6:
79 | version "1.0.6"
80 | resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c"
81 | integrity sha1-4wOogrNCzD7oylE6eZmXNNqzriw=
82 |
83 | cookie@0.4.0:
84 | version "0.4.0"
85 | resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.4.0.tgz#beb437e7022b3b6d49019d088665303ebe9c14ba"
86 | integrity sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==
87 |
88 | cors@^2.8.5:
89 | version "2.8.5"
90 | resolved "https://registry.yarnpkg.com/cors/-/cors-2.8.5.tgz#eac11da51592dd86b9f06f6e7ac293b3df875d29"
91 | integrity sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==
92 | dependencies:
93 | object-assign "^4"
94 | vary "^1"
95 |
96 | debug@2.6.9:
97 | version "2.6.9"
98 | resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f"
99 | integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==
100 | dependencies:
101 | ms "2.0.0"
102 |
103 | depd@~1.1.2:
104 | version "1.1.2"
105 | resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9"
106 | integrity sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=
107 |
108 | destroy@~1.0.4:
109 | version "1.0.4"
110 | resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80"
111 | integrity sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=
112 |
113 | ee-first@1.1.1:
114 | version "1.1.1"
115 | resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d"
116 | integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=
117 |
118 | encodeurl@~1.0.2:
119 | version "1.0.2"
120 | resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59"
121 | integrity sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=
122 |
123 | escape-html@~1.0.3:
124 | version "1.0.3"
125 | resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988"
126 | integrity sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=
127 |
128 | etag@~1.8.1:
129 | version "1.8.1"
130 | resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887"
131 | integrity sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=
132 |
133 | express@^4.17.1:
134 | version "4.17.1"
135 | resolved "https://registry.yarnpkg.com/express/-/express-4.17.1.tgz#4491fc38605cf51f8629d39c2b5d026f98a4c134"
136 | integrity sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==
137 | dependencies:
138 | accepts "~1.3.7"
139 | array-flatten "1.1.1"
140 | body-parser "1.19.0"
141 | content-disposition "0.5.3"
142 | content-type "~1.0.4"
143 | cookie "0.4.0"
144 | cookie-signature "1.0.6"
145 | debug "2.6.9"
146 | depd "~1.1.2"
147 | encodeurl "~1.0.2"
148 | escape-html "~1.0.3"
149 | etag "~1.8.1"
150 | finalhandler "~1.1.2"
151 | fresh "0.5.2"
152 | merge-descriptors "1.0.1"
153 | methods "~1.1.2"
154 | on-finished "~2.3.0"
155 | parseurl "~1.3.3"
156 | path-to-regexp "0.1.7"
157 | proxy-addr "~2.0.5"
158 | qs "6.7.0"
159 | range-parser "~1.2.1"
160 | safe-buffer "5.1.2"
161 | send "0.17.1"
162 | serve-static "1.14.1"
163 | setprototypeof "1.1.1"
164 | statuses "~1.5.0"
165 | type-is "~1.6.18"
166 | utils-merge "1.0.1"
167 | vary "~1.1.2"
168 |
169 | finalhandler@~1.1.2:
170 | version "1.1.2"
171 | resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.2.tgz#b7e7d000ffd11938d0fdb053506f6ebabe9f587d"
172 | integrity sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==
173 | dependencies:
174 | debug "2.6.9"
175 | encodeurl "~1.0.2"
176 | escape-html "~1.0.3"
177 | on-finished "~2.3.0"
178 | parseurl "~1.3.3"
179 | statuses "~1.5.0"
180 | unpipe "~1.0.0"
181 |
182 | forwarded@0.2.0:
183 | version "0.2.0"
184 | resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.2.0.tgz#2269936428aad4c15c7ebe9779a84bf0b2a81811"
185 | integrity sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==
186 |
187 | fresh@0.5.2:
188 | version "0.5.2"
189 | resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7"
190 | integrity sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=
191 |
192 | has-flag@^4.0.0:
193 | version "4.0.0"
194 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b"
195 | integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==
196 |
197 | http-errors@1.7.2:
198 | version "1.7.2"
199 | resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.2.tgz#4f5029cf13239f31036e5b2e55292bcfbcc85c8f"
200 | integrity sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==
201 | dependencies:
202 | depd "~1.1.2"
203 | inherits "2.0.3"
204 | setprototypeof "1.1.1"
205 | statuses ">= 1.5.0 < 2"
206 | toidentifier "1.0.0"
207 |
208 | http-errors@~1.7.2:
209 | version "1.7.3"
210 | resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.3.tgz#6c619e4f9c60308c38519498c14fbb10aacebb06"
211 | integrity sha512-ZTTX0MWrsQ2ZAhA1cejAwDLycFsd7I7nVtnkT3Ol0aqodaKW+0CTZDQ1uBv5whptCnc8e8HeRRJxRs0kmm/Qfw==
212 | dependencies:
213 | depd "~1.1.2"
214 | inherits "2.0.4"
215 | setprototypeof "1.1.1"
216 | statuses ">= 1.5.0 < 2"
217 | toidentifier "1.0.0"
218 |
219 | iconv-lite@0.4.24:
220 | version "0.4.24"
221 | resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b"
222 | integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==
223 | dependencies:
224 | safer-buffer ">= 2.1.2 < 3"
225 |
226 | inherits@2.0.3:
227 | version "2.0.3"
228 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de"
229 | integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=
230 |
231 | inherits@2.0.4:
232 | version "2.0.4"
233 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c"
234 | integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==
235 |
236 | ipaddr.js@1.9.1:
237 | version "1.9.1"
238 | resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3"
239 | integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==
240 |
241 | media-typer@0.3.0:
242 | version "0.3.0"
243 | resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748"
244 | integrity sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=
245 |
246 | merge-descriptors@1.0.1:
247 | version "1.0.1"
248 | resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61"
249 | integrity sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=
250 |
251 | methods@~1.1.2:
252 | version "1.1.2"
253 | resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee"
254 | integrity sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=
255 |
256 | mime-db@1.49.0:
257 | version "1.49.0"
258 | resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.49.0.tgz#f3dfde60c99e9cf3bc9701d687778f537001cbed"
259 | integrity sha512-CIc8j9URtOVApSFCQIF+VBkX1RwXp/oMMOrqdyXSBXq5RWNEsRfyj1kiRnQgmNXmHxPoFIxOroKA3zcU9P+nAA==
260 |
261 | mime-types@~2.1.24:
262 | version "2.1.32"
263 | resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.32.tgz#1d00e89e7de7fe02008db61001d9e02852670fd5"
264 | integrity sha512-hJGaVS4G4c9TSMYh2n6SQAGrC4RnfU+daP8G7cSCmaqNjiOoUY0VHCMS42pxnQmVF1GWwFhbHWn3RIxCqTmZ9A==
265 | dependencies:
266 | mime-db "1.49.0"
267 |
268 | mime@1.6.0:
269 | version "1.6.0"
270 | resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1"
271 | integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==
272 |
273 | ms@2.0.0:
274 | version "2.0.0"
275 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8"
276 | integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=
277 |
278 | ms@2.1.1:
279 | version "2.1.1"
280 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a"
281 | integrity sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==
282 |
283 | negotiator@0.6.2:
284 | version "0.6.2"
285 | resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.2.tgz#feacf7ccf525a77ae9634436a64883ffeca346fb"
286 | integrity sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==
287 |
288 | object-assign@^4:
289 | version "4.1.1"
290 | resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863"
291 | integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=
292 |
293 | on-finished@~2.3.0:
294 | version "2.3.0"
295 | resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947"
296 | integrity sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=
297 | dependencies:
298 | ee-first "1.1.1"
299 |
300 | parseurl@~1.3.3:
301 | version "1.3.3"
302 | resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4"
303 | integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==
304 |
305 | path-to-regexp@0.1.7:
306 | version "0.1.7"
307 | resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c"
308 | integrity sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=
309 |
310 | proxy-addr@~2.0.5:
311 | version "2.0.7"
312 | resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.7.tgz#f19fe69ceab311eeb94b42e70e8c2070f9ba1025"
313 | integrity sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==
314 | dependencies:
315 | forwarded "0.2.0"
316 | ipaddr.js "1.9.1"
317 |
318 | qs@6.7.0:
319 | version "6.7.0"
320 | resolved "https://registry.yarnpkg.com/qs/-/qs-6.7.0.tgz#41dc1a015e3d581f1621776be31afb2876a9b1bc"
321 | integrity sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==
322 |
323 | range-parser@~1.2.1:
324 | version "1.2.1"
325 | resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031"
326 | integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==
327 |
328 | raw-body@2.4.0:
329 | version "2.4.0"
330 | resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.4.0.tgz#a1ce6fb9c9bc356ca52e89256ab59059e13d0332"
331 | integrity sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==
332 | dependencies:
333 | bytes "3.1.0"
334 | http-errors "1.7.2"
335 | iconv-lite "0.4.24"
336 | unpipe "1.0.0"
337 |
338 | safe-buffer@5.1.2:
339 | version "5.1.2"
340 | resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d"
341 | integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==
342 |
343 | "safer-buffer@>= 2.1.2 < 3":
344 | version "2.1.2"
345 | resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a"
346 | integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==
347 |
348 | send@0.17.1:
349 | version "0.17.1"
350 | resolved "https://registry.yarnpkg.com/send/-/send-0.17.1.tgz#c1d8b059f7900f7466dd4938bdc44e11ddb376c8"
351 | integrity sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==
352 | dependencies:
353 | debug "2.6.9"
354 | depd "~1.1.2"
355 | destroy "~1.0.4"
356 | encodeurl "~1.0.2"
357 | escape-html "~1.0.3"
358 | etag "~1.8.1"
359 | fresh "0.5.2"
360 | http-errors "~1.7.2"
361 | mime "1.6.0"
362 | ms "2.1.1"
363 | on-finished "~2.3.0"
364 | range-parser "~1.2.1"
365 | statuses "~1.5.0"
366 |
367 | serve-static@1.14.1:
368 | version "1.14.1"
369 | resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.14.1.tgz#666e636dc4f010f7ef29970a88a674320898b2f9"
370 | integrity sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==
371 | dependencies:
372 | encodeurl "~1.0.2"
373 | escape-html "~1.0.3"
374 | parseurl "~1.3.3"
375 | send "0.17.1"
376 |
377 | setprototypeof@1.1.1:
378 | version "1.1.1"
379 | resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.1.tgz#7e95acb24aa92f5885e0abef5ba131330d4ae683"
380 | integrity sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==
381 |
382 | "statuses@>= 1.5.0 < 2", statuses@~1.5.0:
383 | version "1.5.0"
384 | resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c"
385 | integrity sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=
386 |
387 | supports-color@^7.1.0:
388 | version "7.2.0"
389 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da"
390 | integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==
391 | dependencies:
392 | has-flag "^4.0.0"
393 |
394 | toidentifier@1.0.0:
395 | version "1.0.0"
396 | resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.0.tgz#7e1be3470f1e77948bc43d94a3c8f4d7752ba553"
397 | integrity sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==
398 |
399 | type-is@~1.6.17, type-is@~1.6.18:
400 | version "1.6.18"
401 | resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131"
402 | integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==
403 | dependencies:
404 | media-typer "0.3.0"
405 | mime-types "~2.1.24"
406 |
407 | unpipe@1.0.0, unpipe@~1.0.0:
408 | version "1.0.0"
409 | resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec"
410 | integrity sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=
411 |
412 | utils-merge@1.0.1:
413 | version "1.0.1"
414 | resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713"
415 | integrity sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=
416 |
417 | vary@^1, vary@~1.1.2:
418 | version "1.1.2"
419 | resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc"
420 | integrity sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=
421 |
--------------------------------------------------------------------------------