@levrbet/shared 0.1.107 → 0.1.109
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/server/middleware/auth/cloudflare.handler.d.ts +1 -1
- package/dist/server/middleware/auth/cloudflare.handler.js +1 -1
- package/dist/server/middleware/auth/cloudflare.handler.js.map +1 -1
- package/dist/server/middleware/auth/hmac.handler.d.ts +1 -1
- package/dist/server/middleware/auth/hmac.handler.js +2 -1
- package/dist/server/middleware/auth/hmac.handler.js.map +1 -1
- package/dist/server/middleware/auth/privy.handler.d.ts +1 -1
- package/dist/server/middleware/auth/privy.handler.js +1 -1
- package/dist/server/middleware/auth/privy.handler.js.map +1 -1
- package/dist/server/middleware/multiAuth.middleware.d.ts +1 -1
- package/dist/server/middleware/multiAuth.middleware.js +1 -1
- package/dist/server/middleware/multiAuth.middleware.js.map +1 -1
- package/dist/server/services/hmac.service.d.ts +26 -12
- package/dist/server/services/hmac.service.js +65 -16
- package/dist/server/services/hmac.service.js.map +1 -1
- package/dist/server/services/privy.service.d.ts +6 -0
- package/dist/server/services/privy.service.js +32 -0
- package/dist/server/services/privy.service.js.map +1 -1
- package/dist/server/types/index.d.ts +1 -1
- package/dist/server/types/index.js +1 -1
- package/dist/server/types/index.js.map +1 -1
- package/package.json +1 -1
- package/dist/server/types/express.types.d.ts +0 -26
- package/dist/server/types/express.types.js +0 -3
- package/dist/server/types/express.types.js.map +0 -1
|
@@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.handleCloudflareAuth = handleCloudflareAuth;
|
|
4
4
|
const core_1 = require("../../../core");
|
|
5
5
|
const services_1 = require("../../services");
|
|
6
|
-
require("../../types/express
|
|
6
|
+
require("../../types/express");
|
|
7
7
|
/**
|
|
8
8
|
* Handles Cloudflare Access authentication
|
|
9
9
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cloudflare.handler.js","sourceRoot":"","sources":["../../../../src/server/middleware/auth/cloudflare.handler.ts"],"names":[],"mappings":";;AASA,oDAwBC;AAhCD,wCAAwC;AACxC,6CAAsD;AAEtD
|
|
1
|
+
{"version":3,"file":"cloudflare.handler.js","sourceRoot":"","sources":["../../../../src/server/middleware/auth/cloudflare.handler.ts"],"names":[],"mappings":";;AASA,oDAwBC;AAhCD,wCAAwC;AACxC,6CAAsD;AAEtD,+BAA4B;AAE5B;;GAEG;AACI,KAAK,UAAU,oBAAoB,CAAC,GAAY;IACnD,MAAM,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,yBAAyB,CAAC,EAAE,QAAQ,EAAE,CAAA;IAE9D,IAAI,CAAC,GAAG,EAAE,CAAC;QACP,OAAO;YACH,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,wCAAwC;YAC/C,UAAU,EAAE,GAAG;SAClB,CAAA;IACL,CAAC;IAED,IAAI,CAAC;QACD,MAAM,gCAAqB,CAAC,SAAS,CAAC,GAAG,CAAC,CAAA;QAC1C,GAAG,CAAC,UAAU,GAAG,eAAQ,CAAC,UAAU,CAAA;QACpC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAA;IAC5B,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACX,MAAM,QAAQ,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;QACjE,OAAO,CAAC,KAAK,CAAC,oCAAoC,EAAE,QAAQ,CAAC,CAAA;QAC7D,OAAO;YACH,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,2BAA2B,QAAQ,EAAE;YAC5C,UAAU,EAAE,GAAG;SAClB,CAAA;IACL,CAAC;AACL,CAAC"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { Request } from "express";
|
|
2
2
|
import { MultiAuthOptions } from "../../../core";
|
|
3
3
|
import type { AuthResult } from "../../types/auth.types";
|
|
4
|
-
import "../../types/express
|
|
4
|
+
import "../../types/express";
|
|
5
5
|
/**
|
|
6
6
|
* Handles HMAC authentication (user API keys)
|
|
7
7
|
*/
|
|
@@ -11,7 +11,7 @@ const core_1 = require("../../../core");
|
|
|
11
11
|
const config_1 = require("../../config");
|
|
12
12
|
const repositories_1 = require("../../repositories");
|
|
13
13
|
const services_1 = require("../../services");
|
|
14
|
-
require("../../types/express
|
|
14
|
+
require("../../types/express");
|
|
15
15
|
/**
|
|
16
16
|
* Validates that the API key has all the required scopes
|
|
17
17
|
*/
|
|
@@ -132,6 +132,7 @@ async function handleHmacAuthBase(req, options, isServiceAuth) {
|
|
|
132
132
|
req.apiUser = { id: apiKey.userId, service: apiKey.service };
|
|
133
133
|
req.ethAddress = apiKey.ethAddress;
|
|
134
134
|
req.authMethod = isServiceAuth ? core_1.LevrAuth.SERVICE_HMAC : core_1.LevrAuth.HMAC;
|
|
135
|
+
req.privyUser = await services_1.privyService.getUserById(apiKey.userId);
|
|
135
136
|
await repositories_1.apiKeyRepository.updateApiKey({ apiKeyId }, { lastUsedAt: new Date(), usageCount: { increment: 1 } });
|
|
136
137
|
return { success: true };
|
|
137
138
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hmac.handler.js","sourceRoot":"","sources":["../../../../src/server/middleware/auth/hmac.handler.ts"],"names":[],"mappings":";;;;;
|
|
1
|
+
{"version":3,"file":"hmac.handler.js","sourceRoot":"","sources":["../../../../src/server/middleware/auth/hmac.handler.ts"],"names":[],"mappings":";;;;;AAkKA,wCAEC;AAKD,sDAEC;AA3KD,oDAA2B;AAE3B,4CAAmB;AAEnB,wCAAuE;AAEvE,yCAAiD;AACjD,qDAAqD;AACrD,6CAA4D;AAE5D,+BAA4B;AAE5B;;GAEG;AACH,SAAS,cAAc,CAAC,YAAiC,EAAE,cAAmC;IAC1F,IAAI,CAAC,cAAc,IAAI,cAAc,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAA;IAC/D,OAAO,cAAc,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAA;AACxE,CAAC;AAED;;GAEG;AACH,SAAS,iBAAiB,CAAC,MAAc,EAAE,OAAyB;IAChE,MAAM,MAAM,GAAG,OAAO,CAAC,cAAc,IAAI,EAAE,CAAA;IAC3C,MAAM,WAAW,GAAG,OAAO,CAAC,qBAAqB,KAAK,KAAK,CAAA,CAAC,eAAe;IAE3E,IAAI,WAAW,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC;QACnF,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,kBAAW,CAAC,KAAK,CAAC,EAAE,CAAC;YACtC,OAAO,CAAC,GAAG,MAAM,EAAE,kBAAW,CAAC,KAAK,CAAC,CAAA;QACzC,CAAC;IACL,CAAC;IAED,OAAO,MAAM,CAAA;AACjB,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,aAAa,CAAC,QAAgB,EAAE,KAAa;IACxD,MAAM,GAAG,GAAG,cAAc,QAAQ,IAAI,KAAK,EAAE,CAAA;IAC7C,IAAI,CAAC;QACD,+EAA+E;QAC/E,MAAM,MAAM,GAAG,MAAM,2BAAkB,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,CAAC,CAAA;QACpF,OAAO,MAAM,KAAK,IAAI,CAAA,CAAC,yDAAyD;IACpF,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACX,OAAO,CAAC,KAAK,CAAC,yBAAyB,EAAE,GAAG,CAAC,CAAA;QAC7C,kEAAkE;QAClE,OAAO,IAAI,CAAA;IACf,CAAC;AACL,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,kBAAkB,CAAC,GAAY,EAAE,OAAyB,EAAE,aAAsB;IAC7F,6BAA6B;IAC7B,MAAM,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,eAAe,CAAC,CAAA;IACxC,IAAI,CAAC,IAAI,EAAE,CAAC;QACR,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,8BAA8B,EAAE,UAAU,EAAE,GAAG,EAAE,CAAA;IACrF,CAAC;IAED,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,+BAA+B,CAAC,CAAA;IACrD,IAAI,CAAC,CAAC,EAAE,CAAC;QACL,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,qCAAqC,EAAE,UAAU,EAAE,GAAG,EAAE,CAAA;IAC5F,CAAC;IAED,MAAM,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,GAAG,CAAC,CAAA;IAC9B,IAAI,CAAC,QAAQ,IAAI,CAAC,MAAM,EAAE,CAAC;QACvB,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,qCAAqC,EAAE,UAAU,EAAE,GAAG,EAAE,CAAA;IAC5F,CAAC;IAED,gBAAgB;IAChB,MAAM,MAAM,GAAG,MAAM,+BAAgB,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAA;IAC7D,IAAI,CAAC,MAAM;QAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,iBAAiB,EAAE,UAAU,EAAE,GAAG,EAAE,CAAA;IAEjF,wCAAwC;IACxC,IAAI,aAAa,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACnC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,0CAA0C,EAAE,UAAU,EAAE,GAAG,EAAE,CAAA;IACjG,CAAC;IACD,IAAI,CAAC,aAAa,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;QACnC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,gDAAgD,EAAE,UAAU,EAAE,GAAG,EAAE,CAAA;IACvG,CAAC;IAED,mBAAmB;IACnB,IAAI,MAAM,CAAC,SAAS,IAAI,MAAM,CAAC,SAAS,GAAG,IAAI,IAAI,EAAE,EAAE,CAAC;QACpD,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,qBAAqB,EAAE,UAAU,EAAE,GAAG,EAAE,CAAA;IAC5E,CAAC;IAED,mDAAmD;IACnD,IAAI,aAAa,IAAI,OAAO,CAAC,eAAe,IAAI,OAAO,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACjF,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;YACvE,OAAO;gBACH,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE,kCAAkC,OAAO,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,MAAM,CAAC,OAAO,EAAE;gBACtG,UAAU,EAAE,GAAG;aAClB,CAAA;QACL,CAAC;IACL,CAAC;IAED,kBAAkB;IAClB,MAAM,cAAc,GAAG,iBAAiB,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC7D,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,EAAE,CAAC;QACjD,OAAO;YACH,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,kCAAkC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;YACpE,UAAU,EAAE,GAAG;SAClB,CAAA;IACL,CAAC;IAED,wBAAwB;IACxB,IAAI,CAAC;QACD,MAAM,SAAS,GAAG,MAAM,wBAAa,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,UAAU,CAAC,CAAA;QAE/E,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,WAAW,EAAE,CAAA;QACvC,MAAM,IAAI,GAAG,GAAG,CAAC,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;QAC1C,MAAM,SAAS,GAAG,GAAG,CAAC,MAAM,CAAC,qBAAqB,CAAC,CAAA;QACnD,MAAM,KAAK,GAAG,GAAG,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAA;QAE3C,IAAI,CAAC,SAAS,EAAE,CAAC;YACb,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,oCAAoC,EAAE,UAAU,EAAE,GAAG,EAAE,CAAA;QAC3F,CAAC;QAED,IAAI,CAAC,KAAK,EAAE,CAAC;YACT,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,gCAAgC,EAAE,UAAU,EAAE,GAAG,EAAE,CAAA;QACvF,CAAC;QAED,MAAM,EAAE,GAAG,QAAQ,CAAC,SAAS,EAAE,EAAE,CAAC,CAAA;QAClC,IAAI,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;YAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,0BAA0B,EAAE,UAAU,EAAE,GAAG,EAAE,CAAA;QAEnG,0BAA0B;QAC1B,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,GAAG,IAAA,YAAE,EAAC,QAAQ,CAAC,EAAE,CAAC;YAC3C,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,2BAA2B,EAAE,UAAU,EAAE,GAAG,EAAE,CAAA;QAClF,CAAC;QAED,MAAM,WAAW,GAAG,wBAAa,CAAC,WAAW,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAA;QACrG,MAAM,WAAW,GAAG,MAAM,CAAA;QAE1B,MAAM,EAAE,GAAG,gBAAM,CAAC,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,QAAQ,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC,CAAA;QACzG,IAAI,CAAC,EAAE;YAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,mBAAmB,EAAE,UAAU,EAAE,GAAG,EAAE,CAAA;QAE/E,+BAA+B;QAC/B,MAAM,UAAU,GAAG,MAAM,aAAa,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAA;QACvD,IAAI,CAAC,UAAU;YAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,6BAA6B,EAAE,UAAU,EAAE,GAAG,EAAE,CAAA;QAEjG,GAAG,CAAC,OAAO,GAAG,EAAE,EAAE,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,CAAA;QAC5D,GAAG,CAAC,UAAU,GAAG,MAAM,CAAC,UAA4B,CAAA;QACpD,GAAG,CAAC,UAAU,GAAG,aAAa,CAAC,CAAC,CAAC,eAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,eAAQ,CAAC,IAAI,CAAA;QACtE,GAAG,CAAC,SAAS,GAAG,MAAM,uBAAY,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;QAE7D,MAAM,+BAAgB,CAAC,YAAY,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,UAAU,EAAE,IAAI,IAAI,EAAE,EAAE,UAAU,EAAE,EAAE,SAAS,EAAE,CAAC,EAAE,EAAE,CAAC,CAAA;QAE3G,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAA;IAC5B,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACX,OAAO,CAAC,KAAK,CAAC,0BAA0B,EAAE,GAAG,CAAC,CAAA;QAC9C,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,+BAA+B,EAAE,UAAU,EAAE,GAAG,EAAE,CAAA;IACtF,CAAC;AACL,CAAC;AAED;;GAEG;AACI,KAAK,UAAU,cAAc,CAAC,GAAY,EAAE,OAAyB;IACxE,OAAO,kBAAkB,CAAC,GAAG,EAAE,OAAO,EAAE,KAAK,CAAC,CAAA;AAClD,CAAC;AAED;;GAEG;AACI,KAAK,UAAU,qBAAqB,CAAC,GAAY,EAAE,OAAyB;IAC/E,OAAO,kBAAkB,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,CAAC,CAAA;AACjD,CAAC"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { Request } from "express";
|
|
2
2
|
import { LevrAuth, PrivyRole } from "../../../core";
|
|
3
3
|
import type { AuthResult } from "../../types/auth.types";
|
|
4
|
-
import "../../types/express
|
|
4
|
+
import "../../types/express";
|
|
5
5
|
/**
|
|
6
6
|
* Handles Privy authentication (User or Admin)
|
|
7
7
|
*/
|
|
@@ -4,7 +4,7 @@ exports.handlePrivyAuth = handlePrivyAuth;
|
|
|
4
4
|
const viem_1 = require("viem");
|
|
5
5
|
const core_1 = require("../../../core");
|
|
6
6
|
const services_1 = require("../../services");
|
|
7
|
-
require("../../types/express
|
|
7
|
+
require("../../types/express");
|
|
8
8
|
/**
|
|
9
9
|
* Handles Privy authentication (User or Admin)
|
|
10
10
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"privy.handler.js","sourceRoot":"","sources":["../../../../src/server/middleware/auth/privy.handler.ts"],"names":[],"mappings":";;AAUA,0CAyBC;AAlCD,+BAA4C;AAC5C,wCAAyH;AACzH,6CAA6C;AAE7C
|
|
1
|
+
{"version":3,"file":"privy.handler.js","sourceRoot":"","sources":["../../../../src/server/middleware/auth/privy.handler.ts"],"names":[],"mappings":";;AAUA,0CAyBC;AAlCD,+BAA4C;AAC5C,wCAAyH;AACzH,6CAA6C;AAE7C,+BAA4B;AAE5B;;GAEG;AACI,KAAK,UAAU,eAAe,CAAC,GAAY,EAAE,IAAe,EAAE,QAAkB;IACnF,MAAM,UAAU,GAAG,GAAG,CAAC,OAAO,CAAC,gCAAyB,CAAC,EAAE,QAAQ,EAAE,CAAA;IACrE,MAAM,YAAY,GAAG,GAAG,CAAC,OAAO,CAAC,4BAAqB,CAAC,EAAE,QAAQ,EAAE,CAAA;IACnE,MAAM,UAAU,GAAG,GAAG,CAAC,OAAO,CAAC,yBAAkB,CAAC,EAAE,QAAQ,EAAE,CAAA;IAE9D,IAAI,CAAC,UAAU,IAAI,CAAC,YAAY,EAAE,CAAC;QAC/B,OAAO;YACH,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,WAAW,gCAAyB,OAAO,4BAAqB,SAAS;YAChF,UAAU,EAAE,GAAG;SAClB,CAAA;IACL,CAAC;IAED,MAAM,SAAS,GAAG,MAAM,uBAAY,CAAC,YAAY,CAAC,EAAE,UAAU,EAAE,YAAY,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAA;IAEjG,IAAI,CAAC,SAAS,EAAE,CAAC;QACb,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,6BAA6B,EAAE,UAAU,EAAE,GAAG,EAAE,CAAA;IACpF,CAAC;IAED,mBAAmB;IACnB,GAAG,CAAC,SAAS,GAAG,SAAS,CAAA;IACzB,GAAG,CAAC,UAAU,GAAG,UAAU,IAAI,IAAA,gBAAS,EAAC,UAAU,CAAC,CAAC,CAAC,CAAC,IAAA,iBAAU,EAAC,UAAU,CAAC,CAAC,CAAC,CAAC,uBAAY,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAA;IACzH,GAAG,CAAC,UAAU,GAAG,QAAQ,CAAA;IAEzB,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAA;AAC5B,CAAC"}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.multiAuth = multiAuth;
|
|
4
4
|
const core_1 = require("../../core");
|
|
5
|
-
require("../types/express
|
|
5
|
+
require("../types/express");
|
|
6
6
|
const auth_1 = require("./auth");
|
|
7
7
|
/**
|
|
8
8
|
* Multi-auth middleware factory
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"multiAuth.middleware.js","sourceRoot":"","sources":["../../../src/server/middleware/multiAuth.middleware.ts"],"names":[],"mappings":";;AAiCA,8BA6DC;AA7FD,qCAAoF;AAEpF,
|
|
1
|
+
{"version":3,"file":"multiAuth.middleware.js","sourceRoot":"","sources":["../../../src/server/middleware/multiAuth.middleware.ts"],"names":[],"mappings":";;AAiCA,8BA6DC;AA7FD,qCAAoF;AAEpF,4BAAyB;AACzB,iCAAqG;AAErG;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,SAAgB,SAAS,CAAC,OAAyB;IAC/C,OAAO,KAAK,EAAE,GAAY,EAAE,GAAa,EAAE,IAAkB,EAAiB,EAAE;QAC5E,MAAM,iBAAiB,GAAG,GAAG,CAAC,MAAM,CAAC,uBAAgB,CAAC,CAAA;QAEtD,oCAAoC;QACpC,IAAI,CAAC,iBAAiB,EAAE,CAAC;YACrB,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;gBACjB,KAAK,EAAE,WAAW,uBAAgB,SAAS;gBAC3C,gBAAgB,EAAE,OAAO,CAAC,OAAO;aACpC,CAAC,CAAA;YACF,OAAM;QACV,CAAC;QAED,4DAA4D;QAC5D,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,iBAA6B,CAAC,EAAE,CAAC;YAC3D,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;gBACjB,KAAK,EAAE,4BAA4B,iBAAiB,EAAE;gBACtD,gBAAgB,EAAE,OAAO,CAAC,OAAO;aACpC,CAAC,CAAA;YACF,OAAM;QACV,CAAC;QAED,IAAI,MAAkB,CAAA;QAEtB,oCAAoC;QACpC,QAAQ,iBAAiB,EAAE,CAAC;YACxB,KAAK,eAAQ,CAAC,IAAI;gBACd,MAAM,GAAG,MAAM,IAAA,qBAAc,EAAC,GAAG,EAAE,OAAO,CAAC,CAAA;gBAC3C,MAAK;YAET,KAAK,eAAQ,CAAC,YAAY;gBACtB,MAAM,GAAG,MAAM,IAAA,4BAAqB,EAAC,GAAG,EAAE,OAAO,CAAC,CAAA;gBAClD,MAAK;YAET,KAAK,eAAQ,CAAC,UAAU;gBACpB,MAAM,GAAG,MAAM,IAAA,sBAAe,EAAC,GAAG,EAAE,gBAAS,CAAC,IAAI,EAAE,eAAQ,CAAC,UAAU,CAAC,CAAA;gBACxE,MAAK;YAET,KAAK,eAAQ,CAAC,WAAW;gBACrB,MAAM,GAAG,MAAM,IAAA,sBAAe,EAAC,GAAG,EAAE,gBAAS,CAAC,KAAK,EAAE,eAAQ,CAAC,WAAW,CAAC,CAAA;gBAC1E,MAAK;YAET,KAAK,eAAQ,CAAC,UAAU;gBACpB,MAAM,GAAG,MAAM,IAAA,2BAAoB,EAAC,GAAG,CAAC,CAAA;gBACxC,MAAK;YAET;gBACI,MAAM,GAAG;oBACL,OAAO,EAAE,KAAK;oBACd,KAAK,EAAE,wBAAwB,iBAAiB,EAAE;oBAClD,UAAU,EAAE,GAAG;iBAClB,CAAA;QACT,CAAC;QAED,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YAClB,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC,CAAA;YAClE,OAAM;QACV,CAAC;QAED,IAAI,EAAE,CAAA;IACV,CAAC,CAAA;AACL,CAAC"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { AxiosInstance } from "axios";
|
|
1
2
|
interface GenerateAuthHeadersParams {
|
|
2
3
|
apiKeyId: string;
|
|
3
4
|
secretKey: string;
|
|
@@ -13,26 +14,39 @@ interface HmacAuthHeaders {
|
|
|
13
14
|
"x-request-timestamp": string;
|
|
14
15
|
"x-request-nonce": string;
|
|
15
16
|
}
|
|
17
|
+
/**
|
|
18
|
+
* Handles HMAC signing and optional Axios integration
|
|
19
|
+
*/
|
|
16
20
|
declare class HmacService {
|
|
17
21
|
private initialized;
|
|
18
22
|
private serviceApiKeyId?;
|
|
19
23
|
private serviceSecretKey?;
|
|
20
|
-
/**
|
|
21
|
-
* Initializes the HMAC service using SERVICE_API_KEY_ID and SERVICE_API_KEY_SECRET
|
|
22
|
-
* from environment. Call this on application startup if you want to use
|
|
23
|
-
* `generateServiceAuthHeaders` without passing explicit keys.
|
|
24
|
-
*/
|
|
25
24
|
init(): void;
|
|
26
|
-
/**
|
|
27
|
-
* Generates HMAC authentication headers for making authenticated requests
|
|
28
|
-
*/
|
|
29
25
|
generateAuthHeaders({ apiKeyId, secretKey, method, path, body, nonce, isService, }: GenerateAuthHeadersParams): HmacAuthHeaders;
|
|
26
|
+
generateServiceAuthHeaders(params: Omit<GenerateAuthHeadersParams, "isService" | "apiKeyId" | "secretKey"> & Partial<Pick<GenerateAuthHeadersParams, "apiKeyId" | "secretKey">>): HmacAuthHeaders;
|
|
30
27
|
/**
|
|
31
|
-
*
|
|
32
|
-
*
|
|
33
|
-
*
|
|
28
|
+
* Attaches an Axios request interceptor that signs requests when config.sign === true
|
|
29
|
+
*
|
|
30
|
+
* Usage example:
|
|
31
|
+
*
|
|
32
|
+
* import axios from "axios"
|
|
33
|
+
* import { hmacService } from "@levr/shared/src/server/services/hmac.service"
|
|
34
|
+
*
|
|
35
|
+
* // On startup (loads SERVICE_API_KEY_ID and SERVICE_API_KEY_SECRET from env)
|
|
36
|
+
* hmacService.init()
|
|
37
|
+
*
|
|
38
|
+
* // Create axios client and attach the interceptor
|
|
39
|
+
* const client = axios.create({ baseURL: "https://api.my-service.com" })
|
|
40
|
+
* hmacService.attachInterceptor(client)
|
|
41
|
+
*
|
|
42
|
+
* // Make a signed request by setting `sign: true`
|
|
43
|
+
* await client.post(
|
|
44
|
+
* "/v1/some/endpoint",
|
|
45
|
+
* { foo: "bar" },
|
|
46
|
+
* { sign: true }
|
|
47
|
+
* )
|
|
34
48
|
*/
|
|
35
|
-
|
|
49
|
+
attachInterceptor(client: AxiosInstance): void;
|
|
36
50
|
}
|
|
37
51
|
export declare const hmacService: HmacService;
|
|
38
52
|
export {};
|
|
@@ -8,15 +8,13 @@ const crypto_1 = __importDefault(require("crypto"));
|
|
|
8
8
|
const core_1 = require("../../core");
|
|
9
9
|
const dotenv_1 = require("../config/dotenv");
|
|
10
10
|
const crypto_service_1 = require("./crypto.service");
|
|
11
|
+
/**
|
|
12
|
+
* Handles HMAC signing and optional Axios integration
|
|
13
|
+
*/
|
|
11
14
|
class HmacService {
|
|
12
15
|
constructor() {
|
|
13
16
|
this.initialized = false;
|
|
14
17
|
}
|
|
15
|
-
/**
|
|
16
|
-
* Initializes the HMAC service using SERVICE_API_KEY_ID and SERVICE_API_KEY_SECRET
|
|
17
|
-
* from environment. Call this on application startup if you want to use
|
|
18
|
-
* `generateServiceAuthHeaders` without passing explicit keys.
|
|
19
|
-
*/
|
|
20
18
|
init() {
|
|
21
19
|
if (this.initialized)
|
|
22
20
|
return;
|
|
@@ -25,13 +23,9 @@ class HmacService {
|
|
|
25
23
|
this.serviceApiKeyId = SERVICE_API_KEY_ID;
|
|
26
24
|
this.serviceSecretKey = SERVICE_API_KEY_SECRET;
|
|
27
25
|
}
|
|
28
|
-
/**
|
|
29
|
-
* Generates HMAC authentication headers for making authenticated requests
|
|
30
|
-
*/
|
|
31
26
|
generateAuthHeaders({ apiKeyId, secretKey, method, path, body, nonce, isService = false, }) {
|
|
32
27
|
const ts = Date.now();
|
|
33
28
|
const actualNonce = nonce || crypto_1.default.randomBytes(16).toString("hex");
|
|
34
|
-
// Generate signature using the crypto service
|
|
35
29
|
const signature = crypto_service_1.cryptoService.signRequest({
|
|
36
30
|
method: method.toUpperCase(),
|
|
37
31
|
path,
|
|
@@ -40,19 +34,13 @@ class HmacService {
|
|
|
40
34
|
nonce: actualNonce,
|
|
41
35
|
secretKey,
|
|
42
36
|
});
|
|
43
|
-
|
|
37
|
+
return {
|
|
44
38
|
"x-levr-auth-type": isService ? core_1.LevrAuth.SERVICE_HMAC : core_1.LevrAuth.HMAC,
|
|
45
39
|
Authorization: `HMAC ${apiKeyId}:${signature}`,
|
|
46
40
|
"x-request-timestamp": ts.toString(),
|
|
47
41
|
"x-request-nonce": actualNonce,
|
|
48
42
|
};
|
|
49
|
-
return headers;
|
|
50
43
|
}
|
|
51
|
-
/**
|
|
52
|
-
* Generates service-to-service HMAC authentication headers.
|
|
53
|
-
* If `apiKeyId` and `secretKey` are not provided in `params`, the stored
|
|
54
|
-
* service keys (set via `init()`) will be used. Throws if keys are missing.
|
|
55
|
-
*/
|
|
56
44
|
generateServiceAuthHeaders(params) {
|
|
57
45
|
const apiKeyId = params.apiKeyId ?? this.serviceApiKeyId;
|
|
58
46
|
const secretKey = params.secretKey ?? this.serviceSecretKey;
|
|
@@ -61,6 +49,67 @@ class HmacService {
|
|
|
61
49
|
}
|
|
62
50
|
return this.generateAuthHeaders({ ...params, apiKeyId, secretKey, isService: true });
|
|
63
51
|
}
|
|
52
|
+
/**
|
|
53
|
+
* Attaches an Axios request interceptor that signs requests when config.sign === true
|
|
54
|
+
*
|
|
55
|
+
* Usage example:
|
|
56
|
+
*
|
|
57
|
+
* import axios from "axios"
|
|
58
|
+
* import { hmacService } from "@levr/shared/src/server/services/hmac.service"
|
|
59
|
+
*
|
|
60
|
+
* // On startup (loads SERVICE_API_KEY_ID and SERVICE_API_KEY_SECRET from env)
|
|
61
|
+
* hmacService.init()
|
|
62
|
+
*
|
|
63
|
+
* // Create axios client and attach the interceptor
|
|
64
|
+
* const client = axios.create({ baseURL: "https://api.my-service.com" })
|
|
65
|
+
* hmacService.attachInterceptor(client)
|
|
66
|
+
*
|
|
67
|
+
* // Make a signed request by setting `sign: true`
|
|
68
|
+
* await client.post(
|
|
69
|
+
* "/v1/some/endpoint",
|
|
70
|
+
* { foo: "bar" },
|
|
71
|
+
* { sign: true }
|
|
72
|
+
* )
|
|
73
|
+
*/
|
|
74
|
+
attachInterceptor(client) {
|
|
75
|
+
client.interceptors.request.use((config) => {
|
|
76
|
+
if (!config.sign)
|
|
77
|
+
return config; // skip if not explicitly signed
|
|
78
|
+
// Determine the pathname to sign (server expects path without query string)
|
|
79
|
+
// Support both absolute URLs and relative paths.
|
|
80
|
+
const rawUrl = config.url || "/";
|
|
81
|
+
let pathname;
|
|
82
|
+
if (rawUrl.startsWith("http://") || rawUrl.startsWith("https://")) {
|
|
83
|
+
try {
|
|
84
|
+
pathname = new URL(rawUrl).pathname;
|
|
85
|
+
}
|
|
86
|
+
catch {
|
|
87
|
+
// Fallback to splitting if URL parsing fails
|
|
88
|
+
pathname = rawUrl.split("?", 2)[0] || "/";
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
else {
|
|
92
|
+
pathname = rawUrl.split("?", 2)[0] || "/";
|
|
93
|
+
if (!pathname.startsWith("/"))
|
|
94
|
+
pathname = `/${pathname}`;
|
|
95
|
+
}
|
|
96
|
+
const headers = this.generateServiceAuthHeaders({
|
|
97
|
+
method: config.method?.toUpperCase() || "GET",
|
|
98
|
+
path: pathname,
|
|
99
|
+
body: config.data || {},
|
|
100
|
+
});
|
|
101
|
+
// Merge headers safely for both AxiosHeaders and plain object
|
|
102
|
+
const target = config.headers;
|
|
103
|
+
if (target && typeof target.set === "function") {
|
|
104
|
+
for (const [k, v] of Object.entries(headers))
|
|
105
|
+
target.set(k, v);
|
|
106
|
+
}
|
|
107
|
+
else {
|
|
108
|
+
config.headers = { ...config.headers, ...headers };
|
|
109
|
+
}
|
|
110
|
+
return config;
|
|
111
|
+
});
|
|
112
|
+
}
|
|
64
113
|
}
|
|
65
114
|
exports.hmacService = new HmacService();
|
|
66
115
|
//# sourceMappingURL=hmac.service.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hmac.service.js","sourceRoot":"","sources":["../../../src/server/services/hmac.service.ts"],"names":[],"mappings":";;;;;;
|
|
1
|
+
{"version":3,"file":"hmac.service.js","sourceRoot":"","sources":["../../../src/server/services/hmac.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,6 +9,12 @@ interface AuthRequest {
|
|
|
9
9
|
}
|
|
10
10
|
declare class PrivyService {
|
|
11
11
|
authenticate({ privyToken, privyIdToken, ethAddress, role }: AuthRequest): Promise<PrivyUser | undefined>;
|
|
12
|
+
/**
|
|
13
|
+
* Fetch a Privy user by id. We don't always know whether the user was created
|
|
14
|
+
* under the regular "User" app or the Admin app, so try the User client first
|
|
15
|
+
* and fall back to the Admin client if not found.
|
|
16
|
+
*/
|
|
17
|
+
getUserById(userId: string): Promise<PrivyUser | undefined>;
|
|
12
18
|
/**
|
|
13
19
|
* Gets the user's Ethereum wallet address, prioritizing external wallets over Privy wallets.
|
|
14
20
|
* Returns the first external wallet found, or falls back to a Privy wallet if none exist.
|
|
@@ -11,6 +11,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
11
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
12
|
exports.privyService = void 0;
|
|
13
13
|
const node_1 = require("@privy-io/node");
|
|
14
|
+
const ms_1 = __importDefault(require("ms"));
|
|
14
15
|
const typescript_memoize_1 = require("typescript-memoize");
|
|
15
16
|
const viem_1 = require("viem");
|
|
16
17
|
const zod_1 = __importDefault(require("zod"));
|
|
@@ -61,6 +62,34 @@ class PrivyService {
|
|
|
61
62
|
config_1.logger.error(error);
|
|
62
63
|
}
|
|
63
64
|
}
|
|
65
|
+
/**
|
|
66
|
+
* Fetch a Privy user by id. We don't always know whether the user was created
|
|
67
|
+
* under the regular "User" app or the Admin app, so try the User client first
|
|
68
|
+
* and fall back to the Admin client if not found.
|
|
69
|
+
*/
|
|
70
|
+
async getUserById(userId) {
|
|
71
|
+
const clients = this.getPrivyClients();
|
|
72
|
+
// Try regular user client first
|
|
73
|
+
try {
|
|
74
|
+
const user = await clients[core_1.PrivyRole.User].users()._get(userId);
|
|
75
|
+
if (user)
|
|
76
|
+
return user;
|
|
77
|
+
}
|
|
78
|
+
catch (err) {
|
|
79
|
+
// Not fatal — fall through to admin client
|
|
80
|
+
config_1.logger.debug(`Privy user client lookup failed for id=${userId}: ${err?.message ?? err}`);
|
|
81
|
+
}
|
|
82
|
+
// Try admin client as a fallback
|
|
83
|
+
try {
|
|
84
|
+
const adminUser = await clients[core_1.PrivyRole.Admin].users()._get(userId);
|
|
85
|
+
if (adminUser)
|
|
86
|
+
return adminUser;
|
|
87
|
+
}
|
|
88
|
+
catch (err) {
|
|
89
|
+
config_1.logger.debug(`Privy admin client lookup failed for id=${userId}: ${err?.message ?? err}`);
|
|
90
|
+
}
|
|
91
|
+
return undefined;
|
|
92
|
+
}
|
|
64
93
|
getPrivyClients() {
|
|
65
94
|
const schema = zod_1.default.object({
|
|
66
95
|
PRIVY_APP_SECRET: zod_1.default.string().min(1),
|
|
@@ -83,6 +112,9 @@ class PrivyService {
|
|
|
83
112
|
};
|
|
84
113
|
}
|
|
85
114
|
}
|
|
115
|
+
__decorate([
|
|
116
|
+
(0, typescript_memoize_1.MemoizeExpiring)((0, ms_1.default)("10m")) // TODO: cache with redis
|
|
117
|
+
], PrivyService.prototype, "getUserById", null);
|
|
86
118
|
__decorate([
|
|
87
119
|
(0, typescript_memoize_1.Memoize)()
|
|
88
120
|
], PrivyService.prototype, "getPrivyClients", null);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"privy.service.js","sourceRoot":"","sources":["../../../src/server/services/privy.service.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,yCAA+D;AAC/D,
|
|
1
|
+
{"version":3,"file":"privy.service.js","sourceRoot":"","sources":["../../../src/server/services/privy.service.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,yCAA+D;AAC/D,4CAAmB;AACnB,2DAA6D;AAC7D,+BAA0C;AAC1C,8CAAmB;AACnB,qCAA8C;AAC9C,0DAKmC;AACnC,sCAAkC;AASlC,MAAM,YAAY;IAAlB;QAmDI;;;WAGG;QACH,sBAAiB,GAAG,CAAC,IAAe,EAAuB,EAAE;YACzD,IAAI,OAAO,GAAwB,SAAS,CAAA;YAE5C,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;gBACzC,IAAI,OAAO,CAAC,IAAI,KAAK,QAAQ,IAAI,OAAO,CAAC,UAAU,KAAK,UAAU;oBAAE,SAAQ;gBAC5E,OAAO,GAAG,OAAO,CAAC,OAAkB,CAAA;gBACpC,IAAI,OAAO,CAAC,kBAAkB,KAAK,OAAO;oBAAE,MAAK;YACrD,CAAC;YAED,OAAO,OAAO,CAAC,CAAC,CAAC,IAAA,iBAAU,EAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;QACpD,CAAC,CAAA;QAED;;WAEG;QACK,0BAAqB,GAAG,CAAC,IAAe,EAAE,eAAuB,EAAW,EAAE;YAClF,OAAO,IAAI,CAAC,eAAe,CAAC,IAAI,CAC5B,CAAC,OAAO,EAAE,EAAE,CACR,OAAO,CAAC,IAAI,KAAK,QAAQ;gBACzB,OAAO,CAAC,UAAU,KAAK,UAAU;gBACjC,OAAO,CAAC,OAAO,EAAE,WAAW,EAAE,KAAK,eAAe,CAAC,WAAW,EAAE,CACvE,CAAA;QACL,CAAC,CAAA;IA2BL,CAAC;IAvGG,KAAK,CAAC,YAAY,CAAC,EAAE,UAAU,EAAE,YAAY,EAAE,UAAU,EAAE,IAAI,EAAe;QAC1E,IAAI,CAAC,UAAU,IAAI,CAAC,YAAY;YAAE,OAAO,SAAS,CAAA;QAElD,MAAM,WAAW,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC,IAAI,CAAC,CAAA;QAEhD,IAAI,CAAC;YACD,MAAM,WAAW,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,CAAC,eAAe,CAAC,UAAU,CAAC,CAAA;YAC5D,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,EAAE,QAAQ,EAAE,YAAY,EAAE,CAAC,CAAA;YAEtE,IAAI,UAAU,IAAI,CAAC,IAAI,CAAC,qBAAqB,CAAC,IAAI,EAAE,UAAU,CAAC,EAAE,CAAC;gBAC9D,eAAM,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,EAAE,uDAAuD,UAAU,GAAG,CAAC,CAAA;gBAChG,OAAO,SAAS,CAAA;YACpB,CAAC;YAED,OAAO,IAAI,CAAA;QACf,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YAClB,eAAM,CAAC,IAAI,CAAC,0CAA0C,KAAK,CAAC,OAAO,GAAG,CAAC,CAAA;YACvE,eAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;QACvB,CAAC;IACL,CAAC;IAED;;;;OAIG;IAEG,AAAN,KAAK,CAAC,WAAW,CAAC,MAAc;QAC5B,MAAM,OAAO,GAAG,IAAI,CAAC,eAAe,EAAE,CAAA;QAEtC,gCAAgC;QAChC,IAAI,CAAC;YACD,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,gBAAS,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;YAC/D,IAAI,IAAI;gBAAE,OAAO,IAAI,CAAA;QACzB,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAChB,2CAA2C;YAC3C,eAAM,CAAC,KAAK,CAAC,0CAA0C,MAAM,KAAK,GAAG,EAAE,OAAO,IAAI,GAAG,EAAE,CAAC,CAAA;QAC5F,CAAC;QAED,iCAAiC;QACjC,IAAI,CAAC;YACD,MAAM,SAAS,GAAG,MAAM,OAAO,CAAC,gBAAS,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;YACrE,IAAI,SAAS;gBAAE,OAAO,SAAS,CAAA;QACnC,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAChB,eAAM,CAAC,KAAK,CAAC,2CAA2C,MAAM,KAAK,GAAG,EAAE,OAAO,IAAI,GAAG,EAAE,CAAC,CAAA;QAC7F,CAAC;QAED,OAAO,SAAS,CAAA;IACpB,CAAC;IA+BO,eAAe;QACnB,MAAM,MAAM,GAAG,aAAC,CAAC,MAAM,CAAC;YACpB,gBAAgB,EAAE,aAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;YACnC,sBAAsB,EAAE,aAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;SAC5C,CAAC,CAAA;QACF,MAAM,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,GAAG,aAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QAExE,MAAM,WAAW,GAAG,IAAI,kBAAW,CAAC;YAChC,KAAK,EAAE,wBAAY;YACnB,SAAS,EAAE,gBAAgB;YAC3B,kBAAkB,EAAE,kCAAsB;SAC7C,CAAC,CAAA;QAEF,MAAM,gBAAgB,GAAG,IAAI,kBAAW,CAAC;YACrC,KAAK,EAAE,8BAAkB;YACzB,SAAS,EAAE,sBAAsB;YACjC,kBAAkB,EAAE,wCAA4B;SACnD,CAAC,CAAA;QAEF,OAAO;YACH,CAAC,gBAAS,CAAC,IAAI,CAAC,EAAE,WAAW;YAC7B,CAAC,gBAAS,CAAC,KAAK,CAAC,EAAE,gBAAgB;SACtC,CAAA;IACL,CAAC;CACJ;AA5ES;IADL,IAAA,oCAAe,EAAC,IAAA,YAAE,EAAC,KAAK,CAAC,CAAC,CAAC,yBAAyB;+CAsBpD;AA+BO;IADP,IAAA,4BAAO,GAAE;mDAwBT;AAGQ,QAAA,YAAY,GAAG,IAAI,YAAY,EAAE,CAAA"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export * from "./auth.types";
|
|
2
|
-
export * from "./express
|
|
2
|
+
export * from "./express";
|
|
@@ -15,5 +15,5 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
15
15
|
};
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
17
|
__exportStar(require("./auth.types"), exports);
|
|
18
|
-
__exportStar(require("./express
|
|
18
|
+
__exportStar(require("./express"), exports);
|
|
19
19
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/server/types/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,+CAA4B;AAC5B,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/server/types/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,+CAA4B;AAC5B,4CAAyB"}
|
package/package.json
CHANGED
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
import type { User as PrivyUser } from "@privy-io/node";
|
|
2
|
-
import type { Address } from "viem";
|
|
3
|
-
import type { LevrService } from "../../core";
|
|
4
|
-
declare module "express-serve-static-core" {
|
|
5
|
-
interface Request {
|
|
6
|
-
/**
|
|
7
|
-
* Authenticated Privy user (set by PRIVY_USER or PRIVY_ADMIN auth)
|
|
8
|
-
*/
|
|
9
|
-
privyUser?: PrivyUser;
|
|
10
|
-
/**
|
|
11
|
-
* Authenticated API key user (set by HMAC or SERVICE_HMAC auth)
|
|
12
|
-
*/
|
|
13
|
-
apiUser?: {
|
|
14
|
-
id: string;
|
|
15
|
-
service?: LevrService | null;
|
|
16
|
-
};
|
|
17
|
-
/**
|
|
18
|
-
* Ethereum address associated with the authenticated user
|
|
19
|
-
*/
|
|
20
|
-
ethAddress?: Address | null;
|
|
21
|
-
/**
|
|
22
|
-
* The authentication method used for this request
|
|
23
|
-
*/
|
|
24
|
-
authMethod?: string;
|
|
25
|
-
}
|
|
26
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"express.types.js","sourceRoot":"","sources":["../../../src/server/types/express.types.ts"],"names":[],"mappings":""}
|