@atlasauth/js 0.23.1 → 0.25.0

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 (102) hide show
  1. package/CHANGELOG.md +13 -1
  2. package/dist/app-launcher.d.ts +11 -0
  3. package/dist/app-launcher.js +12 -0
  4. package/dist/app-launcher.js.map +1 -0
  5. package/dist/attempt.d.ts +52 -1
  6. package/dist/attempt.js +2 -0
  7. package/dist/attempt.js.map +1 -1
  8. package/dist/attestation.d.ts +52 -0
  9. package/dist/attestation.js +48 -0
  10. package/dist/attestation.js.map +1 -0
  11. package/dist/authorized-apps.d.ts +42 -0
  12. package/dist/authorized-apps.js +41 -0
  13. package/dist/authorized-apps.js.map +1 -0
  14. package/dist/compat.d.ts +1 -0
  15. package/dist/compat.js +5 -1
  16. package/dist/compat.js.map +1 -1
  17. package/dist/connect.d.ts +6 -0
  18. package/dist/connect.js +22 -0
  19. package/dist/connect.js.map +1 -1
  20. package/dist/connections.d.ts +161 -0
  21. package/dist/connections.js +117 -0
  22. package/dist/connections.js.map +1 -0
  23. package/dist/credentials.d.ts +47 -0
  24. package/dist/credentials.js +95 -0
  25. package/dist/credentials.js.map +1 -0
  26. package/dist/custom-challenge.d.ts +13 -0
  27. package/dist/custom-challenge.js +27 -0
  28. package/dist/custom-challenge.js.map +1 -0
  29. package/dist/delegated-ui.d.ts +93 -0
  30. package/dist/delegated-ui.js +62 -0
  31. package/dist/delegated-ui.js.map +1 -0
  32. package/dist/dev-browser.d.ts +9 -0
  33. package/dist/dev-browser.js +21 -1
  34. package/dist/dev-browser.js.map +1 -1
  35. package/dist/device-key.d.ts +65 -0
  36. package/dist/device-key.js +64 -0
  37. package/dist/device-key.js.map +1 -0
  38. package/dist/email-addresses.d.ts +24 -0
  39. package/dist/email-addresses.js +36 -0
  40. package/dist/email-addresses.js.map +1 -0
  41. package/dist/environment.d.ts +8 -0
  42. package/dist/environment.js +6 -0
  43. package/dist/environment.js.map +1 -1
  44. package/dist/external-passkeys.d.ts +34 -0
  45. package/dist/external-passkeys.js +31 -0
  46. package/dist/external-passkeys.js.map +1 -0
  47. package/dist/fapi.d.ts +36 -0
  48. package/dist/fapi.js +75 -4
  49. package/dist/fapi.js.map +1 -1
  50. package/dist/identity-verification.d.ts +40 -0
  51. package/dist/identity-verification.js +40 -0
  52. package/dist/identity-verification.js.map +1 -0
  53. package/dist/iga.d.ts +118 -0
  54. package/dist/iga.js +60 -0
  55. package/dist/iga.js.map +1 -0
  56. package/dist/index.d.ts +21 -1
  57. package/dist/index.js +31 -1
  58. package/dist/index.js.map +1 -1
  59. package/dist/journey-redirect.d.ts +8 -0
  60. package/dist/journey-redirect.js +32 -0
  61. package/dist/journey-redirect.js.map +1 -0
  62. package/dist/marketing.d.ts +81 -0
  63. package/dist/marketing.js +162 -0
  64. package/dist/marketing.js.map +1 -0
  65. package/dist/mfa-enrollment.d.ts +2 -0
  66. package/dist/mfa-enrollment.js +1 -0
  67. package/dist/mfa-enrollment.js.map +1 -1
  68. package/dist/mfa-factors.d.ts +109 -0
  69. package/dist/mfa-factors.js +98 -0
  70. package/dist/mfa-factors.js.map +1 -0
  71. package/dist/migration-browser-sessions.d.ts +118 -0
  72. package/dist/migration-browser-sessions.js +404 -0
  73. package/dist/migration-browser-sessions.js.map +1 -0
  74. package/dist/organization-admin.d.ts +192 -0
  75. package/dist/organization-admin.js +53 -0
  76. package/dist/organization-admin.js.map +1 -0
  77. package/dist/passkey.d.ts +71 -2
  78. package/dist/passkey.js +97 -0
  79. package/dist/passkey.js.map +1 -1
  80. package/dist/password-reset.d.ts +16 -1
  81. package/dist/password-reset.js +19 -4
  82. package/dist/password-reset.js.map +1 -1
  83. package/dist/pricing.d.ts +80 -0
  84. package/dist/pricing.js +71 -0
  85. package/dist/pricing.js.map +1 -0
  86. package/dist/profile.d.ts +73 -1
  87. package/dist/profile.js +23 -0
  88. package/dist/profile.js.map +1 -1
  89. package/dist/redirect.js +1 -1
  90. package/dist/redirect.js.map +1 -1
  91. package/dist/srp.d.ts +55 -0
  92. package/dist/srp.js +120 -0
  93. package/dist/srp.js.map +1 -0
  94. package/dist/telegram.d.ts +23 -0
  95. package/dist/telegram.js +8 -0
  96. package/dist/telegram.js.map +1 -1
  97. package/dist/uma.d.ts +86 -0
  98. package/dist/uma.js +73 -0
  99. package/dist/uma.js.map +1 -0
  100. package/dist/version.d.ts +1 -1
  101. package/dist/version.js +1 -1
  102. package/package.json +2 -2
