@atproto/pds 0.5.0 → 0.5.2

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 (279) hide show
  1. package/CHANGELOG.md +27 -0
  2. package/dist/account-manager/account-manager.d.ts +35 -4
  3. package/dist/account-manager/account-manager.d.ts.map +1 -1
  4. package/dist/account-manager/account-manager.js +67 -6
  5. package/dist/account-manager/account-manager.js.map +1 -1
  6. package/dist/account-manager/helpers/account.d.ts +1 -1
  7. package/dist/account-manager/helpers/account.d.ts.map +1 -1
  8. package/dist/account-manager/helpers/account.js +10 -4
  9. package/dist/account-manager/helpers/account.js.map +1 -1
  10. package/dist/account-manager/oauth-store.d.ts +2 -1
  11. package/dist/account-manager/oauth-store.d.ts.map +1 -1
  12. package/dist/account-manager/oauth-store.js +61 -12
  13. package/dist/account-manager/oauth-store.js.map +1 -1
  14. package/dist/actor-store/record/reader.d.ts +1 -1
  15. package/dist/actor-store/record/reader.d.ts.map +1 -1
  16. package/dist/actor-store/record/reader.js.map +1 -1
  17. package/dist/api/app/bsky/actor/getPreferences.d.ts.map +1 -1
  18. package/dist/api/app/bsky/actor/getPreferences.js +7 -2
  19. package/dist/api/app/bsky/actor/getPreferences.js.map +1 -1
  20. package/dist/api/app/bsky/actor/putPreferences.d.ts.map +1 -1
  21. package/dist/api/app/bsky/actor/putPreferences.js +7 -2
  22. package/dist/api/app/bsky/actor/putPreferences.js.map +1 -1
  23. package/dist/api/com/atproto/admin/updateAccountHandle.d.ts.map +1 -1
  24. package/dist/api/com/atproto/admin/updateAccountHandle.js +33 -43
  25. package/dist/api/com/atproto/admin/updateAccountHandle.js.map +1 -1
  26. package/dist/api/com/atproto/identity/updateHandle.d.ts.map +1 -1
  27. package/dist/api/com/atproto/identity/updateHandle.js +39 -61
  28. package/dist/api/com/atproto/identity/updateHandle.js.map +1 -1
  29. package/dist/api/com/atproto/repo/getRecord.js +3 -3
  30. package/dist/api/com/atproto/repo/getRecord.js.map +1 -1
  31. package/dist/api/com/atproto/repo/putRecord.js +2 -2
  32. package/dist/api/com/atproto/repo/putRecord.js.map +1 -1
  33. package/dist/api/com/atproto/server/getServiceAuth.d.ts.map +1 -1
  34. package/dist/api/com/atproto/server/getServiceAuth.js +4 -0
  35. package/dist/api/com/atproto/server/getServiceAuth.js.map +1 -1
  36. package/dist/config/config.d.ts +5 -2
  37. package/dist/config/config.d.ts.map +1 -1
  38. package/dist/config/config.js +50 -46
  39. package/dist/config/config.js.map +1 -1
  40. package/dist/config/env.d.ts +1 -0
  41. package/dist/config/env.d.ts.map +1 -1
  42. package/dist/config/env.js +1 -0
  43. package/dist/config/env.js.map +1 -1
  44. package/dist/context.d.ts.map +1 -1
  45. package/dist/context.js +3 -3
  46. package/dist/context.js.map +1 -1
  47. package/dist/lexicons/app/bsky/actor/defs.defs.d.ts +8 -0
  48. package/dist/lexicons/app/bsky/actor/defs.defs.d.ts.map +1 -1
  49. package/dist/lexicons/app/bsky/actor/defs.defs.js +3 -0
  50. package/dist/lexicons/app/bsky/actor/defs.defs.js.map +1 -1
  51. package/dist/lexicons/app/bsky/actor/profile.defs.d.ts.map +1 -1
  52. package/dist/lexicons/app/bsky/actor/status.defs.d.ts.map +1 -1
  53. package/dist/lexicons/app/bsky/draft/defs.defs.d.ts +22 -0
  54. package/dist/lexicons/app/bsky/draft/defs.defs.d.ts.map +1 -1
  55. package/dist/lexicons/app/bsky/draft/defs.defs.js +11 -0
  56. package/dist/lexicons/app/bsky/draft/defs.defs.js.map +1 -1
  57. package/dist/lexicons/app/bsky/embed/gallery.d.ts +3 -0
  58. package/dist/lexicons/app/bsky/embed/gallery.d.ts.map +1 -0
  59. package/dist/lexicons/app/bsky/embed/gallery.defs.d.ts +130 -0
  60. package/dist/lexicons/app/bsky/embed/gallery.defs.d.ts.map +1 -0
  61. package/dist/lexicons/app/bsky/embed/gallery.defs.js +47 -0
  62. package/dist/lexicons/app/bsky/embed/gallery.defs.js.map +1 -0
  63. package/dist/lexicons/app/bsky/embed/gallery.js +6 -0
  64. package/dist/lexicons/app/bsky/embed/gallery.js.map +1 -0
  65. package/dist/lexicons/app/bsky/embed/record.defs.d.ts +2 -1
  66. package/dist/lexicons/app/bsky/embed/record.defs.d.ts.map +1 -1
  67. package/dist/lexicons/app/bsky/embed/record.defs.js +2 -0
  68. package/dist/lexicons/app/bsky/embed/record.defs.js.map +1 -1
  69. package/dist/lexicons/app/bsky/embed/recordWithMedia.defs.d.ts +13 -12
  70. package/dist/lexicons/app/bsky/embed/recordWithMedia.defs.d.ts.map +1 -1
  71. package/dist/lexicons/app/bsky/embed/recordWithMedia.defs.js +3 -0
  72. package/dist/lexicons/app/bsky/embed/recordWithMedia.defs.js.map +1 -1
  73. package/dist/lexicons/app/bsky/embed.d.ts +1 -0
  74. package/dist/lexicons/app/bsky/embed.d.ts.map +1 -1
  75. package/dist/lexicons/app/bsky/embed.js +1 -0
  76. package/dist/lexicons/app/bsky/embed.js.map +1 -1
  77. package/dist/lexicons/app/bsky/feed/defs.defs.d.ts +2 -1
  78. package/dist/lexicons/app/bsky/feed/defs.defs.d.ts.map +1 -1
  79. package/dist/lexicons/app/bsky/feed/defs.defs.js +2 -0
  80. package/dist/lexicons/app/bsky/feed/defs.defs.js.map +1 -1
  81. package/dist/lexicons/app/bsky/feed/generator.defs.d.ts.map +1 -1
  82. package/dist/lexicons/app/bsky/feed/like.defs.d.ts.map +1 -1
  83. package/dist/lexicons/app/bsky/feed/post.defs.d.ts +12 -11
  84. package/dist/lexicons/app/bsky/feed/post.defs.d.ts.map +1 -1
  85. package/dist/lexicons/app/bsky/feed/post.defs.js +2 -0
  86. package/dist/lexicons/app/bsky/feed/post.defs.js.map +1 -1
  87. package/dist/lexicons/app/bsky/feed/postgate.defs.d.ts.map +1 -1
  88. package/dist/lexicons/app/bsky/feed/repost.defs.d.ts.map +1 -1
  89. package/dist/lexicons/app/bsky/feed/threadgate.defs.d.ts.map +1 -1
  90. package/dist/lexicons/app/bsky/graph/block.defs.d.ts.map +1 -1
  91. package/dist/lexicons/app/bsky/graph/follow.defs.d.ts.map +1 -1
  92. package/dist/lexicons/app/bsky/graph/list.defs.d.ts.map +1 -1
  93. package/dist/lexicons/app/bsky/graph/listblock.defs.d.ts.map +1 -1
  94. package/dist/lexicons/app/bsky/graph/listitem.defs.d.ts.map +1 -1
  95. package/dist/lexicons/app/bsky/graph/starterpack.defs.d.ts.map +1 -1
  96. package/dist/lexicons/app/bsky/graph/verification.defs.d.ts.map +1 -1
  97. package/dist/lexicons/app/bsky/labeler/service.defs.d.ts.map +1 -1
  98. package/dist/lexicons/app/bsky/notification/declaration.defs.d.ts.map +1 -1
  99. package/dist/lexicons/chat/bsky/actor/declaration.defs.d.ts.map +1 -1
  100. package/dist/lexicons/chat/bsky/actor/getStatus.defs.d.ts +2 -0
  101. package/dist/lexicons/chat/bsky/actor/getStatus.defs.d.ts.map +1 -1
  102. package/dist/lexicons/chat/bsky/actor/getStatus.defs.js +1 -0
  103. package/dist/lexicons/chat/bsky/actor/getStatus.defs.js.map +1 -1
  104. package/dist/lexicons/chat/bsky/authFullChatClient.defs.d.ts.map +1 -1
  105. package/dist/lexicons/chat/bsky/authFullChatClient.defs.js +1 -0
  106. package/dist/lexicons/chat/bsky/authFullChatClient.defs.js.map +1 -1
  107. package/dist/lexicons/chat/bsky/convo/defs.defs.d.ts +53 -14
  108. package/dist/lexicons/chat/bsky/convo/defs.defs.d.ts.map +1 -1
  109. package/dist/lexicons/chat/bsky/convo/defs.defs.js +33 -5
  110. package/dist/lexicons/chat/bsky/convo/defs.defs.js.map +1 -1
  111. package/dist/lexicons/chat/bsky/convo/getConvoForMembers.defs.d.ts +1 -1
  112. package/dist/lexicons/chat/bsky/convo/getConvoForMembers.defs.d.ts.map +1 -1
  113. package/dist/lexicons/chat/bsky/convo/getConvoForMembers.defs.js +1 -0
  114. package/dist/lexicons/chat/bsky/convo/getConvoForMembers.defs.js.map +1 -1
  115. package/dist/lexicons/chat/bsky/convo/getLog.defs.d.ts +2 -2
  116. package/dist/lexicons/chat/bsky/convo/getLog.defs.d.ts.map +1 -1
  117. package/dist/lexicons/chat/bsky/convo/getLog.defs.js +3 -0
  118. package/dist/lexicons/chat/bsky/convo/getLog.defs.js.map +1 -1
  119. package/dist/lexicons/chat/bsky/embed/joinLink.d.ts +3 -0
  120. package/dist/lexicons/chat/bsky/embed/joinLink.d.ts.map +1 -0
  121. package/dist/lexicons/chat/bsky/embed/joinLink.defs.d.ts +99 -0
  122. package/dist/lexicons/chat/bsky/embed/joinLink.defs.d.ts.map +1 -0
  123. package/dist/lexicons/chat/bsky/embed/joinLink.defs.js +28 -0
  124. package/dist/lexicons/chat/bsky/embed/joinLink.defs.js.map +1 -0
  125. package/dist/lexicons/chat/bsky/embed/joinLink.js +6 -0
  126. package/dist/lexicons/chat/bsky/embed/joinLink.js.map +1 -0
  127. package/dist/lexicons/chat/bsky/embed.d.ts +2 -0
  128. package/dist/lexicons/chat/bsky/embed.d.ts.map +1 -0
  129. package/dist/lexicons/chat/bsky/embed.js +5 -0
  130. package/dist/lexicons/chat/bsky/embed.js.map +1 -0
  131. package/dist/lexicons/chat/bsky/group/addMembers.defs.d.ts +1 -1
  132. package/dist/lexicons/chat/bsky/group/addMembers.defs.d.ts.map +1 -1
  133. package/dist/lexicons/chat/bsky/group/addMembers.defs.js +1 -0
  134. package/dist/lexicons/chat/bsky/group/addMembers.defs.js.map +1 -1
  135. package/dist/lexicons/chat/bsky/group/createGroup.defs.d.ts +1 -1
  136. package/dist/lexicons/chat/bsky/group/createGroup.defs.d.ts.map +1 -1
  137. package/dist/lexicons/chat/bsky/group/createGroup.defs.js +1 -0
  138. package/dist/lexicons/chat/bsky/group/createGroup.defs.js.map +1 -1
  139. package/dist/lexicons/chat/bsky/group/getJoinLinkPreviews.defs.d.ts +1 -1
  140. package/dist/lexicons/chat/bsky/group/getJoinLinkPreviews.defs.d.ts.map +1 -1
  141. package/dist/lexicons/chat/bsky/group/getJoinLinkPreviews.defs.js +1 -1
  142. package/dist/lexicons/chat/bsky/group/getJoinLinkPreviews.defs.js.map +1 -1
  143. package/dist/lexicons/chat/bsky/group/updateJoinRequestsRead.d.ts +3 -0
  144. package/dist/lexicons/chat/bsky/group/updateJoinRequestsRead.d.ts.map +1 -0
  145. package/dist/lexicons/chat/bsky/group/updateJoinRequestsRead.defs.d.ts +20 -0
  146. package/dist/lexicons/chat/bsky/group/updateJoinRequestsRead.defs.d.ts.map +1 -0
  147. package/dist/lexicons/chat/bsky/group/updateJoinRequestsRead.defs.js +19 -0
  148. package/dist/lexicons/chat/bsky/group/updateJoinRequestsRead.defs.js.map +1 -0
  149. package/dist/lexicons/chat/bsky/group/updateJoinRequestsRead.js +6 -0
  150. package/dist/lexicons/chat/bsky/group/updateJoinRequestsRead.js.map +1 -0
  151. package/dist/lexicons/chat/bsky/group/withdrawJoinRequest.d.ts +3 -0
  152. package/dist/lexicons/chat/bsky/group/withdrawJoinRequest.d.ts.map +1 -0
  153. package/dist/lexicons/chat/bsky/group/withdrawJoinRequest.defs.d.ts +20 -0
  154. package/dist/lexicons/chat/bsky/group/withdrawJoinRequest.defs.d.ts.map +1 -0
  155. package/dist/lexicons/chat/bsky/group/withdrawJoinRequest.defs.js +18 -0
  156. package/dist/lexicons/chat/bsky/group/withdrawJoinRequest.defs.js.map +1 -0
  157. package/dist/lexicons/chat/bsky/group/withdrawJoinRequest.js +6 -0
  158. package/dist/lexicons/chat/bsky/group/withdrawJoinRequest.js.map +1 -0
  159. package/dist/lexicons/chat/bsky/group.d.ts +2 -0
  160. package/dist/lexicons/chat/bsky/group.d.ts.map +1 -1
  161. package/dist/lexicons/chat/bsky/group.js +2 -0
  162. package/dist/lexicons/chat/bsky/group.js.map +1 -1
  163. package/dist/lexicons/chat/bsky/moderation/defs.d.ts +2 -0
  164. package/dist/lexicons/chat/bsky/moderation/defs.d.ts.map +1 -0
  165. package/dist/lexicons/chat/bsky/moderation/defs.defs.d.ts +58 -0
  166. package/dist/lexicons/chat/bsky/moderation/defs.defs.d.ts.map +1 -0
  167. package/dist/lexicons/chat/bsky/moderation/defs.defs.js +38 -0
  168. package/dist/lexicons/chat/bsky/moderation/defs.defs.js.map +1 -0
  169. package/dist/lexicons/chat/bsky/moderation/defs.js +5 -0
  170. package/dist/lexicons/chat/bsky/moderation/defs.js.map +1 -0
  171. package/dist/lexicons/chat/bsky/moderation/getConvo.d.ts +3 -0
  172. package/dist/lexicons/chat/bsky/moderation/getConvo.d.ts.map +1 -0
  173. package/dist/lexicons/chat/bsky/moderation/getConvo.defs.d.ts +22 -0
  174. package/dist/lexicons/chat/bsky/moderation/getConvo.defs.d.ts.map +1 -0
  175. package/dist/lexicons/chat/bsky/moderation/getConvo.defs.js +18 -0
  176. package/dist/lexicons/chat/bsky/moderation/getConvo.defs.js.map +1 -0
  177. package/dist/lexicons/chat/bsky/moderation/getConvo.js +6 -0
  178. package/dist/lexicons/chat/bsky/moderation/getConvo.js.map +1 -0
  179. package/dist/lexicons/chat/bsky/moderation/getConvoMembers.d.ts +3 -0
  180. package/dist/lexicons/chat/bsky/moderation/getConvoMembers.d.ts.map +1 -0
  181. package/dist/lexicons/chat/bsky/moderation/getConvoMembers.defs.d.ts +28 -0
  182. package/dist/lexicons/chat/bsky/moderation/getConvoMembers.defs.d.ts.map +1 -0
  183. package/dist/lexicons/chat/bsky/moderation/getConvoMembers.defs.js +24 -0
  184. package/dist/lexicons/chat/bsky/moderation/getConvoMembers.defs.js.map +1 -0
  185. package/dist/lexicons/chat/bsky/moderation/getConvoMembers.js +6 -0
  186. package/dist/lexicons/chat/bsky/moderation/getConvoMembers.js.map +1 -0
  187. package/dist/lexicons/chat/bsky/moderation/getConvos.d.ts +3 -0
  188. package/dist/lexicons/chat/bsky/moderation/getConvos.d.ts.map +1 -0
  189. package/dist/lexicons/chat/bsky/moderation/getConvos.defs.d.ts +22 -0
  190. package/dist/lexicons/chat/bsky/moderation/getConvos.defs.d.ts.map +1 -0
  191. package/dist/lexicons/chat/bsky/moderation/getConvos.defs.js +22 -0
  192. package/dist/lexicons/chat/bsky/moderation/getConvos.defs.js.map +1 -0
  193. package/dist/lexicons/chat/bsky/moderation/getConvos.js +6 -0
  194. package/dist/lexicons/chat/bsky/moderation/getConvos.js.map +1 -0
  195. package/dist/lexicons/chat/bsky/moderation/subscribeModEvents.defs.d.ts +20 -2
  196. package/dist/lexicons/chat/bsky/moderation/subscribeModEvents.defs.d.ts.map +1 -1
  197. package/dist/lexicons/chat/bsky/moderation/subscribeModEvents.defs.js +11 -0
  198. package/dist/lexicons/chat/bsky/moderation/subscribeModEvents.defs.js.map +1 -1
  199. package/dist/lexicons/chat/bsky/moderation.d.ts +4 -0
  200. package/dist/lexicons/chat/bsky/moderation.d.ts.map +1 -1
  201. package/dist/lexicons/chat/bsky/moderation.js +4 -0
  202. package/dist/lexicons/chat/bsky/moderation.js.map +1 -1
  203. package/dist/lexicons/chat/bsky.d.ts +1 -0
  204. package/dist/lexicons/chat/bsky.d.ts.map +1 -1
  205. package/dist/lexicons/chat/bsky.js +1 -0
  206. package/dist/lexicons/chat/bsky.js.map +1 -1
  207. package/dist/lexicons/com/atproto/lexicon/schema.defs.d.ts.map +1 -1
  208. package/dist/lexicons/com/atproto/server/getServiceAuth.defs.d.ts +2 -2
  209. package/dist/lexicons/com/atproto/server/getServiceAuth.defs.js +1 -1
  210. package/dist/lexicons/com/atproto/server/getServiceAuth.defs.js.map +1 -1
  211. package/dist/lexicons/com/germnetwork/declaration.defs.d.ts.map +1 -1
  212. package/dist/lexicons/site/standard/document.defs.d.ts.map +1 -1
  213. package/dist/lexicons/site/standard/graph/recommend.defs.d.ts.map +1 -1
  214. package/dist/lexicons/site/standard/graph/subscription.defs.d.ts.map +1 -1
  215. package/dist/lexicons/site/standard/publication.defs.d.ts.map +1 -1
  216. package/dist/lexicons/site/standard/theme/basic.defs.d.ts.map +1 -1
  217. package/dist/lexicons/tools/ozone/moderation/defs.defs.d.ts +11 -3
  218. package/dist/lexicons/tools/ozone/moderation/defs.defs.d.ts.map +1 -1
  219. package/dist/lexicons/tools/ozone/moderation/defs.defs.js +9 -0
  220. package/dist/lexicons/tools/ozone/moderation/defs.defs.js.map +1 -1
  221. package/dist/lexicons/tools/ozone/moderation/queryEvents.defs.d.ts +2 -2
  222. package/dist/lexicons/tools/ozone/moderation/queryEvents.defs.d.ts.map +1 -1
  223. package/dist/lexicons/tools/ozone/moderation/queryEvents.defs.js.map +1 -1
  224. package/dist/lexicons/tools/ozone/moderation/queryStatuses.defs.d.ts +2 -2
  225. package/dist/lexicons/tools/ozone/moderation/queryStatuses.defs.d.ts.map +1 -1
  226. package/dist/lexicons/tools/ozone/moderation/queryStatuses.defs.js.map +1 -1
  227. package/dist/mailer/index.d.ts +3 -3
  228. package/dist/mailer/index.d.ts.map +1 -1
  229. package/dist/mailer/index.js +18 -9
  230. package/dist/mailer/index.js.map +1 -1
  231. package/dist/mailer/templates/confirm-email.js +11 -3
  232. package/dist/mailer/templates/confirm-email.js.map +2 -2
  233. package/dist/mailer/templates/delete-account.js +2 -2
  234. package/dist/mailer/templates/delete-account.js.map +2 -2
  235. package/dist/mailer/templates/plc-operation.js +2 -2
  236. package/dist/mailer/templates/plc-operation.js.map +2 -2
  237. package/dist/mailer/templates/reset-password.js +2 -2
  238. package/dist/mailer/templates/reset-password.js.map +2 -2
  239. package/dist/mailer/templates/update-email.js +2 -2
  240. package/dist/mailer/templates/update-email.js.map +2 -2
  241. package/dist/mailer/templates.d.ts +11 -0
  242. package/dist/mailer/templates.d.ts.map +1 -1
  243. package/dist/mailer/templates.js.map +1 -1
  244. package/dist/pipethrough.d.ts +3 -0
  245. package/dist/pipethrough.d.ts.map +1 -1
  246. package/dist/pipethrough.js +25 -9
  247. package/dist/pipethrough.js.map +1 -1
  248. package/dist/read-after-write/viewer.d.ts +2 -2
  249. package/package.json +7 -6
  250. package/src/account-manager/account-manager.ts +105 -7
  251. package/src/account-manager/helpers/account.ts +15 -7
  252. package/src/account-manager/oauth-store.ts +76 -18
  253. package/src/actor-store/record/reader.ts +1 -1
  254. package/src/api/app/bsky/actor/getPreferences.ts +11 -2
  255. package/src/api/app/bsky/actor/putPreferences.ts +11 -2
  256. package/src/api/com/atproto/admin/updateAccountHandle.ts +37 -46
  257. package/src/api/com/atproto/identity/updateHandle.ts +45 -76
  258. package/src/api/com/atproto/repo/getRecord.ts +3 -3
  259. package/src/api/com/atproto/repo/putRecord.ts +2 -2
  260. package/src/api/com/atproto/server/getServiceAuth.ts +7 -0
  261. package/src/config/config.ts +69 -57
  262. package/src/config/env.ts +3 -0
  263. package/src/context.ts +13 -10
  264. package/src/mailer/index.ts +25 -9
  265. package/src/mailer/templates/confirm-email.hbs +18 -17
  266. package/src/mailer/templates/delete-account.hbs +6 -6
  267. package/src/mailer/templates/plc-operation.hbs +6 -6
  268. package/src/mailer/templates/reset-password.hbs +7 -7
  269. package/src/mailer/templates/update-email.hbs +6 -6
  270. package/src/mailer/templates.ts +12 -0
  271. package/src/pipethrough.ts +33 -12
  272. package/tests/_puppeteer.ts +8 -2
  273. package/tests/account-manager.test.ts +123 -50
  274. package/tests/app-passwords.test.ts +5 -5
  275. package/tests/get-service-auth.test.ts +81 -0
  276. package/tests/oauth.test.ts +5 -5
  277. package/tests/proxied/proxy-header.test.ts +1 -0
  278. package/tests/proxied/proxy-oauth-aud.test.ts +175 -0
  279. package/tsconfig.build.tsbuildinfo +1 -1
