@atproto/oauth-provider 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 (224) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/dist/account/account-store.d.ts +6 -5
  3. package/dist/account/account-store.d.ts.map +1 -1
  4. package/dist/account/account-store.js +24 -8
  5. package/dist/account/account-store.js.map +1 -1
  6. package/dist/account/sign-up-data.d.ts +2 -2
  7. package/dist/assets/app/bundle-manifest.json +185 -185
  8. package/dist/assets/app/{index-ItwwtJ8r.js → index-DZHZ9kCP.js} +2 -2
  9. package/dist/assets/app/{index-ItwwtJ8r.js.map → index-DZHZ9kCP.js.map} +1 -1
  10. package/dist/assets/app/{main-CSatvmRR.js → main-Dr6y26KY.js} +48 -48
  11. package/dist/assets/app/{main-CSatvmRR.js.map → main-Dr6y26KY.js.map} +1 -1
  12. package/dist/assets/app/messages-6_mYuGzB.js +4 -0
  13. package/dist/assets/app/messages-6_mYuGzB.js.map +1 -0
  14. package/dist/assets/app/messages-7wdeBTpD.js +4 -0
  15. package/dist/assets/app/messages-7wdeBTpD.js.map +1 -0
  16. package/dist/assets/app/messages-B-YFoWKc.js +4 -0
  17. package/dist/assets/app/messages-B-YFoWKc.js.map +1 -0
  18. package/dist/assets/app/messages-B10DUOE-.js +4 -0
  19. package/dist/assets/app/messages-B10DUOE-.js.map +1 -0
  20. package/dist/assets/app/messages-B4AwFEeZ.js +4 -0
  21. package/dist/assets/app/messages-B4AwFEeZ.js.map +1 -0
  22. package/dist/assets/app/messages-BDP8MyEC.js +4 -0
  23. package/dist/assets/app/messages-BDP8MyEC.js.map +1 -0
  24. package/dist/assets/app/messages-BIS87lxQ.js +4 -0
  25. package/dist/assets/app/messages-BIS87lxQ.js.map +1 -0
  26. package/dist/assets/app/messages-BI_Wbjdt.js +4 -0
  27. package/dist/assets/app/messages-BI_Wbjdt.js.map +1 -0
  28. package/dist/assets/app/messages-BMAouhRx.js +4 -0
  29. package/dist/assets/app/messages-BMAouhRx.js.map +1 -0
  30. package/dist/assets/app/messages-BdckMnJj.js +4 -0
  31. package/dist/assets/app/messages-BdckMnJj.js.map +1 -0
  32. package/dist/assets/app/messages-BgBLzc46.js +4 -0
  33. package/dist/assets/app/messages-BgBLzc46.js.map +1 -0
  34. package/dist/assets/app/messages-BobD78yK.js +4 -0
  35. package/dist/assets/app/messages-BobD78yK.js.map +1 -0
  36. package/dist/assets/app/messages-BtThT9UZ.js +4 -0
  37. package/dist/assets/app/messages-BtThT9UZ.js.map +1 -0
  38. package/dist/assets/app/messages-BwKHkbeh.js +4 -0
  39. package/dist/assets/app/messages-BwKHkbeh.js.map +1 -0
  40. package/dist/assets/app/messages-C417YUvA.js +4 -0
  41. package/dist/assets/app/messages-C417YUvA.js.map +1 -0
  42. package/dist/assets/app/messages-C4CxO4bO.js +4 -0
  43. package/dist/assets/app/messages-C4CxO4bO.js.map +1 -0
  44. package/dist/assets/app/messages-C5vd04e6.js +4 -0
  45. package/dist/assets/app/messages-C5vd04e6.js.map +1 -0
  46. package/dist/assets/app/messages-CAri2Wnz.js +4 -0
  47. package/dist/assets/app/messages-CAri2Wnz.js.map +1 -0
  48. package/dist/assets/app/messages-CPtWTZeG.js +4 -0
  49. package/dist/assets/app/messages-CPtWTZeG.js.map +1 -0
  50. package/dist/assets/app/messages-CiaM5zm8.js +4 -0
  51. package/dist/assets/app/messages-CiaM5zm8.js.map +1 -0
  52. package/dist/assets/app/messages-CkL-L2R6.js +4 -0
  53. package/dist/assets/app/messages-CkL-L2R6.js.map +1 -0
  54. package/dist/assets/app/messages-Cy_4XLNe.js +4 -0
  55. package/dist/assets/app/messages-Cy_4XLNe.js.map +1 -0
  56. package/dist/assets/app/messages-D5_ad-Eo.js +4 -0
  57. package/dist/assets/app/messages-D5_ad-Eo.js.map +1 -0
  58. package/dist/assets/app/messages-DChMl9mT.js +4 -0
  59. package/dist/assets/app/messages-DChMl9mT.js.map +1 -0
  60. package/dist/assets/app/messages-DWX-DIfv.js +4 -0
  61. package/dist/assets/app/messages-DWX-DIfv.js.map +1 -0
  62. package/dist/assets/app/messages-DgfsOphe.js +4 -0
  63. package/dist/assets/app/messages-DgfsOphe.js.map +1 -0
  64. package/dist/assets/app/messages-Dj5B_DR6.js +4 -0
  65. package/dist/assets/app/messages-Dj5B_DR6.js.map +1 -0
  66. package/dist/assets/app/messages-Dwzqo4eA.js +4 -0
  67. package/dist/assets/app/messages-Dwzqo4eA.js.map +1 -0
  68. package/dist/assets/app/messages-ESCIXJR7.js +4 -0
  69. package/dist/assets/app/messages-ESCIXJR7.js.map +1 -0
  70. package/dist/assets/app/messages-dglB2edb.js +4 -0
  71. package/dist/assets/app/messages-dglB2edb.js.map +1 -0
  72. package/dist/assets/app/messages-e_ClRrWc.js +4 -0
  73. package/dist/assets/app/messages-e_ClRrWc.js.map +1 -0
  74. package/dist/assets/app/messages-evvDxmrP.js +4 -0
  75. package/dist/assets/app/messages-evvDxmrP.js.map +1 -0
  76. package/dist/assets/app/messages-pPbdLb5B.js +4 -0
  77. package/dist/assets/app/messages-pPbdLb5B.js.map +1 -0
  78. package/dist/assets/app/messages-tJv8gHL2.js +4 -0
  79. package/dist/assets/app/messages-tJv8gHL2.js.map +1 -0
  80. package/dist/assets/app/messages-vLRVEw96.js +4 -0
  81. package/dist/assets/app/messages-vLRVEw96.js.map +1 -0
  82. package/dist/errors/invalid-invite-code-error.d.ts +5 -0
  83. package/dist/errors/invalid-invite-code-error.d.ts.map +1 -0
  84. package/dist/errors/invalid-invite-code-error.js +11 -0
  85. package/dist/errors/invalid-invite-code-error.js.map +1 -0
  86. package/dist/errors/oauth-error.d.ts +2 -2
  87. package/dist/errors/oauth-error.js.map +1 -1
  88. package/dist/oauth-errors.d.ts +1 -0
  89. package/dist/oauth-errors.d.ts.map +1 -1
  90. package/dist/oauth-errors.js +3 -1
  91. package/dist/oauth-errors.js.map +1 -1
  92. package/dist/oauth-provider.d.ts +3 -3
  93. package/dist/oauth-provider.d.ts.map +1 -1
  94. package/dist/oauth-provider.js +24 -23
  95. package/dist/oauth-provider.js.map +1 -1
  96. package/dist/output/build-customization-data.d.ts +20 -11
  97. package/dist/output/build-customization-data.d.ts.map +1 -1
  98. package/dist/output/build-customization-data.js +72 -43
  99. package/dist/output/build-customization-data.js.map +1 -1
  100. package/package.json +4 -3
  101. package/src/account/account-store.ts +21 -6
  102. package/src/assets/app/components/forms/input-checkbox.tsx +12 -7
  103. package/src/assets/app/components/forms/input-email-address.tsx +2 -3
  104. package/src/assets/app/components/forms/input-password.tsx +2 -3
  105. package/src/assets/app/components/forms/input-text.tsx +6 -0
  106. package/src/assets/app/components/utils/error-message.tsx +30 -4
  107. package/src/assets/app/lib/api.ts +25 -3
  108. package/src/assets/app/locales/an/messages.po +51 -53
  109. package/src/assets/app/locales/ast/messages.po +51 -53
  110. package/src/assets/app/locales/ca/messages.po +51 -53
  111. package/src/assets/app/locales/da/messages.po +51 -53
  112. package/src/assets/app/locales/de/messages.po +51 -53
  113. package/src/assets/app/locales/el/messages.po +51 -53
  114. package/src/assets/app/locales/en/messages.po +51 -53
  115. package/src/assets/app/locales/en-GB/messages.po +51 -53
  116. package/src/assets/app/locales/es/messages.po +51 -53
  117. package/src/assets/app/locales/eu/messages.po +51 -53
  118. package/src/assets/app/locales/fi/messages.po +51 -53
  119. package/src/assets/app/locales/fr/messages.po +52 -54
  120. package/src/assets/app/locales/ga/messages.po +51 -53
  121. package/src/assets/app/locales/gl/messages.po +51 -53
  122. package/src/assets/app/locales/hi/messages.po +51 -53
  123. package/src/assets/app/locales/hu/messages.po +51 -53
  124. package/src/assets/app/locales/ia/messages.po +51 -53
  125. package/src/assets/app/locales/id/messages.po +51 -53
  126. package/src/assets/app/locales/it/messages.po +51 -53
  127. package/src/assets/app/locales/ja/messages.po +51 -53
  128. package/src/assets/app/locales/km/messages.po +51 -53
  129. package/src/assets/app/locales/ko/messages.po +51 -53
  130. package/src/assets/app/locales/ne/messages.po +51 -53
  131. package/src/assets/app/locales/nl/messages.po +51 -53
  132. package/src/assets/app/locales/pl/messages.po +51 -53
  133. package/src/assets/app/locales/pt-BR/messages.po +51 -53
  134. package/src/assets/app/locales/ro/messages.po +51 -53
  135. package/src/assets/app/locales/ru/messages.po +51 -53
  136. package/src/assets/app/locales/sv/messages.po +51 -53
  137. package/src/assets/app/locales/th/messages.po +51 -53
  138. package/src/assets/app/locales/tr/messages.po +51 -53
  139. package/src/assets/app/locales/uk/messages.po +51 -53
  140. package/src/assets/app/locales/vi/messages.po +51 -53
  141. package/src/assets/app/locales/zh-CN/messages.po +51 -53
  142. package/src/assets/app/locales/zh-HK/messages.po +51 -53
  143. package/src/assets/app/locales/zh-TW/messages.po +51 -53
  144. package/src/assets/app/views/authorize/reset-password/reset-password-confirm-form.tsx +1 -1
  145. package/src/assets/app/views/authorize/sign-in/sign-in-form.tsx +3 -5
  146. package/src/assets/app/views/authorize/sign-up/sign-up-account-form.tsx +7 -5
  147. package/src/assets/app/views/authorize/sign-up/sign-up-handle-form.tsx +0 -2
  148. package/src/errors/invalid-invite-code-error.ts +10 -0
  149. package/src/errors/oauth-error.ts +1 -1
  150. package/src/oauth-errors.ts +1 -0
  151. package/src/oauth-provider.ts +45 -35
  152. package/src/output/build-customization-data.ts +89 -50
  153. package/tsconfig.backend.tsbuildinfo +1 -1
  154. package/dist/assets/app/messages-BQeltXSF.js +0 -4
  155. package/dist/assets/app/messages-BQeltXSF.js.map +0 -1
  156. package/dist/assets/app/messages-BQkEhfjg.js +0 -4
  157. package/dist/assets/app/messages-BQkEhfjg.js.map +0 -1
  158. package/dist/assets/app/messages-BUjKj_UJ.js +0 -4
  159. package/dist/assets/app/messages-BUjKj_UJ.js.map +0 -1
  160. package/dist/assets/app/messages-BWIQa8fO.js +0 -4
  161. package/dist/assets/app/messages-BWIQa8fO.js.map +0 -1
  162. package/dist/assets/app/messages-BaNVb0bp.js +0 -4
  163. package/dist/assets/app/messages-BaNVb0bp.js.map +0 -1
  164. package/dist/assets/app/messages-BaizVXcF.js +0 -4
  165. package/dist/assets/app/messages-BaizVXcF.js.map +0 -1
  166. package/dist/assets/app/messages-BfoClA1Y.js +0 -4
  167. package/dist/assets/app/messages-BfoClA1Y.js.map +0 -1
  168. package/dist/assets/app/messages-BsKGDZnC.js +0 -4
  169. package/dist/assets/app/messages-BsKGDZnC.js.map +0 -1
  170. package/dist/assets/app/messages-Bu-TJhml.js +0 -4
  171. package/dist/assets/app/messages-Bu-TJhml.js.map +0 -1
  172. package/dist/assets/app/messages-BvOKnBQk.js +0 -4
  173. package/dist/assets/app/messages-BvOKnBQk.js.map +0 -1
  174. package/dist/assets/app/messages-BxDzCiWz.js +0 -4
  175. package/dist/assets/app/messages-BxDzCiWz.js.map +0 -1
  176. package/dist/assets/app/messages-CDgFOy4S.js +0 -4
  177. package/dist/assets/app/messages-CDgFOy4S.js.map +0 -1
  178. package/dist/assets/app/messages-CLbTz0o9.js +0 -4
  179. package/dist/assets/app/messages-CLbTz0o9.js.map +0 -1
  180. package/dist/assets/app/messages-CNwSh0t7.js +0 -4
  181. package/dist/assets/app/messages-CNwSh0t7.js.map +0 -1
  182. package/dist/assets/app/messages-CSMNJ6P8.js +0 -4
  183. package/dist/assets/app/messages-CSMNJ6P8.js.map +0 -1
  184. package/dist/assets/app/messages-CZQUw3mp.js +0 -4
  185. package/dist/assets/app/messages-CZQUw3mp.js.map +0 -1
  186. package/dist/assets/app/messages-CZT41oVp.js +0 -4
  187. package/dist/assets/app/messages-CZT41oVp.js.map +0 -1
  188. package/dist/assets/app/messages-C_b-d3t8.js +0 -4
  189. package/dist/assets/app/messages-C_b-d3t8.js.map +0 -1
  190. package/dist/assets/app/messages-C_u3MTc2.js +0 -4
  191. package/dist/assets/app/messages-C_u3MTc2.js.map +0 -1
  192. package/dist/assets/app/messages-Cn8nHZic.js +0 -4
  193. package/dist/assets/app/messages-Cn8nHZic.js.map +0 -1
  194. package/dist/assets/app/messages-CtDywJUm.js +0 -4
  195. package/dist/assets/app/messages-CtDywJUm.js.map +0 -1
  196. package/dist/assets/app/messages-CurtIjBF.js +0 -4
  197. package/dist/assets/app/messages-CurtIjBF.js.map +0 -1
  198. package/dist/assets/app/messages-Cv6zIbaP.js +0 -4
  199. package/dist/assets/app/messages-Cv6zIbaP.js.map +0 -1
  200. package/dist/assets/app/messages-D1eLQuPE.js +0 -4
  201. package/dist/assets/app/messages-D1eLQuPE.js.map +0 -1
  202. package/dist/assets/app/messages-D8vHEaYW.js +0 -4
  203. package/dist/assets/app/messages-D8vHEaYW.js.map +0 -1
  204. package/dist/assets/app/messages-DJ1Q4GeC.js +0 -4
  205. package/dist/assets/app/messages-DJ1Q4GeC.js.map +0 -1
  206. package/dist/assets/app/messages-DRL3exqd.js +0 -4
  207. package/dist/assets/app/messages-DRL3exqd.js.map +0 -1
  208. package/dist/assets/app/messages-DWLPQRTp.js +0 -4
  209. package/dist/assets/app/messages-DWLPQRTp.js.map +0 -1
  210. package/dist/assets/app/messages-DjVaE9YE.js +0 -4
  211. package/dist/assets/app/messages-DjVaE9YE.js.map +0 -1
  212. package/dist/assets/app/messages-DqpMfFJR.js +0 -4
  213. package/dist/assets/app/messages-DqpMfFJR.js.map +0 -1
  214. package/dist/assets/app/messages-ETjhJBEN.js +0 -4
  215. package/dist/assets/app/messages-ETjhJBEN.js.map +0 -1
  216. package/dist/assets/app/messages-EUKrgrGn.js +0 -4
  217. package/dist/assets/app/messages-EUKrgrGn.js.map +0 -1
  218. package/dist/assets/app/messages-QQrOUcPW.js +0 -4
  219. package/dist/assets/app/messages-QQrOUcPW.js.map +0 -1
  220. package/dist/assets/app/messages-e2QGqFL6.js +0 -4
  221. package/dist/assets/app/messages-e2QGqFL6.js.map +0 -1
  222. package/dist/assets/app/messages-p61py7gD.js +0 -4
  223. package/dist/assets/app/messages-p61py7gD.js.map +0 -1
  224. /package/dist/assets/app/{main-CSatvmRR.css → main-Dr6y26KY.css} +0 -0