@@ -0,0 +1,80 @@
1
+ import type { FapiClient } from './fapi';
2
+ /**
3
+ * Plans and pricing for the framework-agnostic `<PricingTable>`s (React, Vue,
4
+ * embed): list the instance's public plans, work out what to SHOW for each
5
+ * (locale-formatted price, annual vs monthly, trial, struck-through promotion
6
+ * price) and start a provider Checkout. Pure display logic lives in
7
+ * {@link planPriceView} so every SDK renders the same numbers.
8
+ */
9
+ /** A plan's display-only promotion. It never changes the charge; the code is applied at checkout. */
10
+ export interface PlanPromotionView {
11
+ label: string;
12
+ percent_off?: number;
13
+ /** Minor units (cents). */
14
+ amount_off?: number;
15
+ /** Epoch ms. */
16
+ ends_at?: number;
17
+ code?: string;
18
+ }
19
+ export interface PublicBillingPlan {
20
+ object: 'billing_plan';
21
+ id: string;
22
+ name: string;
23
+ slug: string;
24
+ interval: string;
25
+ /** Smallest currency unit, as a string or number (the API sends the stored string). */
26
+ amount: number | string | null;
27
+ currency: string;
28
+ features: string[];
29
+ audience: 'user' | 'org';
30
+ kind?: 'base' | 'addon';
31
+ trial_days?: number | null;
32
+ annual_available?: boolean;
33
+ annual_amount?: number | string | null;
34
+ promotion?: PlanPromotionView | null;
35
+ provider?: string;
36
+ }
37
+ /** What to render for one plan at one billing interval. */
38
+ export interface PlanPriceView {
39
+ /** The price now, formatted for the locale (after any promotion). */
40
+ price: string;
41
+ /** The undiscounted price, formatted - present only when a promotion lowers it. */
42
+ originalPrice?: string;
43
+ interval: 'month' | 'year';
44
+ /** "Free" label is the caller's: true when the plan costs nothing. */
45
+ free: boolean;
46
+ trialDays: number | null;
47
+ promotionLabel?: string;
48
+ promotionCode?: string;
49
+ /** Minor units after the promotion. */
50
+ amount: number;
51
+ }
52
+ /** A minor-unit amount as a locale-formatted currency string (falls back to `12.34 USD`). */
53
+ export declare function formatMoney(amountMinor: number, currency: string, locale?: string): string;
54
+ /**
55
+ * The price, trial and promotion to show for `plan` at `interval` (default the plan's own).
56
+ * An annual interval uses `annual_amount` when the plan offers one. An expired promotion is ignored.
57
+ */
58
+ export declare function planPriceView(plan: PublicBillingPlan, opts?: {
59
+ interval?: 'month' | 'year';
60
+ locale?: string;
61
+ now?: number;
62
+ }): PlanPriceView;
63
+ /** The instance's active public plans. `audience` narrows to user (B2C) or org (B2B) plans. */
64
+ export declare function listPublicPlans(client: FapiClient, opts?: {
65
+ audience?: 'user' | 'org';
66
+ }): Promise<PublicBillingPlan[]>;
67
+ /**
68
+ * Start a provider Checkout for a plan and return its URL (the caller navigates).
69
+ * Needs a signed-in session; for an organization plan pass `orgId`.
70
+ */
71
+ export declare function startPlanCheckout(client: FapiClient, input: {
72
+ planId: string;
73
+ interval?: 'month' | 'year';
74
+ orgId?: string;
75
+ successUrl: string;
76
+ cancelUrl?: string;
77
+ }): Promise<{
78
+ url: string | null;
79
+ error?: string;
80
+ }>;
@@ -0,0 +1,71 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.formatMoney = formatMoney;
4
+ exports.planPriceView = planPriceView;
5
+ exports.listPublicPlans = listPublicPlans;
6
+ exports.startPlanCheckout = startPlanCheckout;
7
+ const minor = (v) => {
8
+ const n = typeof v === 'string' ? Number(v) : v;
9
+ return typeof n === 'number' && Number.isFinite(n) ? n : 0;
10
+ };
11
+ /** A minor-unit amount as a locale-formatted currency string (falls back to `12.34 USD`). */
12
+ function formatMoney(amountMinor, currency, locale) {
13
+ try {
14
+ return new Intl.NumberFormat(locale, { style: 'currency', currency: currency.toUpperCase() }).format(amountMinor / 100);
15
+ }
16
+ catch {
17
+ return `${(amountMinor / 100).toFixed(2)} ${currency.toUpperCase()}`;
18
+ }
19
+ }
20
+ /**
21
+ * The price, trial and promotion to show for `plan` at `interval` (default the plan's own).
22
+ * An annual interval uses `annual_amount` when the plan offers one. An expired promotion is ignored.
23
+ */
24
+ function planPriceView(plan, opts = {}) {
25
+ const own = plan.interval === 'year' ? 'year' : 'month';
26
+ const interval = opts.interval ?? own;
27
+ const annualPrice = plan.annual_available && plan.annual_amount != null ? minor(plan.annual_amount) : null;
28
+ // The plan's own price is in its own interval; the other interval only exists as an annual price.
29
+ const base = interval === own ? minor(plan.amount) : interval === 'year' && annualPrice !== null ? annualPrice : minor(plan.amount);
30
+ const shownInterval = interval === own || (interval === 'year' && annualPrice !== null) ? interval : own;
31
+ const promo = plan.promotion && !(plan.promotion.ends_at !== undefined && plan.promotion.ends_at <= (opts.now ?? Date.now())) ? plan.promotion : null;
32
+ let amount = base;
33
+ if (promo?.percent_off)
34
+ amount = Math.round(base * (1 - promo.percent_off / 100));
35
+ else if (promo?.amount_off)
36
+ amount = Math.max(0, base - promo.amount_off);
37
+ const discounted = promo !== null && amount < base;
38
+ return {
39
+ price: formatMoney(amount, plan.currency, opts.locale),
40
+ ...(discounted ? { originalPrice: formatMoney(base, plan.currency, opts.locale) } : {}),
41
+ interval: shownInterval,
42
+ free: amount === 0 && base === 0,
43
+ trialDays: plan.trial_days && plan.trial_days > 0 ? plan.trial_days : null,
44
+ ...(promo ? { promotionLabel: promo.label } : {}),
45
+ ...(promo?.code ? { promotionCode: promo.code } : {}),
46
+ amount,
47
+ };
48
+ }
49
+ /** The instance's active public plans. `audience` narrows to user (B2C) or org (B2B) plans. */
50
+ async function listPublicPlans(client, opts = {}) {
51
+ const res = await client.get('/v1/client/billing/plans');
52
+ const all = res.ok && res.data ? (res.data.data ?? []) : [];
53
+ return opts.audience ? all.filter((p) => p.audience === opts.audience) : all;
54
+ }
55
+ /**
56
+ * Start a provider Checkout for a plan and return its URL (the caller navigates).
57
+ * Needs a signed-in session; for an organization plan pass `orgId`.
58
+ */
59
+ async function startPlanCheckout(client, input) {
60
+ const res = await client.post('/v1/client/billing/checkout', {
61
+ plan_id: input.planId,
62
+ ...(input.orgId ? { org_id: input.orgId } : {}),
63
+ ...(input.interval ? { interval: input.interval } : {}),
64
+ success_url: input.successUrl,
65
+ cancel_url: input.cancelUrl ?? input.successUrl,
66
+ });
67
+ if (res.ok && res.data?.url)
68
+ return { url: res.data.url };
69
+ return { url: null, error: res.errors[0]?.message ?? 'Could not start checkout.' };
70
+ }
71
+ //# sourceMappingURL=pricing.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pricing.js","sourceRoot":"","sources":["../src/pricing.ts"],"names":[],"mappings":"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"}
package/dist/profile.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import type { FapiClient } from './fapi';
2
- import type { FieldError } from './attempt';
2
+ import type { FieldError, ProfileCompletionField } from './attempt';
3
3
  /**
4
4
  * Update the signed-in user's own profile (`PATCH /v1/client/me`). `traits`
5
5
  * sets identity traits the application marked user-editable — each is typed
@@ -22,3 +22,75 @@ export declare function updateProfile(client: FapiClient, update: ProfileUpdate)
22
22
  ok: false;
23
23
  errors: FieldError[];
24
24
  }>;
25
+ /** One field of the signed-in user's profile form (`GET /v1/client/profile_schema`). */
26
+ export interface ProfileSchemaField {
27
+ key: string;
28
+ type: 'string' | 'number' | 'boolean' | 'enum' | 'date' | 'email' | 'url' | 'phone' | 'multi_select' | 'array' | 'object';
29
+ /** Already in the user's language. */
30
+ label: string;
31
+ description: string | null;
32
+ /** The key of a section in `groups`, or null. */
33
+ group: string | null;
34
+ /** Needed now, given the user's other values (a conditional requirement counts). */
35
+ required: boolean;
36
+ /** Whether the user may change it; a read-only field is shown but not sent. */
37
+ editable: boolean;
38
+ enum?: string[];
39
+ minLength?: number;
40
+ maxLength?: number;
41
+ pattern?: string;
42
+ min?: number;
43
+ max?: number;
44
+ minDate?: string;
45
+ maxDate?: string;
46
+ minItems?: number;
47
+ maxItems?: number;
48
+ items?: 'string' | 'number';
49
+ properties?: ProfileSchemaField[];
50
+ }
51
+ export interface ProfileSchema {
52
+ object: 'profile_schema';
53
+ groups: {
54
+ key: string;
55
+ label: string;
56
+ }[];
57
+ fields: ProfileSchemaField[];
58
+ /** The user's current value for each field. */
59
+ values: Record<string, unknown>;
60
+ }
61
+ /**
62
+ * The profile form the application defined (identity traits): the fields the user
63
+ * may see, their labels in `locale` (default: the user's), sections, types and
64
+ * limits, what is required and what they may change, with the current values.
65
+ * Another audience's fields are left out.
66
+ */
67
+ export declare function getProfileSchema(client: FapiClient, options?: {
68
+ locale?: string;
69
+ }): Promise<{
70
+ ok: true;
71
+ schema: ProfileSchema;
72
+ } | {
73
+ ok: false;
74
+ errors: FieldError[];
75
+ }>;
76
+ /** Progressive profiling: what a signed-in user still owes before a feature (fields configured `before_feature`). */
77
+ export interface ProfileCompletion {
78
+ object: 'profile_completion';
79
+ complete: boolean;
80
+ fields: ProfileCompletionField[];
81
+ }
82
+ export declare function getProfileCompletion(client: FapiClient): Promise<{
83
+ ok: true;
84
+ completion: ProfileCompletion;
85
+ } | {
86
+ ok: false;
87
+ errors: FieldError[];
88
+ }>;
89
+ /** Save the `before_feature` fields: `{ key: value }`. Required fields must be present. */
90
+ export declare function saveProfileCompletion(client: FapiClient, fields: Record<string, string>): Promise<{
91
+ ok: true;
92
+ completion: ProfileCompletion;
93
+ } | {
94
+ ok: false;
95
+ errors: FieldError[];
96
+ }>;
package/dist/profile.js CHANGED
@@ -1,6 +1,9 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.updateProfile = updateProfile;
4
+ exports.getProfileSchema = getProfileSchema;
5
+ exports.getProfileCompletion = getProfileCompletion;
6
+ exports.saveProfileCompletion = saveProfileCompletion;
4
7
  async function updateProfile(client, update) {
5
8
  const body = {};
6
9
  if (update.firstName !== undefined)
@@ -21,4 +24,24 @@ async function updateProfile(client, update) {
21
24
  });
