@plainkey/vue 0.1.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.
- package/dist/index.d.mts +37 -0
- package/dist/index.d.mts.map +1 -0
- package/dist/index.mjs +105 -0
- package/dist/index.mjs.map +1 -0
- package/package.json +32 -0
package/dist/index.d.mts
ADDED
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { Ref } from "vue";
|
|
2
|
+
import { LoginBeginRequest, LoginCompleteResponse, RegistrationBeginRequest, RegistrationCompleteResponse, UserCredentialBeginRequest, UserCredentialCompleteResponse } from "@plainkey/browser/";
|
|
3
|
+
|
|
4
|
+
//#region src/usePlainkey/index.d.ts
|
|
5
|
+
type ErrorResponse = {
|
|
6
|
+
error: string;
|
|
7
|
+
};
|
|
8
|
+
type usePlainKeyParams = {
|
|
9
|
+
clientId: string;
|
|
10
|
+
};
|
|
11
|
+
declare function usePlainKey(usePlainKeyParams: usePlainKeyParams): {
|
|
12
|
+
register: (beginParams: RegistrationBeginRequest) => Promise<RegistrationCompleteResponse | ErrorResponse>;
|
|
13
|
+
isRegistering: Ref<boolean, boolean>;
|
|
14
|
+
error: Ref<string | null, string | null>;
|
|
15
|
+
registerSuccess: Ref<boolean, boolean>;
|
|
16
|
+
registeredCredential: Ref<{
|
|
17
|
+
id: string;
|
|
18
|
+
webAuthnId: string;
|
|
19
|
+
} | null, {
|
|
20
|
+
id: string;
|
|
21
|
+
webAuthnId: string;
|
|
22
|
+
} | null>;
|
|
23
|
+
registeredResponse: Ref<RegistrationCompleteResponse | null, RegistrationCompleteResponse | null>;
|
|
24
|
+
addCredential: (beginParams: UserCredentialBeginRequest) => Promise<UserCredentialCompleteResponse | ErrorResponse>;
|
|
25
|
+
isAddingCredential: Ref<boolean, boolean>;
|
|
26
|
+
addCredentialError: Ref<string | null, string | null>;
|
|
27
|
+
addCredentialSuccess: Ref<boolean, boolean>;
|
|
28
|
+
addedCredentialResponse: Ref<UserCredentialCompleteResponse | null, UserCredentialCompleteResponse | null>;
|
|
29
|
+
login: (beginParams: LoginBeginRequest) => Promise<LoginCompleteResponse>;
|
|
30
|
+
isLoggingIn: Ref<boolean, boolean>;
|
|
31
|
+
loginError: Ref<string | null, string | null>;
|
|
32
|
+
loginSuccess: Ref<boolean, boolean>;
|
|
33
|
+
loggedInResponse: Ref<LoginCompleteResponse | null, LoginCompleteResponse | null>;
|
|
34
|
+
};
|
|
35
|
+
//#endregion
|
|
36
|
+
export { ErrorResponse, usePlainKey, usePlainKeyParams };
|
|
37
|
+
//# sourceMappingURL=index.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.mts","names":[],"sources":["../src/usePlainkey/index.ts"],"sourcesContent":[],"mappings":";;;;KAcY,aAAA;EAAA,KAAA,EAAA,MAAA;AAIZ,CAAA;AAKgB,KALJ,iBAAA,GAKe;EAAA,QAAA,EAAA,MAAA;;AAwBV,iBAxBD,WAAA,CAwBC,iBAAA,EAxB8B,iBAwB9B,CAAA,EAAA;UACJ,EAAA,CAAA,WAAA,EADI,wBACJ,EAAA,GAAR,OAAQ,CAAA,4BAAA,GAA+B,aAA/B,CAAA;eAA+B,KAAA,CAAA,OAAA,EAAA,OAAA,CAAA;OAAvC,KAAA,CAAA,MAAA,GAAA,IAAA,EAAA,MAAA,GAAA,IAAA,CAAA;;;;;;;;MAuBY,IAAA,CAAA;oBACJ,KAAA,6BAAA,GAAA,IAAA,8BAAA,GAAA,IAAA,CAAA;eAAiC,EAAA,CAAA,WAAA,EAD7B,0BAC6B,EAAA,GAAzC,OAAyC,CAAjC,8BAAiC,GAAA,aAAA,CAAA;oBAAzC,KAAA,CAAA,OAAA,EAAA,OAAA,CAAA;;;;uBAqB+B,sBAAoB,QAAQ;;;cAA5B,KAAA,CAAA,OAAA,EAAA,OAAA,CAAA;kBAA4B,KAAA,sBAAA,GAAA,IAAA,uBAAA,GAAA,IAAA,CAAA"}
|
package/dist/index.mjs
ADDED
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
import { ref } from "vue";
|
|
2
|
+
import { PlainKeyClient } from "@plainkey/browser";
|
|
3
|
+
|
|
4
|
+
//#region src/usePlainkey/index.ts
|
|
5
|
+
function usePlainKey(usePlainKeyParams) {
|
|
6
|
+
const { clientId } = usePlainKeyParams;
|
|
7
|
+
const plainKeyClient = new PlainKeyClient({ clientId });
|
|
8
|
+
const isRegistering = ref(false);
|
|
9
|
+
const registerError = ref(null);
|
|
10
|
+
const registerSuccess = ref(false);
|
|
11
|
+
const registeredCredential = ref(null);
|
|
12
|
+
const registeredResponse = ref(null);
|
|
13
|
+
const isAddingCredential = ref(false);
|
|
14
|
+
const addCredentialError = ref(null);
|
|
15
|
+
const addCredentialSuccess = ref(false);
|
|
16
|
+
const addedCredentialResponse = ref(null);
|
|
17
|
+
const isLoggingIn = ref(false);
|
|
18
|
+
const loginError = ref(null);
|
|
19
|
+
const loginSuccess = ref(false);
|
|
20
|
+
const loggedInResponse = ref(null);
|
|
21
|
+
async function register(beginParams) {
|
|
22
|
+
try {
|
|
23
|
+
isRegistering.value = true;
|
|
24
|
+
registerError.value = null;
|
|
25
|
+
registerSuccess.value = false;
|
|
26
|
+
registeredCredential.value = null;
|
|
27
|
+
const registrationResult = await plainKeyClient.Registration(beginParams);
|
|
28
|
+
registerSuccess.value = registrationResult.success;
|
|
29
|
+
registeredCredential.value = registrationResult.credential;
|
|
30
|
+
registeredResponse.value = registrationResult;
|
|
31
|
+
return registrationResult;
|
|
32
|
+
} catch (err) {
|
|
33
|
+
registerError.value = err instanceof Error ? err.message : "Registration failed";
|
|
34
|
+
return { error: registerError.value };
|
|
35
|
+
} finally {
|
|
36
|
+
isRegistering.value = false;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
async function addCredential(beginParams) {
|
|
40
|
+
try {
|
|
41
|
+
isAddingCredential.value = true;
|
|
42
|
+
addCredentialError.value = null;
|
|
43
|
+
addCredentialSuccess.value = false;
|
|
44
|
+
addedCredentialResponse.value = null;
|
|
45
|
+
const credentialResult = await plainKeyClient.AddCredential(beginParams);
|
|
46
|
+
addCredentialSuccess.value = credentialResult.success;
|
|
47
|
+
addedCredentialResponse.value = credentialResult;
|
|
48
|
+
return credentialResult;
|
|
49
|
+
} catch (err) {
|
|
50
|
+
addCredentialError.value = err instanceof Error ? err.message : "Add credential failed";
|
|
51
|
+
return { error: addCredentialError.value };
|
|
52
|
+
} finally {
|
|
53
|
+
isAddingCredential.value = false;
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
async function login(beginParams) {
|
|
57
|
+
try {
|
|
58
|
+
isLoggingIn.value = true;
|
|
59
|
+
loginError.value = null;
|
|
60
|
+
loginSuccess.value = false;
|
|
61
|
+
loggedInResponse.value = null;
|
|
62
|
+
const loginResult = await plainKeyClient.Login(beginParams);
|
|
63
|
+
loginSuccess.value = loginResult.verified;
|
|
64
|
+
loggedInResponse.value = loginResult;
|
|
65
|
+
return loginResult;
|
|
66
|
+
} catch (err) {
|
|
67
|
+
loginError.value = err instanceof Error ? err.message : "Login failed";
|
|
68
|
+
return {
|
|
69
|
+
verified: false,
|
|
70
|
+
user: { id: "" },
|
|
71
|
+
token: {
|
|
72
|
+
sessionId: "",
|
|
73
|
+
token: "",
|
|
74
|
+
expiresInSeconds: 0,
|
|
75
|
+
tokenType: "",
|
|
76
|
+
refreshToken: ""
|
|
77
|
+
}
|
|
78
|
+
};
|
|
79
|
+
} finally {
|
|
80
|
+
isLoggingIn.value = false;
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
return {
|
|
84
|
+
register,
|
|
85
|
+
isRegistering,
|
|
86
|
+
error: registerError,
|
|
87
|
+
registerSuccess,
|
|
88
|
+
registeredCredential,
|
|
89
|
+
registeredResponse,
|
|
90
|
+
addCredential,
|
|
91
|
+
isAddingCredential,
|
|
92
|
+
addCredentialError,
|
|
93
|
+
addCredentialSuccess,
|
|
94
|
+
addedCredentialResponse,
|
|
95
|
+
login,
|
|
96
|
+
isLoggingIn,
|
|
97
|
+
loginError,
|
|
98
|
+
loginSuccess,
|
|
99
|
+
loggedInResponse
|
|
100
|
+
};
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
//#endregion
|
|
104
|
+
export { usePlainKey };
|
|
105
|
+
//# sourceMappingURL=index.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.mjs","names":["registerError: Ref<string | null>","registeredCredential: Ref<RegistrationCompleteResponse[\"credential\"] | null>","registeredResponse: Ref<RegistrationCompleteResponse | null>","addCredentialError: Ref<string | null>","addedCredentialResponse: Ref<UserCredentialCompleteResponse | null>","loginError: Ref<string | null>","loggedInResponse: Ref<LoginCompleteResponse | null>","registrationResult: RegistrationCompleteResponse","credentialResult: UserCredentialCompleteResponse","loginResult: LoginCompleteResponse"],"sources":["../src/usePlainkey/index.ts"],"sourcesContent":["import { Ref, ref } from \"vue\"\nimport { PlainKeyClient } from \"@plainkey/browser\"\nimport {\n RegistrationCompleteResponse,\n UserCredentialCompleteResponse,\n LoginCompleteResponse\n} from \"@plainkey/browser/\"\n\nimport {\n LoginBeginRequest,\n RegistrationBeginRequest,\n UserCredentialBeginRequest\n} from \"@plainkey/browser/\"\n\nexport type ErrorResponse = {\n error: string\n}\n\nexport type usePlainKeyParams = {\n // The client ID tied to the project.\n clientId: string\n}\n\nexport function usePlainKey(usePlainKeyParams: usePlainKeyParams) {\n const { clientId } = usePlainKeyParams\n const plainKeyClient = new PlainKeyClient({ clientId })\n\n // Registration (user creation + passkey registration)\n const isRegistering = ref(false)\n const registerError: Ref<string | null> = ref(null)\n const registerSuccess = ref(false)\n const registeredCredential: Ref<RegistrationCompleteResponse[\"credential\"] | null> = ref(null)\n const registeredResponse: Ref<RegistrationCompleteResponse | null> = ref(null)\n\n // Credential registration (passkey registration to existing user)\n const isAddingCredential = ref(false)\n const addCredentialError: Ref<string | null> = ref(null)\n const addCredentialSuccess = ref(false)\n const addedCredentialResponse: Ref<UserCredentialCompleteResponse | null> = ref(null)\n\n // Login\n const isLoggingIn = ref(false)\n const loginError: Ref<string | null> = ref(null)\n const loginSuccess = ref(false)\n const loggedInResponse: Ref<LoginCompleteResponse | null> = ref(null)\n\n async function register(\n beginParams: RegistrationBeginRequest\n ): Promise<RegistrationCompleteResponse | ErrorResponse> {\n try {\n isRegistering.value = true\n registerError.value = null\n registerSuccess.value = false\n registeredCredential.value = null\n\n const registrationResult: RegistrationCompleteResponse =\n await plainKeyClient.Registration(beginParams)\n\n registerSuccess.value = registrationResult.success\n registeredCredential.value = registrationResult.credential\n registeredResponse.value = registrationResult\n return registrationResult\n } catch (err) {\n registerError.value = err instanceof Error ? err.message : \"Registration failed\"\n return { error: registerError.value }\n } finally {\n isRegistering.value = false\n }\n }\n\n async function addCredential(\n beginParams: UserCredentialBeginRequest\n ): Promise<UserCredentialCompleteResponse | ErrorResponse> {\n try {\n isAddingCredential.value = true\n addCredentialError.value = null\n addCredentialSuccess.value = false\n addedCredentialResponse.value = null\n\n const credentialResult: UserCredentialCompleteResponse =\n await plainKeyClient.AddCredential(beginParams)\n\n addCredentialSuccess.value = credentialResult.success\n addedCredentialResponse.value = credentialResult\n return credentialResult\n } catch (err) {\n addCredentialError.value = err instanceof Error ? err.message : \"Add credential failed\"\n return { error: addCredentialError.value }\n } finally {\n isAddingCredential.value = false\n }\n }\n\n async function login(beginParams: LoginBeginRequest): Promise<LoginCompleteResponse> {\n try {\n isLoggingIn.value = true\n loginError.value = null\n loginSuccess.value = false\n loggedInResponse.value = null\n\n const loginResult: LoginCompleteResponse = await plainKeyClient.Login(beginParams)\n\n // Update refs\n loginSuccess.value = loginResult.verified\n loggedInResponse.value = loginResult\n return loginResult\n } catch (err) {\n loginError.value = err instanceof Error ? err.message : \"Login failed\"\n return {\n verified: false,\n user: { id: \"\" },\n token: { sessionId: \"\", token: \"\", expiresInSeconds: 0, tokenType: \"\", refreshToken: \"\" }\n }\n } finally {\n isLoggingIn.value = false\n }\n }\n\n return {\n register,\n isRegistering,\n error: registerError,\n registerSuccess,\n registeredCredential,\n registeredResponse,\n addCredential,\n isAddingCredential,\n addCredentialError,\n addCredentialSuccess,\n addedCredentialResponse,\n login,\n isLoggingIn,\n loginError,\n loginSuccess,\n loggedInResponse\n }\n}\n"],"mappings":";;;;AAuBA,SAAgB,YAAY,mBAAsC;CAChE,MAAM,EAAE,aAAa;CACrB,MAAM,iBAAiB,IAAI,eAAe,EAAE,UAAU,CAAC;CAGvD,MAAM,gBAAgB,IAAI,MAAM;CAChC,MAAMA,gBAAoC,IAAI,KAAK;CACnD,MAAM,kBAAkB,IAAI,MAAM;CAClC,MAAMC,uBAA+E,IAAI,KAAK;CAC9F,MAAMC,qBAA+D,IAAI,KAAK;CAG9E,MAAM,qBAAqB,IAAI,MAAM;CACrC,MAAMC,qBAAyC,IAAI,KAAK;CACxD,MAAM,uBAAuB,IAAI,MAAM;CACvC,MAAMC,0BAAsE,IAAI,KAAK;CAGrF,MAAM,cAAc,IAAI,MAAM;CAC9B,MAAMC,aAAiC,IAAI,KAAK;CAChD,MAAM,eAAe,IAAI,MAAM;CAC/B,MAAMC,mBAAsD,IAAI,KAAK;CAErE,eAAe,SACb,aACuD;AACvD,MAAI;AACF,iBAAc,QAAQ;AACtB,iBAAc,QAAQ;AACtB,mBAAgB,QAAQ;AACxB,wBAAqB,QAAQ;GAE7B,MAAMC,qBACJ,MAAM,eAAe,aAAa,YAAY;AAEhD,mBAAgB,QAAQ,mBAAmB;AAC3C,wBAAqB,QAAQ,mBAAmB;AAChD,sBAAmB,QAAQ;AAC3B,UAAO;WACA,KAAK;AACZ,iBAAc,QAAQ,eAAe,QAAQ,IAAI,UAAU;AAC3D,UAAO,EAAE,OAAO,cAAc,OAAO;YAC7B;AACR,iBAAc,QAAQ;;;CAI1B,eAAe,cACb,aACyD;AACzD,MAAI;AACF,sBAAmB,QAAQ;AAC3B,sBAAmB,QAAQ;AAC3B,wBAAqB,QAAQ;AAC7B,2BAAwB,QAAQ;GAEhC,MAAMC,mBACJ,MAAM,eAAe,cAAc,YAAY;AAEjD,wBAAqB,QAAQ,iBAAiB;AAC9C,2BAAwB,QAAQ;AAChC,UAAO;WACA,KAAK;AACZ,sBAAmB,QAAQ,eAAe,QAAQ,IAAI,UAAU;AAChE,UAAO,EAAE,OAAO,mBAAmB,OAAO;YAClC;AACR,sBAAmB,QAAQ;;;CAI/B,eAAe,MAAM,aAAgE;AACnF,MAAI;AACF,eAAY,QAAQ;AACpB,cAAW,QAAQ;AACnB,gBAAa,QAAQ;AACrB,oBAAiB,QAAQ;GAEzB,MAAMC,cAAqC,MAAM,eAAe,MAAM,YAAY;AAGlF,gBAAa,QAAQ,YAAY;AACjC,oBAAiB,QAAQ;AACzB,UAAO;WACA,KAAK;AACZ,cAAW,QAAQ,eAAe,QAAQ,IAAI,UAAU;AACxD,UAAO;IACL,UAAU;IACV,MAAM,EAAE,IAAI,IAAI;IAChB,OAAO;KAAE,WAAW;KAAI,OAAO;KAAI,kBAAkB;KAAG,WAAW;KAAI,cAAc;KAAI;IAC1F;YACO;AACR,eAAY,QAAQ;;;AAIxB,QAAO;EACL;EACA;EACA,OAAO;EACP;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACD"}
|
package/package.json
ADDED
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@plainkey/vue",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "PlainKey Vue SDK (composable)",
|
|
5
|
+
"module": "dist/index.mjs",
|
|
6
|
+
"types": "dist/index.d.mts",
|
|
7
|
+
"sideEffects": false,
|
|
8
|
+
"files": [
|
|
9
|
+
"dist"
|
|
10
|
+
],
|
|
11
|
+
"exports": {
|
|
12
|
+
".": {
|
|
13
|
+
"types": "./dist/index.d.mts",
|
|
14
|
+
"import": "./dist/index.mjs"
|
|
15
|
+
}
|
|
16
|
+
},
|
|
17
|
+
"peerDependencies": {
|
|
18
|
+
"vue": "^3.4.0"
|
|
19
|
+
},
|
|
20
|
+
"dependencies": {
|
|
21
|
+
"@plainkey/browser": "*",
|
|
22
|
+
"@plainkey/types": "*"
|
|
23
|
+
},
|
|
24
|
+
"scripts": {
|
|
25
|
+
"build": "tsdown src/index.ts --format esm --dts --sourcemap --clean --external vue",
|
|
26
|
+
"prepare": "npm run build",
|
|
27
|
+
"prepublishOnly": "npm run build"
|
|
28
|
+
},
|
|
29
|
+
"devDependencies": {
|
|
30
|
+
"tsdown": "^0.15.5"
|
|
31
|
+
}
|
|
32
|
+
}
|