tiny-essentials 1.24.0 → 1.24.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (442) hide show
  1. package/.github/workflows/node.js.yml +2 -2
  2. package/README.md +6 -2
  3. package/changelog/1/24/1.md +12 -0
  4. package/dist/v1/TinyBasicsEs.min.js +1 -1
  5. package/dist/v1/TinyDragger.min.js +1 -1
  6. package/dist/v1/TinyEssentials.min.js +1 -1
  7. package/dist/v1/TinyHtml.min.js +1 -1
  8. package/dist/v1/TinySmartScroller.min.js +1 -1
  9. package/dist/v1/TinyUploadClicker.min.js +1 -1
  10. package/dist/v1/basics/array.cjs +28 -0
  11. package/dist/v1/basics/array.d.mts +16 -0
  12. package/dist/v1/basics/array.mjs +27 -0
  13. package/dist/v1/basics/index.cjs +2 -4
  14. package/dist/v1/basics/index.d.mts +2 -2
  15. package/dist/v1/basics/index.mjs +2 -4
  16. package/dist/v1/basics/text.cjs +33 -0
  17. package/dist/v1/basics/text.d.mts +15 -0
  18. package/dist/v1/basics/text.mjs +28 -0
  19. package/dist/v1/build/TinyLevelUp.cjs +2 -2
  20. package/dist/v1/build/TinyLevelUp.d.mts +1 -1
  21. package/dist/v1/build/TinyLevelUp.mjs +1 -1
  22. package/dist/v1/index.cjs +4 -6
  23. package/dist/v1/index.d.mts +3 -3
  24. package/dist/v1/index.mjs +7 -6
  25. package/dist/v1/libs/TinyHtml/TinyHtmlAnchor.cjs +220 -0
  26. package/dist/v1/libs/TinyHtml/TinyHtmlAnchor.d.mts +98 -0
  27. package/dist/v1/libs/TinyHtml/TinyHtmlAnchor.mjs +207 -0
  28. package/dist/v1/libs/TinyHtml/TinyHtmlButton.cjs +317 -0
  29. package/dist/v1/libs/TinyHtml/TinyHtmlButton.d.mts +150 -0
  30. package/dist/v1/libs/TinyHtml/TinyHtmlButton.mjs +290 -0
  31. package/dist/v1/libs/TinyHtml/TinyHtmlCanvas.cjs +48 -0
  32. package/dist/v1/libs/TinyHtml/TinyHtmlCanvas.d.mts +36 -0
  33. package/dist/v1/libs/TinyHtml/TinyHtmlCanvas.mjs +44 -0
  34. package/dist/v1/libs/TinyHtml/TinyHtmlDatalist.cjs +102 -0
  35. package/dist/v1/libs/TinyHtml/TinyHtmlDatalist.d.mts +65 -0
  36. package/dist/v1/libs/TinyHtml/TinyHtmlDatalist.mjs +91 -0
  37. package/dist/v1/libs/TinyHtml/TinyHtmlEmbed.cjs +80 -0
  38. package/dist/v1/libs/TinyHtml/TinyHtmlEmbed.d.mts +57 -0
  39. package/dist/v1/libs/TinyHtml/TinyHtmlEmbed.mjs +75 -0
  40. package/dist/v1/libs/TinyHtml/TinyHtmlForm.cjs +244 -0
  41. package/dist/v1/libs/TinyHtml/TinyHtmlForm.d.mts +129 -0
  42. package/dist/v1/libs/TinyHtml/TinyHtmlForm.mjs +228 -0
  43. package/dist/v1/libs/TinyHtml/TinyHtmlIcon.cjs +38 -0
  44. package/dist/v1/libs/TinyHtml/TinyHtmlIcon.d.mts +24 -0
  45. package/dist/v1/libs/TinyHtml/TinyHtmlIcon.mjs +33 -0
  46. package/dist/v1/libs/TinyHtml/TinyHtmlIframe.cjs +222 -0
  47. package/dist/v1/libs/TinyHtml/TinyHtmlIframe.d.mts +108 -0
  48. package/dist/v1/libs/TinyHtml/TinyHtmlIframe.mjs +212 -0
  49. package/dist/v1/libs/TinyHtml/TinyHtmlImage.cjs +286 -0
  50. package/dist/v1/libs/TinyHtml/TinyHtmlImage.d.mts +125 -0
  51. package/dist/v1/libs/TinyHtml/TinyHtmlImage.mjs +250 -0
  52. package/dist/v1/libs/TinyHtml/TinyHtmlInput.cjs +154 -0
  53. package/dist/v1/libs/TinyHtml/TinyHtmlInput.d.mts +76 -0
  54. package/dist/v1/libs/TinyHtml/TinyHtmlInput.mjs +134 -0
  55. package/dist/v1/libs/TinyHtml/TinyHtmlLink.cjs +282 -0
  56. package/dist/v1/libs/TinyHtml/TinyHtmlLink.d.mts +128 -0
  57. package/dist/v1/libs/TinyHtml/TinyHtmlLink.mjs +264 -0
  58. package/dist/v1/libs/TinyHtml/TinyHtmlMedia.cjs +358 -0
  59. package/dist/v1/libs/TinyHtml/TinyHtmlMedia.d.mts +168 -0
  60. package/dist/v1/libs/TinyHtml/TinyHtmlMedia.mjs +308 -0
  61. package/dist/v1/libs/TinyHtml/TinyHtmlScript.cjs +226 -0
  62. package/dist/v1/libs/TinyHtml/TinyHtmlScript.d.mts +99 -0
  63. package/dist/v1/libs/TinyHtml/TinyHtmlScript.mjs +209 -0
  64. package/dist/v1/libs/TinyHtml/TinyHtmlSelect.cjs +267 -0
  65. package/dist/v1/libs/TinyHtml/TinyHtmlSelect.d.mts +146 -0
  66. package/dist/v1/libs/TinyHtml/TinyHtmlSelect.mjs +251 -0
  67. package/dist/v1/libs/TinyHtml/TinyHtmlStyle.cjs +110 -0
  68. package/dist/v1/libs/TinyHtml/TinyHtmlStyle.d.mts +57 -0
  69. package/dist/v1/libs/TinyHtml/TinyHtmlStyle.mjs +108 -0
  70. package/dist/v1/libs/TinyHtml/TinyHtmlTemplate.cjs +209 -0
  71. package/dist/v1/libs/TinyHtml/TinyHtmlTemplate.d.mts +101 -0
  72. package/dist/v1/libs/TinyHtml/TinyHtmlTemplate.mjs +189 -0
  73. package/dist/v1/libs/TinyHtml/TinyHtmlTextarea.cjs +331 -0
  74. package/dist/v1/libs/TinyHtml/TinyHtmlTextarea.d.mts +139 -0
  75. package/dist/v1/libs/TinyHtml/TinyHtmlTextarea.mjs +299 -0
  76. package/dist/v1/libs/TinyHtml/index.cjs +202 -0
  77. package/dist/v1/libs/TinyHtml/index.d.mts +82 -0
  78. package/dist/v1/libs/TinyHtml/index.mjs +185 -0
  79. package/dist/v1/libs/TinyHtml/input/TinyHtmlColorInput.cjs +121 -0
  80. package/dist/v1/libs/TinyHtml/input/TinyHtmlColorInput.d.mts +67 -0
  81. package/dist/v1/libs/TinyHtml/input/TinyHtmlColorInput.mjs +99 -0
  82. package/dist/v1/libs/TinyHtml/input/TinyHtmlFileInput.cjs +109 -0
  83. package/dist/v1/libs/TinyHtml/input/TinyHtmlFileInput.d.mts +63 -0
  84. package/dist/v1/libs/TinyHtml/input/TinyHtmlFileInput.mjs +92 -0
  85. package/dist/v1/libs/TinyHtml/input/TinyHtmlHiddenInput.cjs +101 -0
  86. package/dist/v1/libs/TinyHtml/input/TinyHtmlHiddenInput.d.mts +54 -0
  87. package/dist/v1/libs/TinyHtml/input/TinyHtmlHiddenInput.mjs +82 -0
  88. package/dist/v1/libs/TinyHtml/input/TinyHtmlImageInput.cjs +181 -0
  89. package/dist/v1/libs/TinyHtml/input/TinyHtmlImageInput.d.mts +97 -0
  90. package/dist/v1/libs/TinyHtml/input/TinyHtmlImageInput.mjs +160 -0
  91. package/dist/v1/libs/TinyHtml/input/button/TinyHtmlButtonInput.cjs +90 -0
  92. package/dist/v1/libs/TinyHtml/input/button/TinyHtmlButtonInput.d.mts +54 -0
  93. package/dist/v1/libs/TinyHtml/input/button/TinyHtmlButtonInput.mjs +69 -0
  94. package/dist/v1/libs/TinyHtml/input/button/TinyHtmlResetInput.cjs +59 -0
  95. package/dist/v1/libs/TinyHtml/input/button/TinyHtmlResetInput.d.mts +43 -0
  96. package/dist/v1/libs/TinyHtml/input/button/TinyHtmlResetInput.mjs +45 -0
  97. package/dist/v1/libs/TinyHtml/input/button/TinyHtmlSubmitInput.cjs +141 -0
  98. package/dist/v1/libs/TinyHtml/input/button/TinyHtmlSubmitInput.d.mts +74 -0
  99. package/dist/v1/libs/TinyHtml/input/button/TinyHtmlSubmitInput.mjs +114 -0
  100. package/dist/v1/libs/TinyHtml/input/check/TinyHtmlCheckboxInput.cjs +103 -0
  101. package/dist/v1/libs/TinyHtml/input/check/TinyHtmlCheckboxInput.d.mts +61 -0
  102. package/dist/v1/libs/TinyHtml/input/check/TinyHtmlCheckboxInput.mjs +85 -0
  103. package/dist/v1/libs/TinyHtml/input/check/TinyHtmlRadioInput.cjs +115 -0
  104. package/dist/v1/libs/TinyHtml/input/check/TinyHtmlRadioInput.d.mts +56 -0
  105. package/dist/v1/libs/TinyHtml/input/check/TinyHtmlRadioInput.mjs +94 -0
  106. package/dist/v1/libs/TinyHtml/input/date/TinyHtmlDateInput.cjs +172 -0
  107. package/dist/v1/libs/TinyHtml/input/date/TinyHtmlDateInput.d.mts +74 -0
  108. package/dist/v1/libs/TinyHtml/input/date/TinyHtmlDateInput.mjs +140 -0
  109. package/dist/v1/libs/TinyHtml/input/date/TinyHtmlDateTimeInput.cjs +145 -0
  110. package/dist/v1/libs/TinyHtml/input/date/TinyHtmlDateTimeInput.d.mts +77 -0
  111. package/dist/v1/libs/TinyHtml/input/date/TinyHtmlDateTimeInput.mjs +121 -0
  112. package/dist/v1/libs/TinyHtml/input/date/TinyHtmlMonthInput.cjs +146 -0
  113. package/dist/v1/libs/TinyHtml/input/date/TinyHtmlMonthInput.d.mts +74 -0
  114. package/dist/v1/libs/TinyHtml/input/date/TinyHtmlMonthInput.mjs +120 -0
  115. package/dist/v1/libs/TinyHtml/input/date/TinyHtmlTimeInput.cjs +151 -0
  116. package/dist/v1/libs/TinyHtml/input/date/TinyHtmlTimeInput.d.mts +75 -0
  117. package/dist/v1/libs/TinyHtml/input/date/TinyHtmlTimeInput.mjs +128 -0
  118. package/dist/v1/libs/TinyHtml/input/date/TinyHtmlWeekInput.cjs +150 -0
  119. package/dist/v1/libs/TinyHtml/input/date/TinyHtmlWeekInput.d.mts +74 -0
  120. package/dist/v1/libs/TinyHtml/input/date/TinyHtmlWeekInput.mjs +122 -0
  121. package/dist/v1/libs/TinyHtml/input/number/TinyHtmlNumberInput.cjs +134 -0
  122. package/dist/v1/libs/TinyHtml/input/number/TinyHtmlNumberInput.d.mts +74 -0
  123. package/dist/v1/libs/TinyHtml/input/number/TinyHtmlNumberInput.mjs +110 -0
  124. package/dist/v1/libs/TinyHtml/input/number/TinyHtmlRangeInput.cjs +133 -0
  125. package/dist/v1/libs/TinyHtml/input/number/TinyHtmlRangeInput.d.mts +75 -0
  126. package/dist/v1/libs/TinyHtml/input/number/TinyHtmlRangeInput.mjs +111 -0
  127. package/dist/v1/libs/TinyHtml/input/text/TinyHtmlEmailInput.cjs +179 -0
  128. package/dist/v1/libs/TinyHtml/input/text/TinyHtmlEmailInput.d.mts +87 -0
  129. package/dist/v1/libs/TinyHtml/input/text/TinyHtmlEmailInput.mjs +151 -0
  130. package/dist/v1/libs/TinyHtml/input/text/TinyHtmlPasswordInput.cjs +126 -0
  131. package/dist/v1/libs/TinyHtml/input/text/TinyHtmlPasswordInput.d.mts +70 -0
  132. package/dist/v1/libs/TinyHtml/input/text/TinyHtmlPasswordInput.mjs +104 -0
  133. package/dist/v1/libs/TinyHtml/input/text/TinyHtmlSearchInput.cjs +177 -0
  134. package/dist/v1/libs/TinyHtml/input/text/TinyHtmlSearchInput.d.mts +91 -0
  135. package/dist/v1/libs/TinyHtml/input/text/TinyHtmlSearchInput.mjs +153 -0
  136. package/dist/v1/libs/TinyHtml/input/text/TinyHtmlTelInput.cjs +170 -0
  137. package/dist/v1/libs/TinyHtml/input/text/TinyHtmlTelInput.d.mts +91 -0
  138. package/dist/v1/libs/TinyHtml/input/text/TinyHtmlTelInput.mjs +143 -0
  139. package/dist/v1/libs/TinyHtml/input/text/TinyHtmlTextInput.cjs +173 -0
  140. package/dist/v1/libs/TinyHtml/input/text/TinyHtmlTextInput.d.mts +89 -0
  141. package/dist/v1/libs/TinyHtml/input/text/TinyHtmlTextInput.mjs +150 -0
  142. package/dist/v1/libs/TinyHtml/input/text/TinyHtmlUrlInput.cjs +166 -0
  143. package/dist/v1/libs/TinyHtml/input/text/TinyHtmlUrlInput.d.mts +81 -0
  144. package/dist/v1/libs/TinyHtml/input/text/TinyHtmlUrlInput.mjs +142 -0
  145. package/dist/v1/libs/TinyHtml/media/TinyHtmlAudio.cjs +135 -0
  146. package/dist/v1/libs/TinyHtml/media/TinyHtmlAudio.d.mts +47 -0
  147. package/dist/v1/libs/TinyHtml/media/TinyHtmlAudio.mjs +122 -0
  148. package/dist/v1/libs/TinyHtml/media/TinyHtmlObject.cjs +100 -0
  149. package/dist/v1/libs/TinyHtml/media/TinyHtmlObject.d.mts +62 -0
  150. package/dist/v1/libs/TinyHtml/media/TinyHtmlObject.mjs +94 -0
  151. package/dist/v1/libs/TinyHtml/media/TinyHtmlSource.cjs +159 -0
  152. package/dist/v1/libs/TinyHtml/media/TinyHtmlSource.d.mts +77 -0
  153. package/dist/v1/libs/TinyHtml/media/TinyHtmlSource.mjs +136 -0
  154. package/dist/v1/libs/TinyHtml/media/TinyHtmlVideo.cjs +193 -0
  155. package/dist/v1/libs/TinyHtml/media/TinyHtmlVideo.d.mts +91 -0
  156. package/dist/v1/libs/TinyHtml/media/TinyHtmlVideo.mjs +167 -0
  157. package/dist/v1/libs/TinyHtml.cjs +260 -3
  158. package/dist/v1/libs/TinyHtml.d.mts +196 -5
  159. package/dist/v1/libs/TinyHtml.mjs +238 -3
  160. package/dist/{legacy/libs/userLevel.d.mts → v1/libs/TinyLevelUp.d.mts} +1 -1
  161. package/docs/v1/libs/TinyHtml.md +4 -4
  162. package/package.json +11 -24
  163. package/dist/_virtual/_commonjsHelpers.cjs +0 -7
  164. package/dist/_virtual/common.cjs +0 -5
  165. package/dist/_virtual/index.cjs +0 -9
  166. package/dist/_virtual/index2.cjs +0 -5
  167. package/dist/_virtual/trace.cjs +0 -5
  168. package/dist/legacy/crypto/decrypt.cjs +0 -59
  169. package/dist/legacy/crypto/decrypt.d.mts +0 -20
  170. package/dist/legacy/crypto/decrypt.mjs +0 -49
  171. package/dist/legacy/crypto/default.cjs +0 -23
  172. package/dist/legacy/crypto/default.d.mts +0 -36
  173. package/dist/legacy/crypto/default.mjs +0 -19
  174. package/dist/legacy/crypto/encrypt.cjs +0 -55
  175. package/dist/legacy/crypto/encrypt.d.mts +0 -21
  176. package/dist/legacy/crypto/encrypt.mjs +0 -47
  177. package/dist/legacy/crypto/index.cjs +0 -11
  178. package/dist/legacy/crypto/index.d.mts +0 -5
  179. package/dist/legacy/crypto/index.mjs +0 -6
  180. package/dist/legacy/firebase/cookieSession.cjs +0 -123
  181. package/dist/legacy/firebase/cookieSession.d.mts +0 -57
  182. package/dist/legacy/firebase/cookieSession.mjs +0 -115
  183. package/dist/legacy/firebase/database/index.cjs +0 -14
  184. package/dist/legacy/firebase/database/index.d.mts +0 -8
  185. package/dist/legacy/firebase/database/index.mjs +0 -8
  186. package/dist/legacy/firebase/database/presence.cjs +0 -137
  187. package/dist/legacy/firebase/database/presence.d.mts +0 -13
  188. package/dist/legacy/firebase/database/presence.mjs +0 -115
  189. package/dist/legacy/firebase/database/saveAsync.cjs +0 -149
  190. package/dist/legacy/firebase/database/saveAsync.d.mts +0 -55
  191. package/dist/legacy/firebase/database/saveAsync.mjs +0 -148
  192. package/dist/legacy/firebase/databaseEscape.cjs +0 -45
  193. package/dist/legacy/firebase/databaseEscape.d.mts +0 -12
  194. package/dist/legacy/firebase/databaseEscape.mjs +0 -38
  195. package/dist/legacy/firebase/databaseLogger.cjs +0 -261
  196. package/dist/legacy/firebase/databaseLogger.d.mts +0 -8
  197. package/dist/legacy/firebase/databaseLogger.mjs +0 -235
  198. package/dist/legacy/firebase/discord/api/addGuildMember.cjs +0 -74
  199. package/dist/legacy/firebase/discord/api/addGuildMember.d.mts +0 -39
  200. package/dist/legacy/firebase/discord/api/addGuildMember.mjs +0 -65
  201. package/dist/legacy/firebase/discord/api/getGuildWidget.cjs +0 -50
  202. package/dist/legacy/firebase/discord/api/getGuildWidget.d.mts +0 -18
  203. package/dist/legacy/firebase/discord/api/getGuildWidget.mjs +0 -44
  204. package/dist/legacy/firebase/discord/api/getToken.cjs +0 -70
  205. package/dist/legacy/firebase/discord/api/getToken.d.mts +0 -36
  206. package/dist/legacy/firebase/discord/api/getToken.mjs +0 -64
  207. package/dist/legacy/firebase/discord/api/getUser.cjs +0 -61
  208. package/dist/legacy/firebase/discord/api/getUser.d.mts +0 -28
  209. package/dist/legacy/firebase/discord/api/getUser.mjs +0 -55
  210. package/dist/legacy/firebase/discord/api/getUserConnections.cjs +0 -60
  211. package/dist/legacy/firebase/discord/api/getUserConnections.d.mts +0 -27
  212. package/dist/legacy/firebase/discord/api/getUserConnections.mjs +0 -54
  213. package/dist/legacy/firebase/discord/api/getUserGuilds.cjs +0 -59
  214. package/dist/legacy/firebase/discord/api/getUserGuilds.d.mts +0 -26
  215. package/dist/legacy/firebase/discord/api/getUserGuilds.mjs +0 -53
  216. package/dist/legacy/firebase/discord/api/index.cjs +0 -27
  217. package/dist/legacy/firebase/discord/api/index.d.mts +0 -20
  218. package/dist/legacy/firebase/discord/api/index.mjs +0 -21
  219. package/dist/legacy/firebase/discord/api/refreshToken.cjs +0 -80
  220. package/dist/legacy/firebase/discord/api/refreshToken.d.mts +0 -46
  221. package/dist/legacy/firebase/discord/api/refreshToken.mjs +0 -74
  222. package/dist/legacy/firebase/discord/api/revokeToken.cjs +0 -64
  223. package/dist/legacy/firebase/discord/api/revokeToken.d.mts +0 -30
  224. package/dist/legacy/firebase/discord/api/revokeToken.mjs +0 -59
  225. package/dist/legacy/firebase/discord/config.cjs +0 -23
  226. package/dist/legacy/firebase/discord/config.d.mts +0 -28
  227. package/dist/legacy/firebase/discord/config.mjs +0 -18
  228. package/dist/legacy/firebase/discord/firebase_redirect/index.cjs +0 -14
  229. package/dist/legacy/firebase/discord/firebase_redirect/index.d.mts +0 -8
  230. package/dist/legacy/firebase/discord/firebase_redirect/index.mjs +0 -8
  231. package/dist/legacy/firebase/discord/firebase_redirect/login.cjs +0 -112
  232. package/dist/legacy/firebase/discord/firebase_redirect/login.d.mts +0 -5
  233. package/dist/legacy/firebase/discord/firebase_redirect/login.mjs +0 -108
  234. package/dist/legacy/firebase/discord/firebase_redirect/logout.cjs +0 -102
  235. package/dist/legacy/firebase/discord/firebase_redirect/logout.d.mts +0 -5
  236. package/dist/legacy/firebase/discord/firebase_redirect/logout.mjs +0 -98
  237. package/dist/legacy/firebase/discord/get/authURLGenerator.cjs +0 -79
  238. package/dist/legacy/firebase/discord/get/authURLGenerator.d.mts +0 -24
  239. package/dist/legacy/firebase/discord/get/authURLGenerator.mjs +0 -68
  240. package/dist/legacy/firebase/discord/get/cookie-session.cjs +0 -35
  241. package/dist/legacy/firebase/discord/get/cookie-session.d.mts +0 -21
  242. package/dist/legacy/firebase/discord/get/cookie-session.mjs +0 -29
  243. package/dist/legacy/firebase/discord/get/credentials.cjs +0 -26
  244. package/dist/legacy/firebase/discord/get/credentials.d.mts +0 -20
  245. package/dist/legacy/firebase/discord/get/credentials.mjs +0 -21
  246. package/dist/legacy/firebase/discord/get/errorValidator.cjs +0 -63
  247. package/dist/legacy/firebase/discord/get/errorValidator.d.mts +0 -29
  248. package/dist/legacy/firebase/discord/get/errorValidator.mjs +0 -56
  249. package/dist/legacy/firebase/discord/get/index.cjs +0 -20
  250. package/dist/legacy/firebase/discord/get/index.d.mts +0 -14
  251. package/dist/legacy/firebase/discord/get/index.mjs +0 -14
  252. package/dist/legacy/firebase/discord/get/randomAvatar.cjs +0 -40
  253. package/dist/legacy/firebase/discord/get/randomAvatar.d.mts +0 -23
  254. package/dist/legacy/firebase/discord/get/randomAvatar.mjs +0 -31
  255. package/dist/legacy/firebase/discord/http/index.cjs +0 -18
  256. package/dist/legacy/firebase/discord/http/index.d.mts +0 -12
  257. package/dist/legacy/firebase/discord/http/index.mjs +0 -12
  258. package/dist/legacy/firebase/discord/http/login.cjs +0 -130
  259. package/dist/legacy/firebase/discord/http/login.d.mts +0 -22
  260. package/dist/legacy/firebase/discord/http/login.mjs +0 -124
  261. package/dist/legacy/firebase/discord/http/logout.cjs +0 -158
  262. package/dist/legacy/firebase/discord/http/logout.d.mts +0 -23
  263. package/dist/legacy/firebase/discord/http/logout.mjs +0 -144
  264. package/dist/legacy/firebase/discord/http/redirect.cjs +0 -191
  265. package/dist/legacy/firebase/discord/http/redirect.d.mts +0 -25
  266. package/dist/legacy/firebase/discord/http/redirect.mjs +0 -179
  267. package/dist/legacy/firebase/discord/http/refreshToken.cjs +0 -136
  268. package/dist/legacy/firebase/discord/http/refreshToken.d.mts +0 -25
  269. package/dist/legacy/firebase/discord/http/refreshToken.mjs +0 -122
  270. package/dist/legacy/firebase/discord/index.cjs +0 -22
  271. package/dist/legacy/firebase/discord/index.d.mts +0 -16
  272. package/dist/legacy/firebase/discord/index.mjs +0 -16
  273. package/dist/legacy/firebase/discord/template/cookie-session.cjs +0 -1433
  274. package/dist/legacy/firebase/discord/template/cookie-session.d.mts +0 -23
  275. package/dist/legacy/firebase/discord/template/cookie-session.mjs +0 -1160
  276. package/dist/legacy/firebase/domainRedirect.cjs +0 -37
  277. package/dist/legacy/firebase/domainRedirect.d.mts +0 -13
  278. package/dist/legacy/firebase/domainRedirect.mjs +0 -28
  279. package/dist/legacy/firebase/escape.cjs +0 -77
  280. package/dist/legacy/firebase/escape.d.mts +0 -18
  281. package/dist/legacy/firebase/escape.mjs +0 -59
  282. package/dist/legacy/firebase/getDBAsync.cjs +0 -35
  283. package/dist/legacy/firebase/getDBAsync.d.mts +0 -11
  284. package/dist/legacy/firebase/getDBAsync.mjs +0 -27
  285. package/dist/legacy/firebase/getDBData.cjs +0 -24
  286. package/dist/legacy/firebase/getDBData.d.mts +0 -2
  287. package/dist/legacy/firebase/getDBData.mjs +0 -18
  288. package/dist/legacy/firebase/getDBValue.cjs +0 -19
  289. package/dist/legacy/firebase/getDBValue.d.mts +0 -10
  290. package/dist/legacy/firebase/getDBValue.mjs +0 -15
  291. package/dist/legacy/firebase/index.cjs +0 -264
  292. package/dist/legacy/firebase/index.d.mts +0 -52
  293. package/dist/legacy/firebase/index.mjs +0 -235
  294. package/dist/legacy/firebase/isEmulator.cjs +0 -16
  295. package/dist/legacy/firebase/isEmulator.d.mts +0 -9
  296. package/dist/legacy/firebase/isEmulator.mjs +0 -11
  297. package/dist/legacy/firebase/logger.cjs +0 -140
  298. package/dist/legacy/firebase/logger.d.mts +0 -8
  299. package/dist/legacy/firebase/logger.mjs +0 -126
  300. package/dist/legacy/firebase/mySQL.cjs +0 -30
  301. package/dist/legacy/firebase/mySQL.d.mts +0 -11
  302. package/dist/legacy/firebase/mySQL.mjs +0 -23
  303. package/dist/legacy/firebase/mysqlConnector/create.cjs +0 -121
  304. package/dist/legacy/firebase/mysqlConnector/create.d.mts +0 -37
  305. package/dist/legacy/firebase/mysqlConnector/create.mjs +0 -110
  306. package/dist/legacy/firebase/mysqlConnector/index.cjs +0 -26
  307. package/dist/legacy/firebase/mysqlConnector/index.d.mts +0 -12
  308. package/dist/legacy/firebase/mysqlConnector/index.mjs +0 -17
  309. package/dist/legacy/firebase/mysqlConnector/nextPrev.cjs +0 -77
  310. package/dist/legacy/firebase/mysqlConnector/nextPrev.d.mts +0 -32
  311. package/dist/legacy/firebase/mysqlConnector/nextPrev.mjs +0 -64
  312. package/dist/legacy/firebase/mysqlConnector/pagination.cjs +0 -93
  313. package/dist/legacy/firebase/mysqlConnector/pagination.d.mts +0 -34
  314. package/dist/legacy/firebase/mysqlConnector/pagination.mjs +0 -88
  315. package/dist/legacy/firebase/mysqlConnector/sameUser.cjs +0 -31
  316. package/dist/legacy/firebase/mysqlConnector/sameUser.d.mts +0 -13
  317. package/dist/legacy/firebase/mysqlConnector/sameUser.mjs +0 -24
  318. package/dist/legacy/firebase/transactionDBAsync.cjs +0 -35
  319. package/dist/legacy/firebase/transactionDBAsync.d.mts +0 -12
  320. package/dist/legacy/firebase/transactionDBAsync.mjs +0 -28
  321. package/dist/legacy/get/countObj.cjs +0 -7
  322. package/dist/legacy/get/countObj.d.mts +0 -3
  323. package/dist/legacy/get/countObj.mjs +0 -2
  324. package/dist/legacy/get/decimalColor.cjs +0 -63
  325. package/dist/legacy/get/decimalColor.d.mts +0 -14
  326. package/dist/legacy/get/decimalColor.mjs +0 -56
  327. package/dist/legacy/get/objType.cjs +0 -7
  328. package/dist/legacy/get/objType.d.mts +0 -3
  329. package/dist/legacy/get/objType.mjs +0 -2
  330. package/dist/legacy/get/pagination.cjs +0 -109
  331. package/dist/legacy/get/pagination.d.mts +0 -44
  332. package/dist/legacy/get/pagination.mjs +0 -100
  333. package/dist/legacy/get/queryUrlByName.cjs +0 -32
  334. package/dist/legacy/get/queryUrlByName.d.mts +0 -22
  335. package/dist/legacy/get/queryUrlByName.mjs +0 -29
  336. package/dist/legacy/get/queryUrlJSON.cjs +0 -57
  337. package/dist/legacy/get/queryUrlJSON.d.mts +0 -25
  338. package/dist/legacy/get/queryUrlJSON.mjs +0 -59
  339. package/dist/legacy/get/super_string_filter.cjs +0 -109
  340. package/dist/legacy/get/super_string_filter.d.mts +0 -27
  341. package/dist/legacy/get/super_string_filter.mjs +0 -95
  342. package/dist/legacy/get/versionCheck.cjs +0 -50
  343. package/dist/legacy/get/versionCheck.d.mts +0 -29
  344. package/dist/legacy/get/versionCheck.mjs +0 -40
  345. package/dist/legacy/http/HTTP-1.0.cjs +0 -153
  346. package/dist/legacy/http/HTTP-1.0.d.mts +0 -9
  347. package/dist/legacy/http/HTTP-1.0.mjs +0 -138
  348. package/dist/legacy/http/auth.cjs +0 -71
  349. package/dist/legacy/http/auth.d.mts +0 -43
  350. package/dist/legacy/http/auth.mjs +0 -64
  351. package/dist/legacy/http/check_domain.cjs +0 -103
  352. package/dist/legacy/http/check_domain.d.mts +0 -13
  353. package/dist/legacy/http/check_domain.mjs +0 -98
  354. package/dist/legacy/http/csrfTokenAnalyze.cjs +0 -50
  355. package/dist/legacy/http/csrfTokenAnalyze.d.mts +0 -23
  356. package/dist/legacy/http/csrfTokenAnalyze.mjs +0 -45
  357. package/dist/legacy/http/domainValidator.cjs +0 -106
  358. package/dist/legacy/http/domainValidator.d.mts +0 -41
  359. package/dist/legacy/http/domainValidator.mjs +0 -89
  360. package/dist/legacy/http/errorsCallback.cjs +0 -64
  361. package/dist/legacy/http/errorsCallback.d.mts +0 -41
  362. package/dist/legacy/http/errorsCallback.mjs +0 -58
  363. package/dist/legacy/http/fetch/json.cjs +0 -50
  364. package/dist/legacy/http/fetch/json.d.mts +0 -24
  365. package/dist/legacy/http/fetch/json.mjs +0 -43
  366. package/dist/legacy/http/fetch/text.cjs +0 -49
  367. package/dist/legacy/http/fetch/text.d.mts +0 -23
  368. package/dist/legacy/http/fetch/text.mjs +0 -42
  369. package/dist/legacy/http/fileCache.cjs +0 -80
  370. package/dist/legacy/http/fileCache.d.mts +0 -37
  371. package/dist/legacy/http/fileCache.mjs +0 -71
  372. package/dist/legacy/http/getDomainURL.cjs +0 -60
  373. package/dist/legacy/http/getDomainURL.d.mts +0 -20
  374. package/dist/legacy/http/getDomainURL.mjs +0 -55
  375. package/dist/legacy/http/userIP.cjs +0 -65
  376. package/dist/legacy/http/userIP.d.mts +0 -27
  377. package/dist/legacy/http/userIP.mjs +0 -53
  378. package/dist/legacy/index.cjs +0 -125
  379. package/dist/legacy/index.d.mts +0 -89
  380. package/dist/legacy/index.mjs +0 -93
  381. package/dist/legacy/libs/arraySortPositions.cjs +0 -30
  382. package/dist/legacy/libs/arraySortPositions.d.mts +0 -17
  383. package/dist/legacy/libs/arraySortPositions.mjs +0 -27
  384. package/dist/legacy/libs/capitalize.cjs +0 -22
  385. package/dist/legacy/libs/capitalize.d.mts +0 -15
  386. package/dist/legacy/libs/capitalize.mjs +0 -18
  387. package/dist/legacy/libs/convertBytes.cjs +0 -66
  388. package/dist/legacy/libs/convertBytes.d.mts +0 -18
  389. package/dist/legacy/libs/convertBytes.mjs +0 -57
  390. package/dist/legacy/libs/custom_module_loader.cjs +0 -91
  391. package/dist/legacy/libs/custom_module_loader.d.mts +0 -6
  392. package/dist/legacy/libs/custom_module_loader.mjs +0 -87
  393. package/dist/legacy/libs/dice.cjs +0 -37
  394. package/dist/legacy/libs/dice.d.mts +0 -6
  395. package/dist/legacy/libs/dice.mjs +0 -33
  396. package/dist/legacy/libs/markdown.cjs +0 -97
  397. package/dist/legacy/libs/markdown.d.mts +0 -12
  398. package/dist/legacy/libs/markdown.mjs +0 -90
  399. package/dist/legacy/libs/percentage.cjs +0 -23
  400. package/dist/legacy/libs/percentage.d.mts +0 -5
  401. package/dist/legacy/libs/percentage.mjs +0 -20
  402. package/dist/legacy/libs/regex/getLetter.cjs +0 -24
  403. package/dist/legacy/libs/regex/getLetter.d.mts +0 -15
  404. package/dist/legacy/libs/regex/getLetter.mjs +0 -21
  405. package/dist/legacy/libs/replaceAsync.cjs +0 -35
  406. package/dist/legacy/libs/replaceAsync.d.mts +0 -16
  407. package/dist/legacy/libs/replaceAsync.mjs +0 -28
  408. package/dist/legacy/libs/rule3.cjs +0 -59
  409. package/dist/legacy/libs/rule3.d.mts +0 -6
  410. package/dist/legacy/libs/rule3.mjs +0 -55
  411. package/dist/legacy/momentjs/getAge.cjs +0 -29
  412. package/dist/legacy/momentjs/getAge.d.mts +0 -11
  413. package/dist/legacy/momentjs/getAge.mjs +0 -23
  414. package/dist/legacy/momentjs/index.cjs +0 -9
  415. package/dist/legacy/momentjs/index.d.mts +0 -4
  416. package/dist/legacy/momentjs/index.mjs +0 -3
  417. package/dist/legacy/momentjs/timeDuration.cjs +0 -31
  418. package/dist/legacy/momentjs/timeDuration.d.mts +0 -12
  419. package/dist/legacy/momentjs/timeDuration.mjs +0 -25
  420. package/dist/legacy/socket.io/antiFlood/index.cjs +0 -9
  421. package/dist/legacy/socket.io/antiFlood/index.d.mts +0 -4
  422. package/dist/legacy/socket.io/antiFlood/index.mjs +0 -3
  423. package/dist/legacy/socket.io/antiFlood/install.cjs +0 -34
  424. package/dist/legacy/socket.io/antiFlood/install.d.mts +0 -16
  425. package/dist/legacy/socket.io/antiFlood/install.mjs +0 -29
  426. package/dist/legacy/socket.io/antiFlood/verify.cjs +0 -95
  427. package/dist/legacy/socket.io/antiFlood/verify.d.mts +0 -20
  428. package/dist/legacy/socket.io/antiFlood/verify.mjs +0 -79
  429. package/dist/legacy/socket.io/cookie-session.cjs +0 -27
  430. package/dist/legacy/socket.io/cookie-session.d.mts +0 -11
  431. package/dist/legacy/socket.io/cookie-session.mjs +0 -22
  432. package/dist/legacy/socket.io/discord.cjs +0 -62
  433. package/dist/legacy/socket.io/discord.d.mts +0 -12
  434. package/dist/legacy/socket.io/discord.mjs +0 -53
  435. package/dist/legacy/socket.io/index.cjs +0 -13
  436. package/dist/legacy/socket.io/index.d.mts +0 -10
  437. package/dist/legacy/socket.io/index.mjs +0 -9
  438. package/dist/node_modules/firebase-functions/lib/common/trace.cjs +0 -81
  439. package/dist/node_modules/firebase-functions/lib/logger/common.cjs +0 -57
  440. package/dist/node_modules/firebase-functions/lib/logger/index.cjs +0 -159
  441. /package/dist/{legacy/libs/userLevel.cjs → v1/libs/TinyLevelUp.cjs} +0 -0
  442. /package/dist/{legacy/libs/userLevel.mjs → v1/libs/TinyLevelUp.mjs} +0 -0
