@oxy.so/core 7.7.0 → 7.8.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (73) hide show
  1. package/dist/cjs/api/auth.js +1 -0
  2. package/dist/cjs/i18n/locales/ar-SA.js +3 -0
  3. package/dist/cjs/i18n/locales/bn-BD.js +3 -0
  4. package/dist/cjs/i18n/locales/ca-ES.js +3 -0
  5. package/dist/cjs/i18n/locales/de-DE.js +3 -0
  6. package/dist/cjs/i18n/locales/en-US.js +3 -0
  7. package/dist/cjs/i18n/locales/es-ES.js +3 -0
  8. package/dist/cjs/i18n/locales/fr-FR.js +3 -0
  9. package/dist/cjs/i18n/locales/hi-IN.js +3 -0
  10. package/dist/cjs/i18n/locales/id-ID.js +3 -0
  11. package/dist/cjs/i18n/locales/it-IT.js +3 -0
  12. package/dist/cjs/i18n/locales/ja-JP.js +3 -0
  13. package/dist/cjs/i18n/locales/ko-KR.js +3 -0
  14. package/dist/cjs/i18n/locales/pt-PT.js +3 -0
  15. package/dist/cjs/i18n/locales/ru-RU.js +3 -0
  16. package/dist/cjs/i18n/locales/tr-TR.js +3 -0
  17. package/dist/cjs/i18n/locales/zh-CN.js +3 -0
  18. package/dist/cjs/session/accountDialogController.js +4 -1
  19. package/dist/esm/api/auth.js +1 -0
  20. package/dist/esm/i18n/locales/ar-SA.js +3 -0
  21. package/dist/esm/i18n/locales/bn-BD.js +3 -0
  22. package/dist/esm/i18n/locales/ca-ES.js +3 -0
  23. package/dist/esm/i18n/locales/de-DE.js +3 -0
  24. package/dist/esm/i18n/locales/en-US.js +3 -0
  25. package/dist/esm/i18n/locales/es-ES.js +3 -0
  26. package/dist/esm/i18n/locales/fr-FR.js +3 -0
  27. package/dist/esm/i18n/locales/hi-IN.js +3 -0
  28. package/dist/esm/i18n/locales/id-ID.js +3 -0
  29. package/dist/esm/i18n/locales/it-IT.js +3 -0
  30. package/dist/esm/i18n/locales/ja-JP.js +3 -0
  31. package/dist/esm/i18n/locales/ko-KR.js +3 -0
  32. package/dist/esm/i18n/locales/pt-PT.js +3 -0
  33. package/dist/esm/i18n/locales/ru-RU.js +3 -0
  34. package/dist/esm/i18n/locales/tr-TR.js +3 -0
  35. package/dist/esm/i18n/locales/zh-CN.js +3 -0
  36. package/dist/esm/session/accountDialogController.js +4 -1
  37. package/dist/types/api/auth.d.ts +6 -0
  38. package/dist/types/i18n/locales/ar-SA.d.ts +3 -0
  39. package/dist/types/i18n/locales/bn-BD.d.ts +3 -0
  40. package/dist/types/i18n/locales/ca-ES.d.ts +3 -0
  41. package/dist/types/i18n/locales/de-DE.d.ts +3 -0
  42. package/dist/types/i18n/locales/en-US.d.ts +3 -0
  43. package/dist/types/i18n/locales/es-ES.d.ts +3 -0
  44. package/dist/types/i18n/locales/fr-FR.d.ts +3 -0
  45. package/dist/types/i18n/locales/hi-IN.d.ts +3 -0
  46. package/dist/types/i18n/locales/id-ID.d.ts +3 -0
  47. package/dist/types/i18n/locales/it-IT.d.ts +3 -0
  48. package/dist/types/i18n/locales/ja-JP.d.ts +3 -0
  49. package/dist/types/i18n/locales/ko-KR.d.ts +3 -0
  50. package/dist/types/i18n/locales/pt-PT.d.ts +3 -0
  51. package/dist/types/i18n/locales/ru-RU.d.ts +3 -0
  52. package/dist/types/i18n/locales/tr-TR.d.ts +3 -0
  53. package/dist/types/i18n/locales/zh-CN.d.ts +3 -0
  54. package/dist/types/session/accountDialogController.d.ts +5 -0
  55. package/package.json +1 -1
  56. package/src/api/auth.ts +8 -0
  57. package/src/i18n/locales/ar-SA.ts +3 -0
  58. package/src/i18n/locales/bn-BD.ts +3 -0
  59. package/src/i18n/locales/ca-ES.ts +3 -0
  60. package/src/i18n/locales/de-DE.ts +3 -0
  61. package/src/i18n/locales/en-US.ts +3 -0
  62. package/src/i18n/locales/es-ES.ts +3 -0
  63. package/src/i18n/locales/fr-FR.ts +3 -0
  64. package/src/i18n/locales/hi-IN.ts +3 -0
  65. package/src/i18n/locales/id-ID.ts +3 -0
  66. package/src/i18n/locales/it-IT.ts +3 -0
  67. package/src/i18n/locales/ja-JP.ts +3 -0
  68. package/src/i18n/locales/ko-KR.ts +3 -0
  69. package/src/i18n/locales/pt-PT.ts +3 -0
  70. package/src/i18n/locales/ru-RU.ts +3 -0
  71. package/src/i18n/locales/tr-TR.ts +3 -0
  72. package/src/i18n/locales/zh-CN.ts +3 -0
  73. package/src/session/accountDialogController.ts +9 -0
@@ -515,6 +515,7 @@ class AuthCommonsApi {
515
515
  sessionToken,
516
516
  authorizeCode: res.authorizeCode,
517
517
  qrPayload: res.qrPayload,
518
+ approvalUrl: res.approvalUrl,
518
519
  expiresAt: res.expiresAt ?? expiresAt,
519
520
  status: res.status,
520
521
  };
