presence.ts 38 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746
  1. const presence = new Presence({
  2. clientId: '996589941926670366',
  3. })
  4. const startTimestamp = Math.floor(Date.now() / 1000)
  5. interface Stauts {
  6. file?: string
  7. workspace?: string
  8. editor?: {
  9. lang?: string
  10. }
  11. }
  12. enum ActivityAssets {
  13. Logo = 'https://cdn.rcd.gg/PreMiD/websites/V/vscode.dev/assets/logo.png',
  14. Ahk = 'https://cdn.rcd.gg/PreMiD/websites/V/vscode.dev/assets/0.png',
  15. Android = 'https://cdn.rcd.gg/PreMiD/websites/V/vscode.dev/assets/1.png',
  16. Astro = 'https://cdn.rcd.gg/PreMiD/websites/V/vscode.dev/assets/2.png',
  17. Arduino = 'https://cdn.rcd.gg/PreMiD/websites/V/vscode.dev/assets/3.png',
  18. Autoit = 'https://cdn.rcd.gg/PreMiD/websites/V/vscode.dev/assets/4.png',
  19. Brainfuck = 'https://cdn.rcd.gg/PreMiD/websites/V/vscode.dev/assets/5.png',
  20. Applescript = 'https://cdn.rcd.gg/PreMiD/websites/V/vscode.dev/assets/6.png',
  21. Appveyor = 'https://cdn.rcd.gg/PreMiD/websites/V/vscode.dev/assets/7.png',
  22. Asp = 'https://cdn.rcd.gg/PreMiD/websites/V/vscode.dev/assets/8.png',
  23. Assembly = 'https://cdn.rcd.gg/PreMiD/websites/V/vscode.dev/assets/9.png',
  24. Angular = 'https://cdn.rcd.gg/PreMiD/websites/V/vscode.dev/assets/10.png',
  25. Ansible = 'https://cdn.rcd.gg/PreMiD/websites/V/vscode.dev/assets/11.png',
  26. Babel = 'https://cdn.rcd.gg/PreMiD/websites/V/vscode.dev/assets/12.png',
  27. Bower = 'https://cdn.rcd.gg/PreMiD/websites/V/vscode.dev/assets/13.png',
  28. Bat = 'https://cdn.rcd.gg/PreMiD/websites/V/vscode.dev/assets/14.png',
  29. Coffee = 'https://cdn.rcd.gg/PreMiD/websites/V/vscode.dev/assets/15.png',
  30. Crystal = 'https://cdn.rcd.gg/PreMiD/websites/V/vscode.dev/assets/16.png',
  31. Cpp = 'https://cdn.rcd.gg/PreMiD/websites/V/vscode.dev/assets/17.png',
  32. Css = 'https://cdn.rcd.gg/PreMiD/websites/V/vscode.dev/assets/18.png',
  33. D = 'https://cdn.rcd.gg/PreMiD/websites/V/vscode.dev/assets/19.png',
  34. Codeclimate = 'https://cdn.rcd.gg/PreMiD/websites/V/vscode.dev/assets/20.png',
  35. Clojure = 'https://cdn.rcd.gg/PreMiD/websites/V/vscode.dev/assets/21.png',
  36. Cmake = 'https://cdn.rcd.gg/PreMiD/websites/V/vscode.dev/assets/22.png',
  37. Csharp = 'https://cdn.rcd.gg/PreMiD/websites/V/vscode.dev/assets/23.png',
  38. Circleci = 'https://cdn.rcd.gg/PreMiD/websites/V/vscode.dev/assets/24.png',
  39. Cssmap = 'https://cdn.rcd.gg/PreMiD/websites/V/vscode.dev/assets/25.png',
  40. Dart = 'https://cdn.rcd.gg/PreMiD/websites/V/vscode.dev/assets/26.png',
  41. C = 'https://cdn.rcd.gg/PreMiD/websites/V/vscode.dev/assets/27.png',
  42. Cargo = 'https://cdn.rcd.gg/PreMiD/websites/V/vscode.dev/assets/28.png',
  43. Cuda = 'https://cdn.rcd.gg/PreMiD/websites/V/vscode.dev/assets/29.png',
  44. Editorconfig = 'https://cdn.rcd.gg/PreMiD/websites/V/vscode.dev/assets/30.png',
  45. Erlang = 'https://cdn.rcd.gg/PreMiD/websites/V/vscode.dev/assets/31.png',
  46. Elixir = 'https://cdn.rcd.gg/PreMiD/websites/V/vscode.dev/assets/32.png',
  47. Firebase = 'https://cdn.rcd.gg/PreMiD/websites/V/vscode.dev/assets/33.png',
  48. Elm = 'https://cdn.rcd.gg/PreMiD/websites/V/vscode.dev/assets/34.png',
  49. Denizen = 'https://cdn.rcd.gg/PreMiD/websites/V/vscode.dev/assets/35.png',
  50. Debugging = 'https://cdn.rcd.gg/PreMiD/websites/V/vscode.dev/assets/36.png',
  51. Flowconfig = 'https://cdn.rcd.gg/PreMiD/websites/V/vscode.dev/assets/37.png',
  52. Docker = 'https://cdn.rcd.gg/PreMiD/websites/V/vscode.dev/assets/38.png',
  53. Fsharp = 'https://cdn.rcd.gg/PreMiD/websites/V/vscode.dev/assets/39.png',
  54. Eslint = 'https://cdn.rcd.gg/PreMiD/websites/V/vscode.dev/assets/40.png',
  55. Env = 'https://cdn.rcd.gg/PreMiD/websites/V/vscode.dev/assets/41.png',
  56. Ejs = 'https://cdn.rcd.gg/PreMiD/websites/V/vscode.dev/assets/42.png',
  57. Gatsbyjs = 'https://cdn.rcd.gg/PreMiD/websites/V/vscode.dev/assets/43.png',
  58. Delphi = 'https://cdn.rcd.gg/PreMiD/websites/V/vscode.dev/assets/44.png',
  59. Hjson = 'https://cdn.rcd.gg/PreMiD/websites/V/vscode.dev/assets/45.png',
  60. Groovy = 'https://cdn.rcd.gg/PreMiD/websites/V/vscode.dev/assets/46.png',
  61. Gemfile = 'https://cdn.rcd.gg/PreMiD/websites/V/vscode.dev/assets/47.png',
  62. Haxe = 'https://cdn.rcd.gg/PreMiD/websites/V/vscode.dev/assets/48.png',
  63. Handlebars = 'https://cdn.rcd.gg/PreMiD/websites/V/vscode.dev/assets/49.png',
  64. Gulp = 'https://cdn.rcd.gg/PreMiD/websites/V/vscode.dev/assets/50.png',
  65. Graphql = 'https://cdn.rcd.gg/PreMiD/websites/V/vscode.dev/assets/51.png',
  66. Godot = 'https://cdn.rcd.gg/PreMiD/websites/V/vscode.dev/assets/52.png',
  67. Go = 'https://cdn.rcd.gg/PreMiD/websites/V/vscode.dev/assets/53.png',
  68. Html = 'https://cdn.rcd.gg/PreMiD/websites/V/vscode.dev/assets/54.png',
  69. Gradle = 'https://cdn.rcd.gg/PreMiD/websites/V/vscode.dev/assets/55.png',
  70. Haskell = 'https://cdn.rcd.gg/PreMiD/websites/V/vscode.dev/assets/56.png',
  71. Git = 'https://cdn.rcd.gg/PreMiD/websites/V/vscode.dev/assets/57.png',
  72. Heroku = 'https://cdn.rcd.gg/PreMiD/websites/V/vscode.dev/assets/58.png',
  73. Harbour = 'https://cdn.rcd.gg/PreMiD/websites/V/vscode.dev/assets/59.png',
  74. Jupyter = 'https://cdn.rcd.gg/PreMiD/websites/V/vscode.dev/assets/60.png',
  75. Idle = 'https://cdn.rcd.gg/PreMiD/websites/V/vscode.dev/assets/61.png',
  76. Json = 'https://cdn.rcd.gg/PreMiD/websites/V/vscode.dev/assets/62.png',
  77. Julia = 'https://cdn.rcd.gg/PreMiD/websites/V/vscode.dev/assets/63.png',
  78. IdleVscodeInsiders = 'https://cdn.rcd.gg/PreMiD/websites/V/vscode.dev/assets/64.png',
  79. Js = 'https://cdn.rcd.gg/PreMiD/websites/V/vscode.dev/assets/65.png',
  80. Jest = 'https://cdn.rcd.gg/PreMiD/websites/V/vscode.dev/assets/66.png',
  81. Jsx = 'https://cdn.rcd.gg/PreMiD/websites/V/vscode.dev/assets/67.png',
  82. Laravel = 'https://cdn.rcd.gg/PreMiD/websites/V/vscode.dev/assets/68.png',
  83. Java = 'https://cdn.rcd.gg/PreMiD/websites/V/vscode.dev/assets/69.png',
  84. Jsmap = 'https://cdn.rcd.gg/PreMiD/websites/V/vscode.dev/assets/70.png',
  85. IdleVscode = 'https://cdn.rcd.gg/PreMiD/websites/V/vscode.dev/assets/71.png',
  86. Kotlin = 'https://cdn.rcd.gg/PreMiD/websites/V/vscode.dev/assets/72.png',
  87. Http = 'https://cdn.rcd.gg/PreMiD/websites/V/vscode.dev/assets/73.png',
  88. Jar = 'https://cdn.rcd.gg/PreMiD/websites/V/vscode.dev/assets/74.png',
  89. Log = 'https://cdn.rcd.gg/PreMiD/websites/V/vscode.dev/assets/75.png',
  90. Livescript = 'https://cdn.rcd.gg/PreMiD/websites/V/vscode.dev/assets/76.png',
  91. Lisp = 'https://cdn.rcd.gg/PreMiD/websites/V/vscode.dev/assets/77.png',
  92. Lua = 'https://cdn.rcd.gg/PreMiD/websites/V/vscode.dev/assets/78.png',
  93. Npm = 'https://cdn.rcd.gg/PreMiD/websites/V/vscode.dev/assets/79.png',
  94. Manifest = 'https://cdn.rcd.gg/PreMiD/websites/V/vscode.dev/assets/80.png',
  95. Metal = 'https://cdn.rcd.gg/PreMiD/websites/V/vscode.dev/assets/81.png',
  96. Nim = 'https://cdn.rcd.gg/PreMiD/websites/V/vscode.dev/assets/82.png',
  97. Marko = 'https://cdn.rcd.gg/PreMiD/websites/V/vscode.dev/assets/83.png',
  98. Makefile = 'https://cdn.rcd.gg/PreMiD/websites/V/vscode.dev/assets/84.png',
  99. Nix = 'https://cdn.rcd.gg/PreMiD/websites/V/vscode.dev/assets/85.png',
  100. Objc = 'https://cdn.rcd.gg/PreMiD/websites/V/vscode.dev/assets/86.png',
  101. Nodemon = 'https://cdn.rcd.gg/PreMiD/websites/V/vscode.dev/assets/87.png',
  102. Markdown = 'https://cdn.rcd.gg/PreMiD/websites/V/vscode.dev/assets/88.png',
  103. Markdownx = 'https://cdn.rcd.gg/PreMiD/websites/V/vscode.dev/assets/89.png',
  104. Postcss = 'https://cdn.rcd.gg/PreMiD/websites/V/vscode.dev/assets/90.png',
  105. Pascal = 'https://cdn.rcd.gg/PreMiD/websites/V/vscode.dev/assets/91.png',
  106. Pawn = 'https://cdn.rcd.gg/PreMiD/websites/V/vscode.dev/assets/92.png',
  107. Powershell = 'https://cdn.rcd.gg/PreMiD/websites/V/vscode.dev/assets/93.png',
  108. Python = 'https://cdn.rcd.gg/PreMiD/websites/V/vscode.dev/assets/94.png',
  109. Purescript = 'https://cdn.rcd.gg/PreMiD/websites/V/vscode.dev/assets/95.png',
  110. Processing = 'https://cdn.rcd.gg/PreMiD/websites/V/vscode.dev/assets/96.png',
  111. Php = 'https://cdn.rcd.gg/PreMiD/websites/V/vscode.dev/assets/97.png',
  112. Odin = 'https://cdn.rcd.gg/PreMiD/websites/V/vscode.dev/assets/98.png',
  113. Perl = 'https://cdn.rcd.gg/PreMiD/websites/V/vscode.dev/assets/99.png',
  114. Prettier = 'https://cdn.rcd.gg/PreMiD/websites/V/vscode.dev/assets/100.png',
  115. Prisma = 'https://cdn.rcd.gg/PreMiD/websites/V/vscode.dev/assets/101.png',
  116. Ocaml = 'https://cdn.rcd.gg/PreMiD/websites/V/vscode.dev/assets/102.png',
  117. Ponylang = 'https://cdn.rcd.gg/PreMiD/websites/V/vscode.dev/assets/103.png',
  118. Pug = 'https://cdn.rcd.gg/PreMiD/websites/V/vscode.dev/assets/104.png',
  119. Ruby = 'https://cdn.rcd.gg/PreMiD/websites/V/vscode.dev/assets/105.png',
  120. Sql = 'https://cdn.rcd.gg/PreMiD/websites/V/vscode.dev/assets/106.png',
  121. Sqf = 'https://cdn.rcd.gg/PreMiD/websites/V/vscode.dev/assets/107.png',
  122. R = 'https://cdn.rcd.gg/PreMiD/websites/V/vscode.dev/assets/108.png',
  123. Svelte = 'https://cdn.rcd.gg/PreMiD/websites/V/vscode.dev/assets/109.png',
  124. Scss = 'https://cdn.rcd.gg/PreMiD/websites/V/vscode.dev/assets/110.png',
  125. Terraform = 'https://cdn.rcd.gg/PreMiD/websites/V/vscode.dev/assets/111.png',
  126. Scala = 'https://cdn.rcd.gg/PreMiD/websites/V/vscode.dev/assets/112.png',
  127. Sourcepawn = 'https://cdn.rcd.gg/PreMiD/websites/V/vscode.dev/assets/113.png',
  128. Tex = 'https://cdn.rcd.gg/PreMiD/websites/V/vscode.dev/assets/114.png',
  129. Shell = 'https://cdn.rcd.gg/PreMiD/websites/V/vscode.dev/assets/115.png',
  130. Stylus = 'https://cdn.rcd.gg/PreMiD/websites/V/vscode.dev/assets/116.png',
  131. Swift = 'https://cdn.rcd.gg/PreMiD/websites/V/vscode.dev/assets/117.png',
  132. Rust = 'https://cdn.rcd.gg/PreMiD/websites/V/vscode.dev/assets/118.png',
  133. Svg = 'https://cdn.rcd.gg/PreMiD/websites/V/vscode.dev/assets/119.png',
  134. Tsmap = 'https://cdn.rcd.gg/PreMiD/websites/V/vscode.dev/assets/120.png',
  135. Vala = 'https://cdn.rcd.gg/PreMiD/websites/V/vscode.dev/assets/121.png',
  136. Vscode = 'https://cdn.rcd.gg/PreMiD/websites/V/vscode.dev/assets/122.png',
  137. V = 'https://cdn.rcd.gg/PreMiD/websites/V/vscode.dev/assets/123.png',
  138. Ts = 'https://cdn.rcd.gg/PreMiD/websites/V/vscode.dev/assets/124.png',
  139. Toml = 'https://cdn.rcd.gg/PreMiD/websites/V/vscode.dev/assets/125.png',
  140. Text = 'https://cdn.rcd.gg/PreMiD/websites/V/vscode.dev/assets/126.png',
  141. TypescriptDef = 'https://cdn.rcd.gg/PreMiD/websites/V/vscode.dev/assets/127.png',
  142. Vitestconfig = 'https://cdn.rcd.gg/PreMiD/websites/V/vscode.dev/assets/128.png',
  143. Twig = 'https://cdn.rcd.gg/PreMiD/websites/V/vscode.dev/assets/129.png',
  144. Viteconfig = 'https://cdn.rcd.gg/PreMiD/websites/V/vscode.dev/assets/130.png',
  145. Vb = 'https://cdn.rcd.gg/PreMiD/websites/V/vscode.dev/assets/131.png',
  146. Tsx = 'https://cdn.rcd.gg/PreMiD/websites/V/vscode.dev/assets/132.png',
  147. Turbo = 'https://cdn.rcd.gg/PreMiD/websites/V/vscode.dev/assets/133.png',
  148. Travis = 'https://cdn.rcd.gg/PreMiD/websites/V/vscode.dev/assets/134.png',
  149. VscodeInsiders = 'https://cdn.rcd.gg/PreMiD/websites/V/vscode.dev/assets/135.png',
  150. Yaml = 'https://cdn.rcd.gg/PreMiD/websites/V/vscode.dev/assets/136.png',
  151. Xml = 'https://cdn.rcd.gg/PreMiD/websites/V/vscode.dev/assets/137.png',
  152. Wasm = 'https://cdn.rcd.gg/PreMiD/websites/V/vscode.dev/assets/138.png',
  153. Vueconfig = 'https://cdn.rcd.gg/PreMiD/websites/V/vscode.dev/assets/139.png',
  154. Vue = 'https://cdn.rcd.gg/PreMiD/websites/V/vscode.dev/assets/140.png',
  155. Yarn = 'https://cdn.rcd.gg/PreMiD/websites/V/vscode.dev/assets/141.png',
  156. Webpack = 'https://cdn.rcd.gg/PreMiD/websites/V/vscode.dev/assets/142.png',
  157. Vscodeignore = 'https://cdn.rcd.gg/PreMiD/websites/V/vscode.dev/assets/143.png',
  158. Zig = 'https://cdn.rcd.gg/PreMiD/websites/V/vscode.dev/assets/144.png',
  159. }
  160. // https://github.com/iCrawl/discord-vscode/blob/master/src/data/languages.json @iCrawl
  161. // https://github.com/leonardssh/vscord/tree/main/assets/icons @leonardssh
  162. const KNOWN_LANGUAGES: { language: string, image: string }[] = [
  163. { language: 'abap', image: ActivityAssets.Text },
  164. { language: 'ansible', image: ActivityAssets.Ansible },
  165. { language: 'bat', image: ActivityAssets.Bat },
  166. { language: 'bibtex', image: ActivityAssets.Text },
  167. { language: 'clojure', image: ActivityAssets.Clojure },
  168. { language: 'coffeescript', image: ActivityAssets.Coffee },
  169. { language: 'c', image: ActivityAssets.C },
  170. { language: 'cpp', image: ActivityAssets.Cpp },
  171. { language: 'csharp', image: ActivityAssets.Csharp },
  172. { language: 'css', image: ActivityAssets.Css },
  173. { language: 'diff', image: ActivityAssets.Manifest },
  174. { language: 'dockerfile', image: ActivityAssets.Docker },
  175. { language: 'fsharp', image: ActivityAssets.Fsharp },
  176. { language: 'git-commit', image: ActivityAssets.Manifest },
  177. { language: 'git-rebase', image: ActivityAssets.Manifest },
  178. { language: 'go', image: ActivityAssets.Go },
  179. { language: 'groovy', image: ActivityAssets.Groovy },
  180. { language: 'handlebars', image: ActivityAssets.Handlebars },
  181. { language: 'haml', image: ActivityAssets.Text },
  182. { language: 'html', image: ActivityAssets.Html },
  183. { language: 'ini', image: ActivityAssets.Manifest },
  184. { language: 'java', image: ActivityAssets.Java },
  185. { language: 'javascript', image: ActivityAssets.Js },
  186. { language: 'javascriptreact', image: ActivityAssets.Jsx },
  187. { language: 'jsx', image: ActivityAssets.Jsx },
  188. { language: 'json', image: ActivityAssets.Json },
  189. { language: 'jsonc', image: ActivityAssets.Json },
  190. { language: 'jupyter', image: ActivityAssets.Jupyter },
  191. { language: 'latex', image: ActivityAssets.Text },
  192. { language: 'less', image: ActivityAssets.Text },
  193. { language: 'lua', image: ActivityAssets.Lua },
  194. { language: 'makefile', image: ActivityAssets.Makefile },
  195. { language: 'markdown', image: ActivityAssets.Markdown },
  196. { language: 'objective-c', image: ActivityAssets.Objc },
  197. { language: 'objective-cpp', image: ActivityAssets.Objc },
  198. { language: 'odin', image: ActivityAssets.Odin },
  199. { language: 'perl', image: ActivityAssets.Perl },
  200. { language: 'perl6', image: ActivityAssets.Perl },
  201. { language: 'php', image: ActivityAssets.Php },
  202. { language: 'plaintext', image: ActivityAssets.Text },
  203. { language: 'powershell', image: ActivityAssets.Powershell },
  204. { language: 'jade', image: ActivityAssets.Pug },
  205. { language: 'pug', image: ActivityAssets.Pug },
  206. { language: 'prisma', image: ActivityAssets.Prisma },
  207. { language: 'python', image: ActivityAssets.Python },
  208. { language: 'r', image: ActivityAssets.R },
  209. { language: 'razor', image: ActivityAssets.Html },
  210. { language: 'ruby', image: ActivityAssets.Ruby },
  211. { language: 'rust', image: ActivityAssets.Rust },
  212. { language: 'scss', image: ActivityAssets.Scss },
  213. { language: 'sass', image: ActivityAssets.Scss },
  214. { language: 'shaderlab', image: ActivityAssets.Manifest },
  215. { language: 'shellscript', image: ActivityAssets.Shell },
  216. { language: 'slim', image: ActivityAssets.Text },
  217. { language: 'sql', image: ActivityAssets.Sql },
  218. { language: 'stylus', image: ActivityAssets.Stylus },
  219. { language: 'swift', image: ActivityAssets.Swift },
  220. { language: 'typescript', image: ActivityAssets.Ts },
  221. { language: 'typescriptreact', image: ActivityAssets.Tsx },
  222. { language: 'tex', image: ActivityAssets.Tex },
  223. { language: 'vb', image: ActivityAssets.Vb },
  224. { language: 'vue', image: ActivityAssets.Vue },
  225. { language: 'vue-html', image: ActivityAssets.Vue },
  226. { language: 'xml', image: ActivityAssets.Xml },
  227. { language: 'xsl', image: ActivityAssets.Xml },
  228. { language: 'yaml', image: ActivityAssets.Yaml },
  229. ]
  230. const KNOWN_EXTENSIONS: { [key: string]: { image: string } } = {
  231. 'nodemon.json': { image: ActivityAssets.Nodemon },
  232. 'package.json': { image: ActivityAssets.Npm },
  233. 'turbo.json': { image: ActivityAssets.Turbo },
  234. '/\\.prettier((rc)|(\\.(toml|yml|yaml|json|js))?$){2}/i': {
  235. image: ActivityAssets.Prettier,
  236. },
  237. '/\\.eslint((rc|ignore)|(\\.(json|js))?$){2}/i': { image: ActivityAssets.Eslint },
  238. '/\\prettier.config.js/i': { image: ActivityAssets.Prettier },
  239. '/vue.config\\.(js|ts)/i': { image: ActivityAssets.Vueconfig },
  240. '/vite.config\\.(js|ts)/i': { image: ActivityAssets.Viteconfig },
  241. '/vitest.config\\.(js|ts|mjs)/i': { image: ActivityAssets.Vitestconfig },
  242. '/jest.config\\.(js|ts)/i': { image: ActivityAssets.Jest },
  243. '/gatsby-(browser|node|ssr|config)\\.js/i': { image: ActivityAssets.Gatsbyjs },
  244. '/webpack(\\.dev|\\.development|\\.prod|\\.production)?\\.config(\\.babel)?\\.(js|jsx|coffee|ts|json|json5|yaml|yml)/i': { image: ActivityAssets.Webpack },
  245. 'babel.config.js': { image: ActivityAssets.Babel },
  246. '.ahk': { image: ActivityAssets.Ahk },
  247. '.ahkl': { image: ActivityAssets.Ahk },
  248. '.astro': { image: ActivityAssets.Astro },
  249. 'androidmanifest.xml': { image: ActivityAssets.Android },
  250. '/^angular[^.]*\\.js$/i': { image: ActivityAssets.Angular },
  251. '.applescript': { image: ActivityAssets.Applescript },
  252. '/(\\.)?appveyor\\.yml/i': { image: ActivityAssets.Appveyor },
  253. '.ino': { image: ActivityAssets.Arduino },
  254. '.swf': { image: ActivityAssets.Text },
  255. '.as': { image: ActivityAssets.Text },
  256. '.jsfl': { image: ActivityAssets.Text },
  257. '.swc': { image: ActivityAssets.Text },
  258. '.asp': { image: ActivityAssets.Asp },
  259. '.asax': { image: ActivityAssets.Asp },
  260. '.ascx': { image: ActivityAssets.Asp },
  261. '.ashx': { image: ActivityAssets.Asp },
  262. '.asmx': { image: ActivityAssets.Asp },
  263. '.aspx': { image: ActivityAssets.Asp },
  264. '.axd': { image: ActivityAssets.Asp },
  265. '/\\.(l?a|[ls]?o|out|s|a51|asm|axf|elf|prx|puff|z80)$/i': {
  266. image: ActivityAssets.Assembly,
  267. },
  268. '.agc': { image: ActivityAssets.Assembly },
  269. '.ko': { image: ActivityAssets.Assembly },
  270. '.lst': { image: ActivityAssets.Assembly },
  271. '/\\.((c([+px]{2}?)?-?)?objdump|bsdiff|bin|dat|pak|pdb)$/i': {
  272. image: ActivityAssets.Assembly,
  273. },
  274. '.d-objdump': { image: ActivityAssets.Assembly },
  275. '/\\.gcode|\\.gco/i': { image: ActivityAssets.Assembly },
  276. '/\\.rpy[bc]$/i': { image: ActivityAssets.Assembly },
  277. '/\\.py[co]$/i': { image: ActivityAssets.Assembly },
  278. '.swp': { image: ActivityAssets.Assembly },
  279. '.DS_Store': { image: ActivityAssets.Assembly },
  280. '.au3': { image: ActivityAssets.Autoit },
  281. '/\\.babelrc/i': { image: ActivityAssets.Babel },
  282. '.bat': { image: ActivityAssets.Bat },
  283. '.batch': { image: ActivityAssets.Bat },
  284. '.cmd': { image: ActivityAssets.Bat },
  285. '/\\.(exe|com|msi)$/i': { image: ActivityAssets.Bat },
  286. '.reg': { image: ActivityAssets.Bat },
  287. '/^(\\.bowerrc|bower\\.json|Bowerfile)$/i': { image: ActivityAssets.Bower },
  288. '/\\.bf?$/i': { image: ActivityAssets.Brainfuck },
  289. '/\\.c$/i': { image: ActivityAssets.C },
  290. '/(cargo.toml|cargo.lock)/i': { image: ActivityAssets.Cargo },
  291. '.casc': { image: ActivityAssets.Text },
  292. '.cas': { image: ActivityAssets.Text },
  293. '.cfc': { image: ActivityAssets.Text },
  294. '.cfm': { image: ActivityAssets.Text },
  295. 'circle.yml': { image: ActivityAssets.Circleci },
  296. '.clj': { image: ActivityAssets.Clojure },
  297. '.cl2': { image: ActivityAssets.Clojure },
  298. '.cljc': { image: ActivityAssets.Clojure },
  299. '.cljx': { image: ActivityAssets.Clojure },
  300. '.hic': { image: ActivityAssets.Clojure },
  301. '/\\.cljs(cm)?$/i': { image: ActivityAssets.Clojure },
  302. '.cmake': { image: ActivityAssets.Cmake },
  303. '/^CMakeLists\\.txt$/': { image: ActivityAssets.Cmake },
  304. '/\\.codeclimate\\.(yml|json)/i': { image: ActivityAssets.Codeclimate },
  305. '.coffee': { image: ActivityAssets.Coffee },
  306. '.cjsx': { image: ActivityAssets.Coffee },
  307. '.coffee.ecr': { image: ActivityAssets.Coffee },
  308. '.coffee.erb': { image: ActivityAssets.Coffee },
  309. '.litcoffee': { image: ActivityAssets.Coffee },
  310. '.iced': { image: ActivityAssets.Coffee },
  311. '/\\.c[+px]{2}$|\\.cc$/i': { image: ActivityAssets.Cpp },
  312. '/\\.h[+px]{2}$/i': { image: ActivityAssets.Cpp },
  313. '/\\.[it]pp$/i': { image: ActivityAssets.Cpp },
  314. '/\\.(tcc|inl)$/i': { image: ActivityAssets.Cpp },
  315. '.cats': { image: ActivityAssets.Cpp },
  316. '.idc': { image: ActivityAssets.Cpp },
  317. '.w': { image: ActivityAssets.Cpp },
  318. '.nc': { image: ActivityAssets.Cpp },
  319. '.upc': { image: ActivityAssets.Cpp },
  320. '.xpm': { image: ActivityAssets.Cpp },
  321. '/\\.e?cr$/i': { image: ActivityAssets.Crystal },
  322. '.cs': { image: ActivityAssets.Csharp },
  323. '.csx': { image: ActivityAssets.Csharp },
  324. '.cshtml': { image: ActivityAssets.Html },
  325. '.css': { image: ActivityAssets.Css },
  326. '.css.map': { image: ActivityAssets.Cssmap },
  327. '.cu': { image: ActivityAssets.Cuda },
  328. '/\\.di?$/i': { image: ActivityAssets.D },
  329. '.dart': { image: ActivityAssets.Dart },
  330. '.dfm': { image: ActivityAssets.Delphi },
  331. '.dpr': { image: ActivityAssets.Delphi },
  332. '.dsc': { image: ActivityAssets.Denizen },
  333. '.dm': { image: ActivityAssets.Text },
  334. '.dme': { image: ActivityAssets.Text },
  335. '.dmm': { image: ActivityAssets.Text },
  336. '/^(Dockerfile|docker-compose)|\\.docker(file|ignore)$/i': {
  337. image: ActivityAssets.Docker,
  338. },
  339. '/^docker-sync\\.yml$/i': { image: ActivityAssets.Docker },
  340. '.editorconfig': { image: ActivityAssets.Editorconfig },
  341. '.ejs': { image: ActivityAssets.Ejs },
  342. '.ex': { image: ActivityAssets.Elixir },
  343. '/\\.(exs|l?eex)$/i': { image: ActivityAssets.Elixir },
  344. '/^mix\\.(exs?|lock)$/i': { image: ActivityAssets.Elixir },
  345. '.elm': { image: ActivityAssets.Elm },
  346. '.env': { image: ActivityAssets.Env },
  347. '.erl': { image: ActivityAssets.Erlang },
  348. '.beam': { image: ActivityAssets.Erlang },
  349. '.hrl': { image: ActivityAssets.Erlang },
  350. '.xrl': { image: ActivityAssets.Erlang },
  351. '.yrl': { image: ActivityAssets.Erlang },
  352. '.app.src': { image: ActivityAssets.Erlang },
  353. '/^Emakefile$/': { image: ActivityAssets.Erlang },
  354. '/^rebar(\\.config)?\\.lock$/i': { image: ActivityAssets.Erlang },
  355. '/(\\.firebaserc|firebase\\.json)/i': { image: ActivityAssets.Firebase },
  356. '.flowconfig': { image: ActivityAssets.Flowconfig },
  357. '.fs': { image: ActivityAssets.Fsharp },
  358. '.fsi': { image: ActivityAssets.Fsharp },
  359. '.fsscript': { image: ActivityAssets.Fsharp },
  360. '.fsx': { image: ActivityAssets.Fsharp },
  361. '/^Gemfile(\\.lock)?$/i': { image: ActivityAssets.Gemfile },
  362. '/^\\.git|^\\.keep$|\\.mailmap$/i': { image: ActivityAssets.Git },
  363. '.go': { image: ActivityAssets.Go },
  364. '.gd': { image: ActivityAssets.Godot },
  365. '.gradle': { image: ActivityAssets.Gradle },
  366. 'gradlew': { image: ActivityAssets.Gradle },
  367. '.gql': { image: ActivityAssets.Graphql },
  368. '.graphql': { image: ActivityAssets.Graphql },
  369. '.groovy': { image: ActivityAssets.Groovy },
  370. '.gvy': { image: ActivityAssets.Groovy },
  371. '.gy': { image: ActivityAssets.Groovy },
  372. '.gsh': { image: ActivityAssets.Groovy },
  373. '/gruntfile\\.(js|coffee)/i': { image: ActivityAssets.Text },
  374. 'gulpfile.js': { image: ActivityAssets.Gulp },
  375. '/\\.(hbs|handlebars|(mu)?stache)$/i': { image: ActivityAssets.Handlebars },
  376. '.prg': { image: ActivityAssets.Harbour },
  377. '.hbp': { image: ActivityAssets.Harbour },
  378. '.hbc': { image: ActivityAssets.Harbour },
  379. '.rc': { image: ActivityAssets.Harbour },
  380. '.fmg': { image: ActivityAssets.Harbour },
  381. '.hs': { image: ActivityAssets.Haskell },
  382. '.hsc': { image: ActivityAssets.Haskell },
  383. '.c2hs': { image: ActivityAssets.Haskell },
  384. '.lhs': { image: ActivityAssets.Haskell },
  385. '.hx': { image: ActivityAssets.Haxe },
  386. '.hxml': { image: ActivityAssets.Haxe },
  387. '/^procfile/i': { image: ActivityAssets.Heroku },
  388. 'heroku.yml': { image: ActivityAssets.Heroku },
  389. '.hjson': { image: ActivityAssets.Hjson },
  390. '/\\.x?html?$/i': { image: ActivityAssets.Html },
  391. '.http': { image: ActivityAssets.Http },
  392. '.rest': { image: ActivityAssets.Http },
  393. '.jar': { image: ActivityAssets.Jar },
  394. '.java': { image: ActivityAssets.Java },
  395. '.j2': { image: ActivityAssets.Text },
  396. '.jinja': { image: ActivityAssets.Text },
  397. '.js': { image: ActivityAssets.Js },
  398. '.es6': { image: ActivityAssets.Js },
  399. '.es': { image: ActivityAssets.Js },
  400. '.mjs': { image: ActivityAssets.Js },
  401. '.js.map': { image: ActivityAssets.Jsmap },
  402. '.json': { image: ActivityAssets.Json },
  403. '.jsonc': { image: ActivityAssets.Json },
  404. '.jsx': { image: ActivityAssets.Jsx },
  405. '/\\.(jil|jl)/i': { image: ActivityAssets.Julia },
  406. '.ipynb': { image: ActivityAssets.Jupyter },
  407. '.kt': { image: ActivityAssets.Kotlin },
  408. '.ktm': { image: ActivityAssets.Kotlin },
  409. '.kts': { image: ActivityAssets.Kotlin },
  410. '.less': { image: ActivityAssets.Text },
  411. '.lsp': { image: ActivityAssets.Lisp },
  412. '.lisp': { image: ActivityAssets.Lisp },
  413. '.l': { image: ActivityAssets.Lisp },
  414. '.nl': { image: ActivityAssets.Lisp },
  415. '.ny': { image: ActivityAssets.Lisp },
  416. '.podsl': { image: ActivityAssets.Lisp },
  417. '.sexp': { image: ActivityAssets.Lisp },
  418. '.ss': { image: ActivityAssets.Lisp },
  419. '.scm': { image: ActivityAssets.Lisp },
  420. '.ls': { image: ActivityAssets.Livescript },
  421. '.log': { image: ActivityAssets.Log },
  422. '.lua': { image: ActivityAssets.Lua },
  423. '.pd_lua': { image: ActivityAssets.Lua },
  424. '.rbxs': { image: ActivityAssets.Lua },
  425. '.wlua': { image: ActivityAssets.Lua },
  426. '/^Makefile/': { image: ActivityAssets.Makefile },
  427. '/^mk\\.config$/': { image: ActivityAssets.Makefile },
  428. '/\\.(mk|mak|make)$/i': { image: ActivityAssets.Makefile },
  429. '/^BSDmakefile$/i': { image: ActivityAssets.Makefile },
  430. '/^GNUmakefile$/i': { image: ActivityAssets.Makefile },
  431. '/^makefile\\.sco$/i': { image: ActivityAssets.Makefile },
  432. '/^Kbuild$/': { image: ActivityAssets.Makefile },
  433. '/^makefile$/': { image: ActivityAssets.Makefile },
  434. '/^mkfile$/i': { image: ActivityAssets.Makefile },
  435. '/^\\.?qmake$/i': { image: ActivityAssets.Makefile },
  436. '/\\.(h|geo|topo)$/i': { image: ActivityAssets.Manifest },
  437. '.cson': { image: ActivityAssets.Manifest },
  438. '.json5': { image: ActivityAssets.Manifest },
  439. '.ndjson': { image: ActivityAssets.Manifest },
  440. '.fea': { image: ActivityAssets.Manifest },
  441. '.json.eex': { image: ActivityAssets.Manifest },
  442. '.proto': { image: ActivityAssets.Manifest },
  443. '.pytb': { image: ActivityAssets.Manifest },
  444. '.pydeps': { image: ActivityAssets.Manifest },
  445. '/\\.pot?$/i': { image: ActivityAssets.Manifest },
  446. '.ejson': { image: ActivityAssets.Manifest },
  447. '.edn': { image: ActivityAssets.Manifest },
  448. '.eam.fs': { image: ActivityAssets.Manifest },
  449. '.qml': { image: ActivityAssets.Manifest },
  450. '.qbs': { image: ActivityAssets.Manifest },
  451. '.ston': { image: ActivityAssets.Manifest },
  452. '.ttl': { image: ActivityAssets.Manifest },
  453. '.rviz': { image: ActivityAssets.Manifest },
  454. '.syntax': { image: ActivityAssets.Manifest },
  455. '.webmanifest': { image: ActivityAssets.Manifest },
  456. '/^pkginfo$/': { image: ActivityAssets.Manifest },
  457. '/^mime\\.types$/i': { image: ActivityAssets.Manifest },
  458. '/^METADATA\\.pb$/': { image: ActivityAssets.Manifest },
  459. '/[\\/\\\\](?:magic[\\/\\\\]Magdir|file[\\/\\\\]magic)[\\/\\\\][-.\\w]+$/i': { image: ActivityAssets.Manifest },
  460. '/(\\\\|\\/)dev[-\\w]+\\1(?:[^\\\\\\/]+\\1)*(?!DESC|NOTES)(?:[A-Z][-A-Z]*)(?:\\.in)?$/': { image: ActivityAssets.Manifest },
  461. 'lib/icons/.icondb.js': { image: ActivityAssets.Manifest },
  462. '/\\.git[\\/\\\\](.*[\\/\\\\])?(HEAD|ORIG_HEAD|packed-refs|logs[\\/\\\\](.+[\\/\\\\])?[^\\/\\\\]+)$/': { image: ActivityAssets.Manifest },
  463. '/\\.(md|mdown|markdown|mkd|mkdown|mdwn|mkdn|rmd|ron|pmd)$/i': {
  464. image: ActivityAssets.Markdown,
  465. },
  466. '.mdx': { image: ActivityAssets.Markdownx },
  467. '.marko': { image: ActivityAssets.Marko },
  468. '.nim': { image: ActivityAssets.Nim },
  469. '.nims': { image: ActivityAssets.Nim },
  470. '.nimble': { image: ActivityAssets.Nim },
  471. '.nix': { image: ActivityAssets.Nix },
  472. '.npmrc': { image: ActivityAssets.Npm },
  473. '.npmignore': { image: ActivityAssets.Npm },
  474. '/\\.mm?$/i': { image: ActivityAssets.Objc },
  475. '.pch': { image: ActivityAssets.Objc },
  476. '.x': { image: ActivityAssets.Objc },
  477. '.ml': { image: ActivityAssets.Ocaml },
  478. '.mli': { image: ActivityAssets.Ocaml },
  479. '.eliom': { image: ActivityAssets.Ocaml },
  480. '.eliomi': { image: ActivityAssets.Ocaml },
  481. '.ml4': { image: ActivityAssets.Ocaml },
  482. '.mll': { image: ActivityAssets.Ocaml },
  483. '.mly': { image: ActivityAssets.Ocaml },
  484. '.mt': { image: ActivityAssets.Metal },
  485. '.odin': { image: ActivityAssets.Odin },
  486. '/\\.pas(cal)?$/i': { image: ActivityAssets.Pascal },
  487. '.lpr': { image: ActivityAssets.Pascal },
  488. '.p': { image: ActivityAssets.Pawn },
  489. '.inc': { image: ActivityAssets.Pawn },
  490. '.sma': { image: ActivityAssets.Pawn },
  491. '.pwn': { image: ActivityAssets.Pawn },
  492. '.sp': { image: ActivityAssets.Sourcepawn },
  493. '/\\.p(er)?l$/i': { image: ActivityAssets.Perl },
  494. '.al': { image: ActivityAssets.Perl },
  495. '.ph': { image: ActivityAssets.Perl },
  496. '.plx': { image: ActivityAssets.Perl },
  497. '.pm': { image: ActivityAssets.Perl },
  498. '/\\.(psgi|xs)$/i': { image: ActivityAssets.Perl },
  499. '.pl6': { image: ActivityAssets.Perl },
  500. '/\\.[tp]6$|\\.6pl$/i': { image: ActivityAssets.Perl },
  501. '/\\.(pm6|p6m)$/i': { image: ActivityAssets.Perl },
  502. '.6pm': { image: ActivityAssets.Perl },
  503. '.nqp': { image: ActivityAssets.Perl },
  504. '.p6l': { image: ActivityAssets.Perl },
  505. '.pod6': { image: ActivityAssets.Perl },
  506. '/^Rexfile$/': { image: ActivityAssets.Perl },
  507. '/\\.php([st\\d]|_cs)?$/i': { image: ActivityAssets.Php },
  508. '/^Phakefile/': { image: ActivityAssets.Php },
  509. '.pony': { image: ActivityAssets.Ponylang },
  510. '.pcss': { image: ActivityAssets.Postcss },
  511. '.ps1': { image: ActivityAssets.Powershell },
  512. '.psd1': { image: ActivityAssets.Powershell },
  513. '.psm1': { image: ActivityAssets.Powershell },
  514. '.ps1xml': { image: ActivityAssets.Powershell },
  515. '.prettierignore': { image: ActivityAssets.Prettier },
  516. 'prisma.yml': { image: ActivityAssets.Prisma },
  517. '.pde': { image: ActivityAssets.Processing },
  518. '.jade': { image: ActivityAssets.Pug },
  519. '.pug': { image: ActivityAssets.Pug },
  520. '.purs': { image: ActivityAssets.Purescript },
  521. '.py': { image: ActivityAssets.Python },
  522. '.ipy': { image: ActivityAssets.Python },
  523. '.isolate': { image: ActivityAssets.Python },
  524. '.pep': { image: ActivityAssets.Python },
  525. '.gyp': { image: ActivityAssets.Python },
  526. '.gypi': { image: ActivityAssets.Python },
  527. '.pyde': { image: ActivityAssets.Python },
  528. '.pyp': { image: ActivityAssets.Python },
  529. '.pyt': { image: ActivityAssets.Python },
  530. '.py3': { image: ActivityAssets.Python },
  531. '.pyi': { image: ActivityAssets.Python },
  532. '.pyw': { image: ActivityAssets.Python },
  533. '.tac': { image: ActivityAssets.Python },
  534. '.wsgi': { image: ActivityAssets.Python },
  535. '.xpy': { image: ActivityAssets.Python },
  536. '.rpy': { image: ActivityAssets.Python },
  537. '/\\.?(pypirc|pythonrc|python-venv)$/i': { image: ActivityAssets.Python },
  538. '/^(SConstruct|SConscript)$/': { image: ActivityAssets.Python },
  539. '/^(Snakefile|WATCHLISTS)$/': { image: ActivityAssets.Python },
  540. '/^wscript$/': { image: ActivityAssets.Python },
  541. '/\\.(r|Rprofile|rsx|rd)$/i': { image: ActivityAssets.R },
  542. '/\\.res?i?$/i': { image: ActivityAssets.Text },
  543. '/\\.(rb|ru|ruby|erb|gemspec|god|mspec|pluginspec|podspec|rabl|rake|opal)$/i': { image: ActivityAssets.Ruby },
  544. '/^\\.?(irbrc|gemrc|pryrc|ruby-(gemset|version))$/i': {
  545. image: ActivityAssets.Ruby,
  546. },
  547. '/^(Appraisals|(Rake|[bB]uild|Cap|Danger|Deliver|Fast|Guard|Jar|Maven|Pod|Puppet|Snap)file(\\.lock)?)$/': { image: ActivityAssets.Ruby },
  548. '/\\.(jbuilder|rbuild|rb[wx]|builder)$/i': { image: ActivityAssets.Ruby },
  549. '/^rails$/': { image: ActivityAssets.Ruby },
  550. '.watchr': { image: ActivityAssets.Ruby },
  551. '.rs': { image: ActivityAssets.Rust },
  552. '/\\.(sc|scala)$/i': { image: ActivityAssets.Scala },
  553. '.scss': { image: ActivityAssets.Scss },
  554. '.sass': { image: ActivityAssets.Scss },
  555. '/\\.(sh|rc|bats|bash|tool|install|command)$/i': { image: ActivityAssets.Shell },
  556. '/^(\\.?bash(rc|[-_]?(profile|login|logout|history|prompt))|_osc|config|install-sh|PKGBUILD)$/i': { image: ActivityAssets.Shell },
  557. '/\\.(ksh|mksh|pdksh)$/i': { image: ActivityAssets.Shell },
  558. '.sh-session': { image: ActivityAssets.Shell },
  559. '/\\.zsh(-theme|_history)?$|^\\.?(antigen|zpreztorc|zlogin|zlogout|zprofile|zshenv|zshrc)$/i': { image: ActivityAssets.Shell },
  560. '/\\.fish$|^\\.fishrc$/i': { image: ActivityAssets.Shell },
  561. '/^\\.?(login|profile)$/': { image: ActivityAssets.Shell },
  562. '.inputrc': { image: ActivityAssets.Shell },
  563. '.tmux': { image: ActivityAssets.Shell },
  564. '/^(configure|config\\.(guess|rpath|status|sub)|depcomp|libtool|compile)$/': { image: ActivityAssets.Shell },
  565. '/^\\/(private\\/)?etc\\/([^\\/]+\\/)*(profile$|nanorc$|rc\\.|csh\\.)/i': {
  566. image: ActivityAssets.Shell,
  567. },
  568. '/^\\.?cshrc$/i': { image: ActivityAssets.Shell },
  569. '.profile': { image: ActivityAssets.Shell },
  570. '.tcsh': { image: ActivityAssets.Shell },
  571. '.csh': { image: ActivityAssets.Shell },
  572. '.sk': { image: ActivityAssets.Text },
  573. '.sqf': { image: ActivityAssets.Sqf },
  574. '/\\.(my)?sql$/i': { image: ActivityAssets.Sql },
  575. '.ddl': { image: ActivityAssets.Sql },
  576. '.udf': { image: ActivityAssets.Sql },
  577. '.hql': { image: ActivityAssets.Sql },
  578. '.viw': { image: ActivityAssets.Sql },
  579. '.prc': { image: ActivityAssets.Sql },
  580. '.cql': { image: ActivityAssets.Sql },
  581. '.db2': { image: ActivityAssets.Sql },
  582. '/\\.(styl|stylus)$/i': { image: ActivityAssets.Stylus },
  583. '.svelte': { image: ActivityAssets.Svelte },
  584. '.svg': { image: ActivityAssets.Svg },
  585. '.swift': { image: ActivityAssets.Swift },
  586. '.tex': { image: ActivityAssets.Tex },
  587. '.ltx': { image: ActivityAssets.Tex },
  588. '.aux': { image: ActivityAssets.Tex },
  589. '.sty': { image: ActivityAssets.Tex },
  590. '.dtx': { image: ActivityAssets.Tex },
  591. '.cls': { image: ActivityAssets.Tex },
  592. '.ins': { image: ActivityAssets.Tex },
  593. '.lbx': { image: ActivityAssets.Tex },
  594. '.mkiv': { image: ActivityAssets.Tex },
  595. '.mkvi': { image: ActivityAssets.Tex },
  596. '.mkii': { image: ActivityAssets.Tex },
  597. '.texi': { image: ActivityAssets.Tex },
  598. '/^hyphen(ex)?\\.(cs|den|det|fr|sv|us)$/': { image: ActivityAssets.Tex },
  599. '/\\.te?xt$/i': { image: ActivityAssets.Text },
  600. '.rtf': { image: ActivityAssets.Text },
  601. '/\\.i?nfo$/i': { image: ActivityAssets.Text },
  602. '.msg': { image: ActivityAssets.Text },
  603. '/\\.(utxt|utf8)$/i': { image: ActivityAssets.Text },
  604. '.toml': { image: ActivityAssets.Toml },
  605. '.travis.yml': { image: ActivityAssets.Travis },
  606. '.ts.map': { image: ActivityAssets.Tsmap },
  607. '/.*\\.d\\.ts/i': { image: ActivityAssets.TypescriptDef },
  608. '.ts': { image: ActivityAssets.Ts },
  609. '.tsx': { image: ActivityAssets.Tsx },
  610. '.twig': { image: ActivityAssets.Twig },
  611. '.v': { image: ActivityAssets.V },
  612. '.vh': { image: ActivityAssets.V },
  613. '.vala': { image: ActivityAssets.Vala },
  614. '.vapi': { image: ActivityAssets.Vala },
  615. '.vb': { image: ActivityAssets.Vb },
  616. '.vbs': { image: ActivityAssets.Vb },
  617. '.vbhtml': { image: ActivityAssets.Vb },
  618. '.vbproj': { image: ActivityAssets.Vb },
  619. '.vba': { image: ActivityAssets.Text },
  620. '.vcxproj': { image: ActivityAssets.Text },
  621. '.vscodeignore': { image: ActivityAssets.Vscodeignore },
  622. '.vue': { image: ActivityAssets.Vue },
  623. '.wat': { image: ActivityAssets.Wasm },
  624. '.wast': { image: ActivityAssets.Wasm },
  625. '.wasm': { image: ActivityAssets.Wasm },
  626. '.xml': { image: ActivityAssets.Xml },
  627. '/\\.ya?ml$/i': { image: ActivityAssets.Yaml },
  628. '/^yarn(\\.lock)?$/i': { image: ActivityAssets.Yarn },
  629. '.yarnrc': { image: ActivityAssets.Yarn },
  630. '.zig': { image: ActivityAssets.Zig },
  631. '/\\.(tfvars|tf)$/i': { image: ActivityAssets.Terraform },
  632. }
  633. presence.on('UpdateData', async () => {
  634. const [
  635. detailIdling,
  636. customDetail,
  637. customState,
  638. customSmallText,
  639. customEmpty,
  640. timestamps,
  641. buttons,
  642. ] = await Promise.all([
  643. presence.getSetting<string>('customIdling'),
  644. presence.getSetting<string>('customDetail'),
  645. presence.getSetting<string>('customState'),
  646. presence.getSetting<string>('customImageText'),
  647. presence.getSetting<string>('customEmpty'),
  648. presence.getSetting<boolean>('timeStamps'),
  649. presence.getSetting<boolean>('buttons'),
  650. ])
  651. const presenceData: PresenceData = {
  652. largeImageKey: ActivityAssets.Logo,
  653. smallImageKey: ActivityAssets.Vscode,
  654. startTimestamp,
  655. }
  656. const status: Stauts = {
  657. file: document.querySelector('.tab.active a')?.textContent ?? undefined,
  658. workspace: document
  659. .querySelector('.pane-header > .codicon-explorer-view-icon')
  660. ?.getAttribute('aria-label') ?? undefined,
  661. editor: {
  662. lang: document.querySelector('#status\\.editor\\.mode')?.textContent ?? undefined,
  663. },
  664. }
  665. const { file, workspace, editor } = status
  666. const findExtension = Object.keys(KNOWN_EXTENSIONS).find((key) => {
  667. if (file?.endsWith(key))
  668. return true
  669. const match = /^\/(.*)\/([mgiy]+)$/.exec(key)
  670. if (!match)
  671. return false
  672. return new RegExp(match[1]!, match[2]).test(file ?? '')
  673. })
  674. if (!file || !workspace) {
  675. presenceData.details = detailIdling
  676. presenceData.largeImageKey = ActivityAssets.IdleVscode
  677. if (presenceData.buttons)
  678. delete presenceData.buttons
  679. }
  680. else {
  681. presenceData.state = Replace(customState, customEmpty)
  682. presenceData.details = Replace(customDetail, customEmpty)
  683. presenceData.smallImageText = Replace(customSmallText, customEmpty)
  684. presenceData.largeImageKey = KNOWN_EXTENSIONS[findExtension ?? '']?.image
  685. || KNOWN_LANGUAGES.find(key =>
  686. key.language.includes(editor?.lang?.toLowerCase() ?? ''),
  687. )?.image
  688. || ActivityAssets.Logo
  689. }
  690. if (buttons && document.location.pathname?.split('/')[1] === 'github') {
  691. presenceData.buttons = [
  692. {
  693. label: 'View Repository',
  694. url: document.location.href.replace('vscode.dev/github', 'github.com'),
  695. },
  696. ]
  697. }
  698. if (!timestamps)
  699. delete presenceData.startTimestamp
  700. if (!buttons)
  701. delete presenceData.buttons
  702. if (presenceData.details)
  703. presence.setActivity(presenceData)
  704. else presence.setActivity()
  705. })
  706. function Replace(value: string, empty: string) {
  707. for (const [string, selector] of Object.entries({
  708. '%file%': ['.tab.active a'],
  709. '%branch%': ['#status\\.scm\\.0'],
  710. '%error%': ['#status\\.problems > a > span.codicon.codicon-error', 'nextSibling'],
  711. '%problems%': ['#status\\.problems > a > span.codicon.codicon-warning', 'nextSibling'],
  712. '%workspace%': [
  713. '.pane-header > .codicon-explorer-view-icon',
  714. 'aria-label',
  715. ],
  716. '%lang%': ['#status\\.editor\\.mode'],
  717. '%encoding%': ['#status\\.editor\\.encoding'],
  718. '%selection%': ['#status\\.editor\\.selection'],
  719. })) {
  720. value = value.replace(
  721. string,
  722. selector[1] === 'nextSibling'
  723. ? document
  724. .querySelector(selector[0]!)
  725. ?.nextSibling
  726. ?.textContent
  727. ?.trim() || empty
  728. : selector[1]
  729. ? document
  730. .querySelector(selector[0]!)
  731. ?.getAttribute(selector[1])
  732. ?.trim() || empty
  733. : document.querySelector(selector[0]!)?.textContent?.trim() || empty,
  734. )
  735. }
  736. return value
  737. }