react-native-authsignal 2.3.7 → 2.3.8

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 (72) hide show
  1. package/lib/commonjs/email.js +11 -18
  2. package/lib/commonjs/email.js.map +1 -1
  3. package/lib/commonjs/error.js +2 -4
  4. package/lib/commonjs/error.js.map +1 -1
  5. package/lib/commonjs/inapp.js +34 -46
  6. package/lib/commonjs/inapp.js.map +1 -1
  7. package/lib/commonjs/index.js +6 -19
  8. package/lib/commonjs/index.js.map +1 -1
  9. package/lib/commonjs/passkey.js +21 -30
  10. package/lib/commonjs/passkey.js.map +1 -1
  11. package/lib/commonjs/push.js +15 -22
  12. package/lib/commonjs/push.js.map +1 -1
  13. package/lib/commonjs/qr.js +18 -26
  14. package/lib/commonjs/qr.js.map +1 -1
  15. package/lib/commonjs/sms.js +11 -18
  16. package/lib/commonjs/sms.js.map +1 -1
  17. package/lib/commonjs/totp.js +8 -14
  18. package/lib/commonjs/totp.js.map +1 -1
  19. package/lib/commonjs/types.js +2 -4
  20. package/lib/commonjs/types.js.map +1 -1
  21. package/lib/commonjs/whatsapp.js +8 -14
  22. package/lib/commonjs/whatsapp.js.map +1 -1
  23. package/lib/module/email.js +11 -18
  24. package/lib/module/email.js.map +1 -1
  25. package/lib/module/error.js.map +1 -1
  26. package/lib/module/inapp.js +34 -46
  27. package/lib/module/inapp.js.map +1 -1
  28. package/lib/module/index.js +6 -19
  29. package/lib/module/index.js.map +1 -1
  30. package/lib/module/passkey.js +21 -30
  31. package/lib/module/passkey.js.map +1 -1
  32. package/lib/module/push.js +15 -22
  33. package/lib/module/push.js.map +1 -1
  34. package/lib/module/qr.js +18 -26
  35. package/lib/module/qr.js.map +1 -1
  36. package/lib/module/sms.js +11 -18
  37. package/lib/module/sms.js.map +1 -1
  38. package/lib/module/totp.js +8 -14
  39. package/lib/module/totp.js.map +1 -1
  40. package/lib/module/types.js.map +1 -1
  41. package/lib/module/whatsapp.js +8 -14
  42. package/lib/module/whatsapp.js.map +1 -1
  43. package/package.json +5 -5
  44. package/.editorconfig +0 -15
  45. package/.gitattributes +0 -3
  46. package/.github/images/authsignal.png +0 -0
  47. package/.github/pull_request_template.md +0 -12
  48. package/.github/release-drafter-config.yml +0 -75
  49. package/.github/workflows/release-drafter.yml +0 -25
  50. package/.github/workflows/release-package.yml +0 -25
  51. package/.gitignore +0 -67
  52. package/.npmignore +0 -1
  53. package/.watchmanconfig +0 -1
  54. package/android/gradle/wrapper/gradle-wrapper.jar +0 -0
  55. package/android/gradle/wrapper/gradle-wrapper.properties +0 -7
  56. package/android/gradlew +0 -234
  57. package/android/gradlew.bat +0 -89
  58. package/babel.config.js +0 -3
  59. package/src/email.ts +0 -94
  60. package/src/error.ts +0 -28
  61. package/src/inapp.ts +0 -210
  62. package/src/index.tsx +0 -100
  63. package/src/passkey.ts +0 -179
  64. package/src/push.ts +0 -150
  65. package/src/qr.ts +0 -153
  66. package/src/sms.ts +0 -96
  67. package/src/totp.ts +0 -83
  68. package/src/types.ts +0 -151
  69. package/src/whatsapp.ts +0 -78
  70. package/tsconfig.build.json +0 -5
  71. package/tsconfig.json +0 -28
  72. package/yarn.lock +0 -6420