@@ -17,11 +17,11 @@ msgstr ""
17
17
  msgid "<0/> is asking for permission to access your account (<1/>)."
18
18
  msgstr ""
19
19
 
20
- #: src/assets/app/views/authorize/sign-in/sign-in-form.tsx:221
20
+ #: src/assets/app/views/authorize/sign-in/sign-in-form.tsx:219
21
21
  msgid "2FA Confirmation"
22
22
  msgstr ""
23
23
 
24
- #: src/assets/app/components/utils/error-message.tsx:47
24
+ #: src/assets/app/components/utils/error-message.tsx:27
25
25
  msgid "A second authentication factor is required"
26
26
  msgstr ""
27
27
 
@@ -45,7 +45,7 @@ msgstr ""
45
45
  msgid "An application on your device"
46
46
  msgstr ""
47
47
 
48
- #: src/assets/app/components/utils/error-message.tsx:61
48
+ #: src/assets/app/components/utils/error-message.tsx:87
49
49
  msgid "An unknown error occurred"
50
50
  msgstr ""
51
51
 
@@ -78,8 +78,6 @@ msgstr ""
78
78
  msgid "By clicking <0>Authorize</0>, you allow this application to perform the following actions in accordance with their <1>terms of service</1> and <2>privacy policy</2>:"
