diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..6980f1f --- /dev/null +++ b/.gitignore @@ -0,0 +1,36 @@ +# dependencies (bun install) +node_modules + +# output +out +dist +*.tgz + +# code coverage +coverage +*.lcov + +# logs +logs +_.log +report.[0-9]_.[0-9]_.[0-9]_.[0-9]_.json + +# dotenv environment variable files +.env +.env.development.local +.env.test.local +.env.production.local +.env.local + +# caches +.eslintcache +.cache +*.tsbuildinfo + +# IntelliJ based IDEs +.idea + +# Finder (MacOS) folder config +.DS_Store + +emojis \ No newline at end of file diff --git a/bun.lock b/bun.lock new file mode 100644 index 0000000..071aaac --- /dev/null +++ b/bun.lock @@ -0,0 +1,25 @@ +{ + "lockfileVersion": 1, + "workspaces": { + "": { + "name": "emoji-download-steel", + "devDependencies": { + "@types/bun": "latest", + }, + "peerDependencies": { + "typescript": "^5", + }, + }, + }, + "packages": { + "@types/bun": ["@types/bun@1.2.11", "", { "dependencies": { "bun-types": "1.2.11" } }, "sha512-ZLbbI91EmmGwlWTRWuV6J19IUiUC5YQ3TCEuSHI3usIP75kuoA8/0PVF+LTrbEnVc8JIhpElWOxv1ocI1fJBbw=="], + + "@types/node": ["@types/node@22.15.3", "", { "dependencies": { "undici-types": "~6.21.0" } }, "sha512-lX7HFZeHf4QG/J7tBZqrCAXwz9J5RD56Y6MpP0eJkka8p+K0RY/yBTW7CYFJ4VGCclxqOLKmiGP5juQc6MKgcw=="], + + "bun-types": ["bun-types@1.2.11", "", { "dependencies": { "@types/node": "*" } }, "sha512-dbkp5Lo8HDrXkLrONm6bk+yiiYQSntvFUzQp0v3pzTAsXk6FtgVMjdQ+lzFNVAmQFUkPQZ3WMZqH5tTo+Dp/IA=="], + + "typescript": ["typescript@5.8.3", "", { "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" } }, "sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ=="], + + "undici-types": ["undici-types@6.21.0", "", {}, "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ=="], + } +} diff --git a/index.ts b/index.ts new file mode 100644 index 0000000..08ecf28 --- /dev/null +++ b/index.ts @@ -0,0 +1,517 @@ +const ICONS_NEXTGEN = Object.freeze({ + "button_mag": "<:ico_button_mag:1271212564122173552>", + "button_thermometer": "<:ico_button_thermometer:1263593823016062987>", + "button_trash": "<:ico_button_trash:1271212355883372716>", + "button_user_profile_swap": "<:ico_button_user_profile_swap:1263594003442700368>", + "button_translate": "<:ico_button_translate:1304161023288283249>", + + "button_chevron_left": "<:button_chevron_left:1263594121256374413>", + "button_chevron_right": "<:button_chevron_right:1263594132023279669>", + + "open_in_new": "<:nxt_ico_open_in_new:1363577624252649675>", + + "button_full_coverage": "<:ico_full_coverage:1341535912017793045>", + "button_wolfram_compute": "<:ico_wolfram_compute:1342276477269577758>", + + "gs_auto_awesome": "<:ico_gs_auto_awesome:1352186988416995380>", + + /* Brands */ + "brand": "<:nxt_ico_brand:1363557610573533365>", + "brand_gray": "<:nxt_ico_brand_gray:1363557640617329001>", + "brand_discord": "<:nxt_ico_discord:1363557748951748668>", + "brand_gitlab": "<:nxt_ico_brand_gitlab:1363557620404850791>", + "brand_google": "<:nxt_ico_brand_google:1363557630156476446>", + + /* Icon Toolkit */ + "analytics": "<:nxt_ico_analytics:1363556442103218358>", + "calendar": "<:nxt_ico_calendar:1363557651224461402>", + "clock": "<:nxt_ico_clock:1363557682853974188>", + "connection": "<:nxt_ico_connection:1363557703594672148>", + "connection_warning": "<:nxt_ico_connection_warning:1363557714747457556>", + "flag": "<:nxt_ico_flag:1363558782726049792>", + "hashmark": "<:nxt_ico_hashmark:1363557659977977978>", + "hashmark_warning": "<:nxt_ico_hashmask_warning:1363557670782632106>", + "home": "<:nxt_ico_home:1363558803324276968>", + "image": "<:nxt_ico_image:1363558822907613215>", + "image_stack": "<:nxt_ico_image_stack:1363558834043617370>", + "list_stack": "<:nxt_ico_list_stack:1363558867698712748>", + "newspaper": "<:nxt_ico_newspaper:1363559949950517518>", + "note": "<:nxt_ico_note:1363559965603926116>", + "padlock": "<:nxt_ico_lock:1363558889592721658>", + "pencil": "<:nxt_ico_pencil:1363559974189662279>", + "pencil_note": "<:nxt_ico_pencil_note:1363559984801124502>", + "planet": "<:nxt_ico_planet:1363559994729168906>", + "privacy_policy": "<:nxt_ico_privacy_policy:1363560893459464392>", + "qr": "<:nxt_ico_qr:1363560903894634557>", + "robot": "<:nxt_ico_robot:1363560971263541520>", + "rocket": "<:nxt_ico_rocket:1363573889359151275>", + "search": "<:nxt_ico_search:1363573898125381882>", + "search_square": "<:nxt_ico_search_square:1363573906505465986>", + "settings": "<:nxt_ico_settings:1363573916081197096>", + "shield": "<:nxt_ico_shield:1363573923177955470>", + "sparkles": "<:nxt_ico_sparkles:1363573949535096963>", + "tools": "<:nxt_ico_tools:1363574671227883591>", + + /* Discord */ + "discord_boost": "<:nxt_ico_boost:1363556530670272602>", + "discord_nitro": "<:nxt_ico_nitro:1363559957483749487>", + "discord_status_offline": "<:nxt_ico_disc_status_offline:1363557729855082697>", + "discord_status_online": "<:nxt_ico_disc_status_online:1363557739527409794>", + + "attachment": "<:nxt_ico_attachment_image:1363556507811184780>", + "attachment_file": "<:nxt_ico_attachment_file:1363556499162534049>", + "emoji": "<:nxt_ico_emoji:1363557759701876937>", + "forward": "<:nxt_ico_forward:1363558792746369045>", + "id": "<:nxt_ico_id:1363558813055189073>", + "link": "<:nxt_ico_link:1363558856776486982>", + "locale": "<:nxt_ico_locale:1363558878872080414>", + "message": "<:nxt_ico_message:1363559929524261074>", + "reply": "<:nxt_ico_reply:1363560954725535845>", + "slash": "<:nxt_ico_slash:1363573933567377448>", + "sticker": "<:nxt_ico_sticker:1363574636343853167>", + + "at": "<:nxt_ico_at:1363556490169946254>", + "audio": "<:nxt_ico_audio:1363556520809201724>", + "microphone": "<:nxt_ico_microphone:1363559939297116410>", + "stage": "<:nxt_ico_stage:1363573950684332263>", + + /* Users */ + "user": "<:nxt_ico_user:1363574680337780796>", + "user_circle": "<:nxt_ico_user_circle:1363574689087098990>", + "user_king": "<:nxt_ico_user_king:1363574707441373215>", + "user_group": "<:nxt_ico_user_group:1363574698570416358>", + "user_shield": "<:nxt_ico_user_shield:1363575244568137870>", + "user_stack": "<:nxt_ico_user_stack:1363575255016149224>", + + "arrow_down": "<:nxt_ico_arrow_down:1363556451574092037>", + "arrow_left": "<:nxt_ico_arrow_left:1363556461355073566>", + "arrow_right": "<:nxt_ico_arrow_right:1363556471303831552>", + "arrow_up": "<:nxt_ico_arrow_up:1363556479486922862>", + + "downvote": "<:nxt_ico_rate_downvote:1363560934676893918>", + "upvote": "<:nxt_ico_rate_upvote:1363560945103667380>", + + "album": "<:nxt_ico_album:1363556433848827954>", + "comments": "<:nxt_ico_comments:1363557692643344547>", + "playlist": "<:nxt_ico_playlist:1363560877537759342>", + "thumb_up": "<:nxt_ico_thumb_up:1363574661572591797>", + "thumb_down": "<:nxt_ico_thumb_down:1363574653213212682>", + "eye": "<:nxt_ico_eye:1363558773469479093>", + + "exclaim": "<:nxt_ico_exclaim:1363557770158411888>", + "exclaim_green": "<:nxt_ico_exclaim_green:1363558735955493207>", + "exclaim_pink": "<:nxt_ico_exclaim_pink:1363558745811980458>", + "exclaim_red": "<:nxt_ico_exclaim_red:1363558755245096991>", + "exclaim_yellow": "<:nxt_ico_exclaim_yellow:1363558764661182465>", + + "information": "<:nxt_ico_information:1363558844696887406>", + "question": "<:nxt_ico_question:1363560925407219792>", + "warning": "<:nxt_ico_warning:1363575266030391557>", + + /* Weds */ + "weds_air_quality_0": "<:nxt_ico_weds_quality_0:1363575285395492955>", + "weds_air_quality_1": "<:nxt_ico_weds_quality_1:1363575293671112735>", + "weds_air_quality_2": "<:nxt_ico_weds_quality_2:1363575303754088800>", + "weds_air_quality_3": "<:nxt_ico_weds_quality_3:1363575320925700248>", + "weds_air_quality_4": "<:nxt_ico_weds_quality_4:1363576106673770546>", + + "weds_uv_index_0": "<:nxt_ico_weds_uv_0:1363576126177284106>", + "weds_uv_index_1": "<:nxt_ico_weds_uv_1:1363576146469453975>", + "weds_uv_index_2": "<:nxt_ico_weds_uv_2:1363576155499659395>", + "weds_uv_index_3": "<:nxt_ico_weds_uv_3:1363576164651630743>", + "weds_uv_index_4": "<:nxt_ico_weds_uv_4:1363576174638403634>", + + "weds_moon": "<:nxt_ico_weds_moon:1363575276931645742> ", + "weds_sun": "<:nxt_ico_weds_sun:1363576116492632307> ", + + "weds_warning": "<:nextgen_ico_weds_warning:1329933496780722357>", + // These icon names (weds_warning_:warningId) have to be synced with the server (/utils_service/endpoints/weather.js). + "weds_warning_wind": "<:nextgen_ico_weds_warning_wind:1329933507006435359>", + "weds_warning_tropicalstorm": "<:nextgen_ico_weds_warning_tropica:1329933486819115079>", + "weds_warning_tornado": "<:nextgen_ico_weds_warning_tornado:1329933476522365101>", + "weds_warning_temperature": "<:nextgen_ico_weds_warning_heat:1329933467370258452>", + "weds_warning_frost": "<:nextgen_ico_weds_warning_frost:1329933455898837051>", + "weds_warning_flood": "<:nextgen_ico_weds_warning_flood:1329933447401046079>", +}) + +const ICONS = Object.freeze({ + "brand": "<:ico_brand_2024:1263593574478643221>", + "flask_incognito": "<:ico_flask_incognito:1263608937459224688>", + + "flask_mini": "<:ico_subt_flask:1263593669215256597>", + "subtext_lightbulb": "<:ico_subt_lightbulb:1263593690358616084>", + "subtext_translate": "<:ico_subtext_translate:1323844562875187291>", + + "button_mag": "<:ico_button_mag:1271212564122173552>", + "button_thermometer": "<:ico_button_thermometer:1263593823016062987>", + "button_trash": "<:ico_button_trash:1271212355883372716>", + "button_user_profile_swap": "<:ico_button_user_profile_swap:1263594003442700368>", + "button_translate": "<:ico_button_translate:1304161023288283249>", + + "button_chevron_left": "<:button_chevron_left:1263594121256374413>", + "button_chevron_right": "<:button_chevron_right:1263594132023279669>", + + "link_open_external": "<:ico_link_open_external:1266361666702934071>", + + "home": "<:ico_home:1263593114694586400>", + "image": "<:ico_image:1263593101755289610>", + "search": "<:ico_search:1263593084810301493>", + "shield": "<:ico_shield:1263593069530583171>", + "stars": " <:ico_stars:1263593055512957122>", + "tools": "<:ico_tools:1263593031903346698>", + + "agreements": "<:ico_agreements:1263592506017189988>", + "calendar": "<:ico_calendar:1263592493505577041>", + "certificate": "<:ico_certificate:1263592480461553794>", + "clock": "<:ico_clock:1263592462841020537>", + "definition": "<:ico_definition:1263592450136473684>", + "example": "<:ico_example:1263592408021471253>", + "equals": "<:ico_equals:1266486823992168468>", + "flag": "<:ico_flag:1263592391630127114>", + "list": "<:ico_list:1263592365994803306>", + "mag": "<:ico_mag:1263592345845108747>", + "note": "<:ico_note:1263592327856001105>", + "padlock": "<:ico_padlock:1263592313280528434>", + "pencil": "<:ico_pencil:1263592296570421351>", + "planet": "<:ico_planet:1263592281685098568>", + "qr": "<:ico_qr:1263592268053348393>", + "robot": "<:ico_robot:1263592241776164893>", + "settings": "<:ico_settings:1263592222784356402>", + "trend": "<:ico_trend:1263592191981256786>", + "visible": "<:ico_visible:1263592172436066374>", + + "activity": "<:ico_activity:1263591756570689682>", + "apps": "<:ico_apps:1271251455818469530>", + "attachment": "<:ico_attachment:1263591742452666378>", + "boost": "<:ico_boost:1263591721741193226>", + "discord": "<:ico_discord:1263591704439689226>", + "emoji": "<:ico_emoji:1263591687691833479>", + "id": "<:ico_id:1329911839693471834>", + "link": "<:ico_link:1263591669727629406>", + "locale": "<:ico_locale:1263591655143903314>", + "message": "<:ico_message:1263591634537545788>", + "nitro": "<:ico_nitro:1263591618603126865>", + "reply": "<:ico_reply:1263591597778407474>", + "slash": "<:ico_slash:1263591582884434091>", + "sticker": "<:ico_sticker:1263591567676145754>", + + "audio": "<:ico_audio:1263591286779412480>", + "channel": "<:ico_channel:1263591268211097662>", + "channel_nsfw": "<:ico_channel_nsfw:1263591241057173514>", + "mention": "<:ico_mention:1263591215429849189>", + "microphone": "<:ico_microphone:1263591199911051427>", + "stage": "<:ico_stage:1271252974529810482>", + + "user": "<:ico_user:1263590776617828462>", + "user_card": "<:ico_user_card:1263590467166277698>", + "user_king": "<:ico_user_king:1263590410228334637>", + "user_multiple": "<:ico_user_multiple:1263590373754929162>", + "user_profile": "<:ico_user_profile:1263590325927284827>", + "user_shield": "<:ico_user_shield:1263590283552231444>", + + "status_offline": "<:ico_status_offline:1263590209644134520>", + "status_online": "<:ico_status_online:1263590195333169204>", + + "arrow_down": "<:ico_arrow_down:1263589989778853928>", + "arrow_left": "<:ico_arrow_left:1263590017159139339>", + "arrow_right": "<:ico_arrow_right:1263590004886863902>", + "arrow_up": "<:ico_arrow_up:1263590030174195833>", + + "stat_comments": "<:ico_stat_comments:1263589816407162911>", + "stat_likes": "<:ico_stat_likes:1263589802289397903>", + "stat_people": "<:ico_stat_people:1263589790251618434>", + "stat_videos": "<:ico_stat_videos:1263589779258216508>", + "stat_views": "<:ico_stat_views:1263589767900299385>", + + "downvote": "<:ico_downvote:1263589702171103242>", + "upvote": "<:ico_upvote:1263589685243154515>", + + "gitlab": "<:ico_gitlab:1263589629999976561>", + + "generative_ai": "<:ico_generative_ai:1263589586387468349>", + "latency": "<:ico_latency:1263589536139710566>", + + "moon": "<:ico_moon:1263589209059496137> ", + "sun": "<:ico_sun:1263589195251716116> ", + + "exclaim_0": "<:ico_exclaim_0:1263588923670532106>", + "exclaim_1": "<:ico_exclaim_1:1263588911754510538>", + "exclaim_2": "<:ico_exclaim_2:1263588899670855712>", + "exclaim_3": "<:ico_exclaim_3:1263588890485457046>", + "exclaim_4": "<:ico_exclaim_4:1263588879307640883>", + "question_large": "<:ico_question_large:1263589058999750787>", + + // Used by weds + "air_quality_0": "<:ic_quality_0:1278416585739997184>", + "air_quality_1": "<:ic_quality_1:1278416596506906664>", + "air_quality_2": "<:ic_quality_2:1278416607055708251>", + "air_quality_3": "<:ic_quality_3:1278416621215420506>", + "air_quality_4": "<:ic_quality_4:1278416629973254175>", + + "uv_index_0": "<:ic_uv_0:1278416641633550336>", + "uv_index_1": "<:ic_uv_1:1278416651569856522>", + "uv_index_2": "<:ic_uv_2:1278416662974038118>", + "uv_index_3": "<:ic_uv_3:1278416673761919006>", + "uv_index_4": "<:ic_uv_4:1278416684763451485>", + + // These icon names (weather_:conditionId) have to be synced with the server. + "weather_blizzard": "<:ico_w_blizzard:1263583584850022460>", + "weather_blowing_snow": "<:ico_w_blowing_snow:1263583671726903377>", + "weather_clear_day": "<:ico_w_clear_day:1263583684158820383>", + "weather_clear_night": "<:ico_w_clear_night:1263583704069181622>", + "weather_cloudy": "<:ico_w_cloudy:1263583715704180879>", + "weather_drizzle": "<:ico_w_drizzle:1263583728769302609>", + "weather_flurries": "<:ico_w_flurries:1263583744053215333>", + "weather_haze_fog_dust_smoke": "<:ico_w_haze_fog_dust_smoke:1263583772885127188>", + "weather_heavy_rain": "<:ico_w_heavy_rain:1263583786428399717>", + "weather_heavy_snow": "<:ico_w_heavy_snow:1263583800957337640>", + "weather_icy": "<:ico_w_icy:1263583815717359658>", + "weather_isolated_scattered_thunderstorms_day": "<:ico_w_iso_scattered_tstorm_day:1263583831433150526>", + "weather_isolated_scattered_thunderstorms_night": "<:ico_w_iso_scattered_tstorm_night:1263584235847942246>", + "weather_isolated_thunderstorms": "<:ico_w_isolated_thunderstorms:1263584283264548986>", + "weather_mixed_rain_hail_sleet": "<:ico_w_mixed_rain_sleet_hail:1263584310598959185>", + "weather_mixed_rain_snow": "<:ico_w_mixed_rain_snow:1263584323752296468>", + "weather_mostly_clear_day": "<:ico_w_mostly_clear_day:1263584337471864986>", + "weather_mostly_clear_night": "<:ico_w_mostly_clear_night:1263584621493489784>", + "weather_mostly_cloudy_day": "<:ico_w_mostly_cloudy_day:1263584634793623575>", + "weather_mostly_cloudy_night": "<:ico_w_mostly_cloudy_night:1263584648508866662>", + "weather_partly_cloudy_day": "<:ico_w_partly_cloudy_day:1263584669644095558>", + "weather_partly_cloudy_night": "<:ico_w_partly_cloudy_night:1263584672844087316>", + "weather_scattered_showers_day": "<:ico_w_scattered_showers_day:1263584683657134101>", + "weather_scattered_showers_night": "<:ico_w_scattered_showers_night:1263584693555560478>", + "weather_scattered_snow_showers_day": "<:ico_w_scattered_snow_showers_day:1263584731178467449> ", + "weather_scattered_snow_showers_night": "<:ico_scattered_snow_showers_night:1263584941996904448>", + "weather_showers_rain": "<:ico_w_showers_rain:1263584960359567381>", + "weather_showers_snow": "<:ico_w_snow_showers_snow:1263584991552471171>", + "weather_sleet_hail": "<:ico_w_sleet_hail:1263584973697581140>", + "weather_strong_thunderstorms": "<:ico_w_strong_tstorms:1263585008589869056>", + "weather_tornado": "<:ico_w_tornado:1263585022552707154>", + "weather_tropical_storm_hurricane": "<:ico_w_tropical_storm_hurricane:1263585036058366003>", + "weather_very_cold": "<:very_cold:1278416835661926495>", + "weather_very_hot": "<:very_hot:1278416845560348732>", + "weather_windy": "<:ico_w_windy_breezy:1263585171849084968>", + + "weather_warning_generic": "<:ico_weather_warning:1269684384966119444>", + // These icon names (weather_warning_:warningId) have to be synced with the server. + "weather_warning_storm": "<:ico_weather_wind:1269680554140242066>", + "weather_warning_tropical_storm": "<:ico_weather_tropicalstorm:1269680544430428312>", + "weather_warning_tornado": "<:ico_weather_tornado:1269680535517794334>", + "weather_warning_heat": "<:ico_weather_heat:1269680524897681564>", + "weather_warning_frost": "<:ico_weather_frost:1269680515145797652>", + "weather_warning_flood": "<:ico_weather_flood:1269680505519865982>", + + /* Maps Experience */ + + "maps_location_pin": "<:maps_red_pin:1307493148800581643>", + + "maps_star": "<:ico_star:1306748432496463903>", + "maps_star_half": "<:ico_star_half:1306748464037761064>", + "maps_star_empty": "<:ico_star_empty_alt:1306748453187096598>", + + // These icon names (maps_:type_pin) have to be synced + // with the server (search_service/utils/places). + "maps_airport_pin": "<:maps_airport_pin:1307489862349492294>", + "maps_atm_pin": "<:maps_atm_pin:1307491755188555898>", + "maps_bank_dollar_pin": "<:maps_bank_dollar_pin:1307491765493698630>", + "maps_bank_euro_pin": "<:maps_bank_euro_pin:1307491810687320175>", + "maps_bank_intl_pin": "<:maps_bank_intl_pin:1307491820749455380>", + "maps_bank_jp_pin": "<:maps_bank_jp_pin:1307491870703747142>", + "maps_bank_pound_pin": "<:maps_bank_pound_pin:1307491883941101729>", + "maps_bank_rmb_pin": "<:maps_bank_rmb_pin:1307491895836016700>", + "maps_bank_won_pin": "<:maps_bank_won_pin:1307491909559779438>", + "maps_bar_pin": "<:maps_bar_pin:1307491920880205936>", + "maps_bike_pin": "<:maps_bike_pin:1307491931168837643>", + "maps_boating_pin": "<:maps_boating_pin:1307491944410382416>", + "maps_bridge_pin": "<:maps_bridge_pin:1307491957861388288>", + "maps_cafe_pin": "<:maps_cafe_pin:1307491969110511646>", + "maps_camera_pin": "<:maps_camera_pin:1307491997090582608>", + "maps_camping_pin": "<:maps_camping_pin:1307492059736969268>", + "maps_car_rental_pin": "<:maps_car_rental_pin:1307492307406426194>", + "maps_cemetery_jp_pin": "<:maps_cemetery_jp_pin:1307492318873391245>", + "maps_cemetery_pin": "<:maps_cemetery_pin:1307492328801566741>", + "maps_city_office_jp_pin": "<:maps_city_office_jp_pin:1307492339471745054>", + "maps_civic_bldg_pin": "<:maps_civic_bldg_pin:1307492350766874705>", + "maps_civic_bldg_red_pin": "<:maps_civic_bldg_red_pin:1307492360883798046>", + "maps_civil_office_jp_pin": "<:maps_civil_office_jp_pin:1307492371566690457>", + "maps_convenience_pin": "<:maps_convenience_pin:1307492382593384509>", + "maps_dice_pin": "<:maps_dice_pin:1307492393494380594>", + "maps_dolphin_pin": "<:maps_dolphin_pin:1307492405636894822>", + "maps_dot_gray_pin": "<:maps_dot_gray_pin:1307492434980114492>", + "maps_dot_green_pin": "<:maps_dot_green_pin:1307492525841453157>", + "maps_dot_light_gray_pin": "<:maps_dot_light_gray_pin:1307492536067031060>", + "maps_dot_red_pin": "<:maps_dot_red_pin:1307492545793622036>", + "maps_ev_pin": "<:maps_ev_pin:1307492558217285652>", + "maps_event_venue_pin": "<:maps_event_venue_pin:1307492569927647293>", + "maps_ferriswheel_pin": "<:maps_ferriswheel_pin:1307492583135645770>", + "maps_fire_jp_pin": "<:maps_fire_jp_pin:1307492593587978251>", + "maps_fishing_pin": "<:maps_fishing_pin:1307492603637403708>", + "maps_flower_pin": "<:maps_flower_pin:1307492617017229342>", + "maps_gas_pin": "<:maps_gas_pin:1307492627561709649>", + "maps_glass_pin": "<:maps_glass_pin:1307492648109477960>", + "maps_golf_pin": "<:maps_golf_pin:1307492660591722570>", + "maps_government_cn_pin": "<:maps_government_cn_pin:1307492671157440522>", + "maps_hiking_pin": "<:maps_hiking_pin:1307492767307530262>", + "maps_historic_cn_pin": "<:maps_historic_cn_pin:1307492779211096204>", + "maps_historic_pin": "<:maps_historic_pin:1307492790988574750>", + "maps_hospital_pin": "<:maps_hospital_pin:1307492801147310111>", + "maps_hotspring_pin": "<:maps_hotspring_pin:1307492810987147299>", + "maps_library_pin": "<:maps_library_pin:1307492821879492770>", + "maps_lighthouse_pin": "<:maps_lighthouse_pin:1307492833837580338>", + "maps_lodging_pin": "<:maps_lodging_pin:1307492844952358922>", + "maps_medical_pin": "<:maps_medical_pin:1307492856872566896>", + "maps_monument_pin": "<:maps_monument_pin:1307492867627028511>", + "maps_mountain_pin": "<:maps_mountain_pin:1307492876674138243>", + "maps_movie_pin": "<:maps_movie_pin:1307492902561382410>", + "maps_museum_jp_pin": "<:maps_museum_jp_pin:1307492943220703352>", + "maps_museum_pin": "<:maps_museum_pin:1307493021268574349>", + "maps_note_pin": "<:maps_note_pin:1307493031485902950>", + "maps_palette_pin": "<:maps_palette_pin:1307493053287890964>", + "maps_parking_pin": "<:maps_parking_pin:1307493063786238042>", + "maps_paw_pin": "<:maps_paw_pin:1307493075609981020>", + "maps_pharmacy_pin": "<:maps_pharmacy_pin:1307493086586212532>", + "maps_police_jp_pin": "<:maps_police_jp_pin:1307493097726410802>", + "maps_police_pin": "<:maps_police_pin:1307493109365608528>", + "maps_postoffice_jp_pin": "<:maps_postoffice_jp_pin:1307493121340215316>", + "maps_postoffice_pin": "<:maps_postoffice_pin:1307493134158266429>", + "maps_relic_jp_pin": "<:maps_relic_jp_pin:1307493185194561577>", + "maps_resort_pin": "<:maps_resort_pin:1307493196099747911>", + "maps_restaurant_pin": "<:maps_restaurant_pin:1307493206493237348>", + "maps_restroom_pin": "<:maps_restroom_pin:1307493216916082698>", + "maps_school_pin": "<:maps_school_pin:1307493226734948393>", + "maps_shopping_pin": "<:maps_shopping_pin:1307493252462678107>", + "maps_shoppingcart_pin": "<:maps_shoppingcart_pin:1307493264848453652>", + "maps_stadium_pin": "<:maps_stadium_pin:1307493275812237372>", + "maps_street_pin": "<:maps_street_pin:1307493286067306576>", + "maps_theater_pin": "<:maps_theater_pin:1307493296096149505>", + "maps_transit_pin": "<:maps_transit_pin:1307493312693010492>", + "maps_tree_pin": "<:maps_tree_pin:1307493327658291281>", + "maps_worship_buddhist_pin": "<:maps_worship_buddhist_pin:1307493338156503131>", + "maps_worship_christian_pin": "<:maps_worship_christian_pin:1307493348688396408>", + "maps_worship_dharma_pin": "<:maps_worship_dharma_pin:1307493368028201020>", + "maps_worship_hindu_pin": "<:maps_worship_hindu_pin:1307493380053270608>", + "maps_worship_jain_pin": "<:maps_worship_jain_pin:1307493390987821117>", + "maps_worship_jewish_pin": "<:maps_worship_jewish_pin:1307493402396459091>", + "maps_worship_mormon_pin": "<:maps_worship_mormon_pin:1307493432834392087>", + "maps_worship_shinto_pin": "<:maps_worship_shinto_pin:1307493443693707356>", + "maps_worship_sikh_pin": "<:maps_worship_sikh_pin:1307493454053376020>", + "maps_worship_temple_pin": "<:maps_worship_temple_pin:1307493467793915924>", + + /* Various Brand Icons */ + "brand_google_gemini": "<:brand_google_gemini:1320506533003530270>", + "brand_google_palm2": "<:brand_google_palm2:1321959401376186492>", + + "information": "<:ico_information:1263590946226835510>", + "question": "<:ico_question:1263590898906697800>", + "warning": "<:ico_warning:1263590857072967832>", + + // Internal Icons + "empty": "<:ico_empty:1263591098740113478>", + + // Legacy Icon Compat + "success_simple": "<:ico_check:1263594912692178974>", + "failiure_simple": "<:ico_cross:1263594899048235100>", + + /* + Webhook Icons + + These emoji are located on the + china (682672131359637534) server + since webhooks can't access bot-owned emoji. + */ + "webhook_exclaim_0": "<:ico_exclaim_0:1321960522547068938>", + "webhook_exclaim_1": "<:ico_exclaim_1:1321960524300292146> ", + "webhook_exclaim_2": "<:ico_exclaim_2:1321960526162694225> ", + "webhook_exclaim_3": "<:ico_exclaim_3:1321960528058253524> ", + "webhook_exclaim_4": "<:ico_exclaim_4:1321960529811738776>", +}) + +const GUILD_FEATURE_ICONS_REDESIGN = Object.freeze({ + "ActivitiesIcon": "<:ico_d_activities:1263595238929334272>", + "AnnouncementsIcon": "<:ico_d_announcements:1263595270684545205>", + "BadgeIcon": "<:ico_d_badge:1263595290363957342>", + "BeakerIcon": "<:ico_d_beaker:1263595306184867840>", + "BillIcon": "<:ico_d_bill:1263595324090482719>", + "BoostTier3Icon": "<:iico_d_boosttier3:1263595349667352668>", + "BrowserIcon": "<:ico_d_browser:1263595374778515649>", + "ChatArrowRightIcon": "<:ico_d_chatarrowrighticon:1362501997697171487>", + "CircleQuestionIcon": "<:ico_d_circlequestion:1263595522921337025>", + "ClansIcons": "<:ico_d_clans:1271207373650006117>", + "ClockWarningIcon": "<:ico_d_clockwarning:1263595576520474714>", + "CompassIcon": "<:ico_d_compass:1263595614122409984>", + "FileUpIcon": "<:ico_d_fileupicon:1362499096518201364>", + "ForumIcon": "<:ico_d_forum:1263595652680650824> ", + "GameControllerIcon": "<:ico_d_gamecontroller:1263595688323846225>", + "GifIcon": "<:ico_d_gif:1263595715129643129>", + "GlobeEarthIcon": "<:ico_d_globeearth:1263595760054960161>", + "GroupIcon": "<:ico_d_group:1263595799275770007>", + "HeadphonesIcon": "<:ico_d_headphonesicon:1362498276447752435>", + "HomeIcon": "<:ico_d_home:1263596088821026938>", + "HubIcon": "<:ico_d_hub:1263596112229568512>", + "ImageIcon": "<:ico_d_imageicon:1362502720635797555>", + "ImagesIcon": "<:ico_d_images:1263596134061051935>", + "LinkIcon": "<:ico_d_link:1263596153434407032>", + "NewUserLargeIcon": "<:ico_d_newuserlarge:1263596178725933137>", + "PaintbrushThickIcon": "<:ico_d_paintbrushthick:1263596221524869164>", + "PartnerIcon": "<:ico_dc_partnerflowerbadge:1263601192643199077>", + "PencilSparkleIcon": "<:ico_d_pencilsparkleicon:1362500937859596419>", + "PiggyBankIcon": "<:ico_d_piggybank:1263596275853688944>", + "ReactionIcon": "<:ico_d_reaction:1263596296544194703>", + "RobotIcon": "<:ico_d_robot:1263596312314777782>", + "ServerIcon": "<:ico_d_server:1263596330400354314>", + "ShieldIcon": "<:ico_d_shield:1263596397924712570>", + "ShieldUserIcon": "<:ico_d_shielduser:1263596413829386292>", + "SignPostIcon": "<:ico_d_signpost:1263596376554737674>", + "SlashBoxIcon": "<:ico_d_slashbox:1263596429432328273>", + "SoundboardIcon": "<:ico_d_soundboard:1263596446301683825>", + "SparklesIcon": "<:ico_d_sparkles:1263596462764462192>", + "StaffBadgeIcon": "<:ico_d_staffbadge:1263596482519502868>", + "StageIcon": "<:ico_d_stageicon:1362498165202227270>", + "SuperReactionIcon": "<:ico_d_superreaction:1263596497283579957>", + "TagIcon": "<:ico_d_tag:1263596510994501745>", + "TextIcon": "<:ico_d_text:1263596525288685579>", + "ThreadIcon": "<:ico_d_thread:1263596544486146068>", + "TicketIcon": "<:ico_d_ticket:1263596560172716103>", + "TopicsIcon": "<:ico_d_topics:1263596574978867240>", + "TreehouseIcon": "<:ico_d_treehouse:1263596587763105843>", + "UserIcon": "<:ico_d_user:1263596600891281510>", + "UserPlusIcon": "<:ico_d_userplus:1263596620059246752>", + "UserShieldIcon": "<:ico_d_usershield:1263596641450066051>", + "VerifiedIcon": "<:ico_dc_verifiedflowerbadge:1263600898685272184>", + "VideoIcon": "<:ico_d_videoicon:1362498220994855077>", + "VoiceIcon": "<:ico_d_voicenormal:1263596678087446548>", +}) + +const FUNNY_CAT_ICONS = { + 1: "<:ico_garf_gm:1263608611645558814>", + 2: "<:ico_garf_gn:1263608597179404319>", + 3: "<:ico_garf_funnycat:1263608584390971498>", + 4: "<:ico_garf_garthumbsup:1263608571929694353>" +} + +const ALL_ICONS = Object.values({ + ...ICONS_NEXTGEN, + ...ICONS, + ...GUILD_FEATURE_ICONS_REDESIGN, + ...FUNNY_CAT_ICONS +}) + +function parseEmoji(text: string) { + const decodedText = text.includes('%') ? decodeURIComponent(text) : text; + if (!decodedText.includes(':')) return { animated: false, name: decodedText, id: undefined }; + const match = decodedText.match(/?/); + return match && { animated: Boolean(match[1]), name: match[2], id: match[3] }; +} + +for await (const icon of ALL_ICONS) { + const parsed = parseEmoji(icon); + + const iconReq = await fetch(`https://cdn.discordapp.com/emojis/${parsed.id}.png?size=4096`) + if (!iconReq.ok) { + console.error(`Failed to fetch icon: ${icon}`); + continue; + } + const iconData = await iconReq.arrayBuffer(); + + await Bun.write(`./emojis/${parsed?.name}.png`, iconData) + console.log(`Successfully saved icon: ${parsed?.name}.png`); +} \ No newline at end of file diff --git a/package.json b/package.json new file mode 100644 index 0000000..5960d1b --- /dev/null +++ b/package.json @@ -0,0 +1,12 @@ +{ + "name": "emoji-download-steel", + "module": "index.ts", + "type": "module", + "private": true, + "devDependencies": { + "@types/bun": "latest" + }, + "peerDependencies": { + "typescript": "^5" + } +} diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 0000000..9c62f74 --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,28 @@ +{ + "compilerOptions": { + // Environment setup & latest features + "lib": ["ESNext"], + "target": "ESNext", + "module": "ESNext", + "moduleDetection": "force", + "jsx": "react-jsx", + "allowJs": true, + + // Bundler mode + "moduleResolution": "bundler", + "allowImportingTsExtensions": true, + "verbatimModuleSyntax": true, + "noEmit": true, + + // Best practices + "strict": true, + "skipLibCheck": true, + "noFallthroughCasesInSwitch": true, + "noUncheckedIndexedAccess": true, + + // Some stricter flags (disabled by default) + "noUnusedLocals": false, + "noUnusedParameters": false, + "noPropertyAccessFromIndexSignature": false + } +}