vintasend-api 1.0.0-alpha5 → 1.0.0-alpha6
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/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "vintasend-api",
|
|
3
|
-
"version": "1.0.0-
|
|
3
|
+
"version": "1.0.0-alpha6",
|
|
4
4
|
"repository": {
|
|
5
5
|
"type": "git",
|
|
6
6
|
"url": "git+https://github.com/vintasoftware/vintasend-ts-api.git"
|
|
@@ -45,14 +45,14 @@
|
|
|
45
45
|
"zod": "^3.24.2"
|
|
46
46
|
},
|
|
47
47
|
"peerDependencies": {
|
|
48
|
-
"vintasend": "^1.0.0-
|
|
48
|
+
"vintasend": "^1.0.0-alpha6"
|
|
49
49
|
},
|
|
50
50
|
"devDependencies": {
|
|
51
51
|
"@biomejs/biome": "^2.5.10",
|
|
52
52
|
"@types/node": "^25.0.8",
|
|
53
53
|
"tsx": "^4.19.3",
|
|
54
54
|
"typescript": "^5.9.3",
|
|
55
|
-
"vintasend": "1.0.0-
|
|
55
|
+
"vintasend": "1.0.0-alpha6",
|
|
56
56
|
"vitest": "^4.0.18"
|
|
57
57
|
},
|
|
58
58
|
"engines": {
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Shared-secret authentication.
|
|
3
|
-
*
|
|
4
|
-
* Every `/api/v1` request must carry `Authorization: Bearer <VINTASEND_API_KEY>`.
|
|
5
|
-
* The dashboard calls the API from its server side only, so the key never
|
|
6
|
-
* reaches a browser.
|
|
7
|
-
*/
|
|
8
|
-
import type { MiddlewareHandler } from 'hono';
|
|
9
|
-
export declare function apiKeyAuth(apiKey: string): MiddlewareHandler;
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Shared-secret authentication.
|
|
3
|
-
*
|
|
4
|
-
* Every `/api/v1` request must carry `Authorization: Bearer <VINTASEND_API_KEY>`.
|
|
5
|
-
* The dashboard calls the API from its server side only, so the key never
|
|
6
|
-
* reaches a browser.
|
|
7
|
-
*/
|
|
8
|
-
import { timingSafeEqual } from 'node:crypto';
|
|
9
|
-
import { ApiError } from '../errors.js';
|
|
10
|
-
function safeEquals(a, b) {
|
|
11
|
-
const left = Buffer.from(a);
|
|
12
|
-
const right = Buffer.from(b);
|
|
13
|
-
if (left.length !== right.length) {
|
|
14
|
-
return false;
|
|
15
|
-
}
|
|
16
|
-
return timingSafeEqual(left, right);
|
|
17
|
-
}
|
|
18
|
-
function extractToken(header) {
|
|
19
|
-
if (!header) {
|
|
20
|
-
return undefined;
|
|
21
|
-
}
|
|
22
|
-
const match = header.match(/^Bearer\s+(.+)$/i);
|
|
23
|
-
return match?.[1]?.trim();
|
|
24
|
-
}
|
|
25
|
-
export function apiKeyAuth(apiKey) {
|
|
26
|
-
return async (c, next) => {
|
|
27
|
-
const token = extractToken(c.req.header('authorization'));
|
|
28
|
-
if (!token || !safeEquals(token, apiKey)) {
|
|
29
|
-
throw new ApiError('UNAUTHORIZED', 'A valid API key is required.');
|
|
30
|
-
}
|
|
31
|
-
await next();
|
|
32
|
-
};
|
|
33
|
-
}
|
|
34
|
-
//# sourceMappingURL=api-key-auth.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"api-key-auth.js","sourceRoot":"","sources":["../../src/middleware/api-key-auth.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAG9C,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAExC,SAAS,UAAU,CAAC,CAAS,EAAE,CAAS;IACtC,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC5B,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAE7B,IAAI,IAAI,CAAC,MAAM,KAAK,KAAK,CAAC,MAAM,EAAE,CAAC;QACjC,OAAO,KAAK,CAAC;IACf,CAAC;IAED,OAAO,eAAe,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AACtC,CAAC;AAED,SAAS,YAAY,CAAC,MAA0B;IAC9C,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC;IAC/C,OAAO,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC;AAC5B,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,MAAc;IACvC,OAAO,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE;QACvB,MAAM,KAAK,GAAG,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,CAAC;QAE1D,IAAI,CAAC,KAAK,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,MAAM,CAAC,EAAE,CAAC;YACzC,MAAM,IAAI,QAAQ,CAAC,cAAc,EAAE,8BAA8B,CAAC,CAAC;QACrE,CAAC;QAED,MAAM,IAAI,EAAE,CAAC;IACf,CAAC,CAAC;AACJ,CAAC"}
|