79
79
  msgstr ""
80
80
 
81
- #. placeholder {0}: tosLink ? ( <LinkAnchor className="text-brand underline" link={tosLink}> <Trans>Terms of Service</Trans> </LinkAnchor> ) : ( <Trans>Terms of Service</Trans> )
82
- #. placeholder {1}: ppLink ? ( <LinkAnchor className="text-brand underline" link={ppLink}> <Trans>Privacy Policy</Trans> </LinkAnchor> ) : ( <Trans>Privacy Policy</Trans> )
83
81
  #: src/assets/app/views/authorize/sign-up/sign-up-disclaimer.tsx:30
84
82
  msgid "By creating an account you agree to the {0} and the {1} of this service."
85
83
  msgstr ""
@@ -89,8 +87,7 @@ msgstr ""
89
87
  msgid "Cancel"
90
88
  msgstr ""
91
89
 
92
- #. placeholder {0}: secondFactor.hint
93
- #: src/assets/app/views/authorize/sign-in/sign-in-form.tsx:234
90
+ #: src/assets/app/views/authorize/sign-in/sign-in-form.tsx:232
94
91
  msgid "Check your {0} email for a login code and enter it here."
95
92
  msgstr ""
96
93
 
@@ -110,7 +107,7 @@ msgstr ""
110
107
  msgid "Confirm your password to continue"