22
25
  return response.ok && response.data ? { ok: true, user: response.data } : { ok: false, errors: response.errors };
23
26
  }
27
+ /**
28
+ * The profile form the application defined (identity traits): the fields the user
29
+ * may see, their labels in `locale` (default: the user's), sections, types and
30
+ * limits, what is required and what they may change, with the current values.
31
+ * Another audience's fields are left out.
32
+ */
33
+ async function getProfileSchema(client, options = {}) {
34
+ const qs = options.locale ? `?locale=${encodeURIComponent(options.locale)}` : '';
35
+ const response = await client.request(`/v1/client/profile_schema${qs}`, { method: 'GET' });
36
+ return response.ok && response.data ? { ok: true, schema: response.data } : { ok: false, errors: response.errors };
37
+ }
38
+ async function getProfileCompletion(client) {
39
+ const response = await client.request('/v1/client/me/profile_completion', { method: 'GET' });
40
+ return response.ok && response.data ? { ok: true, completion: response.data } : { ok: false, errors: response.errors };
41
+ }
42
+ /** Save the `before_feature` fields: `{ key: value }`. Required fields must be present. */
43
+ async function saveProfileCompletion(client, fields) {
44
+ const response = await client.request('/v1/client/me/profile_completion', { method: 'POST', body: JSON.stringify({ fields }) });
45
+ return response.ok && response.data ? { ok: true, completion: response.data } : { ok: false, errors: response.errors };
46
+ }
24
47
  //# sourceMappingURL=profile.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"profile.js","sourceRoot":"","sources":["../src/profile.ts"],"names":[],"mappings":";;AAmBA,sCAgBC;AAhBM,KAAK,UAAU,aAAa,CACjC,MAAkB,EAClB,MAAqB;IAErB,MAAM,IAAI,GAA4B,EAAE,CAAC;IACzC,IAAI,MAAM,CAAC,SAAS,KAAK,SAAS;QAAE,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,SAAS,CAAC;IACvE,IAAI,MAAM,CAAC,QAAQ,KAAK,SAAS;QAAE,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,QAAQ,CAAC;IACpE,IAAI,MAAM,CAAC,QAAQ,KAAK,SAAS;QAAE,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;IACnE,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS;QAAE,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;IAC7D,IAAI,MAAM,CAAC,cAAc,KAAK,SAAS;QAAE,IAAI,CAAC,eAAe,GAAG,MAAM,CAAC,cAAc,CAAC;IACtF,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS;QAAE,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;IAC7D,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,OAAO,CAA0B,eAAe,EAAE;QAC9E,MAAM,EAAE,OAAO;QACf,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;KAC3B,CAAC,CAAC;IACH,OAAO,QAAQ,CAAC,EAAE,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAC;AACnH,CAAC"}
