react-native-authsignal 0.1.0 → 0.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.github/workflows/release-package.yml +0 -14
- package/{LICENSE → LICENSE.md} +3 -2
- package/README.md +1 -1
- package/android/build.gradle +6 -11
- package/android/gradle.properties +1 -2
- package/android/src/main/java/com/authsignal/react/AuthsignalModule.java +2 -2
- package/android/src/main/java/com/authsignal/react/AuthsignalPackage.java +5 -1
- package/android/src/main/java/com/authsignal/react/AuthsignalPasskeyModule.java +96 -0
- package/android/src/main/java/com/authsignal/react/AuthsignalPushModule.java +156 -0
- package/ios/Authsignal-Bridging-Header.h +1 -0
- package/ios/Authsignal.xcodeproj/project.pbxproj +16 -6
- package/ios/AuthsignalModule.h +11 -0
- package/ios/{Authsignal.m → AuthsignalModule.m} +3 -3
- package/ios/AuthsignalPasskeyModule.m +23 -0
- package/ios/AuthsignalPasskeyModule.swift +77 -0
- package/ios/AuthsignalPushModule.m +30 -0
- package/ios/AuthsignalPushModule.swift +145 -0
- package/lib/commonjs/error.js +13 -0
- package/lib/commonjs/error.js.map +1 -0
- package/lib/commonjs/index.js +37 -8
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/passkey.js +99 -0
- package/lib/commonjs/passkey.js.map +1 -0
- package/lib/commonjs/push.js +134 -0
- package/lib/commonjs/push.js.map +1 -0
- package/lib/commonjs/types.js +2 -0
- package/lib/commonjs/types.js.map +1 -0
- package/lib/module/error.js +6 -0
- package/lib/module/error.js.map +1 -0
- package/lib/module/index.js +34 -7
- package/lib/module/index.js.map +1 -1
- package/lib/module/passkey.js +92 -0
- package/lib/module/passkey.js.map +1 -0
- package/lib/module/push.js +127 -0
- package/lib/module/push.js.map +1 -0
- package/lib/module/types.js +2 -0
- package/lib/module/types.js.map +1 -0
- package/lib/typescript/error.d.ts +2 -0
- package/lib/typescript/error.d.ts.map +1 -0
- package/lib/typescript/index.d.ts +16 -0
- package/lib/typescript/index.d.ts.map +1 -1
- package/lib/typescript/passkey.d.ts +26 -0
- package/lib/typescript/passkey.d.ts.map +1 -0
- package/lib/typescript/push.d.ts +25 -0
- package/lib/typescript/push.d.ts.map +1 -0
- package/lib/typescript/types.d.ts +5 -0
- package/lib/typescript/types.d.ts.map +1 -0
- package/package.json +3 -3
- package/react-native-authsignal.podspec +2 -1
- package/src/error.ts +7 -0
- package/src/index.tsx +35 -10
- package/src/passkey.ts +114 -0
- package/src/push.ts +157 -0
- package/src/types.ts +4 -0
- package/yarn.lock +405 -126
- package/ios/Authsignal.h +0 -12
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["NativeModules","Platform","LINKING_ERROR","initialized","AuthsignalPasskeyModule","Proxy","get","Error","AuthsignalPasskey","constructor","tenantID","baseURL","enableLogging","signUp","token","userName","ensureModuleIsInitialized","data","ex","console","log","error","message","signIn","autofill","OS","cancel","initialize"],"sourceRoot":"../../src","sources":["passkey.ts"],"mappings":";AAAA,SAASA,aAAa,EAAEC,QAAQ,QAAQ,cAAc;AACtD,SAASC,aAAa,QAAQ,SAAS;AAmBvC,IAAIC,WAAW,GAAG,KAAK;AAEvB,MAAMC,uBAAuB,GAAGJ,aAAa,CAACI,uBAAuB,GACjEJ,aAAa,CAACI,uBAAuB,GACrC,IAAIC,KAAK,CACP,CAAC,CAAC,EACF;EACEC,GAAG,GAAG;IACJ,MAAM,IAAIC,KAAK,CAACL,aAAa,CAAC;EAChC;AACF,CAAC,CACF;AAEL,OAAO,MAAMM,iBAAiB,CAAC;EAK7BC,WAAW,OAAwD;IAAA,IAAvD;MAAEC,QAAQ;MAAEC,OAAO;MAAEC;IAA+B,CAAC;IAAA;IAAA;IAAA;IAC/D,IAAI,CAACF,QAAQ,GAAGA,QAAQ;IACxB,IAAI,CAACC,OAAO,GAAGA,OAAO;IACtB,IAAI,CAACC,aAAa,GAAGA,aAAa;EACpC;EAEA,MAAMC,MAAM,QAGgD;IAAA,IAH/C;MACXC,KAAK;MACLC;IACkB,CAAC;IACnB,MAAM,IAAI,CAACC,yBAAyB,EAAE;IAEtC,IAAI;MACF,MAAMC,IAAI,GAAG,MAAMb,uBAAuB,CAACS,MAAM,CAACC,KAAK,EAAEC,QAAQ,CAAC;MAElE,OAAO;QAAEE;MAAK,CAAC;IACjB,CAAC,CAAC,OAAOC,EAAE,EAAE;MACX,IAAI,IAAI,CAACN,aAAa,EAAE;QACtBO,OAAO,CAACC,GAAG,CAACF,EAAE,CAAC;MACjB;MAEA,IAAIA,EAAE,YAAYX,KAAK,EAAE;QACvB,OAAO;UAAEc,KAAK,EAAEH,EAAE,CAACI;QAAQ,CAAC;MAC9B;MAEA,MAAMJ,EAAE;IACV;EACF;EAEA,MAAMK,MAAM,QAGgD;IAAA,IAH/C;MACXT,KAAK;MACLU,QAAQ,GAAG;IACO,CAAC;IACnB,MAAM,IAAI,CAACR,yBAAyB,EAAE;IAEtC,IAAI;MACF,IAAIf,QAAQ,CAACwB,EAAE,KAAK,KAAK,EAAE;QACzB,MAAMR,IAAI,GAAG,MAAMb,uBAAuB,CAACmB,MAAM,CAACT,KAAK,EAAEU,QAAQ,CAAC;QAElE,OAAO;UAAEP;QAAK,CAAC;MACjB,CAAC,MAAM,IAAI,CAACO,QAAQ,EAAE;QACpB,MAAMP,IAAI,GAAG,MAAMb,uBAAuB,CAACmB,MAAM,CAACT,KAAK,CAAC;QAExD,OAAO;UAAEG;QAAK,CAAC;MACjB,CAAC,MAAM;QACL,MAAM,IAAIV,KAAK,CAAC,mCAAmC,CAAC;MACtD;IACF,CAAC,CAAC,OAAOW,EAAE,EAAE;MACX,IAAI,IAAI,CAACN,aAAa,IAAI,CAACY,QAAQ,EAAE;QACnCL,OAAO,CAACC,GAAG,CAACF,EAAE,CAAC;MACjB;MAEA,IAAIA,EAAE,YAAYX,KAAK,EAAE;QACvB,OAAO;UAAEc,KAAK,EAAEH,EAAE,CAACI;QAAQ,CAAC;MAC9B;MAEA,MAAMJ,EAAE;IACV;EACF;EAEAQ,MAAM,GAAG;IACP,IAAIzB,QAAQ,CAACwB,EAAE,KAAK,KAAK,EAAE;MACzBrB,uBAAuB,CAACsB,MAAM,EAAE;IAClC;EACF;EAEA,MAAcV,yBAAyB,GAAG;IACxC,IAAIb,WAAW,EAAE;MACf;IACF;IAEA,MAAMC,uBAAuB,CAACuB,UAAU,CAAC,IAAI,CAACjB,QAAQ,EAAE,IAAI,CAACC,OAAO,CAAC;IAErER,WAAW,GAAG,IAAI;EACpB;AACF"}
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
2
|
+
import { NativeModules } from 'react-native';
|
|
3
|
+
import { LINKING_ERROR } from './error';
|
|
4
|
+
let initialized = false;
|
|
5
|
+
const AuthsignalPushModule = NativeModules.AuthsignalPushModule ? NativeModules.AuthsignalPushModule : new Proxy({}, {
|
|
6
|
+
get() {
|
|
7
|
+
throw new Error(LINKING_ERROR);
|
|
8
|
+
}
|
|
9
|
+
});
|
|
10
|
+
export class AuthsignalPush {
|
|
11
|
+
constructor(_ref) {
|
|
12
|
+
let {
|
|
13
|
+
tenantID,
|
|
14
|
+
baseURL,
|
|
15
|
+
enableLogging
|
|
16
|
+
} = _ref;
|
|
17
|
+
_defineProperty(this, "tenantID", void 0);
|
|
18
|
+
_defineProperty(this, "baseURL", void 0);
|
|
19
|
+
_defineProperty(this, "enableLogging", void 0);
|
|
20
|
+
this.tenantID = tenantID;
|
|
21
|
+
this.baseURL = baseURL;
|
|
22
|
+
this.enableLogging = enableLogging;
|
|
23
|
+
}
|
|
24
|
+
async getCredential() {
|
|
25
|
+
await this.ensureModuleIsInitialized();
|
|
26
|
+
try {
|
|
27
|
+
const data = await AuthsignalPushModule.getCredential();
|
|
28
|
+
return {
|
|
29
|
+
data
|
|
30
|
+
};
|
|
31
|
+
} catch (ex) {
|
|
32
|
+
if (this.enableLogging) {
|
|
33
|
+
console.log(ex);
|
|
34
|
+
}
|
|
35
|
+
if (ex instanceof Error) {
|
|
36
|
+
return {
|
|
37
|
+
error: ex.message
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
throw ex;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
async addCredential(token) {
|
|
44
|
+
await this.ensureModuleIsInitialized();
|
|
45
|
+
try {
|
|
46
|
+
const data = await AuthsignalPushModule.addCredential(token);
|
|
47
|
+
return {
|
|
48
|
+
data
|
|
49
|
+
};
|
|
50
|
+
} catch (ex) {
|
|
51
|
+
if (this.enableLogging) {
|
|
52
|
+
console.log(ex);
|
|
53
|
+
}
|
|
54
|
+
if (ex instanceof Error) {
|
|
55
|
+
return {
|
|
56
|
+
error: ex.message
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
throw ex;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
async removeCredential() {
|
|
63
|
+
await this.ensureModuleIsInitialized();
|
|
64
|
+
try {
|
|
65
|
+
const data = await AuthsignalPushModule.removeCredential();
|
|
66
|
+
return {
|
|
67
|
+
data
|
|
68
|
+
};
|
|
69
|
+
} catch (ex) {
|
|
70
|
+
if (this.enableLogging) {
|
|
71
|
+
console.log(ex);
|
|
72
|
+
}
|
|
73
|
+
if (ex instanceof Error) {
|
|
74
|
+
return {
|
|
75
|
+
error: ex.message
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
throw ex;
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
async getChallenge() {
|
|
82
|
+
await this.ensureModuleIsInitialized();
|
|
83
|
+
try {
|
|
84
|
+
const data = await AuthsignalPushModule.getChallenge();
|
|
85
|
+
return {
|
|
86
|
+
data
|
|
87
|
+
};
|
|
88
|
+
} catch (ex) {
|
|
89
|
+
if (this.enableLogging) {
|
|
90
|
+
console.log(ex);
|
|
91
|
+
}
|
|
92
|
+
if (ex instanceof Error) {
|
|
93
|
+
return {
|
|
94
|
+
error: ex.message
|
|
95
|
+
};
|
|
96
|
+
}
|
|
97
|
+
throw ex;
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
async updateChallenge(challengeId, approved, verificationCode) {
|
|
101
|
+
await this.ensureModuleIsInitialized();
|
|
102
|
+
try {
|
|
103
|
+
const data = await NativeModules.updateChallenge(challengeId, approved, verificationCode);
|
|
104
|
+
return {
|
|
105
|
+
data
|
|
106
|
+
};
|
|
107
|
+
} catch (ex) {
|
|
108
|
+
if (this.enableLogging) {
|
|
109
|
+
console.log(ex);
|
|
110
|
+
}
|
|
111
|
+
if (ex instanceof Error) {
|
|
112
|
+
return {
|
|
113
|
+
error: ex.message
|
|
114
|
+
};
|
|
115
|
+
}
|
|
116
|
+
throw ex;
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
async ensureModuleIsInitialized() {
|
|
120
|
+
if (initialized) {
|
|
121
|
+
return;
|
|
122
|
+
}
|
|
123
|
+
await AuthsignalPushModule.initialize(this.tenantID, this.baseURL);
|
|
124
|
+
initialized = true;
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
//# sourceMappingURL=push.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["NativeModules","LINKING_ERROR","initialized","AuthsignalPushModule","Proxy","get","Error","AuthsignalPush","constructor","tenantID","baseURL","enableLogging","getCredential","ensureModuleIsInitialized","data","ex","console","log","error","message","addCredential","token","removeCredential","getChallenge","updateChallenge","challengeId","approved","verificationCode","initialize"],"sourceRoot":"../../src","sources":["push.ts"],"mappings":";AAAA,SAASA,aAAa,QAAQ,cAAc;AAC5C,SAASC,aAAa,QAAQ,SAAS;AAevC,IAAIC,WAAW,GAAG,KAAK;AAEvB,MAAMC,oBAAoB,GAAGH,aAAa,CAACG,oBAAoB,GAC3DH,aAAa,CAACG,oBAAoB,GAClC,IAAIC,KAAK,CACP,CAAC,CAAC,EACF;EACEC,GAAG,GAAG;IACJ,MAAM,IAAIC,KAAK,CAACL,aAAa,CAAC;EAChC;AACF,CAAC,CACF;AAEL,OAAO,MAAMM,cAAc,CAAC;EAK1BC,WAAW,OAAwD;IAAA,IAAvD;MAAEC,QAAQ;MAAEC,OAAO;MAAEC;IAA+B,CAAC;IAAA;IAAA;IAAA;IAC/D,IAAI,CAACF,QAAQ,GAAGA,QAAQ;IACxB,IAAI,CAACC,OAAO,GAAGA,OAAO;IACtB,IAAI,CAACC,aAAa,GAAGA,aAAa;EACpC;EAEA,MAAMC,aAAa,GAAgD;IACjE,MAAM,IAAI,CAACC,yBAAyB,EAAE;IAEtC,IAAI;MACF,MAAMC,IAAI,GAAG,MAAMX,oBAAoB,CAACS,aAAa,EAAE;MAEvD,OAAO;QAAEE;MAAK,CAAC;IACjB,CAAC,CAAC,OAAOC,EAAE,EAAE;MACX,IAAI,IAAI,CAACJ,aAAa,EAAE;QACtBK,OAAO,CAACC,GAAG,CAACF,EAAE,CAAC;MACjB;MAEA,IAAIA,EAAE,YAAYT,KAAK,EAAE;QACvB,OAAO;UAAEY,KAAK,EAAEH,EAAE,CAACI;QAAQ,CAAC;MAC9B;MAEA,MAAMJ,EAAE;IACV;EACF;EAEA,MAAMK,aAAa,CAACC,KAAa,EAAwC;IACvE,MAAM,IAAI,CAACR,yBAAyB,EAAE;IAEtC,IAAI;MACF,MAAMC,IAAI,GAAG,MAAMX,oBAAoB,CAACiB,aAAa,CAACC,KAAK,CAAC;MAE5D,OAAO;QAAEP;MAAK,CAAC;IACjB,CAAC,CAAC,OAAOC,EAAE,EAAE;MACX,IAAI,IAAI,CAACJ,aAAa,EAAE;QACtBK,OAAO,CAACC,GAAG,CAACF,EAAE,CAAC;MACjB;MAEA,IAAIA,EAAE,YAAYT,KAAK,EAAE;QACvB,OAAO;UAAEY,KAAK,EAAEH,EAAE,CAACI;QAAQ,CAAC;MAC9B;MAEA,MAAMJ,EAAE;IACV;EACF;EAEA,MAAMO,gBAAgB,GAAyC;IAC7D,MAAM,IAAI,CAACT,yBAAyB,EAAE;IAEtC,IAAI;MACF,MAAMC,IAAI,GAAG,MAAMX,oBAAoB,CAACmB,gBAAgB,EAAE;MAC1D,OAAO;QAAER;MAAK,CAAC;IACjB,CAAC,CAAC,OAAOC,EAAE,EAAE;MACX,IAAI,IAAI,CAACJ,aAAa,EAAE;QACtBK,OAAO,CAACC,GAAG,CAACF,EAAE,CAAC;MACjB;MAEA,IAAIA,EAAE,YAAYT,KAAK,EAAE;QACvB,OAAO;UAAEY,KAAK,EAAEH,EAAE,CAACI;QAAQ,CAAC;MAC9B;MAEA,MAAMJ,EAAE;IACV;EACF;EAEA,MAAMQ,YAAY,GAAwC;IACxD,MAAM,IAAI,CAACV,yBAAyB,EAAE;IAEtC,IAAI;MACF,MAAMC,IAAI,GAAG,MAAMX,oBAAoB,CAACoB,YAAY,EAAE;MAEtD,OAAO;QAAET;MAAK,CAAC;IACjB,CAAC,CAAC,OAAOC,EAAE,EAAE;MACX,IAAI,IAAI,CAACJ,aAAa,EAAE;QACtBK,OAAO,CAACC,GAAG,CAACF,EAAE,CAAC;MACjB;MAEA,IAAIA,EAAE,YAAYT,KAAK,EAAE;QACvB,OAAO;UAAEY,KAAK,EAAEH,EAAE,CAACI;QAAQ,CAAC;MAC9B;MAEA,MAAMJ,EAAE;IACV;EACF;EAEA,MAAMS,eAAe,CACnBC,WAAmB,EACnBC,QAAiB,EACjBC,gBAA+B,EACO;IACtC,MAAM,IAAI,CAACd,yBAAyB,EAAE;IAEtC,IAAI;MACF,MAAMC,IAAI,GAAG,MAAMd,aAAa,CAACwB,eAAe,CAC9CC,WAAW,EACXC,QAAQ,EACRC,gBAAgB,CACjB;MAED,OAAO;QAAEb;MAAK,CAAC;IACjB,CAAC,CAAC,OAAOC,EAAE,EAAE;MACX,IAAI,IAAI,CAACJ,aAAa,EAAE;QACtBK,OAAO,CAACC,GAAG,CAACF,EAAE,CAAC;MACjB;MAEA,IAAIA,EAAE,YAAYT,KAAK,EAAE;QACvB,OAAO;UAAEY,KAAK,EAAEH,EAAE,CAACI;QAAQ,CAAC;MAC9B;MAEA,MAAMJ,EAAE;IACV;EACF;EAEA,MAAcF,yBAAyB,GAAG;IACxC,IAAIX,WAAW,EAAE;MACf;IACF;IAEA,MAAMC,oBAAoB,CAACyB,UAAU,CAAC,IAAI,CAACnB,QAAQ,EAAE,IAAI,CAACC,OAAO,CAAC;IAElER,WAAW,GAAG,IAAI;EACpB;AACF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":[],"sourceRoot":"../../src","sources":["types.ts"],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"error.d.ts","sourceRoot":"","sources":["../../src/error.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,aAAa,QAIO,CAAC"}
|
|
@@ -1,2 +1,18 @@
|
|
|
1
|
+
import { AuthsignalPasskey } from './passkey';
|
|
2
|
+
import { AuthsignalPush } from './push';
|
|
3
|
+
interface ConstructorArgs {
|
|
4
|
+
tenantID: string;
|
|
5
|
+
baseURL?: string;
|
|
6
|
+
enableLogging?: boolean;
|
|
7
|
+
}
|
|
8
|
+
export declare class Authsignal {
|
|
9
|
+
tenantID: string;
|
|
10
|
+
baseURL: string;
|
|
11
|
+
enableLogging: boolean;
|
|
12
|
+
passkey: AuthsignalPasskey;
|
|
13
|
+
push: AuthsignalPush;
|
|
14
|
+
constructor({ tenantID, baseURL, enableLogging, }: ConstructorArgs);
|
|
15
|
+
}
|
|
1
16
|
export declare function launch(url: string): Promise<string | null>;
|
|
17
|
+
export {};
|
|
2
18
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAE,MAAM,QAAQ,CAAC;AAaxC,UAAU,eAAe;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED,qBAAa,UAAU;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,OAAO,CAAC;IAEvB,OAAO,EAAE,iBAAiB,CAAC;IAC3B,IAAI,EAAE,cAAc,CAAC;gBAET,EACV,QAAQ,EACR,OAA+C,EAC/C,aAAuB,GACxB,EAAE,eAAe;CAQnB;AAED,wBAAgB,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAsB1D"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import type { AuthsignalResponse } from './types';
|
|
2
|
+
interface ConstructorArgs {
|
|
3
|
+
tenantID: string;
|
|
4
|
+
baseURL: string;
|
|
5
|
+
enableLogging: boolean;
|
|
6
|
+
}
|
|
7
|
+
interface PasskeySignUpInput {
|
|
8
|
+
token: string;
|
|
9
|
+
userName?: string;
|
|
10
|
+
}
|
|
11
|
+
interface PasskeySignInInput {
|
|
12
|
+
token?: string;
|
|
13
|
+
autofill?: boolean;
|
|
14
|
+
}
|
|
15
|
+
export declare class AuthsignalPasskey {
|
|
16
|
+
tenantID: string;
|
|
17
|
+
baseURL: string;
|
|
18
|
+
enableLogging: boolean;
|
|
19
|
+
constructor({ tenantID, baseURL, enableLogging }: ConstructorArgs);
|
|
20
|
+
signUp({ token, userName, }: PasskeySignUpInput): Promise<AuthsignalResponse<string>>;
|
|
21
|
+
signIn({ token, autofill, }: PasskeySignInInput): Promise<AuthsignalResponse<string>>;
|
|
22
|
+
cancel(): void;
|
|
23
|
+
private ensureModuleIsInitialized;
|
|
24
|
+
}
|
|
25
|
+
export {};
|
|
26
|
+
//# sourceMappingURL=passkey.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"passkey.d.ts","sourceRoot":"","sources":["../../src/passkey.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAElD,UAAU,eAAe;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,OAAO,CAAC;CACxB;AAED,UAAU,kBAAkB;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,UAAU,kBAAkB;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAeD,qBAAa,iBAAiB;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,OAAO,CAAC;gBAEX,EAAE,QAAQ,EAAE,OAAO,EAAE,aAAa,EAAE,EAAE,eAAe;IAM3D,MAAM,CAAC,EACX,KAAK,EACL,QAAQ,GACT,EAAE,kBAAkB,GAAG,OAAO,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC;IAoBrD,MAAM,CAAC,EACX,KAAK,EACL,QAAgB,GACjB,EAAE,kBAAkB,GAAG,OAAO,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC;IA4B3D,MAAM;YAMQ,yBAAyB;CASxC"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import type { AuthsignalResponse } from './types';
|
|
2
|
+
interface ConstructorArgs {
|
|
3
|
+
tenantID: string;
|
|
4
|
+
baseURL: string;
|
|
5
|
+
enableLogging: boolean;
|
|
6
|
+
}
|
|
7
|
+
interface PushCredential {
|
|
8
|
+
credentialID: string;
|
|
9
|
+
createdAt: string;
|
|
10
|
+
lastAuthenticatedAt?: string;
|
|
11
|
+
}
|
|
12
|
+
export declare class AuthsignalPush {
|
|
13
|
+
tenantID: string;
|
|
14
|
+
baseURL: string;
|
|
15
|
+
enableLogging: boolean;
|
|
16
|
+
constructor({ tenantID, baseURL, enableLogging }: ConstructorArgs);
|
|
17
|
+
getCredential(): Promise<AuthsignalResponse<PushCredential>>;
|
|
18
|
+
addCredential(token: string): Promise<AuthsignalResponse<boolean>>;
|
|
19
|
+
removeCredential(): Promise<AuthsignalResponse<boolean>>;
|
|
20
|
+
getChallenge(): Promise<AuthsignalResponse<string>>;
|
|
21
|
+
updateChallenge(challengeId: string, approved: boolean, verificationCode: string | null): Promise<AuthsignalResponse<boolean>>;
|
|
22
|
+
private ensureModuleIsInitialized;
|
|
23
|
+
}
|
|
24
|
+
export {};
|
|
25
|
+
//# sourceMappingURL=push.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"push.d.ts","sourceRoot":"","sources":["../../src/push.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAElD,UAAU,eAAe;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,OAAO,CAAC;CACxB;AAED,UAAU,cAAc;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAC9B;AAeD,qBAAa,cAAc;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,OAAO,CAAC;gBAEX,EAAE,QAAQ,EAAE,OAAO,EAAE,aAAa,EAAE,EAAE,eAAe;IAM3D,aAAa,IAAI,OAAO,CAAC,kBAAkB,CAAC,cAAc,CAAC,CAAC;IAoB5D,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;IAoBlE,gBAAgB,IAAI,OAAO,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;IAmBxD,YAAY,IAAI,OAAO,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC;IAoBnD,eAAe,CACnB,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,OAAO,EACjB,gBAAgB,EAAE,MAAM,GAAG,IAAI,GAC9B,OAAO,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;YAwBzB,yBAAyB;CASxC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,kBAAkB,CAAC,CAAC;IACnC,IAAI,CAAC,EAAE,CAAC,CAAC;IACT,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "react-native-authsignal",
|
|
3
|
-
"version": "0.1
|
|
4
|
-
"description": "
|
|
3
|
+
"version": "0.2.1",
|
|
4
|
+
"description": "The official Authsignal React Native library.",
|
|
5
5
|
"main": "lib/commonjs/index",
|
|
6
6
|
"module": "lib/module/index",
|
|
7
7
|
"types": "lib/typescript/index.d.ts",
|
|
@@ -37,7 +37,7 @@
|
|
|
37
37
|
"android"
|
|
38
38
|
],
|
|
39
39
|
"repository": "https://github.com/authsignal/react-native-authsignal.git",
|
|
40
|
-
"author": "Authsignal <
|
|
40
|
+
"author": "Authsignal <support@authsignal.com> (https://www.authsignal.com)",
|
|
41
41
|
"license": "MIT",
|
|
42
42
|
"bugs": {
|
|
43
43
|
"url": "https://github.com/authsignal/react-native-authsignal.git/issues"
|
|
@@ -11,12 +11,13 @@ Pod::Spec.new do |s|
|
|
|
11
11
|
s.license = package["license"]
|
|
12
12
|
s.authors = package["author"]
|
|
13
13
|
|
|
14
|
-
s.platforms = { :ios => "
|
|
14
|
+
s.platforms = { :ios => "13.0" }
|
|
15
15
|
s.source = { :git => "https://github.com/authsignal/react-native-authsignal.git.git", :tag => "#{s.version}" }
|
|
16
16
|
|
|
17
17
|
s.source_files = "ios/**/*.{h,m,mm,swift}"
|
|
18
18
|
|
|
19
19
|
s.dependency "React-Core"
|
|
20
|
+
s.dependency 'Authsignal', '0.1.10'
|
|
20
21
|
|
|
21
22
|
# Don't install the dependencies when we run `pod install` in the old architecture.
|
|
22
23
|
if ENV['RCT_NEW_ARCH_ENABLED'] == '1' then
|
package/src/error.ts
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { Platform } from 'react-native';
|
|
2
|
+
|
|
3
|
+
export const LINKING_ERROR =
|
|
4
|
+
`The package 'react-native-authsignal' doesn't seem to be linked. Make sure: \n\n` +
|
|
5
|
+
Platform.select({ ios: "- You have run 'pod install'\n", default: '' }) +
|
|
6
|
+
'- You rebuilt the app after installing the package\n' +
|
|
7
|
+
'- You are not using Expo Go\n';
|
package/src/index.tsx
CHANGED
|
@@ -1,13 +1,10 @@
|
|
|
1
1
|
import { NativeModules, Platform } from 'react-native';
|
|
2
|
+
import { LINKING_ERROR } from './error';
|
|
3
|
+
import { AuthsignalPasskey } from './passkey';
|
|
4
|
+
import { AuthsignalPush } from './push';
|
|
2
5
|
|
|
3
|
-
const
|
|
4
|
-
|
|
5
|
-
Platform.select({ ios: "- You have run 'pod install'\n", default: '' }) +
|
|
6
|
-
'- You rebuilt the app after installing the package\n' +
|
|
7
|
-
'- You are not using Expo Go\n';
|
|
8
|
-
|
|
9
|
-
const Authsignal = NativeModules.Authsignal
|
|
10
|
-
? NativeModules.Authsignal
|
|
6
|
+
const AuthsignalModule = NativeModules.AuthsignalModule
|
|
7
|
+
? NativeModules.AuthsignalModule
|
|
11
8
|
: new Proxy(
|
|
12
9
|
{},
|
|
13
10
|
{
|
|
@@ -17,9 +14,37 @@ const Authsignal = NativeModules.Authsignal
|
|
|
17
14
|
}
|
|
18
15
|
);
|
|
19
16
|
|
|
17
|
+
interface ConstructorArgs {
|
|
18
|
+
tenantID: string;
|
|
19
|
+
baseURL?: string;
|
|
20
|
+
enableLogging?: boolean;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
export class Authsignal {
|
|
24
|
+
tenantID: string;
|
|
25
|
+
baseURL: string;
|
|
26
|
+
enableLogging: boolean;
|
|
27
|
+
|
|
28
|
+
passkey: AuthsignalPasskey;
|
|
29
|
+
push: AuthsignalPush;
|
|
30
|
+
|
|
31
|
+
constructor({
|
|
32
|
+
tenantID,
|
|
33
|
+
baseURL = 'https://challenge.authsignal.com/v1',
|
|
34
|
+
enableLogging = __DEV__,
|
|
35
|
+
}: ConstructorArgs) {
|
|
36
|
+
this.tenantID = tenantID;
|
|
37
|
+
this.baseURL = baseURL;
|
|
38
|
+
this.enableLogging = enableLogging;
|
|
39
|
+
|
|
40
|
+
this.passkey = new AuthsignalPasskey({ tenantID, baseURL, enableLogging });
|
|
41
|
+
this.push = new AuthsignalPush({ tenantID, baseURL, enableLogging });
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
|
|
20
45
|
export function launch(url: string): Promise<string | null> {
|
|
21
46
|
if (Platform.OS === 'ios') {
|
|
22
|
-
return
|
|
47
|
+
return AuthsignalModule.launch(url);
|
|
23
48
|
} else {
|
|
24
49
|
return new Promise((resolve, reject) => {
|
|
25
50
|
const callback = (error: any, token: string) => {
|
|
@@ -36,7 +61,7 @@ export function launch(url: string): Promise<string | null> {
|
|
|
36
61
|
}
|
|
37
62
|
};
|
|
38
63
|
|
|
39
|
-
|
|
64
|
+
AuthsignalModule.launch(url, callback);
|
|
40
65
|
});
|
|
41
66
|
}
|
|
42
67
|
}
|
package/src/passkey.ts
ADDED
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
import { NativeModules, Platform } from 'react-native';
|
|
2
|
+
import { LINKING_ERROR } from './error';
|
|
3
|
+
import type { AuthsignalResponse } from './types';
|
|
4
|
+
|
|
5
|
+
interface ConstructorArgs {
|
|
6
|
+
tenantID: string;
|
|
7
|
+
baseURL: string;
|
|
8
|
+
enableLogging: boolean;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
interface PasskeySignUpInput {
|
|
12
|
+
token: string;
|
|
13
|
+
userName?: string;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
interface PasskeySignInInput {
|
|
17
|
+
token?: string;
|
|
18
|
+
autofill?: boolean;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
let initialized = false;
|
|
22
|
+
|
|
23
|
+
const AuthsignalPasskeyModule = NativeModules.AuthsignalPasskeyModule
|
|
24
|
+
? NativeModules.AuthsignalPasskeyModule
|
|
25
|
+
: new Proxy(
|
|
26
|
+
{},
|
|
27
|
+
{
|
|
28
|
+
get() {
|
|
29
|
+
throw new Error(LINKING_ERROR);
|
|
30
|
+
},
|
|
31
|
+
}
|
|
32
|
+
);
|
|
33
|
+
|
|
34
|
+
export class AuthsignalPasskey {
|
|
35
|
+
tenantID: string;
|
|
36
|
+
baseURL: string;
|
|
37
|
+
enableLogging: boolean;
|
|
38
|
+
|
|
39
|
+
constructor({ tenantID, baseURL, enableLogging }: ConstructorArgs) {
|
|
40
|
+
this.tenantID = tenantID;
|
|
41
|
+
this.baseURL = baseURL;
|
|
42
|
+
this.enableLogging = enableLogging;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
async signUp({
|
|
46
|
+
token,
|
|
47
|
+
userName,
|
|
48
|
+
}: PasskeySignUpInput): Promise<AuthsignalResponse<string>> {
|
|
49
|
+
await this.ensureModuleIsInitialized();
|
|
50
|
+
|
|
51
|
+
try {
|
|
52
|
+
const data = await AuthsignalPasskeyModule.signUp(token, userName);
|
|
53
|
+
|
|
54
|
+
return { data };
|
|
55
|
+
} catch (ex) {
|
|
56
|
+
if (this.enableLogging) {
|
|
57
|
+
console.log(ex);
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
if (ex instanceof Error) {
|
|
61
|
+
return { error: ex.message };
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
throw ex;
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
async signIn({
|
|
69
|
+
token,
|
|
70
|
+
autofill = false,
|
|
71
|
+
}: PasskeySignInInput): Promise<AuthsignalResponse<string>> {
|
|
72
|
+
await this.ensureModuleIsInitialized();
|
|
73
|
+
|
|
74
|
+
try {
|
|
75
|
+
if (Platform.OS === 'ios') {
|
|
76
|
+
const data = await AuthsignalPasskeyModule.signIn(token, autofill);
|
|
77
|
+
|
|
78
|
+
return { data };
|
|
79
|
+
} else if (!autofill) {
|
|
80
|
+
const data = await AuthsignalPasskeyModule.signIn(token);
|
|
81
|
+
|
|
82
|
+
return { data };
|
|
83
|
+
} else {
|
|
84
|
+
throw new Error('autofill is only supported on iOS');
|
|
85
|
+
}
|
|
86
|
+
} catch (ex) {
|
|
87
|
+
if (this.enableLogging && !autofill) {
|
|
88
|
+
console.log(ex);
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
if (ex instanceof Error) {
|
|
92
|
+
return { error: ex.message };
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
throw ex;
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
cancel() {
|
|
100
|
+
if (Platform.OS === 'ios') {
|
|
101
|
+
AuthsignalPasskeyModule.cancel();
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
private async ensureModuleIsInitialized() {
|
|
106
|
+
if (initialized) {
|
|
107
|
+
return;
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
await AuthsignalPasskeyModule.initialize(this.tenantID, this.baseURL);
|
|
111
|
+
|
|
112
|
+
initialized = true;
|
|
113
|
+
}
|
|
114
|
+
}
|
package/src/push.ts
ADDED
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
import { NativeModules } from 'react-native';
|
|
2
|
+
import { LINKING_ERROR } from './error';
|
|
3
|
+
import type { AuthsignalResponse } from './types';
|
|
4
|
+
|
|
5
|
+
interface ConstructorArgs {
|
|
6
|
+
tenantID: string;
|
|
7
|
+
baseURL: string;
|
|
8
|
+
enableLogging: boolean;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
interface PushCredential {
|
|
12
|
+
credentialID: string;
|
|
13
|
+
createdAt: string;
|
|
14
|
+
lastAuthenticatedAt?: string;
|
|
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<AuthsignalResponse<PushCredential>> {
|
|
42
|
+
await this.ensureModuleIsInitialized();
|
|
43
|
+
|
|
44
|
+
try {
|
|
45
|
+
const data = await AuthsignalPushModule.getCredential();
|
|
46
|
+
|
|
47
|
+
return { data };
|
|
48
|
+
} catch (ex) {
|
|
49
|
+
if (this.enableLogging) {
|
|
50
|
+
console.log(ex);
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
if (ex instanceof Error) {
|
|
54
|
+
return { error: ex.message };
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
throw ex;
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
async addCredential(token: string): Promise<AuthsignalResponse<boolean>> {
|
|
62
|
+
await this.ensureModuleIsInitialized();
|
|
63
|
+
|
|
64
|
+
try {
|
|
65
|
+
const data = await AuthsignalPushModule.addCredential(token);
|
|
66
|
+
|
|
67
|
+
return { data };
|
|
68
|
+
} catch (ex) {
|
|
69
|
+
if (this.enableLogging) {
|
|
70
|
+
console.log(ex);
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
if (ex instanceof Error) {
|
|
74
|
+
return { error: ex.message };
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
throw ex;
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
async removeCredential(): Promise<AuthsignalResponse<boolean>> {
|
|
82
|
+
await this.ensureModuleIsInitialized();
|
|
83
|
+
|
|
84
|
+
try {
|
|
85
|
+
const data = await AuthsignalPushModule.removeCredential();
|
|
86
|
+
return { data };
|
|
87
|
+
} catch (ex) {
|
|
88
|
+
if (this.enableLogging) {
|
|
89
|
+
console.log(ex);
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
if (ex instanceof Error) {
|
|
93
|
+
return { error: ex.message };
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
throw ex;
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
async getChallenge(): Promise<AuthsignalResponse<string>> {
|
|
101
|
+
await this.ensureModuleIsInitialized();
|
|
102
|
+
|
|
103
|
+
try {
|
|
104
|
+
const data = await AuthsignalPushModule.getChallenge();
|
|
105
|
+
|
|
106
|
+
return { data };
|
|
107
|
+
} catch (ex) {
|
|
108
|
+
if (this.enableLogging) {
|
|
109
|
+
console.log(ex);
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
if (ex instanceof Error) {
|
|
113
|
+
return { error: ex.message };
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
throw ex;
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
async updateChallenge(
|
|
121
|
+
challengeId: string,
|
|
122
|
+
approved: boolean,
|
|
123
|
+
verificationCode: string | null
|
|
124
|
+
): Promise<AuthsignalResponse<boolean>> {
|
|
125
|
+
await this.ensureModuleIsInitialized();
|
|
126
|
+
|
|
127
|
+
try {
|
|
128
|
+
const data = await NativeModules.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
|
+
if (ex instanceof Error) {
|
|
141
|
+
return { error: ex.message };
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
throw ex;
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
private async ensureModuleIsInitialized() {
|
|
149
|
+
if (initialized) {
|
|
150
|
+
return;
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
await AuthsignalPushModule.initialize(this.tenantID, this.baseURL);
|
|
154
|
+
|
|
155
|
+
initialized = true;
|
|
156
|
+
}
|
|
157
|
+
}
|
package/src/types.ts
ADDED