111
108
  msgstr ""
112
109
 
113
- #: src/assets/app/views/authorize/sign-in/sign-in-form.tsx:225
110
+ #: src/assets/app/views/authorize/sign-in/sign-in-form.tsx:223
114
111
  msgid "Confirmation code"
115
112
  msgstr ""
116
113
 
@@ -130,19 +127,17 @@ msgstr ""
130
127
  msgid "Description"
131
128
  msgstr ""
132
129
 
133
- #: src/assets/app/views/authorize/sign-up/sign-up-account-form.tsx:112
134
- #: src/assets/app/components/forms/input-email-address.tsx:49
135
- #: src/assets/app/components/forms/input-email-address.tsx:50
136
- #: src/assets/app/components/forms/input-email-address.tsx:51
130
+ #: src/assets/app/views/authorize/sign-up/sign-up-account-form.tsx:114
137
131
  msgid "Email"
138
132
  msgstr ""
139
133
 
140
134
  #: src/assets/app/views/authorize/reset-password/reset-password-request-form.tsx:55
141
135
  #: src/assets/app/views/authorize/reset-password/reset-password-request-form.tsx:60
136
+ #: src/assets/app/components/forms/input-email-address.tsx:51
142
137
  msgid "Email address"
143
138
  msgstr ""
144
139
 
145
- #: src/assets/app/components/forms/input-new-password.tsx:48
140
+ #: src/assets/app/components/forms/input-new-password.tsx:44
146
141
  msgid "Enter a password"
147
142
  msgstr ""
148
143
 
@@ -158,7 +153,7 @@ msgstr ""
158
153
  msgid "Enter your email address"
159
154
  msgstr ""
160
155
 
161
- #: src/assets/app/components/forms/input-new-password.tsx:49
156
+ #: src/assets/app/components/forms/input-new-password.tsx:45
162
157
  msgid "Enter your new password"
163
158
  msgstr ""
164
159
 
@@ -175,6 +170,10 @@ msgstr ""
175
170
  msgid "Error"
176
171
  msgstr ""
177
172
 
173
+ #: src/assets/app/views/authorize/sign-up/sign-up-account-form.tsx:102
174
+ msgid "example-com-xxxxx-xxxxx"
175
+ msgstr ""
176
+
178
177
  #: src/assets/app/components/utils/password-strength-label.tsx:25
179
178
  msgid "Extra"
180
179
  msgstr ""
@@ -183,11 +182,10 @@ msgstr ""
183
182
  msgid "Forgot Password"
184
183
  msgstr ""
185
184
 
186
- #: src/assets/app/views/authorize/sign-in/sign-in-form.tsx:180
185
+ #: src/assets/app/views/authorize/sign-in/sign-in-form.tsx:178
187
186
  msgid "Forgot?"
188
187
  msgstr ""
189
188
 
190
- #. placeholder {0}: account.preferred_username || account.email || account.sub
191
189
  #: src/assets/app/views/authorize/accept/accept-view.tsx:40
192
190
  msgid "Grant access to your <0>{0}</0> account"
193
191
  msgstr ""
@@ -212,13 +210,12 @@ msgstr ""
212
210
  msgid "Interface language selector"
213
211
  msgstr ""
214
212
 
215
- #: src/assets/app/views/authorize/sign-up/sign-up-handle-form.tsx:277
213
+ #: src/assets/app/views/authorize/sign-up/sign-up-handle-form.tsx:275
216
214
  msgid "Invalid"
217
215
  msgstr ""
218
216
 
219
- #: src/assets/app/views/authorize/sign-up/sign-up-account-form.tsx:95
220
- #: src/assets/app/views/authorize/sign-up/sign-up-account-form.tsx:99
221
- #: src/assets/app/views/authorize/sign-up/sign-up-account-form.tsx:100
217
+ #: src/assets/app/views/authorize/sign-up/sign-up-account-form.tsx:96
218
+ #: src/assets/app/views/authorize/sign-up/sign-up-account-form.tsx:101
222
219
  msgid "Invite code"
223
220
  msgstr ""