@@ -59,7 +59,7 @@ export declare const $params: l.ParamsSchema<{
59
59
  readonly format: "nsid";
60
60
  }>>>;
61
61
  readonly subjectType: l.OptionalSchema<l.StringSchema<{
62
- knownValues: ["account", "record"];
62
+ knownValues: ["account", "record", "conversation"];
63
63
  }>>;
64
64
  readonly minAccountSuspendCount: l.OptionalSchema<l.IntegerSchema>;
65
65
  readonly minReportedRecordsCount: l.OptionalSchema<l.IntegerSchema>;
@@ -135,7 +135,7 @@ declare const main: l.Query<"tools.ozone.moderation.queryStatuses", l.ParamsSche
135
135
  readonly format: "nsid";
136
136
  }>>>;
137
137
  readonly subjectType: l.OptionalSchema<l.StringSchema<{
138
- knownValues: ["account", "record"];
138
+ knownValues: ["account", "record", "conversation"];
139
139
  }>>;
140
140
  readonly minAccountSuspendCount: l.OptionalSchema<l.IntegerSchema>;
141
141
  readonly minReportedRecordsCount: l.OptionalSchema<l.IntegerSchema>;
@@ -1 +1 @@
1
- {"version":3,"file":"queryStatuses.defs.d.ts","sourceRoot":"","sources":["../../../../../src/lexicons/tools/ozone/moderation/queryStatuses.defs.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,CAAC,EAAE,MAAM,cAAc,CAAA;AAChC,OAAO,KAAK,cAAc,MAAM,gBAAgB,CAAA;AAEhD,QAAA,MAAM,KAAK,yCAAyC,CAAA;AAEpD,OAAO,EAAE,KAAK,EAAE,CAAA;AAEhB,eAAO,MAAM,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAwGlB,CAAA;AAEF,MAAM,MAAM,OAAO,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,OAAO,CAAC,CAAA;AAEnD,eAAO,MAAM,OAAO;;;GAOlB,CAAA;AAEF,MAAM,MAAM,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,UAAU,IAAI,CAAC,CAAC,YAAY,CAAC,OAAO,OAAO,EAAE,CAAC,CAAC,CAAA;AACzE,MAAM,MAAM,WAAW,CAAC,CAAC,GAAG,CAAC,CAAC,UAAU,IAAI,CAAC,CAAC,gBAAgB,CAC5D,OAAO,OAAO,EACd,CAAC,CACF,CAAA;AAED,6DAA6D;AAC7D,QAAA,MAAM,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;eAAiD,CAAA;AAE3D,OAAO,EAAE,IAAI,EAAE,CAAA;AAEf,eAAO,MAAM,IAAI,yCAAQ,CAAA"}
1
+ {"version":3,"file":"queryStatuses.defs.d.ts","sourceRoot":"","sources":["../../../../../src/lexicons/tools/ozone/moderation/queryStatuses.defs.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,CAAC,EAAE,MAAM,cAAc,CAAA;AAChC,OAAO,KAAK,cAAc,MAAM,gBAAgB,CAAA;AAEhD,QAAA,MAAM,KAAK,yCAAyC,CAAA;AAEpD,OAAO,EAAE,KAAK,EAAE,CAAA;AAEhB,eAAO,MAAM,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA0GlB,CAAA;AAEF,MAAM,MAAM,OAAO,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,OAAO,CAAC,CAAA;AAEnD,eAAO,MAAM,OAAO;;;GAOlB,CAAA;AAEF,MAAM,MAAM,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,UAAU,IAAI,CAAC,CAAC,YAAY,CAAC,OAAO,OAAO,EAAE,CAAC,CAAC,CAAA;AACzE,MAAM,MAAM,WAAW,CAAC,CAAC,GAAG,CAAC,CAAC,UAAU,IAAI,CAAC,CAAC,gBAAgB,CAC5D,OAAO,OAAO,EACd,CAAC,CACF,CAAA;AAED,6DAA6D;AAC7D,QAAA,MAAM,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;eAAiD,CAAA;AAE3D,OAAO,EAAE,IAAI,EAAE,CAAA;AAEf,eAAO,MAAM,IAAI,yCAAQ,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"queryStatuses.defs.js","sourceRoot":"","sources":["../../../../../src/lexicons/tools/ozone/moderation/queryStatuses.defs.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * THIS FILE WAS GENERATED BY \"@atproto/lex\". DO NOT EDIT.\n */\n\nimport { l } from '@atproto/lex'\nimport * as ModerationDefs from './defs.defs.js'\n\nconst $nsid = 'tools.ozone.moderation.queryStatuses'\n\nexport { $nsid }\n\nexport const $params = /*#__PURE__*/ l.params({\n queueCount: /*#__PURE__*/ l.optional(/*#__PURE__*/ l.integer()),\n queueIndex: /*#__PURE__*/ l.optional(/*#__PURE__*/ l.integer()),\n queueSeed: /*#__PURE__*/ l.optional(/*#__PURE__*/ l.string()),\n includeAllUserRecords: /*#__PURE__*/ l.optional(/*#__PURE__*/ l.boolean()),\n subject: /*#__PURE__*/ l.optional(/*#__PURE__*/ l.string({ format: 'uri' })),\n comment: /*#__PURE__*/ l.optional(/*#__PURE__*/ l.string()),\n reportedAfter: /*#__PURE__*/ l.optional(\n /*#__PURE__*/ l.string({ format: 'datetime' }),\n ),\n reportedBefore: /*#__PURE__*/ l.optional(\n /*#__PURE__*/ l.string({ format: 'datetime' }),\n ),\n reviewedAfter: /*#__PURE__*/ l.optional(\n /*#__PURE__*/ l.string({ format: 'datetime' }),\n ),\n hostingDeletedAfter: /*#__PURE__*/ l.optional(\n /*#__PURE__*/ l.string({ format: 'datetime' }),\n ),\n hostingDeletedBefore: /*#__PURE__*/ l.optional(\n /*#__PURE__*/ l.string({ format: 'datetime' }),\n ),\n hostingUpdatedAfter: /*#__PURE__*/ l.optional(\n /*#__PURE__*/ l.string({ format: 'datetime' }),\n ),\n hostingUpdatedBefore: /*#__PURE__*/ l.optional(\n /*#__PURE__*/ l.string({ format: 'datetime' }),\n ),\n hostingStatuses: /*#__PURE__*/ l.optional(\n /*#__PURE__*/ l.array(/*#__PURE__*/ l.string()),\n ),\n reviewedBefore: /*#__PURE__*/ l.optional(\n /*#__PURE__*/ l.string({ format: 'datetime' }),\n ),\n includeMuted: /*#__PURE__*/ l.optional(/*#__PURE__*/ l.boolean()),\n onlyMuted: /*#__PURE__*/ l.optional(/*#__PURE__*/ l.boolean()),\n reviewState: /*#__PURE__*/ l.optional(\n /*#__PURE__*/ l.string<{\n knownValues: [\n 'tools.ozone.moderation.defs#reviewOpen',\n 'tools.ozone.moderation.defs#reviewClosed',\n 'tools.ozone.moderation.defs#reviewEscalated',\n 'tools.ozone.moderation.defs#reviewNone',\n ]\n }>(),\n ),\n ignoreSubjects: /*#__PURE__*/ l.optional(\n /*#__PURE__*/ l.array(/*#__PURE__*/ l.string({ format: 'uri' })),\n ),\n lastReviewedBy: /*#__PURE__*/ l.optional(\n /*#__PURE__*/ l.string({ format: 'did' }),\n ),\n sortField: /*#__PURE__*/ l.optional(\n /*#__PURE__*/ l.withDefault(\n /*#__PURE__*/ l.enum([\n 'lastReviewedAt',\n 'lastReportedAt',\n 'reportedRecordsCount',\n 'takendownRecordsCount',\n 'priorityScore',\n ]),\n 'lastReportedAt',\n ),\n ),\n sortDirection: /*#__PURE__*/ l.optional(\n /*#__PURE__*/ l.withDefault(/*#__PURE__*/ l.enum(['asc', 'desc']), 'desc'),\n ),\n takendown: /*#__PURE__*/ l.optional(/*#__PURE__*/ l.boolean()),\n appealed: /*#__PURE__*/ l.optional(/*#__PURE__*/ l.boolean()),\n limit: /*#__PURE__*/ l.optional(\n /*#__PURE__*/ l.withDefault(\n /*#__PURE__*/ l.integer({ minimum: 1, maximum: 100 }),\n 50,\n ),\n ),\n tags: /*#__PURE__*/ l.optional(\n /*#__PURE__*/ l.array(/*#__PURE__*/ l.string(), { maxLength: 25 }),\n ),\n excludeTags: /*#__PURE__*/ l.optional(\n /*#__PURE__*/ l.array(/*#__PURE__*/ l.string()),\n ),\n cursor: /*#__PURE__*/ l.optional(/*#__PURE__*/ l.string()),\n collections: /*#__PURE__*/ l.optional(\n /*#__PURE__*/ l.array(/*#__PURE__*/ l.string({ format: 'nsid' }), {\n maxLength: 20,\n }),\n ),\n subjectType: /*#__PURE__*/ l.optional(\n /*#__PURE__*/ l.string<{ knownValues: ['account', 'record'] }>(),\n ),\n minAccountSuspendCount: /*#__PURE__*/ l.optional(/*#__PURE__*/ l.integer()),\n minReportedRecordsCount: /*#__PURE__*/ l.optional(/*#__PURE__*/ l.integer()),\n minTakendownRecordsCount: /*#__PURE__*/ l.optional(/*#__PURE__*/ l.integer()),\n minPriorityScore: /*#__PURE__*/ l.optional(\n /*#__PURE__*/ l.integer({ minimum: 0, maximum: 100 }),\n ),\n minStrikeCount: /*#__PURE__*/ l.optional(\n /*#__PURE__*/ l.integer({ minimum: 1 }),\n ),\n ageAssuranceState: /*#__PURE__*/ l.optional(\n /*#__PURE__*/ l.string<{\n knownValues: ['pending', 'assured', 'unknown', 'reset', 'blocked']\n }>(),\n ),\n})\n\nexport type $Params = l.InferOutput<typeof $params>\n\nexport const $output = /*#__PURE__*/ l.jsonPayload({\n cursor: /*#__PURE__*/ l.optional(/*#__PURE__*/ l.string()),\n subjectStatuses: /*#__PURE__*/ l.array(\n /*#__PURE__*/ l.ref<ModerationDefs.SubjectStatusView>(\n (() => ModerationDefs.subjectStatusView) as any,\n ),\n ),\n})\n\nexport type $Output<B = l.BinaryData> = l.InferPayload<typeof $output, B>\nexport type $OutputBody<B = l.BinaryData> = l.InferPayloadBody<\n typeof $output,\n B\n>\n\n/** View moderation statuses of subjects (record or repo). */\nconst main = /*#__PURE__*/ l.query($nsid, $params, $output)\n\nexport { main }\n\nexport const $lxm = $nsid\n"]}
1
+ {"version":3,"file":"queryStatuses.defs.js","sourceRoot":"","sources":["../../../../../src/lexicons/tools/ozone/moderation/queryStatuses.defs.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * THIS FILE WAS GENERATED BY \"@atproto/lex\". DO NOT EDIT.\n */\n\nimport { l } from '@atproto/lex'\nimport * as ModerationDefs from './defs.defs.js'\n\nconst $nsid = 'tools.ozone.moderation.queryStatuses'\n\nexport { $nsid }\n\nexport const $params = /*#__PURE__*/ l.params({\n queueCount: /*#__PURE__*/ l.optional(/*#__PURE__*/ l.integer()),\n queueIndex: /*#__PURE__*/ l.optional(/*#__PURE__*/ l.integer()),\n queueSeed: /*#__PURE__*/ l.optional(/*#__PURE__*/ l.string()),\n includeAllUserRecords: /*#__PURE__*/ l.optional(/*#__PURE__*/ l.boolean()),\n subject: /*#__PURE__*/ l.optional(/*#__PURE__*/ l.string({ format: 'uri' })),\n comment: /*#__PURE__*/ l.optional(/*#__PURE__*/ l.string()),\n reportedAfter: /*#__PURE__*/ l.optional(\n /*#__PURE__*/ l.string({ format: 'datetime' }),\n ),\n reportedBefore: /*#__PURE__*/ l.optional(\n /*#__PURE__*/ l.string({ format: 'datetime' }),\n ),\n reviewedAfter: /*#__PURE__*/ l.optional(\n /*#__PURE__*/ l.string({ format: 'datetime' }),\n ),\n hostingDeletedAfter: /*#__PURE__*/ l.optional(\n /*#__PURE__*/ l.string({ format: 'datetime' }),\n ),\n hostingDeletedBefore: /*#__PURE__*/ l.optional(\n /*#__PURE__*/ l.string({ format: 'datetime' }),\n ),\n hostingUpdatedAfter: /*#__PURE__*/ l.optional(\n /*#__PURE__*/ l.string({ format: 'datetime' }),\n ),\n hostingUpdatedBefore: /*#__PURE__*/ l.optional(\n /*#__PURE__*/ l.string({ format: 'datetime' }),\n ),\n hostingStatuses: /*#__PURE__*/ l.optional(\n /*#__PURE__*/ l.array(/*#__PURE__*/ l.string()),\n ),\n reviewedBefore: /*#__PURE__*/ l.optional(\n /*#__PURE__*/ l.string({ format: 'datetime' }),\n ),\n includeMuted: /*#__PURE__*/ l.optional(/*#__PURE__*/ l.boolean()),\n onlyMuted: /*#__PURE__*/ l.optional(/*#__PURE__*/ l.boolean()),\n reviewState: /*#__PURE__*/ l.optional(\n /*#__PURE__*/ l.string<{\n knownValues: [\n 'tools.ozone.moderation.defs#reviewOpen',\n 'tools.ozone.moderation.defs#reviewClosed',\n 'tools.ozone.moderation.defs#reviewEscalated',\n 'tools.ozone.moderation.defs#reviewNone',\n ]\n }>(),\n ),\n ignoreSubjects: /*#__PURE__*/ l.optional(\n /*#__PURE__*/ l.array(/*#__PURE__*/ l.string({ format: 'uri' })),\n ),\n lastReviewedBy: /*#__PURE__*/ l.optional(\n /*#__PURE__*/ l.string({ format: 'did' }),\n ),\n sortField: /*#__PURE__*/ l.optional(\n /*#__PURE__*/ l.withDefault(\n /*#__PURE__*/ l.enum([\n 'lastReviewedAt',\n 'lastReportedAt',\n 'reportedRecordsCount',\n 'takendownRecordsCount',\n 'priorityScore',\n ]),\n 'lastReportedAt',\n ),\n ),\n sortDirection: /*#__PURE__*/ l.optional(\n /*#__PURE__*/ l.withDefault(/*#__PURE__*/ l.enum(['asc', 'desc']), 'desc'),\n ),\n takendown: /*#__PURE__*/ l.optional(/*#__PURE__*/ l.boolean()),\n appealed: /*#__PURE__*/ l.optional(/*#__PURE__*/ l.boolean()),\n limit: /*#__PURE__*/ l.optional(\n /*#__PURE__*/ l.withDefault(\n /*#__PURE__*/ l.integer({ minimum: 1, maximum: 100 }),\n 50,\n ),\n ),\n tags: /*#__PURE__*/ l.optional(\n /*#__PURE__*/ l.array(/*#__PURE__*/ l.string(), { maxLength: 25 }),\n ),\n excludeTags: /*#__PURE__*/ l.optional(\n /*#__PURE__*/ l.array(/*#__PURE__*/ l.string()),\n ),\n cursor: /*#__PURE__*/ l.optional(/*#__PURE__*/ l.string()),\n collections: /*#__PURE__*/ l.optional(\n /*#__PURE__*/ l.array(/*#__PURE__*/ l.string({ format: 'nsid' }), {\n maxLength: 20,\n }),\n ),\n subjectType: /*#__PURE__*/ l.optional(\n /*#__PURE__*/ l.string<{\n knownValues: ['account', 'record', 'conversation']\n }>(),\n ),\n minAccountSuspendCount: /*#__PURE__*/ l.optional(/*#__PURE__*/ l.integer()),\n minReportedRecordsCount: /*#__PURE__*/ l.optional(/*#__PURE__*/ l.integer()),\n minTakendownRecordsCount: /*#__PURE__*/ l.optional(/*#__PURE__*/ l.integer()),\n minPriorityScore: /*#__PURE__*/ l.optional(\n /*#__PURE__*/ l.integer({ minimum: 0, maximum: 100 }),\n ),\n minStrikeCount: /*#__PURE__*/ l.optional(\n /*#__PURE__*/ l.integer({ minimum: 1 }),\n ),\n ageAssuranceState: /*#__PURE__*/ l.optional(\n /*#__PURE__*/ l.string<{\n knownValues: ['pending', 'assured', 'unknown', 'reset', 'blocked']\n }>(),\n ),\n})\n\nexport type $Params = l.InferOutput<typeof $params>\n\nexport const $output = /*#__PURE__*/ l.jsonPayload({\n cursor: /*#__PURE__*/ l.optional(/*#__PURE__*/ l.string()),\n subjectStatuses: /*#__PURE__*/ l.array(\n /*#__PURE__*/ l.ref<ModerationDefs.SubjectStatusView>(\n (() => ModerationDefs.subjectStatusView) as any,\n ),\n ),\n})\n\nexport type $Output<B = l.BinaryData> = l.InferPayload<typeof $output, B>\nexport type $OutputBody<B = l.BinaryData> = l.InferPayloadBody<\n typeof $output,\n B\n>\n\n/** View moderation statuses of subjects (record or repo). */\nconst main = /*#__PURE__*/ l.query($nsid, $params, $output)\n\nexport { main }\n\nexport const $lxm = $nsid\n"]}
@@ -1,10 +1,10 @@
1
1
  import { SendMailOptions, Transporter } from 'nodemailer';
2
- import { ServerConfig } from '../config/index.js';
2
+ import { BrandingConfig, EmailConfig } from '../config/index.js';
3
3
  export declare class ServerMailer {
4
4
  readonly transporter: Transporter;
5
+ private readonly email;
5
6
  private readonly config;
6
- constructor(transporter: Transporter, config: ServerConfig);
7
- static getEmailConfig(_config: ServerConfig): {};
7
+ constructor(transporter: Transporter, email: EmailConfig | null, branding: BrandingConfig);
8
8
  sendResetPassword(params: {
9
9
  handle: string;
10
10
  token: string;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/mailer/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AAEzD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAMjD,qBAAa,YAAY;aAEL,WAAW,EAAE,WAAW;IACxC,OAAO,CAAC,QAAQ,CAAC,MAAM;gBADP,WAAW,EAAE,WAAW,EACvB,MAAM,EAAE,YAAY;IAMvC,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,YAAY;IAIrC,iBAAiB,CACrB,MAAM,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EACzC,QAAQ,EAAE,eAAe;IAQrB,iBAAiB,CACrB,MAAM,EAAE;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,EACzB,QAAQ,EAAE,eAAe;IAQrB,gBAAgB,CACpB,MAAM,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,EAC1C,QAAQ,EAAE,eAAe;IASrB,eAAe,CACnB,MAAM,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,EAC1C,QAAQ,EAAE,eAAe;IASrB,gBAAgB,CAAC,MAAM,EAAE;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE,QAAQ,EAAE,eAAe;YAO7D,YAAY;CAsB3B"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/mailer/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AAEzD,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AAahE,qBAAa,YAAY;aAIL,WAAW,EAAE,WAAW;IACxC,OAAO,CAAC,QAAQ,CAAC,KAAK;IAJxB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAkB;gBAGvB,WAAW,EAAE,WAAW,EACvB,KAAK,EAAE,WAAW,GAAG,IAAI,EAC1C,QAAQ,EAAE,cAAc;IAgBpB,iBAAiB,CACrB,MAAM,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EACzC,QAAQ,EAAE,eAAe;IAQrB,iBAAiB,CACrB,MAAM,EAAE;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,EACzB,QAAQ,EAAE,eAAe;IAQrB,gBAAgB,CACpB,MAAM,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,EAC1C,QAAQ,EAAE,eAAe;IASrB,eAAe,CACnB,MAAM,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,EAC1C,QAAQ,EAAE,eAAe;IASrB,gBAAgB,CAAC,MAAM,EAAE;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE,QAAQ,EAAE,eAAe;YAO7D,YAAY;CAsB3B"}
@@ -2,15 +2,24 @@ import { htmlToText } from 'nodemailer-html-to-text';
2
2
  import { mailerLogger } from '../logger.js';
3
3
  import * as templates from './templates.js';
4
4
  // @TODO Add support for i18n
5
+ const DEFAULT_LOGO_URL = 'https://bsky.social/about/images/email/email_logo_default.png';
6
+ const DEFAULT_MARK_URL = 'https://bsky.social/about/images/email/email_mark_dark.png';
7
+ const DEFAULT_HOME_URL = 'https://bsky.app';
8
+ const DEFAULT_PRIMARY_COLOR = '#067df7';
5
9
  export class ServerMailer {
6
- constructor(transporter, config) {
10
+ constructor(transporter, email, branding) {
7
11
  this.transporter = transporter;
8
- this.config = config;
12
+ this.email = email;
9
13
  transporter.use('compile', htmlToText());
10
- }
11
- // The returned config can be used inside email templates.
12
- static getEmailConfig(_config) {
13
- return {};
14
+ this.config = {
15
+ serviceName: branding.name ?? 'Bluesky',
16
+ homeUrl: branding.links?.find((link) => link.rel === 'canonical')?.href ??
17
+ DEFAULT_HOME_URL,
18
+ logoUrl: branding.logo ?? DEFAULT_LOGO_URL,
19
+ markUrl: branding.logo ?? DEFAULT_MARK_URL,
20
+ primaryColor: branding.colors?.primary ?? DEFAULT_PRIMARY_COLOR,
21
+ showBskyAppEmailConfirmationLink: email?.disableConfirmationLink !== true,
22
+ };
14
23
  }
15
24
  async sendResetPassword(params, mailOpts) {
16
25
  await this.sendTemplate('resetPassword', params, {
@@ -47,14 +56,14 @@ export class ServerMailer {
47
56
  async sendTemplate(templateName, params, mailOpts) {
48
57
  const html = templates[templateName]({
49
58
  ...params,
50
- config: ServerMailer.getEmailConfig(this.config),
59
+ config: this.config,
51
60
  });
52
61
  const res = await this.transporter.sendMail({
53
62
  ...mailOpts,
54
- from: mailOpts.from ?? this.config.email?.fromAddress,
63
+ from: mailOpts.from ?? this.email?.fromAddress,
55
64
  html,
56
65
  });
57
- if (!this.config.email?.smtpUrl) {
66
+ if (!this.email?.smtpUrl) {
58
67
  mailerLogger.debug('No SMTP URL has been configured. Intended to send email:\n' +
59
68
  JSON.stringify(res, null, 2));
60
69
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/mailer/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAA;AAEpD,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AAC3C,OAAO,KAAK,SAAS,MAAM,gBAAgB,CAAA;AAE3C,6BAA6B;AAE7B,MAAM,OAAO,YAAY;IACvB,YACkB,WAAwB,EACvB,MAAoB;QADrB,gBAAW,GAAX,WAAW,CAAa;QACvB,WAAM,GAAN,MAAM,CAAc;QAErC,WAAW,CAAC,GAAG,CAAC,SAAS,EAAE,UAAU,EAAE,CAAC,CAAA;IAC1C,CAAC;IAED,0DAA0D;IAC1D,MAAM,CAAC,cAAc,CAAC,OAAqB;QACzC,OAAO,EAAE,CAAA;IACX,CAAC;IAED,KAAK,CAAC,iBAAiB,CACrB,MAAyC,EACzC,QAAyB;QAEzB,MAAM,IAAI,CAAC,YAAY,CAAC,eAAe,EAAE,MAAM,EAAE;YAC/C,OAAO,EAAE,0BAA0B;YACnC,GAAG,QAAQ;SACZ,CAAC,CAAA;IACJ,CAAC;IAED,KAAK,CAAC,iBAAiB,CACrB,MAAyB,EACzB,QAAyB;QAEzB,MAAM,IAAI,CAAC,YAAY,CAAC,eAAe,EAAE,MAAM,EAAE;YAC/C,OAAO,EAAE,4BAA4B;YACrC,GAAG,QAAQ;SACZ,CAAC,CAAA;IACJ,CAAC;IAED,KAAK,CAAC,gBAAgB,CACpB,MAA0C,EAC1C,QAAyB;QAEzB,8CAA8C;QAC9C,MAAM,IAAI,CAAC,YAAY,CAAC,cAAc,EAAE,MAAM,EAAE;YAC9C,OAAO,EAAE,oBAAoB;YAC7B,GAAG,QAAQ;SACZ,CAAC,CAAA;IACJ,CAAC;IAED,KAAK,CAAC,eAAe,CACnB,MAA0C,EAC1C,QAAyB;QAEzB,8CAA8C;QAC9C,MAAM,IAAI,CAAC,YAAY,CAAC,aAAa,EAAE,MAAM,EAAE;YAC7C,OAAO,EAAE,wBAAwB;YACjC,GAAG,QAAQ;SACZ,CAAC,CAAA;IACJ,CAAC;IAED,KAAK,CAAC,gBAAgB,CAAC,MAAyB,EAAE,QAAyB;QACzE,MAAM,IAAI,CAAC,YAAY,CAAC,cAAc,EAAE,MAAM,EAAE;YAC9C,OAAO,EAAE,gCAAgC;YACzC,GAAG,QAAQ;SACZ,CAAC,CAAA;IACJ,CAAC;IAEO,KAAK,CAAC,YAAY,CACxB,YAAe,EACf,MAA4C,EAC5C,QAAyB;QAEzB,MAAM,IAAI,GAAG,SAAS,CAAC,YAAY,CAAC,CAAC;YACnC,GAAG,MAAM;YACT,MAAM,EAAE,YAAY,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC;SAC1C,CAAC,CAAA;QACT,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC;YAC1C,GAAG,QAAQ;YACX,IAAI,EAAE,QAAQ,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,WAAW;YACrD,IAAI;SACL,CAAC,CAAA;QACF,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,CAAC;YAChC,YAAY,CAAC,KAAK,CAChB,4DAA4D;gBAC1D,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,CAC/B,CAAA;QACH,CAAC;QACD,OAAO,GAAG,CAAA;IACZ,CAAC;CACF","sourcesContent":["import { SendMailOptions, Transporter } from 'nodemailer'\nimport { htmlToText } from 'nodemailer-html-to-text'\nimport { ServerConfig } from '../config/index.js'\nimport { mailerLogger } from '../logger.js'\nimport * as templates from './templates.js'\n\n// @TODO Add support for i18n\n\nexport class ServerMailer {\n constructor(\n public readonly transporter: Transporter,\n private readonly config: ServerConfig,\n ) {\n transporter.use('compile', htmlToText())\n }\n\n // The returned config can be used inside email templates.\n static getEmailConfig(_config: ServerConfig) {\n return {}\n }\n\n async sendResetPassword(\n params: { handle: string; token: string },\n mailOpts: SendMailOptions,\n ) {\n await this.sendTemplate('resetPassword', params, {\n subject: 'Password Reset Requested',\n ...mailOpts,\n })\n }\n\n async sendAccountDelete(\n params: { token: string },\n mailOpts: SendMailOptions,\n ) {\n await this.sendTemplate('deleteAccount', params, {\n subject: 'Account Deletion Requested',\n ...mailOpts,\n })\n }\n\n async sendConfirmEmail(\n params: { token: string; locale?: string },\n mailOpts: SendMailOptions,\n ) {\n // @TODO (later) handle locale in the template\n await this.sendTemplate('confirmEmail', params, {\n subject: 'Email Confirmation',\n ...mailOpts,\n })\n }\n\n async sendUpdateEmail(\n params: { token: string; locale?: string },\n mailOpts: SendMailOptions,\n ) {\n // @TODO (later) handle locale in the template\n await this.sendTemplate('updateEmail', params, {\n subject: 'Email Update Requested',\n ...mailOpts,\n })\n }\n\n async sendPlcOperation(params: { token: string }, mailOpts: SendMailOptions) {\n await this.sendTemplate('plcOperation', params, {\n subject: 'PLC Update Operation Requested',\n ...mailOpts,\n })\n }\n\n private async sendTemplate<K extends keyof typeof templates>(\n templateName: K,\n params: Parameters<(typeof templates)[K]>[0],\n mailOpts: SendMailOptions,\n ) {\n const html = templates[templateName]({\n ...params,\n config: ServerMailer.getEmailConfig(this.config),\n } as any)\n const res = await this.transporter.sendMail({\n ...mailOpts,\n from: mailOpts.from ?? this.config.email?.fromAddress,\n html,\n })\n if (!this.config.email?.smtpUrl) {\n mailerLogger.debug(\n 'No SMTP URL has been configured. Intended to send email:\\n' +\n JSON.stringify(res, null, 2),\n )\n }\n return res\n }\n}\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/mailer/index.ts"],"names":[],"mappings":"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","sourcesContent":["import { SendMailOptions, Transporter } from 'nodemailer'\nimport { htmlToText } from 'nodemailer-html-to-text'\nimport { BrandingConfig, EmailConfig } from '../config/index.js'\nimport { mailerLogger } from '../logger.js'\nimport * as templates from './templates.js'\n\n// @TODO Add support for i18n\n\nconst DEFAULT_LOGO_URL =\n 'https://bsky.social/about/images/email/email_logo_default.png'\nconst DEFAULT_MARK_URL =\n 'https://bsky.social/about/images/email/email_mark_dark.png'\nconst DEFAULT_HOME_URL = 'https://bsky.app'\nconst DEFAULT_PRIMARY_COLOR = '#067df7'\n\nexport class ServerMailer {\n private readonly config: templates.Config\n\n constructor(\n public readonly transporter: Transporter,\n private readonly email: EmailConfig | null,\n branding: BrandingConfig,\n ) {\n transporter.use('compile', htmlToText())\n\n this.config = {\n serviceName: branding.name ?? 'Bluesky',\n homeUrl:\n branding.links?.find((link) => link.rel === 'canonical')?.href ??\n DEFAULT_HOME_URL,\n logoUrl: branding.logo ?? DEFAULT_LOGO_URL,\n markUrl: branding.logo ?? DEFAULT_MARK_URL,\n primaryColor: branding.colors?.primary ?? DEFAULT_PRIMARY_COLOR,\n showBskyAppEmailConfirmationLink: email?.disableConfirmationLink !== true,\n }\n }\n\n async sendResetPassword(\n params: { handle: string; token: string },\n mailOpts: SendMailOptions,\n ) {\n await this.sendTemplate('resetPassword', params, {\n subject: 'Password Reset Requested',\n ...mailOpts,\n })\n }\n\n async sendAccountDelete(\n params: { token: string },\n mailOpts: SendMailOptions,\n ) {\n await this.sendTemplate('deleteAccount', params, {\n subject: 'Account Deletion Requested',\n ...mailOpts,\n })\n }\n\n async sendConfirmEmail(\n params: { token: string; locale?: string },\n mailOpts: SendMailOptions,\n ) {\n // @TODO (later) handle locale in the template\n await this.sendTemplate('confirmEmail', params, {\n subject: 'Email Confirmation',\n ...mailOpts,\n })\n }\n\n async sendUpdateEmail(\n params: { token: string; locale?: string },\n mailOpts: SendMailOptions,\n ) {\n // @TODO (later) handle locale in the template\n await this.sendTemplate('updateEmail', params, {\n subject: 'Email Update Requested',\n ...mailOpts,\n })\n }\n\n async sendPlcOperation(params: { token: string }, mailOpts: SendMailOptions) {\n await this.sendTemplate('plcOperation', params, {\n subject: 'PLC Update Operation Requested',\n ...mailOpts,\n })\n }\n\n private async sendTemplate<K extends keyof typeof templates>(\n templateName: K,\n params: Parameters<(typeof templates)[K]>[0],\n mailOpts: SendMailOptions,\n ) {\n const html = templates[templateName]({\n ...params,\n config: this.config,\n } as any)\n const res = await this.transporter.sendMail({\n ...mailOpts,\n from: mailOpts.from ?? this.email?.fromAddress,\n html,\n })\n if (!this.email?.smtpUrl) {\n mailerLogger.debug(\n 'No SMTP URL has been configured. Intended to send email:\\n' +\n JSON.stringify(res, null, 2),\n )\n }\n return res\n }\n}\n"]}
@@ -1176,14 +1176,22 @@ var require_runtime2 = __commonJS({
1176
1176
  var Handlebars = __toESM(require_runtime2(), 1);
1177
1177
  Handlebars.registerHelper({});
1178
1178
  Handlebars.registerPartial({});
1179
- var confirm_email_default = Handlebars.template({ "compiler": [8, ">= 4.3.0"], "main": function(container, depth0, helpers, partials, data) {
1180
- var alias1 = container.lambda, alias2 = container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {
1179
+ var confirm_email_default = Handlebars.template({ "1": function(container, depth0, helpers, partials, data) {
1180
+ var stack1, alias1 = container.lambda, alias2 = container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {
1181
1181
  if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {
1182
1182
  return parent[propertyName];
1183
1183
  }
1184
1184
  return void 0;
1185
1185
  };
1186
- return '<html dir="ltr" lang="en">\n\n <head>\n <meta content="text/html; charset=UTF-8" http-equiv="Content-Type" />\n <meta name="x-apple-disable-message-reformatting" />\n <title>Confirm your email</title>\n <meta\n name="description"\n content="To confirm your email, enter the code provided in the app."\n />\n </head>\n <div\n style="display:none;overflow:hidden;line-height:1px;opacity:0;max-height:0;max-width:0"\n >To confirm your email, enter the code provided in the app.<div\n >\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF</div>\n </div>\n\n <body\n style="padding:12px;padding-bottom:40px;background-color:hsl(211, 20%, 95.3%)"\n >\n <table\n align="center"\n width="100%"\n border="0"\n cellPadding="0"\n cellSpacing="0"\n role="presentation"\n style="max-width:37.5em"\n >\n <tbody>\n <tr style="width:100%">\n <td>\n <table\n align="center"\n width="100%"\n border="0"\n cellPadding="0"\n cellSpacing="0"\n role="presentation"\n style="padding-top:24px;padding-bottom:24px"\n >\n <tbody>\n <tr>\n <td><img\n alt="Bluesky"\n src="https://bsky.social/about/images/email/email_logo_default.png"\n style="display:block;outline:none;border:none;text-decoration:none;width:110px;margin:0 auto"\n /></td>\n </tr>\n </tbody>\n </table>\n <table\n align="center"\n width="100%"\n border="0"\n cellPadding="0"\n cellSpacing="0"\n role="presentation"\n style="padding:24px;padding-bottom:16px;border-radius:12px;background-color:#FFFFFF"\n >\n <tbody>\n <tr>\n <td>\n <h1\n style="font-size:26px;letter-spacing:0.25px;color:#000000;font-family:-apple-system, BlinkMacSystemFont, &#x27;Roboto&#x27;, &#x27;Oxygen&#x27;, &#x27;Ubuntu&#x27;, &#x27;Cantarell&#x27;, &#x27;Fira Sans&#x27;, &#x27;Droid Sans&#x27;, &#x27;Helvetica Neue&#x27;, sans-serif;margin:0px 0px;line-height:1.0"\n >Confirm your email</h1>\n <p\n style="font-size:16px;line-height:1.4;margin:0px 0px;letter-spacing:0.25px;color:hsl(211, 24%, 34.2%);font-family:-apple-system, BlinkMacSystemFont, &#x27;Roboto&#x27;, &#x27;Oxygen&#x27;, &#x27;Ubuntu&#x27;, &#x27;Cantarell&#x27;, &#x27;Fira Sans&#x27;, &#x27;Droid Sans&#x27;, &#x27;Helvetica Neue&#x27;, sans-serif;padding-top:12px;padding-bottom:12px;padding-right:32px"\n >To confirm this email for your account, please enter the\n code below in the app or<!-- -->\n <a\n href="https://bsky.app/intent/verify-email?code=' + alias2(alias1(depth0 != null ? lookupProperty(depth0, "token") : depth0, depth0)) + '"\n style="color:#067df7;text-decoration:none;text-decoration-line:underline;font-size:16px;letter-spacing:0.25px"\n target="_blank"\n >click here.</a></p><code\n style="display:block;padding:16px;border-radius:8px;border-width:1px;border-style:solid;background-color:hsl(211, 20%, 95.3%);border-color:hsl(211, 20%, 85.89999999999999%);font-size:14px;letter-spacing:0.25px;font-family:monospace;text-transform:uppercase"\n >' + alias2(alias1(depth0 != null ? lookupProperty(depth0, "token") : depth0, depth0)) + '</code>\n <p\n style="font-size:14px;line-height:1.4;margin:0px 0px;letter-spacing:0.25px;color:hsl(211, 20%, 53%);font-family:-apple-system, BlinkMacSystemFont, &#x27;Roboto&#x27;, &#x27;Oxygen&#x27;, &#x27;Ubuntu&#x27;, &#x27;Cantarell&#x27;, &#x27;Fira Sans&#x27;, &#x27;Droid Sans&#x27;, &#x27;Helvetica Neue&#x27;, sans-serif;padding-top:12px"\n >If you didn&#x27;t request an email confirmation, you can\n safely ignore this email.</p>\n <table\n align="center"\n width="100%"\n border="0"\n cellPadding="0"\n cellSpacing="0"\n role="presentation"\n style="padding-top:24px"\n >\n <tbody>\n <tr>\n <td>\n <hr\n style="width:100%;border:none;border-top:1px solid #eaeaea;margin:0"\n />\n <table\n align="center"\n width="100%"\n border="0"\n cellPadding="0"\n cellSpacing="0"\n role="presentation"\n style="padding-top:16px;vertical-align:middle"\n >\n <tbody style="width:100%">\n <tr style="width:100%">\n <td data-id="__react-email-column">\n <p\n style="font-size:14px;line-height:1.4;margin:0px 0px;color:hsl(211, 20%, 53%);font-family:-apple-system, BlinkMacSystemFont, &#x27;Roboto&#x27;, &#x27;Oxygen&#x27;, &#x27;Ubuntu&#x27;, &#x27;Cantarell&#x27;, &#x27;Fira Sans&#x27;, &#x27;Droid Sans&#x27;, &#x27;Helvetica Neue&#x27;, sans-serif;letter-spacing:0.25px"\n ><a\n href="https://bsky.app"\n style="color:hsl(211, 20%, 53%);text-decoration:none;text-decoration-line:underline;font-family:-apple-system, BlinkMacSystemFont, &#x27;Roboto&#x27;, &#x27;Oxygen&#x27;, &#x27;Ubuntu&#x27;, &#x27;Cantarell&#x27;, &#x27;Fira Sans&#x27;, &#x27;Droid Sans&#x27;, &#x27;Helvetica Neue&#x27;, sans-serif;margin:0px 0px;line-height:1.0;font-size:14px;letter-spacing:0.25px"\n target="_blank"\n >Bluesky</a>, the social internet</p>\n </td>\n <td\n data-id="__react-email-column"\n style="width:24px"\n ><img\n alt="\u{1F98B}"\n src="https://bsky.social/about/images/email/email_mark_dark.png"\n style="display:block;outline:none;border:none;text-decoration:none;width:24px"\n /></td>\n </tr>\n </tbody>\n </table>\n </td>\n </tr>\n </tbody>\n </table>\n </td>\n </tr>\n </tbody>\n </table>\n <table\n align="center"\n width="100%"\n border="0"\n cellPadding="0"\n cellSpacing="0"\n role="presentation"\n style="height:500px"\n >\n <tbody>\n <tr>\n <td></td>\n </tr>\n </tbody>\n </table>\n </td>\n </tr>\n </tbody>\n </table>\n </body>\n\n</html>';
1186
+ return '\n or<!-- -->\n <a\n href="https://bsky.app/intent/verify-email?code=' + alias2(alias1(depth0 != null ? lookupProperty(depth0, "token") : depth0, depth0)) + '"\n style="color:' + alias2(alias1((stack1 = depth0 != null ? lookupProperty(depth0, "config") : depth0) != null ? lookupProperty(stack1, "primaryColor") : stack1, depth0)) + ';text-decoration:none;text-decoration-line:underline;font-size:16px;letter-spacing:0.25px"\n target="_blank"\n >click here</a>';
1187
+ }, "compiler": [8, ">= 4.3.0"], "main": function(container, depth0, helpers, partials, data) {
1188
+ var stack1, alias1 = container.lambda, alias2 = container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {
1189
+ if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {
1190
+ return parent[propertyName];
1191
+ }
1192
+ return void 0;
1193
+ };
1194
+ return '<html dir="ltr" lang="en">\n\n <head>\n <meta content="text/html; charset=UTF-8" http-equiv="Content-Type" />\n <meta name="x-apple-disable-message-reformatting" />\n <title>Confirm your email</title>\n <meta name="description" content="' + alias2(alias1(depth0 != null ? lookupProperty(depth0, "token") : depth0, depth0)) + ' is your verification code." />\n </head>\n <div\n style="display:none;overflow:hidden;line-height:1px;opacity:0;max-height:0;max-width:0"\n >' + alias2(alias1(depth0 != null ? lookupProperty(depth0, "token") : depth0, depth0)) + '\n is your verification code.<div\n >\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF\xA0\u200C\u200B\u200D\u200E\u200F\uFEFF</div>\n </div>\n\n <body\n style="padding:12px;padding-bottom:40px;background-color:hsl(211, 20%, 95.3%)"\n >\n <table\n align="center"\n width="100%"\n border="0"\n cellPadding="0"\n cellSpacing="0"\n role="presentation"\n style="max-width:37.5em"\n >\n <tbody>\n <tr style="width:100%">\n <td>\n <table\n align="center"\n width="100%"\n border="0"\n cellPadding="0"\n cellSpacing="0"\n role="presentation"\n style="padding-top:24px;padding-bottom:24px"\n >\n <tbody>\n <tr>\n <td><img\n alt="' + alias2(alias1((stack1 = depth0 != null ? lookupProperty(depth0, "config") : depth0) != null ? lookupProperty(stack1, "serviceName") : stack1, depth0)) + '"\n src="' + alias2(alias1((stack1 = depth0 != null ? lookupProperty(depth0, "config") : depth0) != null ? lookupProperty(stack1, "logoUrl") : stack1, depth0)) + '"\n style="display:block;outline:none;border:none;text-decoration:none;width:110px;margin:0 auto"\n /></td>\n </tr>\n </tbody>\n </table>\n <table\n align="center"\n width="100%"\n border="0"\n cellPadding="0"\n cellSpacing="0"\n role="presentation"\n style="padding:24px;padding-bottom:16px;border-radius:12px;background-color:#FFFFFF"\n >\n <tbody>\n <tr>\n <td>\n <h1\n style="font-size:26px;letter-spacing:0.25px;color:#000000;font-family:-apple-system, BlinkMacSystemFont, &#x27;Roboto&#x27;, &#x27;Oxygen&#x27;, &#x27;Ubuntu&#x27;, &#x27;Cantarell&#x27;, &#x27;Fira Sans&#x27;, &#x27;Droid Sans&#x27;, &#x27;Helvetica Neue&#x27;, sans-serif;margin:0px 0px;line-height:1.0"\n >Confirm your email</h1>\n <p\n style="font-size:16px;line-height:1.4;margin:0px 0px;letter-spacing:0.25px;color:hsl(211, 24%, 34.2%);font-family:-apple-system, BlinkMacSystemFont, &#x27;Roboto&#x27;, &#x27;Oxygen&#x27;, &#x27;Ubuntu&#x27;, &#x27;Cantarell&#x27;, &#x27;Fira Sans&#x27;, &#x27;Droid Sans&#x27;, &#x27;Helvetica Neue&#x27;, sans-serif;padding-top:12px;padding-bottom:12px;padding-right:32px"\n >To confirm this email for your account, please enter the\n code below in the app' + ((stack1 = lookupProperty(helpers, "if").call(depth0 != null ? depth0 : container.nullContext || {}, (stack1 = depth0 != null ? lookupProperty(depth0, "config") : depth0) != null ? lookupProperty(stack1, "showBskyAppEmailConfirmationLink") : stack1, { "name": "if", "hash": {}, "fn": container.program(1, data, 0), "inverse": container.noop, "data": data, "loc": { "start": { "line": 68, "column": 43 }, "end": { "line": 76, "column": 46 } } })) != null ? stack1 : "") + '.</p><code\n style="display:block;padding:16px;border-radius:8px;border-width:1px;border-style:solid;background-color:hsl(211, 20%, 95.3%);border-color:hsl(211, 20%, 85.89999999999999%);font-size:14px;letter-spacing:0.25px;font-family:monospace;text-transform:uppercase"\n >' + alias2(alias1(depth0 != null ? lookupProperty(depth0, "token") : depth0, depth0)) + '</code>\n <p\n style="font-size:14px;line-height:1.4;margin:0px 0px;letter-spacing:0.25px;color:hsl(211, 20%, 53%);font-family:-apple-system, BlinkMacSystemFont, &#x27;Roboto&#x27;, &#x27;Oxygen&#x27;, &#x27;Ubuntu&#x27;, &#x27;Cantarell&#x27;, &#x27;Fira Sans&#x27;, &#x27;Droid Sans&#x27;, &#x27;Helvetica Neue&#x27;, sans-serif;padding-top:12px"\n >If you didn&#x27;t request an email confirmation, you can\n safely ignore this email.</p>\n <table\n align="center"\n width="100%"\n border="0"\n cellPadding="0"\n cellSpacing="0"\n role="presentation"\n style="padding-top:24px"\n >\n <tbody>\n <tr>\n <td>\n <hr\n style="width:100%;border:none;border-top:1px solid #eaeaea;margin:0"\n />\n <table\n align="center"\n width="100%"\n border="0"\n cellPadding="0"\n cellSpacing="0"\n role="presentation"\n style="padding-top:16px;vertical-align:middle"\n >\n <tbody style="width:100%">\n <tr style="width:100%">\n <td data-id="__react-email-column">\n <p\n style="font-size:14px;line-height:1.4;margin:0px 0px;color:hsl(211, 20%, 53%);font-family:-apple-system, BlinkMacSystemFont, &#x27;Roboto&#x27;, &#x27;Oxygen&#x27;, &#x27;Ubuntu&#x27;, &#x27;Cantarell&#x27;, &#x27;Fira Sans&#x27;, &#x27;Droid Sans&#x27;, &#x27;Helvetica Neue&#x27;, sans-serif;letter-spacing:0.25px"\n ><a\n href="' + alias2(alias1((stack1 = depth0 != null ? lookupProperty(depth0, "config") : depth0) != null ? lookupProperty(stack1, "homeUrl") : stack1, depth0)) + '"\n style="color:hsl(211, 20%, 53%);text-decoration:none;text-decoration-line:underline;font-family:-apple-system, BlinkMacSystemFont, &#x27;Roboto&#x27;, &#x27;Oxygen&#x27;, &#x27;Ubuntu&#x27;, &#x27;Cantarell&#x27;, &#x27;Fira Sans&#x27;, &#x27;Droid Sans&#x27;, &#x27;Helvetica Neue&#x27;, sans-serif;margin:0px 0px;line-height:1.0;font-size:14px;letter-spacing:0.25px"\n target="_blank"\n >' + alias2(alias1((stack1 = depth0 != null ? lookupProperty(depth0, "config") : depth0) != null ? lookupProperty(stack1, "serviceName") : stack1, depth0)) + '</a></p>\n </td>\n <td\n data-id="__react-email-column"\n style="width:24px"\n ><img\n alt="' + alias2(alias1((stack1 = depth0 != null ? lookupProperty(depth0, "config") : depth0) != null ? lookupProperty(stack1, "serviceName") : stack1, depth0)) + '"\n src="' + alias2(alias1((stack1 = depth0 != null ? lookupProperty(depth0, "config") : depth0) != null ? lookupProperty(stack1, "markUrl") : stack1, depth0)) + '"\n style="display:block;outline:none;border:none;text-decoration:none;width:24px"\n /></td>\n </tr>\n </tbody>\n </table>\n </td>\n </tr>\n </tbody>\n </table>\n </td>\n </tr>\n </tbody>\n </table>\n <table\n align="center"\n width="100%"\n border="0"\n cellPadding="0"\n cellSpacing="0"\n role="presentation"\n style="height:500px"\n >\n <tbody>\n <tr>\n <td></td>\n </tr>\n </tbody>\n </table>\n </td>\n </tr>\n </tbody>\n </table>\n </body>\n\n</html>';
1187
1195
  }, "useData": true });
1188
1196
  export {
1189
1197
  confirm_email_default as default