package/src/index.tsx DELETED
@@ -1,100 +0,0 @@
1
- import { NativeModules, Platform } from 'react-native';
2
- import { LINKING_ERROR } from './error';
3
- import { AuthsignalEmail } from './email';
4
- import { AuthsignalPasskey } from './passkey';
5
- import { AuthsignalPush } from './push';
6
- import { AuthsignalSms } from './sms';
7
- import { AuthsignalTotp } from './totp';
8
- import { AuthsignalQrCode } from './qr';
9
- import { AuthsignalWhatsapp } from './whatsapp';
10
- import { AuthsignalInApp } from './inapp';
11
-
12
- export * from './types';
13
- export { ErrorCode } from './error';
14
-
15
- const AuthsignalModule = NativeModules.AuthsignalModule
16
- ? NativeModules.AuthsignalModule
17
- : new Proxy(
18
- {},
19
- {
20
- get() {
21
- throw new Error(LINKING_ERROR);
22
- },
23
- }
24
- );
25
-
26
- interface ConstructorArgs {
27
- tenantID: string;
28
- baseURL?: string;
29
- deviceID?: string;
30
- enableLogging?: boolean;
31
- }
32
-
33
- export class Authsignal {
34
- tenantID: string;
35
- baseURL: string;
36
- enableLogging: boolean;
37
-
38
- email: AuthsignalEmail;
39
- passkey: AuthsignalPasskey;
40
- push: AuthsignalPush;
41
- qr: AuthsignalQrCode;
42
- inapp: AuthsignalInApp;
43
- sms: AuthsignalSms;
44
- totp: AuthsignalTotp;
45
- whatsapp: AuthsignalWhatsapp;
46
-
47
- constructor({
48
- tenantID,
49
- baseURL = 'https://api.authsignal.com/v1',
50
- deviceID,
51
- enableLogging = __DEV__,
52
- }: ConstructorArgs) {
53
- this.tenantID = tenantID;
54
- this.baseURL = baseURL;
55
- this.enableLogging = enableLogging;
56
-
57
- const input = { tenantID, baseURL, deviceID, enableLogging };
58
-
59
- this.passkey = new AuthsignalPasskey(input);
60
- this.email = new AuthsignalEmail(input);
61
- this.push = new AuthsignalPush(input);
62
- this.qr = new AuthsignalQrCode(input);
63
- this.inapp = new AuthsignalInApp(input);
64
- this.sms = new AuthsignalSms(input);
65
- this.totp = new AuthsignalTotp(input);
66
- this.whatsapp = new AuthsignalWhatsapp(input);
67
- }
68
-
69
- async setToken(token: string): Promise<void> {
70
- await AuthsignalModule.setToken(token);
71
- }
72
-
73
- async launch(url: string): Promise<string | null> {
74
- return await launch(url);
75
- }
76
- }
77
-
78
- export function launch(url: string): Promise<string | null> {
79
- if (Platform.OS === 'ios') {
80
- return AuthsignalModule.launch(url);
81
- } else {
82
- return new Promise((resolve, reject) => {
83
- const callback = (error: any, token: string) => {
84
- if (token) {
85
- resolve(token);
86
- } else if (error) {
87
- if (error.error === 'user_cancelled') {
88
- resolve(null);
89
- } else {
90
- reject(error);
91
- }
92
- } else {
93
- reject('Unexpected error');
94
- }
95
- };
96
-
97
- AuthsignalModule.launch(url, callback);
98
- });
99
- }
100
- }
package/src/passkey.ts DELETED
@@ -1,179 +0,0 @@
1
- import { NativeModules, Platform } from 'react-native';
2
- import { LINKING_ERROR, handleErrorCodes } from './error';
3
- import type {
4
- AuthsignalResponse,
5
- SignInResponse,
6
- SignUpResponse,
7
- } from './types';
8
-
9
- interface ConstructorArgs {
10
- tenantID: string;
11
- baseURL: string;
12
- deviceID?: string;
13
- enableLogging: boolean;
14
- }
15
-
16
- interface PasskeySignUpInput {
17
- token?: string;
18
- username?: string;
19
- displayName?: string;
20
- ignorePasskeyAlreadyExistsError?: boolean;
21
- }
22
-
23
- interface PasskeySignInInput {
24
- action?: string;
25
- token?: string;
26
- autofill?: boolean;
27
- preferImmediatelyAvailableCredentials?: boolean;
28
- }
29
-
30
- let initialized = false;
31
- let autofillRequestPending = false;
32
-
33
- const AuthsignalPasskeyModule = NativeModules.AuthsignalPasskeyModule
34
- ? NativeModules.AuthsignalPasskeyModule
35
- : new Proxy(
36
- {},
37
- {
38
- get() {
39
- throw new Error(LINKING_ERROR);
40
- },
41
- }
42
- );
43
-
44
- export class AuthsignalPasskey {
45
- tenantID: string;
46
- baseURL: string;
47
- deviceID?: string;
48
- enableLogging: boolean;
49
-
50
- constructor({ tenantID, baseURL, deviceID, enableLogging }: ConstructorArgs) {
51
- this.tenantID = tenantID;
52
- this.baseURL = baseURL;
53
- this.deviceID = deviceID;
54
- this.enableLogging = enableLogging;
55
- }
56
-
57
- async signUp({
58
- token,
59
- username,
60
- displayName,
61
- ignorePasskeyAlreadyExistsError = false,
62
- }: PasskeySignUpInput = {}): Promise<AuthsignalResponse<SignUpResponse>> {
63
- await this.ensureModuleIsInitialized();
64
-
65
- try {
66
- const data = await AuthsignalPasskeyModule.signUp(
67
- token,
68
- username,
69
- displayName,
70
- ignorePasskeyAlreadyExistsError
71
- );
72
-
73
- return { data };
74
- } catch (ex) {
75
- if (this.enableLogging) {
76
- console.log(ex);
77
- }
78
-
79
- return handleErrorCodes(ex);
80
- }
81
- }
82
-
83
- async signIn({
84
- action,
85
- token,
86
- autofill = false,
87
- preferImmediatelyAvailableCredentials = true,
88
- }: PasskeySignInInput = {}): Promise<AuthsignalResponse<SignInResponse>> {
89
- await this.ensureModuleIsInitialized();
90
-
91
- try {
92
- if (autofill) {
93
- if (autofillRequestPending) {
94
- return {};
95
- } else {
96
- autofillRequestPending = true;
97
- }
98
- }
99
-
100
- if (Platform.OS === 'ios') {
101
- const data = await AuthsignalPasskeyModule.signIn(
102
- action,
103
- token,
104
- autofill,
105
- preferImmediatelyAvailableCredentials
106
- );
107
-
108
- autofillRequestPending = false;
109
-
110
- return { data };
111
- } else {
112
- const data = await AuthsignalPasskeyModule.signIn(
113
- action,
114
- token,
115
- preferImmediatelyAvailableCredentials
116
- );
117
-
118
- autofillRequestPending = false;
119
-
120
- return { data };
121
- }
122
- } catch (ex) {
123
- if (this.enableLogging && !autofill) {
124
- console.log(ex);
125
- }
126
-
127
- autofillRequestPending = false;
128
-
129
- return handleErrorCodes(ex);
130
- }
131
- }
132
-
133
- cancel() {
134
- if (Platform.OS === 'ios') {
135
- AuthsignalPasskeyModule.cancel();
136
- }
137
- }
138
-
139
- isSupported(): boolean {
140
- if (Platform.OS === 'android') {
141
- return Platform.Version >= 28;
142
- } else if (Platform.OS === 'ios') {
143
- return parseInt(Platform.Version, 10) >= 15;
144
- } else {
145
- return false;
146
- }
147
- }
148
-
149
- async shouldPromptToCreatePasskey({
150
- username,
151
- }: { username?: string } = {}): Promise<boolean> {
152
- await this.ensureModuleIsInitialized();
153
-
154
- return await AuthsignalPasskeyModule.shouldPromptToCreatePasskey(username);
155
- }
156
-
157
- /**
158
- * @deprecated Use 'preferImmediatelyAvailableCredentials' to control what happens when a passkey isn't available, or use 'shouldPromptToCreatePasskey' to check if you should prompt the user to create a passkey.
159
- */
160
- async isAvailableOnDevice(): Promise<boolean> {
161
- await this.ensureModuleIsInitialized();
162
-
163
- return await AuthsignalPasskeyModule.isAvailableOnDevice();
164
- }
165
-
166
- private async ensureModuleIsInitialized() {
167
- if (initialized) {
168
- return;
169
- }
170
-
171
- await AuthsignalPasskeyModule.initialize(
172
- this.tenantID,
173
- this.baseURL,
174
- this.deviceID
175
- );
176
-
177
- initialized = true;
178
- }
179
- }
package/src/push.ts DELETED
@@ -1,150 +0,0 @@
1
- import { NativeModules, Platform } from 'react-native';
2
- import { handleErrorCodes, LINKING_ERROR } from './error';
3
- import type {
4
- AddCredentialInput,
5
- AppChallenge,
6
- AppCredential,
7
- AuthsignalResponse,
8
- UpdateChallengeInput,
9
- } from './types';
10
-
11
- interface ConstructorArgs {
12
- tenantID: string;
13
- baseURL: string;
14
- enableLogging: boolean;
15
- }
16
-
17
- let initialized = false;
18
-
19
- const AuthsignalPushModule = NativeModules.AuthsignalPushModule
20
- ? NativeModules.AuthsignalPushModule
21
- : new Proxy(
22
- {},
23
- {
24
- get() {
25
- throw new Error(LINKING_ERROR);
26
- },
27
- }
28
- );
29
-
30
- export class AuthsignalPush {
31
- tenantID: string;
32
- baseURL: string;
33
- enableLogging: boolean;
34
-
35
- constructor({ tenantID, baseURL, enableLogging }: ConstructorArgs) {
36
- this.tenantID = tenantID;
37
- this.baseURL = baseURL;
38
- this.enableLogging = enableLogging;
39
- }
40
-
41
- async getCredential(): Promise<
42
- AuthsignalResponse<AppCredential | undefined>
43
- > {
44
- await this.ensureModuleIsInitialized();
45
-
46
- try {
47
- const data = await AuthsignalPushModule.getCredential();
48
-
49
- return { data };
50
- } catch (ex) {
51
- if (this.enableLogging) {
52
- console.log(ex);
53
- }
54
-
55
- return handleErrorCodes(ex);
56
- }
57
- }
58
-
59
- async addCredential({
60
- token,
61
- requireUserAuthentication = false,
62
- keychainAccess,
63
- }: AddCredentialInput = {}): Promise<AuthsignalResponse<AppCredential>> {
64
- await this.ensureModuleIsInitialized();
65
-
66
- try {
67
- const data =
68
- Platform.OS === 'ios'
69
- ? await AuthsignalPushModule.addCredential(
70
- token,
71
- requireUserAuthentication,
72
- keychainAccess
73
- )
74
- : await AuthsignalPushModule.addCredential(token);
75
-
76
- return { data };
77
- } catch (ex) {
78
- if (this.enableLogging) {
79
- console.log(ex);
80
- }
81
-
82
- return handleErrorCodes(ex);
83
- }
84
- }
85
-
86
- async removeCredential(): Promise<AuthsignalResponse<boolean>> {
87
- await this.ensureModuleIsInitialized();
88
-
89
- try {
90
- const data = await AuthsignalPushModule.removeCredential();
91
- return { data };
92
- } catch (ex) {
93
- if (this.enableLogging) {
94
- console.log(ex);
95
- }
96
-
97
- return handleErrorCodes(ex);
98
- }
99
- }
100
-
101
- async getChallenge(): Promise<AuthsignalResponse<AppChallenge | undefined>> {
102
- await this.ensureModuleIsInitialized();
103
-
104
- try {
105
- const data = await AuthsignalPushModule.getChallenge();
106
-
107
- return { data };
108
- } catch (ex) {
109
- if (this.enableLogging) {
110
- console.log(ex);
111
- }
112
-
113
- return handleErrorCodes(ex);
114
- }
115
- }
116
-
117
- async updateChallenge({
118
- challengeId,
119
- approved,
120
- verificationCode = null,
121
- }: UpdateChallengeInput): Promise<AuthsignalResponse<boolean>> {
122
- await this.ensureModuleIsInitialized();
123
-
124
- try {
125
- const data = await AuthsignalPushModule.updateChallenge(
126
- challengeId,
127
- approved,
128
- verificationCode
129
- );
130
-
131
- return { data };
132
- } catch (ex) {
133
- if (this.enableLogging) {
134
- console.log(ex);
135
- }
136
-
137
- return handleErrorCodes(ex);
138
- }
139
- }
140
-
141
- private async ensureModuleIsInitialized() {
142
- if (initialized) {
143
- return;
144
- }
145
-
146
- await AuthsignalPushModule.initialize(this.tenantID, this.baseURL);
147
-
148
- initialized = true;
149
- }
150
- }
package/src/qr.ts DELETED
@@ -1,153 +0,0 @@
1
- import { NativeModules, Platform } from 'react-native';
2
- import { handleErrorCodes, LINKING_ERROR } from './error';
3
- import type {
4
- AddCredentialInput,
5
- AppCredential,
6
- AuthsignalResponse,
7
- ClaimChallengeInput,
8
- ClaimChallengeResponse,
9
- UpdateChallengeInput,
10
- } from './types';
11
-
12
- interface ConstructorArgs {
13
- tenantID: string;
14
- baseURL: string;
15
- enableLogging: boolean;
16
- }
17
-
18
- let initialized = false;
19
-
20
- const AuthsignalQRCodeModule = NativeModules.AuthsignalQRCodeModule
21
- ? NativeModules.AuthsignalQRCodeModule
22
- : new Proxy(
23
- {},
24
- {
25
- get() {
26
- throw new Error(LINKING_ERROR);
27
- },
28
- }
29
- );
30
-
31
- export class AuthsignalQrCode {
32
- tenantID: string;
33
- baseURL: string;
34
- enableLogging: boolean;
35
-
36
- constructor({ tenantID, baseURL, enableLogging }: ConstructorArgs) {
37
- this.tenantID = tenantID;
38
- this.baseURL = baseURL;
39
- this.enableLogging = enableLogging;
40
- }
41
-
42
- async getCredential(): Promise<
43
- AuthsignalResponse<AppCredential | undefined>
44
- > {
45
- await this.ensureModuleIsInitialized();
46
-
47
- try {
48
- const data = await AuthsignalQRCodeModule.getCredential();
49
-
50
- return { data };
51
- } catch (ex) {
52
- if (this.enableLogging) {
53
- console.log(ex);
54
- }
55
-
56
- return handleErrorCodes(ex);
57
- }
58
- }
59
-
60
- async addCredential({
61
- token,
62
- requireUserAuthentication = false,
63
- keychainAccess,
64
- }: AddCredentialInput = {}): Promise<AuthsignalResponse<AppCredential>> {
65
- await this.ensureModuleIsInitialized();
66
-
67
- try {
68
- const data =
69
- Platform.OS === 'ios'
70
- ? await AuthsignalQRCodeModule.addCredential(
71
- token,
72
- requireUserAuthentication,
73
- keychainAccess
74
- )
75
- : await AuthsignalQRCodeModule.addCredential(token);
76
-
77
- return { data };
78
- } catch (ex) {
79
- if (this.enableLogging) {
80
- console.log(ex);
81
- }
82
-
83
- return handleErrorCodes(ex);
84
- }
85
- }
86
-
87
- async removeCredential(): Promise<AuthsignalResponse<boolean>> {
88
- await this.ensureModuleIsInitialized();
89
-
90
- try {
91
- const data = await AuthsignalQRCodeModule.removeCredential();
92
- return { data };
93
- } catch (ex) {
94
- if (this.enableLogging) {
95
- console.log(ex);
96
- }
97
-
98
- return handleErrorCodes(ex);
99
- }
100
- }
101
-
102
- async claimChallenge({
103
- challengeId,
104
- }: ClaimChallengeInput): Promise<AuthsignalResponse<ClaimChallengeResponse>> {
105
- await this.ensureModuleIsInitialized();
106
-
107
- try {
108
- const data = await AuthsignalQRCodeModule.claimChallenge(challengeId);
109
-
110
- return { data };
111
- } catch (ex) {
112
- if (this.enableLogging) {
113
- console.log(ex);
114
- }
115
-
116
- return handleErrorCodes(ex);
117
- }
118
- }
119
-
120
- async updateChallenge({
121
- challengeId,
122
- approved,
123
- verificationCode = null,
124
- }: UpdateChallengeInput): Promise<AuthsignalResponse<boolean>> {
125
- await this.ensureModuleIsInitialized();
126
-
127
- try {
128
- const data = await AuthsignalQRCodeModule.updateChallenge(
129
- challengeId,
130
- approved,
131
- verificationCode
132
- );
133
-
134
- return { data };
135
- } catch (ex) {
136
- if (this.enableLogging) {
137
- console.log(ex);
138
- }
139
-
140
- return handleErrorCodes(ex);
141
- }
142
- }
143
-
144
- private async ensureModuleIsInitialized() {
145
- if (initialized) {
146
- return;
147
- }
148
-
149
- await AuthsignalQRCodeModule.initialize(this.tenantID, this.baseURL);
150
-
151
- initialized = true;
152
- }
153
- }
package/src/sms.ts DELETED
@@ -1,96 +0,0 @@
1
- import { NativeModules } from 'react-native';
2
- import { handleErrorCodes, LINKING_ERROR } from './error';
3
- import type { AuthsignalResponse, VerifyInput, VerifyResponse } from './types';
4
-
5
- interface ConstructorArgs {
6
- tenantID: string;
7
- baseURL: string;
8
- enableLogging: boolean;
9
- }
10
-
11
- interface EnrollSmsInput {
12
- phoneNumber: string;
13
- }
14
-
15
- let initialized = false;
16
-
17
- const AuthsignalSMSModule = NativeModules.AuthsignalSMSModule
18
- ? NativeModules.AuthsignalSMSModule
19
- : new Proxy(
20
- {},
21
- {
22
- get() {
23
- throw new Error(LINKING_ERROR);
24
- },
25
- }
26
- );
27
-
28
- export class AuthsignalSms {
29
- tenantID: string;
30
- baseURL: string;
31
- enableLogging: boolean;
32
-
33
- constructor({ tenantID, baseURL, enableLogging }: ConstructorArgs) {
34
- this.tenantID = tenantID;
35
- this.baseURL = baseURL;
36
- this.enableLogging = enableLogging;
37
- }
38
-
39
- async enroll({
40
- phoneNumber,
41
- }: EnrollSmsInput): Promise<AuthsignalResponse<void>> {
42
- await this.ensureModuleIsInitialized();
43
-
44
- try {
45
- await AuthsignalSMSModule.enroll(phoneNumber);
46
-
47
- return {};
48
- } catch (ex) {
49
- return this.handleError(ex);
50
- }
51
- }
52
-
53
- async challenge(): Promise<AuthsignalResponse<void>> {
54
- await this.ensureModuleIsInitialized();
55
-
56
- try {
57
- await AuthsignalSMSModule.challenge();
58
-
59
- return {};
60
- } catch (ex) {
61
- return this.handleError(ex);
62
- }
63
- }
64
-
65
- async verify({
66
- code,
67
- }: VerifyInput): Promise<AuthsignalResponse<VerifyResponse>> {
68
- await this.ensureModuleIsInitialized();
69
-
70
- try {
71
- const data = await AuthsignalSMSModule.verify(code);
72
-
73
- return { data };
74
- } catch (ex) {
75
- return this.handleError(ex);
76
- }
77
- }
78
-
79
- private async ensureModuleIsInitialized() {
80
- if (initialized) {
81
- return;
82
- }
83
-
84
- await AuthsignalSMSModule.initialize(this.tenantID, this.baseURL);
85
-
86
- initialized = true;
87
- }
88
-
89
- private handleError(ex: unknown) {
90
- if (this.enableLogging) {
91
- console.log(ex);
92
- }
93
-
94
- return handleErrorCodes(ex);
95
- }
96
- }