224
221
 
@@ -272,9 +269,7 @@ msgstr ""
272
269
  msgid "Only letters, numbers, and hyphens"
273
270
  msgstr ""
274
271
 
275
- #: src/assets/app/views/authorize/sign-up/sign-up-account-form.tsx:126
276
- #: src/assets/app/components/forms/input-password.tsx:51
277
- #: src/assets/app/components/forms/input-password.tsx:52
272
+ #: src/assets/app/views/authorize/sign-up/sign-up-account-form.tsx:128
278
273
  #: src/assets/app/components/forms/input-password.tsx:53
279
274
  msgid "Password"
280
275
  msgstr ""
@@ -295,11 +290,11 @@ msgstr ""
295
290
  msgid "Password updated!"
296
291
  msgstr ""
297
292
 
298
- #: src/assets/app/components/forms/input-new-password.tsx:50
293
+ #: src/assets/app/components/forms/input-new-password.tsx:46
299
294
  msgid "Password with at least {MIN_PASSWORD_LENGTH} characters"
300
295
  msgstr ""
301
296
 
302
- #: src/assets/app/views/authorize/sign-in/sign-in-form.tsx:194
297
+ #: src/assets/app/views/authorize/sign-in/sign-in-form.tsx:192
303
298
  msgid "Please verify the domain name of the website before entering your password. Never enter your password on a domain you do not trust."
304
299
  msgstr ""
305
300
 
@@ -309,8 +304,8 @@ msgstr ""
309
304
  msgid "Privacy Policy"
310
305
  msgstr ""
311
306
 
312
- #: src/assets/app/views/authorize/sign-in/sign-in-form.tsx:208
313
- #: src/assets/app/views/authorize/sign-in/sign-in-form.tsx:213
307
+ #: src/assets/app/views/authorize/sign-in/sign-in-form.tsx:206
308
+ #: src/assets/app/views/authorize/sign-in/sign-in-form.tsx:211
314
309
  msgid "Remember this account on this device"
315
310
  msgstr ""
316
311
 
@@ -326,11 +321,11 @@ msgstr ""
326
321
  msgid "Reset Password"
327
322
  msgstr ""
328
323
 
329
- #: src/assets/app/views/authorize/sign-in/sign-in-form.tsx:178
324
+ #: src/assets/app/views/authorize/sign-in/sign-in-form.tsx:176
330
325
  msgid "Reset your password"
331
326
  msgstr ""
332
327
 
333
- #: src/assets/app/views/authorize/sign-up/sign-up-handle-form.tsx:198
328
+ #: src/assets/app/views/authorize/sign-up/sign-up-handle-form.tsx:196
334
329
  msgid "Select domain"
335
330
  msgstr ""
336
331
 
@@ -338,7 +333,7 @@ msgstr ""
338
333
  msgid "Select from an existing account"
339
334
  msgstr ""
340
335
 
341
- #: src/assets/app/views/authorize/sign-in/sign-in-form.tsx:204
336
+ #: src/assets/app/views/authorize/sign-in/sign-in-form.tsx:202
342
337
  msgid "Session"
343
338
  msgstr ""
344
339
 
@@ -348,7 +343,6 @@ msgstr ""
348
343
  msgid "Sign in"
349
344
  msgstr ""
350
345
 
351
- #. placeholder {0}: account.name
352
346
  #: src/assets/app/views/authorize/sign-in/sign-in-picker.tsx:75
353
347
  msgid "Sign in as {0}"
354
348
  msgstr ""
@@ -383,45 +377,55 @@ msgstr ""
383
377
  msgid "Terms of Service"
384
378
  msgstr ""
385
379
 
386
- #: src/assets/app/components/utils/error-message.tsx:42
380
+ #: src/assets/app/components/utils/error-message.tsx:52
387
381
  msgid "That handle cannot be used"
388
382
  msgstr ""
389
383
 
390
- #: src/assets/app/components/utils/error-message.tsx:33
384
+ #: src/assets/app/components/utils/error-message.tsx:69
385
+ msgid "The data you submitted is invalid. Please check the form and try again."
386
+ msgstr ""
387
+
388
+ #: src/assets/app/components/utils/error-message.tsx:43
391
389
  msgid "The domain name is not allowed"
392
390
  msgstr ""
393
391
 
394
- #: src/assets/app/components/utils/error-message.tsx:35
392
+ #: src/assets/app/components/utils/error-message.tsx:45
395
393
  msgid "The handle contains inappropriate language"
396
394
  msgstr ""
397
395
 
398
- #: src/assets/app/components/utils/error-message.tsx:40
396
+ #: src/assets/app/components/utils/error-message.tsx:50
399
397
  msgid "The handle is already in use"
400
398
  msgstr ""
401
399
 
402
- #: src/assets/app/components/utils/error-message.tsx:31
400
+ #: src/assets/app/components/utils/error-message.tsx:41
403
401
  msgid "The handle is invalid"
404
402
  msgstr ""
405
403
 
406
- #: src/assets/app/components/utils/error-message.tsx:25
404
+ #: src/assets/app/components/utils/error-message.tsx:35
405
+ msgid "The invite code is not valid"
406
+ msgstr ""
407
+
408
+ #: src/assets/app/components/utils/error-message.tsx:77
409
+ msgid "This authorization request has been denied. Please try again."
410
+ msgstr ""
411
+
412
+ #: src/assets/app/components/utils/error-message.tsx:57
407
413
  msgid "This email is already used"
408
414
  msgstr ""
409
415
 
410
- #: src/assets/app/components/utils/error-message.tsx:38
416
+ #: src/assets/app/components/utils/error-message.tsx:48
411
417
  msgid "This handle is reserved"
412
418
  msgstr ""
413
419
 
414
- #: src/assets/app/components/utils/error-message.tsx:54
420
+ #: src/assets/app/components/utils/error-message.tsx:64
415
421
  msgid "This sign-in session has expired"
416
422
  msgstr ""
417
423
 
418
424
  #: src/assets/app/views/authorize/sign-up/sign-up-handle-form.tsx:166