@@ -20,6 +20,9 @@ const dict = {
20
20
  caption: 'امسح باستخدام Commons لتسجيل الدخول',
21
21
  renew: 'عرض رمز جديد',
22
22
  },
23
+ device: {
24
+ codeHint: 'تأكد من أن هاتفك يعرض هذا الرمز',
25
+ },
23
26
  errors: {
24
27
  rateLimited: 'محاولات كثيرة جدًا. حاول مرة أخرى بعد {{seconds}} ث.',
25
28
  invalidCredentials: 'اسم المستخدم أو البريد الإلكتروني أو كلمة المرور غير صحيح. إذا كانت عدة حسابات تستخدم هذا البريد الإلكتروني، فسجّل الدخول باسم المستخدم.',
@@ -20,6 +20,9 @@ const dict = {
20
20
  caption: 'সাইন ইন করতে Commons দিয়ে স্ক্যান করুন',
21
21
  renew: 'নতুন কোড দেখান',
22
22
  },
23
+ device: {
24
+ codeHint: 'দেখে নিন আপনার ফোনে এই কোডটিই দেখাচ্ছে',
25
+ },
23
26
  errors: {
24
27
  rateLimited: 'অনেকবার চেষ্টা করা হয়েছে। {{seconds}} সেকেন্ড পরে আবার চেষ্টা করুন।',
25
28
  invalidCredentials: 'ইউজারনেম, ইমেইল বা পাসওয়ার্ড সঠিক নয়। এই ইমেইলে একাধিক অ্যাকাউন্ট থাকলে ইউজারনেম দিয়ে সাইন ইন করুন।',
@@ -20,6 +20,9 @@ const dict = {
20
20
  caption: 'Escaneja amb Commons per entrar',
21
21
  renew: 'Mostra un codi nou',
22
22
  },
23
+ device: {
24
+ codeHint: 'Comprova que el mòbil mostra aquest codi',
25
+ },
23
26
  errors: {
24
27
  rateLimited: 'Massa intents. Torna-ho a provar d’aquí a {{seconds}} s.',
25
28
  invalidCredentials: "El nom d'usuari, el correu o la contrasenya no són correctes. Si diversos comptes fan servir aquest correu, entra amb el nom d'usuari.",
@@ -20,6 +20,9 @@ const dict = {
20
20
  caption: 'Mit Commons scannen, um dich anzumelden',
21
21
  renew: 'Neuen Code anzeigen',
22
22
  },
23
+ device: {
24
+ codeHint: 'Prüfe, ob dein Smartphone diesen Code anzeigt',
25
+ },
23
26
  errors: {
24
27
  rateLimited: 'Zu viele Versuche. Versuche es in {{seconds}} s erneut.',
25
28
  invalidCredentials: 'Benutzername, E-Mail oder Passwort stimmen nicht. Wenn mehrere Konten diese E-Mail-Adresse nutzen, melde dich mit dem Benutzernamen an.',
@@ -171,6 +171,9 @@ const dict = {
171
171
  caption: 'Scan with Commons to sign in',
172
172
  renew: 'Show a new code',
173
173
  },
174
+ device: {
175
+ codeHint: 'Check that your phone shows this code',
176
+ },
174
177
  terms: {
175
178
  before: 'By continuing, you agree to our',
176
179
  termsLink: 'Terms of Service',
@@ -171,6 +171,9 @@ const dict = {
171
171
  caption: 'Escanea con Commons para entrar',
172
172
  renew: 'Mostrar un código nuevo',
173
173
  },
174
+ device: {
175
+ codeHint: 'Comprueba que tu móvil muestra este código',
176
+ },
174
177
  terms: {
175
178
  before: 'Al continuar, aceptas nuestros',
176
179
  termsLink: 'Términos del servicio',
@@ -20,6 +20,9 @@ const dict = {
20
20
  caption: 'Scannez avec Commons pour vous connecter',
21
21
  renew: 'Afficher un nouveau code',
22
22
  },
23
+ device: {
24
+ codeHint: 'Vérifiez que votre téléphone affiche ce code',
25
+ },
23
26
  errors: {
24
27
  rateLimited: 'Trop de tentatives. Réessayez dans {{seconds}} s.',
25
28
  invalidCredentials: "Le nom d'utilisateur, l'e-mail ou le mot de passe est incorrect. Si plusieurs comptes utilisent cet e-mail, connectez-vous avec le nom d'utilisateur.",
@@ -20,6 +20,9 @@ const dict = {
20
20
  caption: 'साइन इन करने के लिए Commons से स्कैन करें',
21
21
  renew: 'नया कोड दिखाएं',
22
22
  },
23
+ device: {
24
+ codeHint: 'जाँचें कि आपके फ़ोन पर यही कोड दिख रहा है',
25
+ },
23
26
  errors: {
24
27
  rateLimited: 'बहुत ज़्यादा कोशिशें हो गईं। {{seconds}} सेकंड बाद फिर कोशिश करें।',
25
28
  invalidCredentials: 'यूज़रनेम, ईमेल या पासवर्ड सही नहीं है। अगर इस ईमेल से कई अकाउंट जुड़े हैं, तो यूज़रनेम से साइन इन करें।',
@@ -20,6 +20,9 @@ const dict = {
20
20
  caption: 'Pindai dengan Commons untuk masuk',
21
21
  renew: 'Tampilkan kode baru',
22
22
  },
23
+ device: {
24
+ codeHint: 'Pastikan ponsel Anda menampilkan kode ini',
25
+ },
23
26
  errors: {
24
27
  rateLimited: 'Terlalu banyak percobaan. Coba lagi dalam {{seconds}} dtk.',
25
28
  invalidCredentials: 'Nama pengguna, email, atau sandi tidak benar. Jika beberapa akun menggunakan email ini, masuklah dengan nama pengguna.',
@@ -20,6 +20,9 @@ const dict = {
20
20
  caption: 'Scansiona con Commons per accedere',
21
21
  renew: 'Mostra un nuovo codice',
22
22
  },
23
+ device: {
24
+ codeHint: 'Controlla che il telefono mostri questo codice',
25
+ },
23
26
  errors: {
24
27
  rateLimited: 'Troppi tentativi. Riprova tra {{seconds}} s.',
25
28
  invalidCredentials: 'Nome utente, email o password non corretti. Se più account usano questa email, accedi con il nome utente.',
@@ -20,6 +20,9 @@ const dict = {
20
20
  caption: 'Commons でスキャンしてサインイン',
21
21
  renew: '新しいコードを表示',
22
22
  },
23
+ device: {
24
+ codeHint: 'スマートフォンに同じコードが表示されていることを確認してください',
25
+ },
23
26
  errors: {
24
27
  rateLimited: '試行回数が多すぎます。{{seconds}} 秒後にもう一度お試しください。',
25
28
  invalidCredentials: 'ユーザー名、メールアドレス、またはパスワードが正しくありません。 複数のアカウントがこのメールアドレスを使っている場合は、ユーザー名でサインインしてください。',
@@ -20,6 +20,9 @@ const dict = {
20
20
  caption: 'Commons로 스캔하여 로그인',
21
21
  renew: '새 코드 표시',
22
22
  },
23
+ device: {
24
+ codeHint: '휴대폰에 이 코드가 표시되는지 확인하세요',
25
+ },
23
26
  errors: {
24
27
  rateLimited: '시도 횟수가 너무 많습니다. {{seconds}}초 후에 다시 시도하세요.',
25
28
  invalidCredentials: '사용자 이름, 이메일 또는 비밀번호가 올바르지 않습니다. 여러 계정이 이 이메일을 사용하면 사용자 이름으로 로그인하세요.',
@@ -20,6 +20,9 @@ const dict = {
20
20
  caption: 'Lê com o Commons para entrar',
21
21
  renew: 'Mostrar um código novo',
22
22
  },
23
+ device: {
24
+ codeHint: 'Confirme que o telemóvel mostra este código',
25
+ },
23
26
  errors: {
24
27
  rateLimited: 'Demasiadas tentativas. Tenta novamente dentro de {{seconds}} s.',
25
28
  invalidCredentials: 'O nome de utilizador, o email ou a palavra-passe não estão certos. Se várias contas usam este email, entra com o nome de utilizador.',
@@ -20,6 +20,9 @@ const dict = {
20
20
  caption: 'Отсканируйте в Commons, чтобы войти',
21
21
  renew: 'Показать новый код',
22
22
  },
23
+ device: {
24
+ codeHint: 'Убедитесь, что на телефоне тот же код',
25
+ },
23
26
  errors: {
24
27
  rateLimited: 'Слишком много попыток. Повторите через {{seconds}} с.',
25
28
  invalidCredentials: 'Неверное имя пользователя, адрес почты или пароль. Если с этим адресом связано несколько аккаунтов, войдите по имени пользователя.',
@@ -20,6 +20,9 @@ const dict = {
20
20
  caption: 'Giriş yapmak için Commons ile tarayın',
21
21
  renew: 'Yeni kod göster',
22
22
  },
23
+ device: {
24
+ codeHint: 'Telefonunda bu kodun göründüğünü kontrol et',
25
+ },
23
26
  errors: {
24
27
  rateLimited: 'Çok fazla deneme yapıldı. {{seconds}} sn sonra tekrar deneyin.',
25
28
  invalidCredentials: 'Kullanıcı adı, e-posta veya şifre yanlış. Bu e-postayı birden fazla hesap kullanıyorsa kullanıcı adıyla giriş yapın.',
@@ -20,6 +20,9 @@ const dict = {
20
20
  caption: '使用 Commons 扫码登录',
21
21
  renew: '显示新的二维码',
22
22
  },
23
+ device: {
24
+ codeHint: '请确认手机上显示的是这个代码',
25
+ },
23
26
  errors: {
24
27
  rateLimited: '尝试次数过多。请在 {{seconds}} 秒后重试。',
25
28
  invalidCredentials: '用户名、邮箱或密码不正确。 如果多个账号使用此邮箱,请用用户名登录。',
@@ -108,6 +108,7 @@ const IDLE_SIGN_IN_FACTS = {
108
108
  phase: 'idle',
109
109
  authorizeCode: null,
110
110
  qrPayload: null,
111
+ approvalUrl: null,
111
112
  expiresAt: null,
112
113
  error: null,
113
114
  failure: null,
@@ -753,6 +754,7 @@ class AccountDialogController {
753
754
  phase: 'waiting',
754
755
  authorizeCode: handle.authorizeCode,
755
756
  qrPayload: handle.qrPayload,
757
+ approvalUrl: handle.approvalUrl,
756
758
  expiresAt: handle.expiresAt,
757
759
  // No route yet: the surface shows "Preparing request" until the primary
758
760
  // route is resolved below. It is never guessed in the meantime.
@@ -1249,11 +1251,12 @@ class AccountDialogController {
1249
1251
  }
1250
1252
  /** Update a subset of the device-flow facts, re-deriving `progress`. */
1251
1253
  patchSignIn(patch) {
1252
- const { phase, authorizeCode, qrPayload, expiresAt, error, failure, route, routeFailed, pushSentAt, openedAt, } = this.signIn;
1254
+ const { phase, authorizeCode, qrPayload, approvalUrl, expiresAt, error, failure, route, routeFailed, pushSentAt, openedAt, } = this.signIn;
1253
1255
  this.setSignIn({
1254
1256
  phase,
1255
1257
  authorizeCode,
1256
1258
  qrPayload,
1259
+ approvalUrl,
1257
1260
  expiresAt,
1258
1261
  error,
1259
1262
  failure,
@@ -475,6 +475,7 @@ export class AuthCommonsApi {
475
475
  sessionToken,
476
476
  authorizeCode: res.authorizeCode,
477
477
  qrPayload: res.qrPayload,
478
+ approvalUrl: res.approvalUrl,
478
479
  expiresAt: res.expiresAt ?? expiresAt,
479
480
  status: res.status,
480
481
  };
@@ -18,6 +18,9 @@ const dict = {
18
18
  caption: 'امسح باستخدام Commons لتسجيل الدخول',
19
19
  renew: 'عرض رمز جديد',
20
20
  },
21
+ device: {
22
+ codeHint: 'تأكد من أن هاتفك يعرض هذا الرمز',
23
+ },
21
24
  errors: {
22
25
  rateLimited: 'محاولات كثيرة جدًا. حاول مرة أخرى بعد {{seconds}} ث.',
23
26
  invalidCredentials: 'اسم المستخدم أو البريد الإلكتروني أو كلمة المرور غير صحيح. إذا كانت عدة حسابات تستخدم هذا البريد الإلكتروني، فسجّل الدخول باسم المستخدم.',
@@ -18,6 +18,9 @@ const dict = {
18
18
  caption: 'সাইন ইন করতে Commons দিয়ে স্ক্যান করুন',
19
19
  renew: 'নতুন কোড দেখান',
20
20
  },
21
+ device: {
22
+ codeHint: 'দেখে নিন আপনার ফোনে এই কোডটিই দেখাচ্ছে',
23
+ },
21
24
  errors: {
22
25
  rateLimited: 'অনেকবার চেষ্টা করা হয়েছে। {{seconds}} সেকেন্ড পরে আবার চেষ্টা করুন।',
23
26
  invalidCredentials: 'ইউজারনেম, ইমেইল বা পাসওয়ার্ড সঠিক নয়। এই ইমেইলে একাধিক অ্যাকাউন্ট থাকলে ইউজারনেম দিয়ে সাইন ইন করুন।',
@@ -18,6 +18,9 @@ const dict = {
18
18
  caption: 'Escaneja amb Commons per entrar',
19
19
  renew: 'Mostra un codi nou',
20
20
  },
21
+ device: {
22
+ codeHint: 'Comprova que el mòbil mostra aquest codi',
23
+ },
21
24
  errors: {
22
25
  rateLimited: 'Massa intents. Torna-ho a provar d’aquí a {{seconds}} s.',
23
26
  invalidCredentials: "El nom d'usuari, el correu o la contrasenya no són correctes. Si diversos comptes fan servir aquest correu, entra amb el nom d'usuari.",
@@ -18,6 +18,9 @@ const dict = {
18
18
  caption: 'Mit Commons scannen, um dich anzumelden',
19
19
  renew: 'Neuen Code anzeigen',
20
20
  },
21
+ device: {
22
+ codeHint: 'Prüfe, ob dein Smartphone diesen Code anzeigt',
23
+ },
21
24
  errors: {
22
25
  rateLimited: 'Zu viele Versuche. Versuche es in {{seconds}} s erneut.',
23
26
  invalidCredentials: 'Benutzername, E-Mail oder Passwort stimmen nicht. Wenn mehrere Konten diese E-Mail-Adresse nutzen, melde dich mit dem Benutzernamen an.',
@@ -169,6 +169,9 @@ const dict = {
169
169
  caption: 'Scan with Commons to sign in',
170
170
  renew: 'Show a new code',
171
171
  },
172
+ device: {
173
+ codeHint: 'Check that your phone shows this code',
174
+ },
172
175
  terms: {
173
176
  before: 'By continuing, you agree to our',
174
177
  termsLink: 'Terms of Service',
@@ -169,6 +169,9 @@ const dict = {
169
169
  caption: 'Escanea con Commons para entrar',
170
170
  renew: 'Mostrar un código nuevo',
171
171
  },
172
+ device: {
173
+ codeHint: 'Comprueba que tu móvil muestra este código',
174
+ },
172
175
  terms: {
173
176
  before: 'Al continuar, aceptas nuestros',
174
177
  termsLink: 'Términos del servicio',
@@ -18,6 +18,9 @@ const dict = {
18
18
  caption: 'Scannez avec Commons pour vous connecter',
19
19
  renew: 'Afficher un nouveau code',
20
20
  },
21
+ device: {
22
+ codeHint: 'Vérifiez que votre téléphone affiche ce code',
23
+ },
21
24
  errors: {
22
25
  rateLimited: 'Trop de tentatives. Réessayez dans {{seconds}} s.',
23
26
  invalidCredentials: "Le nom d'utilisateur, l'e-mail ou le mot de passe est incorrect. Si plusieurs comptes utilisent cet e-mail, connectez-vous avec le nom d'utilisateur.",
@@ -18,6 +18,9 @@ const dict = {
18
18
  caption: 'साइन इन करने के लिए Commons से स्कैन करें',
19
19
  renew: 'नया कोड दिखाएं',
20
20
  },
21
+ device: {
22
+ codeHint: 'जाँचें कि आपके फ़ोन पर यही कोड दिख रहा है',
23
+ },
21
24
  errors: {
22
25
  rateLimited: 'बहुत ज़्यादा कोशिशें हो गईं। {{seconds}} सेकंड बाद फिर कोशिश करें।',
23
26
  invalidCredentials: 'यूज़रनेम, ईमेल या पासवर्ड सही नहीं है। अगर इस ईमेल से कई अकाउंट जुड़े हैं, तो यूज़रनेम से साइन इन करें।',
@@ -18,6 +18,9 @@ const dict = {
18
18
  caption: 'Pindai dengan Commons untuk masuk',
19
19
  renew: 'Tampilkan kode baru',
20
20
  },
21
+ device: {
22
+ codeHint: 'Pastikan ponsel Anda menampilkan kode ini',
23
+ },
21
24
  errors: {
22
25
  rateLimited: 'Terlalu banyak percobaan. Coba lagi dalam {{seconds}} dtk.',
23
26
  invalidCredentials: 'Nama pengguna, email, atau sandi tidak benar. Jika beberapa akun menggunakan email ini, masuklah dengan nama pengguna.',
@@ -18,6 +18,9 @@ const dict = {
18
18
  caption: 'Scansiona con Commons per accedere',
19
19
  renew: 'Mostra un nuovo codice',
20
20
  },
21
+ device: {
22
+ codeHint: 'Controlla che il telefono mostri questo codice',
23
+ },
21
24
  errors: {
22
25
  rateLimited: 'Troppi tentativi. Riprova tra {{seconds}} s.',
23
26
  invalidCredentials: 'Nome utente, email o password non corretti. Se più account usano questa email, accedi con il nome utente.',
@@ -18,6 +18,9 @@ const dict = {
18
18
  caption: 'Commons でスキャンしてサインイン',
19
19
  renew: '新しいコードを表示',
20
20
  },
21
+ device: {
22
+ codeHint: 'スマートフォンに同じコードが表示されていることを確認してください',
23
+ },
21
24
  errors: {
22
25
  rateLimited: '試行回数が多すぎます。{{seconds}} 秒後にもう一度お試しください。',
23
26
  invalidCredentials: 'ユーザー名、メールアドレス、またはパスワードが正しくありません。 複数のアカウントがこのメールアドレスを使っている場合は、ユーザー名でサインインしてください。',
@@ -18,6 +18,9 @@ const dict = {
18
18
  caption: 'Commons로 스캔하여 로그인',
19
19
  renew: '새 코드 표시',
20
20
  },
21
+ device: {
22
+ codeHint: '휴대폰에 이 코드가 표시되는지 확인하세요',
23
+ },
21
24
  errors: {
22
25
  rateLimited: '시도 횟수가 너무 많습니다. {{seconds}}초 후에 다시 시도하세요.',
23
26
  invalidCredentials: '사용자 이름, 이메일 또는 비밀번호가 올바르지 않습니다. 여러 계정이 이 이메일을 사용하면 사용자 이름으로 로그인하세요.',
@@ -18,6 +18,9 @@ const dict = {
18
18
  caption: 'Lê com o Commons para entrar',
19
19
  renew: 'Mostrar um código novo',
20
20
  },
21
+ device: {
22
+ codeHint: 'Confirme que o telemóvel mostra este código',
23
+ },
21
24
  errors: {
22
25
  rateLimited: 'Demasiadas tentativas. Tenta novamente dentro de {{seconds}} s.',
23
26
  invalidCredentials: 'O nome de utilizador, o email ou a palavra-passe não estão certos. Se várias contas usam este email, entra com o nome de utilizador.',
@@ -18,6 +18,9 @@ const dict = {
18
18
  caption: 'Отсканируйте в Commons, чтобы войти',
19
19
  renew: 'Показать новый код',
20
20
  },
21
+ device: {
22
+ codeHint: 'Убедитесь, что на телефоне тот же код',
23
+ },
21
24
  errors: {
22
25
  rateLimited: 'Слишком много попыток. Повторите через {{seconds}} с.',
23
26
  invalidCredentials: 'Неверное имя пользователя, адрес почты или пароль. Если с этим адресом связано несколько аккаунтов, войдите по имени пользователя.',
@@ -18,6 +18,9 @@ const dict = {
18
18
  caption: 'Giriş yapmak için Commons ile tarayın',
19
19
  renew: 'Yeni kod göster',
20
20
  },
21
+ device: {
22
+ codeHint: 'Telefonunda bu kodun göründüğünü kontrol et',
23
+ },
21
24
  errors: {
22
25
  rateLimited: 'Çok fazla deneme yapıldı. {{seconds}} sn sonra tekrar deneyin.',
23
26
  invalidCredentials: 'Kullanıcı adı, e-posta veya şifre yanlış. Bu e-postayı birden fazla hesap kullanıyorsa kullanıcı adıyla giriş yapın.',
@@ -18,6 +18,9 @@ const dict = {
18
18
  caption: '使用 Commons 扫码登录',
19
19
  renew: '显示新的二维码',
20
20
  },
21
+ device: {
22
+ codeHint: '请确认手机上显示的是这个代码',
23
+ },
21
24
  errors: {
22
25
  rateLimited: '尝试次数过多。请在 {{seconds}} 秒后重试。',
23
26
  invalidCredentials: '用户名、邮箱或密码不正确。 如果多个账号使用此邮箱,请用用户名登录。',
@@ -103,6 +103,7 @@ const IDLE_SIGN_IN_FACTS = {
103
103
  phase: 'idle',
104
104
  authorizeCode: null,
105
105
  qrPayload: null,
106
+ approvalUrl: null,
106
107
  expiresAt: null,
107
108
  error: null,
108
109
  failure: null,
@@ -748,6 +749,7 @@ export class AccountDialogController {
748
749
  phase: 'waiting',
749
750
  authorizeCode: handle.authorizeCode,
750
751
  qrPayload: handle.qrPayload,
752
+ approvalUrl: handle.approvalUrl,
751
753
  expiresAt: handle.expiresAt,
752
754
  // No route yet: the surface shows "Preparing request" until the primary
753
755
  // route is resolved below. It is never guessed in the meantime.
@@ -1244,11 +1246,12 @@ export class AccountDialogController {
1244
1246
  }
1245
1247
  /** Update a subset of the device-flow facts, re-deriving `progress`. */
1246
1248
  patchSignIn(patch) {
1247
- const { phase, authorizeCode, qrPayload, expiresAt, error, failure, route, routeFailed, pushSentAt, openedAt, } = this.signIn;
1249
+ const { phase, authorizeCode, qrPayload, approvalUrl, expiresAt, error, failure, route, routeFailed, pushSentAt, openedAt, } = this.signIn;
1248
1250
  this.setSignIn({
1249
1251
  phase,
1250
1252
  authorizeCode,
1251
1253
  qrPayload,
1254
+ approvalUrl,
1252
1255
  expiresAt,
1253
1256
  error,
1254
1257
  failure,
@@ -148,6 +148,12 @@ export interface CommonsSignInHandle {
148
148
  authorizeCode: string;
149
149
  /** Ready-to-render deep-link / universal-link string (`oxycommons://approve?...`). */
150
150
  qrPayload: string;
151
+ /**
152
+ * The same request as the IdP's https approval page
153
+ * (`https://auth.oxy.so/device?user_code=…`): what a device with no keyboard
154
+ * shows as its QR, since any phone camera opens it, with or without Commons.
155
+ */
156
+ approvalUrl: string;
151
157
  /** Server-authoritative expiry (epoch milliseconds). */
152
158
  expiresAt: number;
153
159
  /** Session lifecycle status as reported by the server (e.g. `'pending'`). */
@@ -18,6 +18,9 @@ declare const dict: {
18
18
  caption: string;
19
19
  renew: string;
20
20
  };
21
+ device: {
22
+ codeHint: string;
23
+ };
21
24
  errors: {
22
25
  rateLimited: string;
23
26
  invalidCredentials: string;
@@ -18,6 +18,9 @@ declare const dict: {
18
18
  caption: string;
19
19
  renew: string;
20
20
  };
21
+ device: {
22
+ codeHint: string;
23
+ };
21
24
  errors: {
22
25
  rateLimited: string;
23
26
  invalidCredentials: string;
@@ -18,6 +18,9 @@ declare const dict: {
18
18
  caption: string;
19
19
  renew: string;
20
20
  };
21
+ device: {
22
+ codeHint: string;
23
+ };
21
24
  errors: {
22
25
  rateLimited: string;
23
26
  invalidCredentials: string;
@@ -18,6 +18,9 @@ declare const dict: {
18
18
  caption: string;
19
19
  renew: string;
20
20
  };
21
+ device: {
22
+ codeHint: string;
23
+ };
21
24
  errors: {
22
25
  rateLimited: string;
23
26
  invalidCredentials: string;
@@ -169,6 +169,9 @@ declare const dict: {
169
169
  caption: string;
170
170
  renew: string;
171
171
  };
172
+ device: {
173
+ codeHint: string;
174
+ };
172
175
  terms: {
173
176
  before: string;
174
177
  termsLink: string;
@@ -169,6 +169,9 @@ declare const dict: {
169
169
  caption: string;
170
170
  renew: string;
171
171
  };
172
+ device: {
173
+ codeHint: string;
174
+ };
172
175
  terms: {
173
176
  before: string;
174
177
  termsLink: string;
@@ -18,6 +18,9 @@ declare const dict: {
18
18
  caption: string;
19
19
  renew: string;
20
20
  };
21
+ device: {
22
+ codeHint: string;
23
+ };
21
24
  errors: {
22
25
  rateLimited: string;
23
26
  invalidCredentials: string;
@@ -18,6 +18,9 @@ declare const dict: {
18
18
  caption: string;
19
19
  renew: string;
20
20
  };
21
+ device: {
22
+ codeHint: string;
23
+ };
21
24
  errors: {
22
25
  rateLimited: string;
23
26
  invalidCredentials: string;
@@ -18,6 +18,9 @@ declare const dict: {
18
18
  caption: string;
19
19
  renew: string;
20
20
  };
21
+ device: {
22
+ codeHint: string;
23
+ };
21
24
  errors: {
22
25
  rateLimited: string;
23
26
  invalidCredentials: string;
@@ -18,6 +18,9 @@ declare const dict: {
18
18
  caption: string;
19
19
  renew: string;
20
20
  };
21
+ device: {
22
+ codeHint: string;
23
+ };
21
24
  errors: {
22
25
  rateLimited: string;
23
26
  invalidCredentials: string;
@@ -18,6 +18,9 @@ declare const dict: {
18
18
  caption: string;
19
19
  renew: string;
20
20
  };
21
+ device: {
22
+ codeHint: string;
23
+ };
21
24
  errors: {
22
25
  rateLimited: string;
23
26
  invalidCredentials: string;
@@ -18,6 +18,9 @@ declare const dict: {
18
18
  caption: string;
19
19
  renew: string;
20
20
  };
21
+ device: {
22
+ codeHint: string;
23
+ };
21
24
  errors: {
22
25
  rateLimited: string;
23
26
  invalidCredentials: string;
@@ -18,6 +18,9 @@ declare const dict: {
18
18
  caption: string;
19
19
  renew: string;
20
20
  };
21
+ device: {
22
+ codeHint: string;
23
+ };
21
24
  errors: {
22
25
  rateLimited: string;
23
26
  invalidCredentials: string;
@@ -18,6 +18,9 @@ declare const dict: {
18
18
  caption: string;
19
19
  renew: string;
20
20
  };
21
+ device: {
22
+ codeHint: string;
23
+ };
21
24
  errors: {
22
25
  rateLimited: string;
23
26
  invalidCredentials: string;
@@ -18,6 +18,9 @@ declare const dict: {
18
18
  caption: string;
19
19
  renew: string;
20
20
  };
21
+ device: {
22
+ codeHint: string;
23
+ };
21
24
  errors: {
22
25
  rateLimited: string;
23
26
  invalidCredentials: string;
@@ -18,6 +18,9 @@ declare const dict: {
18
18
  caption: string;
19
19
  renew: string;
20
20
  };
21
+ device: {
22
+ codeHint: string;
23
+ };
21
24
  errors: {
22
25
  rateLimited: string;
23
26
  invalidCredentials: string;
@@ -137,6 +137,11 @@ export interface SignInFlowState {
137
137
  * as a QR (cross-device) and open as a deep link (same-device), or `null`.
138
138
  */
139
139
  qrPayload: string | null;
140
+ /**
141
+ * The request's https approval page (`https://auth.oxy.so/device?user_code=…`),
142
+ * or `null`: the QR a device with no keyboard shows, for any phone camera.
143
+ */
144
+ approvalUrl: string | null;
140
145
  /** Server-authoritative expiry (epoch ms), or `null`. */
141
146
  expiresAt: number | null;
142
147
  /**
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@oxy.so/core",
3
- "version": "7.7.0",
3
+ "version": "7.8.1",
4
4
  "description": "OxyHQ SDK Foundation — API client, authentication, cryptographic identity, and shared utilities",
5
5
  "main": "dist/cjs/index.js",
6
6
  "module": "dist/esm/index.js",
package/src/api/auth.ts CHANGED
@@ -218,6 +218,12 @@ export interface CommonsSignInHandle {
218
218
  authorizeCode: string;
219
219
  /** Ready-to-render deep-link / universal-link string (`oxycommons://approve?...`). */
220
220
  qrPayload: string;
221
+ /**
222
+ * The same request as the IdP's https approval page
223
+ * (`https://auth.oxy.so/device?user_code=…`): what a device with no keyboard
224
+ * shows as its QR, since any phone camera opens it, with or without Commons.
225
+ */
226
+ approvalUrl: string;
221
227
  /** Server-authoritative expiry (epoch milliseconds). */
222
228
  expiresAt: number;
223
229
  /** Session lifecycle status as reported by the server (e.g. `'pending'`). */
@@ -453,6 +459,7 @@ export interface CommonsOAuthFinalizeResult {
453
459
  interface CommonsSessionCreateResponse {
454
460
  authorizeCode: string;
455
461
  qrPayload: string;
462
+ approvalUrl: string;
456
463
  status: string;
457
464
  /** Optional server-authoritative expiry; falls back to the client-proposed value. */
458
465
  expiresAt?: number;
@@ -999,6 +1006,7 @@ export class AuthCommonsApi {
999
1006
  sessionToken,
1000
1007
  authorizeCode: res.authorizeCode,
1001
1008
  qrPayload: res.qrPayload,
1009
+ approvalUrl: res.approvalUrl,
1002
1010
  expiresAt: res.expiresAt ?? expiresAt,
1003
1011
  status: res.status,
1004
1012
  };
@@ -18,6 +18,9 @@ const dict = {
18
18
  caption: 'امسح باستخدام Commons لتسجيل الدخول',
19
19
  renew: 'عرض رمز جديد',
20
20
  },
21
+ device: {
22
+ codeHint: 'تأكد من أن هاتفك يعرض هذا الرمز',
23
+ },
21
24
  errors: {
22
25
  rateLimited: 'محاولات كثيرة جدًا. حاول مرة أخرى بعد {{seconds}} ث.',
23
26
  invalidCredentials:
@@ -18,6 +18,9 @@ const dict = {
18
18
  caption: 'সাইন ইন করতে Commons দিয়ে স্ক্যান করুন',
19
19
  renew: 'নতুন কোড দেখান',
20
20
  },
21
+ device: {
22
+ codeHint: 'দেখে নিন আপনার ফোনে এই কোডটিই দেখাচ্ছে',
23
+ },
21
24
  errors: {
22
25
  rateLimited: 'অনেকবার চেষ্টা করা হয়েছে। {{seconds}} সেকেন্ড পরে আবার চেষ্টা করুন।',
23
26
  invalidCredentials:
@@ -18,6 +18,9 @@ const dict = {
18
18
  caption: 'Escaneja amb Commons per entrar',
19
19
  renew: 'Mostra un codi nou',
20
20
  },
21
+ device: {
22
+ codeHint: 'Comprova que el mòbil mostra aquest codi',
23
+ },
21
24
  errors: {
22
25
  rateLimited: 'Massa intents. Torna-ho a provar d’aquí a {{seconds}} s.',
23
26
  invalidCredentials:
@@ -18,6 +18,9 @@ const dict = {
18
18
  caption: 'Mit Commons scannen, um dich anzumelden',
19
19
  renew: 'Neuen Code anzeigen',
20
20
  },
21
+ device: {
22
+ codeHint: 'Prüfe, ob dein Smartphone diesen Code anzeigt',
23
+ },
21
24
  errors: {
22
25
  rateLimited: 'Zu viele Versuche. Versuche es in {{seconds}} s erneut.',
23
26
  invalidCredentials:
@@ -190,6 +190,9 @@ const dict = {
190
190
  caption: 'Scan with Commons to sign in',
191
191
  renew: 'Show a new code',
192
192
  },
193
+ device: {
194
+ codeHint: 'Check that your phone shows this code',
195
+ },
193
196
  terms: {
194
197
  before: 'By continuing, you agree to our',
195
198
  termsLink: 'Terms of Service',
@@ -191,6 +191,9 @@ const dict = {
191
191
  caption: 'Escanea con Commons para entrar',
192
192
  renew: 'Mostrar un código nuevo',
193
193
  },
194
+ device: {
195
+ codeHint: 'Comprueba que tu móvil muestra este código',
196
+ },
194
197
  terms: {
195
198
  before: 'Al continuar, aceptas nuestros',
196
199
  termsLink: 'Términos del servicio',
@@ -18,6 +18,9 @@ const dict = {
18
18
  caption: 'Scannez avec Commons pour vous connecter',
19
19
  renew: 'Afficher un nouveau code',
20
20
  },
21
+ device: {
22
+ codeHint: 'Vérifiez que votre téléphone affiche ce code',
23
+ },
21
24
  errors: {
22
25
  rateLimited: 'Trop de tentatives. Réessayez dans {{seconds}} s.',
23
26
  invalidCredentials:
@@ -18,6 +18,9 @@ const dict = {
18
18
  caption: 'साइन इन करने के लिए Commons से स्कैन करें',
19
19
  renew: 'नया कोड दिखाएं',
20
20
  },
21
+ device: {
22
+ codeHint: 'जाँचें कि आपके फ़ोन पर यही कोड दिख रहा है',
23
+ },
21
24
  errors: {
22
25
  rateLimited: 'बहुत ज़्यादा कोशिशें हो गईं। {{seconds}} सेकंड बाद फिर कोशिश करें।',
23
26
  invalidCredentials:
@@ -18,6 +18,9 @@ const dict = {
18
18
  caption: 'Pindai dengan Commons untuk masuk',
19
19
  renew: 'Tampilkan kode baru',
20
20
  },
21
+ device: {
22
+ codeHint: 'Pastikan ponsel Anda menampilkan kode ini',
23
+ },
21
24
  errors: {
22
25
  rateLimited: 'Terlalu banyak percobaan. Coba lagi dalam {{seconds}} dtk.',
23
26
  invalidCredentials:
@@ -18,6 +18,9 @@ const dict = {
18
18
  caption: 'Scansiona con Commons per accedere',
19
19
  renew: 'Mostra un nuovo codice',
20
20
  },
21
+ device: {
22
+ codeHint: 'Controlla che il telefono mostri questo codice',
23
+ },
21
24
  errors: {
22
25
  rateLimited: 'Troppi tentativi. Riprova tra {{seconds}} s.',
23
26
  invalidCredentials:
@@ -18,6 +18,9 @@ const dict = {
18
18
  caption: 'Commons でスキャンしてサインイン',
19
19
  renew: '新しいコードを表示',
20
20
  },
21
+ device: {
22
+ codeHint: 'スマートフォンに同じコードが表示されていることを確認してください',
23
+ },
21
24
  errors: {
22
25
  rateLimited: '試行回数が多すぎます。{{seconds}} 秒後にもう一度お試しください。',
23
26
  invalidCredentials:
@@ -18,6 +18,9 @@ const dict = {
18
18
  caption: 'Commons로 스캔하여 로그인',
19
19
  renew: '새 코드 표시',
20
20
  },
21
+ device: {
22
+ codeHint: '휴대폰에 이 코드가 표시되는지 확인하세요',
23
+ },
21
24
  errors: {
22
25
  rateLimited: '시도 횟수가 너무 많습니다. {{seconds}}초 후에 다시 시도하세요.',
23
26
  invalidCredentials:
@@ -18,6 +18,9 @@ const dict = {
18
18
  caption: 'Lê com o Commons para entrar',
19
19
  renew: 'Mostrar um código novo',
20
20
  },
21
+ device: {
22
+ codeHint: 'Confirme que o telemóvel mostra este código',
23
+ },
21
24
  errors: {
22
25
  rateLimited: 'Demasiadas tentativas. Tenta novamente dentro de {{seconds}} s.',
23
26
  invalidCredentials:
@@ -18,6 +18,9 @@ const dict = {
18
18
  caption: 'Отсканируйте в Commons, чтобы войти',
19
19
  renew: 'Показать новый код',
20
20
  },
21
+ device: {
22
+ codeHint: 'Убедитесь, что на телефоне тот же код',
23
+ },
21
24
  errors: {
22
25
  rateLimited: 'Слишком много попыток. Повторите через {{seconds}} с.',
23
26
  invalidCredentials:
@@ -18,6 +18,9 @@ const dict = {
18
18
  caption: 'Giriş yapmak için Commons ile tarayın',
19
19
  renew: 'Yeni kod göster',
20
20
  },
21
+ device: {
22
+ codeHint: 'Telefonunda bu kodun göründüğünü kontrol et',
23
+ },
21
24
  errors: {
22
25
  rateLimited: 'Çok fazla deneme yapıldı. {{seconds}} sn sonra tekrar deneyin.',
23
26
  invalidCredentials:
@@ -18,6 +18,9 @@ const dict = {
18
18
  caption: '使用 Commons 扫码登录',
19
19
  renew: '显示新的二维码',
20
20
  },
21
+ device: {
22
+ codeHint: '请确认手机上显示的是这个代码',
23
+ },
21
24
  errors: {
22
25
  rateLimited: '尝试次数过多。请在 {{seconds}} 秒后重试。',
23
26
  invalidCredentials: '用户名、邮箱或密码不正确。 如果多个账号使用此邮箱,请用用户名登录。',
@@ -173,6 +173,11 @@ export interface SignInFlowState {
173
173
  * as a QR (cross-device) and open as a deep link (same-device), or `null`.
174
174
  */
175
175
  qrPayload: string | null;
176
+ /**
177
+ * The request's https approval page (`https://auth.oxy.so/device?user_code=…`),
178
+ * or `null`: the QR a device with no keyboard shows, for any phone camera.
179
+ */
180
+ approvalUrl: string | null;
176
181
  /** Server-authoritative expiry (epoch ms), or `null`. */
177
182
  expiresAt: number | null;
178
183
  /**
@@ -442,6 +447,7 @@ const IDLE_SIGN_IN_FACTS: SignInFlowFacts = {
442
447
  phase: 'idle',
443
448
  authorizeCode: null,
444
449
  qrPayload: null,
450
+ approvalUrl: null,
445
451
  expiresAt: null,
446
452
  error: null,
447
453
  failure: null,
@@ -1166,6 +1172,7 @@ export class AccountDialogController {
1166
1172
  phase: 'waiting',
1167
1173
  authorizeCode: handle.authorizeCode,
1168
1174
  qrPayload: handle.qrPayload,
1175
+ approvalUrl: handle.approvalUrl,
1169
1176
  expiresAt: handle.expiresAt,
1170
1177
  // No route yet: the surface shows "Preparing request" until the primary
1171
1178
  // route is resolved below. It is never guessed in the meantime.
@@ -1723,6 +1730,7 @@ export class AccountDialogController {
1723
1730
  phase,
1724
1731
  authorizeCode,
1725
1732
  qrPayload,
1733
+ approvalUrl,
1726
1734
  expiresAt,
1727
1735
  error,
1728
1736
  failure,
@@ -1735,6 +1743,7 @@ export class AccountDialogController {
1735
1743
  phase,
1736
1744
  authorizeCode,
1737
1745
  qrPayload,
1746
+ approvalUrl,
1738
1747
  expiresAt,
1739
1748
  error,
1740
1749
  failure,