@atlasauth/expo 0.7.0 → 0.9.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.
@@ -0,0 +1,26 @@
1
+ /** `const { changePassword } = useAccountSecurity();` bound to the provider's bearer-authenticated client. */
2
+ export declare function useAccountSecurity(): {
3
+ changePassword: (input: {
4
+ currentPassword: string;
5
+ newPassword: string;
6
+ }) => Promise<import("@atlasauth/js").PasswordChangeResult>;
7
+ setPassword: (password: string) => Promise<import("@atlasauth/js").SetPasswordResult>;
8
+ listTrustedDevices: () => Promise<import("@atlasauth/js").TrustedDevicesResult>;
9
+ revokeTrustedDevice: (id: string) => Promise<import("@atlasauth/js").RevokeTrustedDeviceResult>;
10
+ revokeAllTrustedDevices: () => Promise<import("@atlasauth/js").RevokeAllTrustedDevicesResult>;
11
+ listSessions: () => Promise<import("@atlasauth/js").AccountSessionsResult>;
12
+ revokeAccountSession: (id: string) => Promise<import("@atlasauth/js").RevokeSessionResult>;
13
+ revokeAllSessions: () => Promise<import("@atlasauth/js").RevokeOtherSessionsResult>;
14
+ listMfaFactors: () => Promise<import("@atlasauth/js").MfaFactorsResult>;
15
+ startTotp: () => Promise<import("@atlasauth/js").StartTotpResult>;
16
+ verifyTotp: (factorId: string, codes: string[]) => Promise<import("@atlasauth/js").VerifyFactorResult>;
17
+ startSms: (phone: string) => Promise<import("@atlasauth/js").StartSmsResult>;
18
+ verifySms: (factorId: string, code: string) => Promise<import("@atlasauth/js").VerifyFactorResult>;
19
+ removeMfaFactor: (factorId: string) => Promise<import("@atlasauth/js").RemoveMfaFactorResult>;
20
+ regenerateBackupCodes: () => Promise<import("@atlasauth/js").RegenerateBackupCodesResult>;
21
+ listPasskeys: () => Promise<import("@atlasauth/js").AccountPasskeysResult>;
22
+ removePasskey: (id: string) => Promise<import("@atlasauth/js").RemovePasskeyResult>;
23
+ unlinkExternalAccount: (id: string) => Promise<import("@atlasauth/js").UnlinkExternalAccountResult>;
24
+ getNotificationPreferences: () => Promise<import("@atlasauth/js").NotificationPreferencesResult>;
25
+ updateNotificationPreferences: (preferences: Record<string, boolean>) => Promise<import("@atlasauth/js").NotificationPreferencesResult>;
26
+ } | null;
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.useAccountSecurity = useAccountSecurity;
4
+ const react_1 = require("react");
5
+ const account_security_1 = require("./account-security");
6
+ const policies_1 = require("./policies");
7
+ /** `const { changePassword } = useAccountSecurity();` bound to the provider's bearer-authenticated client. */
8
+ function useAccountSecurity() {
9
+ const client = (0, policies_1.useExpoFapiClient)();
10
+ return (0, react_1.useMemo)(() => (client ? (0, account_security_1.createAccountSecurityActions)(client) : null), [client]);
11
+ }
12
+ //# sourceMappingURL=account-security-hook.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"account-security-hook.js","sourceRoot":"","sources":["../src/account-security-hook.ts"],"names":[],"mappings":";;AAKA,gDAGC;AARD,iCAAgC;AAChC,yDAAkE;AAClE,yCAA+C;AAE/C,8GAA8G;AAC9G,SAAgB,kBAAkB;IAChC,MAAM,MAAM,GAAG,IAAA,4BAAiB,GAAE,CAAC;IACnC,OAAO,IAAA,eAAO,EAAC,GAAG,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAA,+CAA4B,EAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;AACzF,CAAC"}
@@ -1,5 +1,15 @@
1
- import { changePassword, listTrustedDevices, revokeAllTrustedDevices, revokeTrustedDevice, setPassword, type FapiClient } from '@atlasauth/js';
2
- export { changePassword, setPassword, listTrustedDevices, revokeTrustedDevice, revokeAllTrustedDevices };
1
+ /**
2
+ * Change or set the signed-in user's password, manage trusted devices, sessions,
3
+ * two-factor methods, passkeys, linked accounts and notification preferences,
4
+ * from a native app. The provider's client authenticates with the stored session
5
+ * token as a bearer, so these work without a cookie.
6
+ *
7
+ * This module imports no React or React Native, so it is also the
8
+ * `@atlasauth/expo/account-security` subpath (usable in plain Node, tests, workers).
9
+ * The `useAccountSecurity` hook lives in `./account-security-hook`.
10
+ */
11
+ import { changePassword, getNotificationPreferences, listMfaFactors, listPasskeys, listSessions, listTrustedDevices, regenerateBackupCodes, removeMfaFactor, removePasskey, revokeAllSessions, revokeAllTrustedDevices, revokeAccountSession, revokeTrustedDevice, setPassword, startSms, startTotp, unlinkExternalAccount, updateNotificationPreferences, verifySms, verifyTotp, type FapiClient } from '@atlasauth/js';
12
+ export { changePassword, setPassword, listTrustedDevices, revokeTrustedDevice, revokeAllTrustedDevices, listSessions, revokeAccountSession, revokeAllSessions, listMfaFactors, startTotp, verifyTotp, startSms, verifySms, removeMfaFactor, regenerateBackupCodes, listPasskeys, removePasskey, unlinkExternalAccount, getNotificationPreferences, updateNotificationPreferences, };
3
13
  /** The calls bound to a client; separated from React so it is testable with a fake one. */