419
- #: src/assets/app/views/authorize/sign-up/sign-up-handle-form.tsx:167
420
- #: src/assets/app/views/authorize/sign-up/sign-up-handle-form.tsx:168
421
425
  msgid "Type your desired username"
422
426
  msgstr ""
423
427
 
424
- #: src/assets/app/components/utils/error-message.tsx:58
428
+ #: src/assets/app/components/utils/error-message.tsx:84
425
429
  msgid "Unexpected server response"
426
430
  msgstr ""
427
431
 
@@ -430,23 +434,18 @@ msgid "Uniquely identify you"
430
434
  msgstr ""
431
435
 
432
436
  #: src/assets/app/views/authorize/sign-in/sign-in-form.tsx:143
433
- #: src/assets/app/views/authorize/sign-in/sign-in-form.tsx:144
434
437
  msgid "Username or email address"
435
438
  msgstr ""
436
439
 
437
- #: src/assets/app/views/authorize/sign-up/sign-up-handle-form.tsx:272
440
+ #: src/assets/app/views/authorize/sign-up/sign-up-handle-form.tsx:270
438
441
  msgid "Valid"
439
442
  msgstr ""
440
443
 
441
- #: src/assets/app/views/authorize/sign-in/sign-in-form.tsx:154
442
- msgid "Valid email address or username"
443
- msgstr ""
444
-
445
444
  #: src/assets/app/views/authorize/sign-up/sign-up-view.tsx:135
446
445
  msgid "Verify you are human"
447
446
  msgstr ""
448
447
 
449
- #: src/assets/app/views/authorize/sign-in/sign-in-form.tsx:191
448
+ #: src/assets/app/views/authorize/sign-in/sign-in-form.tsx:189
450
449
  msgid "Warning"
451
450
  msgstr ""
452
451
 
@@ -458,7 +457,7 @@ msgstr ""
458
457
  msgid "Weak"
459
458
  msgstr ""
460
459
 
461
- #: src/assets/app/components/utils/error-message.tsx:21
460
+ #: src/assets/app/components/utils/error-message.tsx:31
462
461
  msgid "Wrong identifier or password"
463
462
  msgstr ""
464
463
 
@@ -466,7 +465,7 @@ msgstr ""
466
465
  msgid "You are being redirected..."
467
466
  msgstr ""
468
467
 
469
- #: src/assets/app/views/authorize/sign-up/sign-up-handle-form.tsx:237
468
+ #: src/assets/app/views/authorize/sign-up/sign-up-handle-form.tsx:235
470
469
  msgid "You can change this username to any domain name you control after your account is set up."
471
470
  msgstr ""
472
471
 
@@ -482,8 +481,7 @@ msgstr ""
482
481
  msgid "Your account"
483
482
  msgstr ""
484
483
 
485
- #. placeholder {0}: segment.length ? ( <strong className="text-gray-800 dark:text-gray-200"> {preview} </strong> ) : ( <span aria-hidden className="bg-gray-300 dark:bg-slate-600 rounded-md p-2 w-24" /> )
486
- #: src/assets/app/views/authorize/sign-up/sign-up-handle-form.tsx:219
484
+ #: src/assets/app/views/authorize/sign-up/sign-up-handle-form.tsx:217
487
485
  msgid "Your full username will be: {0}"
488
486
  msgstr ""
489
487
 