1
+ {"version":3,"file":"profile.js","sourceRoot":"","sources":["../src/profile.ts"],"names":[],"mappings":"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"}
package/dist/redirect.js CHANGED
@@ -267,7 +267,7 @@ function readRedirectResult(search) {
267
267
  attemptId,
268
268
  ...(ticket ? { ticket } : {}),
269
269
  ...(status ? { status } : {}),
270
- ...(status === 'needs_policy_acceptance' && policyToken ? { policyToken } : {}),
270
+ ...((status === 'needs_policy_acceptance' || status === 'needs_required_action') && policyToken ? { policyToken } : {}),
271
271
  };
272
272
  }
273
273
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"redirect.js","sourceRoot":"","sources":["../src/redirect.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"redirect.js","sourceRoot":"","sources":["../src/redirect.ts"],"names":[],"mappings":"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"}
package/dist/srp.d.ts ADDED
@@ -0,0 +1,55 @@
1
+ /**
2
+ * SRP-6a sign-in: prove knowledge of the password without sending it.
3
+ *
4
+ * Uses RFC 5054's 3072-bit group with SHA-256 (the server publishes the same
5
+ * parameters), on WebCrypto and BigInt, so it runs in any current browser and
6
+ * Node. The flow on an existing sign-in attempt:
7
+ *
8
+ * srp_challenge -> salt, B, and the identity to hash in
9
+ * srp_verify -> M1 (the client proof); the server answers with M2
10
+ *
11
+ * and the helper checks M2, so a server that does not know the verifier cannot
12
+ * pass as Atlas. SRP does not replace TLS, and a passkey is a stronger
13
+ * sign-in; use this for apps that already speak SRP (Cognito migrations) or
14
+ * that must keep the password out of the request body.
15
+ */
16
+ import type { FapiClient, FapiResponse } from './fapi';
17
+ export interface SrpClientProof {
18
+ /** Public value A, hex, for the challenge request. */
19
+ A: string;
20
+ /** Finish with the server's answer: the client proof M1 and the server proof M2 expected back (both hex). */
21
+ respond(challenge: {
22
+ salt: string;
23
+ srp_b: string;
24
+ user_id_for_srp: string;
25
+ }, password: string): Promise<{
26
+ M1: string;
27
+ M2: string;
28
+ }>;
29
+ }
30
+ /** Start the client side of an exchange. `privateKey` is for tests; leave it unset. */
31
+ export declare function srpClientStart(privateKey?: bigint): SrpClientProof;
32
+ export declare const SRP_CHALLENGE_PATH: (attemptId: string) => string;
33
+ export declare const SRP_VERIFY_PATH: (attemptId: string) => string;
34
+ export interface SrpSignInOptions {
35
+ identifier: string;
36
+ password: string;
37
+ /** Continue an attempt that already has its identifier; otherwise one is started. */
38
+ attemptId?: string;
39
+ /**
40
+ * When SRP does not work (the account has no verifier yet, for example one migrated from
41
+ * another provider), try an ordinary password sign-in on the same attempt, which also
42
+ * sets up the verifier for next time. Default false.
43
+ */
44
+ fallbackToPassword?: boolean;
45
+ /** Fixed client private value, for tests only. */
46
+ privateKey?: bigint;
47
+ }
48
+ export type SrpSignInResult = FapiResponse<Record<string, unknown>> & {
49
+ /** True when the server proved it knew the verifier (its M2 matched). */
50
+ serverVerified: boolean;
51
+ attemptId: string | null;
52
+ method: 'srp' | 'password';
53
+ };
54
+ /** Sign in with SRP. On success `data` is the attempt view (with `ticket` when complete). */
55
+ export declare function signInWithSrp(client: FapiClient, opts: SrpSignInOptions): Promise<SrpSignInResult>;
package/dist/srp.js ADDED
@@ -0,0 +1,120 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SRP_VERIFY_PATH = exports.SRP_CHALLENGE_PATH = void 0;
4
+ exports.srpClientStart = srpClientStart;
5
+ exports.signInWithSrp = signInWithSrp;
6
+ const N_HEX = 'FFFFFFFFFFFFFFFFC90FDAA22168C234C4C6628B80DC1CD129024E088A67CC74020BBEA63B139B22514A08798E3404DDEF9519B3CD3A431B302B0A6DF25F14374FE1356D6D51C245E485B576625E7EC6F44C42E9A637ED6B0BFF5CB6F406B7EDEE386BFB5A899FA5AE9F24117C4B1FE649286651ECE45B3DC2007CB8A163BF0598DA48361C55D39A69163FA8FD24CF5F83655D23DCA3AD961C62F356208552BB9ED529077096966D670C354E4ABC9804F1746C08CA18217C32905E462E36CE3BE39E772C180E86039B2783A2EC07A28FB5C55DF06F4C52C9DE2BCBF6955817183995497CEA956AE515D2261898FA051015728E5A8AAAC42DAD33170D04507A33A85521ABDF1CBA64ECFB850458DBEF0A8AEA71575D060C7DB3970F85A6E1E4C7ABF5AE8CDB0933D71E8C94E04A25619DCEE3D2261AD2EE6BF12FFA06D98A0864D87602733EC86A64521F2B18177B200CBBE117577A615D6C770988C0BAD946E208E24FA074E5AB3143DB5BFCE0FD108E4B82D120A93AD2CAFFFFFFFFFFFFFFFF';
7
+ const N = BigInt('0x' + N_HEX);
8
+ // BigInt() calls, not literals: the embed bundle targets ES2019 syntax.
9
+ const ZERO = BigInt(0);
10
+ const ONE = BigInt(1);
11
+ const G = BigInt(5);
12
+ const N_LEN = N_HEX.length / 2;
13
+ const enc = new TextEncoder();
14
+ const toHex = (b) => Array.from(b, (v) => v.toString(16).padStart(2, '0')).join('');
15
+ const fromHex = (h) => Uint8Array.from((h.length % 2 ? '0' + h : h).match(/../g) ?? [], (x) => parseInt(x, 16));
16
+ const big = (b) => (b.length ? BigInt('0x' + toHex(b)) : ZERO);
17
+ const bytes = (n) => fromHex(n.toString(16));
18
+ const pad = (n) => {
19
+ const b = bytes(n);
20
+ const out = new Uint8Array(Math.max(N_LEN, b.length));
21
+ out.set(b, out.length - b.length);
22
+ return out;
23
+ };
24
+ const concat = (...parts) => {
25
+ const out = new Uint8Array(parts.reduce((s, p) => s + p.length, 0));
26
+ let o = 0;
27
+ for (const p of parts) {
28
+ out.set(p, o);
29
+ o += p.length;
30
+ }
31
+ return out;
32
+ };
33
+ const sha256 = async (...parts) => new Uint8Array(await crypto.subtle.digest('SHA-256', concat(...parts)));
34
+ function modPow(base, exp, mod) {
35
+ let result = ONE;
36
+ let b = ((base % mod) + mod) % mod;
37
+ for (let e = exp; e > ZERO; e >>= ONE) {
38
+ if (e & ONE)
39
+ result = (result * b) % mod;
40
+ b = (b * b) % mod;
41
+ }
42
+ return result;
43
+ }
44
+ /** Start the client side of an exchange. `privateKey` is for tests; leave it unset. */
45
+ function srpClientStart(privateKey) {
46
+ const a = privateKey ?? big(crypto.getRandomValues(new Uint8Array(64)));
47
+ const A = modPow(G, a, N);
48
+ return {
49
+ A: A.toString(16),
50
+ async respond(ch, password) {
51
+ const B = BigInt('0x' + ch.srp_b);
52
+ if (B % N === ZERO)
53
+ throw new Error('The server sent an invalid SRP value.');
54
+ const k = big(await sha256(bytes(N), pad(G)));
55
+ const u = big(await sha256(pad(A), pad(B)));
56
+ const inner = await sha256(enc.encode(`${ch.user_id_for_srp}:${password}`));
57
+ const x = big(await sha256(fromHex(ch.salt), inner));
58
+ const base = (((B - k * modPow(G, x, N)) % N) + N) % N;
59
+ const S = modPow(base, a + u * x, N);
60
+ const K = await sha256(bytes(S));
61
+ const hn = await sha256(bytes(N));
62
+ const hg = await sha256(bytes(G));
63
+ const xored = hn.map((v, i) => v ^ hg[i]);
64
+ const M1 = await sha256(xored, await sha256(enc.encode(ch.user_id_for_srp)), fromHex(ch.salt), pad(A), pad(B), K);
65
+ const M2 = await sha256(pad(A), M1, K);
66
+ return { M1: toHex(M1), M2: toHex(M2) };
67
+ },
68
+ };
69
+ }
70
+ const SRP_CHALLENGE_PATH = (attemptId) => `/v1/client/sign_ins/${encodeURIComponent(attemptId)}/srp_challenge`;
71
+ exports.SRP_CHALLENGE_PATH = SRP_CHALLENGE_PATH;
72
+ const SRP_VERIFY_PATH = (attemptId) => `/v1/client/sign_ins/${encodeURIComponent(attemptId)}/srp_verify`;
73
+ exports.SRP_VERIFY_PATH = SRP_VERIFY_PATH;
74
+ const fail = (status, message) => ({
75
+ ok: false,
76
+ status,
77
+ data: null,
78
+ errors: [{ code: 'SRP_FAILED', message }],
79
+ serverVerified: false,
80
+ attemptId: null,
81
+ method: 'srp',
82
+ });
83
+ /** Sign in with SRP. On success `data` is the attempt view (with `ticket` when complete). */
84
+ async function signInWithSrp(client, opts) {
85
+ let attemptId = opts.attemptId ?? null;
86
+ if (!attemptId) {
87
+ const start = await client.post('/v1/client/sign_ins', { identifier: opts.identifier });
88
+ if (!start.ok || !start.data)
89
+ return { ...start, serverVerified: false, attemptId: null, method: 'srp' };
90
+ attemptId = start.data.id;
91
+ }
92
+ const passwordFallback = async () => {
93
+ const res = await client.post(`/v1/client/sign_ins/${encodeURIComponent(attemptId)}/attempt_first_factor`, {
94
+ strategy: 'password',
95
+ password: opts.password,
96
+ });
97
+ return { ...res, serverVerified: false, attemptId, method: 'password' };
98
+ };
99
+ const proof = srpClientStart(opts.privateKey);
100
+ const challenge = await client.post((0, exports.SRP_CHALLENGE_PATH)(attemptId), { srp_a: proof.A });
101
+ if (!challenge.ok || !challenge.data)
102
+ return opts.fallbackToPassword && challenge.status === 422 ? passwordFallback() : { ...challenge, serverVerified: false, attemptId, method: 'srp' };
103
+ let answer;
104
+ try {
105
+ answer = await proof.respond(challenge.data, opts.password);
106
+ }
107
+ catch (e) {
108
+ return fail(400, e.message);
109
+ }
110
+ const verified = await client.post((0, exports.SRP_VERIFY_PATH)(attemptId), { srp_session: challenge.data.srp_session, srp_m1: answer.M1 });
111
+ if (!verified.ok) {
112
+ // The attempt has used its failure budget on this try; the fallback is a second, ordinary attempt.
113
+ return opts.fallbackToPassword ? passwordFallback() : { ...verified, serverVerified: false, attemptId, method: 'srp' };
114
+ }
115
+ const serverVerified = verified.data?.srp_m2 === answer.M2;
116
+ if (!serverVerified)
117
+ return { ...fail(400, 'The server did not prove it knows the verifier.'), attemptId };
118
+ return { ...verified, serverVerified, attemptId, method: 'srp' };
119
+ }
120
+ //# sourceMappingURL=srp.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"srp.js","sourceRoot":"","sources":["../src/srp.ts"],"names":[],"mappings":";;;AAkEA,wCAuBC;AAsCD,sCAiCC;AA/ID,MAAM,KAAK,GACT,kwBAAkwB,CAAC;AACrwB,MAAM,CAAC,GAAG,MAAM,CAAC,IAAI,GAAG,KAAK,CAAC,CAAC;AAC/B,wEAAwE;AACxE,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;AACvB,MAAM,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;AACtB,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;AACpB,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;AAE/B,MAAM,GAAG,GAAG,IAAI,WAAW,EAAE,CAAC;AAC9B,MAAM,KAAK,GAAG,CAAC,CAAa,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAChG,MAAM,OAAO,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;AACxH,MAAM,GAAG,GAAG,CAAC,CAAa,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AAC3E,MAAM,KAAK,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;AACrD,MAAM,GAAG,GAAG,CAAC,CAAS,EAAE,EAAE;IACxB,MAAM,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;IACnB,MAAM,GAAG,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;IACtD,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC;IAClC,OAAO,GAAG,CAAC;AACb,CAAC,CAAC;AACF,MAAM,MAAM,GAAG,CAAC,GAAG,KAAmB,EAAE,EAAE;IACxC,MAAM,GAAG,GAAG,IAAI,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC;IACpE,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;QACtB,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACd,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC;IAChB,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC,CAAC;AACF,MAAM,MAAM,GAAG,KAAK,EAAE,GAAG,KAAmB,EAAE,EAAE,CAAC,IAAI,UAAU,CAAC,MAAM,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,GAAG,KAAK,CAAiB,CAAC,CAAC,CAAC;AAEzI,SAAS,MAAM,CAAC,IAAY,EAAE,GAAW,EAAE,GAAW;IACpD,IAAI,MAAM,GAAG,GAAG,CAAC;IACjB,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC;IACnC,KAAK,IAAI,CAAC,GAAG,GAAG,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,KAAK,GAAG,EAAE,CAAC;QACtC,IAAI,CAAC,GAAG,GAAG;YAAE,MAAM,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC;QACzC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC;IACpB,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AASD,uFAAuF;AACvF,SAAgB,cAAc,CAAC,UAAmB;IAChD,MAAM,CAAC,GAAG,UAAU,IAAI,GAAG,CAAC,MAAM,CAAC,eAAe,CAAC,IAAI,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IACxE,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IAC1B,OAAO;QACL,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC;QACjB,KAAK,CAAC,OAAO,CAAC,EAAE,EAAE,QAAQ;YACxB,MAAM,CAAC,GAAG,MAAM,CAAC,IAAI,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC;YAClC,IAAI,CAAC,GAAG,CAAC,KAAK,IAAI;gBAAE,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;YAC7E,MAAM,CAAC,GAAG,GAAG,CAAC,MAAM,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC9C,MAAM,CAAC,GAAG,GAAG,CAAC,MAAM,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC5C,MAAM,KAAK,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,eAAe,IAAI,QAAQ,EAAE,CAAC,CAAC,CAAC;YAC5E,MAAM,CAAC,GAAG,GAAG,CAAC,MAAM,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;YACrD,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;YACvD,MAAM,CAAC,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;YACrC,MAAM,CAAC,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;YACjC,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;YAClC,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;YAClC,MAAM,KAAK,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAE,CAAC,CAAC;YAC3C,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,KAAK,EAAE,MAAM,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,eAAe,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YAClH,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;YACvC,OAAO,EAAE,EAAE,EAAE,KAAK,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC;QAC1C,CAAC;KACF,CAAC;AACJ,CAAC;AAEM,MAAM,kBAAkB,GAAG,CAAC,SAAiB,EAAE,EAAE,CAAC,uBAAuB,kBAAkB,CAAC,SAAS,CAAC,gBAAgB,CAAC;AAAjH,QAAA,kBAAkB,sBAA+F;AACvH,MAAM,eAAe,GAAG,CAAC,SAAiB,EAAE,EAAE,CAAC,uBAAuB,kBAAkB,CAAC,SAAS,CAAC,aAAa,CAAC;AAA3G,QAAA,eAAe,mBAA4F;AAwBxH,MAAM,IAAI,GAAG,CAAC,MAAc,EAAE,OAAe,EAAmB,EAAE,CAAC,CAAC;IAClE,EAAE,EAAE,KAAK;IACT,MAAM;IACN,IAAI,EAAE,IAAI;IACV,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,CAAC;IACzC,cAAc,EAAE,KAAK;IACrB,SAAS,EAAE,IAAI;IACf,MAAM,EAAE,KAAK;CACd,CAAC,CAAC;AAEH,6FAA6F;AACtF,KAAK,UAAU,aAAa,CAAC,MAAkB,EAAE,IAAsB;IAC5E,IAAI,SAAS,GAAG,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC;IACvC,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,MAAM,KAAK,GAAG,MAAM,MAAM,CAAC,IAAI,CAAiB,qBAAqB,EAAE,EAAE,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;QACxG,IAAI,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI;YAAE,OAAO,EAAE,GAAG,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAqB,CAAC;QAC5H,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;IAC5B,CAAC;IACD,MAAM,gBAAgB,GAAG,KAAK,IAA8B,EAAE;QAC5D,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,IAAI,CAA0B,uBAAuB,kBAAkB,CAAC,SAAU,CAAC,uBAAuB,EAAE;YACnI,QAAQ,EAAE,UAAU;YACpB,QAAQ,EAAE,IAAI,CAAC,QAAQ;SACxB,CAAC,CAAC;QACH,OAAO,EAAE,GAAG,GAAG,EAAE,cAAc,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC;IAC1E,CAAC,CAAC;IAEF,MAAM,KAAK,GAAG,cAAc,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAC9C,MAAM,SAAS,GAAG,MAAM,MAAM,CAAC,IAAI,CAAgF,IAAA,0BAAkB,EAAC,SAAS,CAAC,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;IACtK,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI;QAAE,OAAO,IAAI,CAAC,kBAAkB,IAAI,SAAS,CAAC,MAAM,KAAK,GAAG,CAAC,CAAC,CAAC,gBAAgB,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,SAAS,EAAE,cAAc,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,EAAqB,CAAC;IAE7M,IAAI,MAAkC,CAAC;IACvC,IAAI,CAAC;QACH,MAAM,GAAG,MAAM,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC9D,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,OAAO,IAAI,CAAC,GAAG,EAAG,CAAW,CAAC,OAAO,CAAC,CAAC;IACzC,CAAC;IACD,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,IAAI,CAA0B,IAAA,uBAAe,EAAC,SAAS,CAAC,EAAE,EAAE,WAAW,EAAE,SAAS,CAAC,IAAI,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC;IACxJ,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACjB,mGAAmG;QACnG,OAAO,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,gBAAgB,EAAE,CAAC,CAAC,CAAE,EAAE,GAAG,QAAQ,EAAE,cAAc,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,EAAsB,CAAC;IAC9I,CAAC;IACD,MAAM,cAAc,GAAG,QAAQ,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC,EAAE,CAAC;IAC3D,IAAI,CAAC,cAAc;QAAE,OAAO,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,iDAAiD,CAAC,EAAE,SAAS,EAAE,CAAC;IAC3G,OAAO,EAAE,GAAG,QAAQ,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;AACnE,CAAC"}
@@ -23,3 +23,26 @@ export interface TelegramSignInBody {
23
23
  }
24
24
  /** Build the POST body for `/v1/oauth/telegram` from the widget's user object. */
25
25
  export declare function telegramSignInBody(payload: TelegramWidgetUser): TelegramSignInBody;
26
+ /** Body for `POST /v1/oauth/game_platform` with an Apple Game Center identity proof. */
27
+ export interface GameCenterProof {
28
+ /** `teamPlayerID` (preferred) or `gamePlayerID`. */
29
+ player_id: string;
30
+ bundle_id: string;
31
+ public_key_url: string;
32
+ /** Base64 of the signature bytes. */
33
+ signature: string;
34
+ /** Base64 of the salt bytes. */
35
+ salt: string;
36
+ /** Milliseconds since epoch, as Game Center returns it. */
37
+ timestamp: number;
38
+ display_name?: string;
39
+ }
40
+ export type GamePlatformSignInBody = {
41
+ provider: 'apple_game_center';
42
+ game_center: GameCenterProof;
43
+ } | {
44
+ provider: 'google_play_games';
45
+ server_auth_code: string;
46
+ };
47
+ export declare function gameCenterSignInBody(proof: GameCenterProof): GamePlatformSignInBody;
48
+ export declare function playGamesSignInBody(serverAuthCode: string): GamePlatformSignInBody;
package/dist/telegram.js CHANGED
@@ -11,8 +11,16 @@
11
11
  */
12
12
  Object.defineProperty(exports, "__esModule", { value: true });
13
13
  exports.telegramSignInBody = telegramSignInBody;
14
+ exports.gameCenterSignInBody = gameCenterSignInBody;
15
+ exports.playGamesSignInBody = playGamesSignInBody;
14
16
  /** Build the POST body for `/v1/oauth/telegram` from the widget's user object. */
15
17
  function telegramSignInBody(payload) {
16
18
  return { telegram: payload };
17
19
  }
20
+ function gameCenterSignInBody(proof) {
21
+ return { provider: 'apple_game_center', game_center: proof };
22
+ }
23
+ function playGamesSignInBody(serverAuthCode) {
24
+ return { provider: 'google_play_games', server_auth_code: serverAuthCode };
25
+ }
18
26
  //# sourceMappingURL=telegram.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"telegram.js","sourceRoot":"","sources":["../src/telegram.ts"],"names":[],"mappings":";AAAA;;;;;;;;;GASG;;AAkBH,gDAEC;AAHD,kFAAkF;AAClF,SAAgB,kBAAkB,CAAC,OAA2B;IAC5D,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC;AAC/B,CAAC"}
1
+ {"version":3,"file":"telegram.js","sourceRoot":"","sources":["../src/telegram.ts"],"names":[],"mappings":";AAAA;;;;;;;;;GASG;;AAkBH,gDAEC;AAqBD,oDAEC;AAED,kDAEC;AA9BD,kFAAkF;AAClF,SAAgB,kBAAkB,CAAC,OAA2B;IAC5D,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC;AAC/B,CAAC;AAqBD,SAAgB,oBAAoB,CAAC,KAAsB;IACzD,OAAO,EAAE,QAAQ,EAAE,mBAAmB,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC;AAC/D,CAAC;AAED,SAAgB,mBAAmB,CAAC,cAAsB;IACxD,OAAO,EAAE,QAAQ,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,cAAc,EAAE,CAAC;AAC7E,CAAC"}