@@ -1,1433 +0,0 @@
1
- 'use strict';
2
-
3
- var hash = require('object-hash');
4
- var moment = require('moment-timezone');
5
- var _ = require('lodash');
6
- var clone = require('clone');
7
- var _default = require('../../../crypto/default.cjs');
8
- var objFilter = require('../../../../v1/basics/objFilter.cjs');
9
- var config = require('../config.cjs');
10
- var logger = require('../../logger.cjs');
11
- var getUser = require('../api/getUser.cjs');
12
- var userIP = require('../../../http/userIP.cjs');
13
- var getDomainURL = require('../../../http/getDomainURL.cjs');
14
- var login = require('../firebase_redirect/login.cjs');
15
- var logout = require('../firebase_redirect/logout.cjs');
16
- var addGuildMember = require('../api/addGuildMember.cjs');
17
- var getGuildWidget = require('../api/getGuildWidget.cjs');
18
- var getUserConnections = require('../api/getUserConnections.cjs');
19
- var index = require('../index.cjs');
20
- var getUserGuilds = require('../api/getUserGuilds.cjs');
21
- var cookieSession$1 = require('../get/cookie-session.cjs');
22
- var cookieSession$2 = require('../../cookieSession.cjs');
23
- var revokeToken = require('../api/revokeToken.cjs');
24
-
25
- // @ts-nocheck
26
-
27
-
28
- /**
29
- * Middleware function to handle Discord and Firebase sessions, including login, logout,
30
- * and redirection functionalities.
31
- *
32
- * @param {Record<string, any>} app - The Express.js app object.
33
- * @param {Record<string, any>} cfg - The configuration object for the middleware, including Firebase settings.
34
- * @throws {Error} Throws an error if the configuration object is invalid.
35
- */
36
- function cookieSession(app, cfg) {
37
- // Config
38
- if (objFilter.objType(cfg, 'object')) {
39
- // Validator Session Discord and Firebase
40
- const sessionFirebaseDiscordValidator = function (req) {
41
- return (
42
- req.firebase_session.uid ===
43
- `${discordSession.varsTemplate.uid}${tinyAuth.client_id}_${req.discord_session.user.id}`
44
- );
45
- };
46
-
47
- // Prepare Base
48
- app.use((req, res, next) => {
49
- // Add Discord Session
50
- if (!req.discord_session) req.discord_session = {};
51
-
52
- // Complete
53
- next();
54
- });
55
-
56
- // Logger
57
- const logger$1 = logger;
58
-
59
- // Get Discord User
60
- const getDiscordUser = getUser;
61
-
62
- // Get User IP
63
- const getUserIP = userIP;
64
-
65
- // Discord session
66
- const discordSession = {};
67
-
68
- // Firebase Auth
69
- discordSession.firebaseAuth = {};
70
-
71
- // Redirect
72
- discordSession.firebaseAuth.redirect = {
73
- template: function (type, req, res, redirect_url, csrfToken, firebase_auth) {
74
- // Get Domain
75
- const tinyDomain = getDomainURL(req, cfg.port);
76
-
77
- // Fix URL
78
- if (typeof redirect_url !== 'string') redirect_url = '';
79
- else if (redirect_url.startsWith('/')) redirect_url = redirect_url.substring(1);
80
-
81
- // New URL
82
- redirect_url = `${tinyURLPath[type]}?redirect=${encodeURIComponent(redirect_url)}`;
83
- if (typeof csrfToken === 'string') redirect_url += `&key=${csrfToken}`;
84
-
85
- if (typeof firebase_auth === 'string') redirect_url += `&token=${firebase_auth}`;
86
-
87
- // Complete
88
- res.redirect(tinyDomain + redirect_url);
89
- },
90
-
91
- // Login
92
- login: function (req, res, redirect_url, csrfToken) {
93
- return discordSession.firebaseAuth.redirect.template(
94
- 'firebaseLogin',
95
- req,
96
- res,
97
- redirect_url,
98
- csrfToken,
99
- );
100
- },
101
-
102
- // Logout
103
- logout: function (req, res, redirect_url, csrfToken, firebase_auth) {
104
- return discordSession.firebaseAuth.redirect.template(
105
- 'firebaseLogout',
106
- req,
107
- res,
108
- redirect_url,
109
- csrfToken,
110
- firebase_auth,
111
- );
112
- },
113
- };
114
-
115
- // Variables
116
- discordSession.varsTemplate = {
117
- uid: 'discord_user_id_',
118
- avatarURL: 'https://cdn.discordapp.com/avatars/',
119
- };
120
-
121
- // Get Firebase UID
122
- discordSession.uidGenerator = function (userID) {
123
- return `${discordSession.varsTemplate.uid}${tinyAuth.client_id}_${encodeURIComponent(userID)}`;
124
- };
125
-
126
- // Session Set
127
- discordSession.set = function (req, tokenRequest, extra_text = '') {
128
- // Session Items
129
- req.session[sessionVars.access_token + extra_text] = tokenRequest.access_token;
130
- req.session[sessionVars.refresh_token + extra_text] = tokenRequest.refresh_token;
131
- req.session[sessionVars.token_type + extra_text] = tokenRequest.token_type;
132
- req.session[sessionVars.scope + extra_text] = tokenRequest.scope;
133
-
134
- // Expire In
135
- req.session[sessionVars.token_expires_in + extra_text] = moment
136
- .tz('Universal')
137
- .add(tokenRequest.expires_in, 'second')
138
- .format();
139
- };
140
-
141
- discordSession.get = function (req) {
142
- return {
143
- access_token: req.session[sessionVars.access_token],
144
- refresh_token: req.session[sessionVars.refresh_token],
145
- token_type: req.session[sessionVars.token_type],
146
- scope: req.session[sessionVars.scope],
147
- token_expires_in: req.session[sessionVars.token_expires_in],
148
- };
149
- };
150
-
151
- // Prepare Firebase Items
152
- const prepare_fire_auth_discord = function (req, user) {
153
- // Discord Session
154
- const dsSession = discordSession.get(req);
155
- const preparedsSession = {};
156
-
157
- // Scope
158
- if (typeof dsSession.scope === 'string') preparedsSession.scope = dsSession.scope.split(' ');
159
- else preparedsSession.scope = dsSession.scope;
160
-
161
- // User IP
162
- if (tinyCfg.ipVerification) {
163
- const requestIpAddress = getUserIP(req, { isFirebase: true });
164
- preparedsSession.user_ip = requestIpAddress.value;
165
- preparedsSession.user_ip_type = requestIpAddress.type;
166
- }
167
-
168
- // Discord
169
- preparedsSession.discord = user;
170
-
171
- // Complete
172
- return preparedsSession;
173
- };
174
-
175
- // Firebase Discord Auth
176
- discordSession.firebase = {};
177
-
178
- discordSession.firebase.createAccountData = function (access_token, userData, oldData) {
179
- // Prepare New User Data
180
- const newUserData = {};
181
- const existOLD = objFilter.objType(oldData, 'object');
182
-
183
- // Password
184
- if (typeof access_token === 'string' && access_token.length > 0)
185
- newUserData.password = access_token;
186
-
187
- // Main Data
188
- const newUsername = userData.username + '#' + userData.discriminator;
189
- const newAvatar = `${discordSession.varsTemplate.avatarURL}${userData.id}/${userData.avatar}`;
190
-
191
- // Basic Profile
192
- if (!existOLD || newUsername !== oldData.displayNama) newUserData.displayName = newUsername;
193
-
194
- if (!existOLD || newAvatar !== oldData.photoURL) newUserData.photoURL = newAvatar;
195
-
196
- // Insert User Email
197
- if (typeof userData.email === 'string') {
198
- if (!existOLD || userData.email !== oldData.email) {
199
- newUserData.email = userData.email;
200
- newUserData.emailVerified = userData.verified;
201
- }
202
- }
203
-
204
- // Complete
205
- return newUserData;
206
- };
207
-
208
- discordSession.firebase.updateUser = function (access_token, user, oldUser) {
209
- return new Promise(function (resolve, reject) {
210
- // Prepare MD5
211
- const validator = {};
212
-
213
- validator.user = hash(user);
214
- if (objFilter.objType(oldUser, 'object')) validator.oldUser = hash(oldUser);
215
- else validator.oldUser = '';
216
-
217
- // Validate
218
- if (validator.user !== validator.oldUser) {
219
- // Get UID
220
- const uid = discordSession.uidGenerator(user.id);
221
- const firebaseAccount = discordSession.firebase.createAccountData(
222
- access_token,
223
- user,
224
- oldUser,
225
- );
226
-
227
- // Update User
228
- cfg.firebase.auth
229
- .updateUser(uid, firebaseAccount)
230
- .then((userRecord) =>
231
- resolve({
232
- updated: true,
233
- uid: uid,
234
- newData: firebaseAccount,
235
- userRecord: userRecord,
236
- }),
237
- )
238
- .catch(reject);
239
- }
240
-
241
- // Nope
242
- else resolve({ updated: false });
243
- });
244
- };
245
-
246
- // Set User
247
- discordSession.firebase.set = function (req, user) {
248
- return new Promise(function (resolve, reject) {
249
- // UID
250
- const uid = discordSession.uidGenerator(user.id);
251
- const claims = prepare_fire_auth_discord(req, user);
252
-
253
- // Prepare Auth
254
- cfg.firebase.auth
255
- .createCustomToken(uid, claims)
256
-
257
- // Complete
258
- .then((customToken) => {
259
- req.session[sessionVars.firebase_auth_token] = customToken;
260
- resolve(customToken);
261
- })
262
-
263
- // Error
264
- .catch((err) => {
265
- reject({ code: 500, message: err.message });
266
- });
267
- });
268
- };
269
-
270
- // Get User
271
- discordSession.firebase.get = function (req, res) {
272
- return new Promise(function (resolve, reject) {
273
- // Prepare Auth
274
- cfg.firebase.auth
275
- .verifySessionCookie(req.session[sessionVars.firebase_token])
276
-
277
- // Complete
278
- .then((decodedToken) => {
279
- // Validator
280
- if (tinyCfg.ipVerification) {
281
- // Get Request IP
282
- const requestIpAddress = getUserIP(req, { isFirebase: true });
283
-
284
- // Convert
285
- if (typeof decodedToken.user_ip === 'string')
286
- decodedToken.user_ip = [decodedToken.user_ip];
287
-
288
- if (typeof requestIpAddress.value === 'string')
289
- requestIpAddress.value = [requestIpAddress.value];
290
-
291
- // Verification
292
- if (
293
- hash(decodedToken.user_ip) === hash(requestIpAddress.value) &&
294
- decodedToken.user_ip_type === requestIpAddress.type
295
- ) {
296
- req.firebase_session = decodedToken;
297
- resolve();
298
- }
299
-
300
- // Nope
301
- else reject({ code: 406, message: 'Invalid User IP Session!' });
302
- }
303
-
304
- // Nope
305
- else {
306
- req.firebase_session = decodedToken;
307
- resolve();
308
- }
309
- })
310
-
311
- // Error
312
- .catch((err) => {
313
- reject({ code: 500, message: err.message });
314
- });
315
- });
316
- };
317
-
318
- // Firebase Redirect
319
- const firebase_redirect = { login, logout };
320
- for (const page in firebase_redirect)
321
- for (const item in firebase_redirect[page])
322
- firebase_redirect[page][item] = firebase_redirect[page][item].toString();
323
-
324
- // Create Settings
325
- const tinyCfg = _.defaultsDeep({}, cfg.cfg, {
326
- // IP Verification
327
- ipVerification: false,
328
-
329
- // Need Verification
330
- needEmailVerified: true,
331
-
332
- // Error Callback
333
- errorCallback: function (err, req, res) {
334
- if (res) {
335
- return res.json(err);
336
- } else {
337
- logger$1.error(err);
338
- }
339
- },
340
-
341
- // Redirect
342
- redirect: {
343
- /* Login */
344
- login: function (data, req, res) {
345
- return res.json(data);
346
- },
347
-
348
- /* Logout */
349
- logout: function (data, req, res) {
350
- return res.json(data);
351
- },
352
-
353
- webhook: function (data, req, res) {
354
- return res.json(data);
355
- },
356
- },
357
- });
358
-
359
- // Auth Config
360
- const tinyAuth = _.defaultsDeep({}, cfg.auth, {
361
- redirect: '',
362
- client_id: '',
363
- client_secret: '',
364
- bot_token: '',
365
- first_get_user: true,
366
- discordScope: ['identify', 'email'],
367
- });
368
-
369
- // Auth Commands Config
370
- const tinyCommandAuth = _.defaultsDeep({}, cfg.comamndAuth, {
371
- redirect: tinyAuth.redirect,
372
- client_id: tinyAuth.client_id,
373
- client_secret: tinyAuth.client_secret,
374
- bot_token: tinyAuth.bot_token,
375
- first_get_user: tinyAuth.first_get_user,
376
- discordScope: ['applications.commands'],
377
- });
378
-
379
- // Bot Auth
380
- const botAuth = _.defaultsDeep({}, cfg.bot, {
381
- discordScope: ['bot', 'applications.commands'],
382
- permissions: 0,
383
- });
384
-
385
- // Final Result
386
- const final_functions = {
387
- // Auth
388
- auth: tinyAuth,
389
- commandAuth: tinyCommandAuth,
390
-
391
- // API
392
- addGuildMember: function (data) {
393
- return addGuildMember(tinyAuth.bot_token, data);
394
- },
395
-
396
- getGuildWidget: function (guildID) {
397
- return getGuildWidget(guildID);
398
- },
399
-
400
- // UID Generator
401
- uidGenerator: function (userID) {
402
- return discordSession.uidGenerator(userID);
403
- },
404
-
405
- // Session Validator
406
- sessionValidator: function (data = {}) {
407
- return (req, res, next) => {
408
- // Validator Progress
409
- const validatorItems = {
410
- values: ['getUserConnections', 'getUser', 'getUserGuilds'],
411
- count: 0,
412
- callback: function () {
413
- // The Item
414
- const item = validatorItems.values[validatorItems.count];
415
- if (typeof item === 'string') {
416
- // Read Item
417
- if (data[item]) {
418
- final_functions.sessionPlugins[item](req, res, () => {
419
- validatorItems.count++;
420
- return validatorItems.callback();
421
- });
422
- } else {
423
- validatorItems.count++;
424
- validatorItems.callback();
425
- }
426
- }
427
-
428
- // Next
429
- else
430
- final_functions.sessionPlugins.validator(req, res, () => {
431
- next();
432
- });
433
- },
434
- };
435
-
436
- // Complete
437
- return validatorItems.callback();
438
- };
439
- },
440
-
441
- // Session Plugins
442
- sessionPlugins: {
443
- // Session Validator
444
- validator: function (req, res, next) {
445
- // Empty CSRF Token
446
- if (!req.csrfToken) req.csrfToken = { new: {}, now: {} };
447
-
448
- // Preparing Clocks
449
- if (!req.utc_clock) req.utc_clock = { now: moment.tz('Universal') };
450
-
451
- // Add Auth
452
- req.discord_session.auth = {
453
- app: tinyAuth,
454
- command: tinyCommandAuth,
455
- bot: botAuth,
456
- };
457
-
458
- // Exist Discord Session
459
- const existDiscordSession =
460
- typeof req.session[sessionVars.token_expires_in] === 'string' &&
461
- typeof req.session[sessionVars.access_token] === 'string' &&
462
- typeof req.session[sessionVars.refresh_token] === 'string';
463
-
464
- // Exist Session
465
- if (
466
- existDiscordSession &&
467
- !req.url.startsWith(tinyURLPath.firebaseLogin + '?') &&
468
- req.url !== tinyURLPath.firebaseLogin &&
469
- !req.url.startsWith(tinyURLPath.firebaseLogout + '?') &&
470
- req.url !== tinyURLPath.firebaseLogout
471
- ) {
472
- // Exist Firebase
473
- if (cfg.firebase) {
474
- // Finish the Session
475
- const finishTinySession = function (err) {
476
- // Firebase Auth
477
- const firebase_auth = req.session[sessionVars.firebase_token];
478
-
479
- // Logout
480
- auto_logout(req, err)
481
- .then((result) => {
482
- logout_firebase(res, req, result.redirect, firebase_auth);
483
- })
484
- .catch((err) => {
485
- tinyCfg.errorCallback(err, req, res);
486
- });
487
- };
488
-
489
- discordSession.firebase
490
- .get(req, res)
491
- .then(() => {
492
- // Discord and Firebase same session
493
- if (!req.discord_session.user || sessionFirebaseDiscordValidator(req))
494
- checkDiscordSession(req, res, next);
495
- // Nope
496
- else finishTinySession();
497
- })
498
- .catch(finishTinySession);
499
- }
500
-
501
- // Nope
502
- else checkDiscordSession(req, res, next);
503
- } else next();
504
- },
505
-
506
- // Get User Module
507
- getUser: function (req, res, next) {
508
- // Get User Discord Data
509
- const access_token = req.session[sessionVars.access_token];
510
- if (typeof access_token === 'string') {
511
- getDiscordUser(access_token)
512
- .then((user) => {
513
- // Set Discord Data
514
- req.discord_session.user = user;
515
-
516
- // Complete
517
- next();
518
- })
519
- .catch((err) => {
520
- if (!req.discord_session.errors) {
521
- req.discord_session.errors = {};
522
- }
523
- req.discord_session.errors.user = err;
524
- delete req.discord_session.user;
525
- prepare_final_session(req, res, err);
526
- });
527
- } else next();
528
- },
529
-
530
- // Get User Module
531
- getUserConnections: function (req, res, next) {
532
- // Get User Discord Data
533
- if (typeof req.session[sessionVars.access_token] === 'string') {
534
- getUserConnections(req.session[sessionVars.access_token])
535
- .then((connections) => {
536
- // Set Discord Data
537
- req.discord_session.connections = connections;
538
-
539
- // Complete
540
- next();
541
- })
542
- .catch((err) => {
543
- if (!req.discord_session.errors) {
544
- req.discord_session.errors = {};
545
- }
546
- req.discord_session.errors.connections = err;
547
- delete req.discord_session.connections;
548
- prepare_final_session(req, res, err);
549
- });
550
- } else next();
551
- },
552
-
553
- // Get User Module
554
- getUserGuilds: function (req, res, next) {
555
- // Get User Discord Data
556
- if (typeof req.session[sessionVars.access_token] === 'string') {
557
- getUserGuilds(req.session[sessionVars.access_token])
558
- .then((guilds) => {
559
- // Set Discord Data
560
- req.discord_session.guilds = guilds;
561
-
562
- // Complete
563
- next();
564
- })
565
- .catch((err) => {
566
- if (!req.discord_session.errors) {
567
- req.discord_session.errors = {};
568
- }
569
- req.discord_session.errors.guilds = err;
570
- delete req.discord_session.guilds;
571
- prepare_final_session(req, res, err);
572
- });
573
- } else next();
574
- },
575
- },
576
- };
577
-
578
- // Test Modules Prepare
579
- const getSessionFromCookie = cookieSession$1;
580
-
581
- // Need Identify
582
- if (tinyAuth.discordScope.indexOf('identify') < 0) tinyAuth.discordScope.push('identify');
583
-
584
- if (tinyAuth.discordScope.indexOf('email') < 0) tinyAuth.discordScope.push('email');
585
-
586
- // Firebase Mode
587
- if (objFilter.objType(cfg.firebase, 'object')) {
588
- // Fix First Get User Value
589
- tinyAuth.first_get_user = true;
590
-
591
- // Fix Auth Value
592
- if (!cfg.firebase.auth) cfg.firebase.auth = cfg.firebase.root.auth();
593
- }
594
-
595
- // Session Vars
596
- const sessionVars = _.defaultsDeep({}, cfg.vars, {
597
- access_token: 'access_token',
598
- refresh_token: 'refresh_token',
599
- token_type: 'token_type',
600
- csrfToken: 'csrfToken',
601
- scope: 'scope',
602
- token_expires_in: 'token_expires_in',
603
- firebase_token: 'firebase_token',
604
- firebase_auth_token: 'firebase_auth_token',
605
- });
606
-
607
- // Crypto Values
608
- const tinyCrypto = _.defaultsDeep({}, cfg.crypto, _default);
609
-
610
- // Crypto Values
611
- const tinyURLPath = _.defaultsDeep({}, cfg.url, {
612
- commandLogin: '/commandLogin',
613
- botLogin: '/botLogin',
614
- login: '/login',
615
- logout: '/logout',
616
- redirect: '/redirect',
617
- firebaseLogin: '/firebase/login',
618
- firebaseLogout: '/firebase/logout',
619
- });
620
-
621
- // Logout Firebase
622
- const logout_firebase = (res, req, redirect, firebase_auth) => {
623
- // Firebase Logout
624
- if (cfg.firebase)
625
- return discordSession.firebaseAuth.redirect.logout(
626
- req,
627
- res,
628
- redirect,
629
- req.csrfToken.now.value,
630
- firebase_auth,
631
- );
632
- // Normal
633
- else {
634
- // Get Domain
635
- const tinyDomain = getDomainURL(req, cfg.port);
636
- return res.redirect(tinyDomain + redirect);
637
- }
638
- };
639
-
640
- // Logout Result
641
- const logout_result = (req, user) => {
642
- return new Promise(function (resolve) {
643
- // Firebase Logout
644
- if (cfg.firebase) {
645
- // Exist User
646
- if (user) {
647
- // Revoke Refresh
648
- cfg.firebase.auth
649
- .revokeRefreshTokens(discordSession.uidGenerator(user.id))
650
- .then(() => {
651
- req.session = null;
652
- resolve(user);
653
- })
654
- .catch((err) => {
655
- req.session = null;
656
- resolve(user);
657
- });
658
- }
659
-
660
- // Nope
661
- else {
662
- req.session = null;
663
- resolve();
664
- }
665
- }
666
-
667
- // Nope
668
- else {
669
- req.session = null;
670
- resolve(user);
671
- }
672
- });
673
- };
674
-
675
- // Remove Values
676
- const removeCommandSession = function (req, callback) {
677
- // Session Items
678
- delete req.session[sessionVars.access_token + '_command'];
679
- delete req.session[sessionVars.refresh_token + '_command'];
680
- delete req.session[sessionVars.token_type + '_command'];
681
- delete req.session[sessionVars.scope + '_command'];
682
-
683
- // Expire In
684
- delete req.session[sessionVars.token_expires_in + '_command'];
685
-
686
- // Complete
687
- return callback();
688
- };
689
-
690
- // Logout Action
691
- const logout_action = function (req, csrfToken, redirect) {
692
- return new Promise(function (resolve) {
693
- // State
694
- const state = { csrfToken: req.csrfToken.now.value };
695
-
696
- // Redirect
697
- if (redirect) state.redirect = redirect;
698
-
699
- // Result
700
- const finalResult = function () {
701
- index
702
- .logout(
703
- req,
704
- req.session[sessionVars.access_token],
705
- {
706
- // CSRF Token
707
- csrfToken: csrfToken,
708
-
709
- // Query
710
- query: {
711
- csrfToken: 'csrfToken',
712
- redirect: 'redirect',
713
- },
714
-
715
- // State
716
- state: state,
717
-
718
- // Auth
719
- auth: tinyAuth,
720
- },
721
- (getSessionFromCookie(req, sessionVars.access_token),
722
- req.session[sessionVars.access_token]),
723
- )
724
- .then(resolve)
725
- .catch(resolve);
726
- };
727
-
728
- // Normal
729
- if (typeof req.session[sessionVars.access_token + '_command'] !== 'string') finalResult();
730
- // Remove Command Token
731
- else {
732
- // Prepare Auth
733
- const commandAuth = clone(tinyAuth);
734
- commandAuth.discordScope = ['applications.commands', 'applications.commands.update'];
735
-
736
- index
737
- .logout(
738
- req,
739
- req.session[sessionVars.access_token],
740
- {
741
- // CSRF Token
742
- csrfToken: csrfToken,
743
-
744
- // Query
745
- query: {
746
- csrfToken: 'csrfToken',
747
- redirect: 'redirect',
748
- },
749
-
750
- // State
751
- state: state,
752
-
753
- // Auth
754
- auth: commandAuth,
755
- },
756
- (getSessionFromCookie(req, sessionVars.access_token),
757
- req.session[sessionVars.access_token]),
758
- )
759
- .then((result) => {
760
- removeCommandSession(req, finalResult);
761
- })
762
- .catch((err) => {
763
- removeCommandSession(req, finalResult);
764
- });
765
- }
766
- });
767
- };
768
-
769
- // Auto Logout
770
- const auto_logout = function (req, err) {
771
- return new Promise(function (resolve, reject) {
772
- // Print Error
773
- if (err) tinyCfg.errorCallback(err);
774
-
775
- // Result
776
- logout_action(req, req.csrfToken.now.value, req.url).then((result) => {
777
- // Discord Logout Complete
778
- logout_result(req, result.user).then(resolve);
779
- });
780
- });
781
- };
782
-
783
- // Prepare Final Session
784
- const prepare_final_session = function (req, res, err) {
785
- // Firebase Auth
786
- const firebase_auth = req.session[sessionVars.firebase_token];
787
- if (err) tinyCfg.errorCallback(err);
788
-
789
- // Logout
790
- auto_logout(req)
791
- .then((result) => {
792
- logout_firebase(res, req, result.redirect, firebase_auth);
793
- })
794
- .catch((err) => {
795
- tinyCfg.errorCallback(err, req, res);
796
- });
797
- };
798
-
799
- // Check Discord Session
800
- const checkDiscordSession = function (req, res, next) {
801
- // Rest Checker
802
- const restChecker = function () {
803
- // Add to Req
804
- if (
805
- typeof req.session[sessionVars.access_token + '_command'] === 'string' ||
806
- typeof req.session[sessionVars.access_token + '_command'] === 'number'
807
- ) {
808
- // Add Access Command
809
- req.discord_session.commands = {};
810
- req.discord_session.commands.access_token =
811
- req.session[sessionVars.access_token + '_command'];
812
-
813
- // Other Values
814
- if (
815
- typeof req.session[sessionVars.token_type + '_command'] === 'string' ||
816
- typeof req.session[sessionVars.token_type + '_command'] === 'number'
817
- ) {
818
- req.discord_session.commands.token_type =
819
- req.session[sessionVars.token_type + '_command'];
820
- }
821
-
822
- if (
823
- typeof req.session[sessionVars.scope + '_command'] === 'string' ||
824
- typeof req.session[sessionVars.scope + '_command'] === 'number'
825
- )
826
- req.discord_session.commands.scope = req.session[sessionVars.scope + '_command'];
827
- }
828
-
829
- // Need Refresh
830
- if (req.utc_clock.ds_token_time_left < 1440) {
831
- // Not Expired
832
- if (req.utc_clock.ds_token_time_left > 0) {
833
- index
834
- .refreshToken(
835
- req,
836
- {
837
- // Auth
838
- auth: tinyAuth,
839
-
840
- // Refresh Token
841
- refresh_token: req.session[sessionVars.refresh_token],
842
- },
843
- getSessionFromCookie(req, sessionVars.access_token),
844
- )
845
- .then((result) => {
846
- // Complete
847
- if (result.refreshed) {
848
- // Set Cookie Session
849
- discordSession.set(req, result.tokenRequest);
850
-
851
- // Exist Firebase
852
- if (cfg.firebase) {
853
- // Set New Firebase Session Data
854
- const access_token = req.session[sessionVars.access_token];
855
- getDiscordUser(access_token)
856
- .then((user) => {
857
- // Set Custom Usre Claims
858
- cfg.firebase.auth
859
- .setCustomUserClaims(
860
- discordSession.uidGenerator(user.id),
861
- prepare_fire_auth_discord(req, user),
862
- )
863
- .then(() => {
864
- // Update User Data
865
- /* discordSession.firebase.updateUser(access_token, user).then(function () {
866
- next();
867
- }).catch(error => {
868
- logger.error(error);
869
- prepare_final_session(req, res, error);
870
- }); */
871
-
872
- next();
873
- })
874
- .catch((err) => {
875
- prepare_final_session(req, res, err);
876
- });
877
- })
878
- .catch((err) => {
879
- prepare_final_session(req, res, err);
880
- });
881
- }
882
-
883
- // Nope
884
- else next();
885
- }
886
-
887
- // Nope
888
- else next();
889
- })
890
- .catch((err) => {
891
- prepare_final_session(req, res, err);
892
- });
893
- }
894
-
895
- // Finish the Session
896
- else prepare_final_session(req, res);
897
- } else {
898
- // Exist Discord Session Data and Firebase
899
- if (cfg.firebase && req.discord_session.user && objFilter.objType(req.firebase_session, 'object')) {
900
- // Set New Firebase Session Data
901
- req.session[sessionVars.access_token];
902
-
903
- // Prepare OLD User
904
- /* const oldUser = {};
905
-
906
- // Get ID
907
- oldUser.id = req.firebase_session.uid.substring(discordSession.varsTemplate.uid.length + tinyAuth.client_id.length + 1);
908
-
909
- // Convert Username
910
- oldUser.username = req.firebase_session.name.split('#');
911
-
912
- // Get Discriminator
913
- oldUser.discriminator = oldUser.username[oldUser.username.length - 1];
914
-
915
- // Remove Discriminator
916
- oldUser.username.pop();
917
-
918
- // Insert Username
919
- oldUser.username = oldUser.username.join('#');
920
-
921
- // Get Avatar
922
- oldUser.avatar = req.firebase_session.picture.substring(discordSession.varsTemplate.avatarURL.length + oldUser.id.length + 1);
923
-
924
- // Get Email
925
- oldUser.email = req.firebase_session.email;
926
- oldUser.verified = req.firebase_session.email_verified; */
927
-
928
- // Prepare New User
929
- ({
930
- id: req.discord_session.user.id,
931
- username: req.discord_session.user.username,
932
- avatar: req.discord_session.user.avatar,
933
- discriminator: req.discord_session.user.discriminator,
934
- email: req.discord_session.user.email,
935
- verified: req.discord_session.user.verified,
936
- });
937
-
938
- // Update User Data
939
- const make_the_update = function () {
940
- /*
941
- discordSession.firebase.updateUser(access_token, user, oldUser).then(function () {
942
- next();
943
- }).catch(error => {
944
- logger.error(error);
945
- prepare_final_session(req, res, error);
946
- });
947
- */
948
- next();
949
- };
950
-
951
- // Check Need Update
952
- let needUpdate = false;
953
- if (
954
- !objFilter.objType(req.firebase_session.discord, 'object') ||
955
- hash(req.firebase_session.discord) !== hash(req.discord_session.user)
956
- )
957
- needUpdate = true;
958
-
959
- // User Verified
960
- if (!needUpdate) make_the_update();
961
- // Nope
962
- else
963
- cfg.firebase.auth
964
- .setCustomUserClaims(
965
- discordSession.uidGenerator(req.discord_session.user.id),
966
- prepare_fire_auth_discord(req, req.discord_session.user),
967
- )
968
- .then(() => make_the_update())
969
- .catch((err) => prepare_final_session(req, res, err));
970
- }
971
-
972
- // Nope
973
- else next();
974
- }
975
- };
976
-
977
- // Get Token Expiration
978
- req.utc_clock.ds_token_expires_in = moment.tz(
979
- req.session[sessionVars.token_expires_in],
980
- 'Universal',
981
- );
982
-
983
- // Time Left
984
- req.utc_clock.ds_token_time_left = req.utc_clock.ds_token_expires_in.diff(
985
- req.utc_clock.now,
986
- 'minutes',
987
- );
988
-
989
- // Command Time Left
990
- if (!req.session[sessionVars.token_expires_in + '_command']) return restChecker();
991
- // Nope
992
- else {
993
- // Get Token Expiration
994
- req.utc_clock.ds_token_expires_in_command = moment.tz(
995
- req.session[sessionVars.token_expires_in + '_command'],
996
- 'Universal',
997
- );
998
-
999
- // Time Left
1000
- req.utc_clock.ds_token_time_left_command = req.utc_clock.ds_token_expires_in.diff(
1001
- req.utc_clock.now,
1002
- 'minutes',
1003
- );
1004
-
1005
- // Need Refresh
1006
- if (req.utc_clock.ds_token_time_left_command < 1440) {
1007
- // Prepare Auth
1008
- const commandAuth = clone(tinyAuth);
1009
- commandAuth.discordScope = ['applications.commands', 'applications.commands.update'];
1010
-
1011
- // Logout
1012
- const logoutCommand = function () {
1013
- // Revoke Token
1014
- revokeToken(req.session[sessionVars.access_token + '_command'], commandAuth)
1015
- .then((data) => {
1016
- removeCommandSession(req, restChecker);
1017
- })
1018
- .catch((err) => {
1019
- removeCommandSession(req, restChecker);
1020
- });
1021
- };
1022
-
1023
- // Not Expired
1024
- if (req.utc_clock.ds_token_time_left_command > 0) {
1025
- index
1026
- .refreshToken(
1027
- req,
1028
- {
1029
- // Auth
1030
- auth: commandAuth,
1031
-
1032
- // Refresh Token
1033
- refresh_token: req.session[sessionVars.refresh_token + '_command'],
1034
- },
1035
- getSessionFromCookie(req, sessionVars.access_token),
1036
- )
1037
- .then((result) => {
1038
- // Complete
1039
- if (result.refreshed) discordSession.set(req, result.tokenRequest, '_command');
1040
-
1041
- // Rest
1042
- restChecker();
1043
- })
1044
- .catch(async (err) => {
1045
- logoutCommand();
1046
- });
1047
- }
1048
-
1049
- // Finish the Session
1050
- else logoutCommand();
1051
- } else restChecker();
1052
- }
1053
- };
1054
-
1055
- // Prepare Body Parser
1056
- let bodyParser = {};
1057
- if (cfg.bodyParser) {
1058
- bodyParser.json = cfg.bodyParser.json();
1059
- bodyParser.urlencoded = cfg.bodyParser.urlencoded({ extended: true });
1060
- }
1061
-
1062
- // Login Firebase
1063
- const firebaseLoginCallback = (req, res) => {
1064
- // Remove OLD Auth Token
1065
- req.session[sessionVars.firebase_auth_token] = null;
1066
-
1067
- // Exist Discord
1068
- if (req.discord_session.user) {
1069
- // Exist Body
1070
- if (objFilter.objType(req.body, 'object') && typeof req.body.token === 'string') {
1071
- // Exist Query
1072
- if (
1073
- typeof req.csrfToken.now.value !== 'string' ||
1074
- req.csrfToken.now.value.length < 1 ||
1075
- (typeof req.body.csrfToken === 'string' &&
1076
- req.csrfToken.now.value === req.body.csrfToken)
1077
- ) {
1078
- // Prepare Module
1079
- const newCookie = new cookieSession$2();
1080
-
1081
- // Set Settings
1082
- newCookie.setCookieTimeGenerator(cfg.cookieTimeGenerator);
1083
- newCookie.setCheckAuthTime(cfg.checkAuthTime);
1084
-
1085
- // Action
1086
- newCookie
1087
- .genCookieSession(cfg.firebase.auth, req.body.token)
1088
- .then((sessionCookie) => {
1089
- req.session[sessionVars.firebase_token] = sessionCookie;
1090
- res.json({ success: true });
1091
- })
1092
- .catch((err) => {
1093
- res.json({ success: false, error: err.message });
1094
- });
1095
-
1096
- /* discordSession.firebase.updateUser(req.session[sessionVars.access_token], req.discord_session.user).then(function () {
1097
- res.json({ success: true });
1098
- }).catch(error => {
1099
- logger.error(error);
1100
- res.json({ success: false, error: 'Error updating user' });
1101
- }); */
1102
- }
1103
-
1104
- // Nope
1105
- else return res.json({ success: false, error: 'Invalid csrfToken!' });
1106
- }
1107
-
1108
- // Nope
1109
- else return res.json({ success: false, error: 'Invalid Data!' });
1110
- }
1111
-
1112
- // Nope
1113
- else return res.json({ success: false, error: 'Invalid Discord User!' });
1114
- };
1115
-
1116
- if (cfg.bodyParser)
1117
- app.post(
1118
- tinyURLPath.firebaseLogin,
1119
- bodyParser.json,
1120
- bodyParser.urlencoded,
1121
- final_functions.sessionPlugins.getUser,
1122
- final_functions.sessionPlugins.validator,
1123
- firebaseLoginCallback,
1124
- );
1125
- else
1126
- app.post(
1127
- tinyURLPath.firebaseLogin,
1128
- final_functions.sessionPlugins.getUser,
1129
- final_functions.sessionPlugins.validator,
1130
- firebaseLoginCallback,
1131
- );
1132
-
1133
- app.get(tinyURLPath.firebaseLogin, final_functions.sessionPlugins.validator, (req, res) => {
1134
- // Final Data
1135
- const final_data = {};
1136
-
1137
- // Exist Redirect
1138
- if (typeof req.query.redirect === 'string') final_data.redirect = '/' + req.query.redirect;
1139
- else final_data.redirect = '/';
1140
-
1141
- // Auth Token
1142
- if (typeof req.session[sessionVars.firebase_auth_token] === 'string') {
1143
- // Insert Data
1144
- if (typeof req.query.key === 'string' && req.query.key.length > 0) {
1145
- final_data.key = req.query.key;
1146
- }
1147
- final_data.functions = firebase_redirect.login;
1148
- final_data.token = req.session[sessionVars.firebase_auth_token];
1149
-
1150
- // Complete
1151
- return tinyCfg.redirect.login(final_data, req, res);
1152
- }
1153
-
1154
- // Nope
1155
- else {
1156
- // Get Domain
1157
- const tinyDomain = getDomainURL(req, cfg.port);
1158
- return res.redirect(tinyDomain + final_data.redirect);
1159
- }
1160
- });
1161
-
1162
- // Logout Firebase
1163
- const firebaseLogoutCallback = (req, res) => {
1164
- req.session[sessionVars.firebase_token] = null;
1165
- return res.json({ success: true });
1166
- };
1167
-
1168
- if (cfg.bodyParser)
1169
- app.post(
1170
- tinyURLPath.firebaseLogout,
1171
- bodyParser.json,
1172
- bodyParser.urlencoded,
1173
- final_functions.sessionPlugins.validator,
1174
- firebaseLogoutCallback,
1175
- );
1176
- else
1177
- app.post(
1178
- tinyURLPath.firebaseLogout,
1179
- final_functions.sessionPlugins.validator,
1180
- firebaseLogoutCallback,
1181
- );
1182
-
1183
- app.get(tinyURLPath.firebaseLogout, final_functions.sessionPlugins.validator, (req, res) => {
1184
- // Final Data
1185
- const final_data = {};
1186
-
1187
- // Exist Redirect
1188
- if (typeof req.query.redirect === 'string') final_data.redirect = '/' + req.query.redirect;
1189
- else final_data.redirect = '/';
1190
-
1191
- // Exist Token
1192
- if (typeof req.query.firebase_auth === 'string') {
1193
- // Insert Data
1194
- if (typeof req.query.key === 'string' && req.query.key.length > 0) {
1195
- final_data.key = req.query.key;
1196
- }
1197
- final_data.originalKey = req.csrfToken.now.value;
1198
- final_data.functions = firebase_redirect.logout;
1199
- final_data.token = req.query.firebase_auth;
1200
-
1201
- // Complete
1202
- return tinyCfg.redirect.logout(final_data, req, res);
1203
- }
1204
-
1205
- // Nope
1206
- else {
1207
- // Get Domain
1208
- const tinyDomain = getDomainURL(req, cfg.port);
1209
- return res.redirect(tinyDomain + final_data.redirect);
1210
- }
1211
- });
1212
-
1213
- // Login
1214
- if (typeof tinyURLPath.login === 'string') {
1215
- app.get(tinyURLPath.login, final_functions.sessionPlugins.validator, (req, res) => {
1216
- // Result
1217
- index.login(
1218
- req,
1219
- res,
1220
- {
1221
- // Error
1222
- errorCallback: tinyCfg.errorCallback,
1223
-
1224
- // Crypto
1225
- crypto: tinyCrypto,
1226
-
1227
- // Auth
1228
- auth: tinyAuth,
1229
-
1230
- // Type
1231
- type: 'login',
1232
-
1233
- // Query
1234
- query: { redirect: 'redirect' },
1235
-
1236
- // State
1237
- state: {
1238
- csrfToken: req.csrfToken.now.value,
1239
- },
1240
-
1241
- // Port
1242
- port: cfg.port,
1243
- },
1244
- getSessionFromCookie(req, sessionVars.access_token),
1245
- );
1246
- });
1247
- }
1248
-
1249
- // Command Login
1250
- if (typeof tinyURLPath.commandLogin === 'string') {
1251
- app.get(tinyURLPath.commandLogin, final_functions.sessionPlugins.validator, (req, res) => {
1252
- // Prepare Auth
1253
- const commandAuth = clone(tinyCommandAuth);
1254
-
1255
- // Result
1256
- index.login(
1257
- req,
1258
- res,
1259
- {
1260
- // Error
1261
- errorCallback: tinyCfg.errorCallback,
1262
-
1263
- // Crypto
1264
- crypto: tinyCrypto,
1265
-
1266
- // Auth
1267
- auth: commandAuth,
1268
-
1269
- // Type
1270
- type: 'login_command',
1271
-
1272
- // Query
1273
- query: { redirect: 'redirect' },
1274
-
1275
- // State
1276
- state: {
1277
- csrfToken: req.csrfToken.now.value,
1278
- },
1279
-
1280
- // Port
1281
- port: cfg.port,
1282
- },
1283
- getSessionFromCookie(req, sessionVars.access_token),
1284
- );
1285
- });
1286
- }
1287
-
1288
- // Add Commands
1289
- if (typeof tinyURLPath.botLogin === 'string') {
1290
- app.get(tinyURLPath.botLogin, (req, res) => {
1291
- return res.redirect(
1292
- `${config.oauth2}?client_id=${encodeURIComponent(tinyAuth.client_id)}&scope=${encodeURIComponent(botAuth.discordScope.join(' '))}&permissions=${botAuth.permissions}`,
1293
- );
1294
- });
1295
- }
1296
-
1297
- // Logout
1298
- app.get(tinyURLPath.logout, final_functions.sessionPlugins.validator, (req, res) => {
1299
- // Firebase Auth
1300
- const firebase_auth = req.session[sessionVars.firebase_token];
1301
-
1302
- // Result
1303
-
1304
- logout_action(req, req.query[sessionVars.csrfToken]).then((result) => {
1305
- // Discord Logout Complete
1306
- logout_result(req, result.user).then(() => {
1307
- logout_firebase(res, req, result.redirect, firebase_auth);
1308
- });
1309
- });
1310
- });
1311
-
1312
- // Redirect
1313
- app.get(tinyURLPath.redirect, final_functions.sessionPlugins.validator, (req, res) => {
1314
- // Result
1315
- index
1316
- .redirect(
1317
- req,
1318
- {
1319
- // Auth
1320
- auth: tinyAuth,
1321
-
1322
- // Crypto
1323
- crypto: tinyCrypto,
1324
-
1325
- // Query
1326
- query: { redirect: 'redirect' },
1327
-
1328
- // State
1329
- state: {
1330
- csrfToken: req.csrfToken.now.value,
1331
- },
1332
- },
1333
- getSessionFromCookie(req, sessionVars.access_token),
1334
- )
1335
- .then((result) => {
1336
- // New Session Result
1337
- if (result.state.type === 'login' && result.newSession) {
1338
- // Verified
1339
- if (!tinyCfg.needEmailVerified || result.user.verified) {
1340
- // Set Cookie Session
1341
- discordSession.set(req, result.tokenRequest);
1342
-
1343
- // Set Firebase Session
1344
- if (cfg.firebase) {
1345
- discordSession.firebase
1346
- .set(req, result.user)
1347
- .then(() => {
1348
- discordSession.firebaseAuth.redirect.login(
1349
- req,
1350
- res,
1351
- result.redirect,
1352
- result.state.csrfToken,
1353
- );
1354
- })
1355
- .catch((err) => {
1356
- // Firebase Auth
1357
- const firebase_auth = req.session[sessionVars.firebase_token];
1358
-
1359
- // Logout
1360
- auto_logout(req, { code: 500, message: err.message })
1361
- .then((result) => {
1362
- logout_firebase(res, req, result.redirect, firebase_auth);
1363
- })
1364
- .catch((err) => {
1365
- tinyCfg.errorCallback(err, req, res);
1366
- });
1367
- });
1368
- }
1369
-
1370
- // Normal
1371
- else {
1372
- // Get Domain
1373
- const tinyDomain = getDomainURL(req, cfg.port);
1374
- res.redirect(tinyDomain + result.redirect);
1375
- }
1376
- }
1377
-
1378
- // Nope
1379
- else
1380
- tinyCfg.errorCallback(
1381
- { code: 401, message: 'This email is not a verified email!' },
1382
- req,
1383
- res,
1384
- );
1385
- }
1386
-
1387
- // Command
1388
- else if (result.state.type === 'login_command') {
1389
- // Verified
1390
- if (!tinyCfg.needEmailVerified || result.user.verified) {
1391
- // Set Cookie Session
1392
- discordSession.set(req, result.tokenRequest, '_command');
1393
-
1394
- // Get Domain
1395
- const tinyDomain = getDomainURL(req, cfg.port);
1396
- res.redirect(tinyDomain + result.redirect);
1397
- }
1398
-
1399
- // Nope
1400
- else
1401
- tinyCfg.errorCallback(
1402
- { code: 401, message: 'This email is not a verified email!' },
1403
- req,
1404
- res,
1405
- );
1406
- }
1407
-
1408
- // Normal Redirect
1409
- else {
1410
- if (typeof tinyCfg.redirect[result.state.type] === 'function')
1411
- tinyCfg.redirect[result.state.type](result, req, res);
1412
- // Nope
1413
- else {
1414
- // Get Domain
1415
- const tinyDomain = getDomainURL(req, cfg.port);
1416
- res.redirect(tinyDomain + result.redirect);
1417
- }
1418
- }
1419
- })
1420
- .catch((err) => {
1421
- tinyCfg.errorCallback(err, req, res);
1422
- });
1423
- });
1424
-
1425
- // Complete
1426
- return final_functions;
1427
- }
1428
-
1429
- // Nope
1430
- else throw new Error('Invalid Config Value!');
1431
- }
1432
-
1433
- module.exports = cookieSession;