@boundlessfi/identity-sdk 0.1.1 → 0.1.2
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/boundless-sdk.d.ts.map +1 -1
- package/dist/boundless-sdk.js +10 -3
- package/dist/boundless-sdk.js.map +1 -1
- package/dist/server/stellar-plugin.d.ts +31 -2
- package/dist/server/stellar-plugin.d.ts.map +1 -1
- package/dist/server/stellar-plugin.js +38 -43
- package/dist/server/stellar-plugin.js.map +1 -1
- package/package.json +3 -2
- package/src/boundless-sdk.ts +13 -3
- package/src/server/stellar-plugin.ts +39 -48
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"boundless-sdk.d.ts","sourceRoot":"","sources":["../src/boundless-sdk.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,EAIhB,MAAM,mBAAmB,CAAC;AAW3B,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAM9D,OAAO,KAAK,EACV,kBAAkB,EAClB,cAAc,EACd,aAAa,EACb,mBAAmB,EACnB,qBAAqB,EACrB,iBAAiB,EACjB,kBAAkB,EAClB,qBAAqB,EACtB,MAAM,SAAS,CAAC;AAKjB,qBAAa,YAAY;IACvB,OAAO,CAAC,MAAM,CAAqB;IACnC,OAAO,CAAC,GAAG,CAAkB;IAC7B,OAAO,CAAC,cAAc,CAAuB;IAE7C,OAAO,CAAC,UAAU,CAAM;gBAEZ,MAAM,EAAE,kBAAkB;IAmCtC;;OAEG;IACH,IAAI,eAAe,IAAI,eAAe,CAErC;IAED;;;;OAIG;IACG,OAAO,CAAC,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC;IAsCtE;;;;OAIG;IACG,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"boundless-sdk.d.ts","sourceRoot":"","sources":["../src/boundless-sdk.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,EAIhB,MAAM,mBAAmB,CAAC;AAW3B,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAM9D,OAAO,KAAK,EACV,kBAAkB,EAClB,cAAc,EACd,aAAa,EACb,mBAAmB,EACnB,qBAAqB,EACrB,iBAAiB,EACjB,kBAAkB,EAClB,qBAAqB,EACtB,MAAM,SAAS,CAAC;AAKjB,qBAAa,YAAY;IACvB,OAAO,CAAC,MAAM,CAAqB;IACnC,OAAO,CAAC,GAAG,CAAkB;IAC7B,OAAO,CAAC,cAAc,CAAuB;IAE7C,OAAO,CAAC,UAAU,CAAM;gBAEZ,MAAM,EAAE,kBAAkB;IAmCtC;;OAEG;IACH,IAAI,eAAe,IAAI,eAAe,CAErC;IAED;;;;OAIG;IACG,OAAO,CAAC,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC;IAsCtE;;;;OAIG;IACG,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC;IAuBxD;;OAEG;YACW,aAAa;IAwC3B;;;OAGG;IACG,aAAa,CACjB,WAAW,EAAE,oBAAoB,CAAC,GAAG,CAAC,GACrC,OAAO,CAAC,mBAAmB,CAAC;IAQ/B;;;;;OAKG;IACG,UAAU,CACd,OAAO,EAAE,MAAM,EACf,SAAS,SAAQ,EACjB,WAAW,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC,MAAM,CAAC;IAuGlB;;;OAGG;IACG,QAAQ,CACZ,EAAE,EAAE,MAAM,EACV,MAAM,EAAE,MAAM,GAAG,MAAM,EACvB,SAAS,SAAQ,EACjB,WAAW,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC,mBAAmB,CAAC;IAgC/B;;;OAGG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAKjC;;OAEG;IACH,gBAAgB,IAAI,MAAM,GAAG,IAAI;IA6CjC;;OAEG;IACG,cAAc,CAClB,OAAO,EAAE,qBAAqB,GAC7B,OAAO,CAAC,iBAAiB,CAAC;IAkB7B;;OAEG;IACG,gBAAgB,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAW3D;;OAEG;IACH,OAAO,CACL,KAAK,EAAE,kBAAkB,EACzB,OAAO,EAAE,qBAAqB,GAC7B,MAAM,IAAI;CAyBd"}
|
package/dist/boundless-sdk.js
CHANGED
|
@@ -97,7 +97,11 @@ export class BoundlessSDK {
|
|
|
97
97
|
autoSubmit: true,
|
|
98
98
|
});
|
|
99
99
|
// 2. Link to Better-Auth session
|
|
100
|
-
|
|
100
|
+
// We expect credentialId to be present for new registrations via SmartAccountKit
|
|
101
|
+
if (!result.credentialId) {
|
|
102
|
+
console.warn("No credentialId returned from createWallet for new user.");
|
|
103
|
+
}
|
|
104
|
+
await this.linkToSession(result.contractId, result.credentialId || "");
|
|
101
105
|
this._walletAddress = result.contractId;
|
|
102
106
|
// 3. Return result
|
|
103
107
|
return {
|
|
@@ -109,7 +113,7 @@ export class BoundlessSDK {
|
|
|
109
113
|
/**
|
|
110
114
|
* Link a Stellar wallet address to the currently authenticated user session.
|
|
111
115
|
*/
|
|
112
|
-
async linkToSession(contractId) {
|
|
116
|
+
async linkToSession(contractId, credentialId) {
|
|
113
117
|
// 1. Check session
|
|
114
118
|
const res = await this.authClient.getSession();
|
|
115
119
|
const session = res?.data;
|
|
@@ -125,7 +129,10 @@ export class BoundlessSDK {
|
|
|
125
129
|
headers: {
|
|
126
130
|
"Content-Type": "application/json",
|
|
127
131
|
},
|
|
128
|
-
body: JSON.stringify({
|
|
132
|
+
body: JSON.stringify({
|
|
133
|
+
stellarAddress: contractId,
|
|
134
|
+
credentialId: credentialId,
|
|
135
|
+
}),
|
|
129
136
|
// Credentials include cookies for the session
|
|
130
137
|
credentials: "include",
|
|
131
138
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"boundless-sdk.js","sourceRoot":"","sources":["../src/boundless-sdk.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"boundless-sdk.js","sourceRoot":"","sources":["../src/boundless-sdk.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,32 @@
|
|
|
1
|
-
import
|
|
2
|
-
export declare const boundlessStellarPlugin: () =>
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
export declare const boundlessStellarPlugin: () => {
|
|
3
|
+
id: "boundless-stellar";
|
|
4
|
+
schema: {
|
|
5
|
+
user: {
|
|
6
|
+
fields: {
|
|
7
|
+
stellarAddress: {
|
|
8
|
+
type: "string";
|
|
9
|
+
required: false;
|
|
10
|
+
input: false;
|
|
11
|
+
};
|
|
12
|
+
credentialId: {
|
|
13
|
+
type: "string";
|
|
14
|
+
required: false;
|
|
15
|
+
input: false;
|
|
16
|
+
};
|
|
17
|
+
};
|
|
18
|
+
};
|
|
19
|
+
};
|
|
20
|
+
endpoints: {
|
|
21
|
+
linkStellarAccount: import("better-auth").StrictEndpoint<"/stellar/link", {
|
|
22
|
+
method: "POST";
|
|
23
|
+
body: z.ZodObject<{
|
|
24
|
+
stellarAddress: z.ZodString;
|
|
25
|
+
credentialId: z.ZodString;
|
|
26
|
+
}, z.core.$strip>;
|
|
27
|
+
}, {
|
|
28
|
+
success: boolean;
|
|
29
|
+
}>;
|
|
30
|
+
};
|
|
31
|
+
};
|
|
3
32
|
//# sourceMappingURL=stellar-plugin.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stellar-plugin.d.ts","sourceRoot":"","sources":["../../src/server/stellar-plugin.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"stellar-plugin.d.ts","sourceRoot":"","sources":["../../src/server/stellar-plugin.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAoDlC,CAAC"}
|
|
@@ -1,51 +1,46 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
type: "string",
|
|
13
|
-
required: false,
|
|
1
|
+
import { createAuthEndpoint } from "better-auth/api";
|
|
2
|
+
import { z } from "zod";
|
|
3
|
+
export const boundlessStellarPlugin = () => {
|
|
4
|
+
return {
|
|
5
|
+
id: "boundless-stellar",
|
|
6
|
+
// Extend the User table to store Stellar data
|
|
7
|
+
schema: {
|
|
8
|
+
user: {
|
|
9
|
+
fields: {
|
|
10
|
+
stellarAddress: { type: "string", required: false, input: false },
|
|
11
|
+
credentialId: { type: "string", required: false, input: false }, // From WebAuthn
|
|
14
12
|
},
|
|
15
13
|
},
|
|
16
14
|
},
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
const { stellarAddress } = body;
|
|
33
|
-
// Validate C-address format
|
|
34
|
-
if (typeof stellarAddress !== "string" ||
|
|
35
|
-
stellarAddress.length !== 56 ||
|
|
36
|
-
!stellarAddress.startsWith("C")) {
|
|
37
|
-
return ctx.json({
|
|
38
|
-
error: "Invalid stellarAddress. Must be a 56-char Soroban contract ID starting with C.",
|
|
39
|
-
}, { status: 400 });
|
|
15
|
+
endpoints: {
|
|
16
|
+
// Endpoint to link a deployed wallet to a session
|
|
17
|
+
linkStellarAccount: createAuthEndpoint("/stellar/link", {
|
|
18
|
+
method: "POST",
|
|
19
|
+
body: z.object({
|
|
20
|
+
stellarAddress: z
|
|
21
|
+
.string()
|
|
22
|
+
.min(56)
|
|
23
|
+
.max(56)
|
|
24
|
+
.regex(/^C[A-Z0-9]{55}$/, "Invalid Stellar address format"),
|
|
25
|
+
credentialId: z.string().min(1, "Credential ID is required"),
|
|
26
|
+
}),
|
|
27
|
+
}, async (ctx) => {
|
|
28
|
+
if (!ctx.context.session) {
|
|
29
|
+
return ctx.json({ success: false, error: "Unauthorized" }, { status: 401 });
|
|
40
30
|
}
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
31
|
+
const { stellarAddress, credentialId } = ctx.body;
|
|
32
|
+
// Logic to update the authenticated user's record in the DB
|
|
33
|
+
await ctx.context.adapter.update({
|
|
34
|
+
model: "user",
|
|
35
|
+
where: [{ field: "id", value: ctx.context.session.user.id }],
|
|
36
|
+
update: {
|
|
37
|
+
stellarAddress,
|
|
38
|
+
credentialId,
|
|
39
|
+
},
|
|
45
40
|
});
|
|
46
41
|
return ctx.json({ success: true });
|
|
47
|
-
},
|
|
42
|
+
}),
|
|
48
43
|
},
|
|
49
|
-
}
|
|
50
|
-
}
|
|
44
|
+
};
|
|
45
|
+
};
|
|
51
46
|
//# sourceMappingURL=stellar-plugin.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stellar-plugin.js","sourceRoot":"","sources":["../../src/server/stellar-plugin.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"stellar-plugin.js","sourceRoot":"","sources":["../../src/server/stellar-plugin.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,CAAC,MAAM,sBAAsB,GAAG,GAAG,EAAE;IACzC,OAAO;QACL,EAAE,EAAE,mBAAmB;QACvB,8CAA8C;QAC9C,MAAM,EAAE;YACN,IAAI,EAAE;gBACJ,MAAM,EAAE;oBACN,cAAc,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE;oBACjE,YAAY,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,gBAAgB;iBAClF;aACF;SACF;QACD,SAAS,EAAE;YACT,kDAAkD;YAClD,kBAAkB,EAAE,kBAAkB,CACpC,eAAe,EACf;gBACE,MAAM,EAAE,MAAM;gBACd,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC;oBACb,cAAc,EAAE,CAAC;yBACd,MAAM,EAAE;yBACR,GAAG,CAAC,EAAE,CAAC;yBACP,GAAG,CAAC,EAAE,CAAC;yBACP,KAAK,CAAC,iBAAiB,EAAE,gCAAgC,CAAC;oBAC7D,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,2BAA2B,CAAC;iBAC7D,CAAC;aACH,EACD,KAAK,EAAE,GAAG,EAAE,EAAE;gBACZ,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;oBACzB,OAAO,GAAG,CAAC,IAAI,CACb,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,cAAc,EAAE,EACzC,EAAE,MAAM,EAAE,GAAG,EAAE,CAChB,CAAC;gBACJ,CAAC;gBAED,MAAM,EAAE,cAAc,EAAE,YAAY,EAAE,GAAG,GAAG,CAAC,IAAI,CAAC;gBAElD,4DAA4D;gBAE5D,MAAM,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC;oBAC/B,KAAK,EAAE,MAAM;oBACb,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;oBAC5D,MAAM,EAAE;wBACN,cAAc;wBACd,YAAY;qBACb;iBACF,CAAC,CAAC;gBACH,OAAO,GAAG,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;YACrC,CAAC,CACF;SACF;KACyB,CAAC;AAC/B,CAAC,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@boundlessfi/identity-sdk",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.2",
|
|
4
4
|
"private": false,
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -18,7 +18,8 @@
|
|
|
18
18
|
"dependencies": {
|
|
19
19
|
"@stellar/stellar-sdk": "^14.5.0",
|
|
20
20
|
"better-auth": "latest",
|
|
21
|
-
"smart-account-kit": "latest"
|
|
21
|
+
"smart-account-kit": "latest",
|
|
22
|
+
"zod": "^4.3.6"
|
|
22
23
|
},
|
|
23
24
|
"peerDependencies": {
|
|
24
25
|
"smart-account-kit": ">=1.0.0"
|
package/src/boundless-sdk.ts
CHANGED
|
@@ -138,7 +138,11 @@ export class BoundlessSDK {
|
|
|
138
138
|
});
|
|
139
139
|
|
|
140
140
|
// 2. Link to Better-Auth session
|
|
141
|
-
|
|
141
|
+
// We expect credentialId to be present for new registrations via SmartAccountKit
|
|
142
|
+
if (!result.credentialId) {
|
|
143
|
+
console.warn("No credentialId returned from createWallet for new user.");
|
|
144
|
+
}
|
|
145
|
+
await this.linkToSession(result.contractId, result.credentialId || "");
|
|
142
146
|
|
|
143
147
|
this._walletAddress = result.contractId;
|
|
144
148
|
|
|
@@ -153,7 +157,10 @@ export class BoundlessSDK {
|
|
|
153
157
|
/**
|
|
154
158
|
* Link a Stellar wallet address to the currently authenticated user session.
|
|
155
159
|
*/
|
|
156
|
-
private async linkToSession(
|
|
160
|
+
private async linkToSession(
|
|
161
|
+
contractId: string,
|
|
162
|
+
credentialId: string,
|
|
163
|
+
): Promise<void> {
|
|
157
164
|
// 1. Check session
|
|
158
165
|
const res = await this.authClient.getSession();
|
|
159
166
|
const session = res?.data;
|
|
@@ -173,7 +180,10 @@ export class BoundlessSDK {
|
|
|
173
180
|
headers: {
|
|
174
181
|
"Content-Type": "application/json",
|
|
175
182
|
},
|
|
176
|
-
body: JSON.stringify({
|
|
183
|
+
body: JSON.stringify({
|
|
184
|
+
stellarAddress: contractId,
|
|
185
|
+
credentialId: credentialId,
|
|
186
|
+
}),
|
|
177
187
|
// Credentials include cookies for the session
|
|
178
188
|
credentials: "include",
|
|
179
189
|
});
|
|
@@ -1,66 +1,57 @@
|
|
|
1
1
|
import type { BetterAuthPlugin } from "better-auth";
|
|
2
|
+
import { createAuthEndpoint } from "better-auth/api";
|
|
3
|
+
import { z } from "zod";
|
|
2
4
|
|
|
3
|
-
export const boundlessStellarPlugin = ()
|
|
4
|
-
|
|
5
|
+
export const boundlessStellarPlugin = () => {
|
|
6
|
+
return {
|
|
5
7
|
id: "boundless-stellar",
|
|
6
|
-
|
|
8
|
+
// Extend the User table to store Stellar data
|
|
7
9
|
schema: {
|
|
8
10
|
user: {
|
|
9
11
|
fields: {
|
|
10
|
-
stellarAddress: {
|
|
11
|
-
|
|
12
|
-
required: false,
|
|
13
|
-
unique: true,
|
|
14
|
-
},
|
|
15
|
-
credentialId: {
|
|
16
|
-
type: "string",
|
|
17
|
-
required: false,
|
|
18
|
-
},
|
|
12
|
+
stellarAddress: { type: "string", required: false, input: false },
|
|
13
|
+
credentialId: { type: "string", required: false, input: false }, // From WebAuthn
|
|
19
14
|
},
|
|
20
15
|
},
|
|
21
16
|
},
|
|
22
|
-
|
|
23
17
|
endpoints: {
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
// Validate C-address format
|
|
42
|
-
if (
|
|
43
|
-
typeof stellarAddress !== "string" ||
|
|
44
|
-
stellarAddress.length !== 56 ||
|
|
45
|
-
!stellarAddress.startsWith("C")
|
|
46
|
-
) {
|
|
18
|
+
// Endpoint to link a deployed wallet to a session
|
|
19
|
+
linkStellarAccount: createAuthEndpoint(
|
|
20
|
+
"/stellar/link",
|
|
21
|
+
{
|
|
22
|
+
method: "POST",
|
|
23
|
+
body: z.object({
|
|
24
|
+
stellarAddress: z
|
|
25
|
+
.string()
|
|
26
|
+
.min(56)
|
|
27
|
+
.max(56)
|
|
28
|
+
.regex(/^C[A-Z0-9]{55}$/, "Invalid Stellar address format"),
|
|
29
|
+
credentialId: z.string().min(1, "Credential ID is required"),
|
|
30
|
+
}),
|
|
31
|
+
},
|
|
32
|
+
async (ctx) => {
|
|
33
|
+
if (!ctx.context.session) {
|
|
47
34
|
return ctx.json(
|
|
48
|
-
{
|
|
49
|
-
|
|
50
|
-
"Invalid stellarAddress. Must be a 56-char Soroban contract ID starting with C.",
|
|
51
|
-
},
|
|
52
|
-
{ status: 400 },
|
|
35
|
+
{ success: false, error: "Unauthorized" },
|
|
36
|
+
{ status: 401 },
|
|
53
37
|
);
|
|
54
38
|
}
|
|
55
39
|
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
update: { stellarAddress },
|
|
60
|
-
});
|
|
40
|
+
const { stellarAddress, credentialId } = ctx.body;
|
|
41
|
+
|
|
42
|
+
// Logic to update the authenticated user's record in the DB
|
|
61
43
|
|
|
44
|
+
await ctx.context.adapter.update({
|
|
45
|
+
model: "user",
|
|
46
|
+
where: [{ field: "id", value: ctx.context.session.user.id }],
|
|
47
|
+
update: {
|
|
48
|
+
stellarAddress,
|
|
49
|
+
credentialId,
|
|
50
|
+
},
|
|
51
|
+
});
|
|
62
52
|
return ctx.json({ success: true });
|
|
63
53
|
},
|
|
64
|
-
|
|
54
|
+
),
|
|
65
55
|
},
|
|
66
|
-
}
|
|
56
|
+
} satisfies BetterAuthPlugin;
|
|
57
|
+
};
|