4
14
  export declare function createAccountSecurityActions(client: FapiClient): {
5
15
  changePassword: (input: {
@@ -10,15 +20,20 @@ export declare function createAccountSecurityActions(client: FapiClient): {
10
20
  listTrustedDevices: () => Promise<import("@atlasauth/js").TrustedDevicesResult>;
11
21
  revokeTrustedDevice: (id: string) => Promise<import("@atlasauth/js").RevokeTrustedDeviceResult>;
12
22
  revokeAllTrustedDevices: () => Promise<import("@atlasauth/js").RevokeAllTrustedDevicesResult>;
23
+ listSessions: () => Promise<import("@atlasauth/js").AccountSessionsResult>;
24
+ revokeAccountSession: (id: string) => Promise<import("@atlasauth/js").RevokeSessionResult>;
25
+ revokeAllSessions: () => Promise<import("@atlasauth/js").RevokeOtherSessionsResult>;
26
+ listMfaFactors: () => Promise<import("@atlasauth/js").MfaFactorsResult>;
27
+ startTotp: () => Promise<import("@atlasauth/js").StartTotpResult>;
28
+ verifyTotp: (factorId: string, codes: string[]) => Promise<import("@atlasauth/js").VerifyFactorResult>;
29
+ startSms: (phone: string) => Promise<import("@atlasauth/js").StartSmsResult>;
30
+ verifySms: (factorId: string, code: string) => Promise<import("@atlasauth/js").VerifyFactorResult>;
31
+ removeMfaFactor: (factorId: string) => Promise<import("@atlasauth/js").RemoveMfaFactorResult>;
32
+ regenerateBackupCodes: () => Promise<import("@atlasauth/js").RegenerateBackupCodesResult>;
33
+ listPasskeys: () => Promise<import("@atlasauth/js").AccountPasskeysResult>;
34
+ removePasskey: (id: string) => Promise<import("@atlasauth/js").RemovePasskeyResult>;
35
+ unlinkExternalAccount: (id: string) => Promise<import("@atlasauth/js").UnlinkExternalAccountResult>;
36
+ getNotificationPreferences: () => Promise<import("@atlasauth/js").NotificationPreferencesResult>;
37
+ updateNotificationPreferences: (preferences: Record<string, boolean>) => Promise<import("@atlasauth/js").NotificationPreferencesResult>;
13
38
  };
14
- /** `const { changePassword } = useAccountSecurity();` bound to the provider's bearer-authenticated client. */
15
- export declare function useAccountSecurity(): {
16
- changePassword: (input: {
17
- currentPassword: string;
18
- newPassword: string;
19
- }) => Promise<import("@atlasauth/js").PasswordChangeResult>;
20
- setPassword: (password: string) => Promise<import("@atlasauth/js").SetPasswordResult>;
21
- listTrustedDevices: () => Promise<import("@atlasauth/js").TrustedDevicesResult>;
22
- revokeTrustedDevice: (id: string) => Promise<import("@atlasauth/js").RevokeTrustedDeviceResult>;
23
- revokeAllTrustedDevices: () => Promise<import("@atlasauth/js").RevokeAllTrustedDevicesResult>;
24
- } | null;
39
+ export type AccountSecurityActions = ReturnType<typeof createAccountSecurityActions>;
@@ -1,21 +1,38 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.revokeAllTrustedDevices = exports.revokeTrustedDevice = exports.listTrustedDevices = exports.setPassword = exports.changePassword = void 0;
3
+ exports.updateNotificationPreferences = exports.getNotificationPreferences = exports.unlinkExternalAccount = exports.removePasskey = exports.listPasskeys = exports.regenerateBackupCodes = exports.removeMfaFactor = exports.verifySms = exports.startSms = exports.verifyTotp = exports.startTotp = exports.listMfaFactors = exports.revokeAllSessions = exports.revokeAccountSession = exports.listSessions = exports.revokeAllTrustedDevices = exports.revokeTrustedDevice = exports.listTrustedDevices = exports.setPassword = exports.changePassword = void 0;
4
4
  exports.createAccountSecurityActions = createAccountSecurityActions;
5
- exports.useAccountSecurity = useAccountSecurity;
6
5
  /**
7
- * Change or set the signed-in user's password, and manage trusted devices, from
8
- * a native app. The provider's client authenticates with the stored session
6
+ * Change or set the signed-in user's password, manage trusted devices, sessions,
7
+ * two-factor methods, passkeys, linked accounts and notification preferences,
8
+ * from a native app. The provider's client authenticates with the stored session
9
9
  * token as a bearer, so these work without a cookie.
10
+ *
11
+ * This module imports no React or React Native, so it is also the
12
+ * `@atlasauth/expo/account-security` subpath (usable in plain Node, tests, workers).
13
+ * The `useAccountSecurity` hook lives in `./account-security-hook`.
10
14
  */
11
- const react_1 = require("react");
12
15
  const js_1 = require("@atlasauth/js");
13
16
  Object.defineProperty(exports, "changePassword", { enumerable: true, get: function () { return js_1.changePassword; } });
17
+ Object.defineProperty(exports, "getNotificationPreferences", { enumerable: true, get: function () { return js_1.getNotificationPreferences; } });
18
+ Object.defineProperty(exports, "listMfaFactors", { enumerable: true, get: function () { return js_1.listMfaFactors; } });
19
+ Object.defineProperty(exports, "listPasskeys", { enumerable: true, get: function () { return js_1.listPasskeys; } });
20
+ Object.defineProperty(exports, "listSessions", { enumerable: true, get: function () { return js_1.listSessions; } });
14
21
  Object.defineProperty(exports, "listTrustedDevices", { enumerable: true, get: function () { return js_1.listTrustedDevices; } });
22
+ Object.defineProperty(exports, "regenerateBackupCodes", { enumerable: true, get: function () { return js_1.regenerateBackupCodes; } });
23
+ Object.defineProperty(exports, "removeMfaFactor", { enumerable: true, get: function () { return js_1.removeMfaFactor; } });
24
+ Object.defineProperty(exports, "removePasskey", { enumerable: true, get: function () { return js_1.removePasskey; } });
25
+ Object.defineProperty(exports, "revokeAllSessions", { enumerable: true, get: function () { return js_1.revokeAllSessions; } });
15
26
  Object.defineProperty(exports, "revokeAllTrustedDevices", { enumerable: true, get: function () { return js_1.revokeAllTrustedDevices; } });
27
+ Object.defineProperty(exports, "revokeAccountSession", { enumerable: true, get: function () { return js_1.revokeAccountSession; } });
16
28
  Object.defineProperty(exports, "revokeTrustedDevice", { enumerable: true, get: function () { return js_1.revokeTrustedDevice; } });
17
29
  Object.defineProperty(exports, "setPassword", { enumerable: true, get: function () { return js_1.setPassword; } });
18
- const policies_1 = require("./policies");
30
+ Object.defineProperty(exports, "startSms", { enumerable: true, get: function () { return js_1.startSms; } });
31
+ Object.defineProperty(exports, "startTotp", { enumerable: true, get: function () { return js_1.startTotp; } });
32
+ Object.defineProperty(exports, "unlinkExternalAccount", { enumerable: true, get: function () { return js_1.unlinkExternalAccount; } });
33
+ Object.defineProperty(exports, "updateNotificationPreferences", { enumerable: true, get: function () { return js_1.updateNotificationPreferences; } });
34
+ Object.defineProperty(exports, "verifySms", { enumerable: true, get: function () { return js_1.verifySms; } });
35
+ Object.defineProperty(exports, "verifyTotp", { enumerable: true, get: function () { return js_1.verifyTotp; } });
19
36
  /** The calls bound to a client; separated from React so it is testable with a fake one. */
20
37
  function createAccountSecurityActions(client) {
21
38
  return {
@@ -24,11 +41,21 @@ function createAccountSecurityActions(client) {
24
41
  listTrustedDevices: () => (0, js_1.listTrustedDevices)(client),
25
42
  revokeTrustedDevice: (id) => (0, js_1.revokeTrustedDevice)(client, id),
26
43
  revokeAllTrustedDevices: () => (0, js_1.revokeAllTrustedDevices)(client),
44
+ listSessions: () => (0, js_1.listSessions)(client),
45
+ revokeAccountSession: (id) => (0, js_1.revokeAccountSession)(client, id),
46
+ revokeAllSessions: () => (0, js_1.revokeAllSessions)(client),
47
+ listMfaFactors: () => (0, js_1.listMfaFactors)(client),
48
+ startTotp: () => (0, js_1.startTotp)(client),
49
+ verifyTotp: (factorId, codes) => (0, js_1.verifyTotp)(client, factorId, codes),
50
+ startSms: (phone) => (0, js_1.startSms)(client, phone),
51
+ verifySms: (factorId, code) => (0, js_1.verifySms)(client, factorId, code),
52
+ removeMfaFactor: (factorId) => (0, js_1.removeMfaFactor)(client, factorId),
53
+ regenerateBackupCodes: () => (0, js_1.regenerateBackupCodes)(client),
54
+ listPasskeys: () => (0, js_1.listPasskeys)(client),
55
+ removePasskey: (id) => (0, js_1.removePasskey)(client, id),
56
+ unlinkExternalAccount: (id) => (0, js_1.unlinkExternalAccount)(client, id),
57
+ getNotificationPreferences: () => (0, js_1.getNotificationPreferences)(client),
58
+ updateNotificationPreferences: (preferences) => (0, js_1.updateNotificationPreferences)(client, preferences),
27
59
  };
28
60
  }
29
- /** `const { changePassword } = useAccountSecurity();` bound to the provider's bearer-authenticated client. */
30
- function useAccountSecurity() {
31
- const client = (0, policies_1.useExpoFapiClient)();
32
- return (0, react_1.useMemo)(() => (client ? createAccountSecurityActions(client) : null), [client]);
33
- }
34
61
  //# sourceMappingURL=account-security.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"account-security.js","sourceRoot":"","sources":["../src/account-security.ts"],"names":[],"mappings":";;;AAYA,oEAQC;AAGD,gDAGC;AA1BD;;;;GAIG;AACH,iCAAgC;AAChC,sCAA+I;AAGtI,+FAHA,mBAAc,OAGA;AAAe,mGAHb,uBAAkB,OAGa;AAAuB,wGAHlC,4BAAuB,OAGkC;AAA5C,oGAHY,wBAAmB,OAGZ;AAApD,4FAHkE,gBAAW,OAGlE;AAFpC,yCAA+C;AAI/C,2FAA2F;AAC3F,SAAgB,4BAA4B,CAAC,MAAkB;IAC7D,OAAO;QACL,cAAc,EAAE,CAAC,KAAuD,EAAE,EAAE,CAAC,IAAA,mBAAc,EAAC,MAAM,EAAE,KAAK,CAAC;QAC1G,WAAW,EAAE,CAAC,QAAgB,EAAE,EAAE,CAAC,IAAA,gBAAW,EAAC,MAAM,EAAE,QAAQ,CAAC;QAChE,kBAAkB,EAAE,GAAG,EAAE,CAAC,IAAA,uBAAkB,EAAC,MAAM,CAAC;QACpD,mBAAmB,EAAE,CAAC,EAAU,EAAE,EAAE,CAAC,IAAA,wBAAmB,EAAC,MAAM,EAAE,EAAE,CAAC;QACpE,uBAAuB,EAAE,GAAG,EAAE,CAAC,IAAA,4BAAuB,EAAC,MAAM,CAAC;KAC/D,CAAC;AACJ,CAAC;AAED,8GAA8G;AAC9G,SAAgB,kBAAkB;IAChC,MAAM,MAAM,GAAG,IAAA,4BAAiB,GAAE,CAAC;IACnC,OAAO,IAAA,eAAO,EAAC,GAAG,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,4BAA4B,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;AACzF,CAAC"}
1
+ {"version":3,"file":"account-security.js","sourceRoot":"","sources":["../src/account-security.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -9,3 +9,7 @@ export * from './bridge';
9
9
  export * from './app-approval';
10
10
  export * from './account-security';
11
11
  export { getCaptchaToken, solveAtlasChallengeNative, atlasHeadlessCaptchaSolver, installAtlasCaptchaSolver, type SolveCaptchaOptions, type GetCaptchaTokenOptions, } from '@atlasauth/react-native';
12
+ export * from './account-security-hook';
13
+ export * from './step-up';
14
+ export * from './screens';
15
+ export * from './screens-hook';
package/dist/index.js CHANGED
@@ -59,4 +59,9 @@ Object.defineProperty(exports, "getCaptchaToken", { enumerable: true, get: funct
59
59
  Object.defineProperty(exports, "solveAtlasChallengeNative", { enumerable: true, get: function () { return react_native_1.solveAtlasChallengeNative; } });
60
60
  Object.defineProperty(exports, "atlasHeadlessCaptchaSolver", { enumerable: true, get: function () { return react_native_1.atlasHeadlessCaptchaSolver; } });
61
61
  Object.defineProperty(exports, "installAtlasCaptchaSolver", { enumerable: true, get: function () { return react_native_1.installAtlasCaptchaSolver; } });
62
+ __exportStar(require("./account-security-hook"), exports);
63
+ __exportStar(require("./step-up"), exports);
64
+ // Sign-in and account-security screens as view-models (steps, methods, fields, human errors, step-up inside).
65
+ __exportStar(require("./screens"), exports);
66
+ __exportStar(require("./screens-hook"), exports);
62
67
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,2EAA2E;AAC3E,kEAAkE;AAClE,gDAA8B;AAC9B,gDAA8B;AAC9B,kDAAgC;AAEhC,8EAA8E;AAC9E,mDAAiC;AAEjC;;;;;;;;;;GAUG;AACH,0CAW0B;AAVxB,gGAAA,OAAO,OAAA;AACP,gGAAA,OAAO,OAAA;AACP,mGAAA,UAAU,OAAA;AACV,uGAAA,cAAc,OAAA;AACd,wGAAA,eAAe,OAAA;AACf,iGAAA,QAAQ,OAAA;AACR,kGAAA,SAAS,OAAA;AACT,gGAAA,OAAO,OAAA;AACP,qGAAA,YAAY,OAAA;AACZ,oGAAA,WAAW,OAAA;AAGb,oGAAoG;AACpG,6CAA2B;AAE3B,mGAAmG;AACnG,2CAAyB;AACzB,2CAAyB;AACzB,iDAA+B;AAC/B,qDAAmC;AAEnC,mFAAmF;AACnF,+EAA+E;AAC/E,4DAA4D;AAC5D,wDAOiC;AAN/B,+GAAA,eAAe,OAAA;AACf,yHAAA,yBAAyB,OAAA;AACzB,0HAAA,0BAA0B,OAAA;AAC1B,yHAAA,yBAAyB,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,2EAA2E;AAC3E,kEAAkE;AAClE,gDAA8B;AAC9B,gDAA8B;AAC9B,kDAAgC;AAEhC,8EAA8E;AAC9E,mDAAiC;AAEjC;;;;;;;;;;GAUG;AACH,0CAW0B;AAVxB,gGAAA,OAAO,OAAA;AACP,gGAAA,OAAO,OAAA;AACP,mGAAA,UAAU,OAAA;AACV,uGAAA,cAAc,OAAA;AACd,wGAAA,eAAe,OAAA;AACf,iGAAA,QAAQ,OAAA;AACR,kGAAA,SAAS,OAAA;AACT,gGAAA,OAAO,OAAA;AACP,qGAAA,YAAY,OAAA;AACZ,oGAAA,WAAW,OAAA;AAGb,oGAAoG;AACpG,6CAA2B;AAE3B,mGAAmG;AACnG,2CAAyB;AACzB,2CAAyB;AACzB,iDAA+B;AAC/B,qDAAmC;AAEnC,mFAAmF;AACnF,+EAA+E;AAC/E,4DAA4D;AAC5D,wDAOiC;AAN/B,+GAAA,eAAe,OAAA;AACf,yHAAA,yBAAyB,OAAA;AACzB,0HAAA,0BAA0B,OAAA;AAC1B,yHAAA,yBAAyB,OAAA;AAI3B,0DAAwC;AACxC,4CAA0B;AAE1B,8GAA8G;AAC9G,4CAA0B;AAC1B,iDAA+B"}
@@ -0,0 +1,54 @@
1
+ import type { SecuritySectionKind, SecuritySectionView, SignInScreenView } from '@atlasauth/js';
2
+ import { type SecuritySectionSetup, type SignInScreenSetup } from './screens';
3
+ /**
4
+ * The whole sign-in screen as a view-model: `const { view, ...actions } = useSignInScreen({ apple, google, passkey })`.
5
+ * Render `view.step`, `view.methods`, `view.fields`, `view.error`; call `submit`, `selectMethod`, `sendCode`,
6
+ * `signInWithPasskey`, `signInWithApple`, `signInWithGoogle`. Second-factor setup, recovery codes, policies and required
7
+ * actions are steps of the same view (`enroll_second_factor`, `recovery_codes`, `policies`, `required_action`).
8
+ * No fetch in your app; a completed sign-in is stored by the provider like any other.
9
+ */
10
+ export declare function useSignInScreen(setup?: SignInScreenSetup): {
11
+ getView(): SignInScreenView;
12
+ subscribe(listener: (view: SignInScreenView) => void): () => void;
13
+ flow: import("@atlasauth/js").SignInFlow;
14
+ selectMethod(method: import("@atlasauth/js").SignInMethod): Promise<void>;
15
+ sendCode(): Promise<void>;
16
+ resend(): Promise<void>;
17
+ submit(values?: Record<string, string>): Promise<void>;
18
+ signInWithPasskey(): Promise<void>;
19
+ signInWithApple(): Promise<void>;
20
+ signInWithGoogle(): Promise<void>;
21
+ acknowledgeRecoveryCodes(): Promise<void>;
22
+ acceptPolicies(options?: {
23
+ only?: string[];
24
+ scrolledToEnd?: boolean;
25
+ viewMs?: number;
26
+ }): Promise<void>;
27
+ startIdentityVerification(redirectUrl?: string): Promise<void>;
28
+ checkIdentityVerification(): Promise<void>;
29
+ submitCaptcha(token: string): Promise<void>;
30
+ reset(): void;
31
+ view: SignInScreenView;
32
+ };
33
+ /**
34
+ * One account-security section as a view-model, step-up handled inside:
35
+ * `const { view, remove, startTotp, submit } = useSecuritySection('mfa', { choose })`.
36
+ */
37
+ export declare function useSecuritySection(kind: SecuritySectionKind, setup?: SecuritySectionSetup): {
38
+ getView(): SecuritySectionView;
39
+ subscribe(listener: (view: SecuritySectionView) => void): () => void;
40
+ load(): Promise<void>;
41
+ cancel(): void;
42
+ remove(id: string): Promise<void>;
43
+ revokeOthers(): Promise<void>;
44
+ startTotp(): Promise<void>;
45
+ startSms(phone: string): Promise<void>;
46
+ addPhone(phone: string): Promise<void>;
47
+ verifyPhone(id: string): Promise<void>;
48
+ makePrimary(id: string): Promise<void>;
49
+ addPasskey(): Promise<void>;
50
+ regenerateCodes(): Promise<void>;
51
+ acknowledgeCodes(): void;
52
+ submit(values: Record<string, string>): Promise<void>;
53
+ view: SecuritySectionView;
54
+ };
@@ -0,0 +1,42 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.useSignInScreen = useSignInScreen;
4
+ exports.useSecuritySection = useSecuritySection;
5
+ const react_1 = require("react");
6
+ const policies_1 = require("./policies");
7
+ const screens_1 = require("./screens");
8
+ /**
9
+ * The whole sign-in screen as a view-model: `const { view, ...actions } = useSignInScreen({ apple, google, passkey })`.
10
+ * Render `view.step`, `view.methods`, `view.fields`, `view.error`; call `submit`, `selectMethod`, `sendCode`,
11
+ * `signInWithPasskey`, `signInWithApple`, `signInWithGoogle`. Second-factor setup, recovery codes, policies and required
12
+ * actions are steps of the same view (`enroll_second_factor`, `recovery_codes`, `policies`, `required_action`).
13
+ * No fetch in your app; a completed sign-in is stored by the provider like any other.
14
+ */
15
+ function useSignInScreen(setup = {}) {
16
+ const client = (0, policies_1.useExpoFapiClient)();
17
+ // Created once per client; the setup (providers, localization) is read when the client changes.
18
+ const screen = (0, react_1.useMemo)(() => (0, screens_1.createExpoSignInScreen)(client, setup), [client]); // eslint-disable-line react-hooks/exhaustive-deps
19
+ const view = (0, react_1.useSyncExternalStore)(screen.subscribe, screen.getView, screen.getView);
20
+ return { view, ...screen };
21
+ }
22
+ /**
23
+ * One account-security section as a view-model, step-up handled inside:
24
+ * `const { view, remove, startTotp, submit } = useSecuritySection('mfa', { choose })`.
25
+ */
26
+ function useSecuritySection(kind, setup = {}) {
27
+ const client = (0, policies_1.useExpoFapiClient)();
28
+ // The latest callbacks without re-creating the section on every render.
29
+ const latest = (0, react_1.useRef)(setup);
30
+ latest.current = setup;
31
+ const section = (0, react_1.useMemo)(() => (0, screens_1.createExpoSecuritySection)(client, kind, {
32
+ ...(setup.localization !== undefined ? { localization: setup.localization } : {}),
33
+ ...(setup.choose ? { choose: (request) => latest.current.choose(request) } : {}),
34
+ ...(setup.passkey?.assertion ? { passkey: { assertion: (challenge) => latest.current.passkey.assertion(challenge) } } : {}),
35
+ ...(setup.addPasskey ? { addPasskey: (c) => latest.current.addPasskey(c) } : {}),
36
+ }),
37
+ // eslint-disable-next-line react-hooks/exhaustive-deps
38
+ [client, kind]);
39
+ const view = (0, react_1.useSyncExternalStore)(section.subscribe, section.getView, section.getView);
40
+ return { view, ...section };
41
+ }
42
+ //# sourceMappingURL=screens-hook.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"screens-hook.js","sourceRoot":"","sources":["../src/screens-hook.ts"],"names":[],"mappings":";;AAYA,0CAMC;AAMD,gDAkBC;AA1CD,iCAA8D;AAE9D,yCAA+C;AAC/C,uCAAiI;AAEjI;;;;;;GAMG;AACH,SAAgB,eAAe,CAAC,QAA2B,EAAE;IAC3D,MAAM,MAAM,GAAG,IAAA,4BAAiB,GAAE,CAAC;IACnC,gGAAgG;IAChG,MAAM,MAAM,GAAG,IAAA,eAAO,EAAC,GAAG,EAAE,CAAC,IAAA,gCAAsB,EAAC,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,kDAAkD;IACjI,MAAM,IAAI,GAAqB,IAAA,4BAAoB,EAAC,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;IACtG,OAAO,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,CAAC;AAC7B,CAAC;AAED;;;GAGG;AACH,SAAgB,kBAAkB,CAAC,IAAyB,EAAE,QAA8B,EAAE;IAC5F,MAAM,MAAM,GAAG,IAAA,4BAAiB,GAAE,CAAC;IACnC,wEAAwE;IACxE,MAAM,MAAM,GAAG,IAAA,cAAM,EAAC,KAAK,CAAC,CAAC;IAC7B,MAAM,CAAC,OAAO,GAAG,KAAK,CAAC;IACvB,MAAM,OAAO,GAAG,IAAA,eAAO,EACrB,GAAG,EAAE,CACH,IAAA,mCAAyB,EAAC,MAAM,EAAE,IAAI,EAAE;QACtC,GAAG,CAAC,KAAK,CAAC,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,KAAK,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACjF,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,MAAO,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACjF,GAAG,CAAC,KAAK,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,EAAE,SAAS,EAAE,CAAC,SAAS,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,OAAQ,CAAC,SAAU,CAAC,SAAS,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC7H,GAAG,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,UAAW,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAClF,CAAC;IACJ,uDAAuD;IACvD,CAAC,MAAM,EAAE,IAAI,CAAC,CACf,CAAC;IACF,MAAM,IAAI,GAAwB,IAAA,4BAAoB,EAAC,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;IAC5G,OAAO,EAAE,IAAI,EAAE,GAAG,OAAO,EAAE,CAAC;AAC9B,CAAC"}
@@ -0,0 +1,41 @@
1
+ /**
2
+ * View-models for native sign-in and account-security screens, bound to the provider's bearer-authenticated client.
3
+ * No React in this file (so it is testable in Node); the hooks are in `./screens-hook`.
4
+ *
5
+ * Optional native pieces are passed in, never imported: Apple and Google sheets, a passkey provider from
6
+ * `@atlasauth/expo-passkeys` (`{ signIn: nativePasskeySignIn(Passkey), assertion: nativePasskeyAssertion(Passkey) }`).
7
+ * Whatever you leave out is simply not offered.
8
+ */
9
+ import { type ErrorStrings, type FapiClient, type FieldError, type NativeSignInProvider, type PasskeyAssertionProvider, type SecuritySectionKind, type StepUpFlowOptions } from '@atlasauth/js';
10
+ import { type AppleAuthenticationLike, type GoogleSigninLike } from './social';
11
+ export type { ScreenField, SectionField, SecurityItem, SecuritySection, SecuritySectionKind, SecuritySectionStep, SecuritySectionView, SignInMethod, SignInScreen, SignInScreenStep, SignInScreenView, } from '@atlasauth/js';
12
+ /** A passkey provider for a phone: `@atlasauth/expo-passkeys`'s `nativePasskeySignIn(Passkey)` and `nativePasskeyAssertion(Passkey)`. */
13
+ export interface NativePasskeyProvider {
14
+ /** Passkey sign-in (the one-tap button). */
15
+ signIn?: NativeSignInProvider;
16
+ /** The passkey second factor, and the passkey re-authentication of a step-up. */
17
+ assertion?: PasskeyAssertionProvider;
18
+ }
19
+ export interface SignInScreenSetup {
20
+ localization?: ErrorStrings | null;
21
+ /** `expo-apple-authentication`; offers the Apple button. */
22
+ apple?: AppleAuthenticationLike;
23
+ /** `@react-native-google-signin/google-signin`; offers the Google button. */
24
+ google?: GoogleSigninLike;
25
+ passkey?: NativePasskeyProvider;
26
+ }
27
+ /** The sign-in screen model on a client; separated from React so it is testable with a fake one. */
28
+ export declare function createExpoSignInScreen(client: FapiClient, setup?: SignInScreenSetup): import("@atlasauth/js").SignInScreen;
29
+ export interface SecuritySectionSetup {
30
+ localization?: ErrorStrings | null;
31
+ /** Asks the person to re-authenticate when the server requires it (see `useStepUp`). Without it the view says `stepUpRequired`. */
32
+ choose?: StepUpFlowOptions['choose'];
33
+ passkey?: NativePasskeyProvider;
34
+ /** Registers a passkey on this device (`registerPasskey` from `@atlasauth/expo-passkeys`); offers `add_passkey`. */
35
+ addPasskey?: (client: FapiClient) => Promise<{
36
+ ok: boolean;
37
+ errors: FieldError[];
38
+ }>;
39
+ }
40
+ /** One security section model on a client; separated from React so it is testable with a fake one. */
41
+ export declare function createExpoSecuritySection(client: FapiClient, kind: SecuritySectionKind, setup?: SecuritySectionSetup): import("@atlasauth/js").SecuritySection;
@@ -0,0 +1,39 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createExpoSignInScreen = createExpoSignInScreen;
4
+ exports.createExpoSecuritySection = createExpoSecuritySection;
5
+ /**
6
+ * View-models for native sign-in and account-security screens, bound to the provider's bearer-authenticated client.
7
+ * No React in this file (so it is testable in Node); the hooks are in `./screens-hook`.
8
+ *
9
+ * Optional native pieces are passed in, never imported: Apple and Google sheets, a passkey provider from
10
+ * `@atlasauth/expo-passkeys` (`{ signIn: nativePasskeySignIn(Passkey), assertion: nativePasskeyAssertion(Passkey) }`).
11
+ * Whatever you leave out is simply not offered.
12
+ */
13
+ const js_1 = require("@atlasauth/js");
14
+ const social_1 = require("./social");
15
+ /** The sign-in screen model on a client; separated from React so it is testable with a fake one. */
16
+ function createExpoSignInScreen(client, setup = {}) {
17
+ return (0, js_1.createSignInScreen)({
18
+ client,
19
+ ...(setup.localization !== undefined ? { localization: setup.localization } : {}),
20
+ ...(setup.passkey?.assertion ? { passkeyAssertion: setup.passkey.assertion } : {}),
21
+ nativeSignIn: {
22
+ ...(setup.passkey?.signIn ? { passkey: setup.passkey.signIn } : {}),
23
+ ...(setup.apple ? { apple: (0, social_1.appleSignInProvider)(setup.apple) } : {}),
24
+ ...(setup.google ? { google: (0, social_1.googleSignInProvider)(setup.google) } : {}),
25
+ },
26
+ });
27
+ }
28
+ /** One security section model on a client; separated from React so it is testable with a fake one. */
29
+ function createExpoSecuritySection(client, kind, setup = {}) {
30
+ return (0, js_1.createSecuritySection)({
31
+ client,
32
+ kind,
33
+ ...(setup.localization !== undefined ? { localization: setup.localization } : {}),
34
+ ...(setup.choose ? { choose: setup.choose } : {}),
35
+ ...(setup.passkey?.assertion ? { passkeyAssertion: setup.passkey.assertion } : {}),
36
+ ...(setup.addPasskey ? { addPasskey: setup.addPasskey } : {}),
37
+ });
38
+ }
39
+ //# sourceMappingURL=screens.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"screens.js","sourceRoot":"","sources":["../src/screens.ts"],"names":[],"mappings":";;AAqDA,wDAWC;AAYD,8DASC;AArFD;;;;;;;GAOG;AACH,sCAUuB;AACvB,qCAA0H;AAiC1H,oGAAoG;AACpG,SAAgB,sBAAsB,CAAC,MAAkB,EAAE,QAA2B,EAAE;IACtF,OAAO,IAAA,uBAAkB,EAAC;QACxB,MAAM;QACN,GAAG,CAAC,KAAK,CAAC,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,KAAK,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACjF,GAAG,CAAC,KAAK,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE,gBAAgB,EAAE,KAAK,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAClF,YAAY,EAAE;YACZ,GAAG,CAAC,KAAK,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACnE,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,IAAA,4BAAmB,EAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACnE,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,IAAA,6BAAoB,EAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACxE;KACF,CAAC,CAAC;AACL,CAAC;AAWD,sGAAsG;AACtG,SAAgB,yBAAyB,CAAC,MAAkB,EAAE,IAAyB,EAAE,QAA8B,EAAE;IACvH,OAAO,IAAA,0BAAqB,EAAC;QAC3B,MAAM;QACN,IAAI;QACJ,GAAG,CAAC,KAAK,CAAC,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,KAAK,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACjF,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACjD,GAAG,CAAC,KAAK,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE,gBAAgB,EAAE,KAAK,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAClF,GAAG,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,KAAK,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC9D,CAAC,CAAC;AACL,CAAC"}
package/dist/social.d.ts CHANGED
@@ -4,7 +4,7 @@
4
4
  * /v1/client/sign_ins/id_token`) and traded for a session. The provider's token
5
5
  * cache stores the returned session JWT.
6
6
  */
7
- import { type FapiClient, type FieldError, type LinkExternalAccountResult } from '@atlasauth/js';
7
+ import { type FapiClient, type FieldError, type LinkExternalAccountResult, type NativeSignInProvider } from '@atlasauth/js';
8
8
  export interface NativeSocialResult {
9
9
  status: 'complete' | 'needs_more' | 'error' | 'cancelled';
10
10
  jwt?: string;
@@ -49,3 +49,10 @@ export interface GoogleSigninLike {
49
49
  }
50
50
  /** Sign in with the Google system sheet (use `@atlasauth/expo-google-signin` for Play Services checks). */
51
51
  export declare function signInWithGoogle(client: FapiClient, google: GoogleSigninLike): Promise<NativeSocialResult>;
52
+ /**
53
+ * The Apple sheet as a `nativeSignIn.apple` provider for `createSignInFlow` / `useSignInScreen`: the nonce, the sheet,
54
+ * then the id token, returned as the flow's own state so a second factor or policy continues in the same flow.
55
+ */
56
+ export declare function appleSignInProvider(apple: AppleAuthenticationLike): NativeSignInProvider;
57
+ /** The Google sheet as a `nativeSignIn.google` provider; see {@link appleSignInProvider}. */
58
+ export declare function googleSignInProvider(google: GoogleSigninLike): NativeSignInProvider;
package/dist/social.js CHANGED
@@ -4,6 +4,8 @@ exports.signInWithIdToken = signInWithIdToken;
4
4
  exports.linkWithIdToken = linkWithIdToken;
5
5
  exports.signInWithApple = signInWithApple;
6
6
  exports.signInWithGoogle = signInWithGoogle;
7
+ exports.appleSignInProvider = appleSignInProvider;
8
+ exports.googleSignInProvider = googleSignInProvider;
7
9
  /**
8
10
  * Native Google / Apple sign-in for the provider's client: the system sheet
9
11
  * yields a provider ID token, which is sent to Atlas (`POST
@@ -65,4 +67,43 @@ async function signInWithGoogle(client, google) {
65
67
  return { status: 'cancelled', errors: [] };
66
68
  return signInWithIdToken(client, { provider: 'google', idToken, nonce });
67
69
  }
70
+ const nativeFlow = (errors) => ({ attempt: null, errors, busy: false, pollSecret: null, ticket: null });
71
+ const cancelled = () => nativeFlow([{ code: 'NATIVE_CANCELLED', reason: 'native_cancelled', message: 'The sign-in was cancelled.' }]);
72
+ /**
73
+ * The Apple sheet as a `nativeSignIn.apple` provider for `createSignInFlow` / `useSignInScreen`: the nonce, the sheet,
74
+ * then the id token, returned as the flow's own state so a second factor or policy continues in the same flow.
75
+ */
76
+ function appleSignInProvider(apple) {
77
+ return async (client) => {
78
+ const nonce = (await (0, js_1.mintNativeNonce)(client, 'apple')) ?? undefined;
79
+ if (!nonce)
80
+ return nativeFlow([{ code: 'NONCE', message: 'Could not start Apple sign-in.' }]);
81
+ let idToken;
82
+ try {
83
+ ({ identityToken: idToken } = await apple.signInAsync({ requestedScopes: [apple.AppleAuthenticationScope.EMAIL, apple.AppleAuthenticationScope.FULL_NAME], nonce }));
84
+ }
85
+ catch {
86
+ return cancelled();
87
+ }
88
+ return idToken ? (0, js_1.nativeSignIn)(client, { provider: 'apple', idToken, nonce }) : cancelled();
89
+ };
90
+ }
91
+ /** The Google sheet as a `nativeSignIn.google` provider; see {@link appleSignInProvider}. */
92
+ function googleSignInProvider(google) {
93
+ return async (client) => {
94
+ const nonce = (await (0, js_1.mintNativeNonce)(client, 'google')) ?? undefined;
95
+ if (!nonce)
96
+ return nativeFlow([{ code: 'NONCE', message: 'Could not start Google sign-in.' }]);
97
+ let response;
98
+ try {
99
+ response = await google.signIn({ nonce });
100
+ }
101
+ catch {
102
+ return cancelled();
103
+ }
104
+ const r = response;
105
+ const idToken = r?.data?.idToken ?? r?.idToken;
106
+ return idToken ? (0, js_1.nativeSignIn)(client, { provider: 'google', idToken, nonce }) : cancelled();
107
+ };
108
+ }
68
109
  //# sourceMappingURL=social.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"social.js","sourceRoot":"","sources":["../src/social.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"social.js","sourceRoot":"","sources":["../src/social.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ import { type FapiClient, type StepUpFlowOptions } from '@atlasauth/js';
2
+ export type { StepUpChoice, StepUpFactor, StepUpRequest } from '@atlasauth/js';
3
+ export { StepUpCancelledError, stepUpRequirement } from '@atlasauth/js';
4
+ export type UseStepUpOptions = Omit<StepUpFlowOptions, 'client'>;
5
+ /** The step-up calls bound to a client; separated from React so it is testable with a fake one. */
6
+ export declare function createExpoStepUp(client: FapiClient, options: UseStepUpOptions): {
7
+ withStepUp<T>(call: () => Promise<import("@atlasauth/js").FapiResponse<T>>): Promise<import("@atlasauth/js").FapiResponse<T>>;
8
+ reauthenticate(action?: string): Promise<import("@atlasauth/js").StepUpResult>;
9
+ };
10
+ /** `withStepUp(call)` and `reauthenticate()` on the provider's bearer-authenticated client. */
11
+ export declare function useStepUp(options: UseStepUpOptions): {
12
+ withStepUp<T>(call: () => Promise<import("@atlasauth/js").FapiResponse<T>>): Promise<import("@atlasauth/js").FapiResponse<T>>;
13
+ reauthenticate(action?: string): Promise<import("@atlasauth/js").StepUpResult>;
14
+ };
@@ -0,0 +1,50 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.stepUpRequirement = exports.StepUpCancelledError = void 0;
4
+ exports.createExpoStepUp = createExpoStepUp;
5
+ exports.useStepUp = useStepUp;
6
+ /**
7
+ * Re-authenticate from a native app, on the bearer session, with no sign-out.
8
+ *
9
+ * ```ts
10
+ * const { withStepUp } = useStepUp({
11
+ * choose: ({ factors, error }) => askWithYourOwnSheet(factors, error), // → { strategy: 'totp', code } | { strategy: 'passkey' } | null
12
+ * passkeyAssertion: nativePasskeyAssertion(Passkey), // from @atlasauth/expo-passkeys
13
+ * });
14
+ * const res = await withStepUp(() => enrollTotp(client));
15
+ * ```
16
+ *
17
+ * `choose` is only offered the factors the account holds and the refusal accepts.
18
+ * The re-minted session token the server returns is stored by the provider's token
19
+ * cache like any other rotated token.
20
+ */
21
+ const react_1 = require("react");
22
+ const js_1 = require("@atlasauth/js");
23
+ const policies_1 = require("./policies");
24
+ var js_2 = require("@atlasauth/js");
25
+ Object.defineProperty(exports, "StepUpCancelledError", { enumerable: true, get: function () { return js_2.StepUpCancelledError; } });
26
+ Object.defineProperty(exports, "stepUpRequirement", { enumerable: true, get: function () { return js_2.stepUpRequirement; } });
27
+ /** The step-up calls bound to a client; separated from React so it is testable with a fake one. */
28
+ function createExpoStepUp(client, options) {
29
+ return (0, js_1.createStepUp)({ client, ...options });
30
+ }
31
+ /** `withStepUp(call)` and `reauthenticate()` on the provider's bearer-authenticated client. */
32
+ function useStepUp(options) {
33
+ const client = (0, policies_1.useExpoFapiClient)();
34
+ // The latest callbacks without re-creating the actions on every render.
35
+ const latest = (0, react_1.useRef)(options);
36
+ latest.current = options;
37
+ return (0, react_1.useMemo)(() => createExpoStepUp(client, {
38
+ choose: (request) => latest.current.choose(request),
39
+ passkeyAssertion: (challenge) => {
40
+ const provider = latest.current.passkeyAssertion;
41
+ if (!provider)
42
+ throw new Error('Pass passkeyAssertion to useStepUp to use a passkey.');
43
+ return provider(challenge);
44
+ },
45
+ ...(options.maxAttempts ? { maxAttempts: options.maxAttempts } : {}),
46
+ }),
47
+ // eslint-disable-next-line react-hooks/exhaustive-deps
48
+ [client]);
49
+ }
50
+ //# sourceMappingURL=step-up.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"step-up.js","sourceRoot":"","sources":["../src/step-up.ts"],"names":[],"mappings":";;;AAyBA,4CAEC;AAGD,8BAmBC;AAjDD;;;;;;;;;;;;;;GAcG;AACH,iCAAwC;AACxC,sCAAsF;AACtF,yCAA+C;AAG/C,oCAAwE;AAA/D,0GAAA,oBAAoB,OAAA;AAAE,uGAAA,iBAAiB,OAAA;AAIhD,mGAAmG;AACnG,SAAgB,gBAAgB,CAAC,MAAkB,EAAE,OAAyB;IAC5E,OAAO,IAAA,iBAAY,EAAC,EAAE,MAAM,EAAE,GAAG,OAAO,EAAE,CAAC,CAAC;AAC9C,CAAC;AAED,+FAA+F;AAC/F,SAAgB,SAAS,CAAC,OAAyB;IACjD,MAAM,MAAM,GAAG,IAAA,4BAAiB,GAAE,CAAC;IACnC,wEAAwE;IACxE,MAAM,MAAM,GAAG,IAAA,cAAM,EAAC,OAAO,CAAC,CAAC;IAC/B,MAAM,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,OAAO,IAAA,eAAO,EACZ,GAAG,EAAE,CACH,gBAAgB,CAAC,MAAM,EAAE;QACvB,MAAM,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC;QACnD,gBAAgB,EAAE,CAAC,SAAS,EAAE,EAAE;YAC9B,MAAM,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC,gBAAgB,CAAC;YACjD,IAAI,CAAC,QAAQ;gBAAE,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC,CAAC;YACvF,OAAO,QAAQ,CAAC,SAAS,CAAC,CAAC;QAC7B,CAAC;QACD,GAAG,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACrE,CAAC;IACJ,uDAAuD;IACvD,CAAC,MAAM,CAAC,CACT,CAAC;AACJ,CAAC"}
package/package.json CHANGED
@@ -1,14 +1,35 @@
1
1
  {
2
2
  "name": "@atlasauth/expo",
3
- "version": "0.7.0",
3
+ "version": "0.9.0",
4
4
  "main": "./dist/index.js",
5
5
  "types": "./dist/index.d.ts",
6
+ "exports": {
7
+ ".": {
8
+ "types": "./dist/index.d.ts",
9
+ "default": "./dist/index.js"
10
+ },
11
+ "./account-security": {
12
+ "types": "./dist/account-security.d.ts",
13
+ "default": "./dist/account-security.js"
14
+ },
15
+ "./package.json": "./package.json"
16
+ },
17
+ "typesVersions": {
18
+ "*": {
19
+ "account-security": [
20
+ "./dist/account-security.d.ts"
21
+ ]
22
+ }
23
+ },
24
+ "sideEffects": [
25
+ "./dist/index.js"
26
+ ],
6
27
  "dependencies": {
7
- "@atlasauth/react-native": "^0.8.0",
8
- "@atlasauth/react": "^0.35.0"
28
+ "@atlasauth/react": "^0.35.0",
29
+ "@atlasauth/react-native": "^0.8.0"
9
30
  },
10
31
  "peerDependencies": {
11
- "@atlasauth/js": ">=0.41.0 <1.0.0",
32
+ "@atlasauth/js": ">=0.43.0 <1.0.0",
12
33
  "react": ">=18",
13
34
  "react-native": ">=0.73",
14
35
  "expo-secure-store": ">=12",
@@ -37,7 +58,7 @@
37
58
  "react": "^18.3.1",
38
59
  "typescript": "^5.6.3",
39
60
  "vitest": "^3.2.7",
40
- "@atlasauth/js": "0.41.0"
61
+ "@atlasauth/js": "0.43.0"
41
62
  },
42
63
  "publishConfig": {
43
64
  "access": "public"