@@ -61,7 +61,7 @@ export function ResetPasswordConfirmForm({
61
61
  <Fieldset label={<Trans>Reset code</Trans>}>
62
62
  <InputToken
63
63
  name="code"
64
- aria-label={tokenAriaId}
64
+ aria-labelledby={tokenAriaId}
65
65
  enterKeyHint="next"
66
66
  required
67
67
  autoFocus={true}
@@ -140,8 +140,7 @@ export function SignInForm({
140
140
  icon={<AtSymbolIcon className="w-5" />}
141
141
  name="username"
142
142
  type="text"
143
- placeholder={t`Username or email address`}
144
- aria-label={t`Username or email address`}
143
+ title={t`Username or email address`}
145
144
  autoCapitalize="none"
146
145
  autoCorrect="off"
147
146
  autoComplete="username"
@@ -151,7 +150,6 @@ export function SignInForm({
151
150
  required
152
151
  readOnly={usernameReadonly}
153
152
  disabled={usernameReadonly}
154
- title={t`Valid email address or username`}
155
153
  autoFocus
156
154
  value={username}
157
155
  onChange={(event) => {
@@ -205,7 +203,7 @@ export function SignInForm({
205
203
  >
206
204
  <InputCheckbox
207
205
  name="remember"
208
- aria-label={t`Remember this account on this device`}
206
+ title={t`Remember this account on this device`}
209
207
  enterKeyHint={secondFactor ? 'next' : 'done'}
210
208
  checked={remember}
211
209
  onChange={(event) => setRemember(event.target.checked)}
@@ -222,7 +220,7 @@ export function SignInForm({
222
220
  >
223
221
  <div>
224
222
  <InputToken
225
- aria-label={t`Confirmation code`}
223
+ title={t`Confirmation code`}
226
224
  enterKeyHint="done"
227
225
  required
228
226
  autoFocus={true}
@@ -8,7 +8,8 @@ import {
8
8
  } from '../../../components/forms/form-card-async.tsx'
9
9
  import { InputEmailAddress } from '../../../components/forms/input-email-address.tsx'
10
10
  import { InputNewPassword } from '../../../components/forms/input-new-password.tsx'
11
- import { InputToken } from '../../../components/forms/input-token.tsx'
11
+ import { InputText } from '../../../components/forms/input-text.tsx'
12
+ import { TokenIcon } from '../../../components/utils/icons.tsx'
12
13
  import { mergeRefs } from '../../../lib/ref.ts'
13
14
  import { Override } from '../../../lib/util.ts'
14
15
 
@@ -93,15 +94,16 @@ export function SignUpAccountForm({
93
94
  >
94
95
  {inviteCodeRequired && (
95
96
  <Fieldset label={<Trans>Invite code</Trans>}>
96
- <InputToken
97
+ <InputText
98
+ icon={<TokenIcon className="w-5" />}
97
99
  autoFocus
98
100
  name="inviteCode"
99
- aria-label={t`Invite code`}
100
101
  title={t`Invite code`}
102
+ placeholder={t`example-com-xxxxx-xxxxx`}
101
103
  required
102
- value={inviteCode}
104
+ value={inviteCode || ''}
103
105
  onChange={(event) => {
104
- setInviteCode(event.target.value)
106
+ setInviteCode(event.target.value || undefined)
105
107
  resetForm()
106
108
  }}
107
109
  enterKeyHint="next"
@@ -163,8 +163,6 @@ export function SignUpHandleForm({
163
163
  icon={<AtSymbolIcon className="w-5" />}
164
164
  name="handle"
165
165
  type="text"
166
- placeholder={t`Type your desired username`}
167
- aria-label={t`Type your desired username`}
168
166
  title={t`Type your desired username`}
169
167
  pattern="[a-z0-9][a-z0-9\-]+[a-z0-9]"
170
168
  minLength={minLength}
@@ -0,0 +1,10 @@
1
+ import { InvalidRequestError } from './invalid-request-error'
2
+
3
+ export class InvalidInviteCodeError extends InvalidRequestError {
4
+ constructor(details?: string, cause?: unknown) {
5
+ super(
6
+ 'This invite code is invalid.' + (details ? ` ${details}` : ''),
7
+ cause,
8
+ )
9
+ }
10
+ }
@@ -23,6 +23,6 @@ export class OAuthError extends Error {
23
23
  return {
24
24
  error: this.error,
25
25
  error_description: this.error_description,
26
- } as const
26
+ }
27
27
  }
28
28
  }
@@ -12,6 +12,7 @@ export { InvalidClientMetadataError } from './errors/invalid-client-metadata-err
12
12
  export { InvalidDpopKeyBindingError } from './errors/invalid-dpop-key-binding-error.js'
13
13
  export { InvalidDpopProofError } from './errors/invalid-dpop-proof-error.js'
14
14
  export { InvalidGrantError } from './errors/invalid-grant-error.js'
15
+ export { InvalidInviteCodeError } from './errors/invalid-invite-code-error.js'
15
16
  export { InvalidParametersError } from './errors/invalid-parameters-error.js'
16
17
  export { InvalidRedirectUriError } from './errors/invalid-redirect-uri-error.js'
17
18
  export { InvalidRequestError } from './errors/invalid-request-error.js'
@@ -103,8 +103,10 @@ import { OAuthHooks, SignInData, SignUpData } from './oauth-hooks.js'
103
103
  import { OAuthVerifier, OAuthVerifierOptions } from './oauth-verifier.js'
104
104
  import { AuthorizationResultAuthorize } from './output/build-authorize-data.js'
105
105
  import {
106
- BrandingConfig,
106
+ Branding,
107
+ BrandingInput,
107
108
  Customization,
109
+ CustomizationInput,
108
110
  customizationSchema,
109
111
  } from './output/build-customization-data.js'
110
112
  import {
@@ -130,9 +132,11 @@ import { TokenStore, asTokenStore } from './token/token-store.js'
130
132
  import { VerifyTokenClaimsOptions } from './token/verify-token-claims.js'
131
133
 
132
134
  export {
133
- type BrandingConfig,
135
+ type Branding,
136
+ type BrandingInput,
134
137
  type CustomMetadata,
135
138
  type Customization,
139
+ type CustomizationInput,
136
140
  type Handler,
137
141
  type HcaptchaConfig,
138
142
  Keyset,
@@ -158,7 +162,7 @@ export type RouterOptions<
158
162
  }
159
163
 
160
164
  export type OAuthProviderOptions = Override<
161
- OAuthVerifierOptions & OAuthHooks & DeviceManagerOptions & Customization,
165
+ OAuthVerifierOptions & OAuthHooks & DeviceManagerOptions & CustomizationInput,
162
166
  {
163
167
  /**
164
168
  * Maximum age a device/account session can be before requiring
@@ -1141,28 +1145,27 @@ export class OAuthProvider extends OAuthVerifier {
1141
1145
  * Wrap an OAuth endpoint in a middleware that will set the appropriate
1142
1146
  * response headers and format the response as JSON.
1143
1147
  */
1144
- const jsonHandler = <T, TReq extends Req, TRes extends Res, Json>(
1145
- buildJson: (this: T, req: TReq, res: TRes) => Awaitable<Json>,
1146
- status?: number,
1148
+ const jsonHandler = <T, TReq extends Req, TRes extends Res, Payload>(
1149
+ buildJson: (
1150
+ this: T,
1151
+ req: TReq,
1152
+ res: TRes,
1153
+ ) => Awaitable<{ payload: Payload; status?: number }>,
1147
1154
  ): Handler<T, TReq, TRes> =>
1148
1155
  async function (req, res) {
1149
- try {
1150
- // https://www.rfc-editor.org/rfc/rfc6749.html#section-5.1
1151
- res.setHeader('Cache-Control', 'no-store')
1152
- res.setHeader('Pragma', 'no-cache')
1153
-
1154
- // Ensure we can agree on a content encoding & type before starting to
1155
- // build the JSON response.
1156
- if (!negotiateContent(req, ['application/json'])) {
1157
- throw createHttpError(406, 'Unsupported media type')
1158
- }
1156
+ // https://www.rfc-editor.org/rfc/rfc6749.html#section-5.1
1157
+ res.setHeader('Cache-Control', 'no-store')
1158
+ res.setHeader('Pragma', 'no-cache')
1159
+
1160
+ // Ensure we can agree on a content encoding & type before starting to
1161
+ // build the JSON response.
1162
+ if (!negotiateContent(req, ['application/json'])) {
1163
+ throw createHttpError(406, 'Unsupported media type')
1164
+ }
1159
1165
 
1160
- const result = await buildJson.call(this, req, res)
1161
- if (result !== undefined) {
1162
- writeJson(res, result, { status })
1163
- } else if (!res.headersSent) {
1164
- res.writeHead(status ?? 204).end()
1165
- }
1166
+ try {
1167
+ const { payload, status = 200 } = await buildJson.call(this, req, res)
1168
+ writeJson(res, payload, { status })
1166
1169
  } catch (err) {
1167
1170
  onError?.(req, res, err, 'OAuth request error')
1168
1171
 
@@ -1176,13 +1179,13 @@ export class OAuthProvider extends OAuthVerifier {
1176
1179
  }
1177
1180
  }
1178
1181
 
1179
- const oauthHandler = <T, TReq extends Req, TRes extends Res, Json>(
1180
- buildOAuthResponse: (this: T, req: TReq, res: TRes) => Awaitable<Json>,
1182
+ const oauthHandler = <T, TReq extends Req, TRes extends Res, Payload>(
1183
+ buildOAuthResponse: (this: T, req: TReq, res: TRes) => Awaitable<Payload>,
1181
1184
  status?: number,
1182
1185
  ) =>
1183
1186
  combineMiddlewares([
1184
1187
  corsHeaders,
1185
- jsonHandler<T, TReq, TRes, Json>(async function (req, res) {
1188
+ jsonHandler<T, TReq, TRes, Payload>(async function (req, res) {
1186
1189
  try {
1187
1190
  // https://datatracker.ietf.org/doc/html/rfc9449#section-8.2
1188
1191
  const dpopNonce = server.nextDpopNonce()
@@ -1192,7 +1195,8 @@ export class OAuthProvider extends OAuthVerifier {
1192
1195
  res.appendHeader('Access-Control-Expose-Headers', name)
1193
1196
  }
1194
1197
 
1195
- return await buildOAuthResponse.call(this, req, res)
1198
+ const payload = await buildOAuthResponse.call(this, req, res)
1199
+ return { payload, status }
1196
1200
  } catch (err) {
1197
1201
  if (!res.headersSent && err instanceof WWWAuthenticateError) {
1198
1202
  const name = 'WWW-Authenticate'
@@ -1202,7 +1206,7 @@ export class OAuthProvider extends OAuthVerifier {
1202
1206
 
1203
1207
  throw err
1204
1208
  }
1205
- }, status),
1209
+ }),
1206
1210
  ])
1207
1211
 
1208
1212
  const apiHandler = <
@@ -1210,7 +1214,7 @@ export class OAuthProvider extends OAuthVerifier {
1210
1214
  TReq extends Req,
1211
1215
  TRes extends Res,
1212
1216
  S extends z.ZodTypeAny,
1213
- Json,
1217
+ Payload,
1214
1218
  >(
1215
1219
  inputSchema: S,
1216
1220
  buildJson: (
@@ -1219,10 +1223,10 @@ export class OAuthProvider extends OAuthVerifier {
1219
1223
  res: TRes,
1220
1224
  input: z.infer<S>,
1221
1225
  context: ApiContext,
1222
- ) => Json | Promise<Json>,
1226
+ ) => Awaitable<Payload>,
1223
1227
  status?: number,
1224
1228
  ) =>
1225
- jsonHandler<T, TReq, TRes, Json>(async function (req, res) {
1229
+ jsonHandler<T, TReq, TRes, Payload>(async function (req, res) {
1226
1230
  validateFetchMode(req, res, ['same-origin'])
1227
1231
  validateFetchSite(req, res, ['same-origin'])
1228
1232
  validateSameOrigin(req, res, issuerOrigin)
@@ -1248,12 +1252,13 @@ export class OAuthProvider extends OAuthVerifier {
1248
1252
  res,
1249
1253
  )
1250
1254
 
1251
- const payload = await parseHttpRequest(req, ['json'])
1252
- const input = await inputSchema.parseAsync(payload, { path: ['body'] })
1255
+ const inputRaw = await parseHttpRequest(req, ['json'])
1256
+ const input = await inputSchema.parseAsync(inputRaw, { path: ['body'] })
1253
1257
 
1254
1258
  const context: ApiContext = { requestUri, deviceId, deviceMetadata }
1255
- return buildJson.call(this, req, res, input, context)
1256
- }, status)
1259
+ const payload = await buildJson.call(this, req, res, input, context)
1260
+ return { payload, status }
1261
+ })
1257
1262
 
1258
1263
  const navigationHandler = <T, TReq extends Req, TRes extends Res>(
1259
1264
  handler: (this: T, req: TReq, res: TRes) => Awaitable<void>,
@@ -1474,6 +1479,8 @@ export class OAuthProvider extends OAuthVerifier {
1474
1479
  } catch (err) {
1475
1480
  onError?.(req, res, err, 'Failed to revoke token')
1476
1481
  }
1482
+
1483
+ return {}
1477
1484
  }),
1478
1485
  )
1479
1486
  router.get(
@@ -1573,7 +1580,8 @@ export class OAuthProvider extends OAuthVerifier {
1573
1580
  apiHandler(
1574
1581
  z.object({ handle: handleSchema }).strict(),
1575
1582
  async function (req, res, data) {
1576
- return server.accountManager.verifyHandleAvailability(data.handle)
1583
+ await server.accountManager.verifyHandleAvailability(data.handle)
1584
+ return { available: true }
1577
1585
  },
1578
1586
  ),
1579
1587
  )
@@ -1598,6 +1606,7 @@ export class OAuthProvider extends OAuthVerifier {
1598
1606
  resetPasswordRequestDataSchema,
1599
1607
  async function (req, res, data) {
1600
1608
  await server.accountManager.resetPasswordRequest(data)
1609
+ return { success: true }
1601
1610
  },
1602
1611
  ),
1603
1612
  )
@@ -1608,6 +1617,7 @@ export class OAuthProvider extends OAuthVerifier {
1608
1617
  resetPasswordConfirmDataSchema,
1609
1618
  async function (req, res, data) {
1610
1619
  await server.accountManager.resetPasswordConfirm(data)
1620
+ return { success: true }
1611
1621
  },
1612
1622
  ),
1613
1623
  )