equipped 5.0.5 → 5.0.7
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/CHANGELOG.md +9 -0
- package/dist/cjs/index.cjs +7 -0
- package/package.json +132 -29
- package/lib/cache/base.d.ts +0 -6
- package/lib/cache/base.js +0 -3
- package/lib/cache/base.js.map +0 -1
- package/lib/cache/index.d.ts +0 -3
- package/lib/cache/index.js +0 -4
- package/lib/cache/index.js.map +0 -1
- package/lib/cache/pipes.d.ts +0 -17
- package/lib/cache/pipes.js +0 -10
- package/lib/cache/pipes.js.map +0 -1
- package/lib/cache/types/redis.d.ts +0 -11
- package/lib/cache/types/redis.js +0 -54
- package/lib/cache/types/redis.js.map +0 -1
- package/lib/dbs/base/_instance.d.ts +0 -20
- package/lib/dbs/base/_instance.js +0 -52
- package/lib/dbs/base/_instance.js.map +0 -1
- package/lib/dbs/base/core.d.ts +0 -113
- package/lib/dbs/base/core.js +0 -2
- package/lib/dbs/base/core.js.map +0 -1
- package/lib/dbs/base/types.d.ts +0 -8
- package/lib/dbs/base/types.js +0 -2
- package/lib/dbs/base/types.js.map +0 -1
- package/lib/dbs/index.d.ts +0 -6
- package/lib/dbs/index.js +0 -7
- package/lib/dbs/index.js.map +0 -1
- package/lib/dbs/mongo/api.d.ts +0 -9
- package/lib/dbs/mongo/api.js +0 -149
- package/lib/dbs/mongo/api.js.map +0 -1
- package/lib/dbs/mongo/changes.d.ts +0 -11
- package/lib/dbs/mongo/changes.js +0 -80
- package/lib/dbs/mongo/changes.js.map +0 -1
- package/lib/dbs/mongo/index.d.ts +0 -21
- package/lib/dbs/mongo/index.js +0 -59
- package/lib/dbs/mongo/index.js.map +0 -1
- package/lib/dbs/mongo/query.d.ts +0 -6
- package/lib/dbs/mongo/query.js +0 -72
- package/lib/dbs/mongo/query.js.map +0 -1
- package/lib/dbs/pipes.d.ts +0 -126
- package/lib/dbs/pipes.js +0 -74
- package/lib/dbs/pipes.js.map +0 -1
- package/lib/errors/equippedError.d.ts +0 -6
- package/lib/errors/equippedError.js +0 -12
- package/lib/errors/equippedError.js.map +0 -1
- package/lib/errors/index.d.ts +0 -9
- package/lib/errors/index.js +0 -10
- package/lib/errors/index.js.map +0 -1
- package/lib/errors/requestError.d.ts +0 -14
- package/lib/errors/requestError.js +0 -11
- package/lib/errors/requestError.js.map +0 -1
- package/lib/errors/types/authorizationExpired.d.ts +0 -5
- package/lib/errors/types/authorizationExpired.js +0 -9
- package/lib/errors/types/authorizationExpired.js.map +0 -1
- package/lib/errors/types/badRequestError.d.ts +0 -5
- package/lib/errors/types/badRequestError.js +0 -9
- package/lib/errors/types/badRequestError.js.map +0 -1
- package/lib/errors/types/notAuthenticatedError.d.ts +0 -5
- package/lib/errors/types/notAuthenticatedError.js +0 -9
- package/lib/errors/types/notAuthenticatedError.js.map +0 -1
- package/lib/errors/types/notAuthorizedError.d.ts +0 -5
- package/lib/errors/types/notAuthorizedError.js +0 -9
- package/lib/errors/types/notAuthorizedError.js.map +0 -1
- package/lib/errors/types/notFoundError.d.ts +0 -5
- package/lib/errors/types/notFoundError.js +0 -9
- package/lib/errors/types/notFoundError.js.map +0 -1
- package/lib/errors/types/refreshTokenMisusedError.d.ts +0 -5
- package/lib/errors/types/refreshTokenMisusedError.js +0 -9
- package/lib/errors/types/refreshTokenMisusedError.js.map +0 -1
- package/lib/errors/types/validationError.d.ts +0 -10
- package/lib/errors/types/validationError.js +0 -9
- package/lib/errors/types/validationError.js.map +0 -1
- package/lib/events/base.d.ts +0 -14
- package/lib/events/base.js +0 -6
- package/lib/events/base.js.map +0 -1
- package/lib/events/index.d.ts +0 -4
- package/lib/events/index.js +0 -5
- package/lib/events/index.js.map +0 -1
- package/lib/events/pipes.d.ts +0 -31
- package/lib/events/pipes.js +0 -17
- package/lib/events/pipes.js.map +0 -1
- package/lib/events/types/kafka.d.ts +0 -9
- package/lib/events/types/kafka.js +0 -81
- package/lib/events/types/kafka.js.map +0 -1
- package/lib/events/types/rabbitmq.d.ts +0 -9
- package/lib/events/types/rabbitmq.js +0 -51
- package/lib/events/types/rabbitmq.js.map +0 -1
- package/lib/index.d.ts +0 -1
- package/lib/index.js +0 -2
- package/lib/index.js.map +0 -1
- package/lib/instance/hooks.d.ts +0 -7
- package/lib/instance/hooks.js +0 -26
- package/lib/instance/hooks.js.map +0 -1
- package/lib/instance/index.d.ts +0 -131
- package/lib/instance/index.js +0 -78
- package/lib/instance/index.js.map +0 -1
- package/lib/instance/settings.d.ts +0 -239
- package/lib/instance/settings.js +0 -121
- package/lib/instance/settings.js.map +0 -1
- package/lib/jobs/index.d.ts +0 -2
- package/lib/jobs/index.js +0 -3
- package/lib/jobs/index.js.map +0 -1
- package/lib/jobs/pipes.d.ts +0 -23
- package/lib/jobs/pipes.js +0 -7
- package/lib/jobs/pipes.js.map +0 -1
- package/lib/jobs/types/redis.d.ts +0 -28
- package/lib/jobs/types/redis.js +0 -88
- package/lib/jobs/types/redis.js.map +0 -1
- package/lib/server/impls/base.d.ts +0 -37
- package/lib/server/impls/base.js +0 -205
- package/lib/server/impls/base.js.map +0 -1
- package/lib/server/impls/express.d.ts +0 -7
- package/lib/server/impls/express.js +0 -111
- package/lib/server/impls/express.js.map +0 -1
- package/lib/server/impls/fastify.d.ts +0 -6
- package/lib/server/impls/fastify.js +0 -125
- package/lib/server/impls/fastify.js.map +0 -1
- package/lib/server/index.d.ts +0 -10
- package/lib/server/index.js +0 -10
- package/lib/server/index.js.map +0 -1
- package/lib/server/middlewares/index.d.ts +0 -1
- package/lib/server/middlewares/index.js +0 -2
- package/lib/server/middlewares/index.js.map +0 -1
- package/lib/server/middlewares/parseAuthUser.d.ts +0 -4
- package/lib/server/middlewares/parseAuthUser.js +0 -21
- package/lib/server/middlewares/parseAuthUser.js.map +0 -1
- package/lib/server/middlewares/requireAuthUser.d.ts +0 -16
- package/lib/server/middlewares/requireAuthUser.js +0 -57
- package/lib/server/middlewares/requireAuthUser.js.map +0 -1
- package/lib/server/openapi.d.ts +0 -33
- package/lib/server/openapi.js +0 -202
- package/lib/server/openapi.js.map +0 -1
- package/lib/server/pipes.d.ts +0 -74
- package/lib/server/pipes.js +0 -34
- package/lib/server/pipes.js.map +0 -1
- package/lib/server/requests-auth/apiKeys.d.ts +0 -4
- package/lib/server/requests-auth/apiKeys.js +0 -3
- package/lib/server/requests-auth/apiKeys.js.map +0 -1
- package/lib/server/requests-auth/index.d.ts +0 -2
- package/lib/server/requests-auth/index.js +0 -3
- package/lib/server/requests-auth/index.js.map +0 -1
- package/lib/server/requests-auth/tokens.d.ts +0 -44
- package/lib/server/requests-auth/tokens.js +0 -101
- package/lib/server/requests-auth/tokens.js.map +0 -1
- package/lib/server/requests.d.ts +0 -80
- package/lib/server/requests.js +0 -56
- package/lib/server/requests.js.map +0 -1
- package/lib/server/routes.d.ts +0 -14
- package/lib/server/routes.js +0 -70
- package/lib/server/routes.js.map +0 -1
- package/lib/server/sockets.d.ts +0 -25
- package/lib/server/sockets.js +0 -127
- package/lib/server/sockets.js.map +0 -1
- package/lib/server/types.d.ts +0 -109
- package/lib/server/types.js +0 -26
- package/lib/server/types.js.map +0 -1
- package/lib/types/index.d.ts +0 -3
- package/lib/types/index.js +0 -3
- package/lib/types/index.js.map +0 -1
- package/lib/types/overrides.d.ts +0 -23
- package/lib/types/overrides.js +0 -2
- package/lib/types/overrides.js.map +0 -1
- package/lib/utilities/authProviders.d.ts +0 -28
- package/lib/utilities/authProviders.js +0 -60
- package/lib/utilities/authProviders.js.map +0 -1
- package/lib/utilities/hash.d.ts +0 -2
- package/lib/utilities/hash.js +0 -15
- package/lib/utilities/hash.js.map +0 -1
- package/lib/utilities/index.d.ts +0 -6
- package/lib/utilities/index.js +0 -7
- package/lib/utilities/index.js.map +0 -1
- package/lib/utilities/json.d.ts +0 -2
- package/lib/utilities/json.js +0 -14
- package/lib/utilities/json.js.map +0 -1
- package/lib/utilities/media.d.ts +0 -1
- package/lib/utilities/media.js +0 -11
- package/lib/utilities/media.js.map +0 -1
- package/lib/utilities/random.d.ts +0 -2
- package/lib/utilities/random.js +0 -8
- package/lib/utilities/random.js.map +0 -1
- package/lib/utilities/retry.d.ts +0 -7
- package/lib/utilities/retry.js +0 -12
- package/lib/utilities/retry.js.map +0 -1
- package/lib/validations/index.d.ts +0 -6
- package/lib/validations/index.js +0 -21
- package/lib/validations/index.js.map +0 -1
- package/lib/validations/valleyed.d.ts +0 -54
- package/lib/validations/valleyed.js +0 -32
- package/lib/validations/valleyed.js.map +0 -1
package/lib/server/index.js
DELETED
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
export * from './impls/base';
|
|
2
|
-
export * from './impls/express';
|
|
3
|
-
export * from './impls/fastify';
|
|
4
|
-
export * from './middlewares';
|
|
5
|
-
export * from './pipes';
|
|
6
|
-
export * from './requests';
|
|
7
|
-
export * from './requests-auth';
|
|
8
|
-
export * from './routes';
|
|
9
|
-
export * from './types';
|
|
10
|
-
//# sourceMappingURL=index.js.map
|
package/lib/server/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/server/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAA;AAC5B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,eAAe,CAAA;AAC7B,cAAc,SAAS,CAAA;AACvB,cAAc,YAAY,CAAA;AAC1B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,UAAU,CAAA;AAExB,cAAc,SAAS,CAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from './requireAuthUser';
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/server/middlewares/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAA"}
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
import { BadRequestError, RequestError } from '../../errors';
|
|
2
|
-
import { Instance } from '../../instance';
|
|
3
|
-
import { makeMiddleware } from '../types';
|
|
4
|
-
export const parseAuthUser = makeMiddleware(async (request) => {
|
|
5
|
-
const requestsAuth = Instance.get().settings.server?.requestsAuth;
|
|
6
|
-
if (!requestsAuth)
|
|
7
|
-
return;
|
|
8
|
-
const { Authorization, ApiKey } = request.headers;
|
|
9
|
-
function makeErrorHandler(key) {
|
|
10
|
-
return function (err) {
|
|
11
|
-
request.users[key].error = err instanceof RequestError ? err : new BadRequestError('failed to parse auth user', err);
|
|
12
|
-
request.users[key].error.context[key] = key;
|
|
13
|
-
return undefined;
|
|
14
|
-
};
|
|
15
|
-
}
|
|
16
|
-
if (requestsAuth.tokens && Authorization)
|
|
17
|
-
request.users.access.value = await requestsAuth.tokens.verifyAccessToken(Authorization).catch(makeErrorHandler('access'));
|
|
18
|
-
else if (requestsAuth.apiKey && ApiKey)
|
|
19
|
-
request.users.apiKey.value = await requestsAuth.apiKey.verifyApiKey(ApiKey).catch(makeErrorHandler('apiKey'));
|
|
20
|
-
});
|
|
21
|
-
//# sourceMappingURL=parseAuthUser.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"parseAuthUser.js","sourceRoot":"","sources":["../../../src/server/middlewares/parseAuthUser.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AAC5D,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AACzC,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAA;AAEzC,MAAM,CAAC,MAAM,aAAa,GAAG,cAAc,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;IAC7D,MAAM,YAAY,GAAG,QAAQ,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAA;IACjE,IAAI,CAAC,YAAY;QAAE,OAAM;IACzB,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,OAAO,CAAA;IACjD,SAAS,gBAAgB,CAAC,GAAwB;QACjD,OAAO,UAAU,GAAQ;YACxB,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,GAAG,GAAG,YAAY,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,eAAe,CAAC,2BAA2B,EAAE,GAAG,CAAC,CAAA;YACpH,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,GAAG,CAAA;YAC3C,OAAO,SAAS,CAAA;QACjB,CAAC,CAAA;IACF,CAAC;IACD,IAAI,YAAY,CAAC,MAAM,IAAI,aAAa;QACvC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,GAAG,MAAM,YAAY,CAAC,MAAM,CAAC,iBAAiB,CAAC,aAAa,CAAC,CAAC,KAAK,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC,CAAA;SACrH,IAAI,YAAY,CAAC,MAAM,IAAI,MAAM;QACrC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,GAAG,MAAM,YAAY,CAAC,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC,CAAA;AAC/G,CAAC,CAAC,CAAA"}
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
export declare const requireAuthUser: {
|
|
2
|
-
cb: (req: import("..").Request<import("..").RouteDefToReqRes<import("..").RouteDef>>) => void | Promise<void>;
|
|
3
|
-
onSetup: ((route: import("..").Route<import("..").RouteDef>) => void) | undefined;
|
|
4
|
-
};
|
|
5
|
-
export declare const requireAuthorizationUser: {
|
|
6
|
-
cb: (req: import("..").Request<import("..").RouteDefToReqRes<import("..").RouteDef>>) => void | Promise<void>;
|
|
7
|
-
onSetup: ((route: import("..").Route<import("..").RouteDef>) => void) | undefined;
|
|
8
|
-
};
|
|
9
|
-
export declare const requireApiKeyUser: {
|
|
10
|
-
cb: (req: import("..").Request<import("..").RouteDefToReqRes<import("..").RouteDef>>) => void | Promise<void>;
|
|
11
|
-
onSetup: ((route: import("..").Route<import("..").RouteDef>) => void) | undefined;
|
|
12
|
-
};
|
|
13
|
-
export declare const requireRefreshTokenUser: {
|
|
14
|
-
cb: (req: import("..").Request<import("..").RouteDefToReqRes<import("..").RouteDef>>) => void | Promise<void>;
|
|
15
|
-
onSetup: ((route: import("..").Route<import("..").RouteDef>) => void) | undefined;
|
|
16
|
-
};
|
|
@@ -1,57 +0,0 @@
|
|
|
1
|
-
import { NotAuthenticatedError, NotAuthorizedError } from '../../errors';
|
|
2
|
-
import { Instance } from '../../instance';
|
|
3
|
-
import { makeMiddleware } from '../types';
|
|
4
|
-
export const requireAuthUser = makeMiddleware(async (request) => {
|
|
5
|
-
const user = request.users.access.value || request.users.apiKey.value;
|
|
6
|
-
const error = request.users.access.error || request.users.apiKey.error;
|
|
7
|
-
if (!user && error)
|
|
8
|
-
throw error;
|
|
9
|
-
request.authUser = user;
|
|
10
|
-
if (!request.authUser)
|
|
11
|
-
throw new NotAuthenticatedError();
|
|
12
|
-
}, (route) => {
|
|
13
|
-
route.security ??= [];
|
|
14
|
-
route.security.push({ Authorization: [] }, { ApiKey: [] });
|
|
15
|
-
route.descriptions ??= [];
|
|
16
|
-
route.descriptions.push('Requires a valid means of authentication.');
|
|
17
|
-
});
|
|
18
|
-
export const requireAuthorizationUser = makeMiddleware(async (request) => {
|
|
19
|
-
if (request.users.access.error)
|
|
20
|
-
throw request.users.access.error;
|
|
21
|
-
request.authUser = request.users.access.value;
|
|
22
|
-
if (!request.authUser)
|
|
23
|
-
throw new NotAuthenticatedError();
|
|
24
|
-
}, (route) => {
|
|
25
|
-
route.security ??= [];
|
|
26
|
-
route.security.push({ Authorization: [] });
|
|
27
|
-
route.descriptions ??= [];
|
|
28
|
-
route.descriptions.push('Requires a valid authorization header.');
|
|
29
|
-
});
|
|
30
|
-
export const requireApiKeyUser = makeMiddleware(async (request) => {
|
|
31
|
-
if (request.users.apiKey.error)
|
|
32
|
-
throw request.users.apiKey.error;
|
|
33
|
-
request.authUser = request.users.apiKey.value;
|
|
34
|
-
if (!request.authUser)
|
|
35
|
-
throw new NotAuthenticatedError();
|
|
36
|
-
}, (route) => {
|
|
37
|
-
route.security ??= [];
|
|
38
|
-
route.security.push({ ApiKey: [] });
|
|
39
|
-
route.descriptions ??= [];
|
|
40
|
-
route.descriptions.push('Requires a valid x-api-key header.');
|
|
41
|
-
});
|
|
42
|
-
export const requireRefreshTokenUser = makeMiddleware(async (request) => {
|
|
43
|
-
if (request.users.refresh.error)
|
|
44
|
-
throw request.users.refresh.error;
|
|
45
|
-
const refreshToken = request.headers.RefreshToken;
|
|
46
|
-
if (!refreshToken)
|
|
47
|
-
throw new NotAuthorizedError('x-refresh-token header missing');
|
|
48
|
-
request.users.refresh.value = await Instance.get().settings.server?.requestsAuth.tokens?.verifyRefreshToken(refreshToken);
|
|
49
|
-
if (!request.users.refresh.value)
|
|
50
|
-
throw new NotAuthorizedError();
|
|
51
|
-
}, (route) => {
|
|
52
|
-
route.security ??= [];
|
|
53
|
-
route.security.push({ RefreshToken: [] });
|
|
54
|
-
route.descriptions ??= [];
|
|
55
|
-
route.descriptions.push('Requires a valid x-refresh-token header.');
|
|
56
|
-
});
|
|
57
|
-
//# sourceMappingURL=requireAuthUser.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"requireAuthUser.js","sourceRoot":"","sources":["../../../src/server/middlewares/requireAuthUser.ts"],"names":[],"mappings":"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"}
|
package/lib/server/openapi.d.ts
DELETED
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
import { JsonSchema } from 'valleyed';
|
|
2
|
-
import { ServerConfig } from './pipes';
|
|
3
|
-
import { Router } from './routes';
|
|
4
|
-
import { Route } from './types';
|
|
5
|
-
declare module 'openapi-types' {
|
|
6
|
-
namespace OpenAPIV3 {
|
|
7
|
-
interface Document {
|
|
8
|
-
'x-tagGroups': {
|
|
9
|
-
name: string;
|
|
10
|
-
tags: string[];
|
|
11
|
-
}[];
|
|
12
|
-
}
|
|
13
|
-
interface TagObject {
|
|
14
|
-
'x-displayName': string;
|
|
15
|
-
}
|
|
16
|
-
}
|
|
17
|
-
}
|
|
18
|
-
export type OpenApiSchemaDef = {
|
|
19
|
-
request: Partial<Record<'body' | 'query' | 'params' | 'headers' | 'response', JsonSchema>>;
|
|
20
|
-
response: Partial<Record<'response' | 'responseHeaders', {
|
|
21
|
-
status: number;
|
|
22
|
-
schema: JsonSchema;
|
|
23
|
-
contentType: string;
|
|
24
|
-
}[]>>;
|
|
25
|
-
};
|
|
26
|
-
export declare class OpenApi {
|
|
27
|
-
#private;
|
|
28
|
-
private config;
|
|
29
|
-
constructor(config: ServerConfig);
|
|
30
|
-
cleanPath(path: string): string;
|
|
31
|
-
register(route: Route<any>, def: OpenApiSchemaDef): Promise<void>;
|
|
32
|
-
router(): Router<import("./types").RouteDef>;
|
|
33
|
-
}
|
package/lib/server/openapi.js
DELETED
|
@@ -1,202 +0,0 @@
|
|
|
1
|
-
import { convert } from '@openapi-contrib/json-schema-to-openapi-schema';
|
|
2
|
-
import { capitalize } from 'valleyed';
|
|
3
|
-
import { Router } from './routes';
|
|
4
|
-
export class OpenApi {
|
|
5
|
-
config;
|
|
6
|
-
#registeredTags = {};
|
|
7
|
-
#registeredTagGroups = {};
|
|
8
|
-
#baseOpenapiDoc;
|
|
9
|
-
constructor(config) {
|
|
10
|
-
this.config = config;
|
|
11
|
-
this.#baseOpenapiDoc = {
|
|
12
|
-
openapi: '3.0.0',
|
|
13
|
-
info: {
|
|
14
|
-
title: `${config.app.name} ${config.app.id}`,
|
|
15
|
-
version: config.config.openapi.docsVersion ?? '',
|
|
16
|
-
},
|
|
17
|
-
servers: config.config.openapi.docsBaseUrl?.map((url) => ({ url })),
|
|
18
|
-
paths: {},
|
|
19
|
-
components: {
|
|
20
|
-
schemas: {},
|
|
21
|
-
securitySchemes: {
|
|
22
|
-
Authorization: {
|
|
23
|
-
type: 'apiKey',
|
|
24
|
-
name: 'authorization',
|
|
25
|
-
in: 'header',
|
|
26
|
-
},
|
|
27
|
-
RefreshToken: {
|
|
28
|
-
type: 'apiKey',
|
|
29
|
-
name: 'x-refresh-token',
|
|
30
|
-
in: 'header',
|
|
31
|
-
},
|
|
32
|
-
ApiKey: {
|
|
33
|
-
type: 'apiKey',
|
|
34
|
-
name: 'x-api-key',
|
|
35
|
-
in: 'header',
|
|
36
|
-
},
|
|
37
|
-
},
|
|
38
|
-
},
|
|
39
|
-
tags: [],
|
|
40
|
-
'x-tagGroups': [],
|
|
41
|
-
};
|
|
42
|
-
}
|
|
43
|
-
cleanPath(path) {
|
|
44
|
-
let cleaned = path.replace(/(\/\s*)+/g, '/');
|
|
45
|
-
if (!cleaned.startsWith('/'))
|
|
46
|
-
cleaned = `/${cleaned}`;
|
|
47
|
-
if (cleaned !== '/' && cleaned.endsWith('/'))
|
|
48
|
-
cleaned = cleaned.slice(0, -1);
|
|
49
|
-
return cleaned;
|
|
50
|
-
}
|
|
51
|
-
async register(route, def) {
|
|
52
|
-
if (route.hide)
|
|
53
|
-
return;
|
|
54
|
-
const tag = this.#buildTag(route.groups ?? []);
|
|
55
|
-
const cleanPath = this.cleanPath(route.path);
|
|
56
|
-
const operationId = `(${route.method.toUpperCase()}) ${cleanPath}`;
|
|
57
|
-
await this.#addRouteToOpenApiDoc(cleanPath, route.method.toLowerCase(), def, {
|
|
58
|
-
operationId,
|
|
59
|
-
summary: route.title ?? cleanPath,
|
|
60
|
-
description: route.descriptions?.join('\n\n'),
|
|
61
|
-
tags: tag ? [tag] : undefined,
|
|
62
|
-
security: route.security,
|
|
63
|
-
});
|
|
64
|
-
}
|
|
65
|
-
async #addRouteToOpenApiDoc(path, method, def, methodObj) {
|
|
66
|
-
if (def.response.response?.length) {
|
|
67
|
-
methodObj.responses ??= {};
|
|
68
|
-
for (const resp of def.response.response) {
|
|
69
|
-
methodObj.responses[resp.status] ??= { description: '', content: {} };
|
|
70
|
-
const res = methodObj.responses[resp.status];
|
|
71
|
-
res.content[resp.contentType] = { schema: await convert(this.#visit(resp.schema)) };
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
if (def.response.responseHeaders?.length) {
|
|
75
|
-
methodObj.responses ??= {};
|
|
76
|
-
for (const resp of def.response.responseHeaders) {
|
|
77
|
-
methodObj.responses[resp.status] ??= { description: '', content: {} };
|
|
78
|
-
methodObj.responses[resp.status];
|
|
79
|
-
const res = methodObj.responses[resp.status];
|
|
80
|
-
res.headers = { schema: (await convert(this.#visit(resp.schema))) };
|
|
81
|
-
}
|
|
82
|
-
}
|
|
83
|
-
if (def.request.body)
|
|
84
|
-
methodObj.requestBody = {
|
|
85
|
-
required: true,
|
|
86
|
-
content: {
|
|
87
|
-
'application/json': { schema: await convert(this.#visit(def.request.body)) },
|
|
88
|
-
},
|
|
89
|
-
};
|
|
90
|
-
const parameters = [];
|
|
91
|
-
const addParams = async (location, schema) => {
|
|
92
|
-
if (!schema)
|
|
93
|
-
return;
|
|
94
|
-
const flat = this.#flattenForParameters(schema);
|
|
95
|
-
for (const schema of flat) {
|
|
96
|
-
if (!schema.properties)
|
|
97
|
-
continue;
|
|
98
|
-
for (const [name, value] of Object.entries(schema.properties))
|
|
99
|
-
parameters.push({
|
|
100
|
-
name,
|
|
101
|
-
in: location,
|
|
102
|
-
schema: await convert(this.#visit(value)),
|
|
103
|
-
required: (schema.required || []).includes(name),
|
|
104
|
-
});
|
|
105
|
-
}
|
|
106
|
-
};
|
|
107
|
-
await Promise.all([
|
|
108
|
-
addParams('query', def.request.query),
|
|
109
|
-
addParams('path', def.request.params),
|
|
110
|
-
addParams('header', def.request.headers),
|
|
111
|
-
]);
|
|
112
|
-
if (parameters.length)
|
|
113
|
-
methodObj.parameters = parameters;
|
|
114
|
-
const base = this.#baseOpenapiDoc;
|
|
115
|
-
if (!base.paths)
|
|
116
|
-
base.paths = {};
|
|
117
|
-
if (!base.paths[path])
|
|
118
|
-
base.paths[path] = {};
|
|
119
|
-
base.paths[path][method] = methodObj;
|
|
120
|
-
}
|
|
121
|
-
router() {
|
|
122
|
-
const jsonPath = '/openapi.json';
|
|
123
|
-
const router = new Router({ path: this.config.config.openapi.docsPath ?? '/', hide: true });
|
|
124
|
-
router.get('/')((req) => req.res({ body: this.#html(`.${jsonPath}`), contentType: 'text/html' }));
|
|
125
|
-
router.get(jsonPath)((req) => req.res({ body: this.#baseOpenapiDoc }));
|
|
126
|
-
return router;
|
|
127
|
-
}
|
|
128
|
-
#flattenForParameters(node) {
|
|
129
|
-
const { allOf, oneOf, anyOf, ...schema } = node;
|
|
130
|
-
if (allOf)
|
|
131
|
-
return allOf.flatMap((n) => this.#flattenForParameters(n));
|
|
132
|
-
return [schema];
|
|
133
|
-
}
|
|
134
|
-
#visit(node) {
|
|
135
|
-
if (!node || typeof node !== 'object')
|
|
136
|
-
return node;
|
|
137
|
-
if (typeof node.$refId === 'string') {
|
|
138
|
-
const { $refId: id, ...rest } = node;
|
|
139
|
-
const res = this.#visit(rest);
|
|
140
|
-
if (this.#baseOpenapiDoc.components?.schemas) {
|
|
141
|
-
this.#baseOpenapiDoc.components.schemas[id] = res;
|
|
142
|
-
return { $ref: `#/components/schemas/${id}` };
|
|
143
|
-
}
|
|
144
|
-
else
|
|
145
|
-
return res;
|
|
146
|
-
}
|
|
147
|
-
if (Array.isArray(node))
|
|
148
|
-
return node.map((n) => this.#visit(n));
|
|
149
|
-
return Object.fromEntries(Object.entries(node).map(([key, value]) => [key, this.#visit(value)]));
|
|
150
|
-
}
|
|
151
|
-
#buildTag(groups) {
|
|
152
|
-
if (!groups.length)
|
|
153
|
-
return undefined;
|
|
154
|
-
const parsed = groups.map((g) => (typeof g === 'string' ? { name: g } : g));
|
|
155
|
-
const name = parsed.map((g) => g.name).join(' > ');
|
|
156
|
-
const displayName = parsed.at(-1)?.name ?? '';
|
|
157
|
-
const description = parsed
|
|
158
|
-
.map((g) => g.description?.trim() ?? '')
|
|
159
|
-
.filter(Boolean)
|
|
160
|
-
.join('\n\n\n\n');
|
|
161
|
-
if (!this.#registeredTags[name]) {
|
|
162
|
-
this.#registeredTags[name] = true;
|
|
163
|
-
this.#baseOpenapiDoc.tags.push({ name, 'x-displayName': displayName, description });
|
|
164
|
-
const tagGroups = parsed.slice(0, -1);
|
|
165
|
-
const groupName = tagGroups.map((g) => g.name).join(' > ') || 'default';
|
|
166
|
-
if (!this.#registeredTagGroups[groupName]) {
|
|
167
|
-
const group = { name: groupName, tags: [] };
|
|
168
|
-
this.#baseOpenapiDoc['x-tagGroups'].push(group);
|
|
169
|
-
this.#registeredTagGroups[groupName] = group;
|
|
170
|
-
}
|
|
171
|
-
this.#registeredTagGroups[groupName].tags = [...new Set([...this.#registeredTagGroups[groupName].tags, name])];
|
|
172
|
-
}
|
|
173
|
-
return name;
|
|
174
|
-
}
|
|
175
|
-
#html(jsonPath) {
|
|
176
|
-
const title = capitalize(`${this.config.app.name} ${this.config.app.id}`);
|
|
177
|
-
return `
|
|
178
|
-
<!doctype html>
|
|
179
|
-
<html>
|
|
180
|
-
<head>
|
|
181
|
-
<title>${title}</title>
|
|
182
|
-
<meta charset="utf-8" />
|
|
183
|
-
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
|
184
|
-
<style>
|
|
185
|
-
.darklight-reference {
|
|
186
|
-
display: none;
|
|
187
|
-
}
|
|
188
|
-
</style>
|
|
189
|
-
</head>
|
|
190
|
-
<body>
|
|
191
|
-
<script id="api-reference" data-url="${jsonPath}"></script>
|
|
192
|
-
<script>
|
|
193
|
-
const configuration = { theme: 'purple' };
|
|
194
|
-
document.getElementById('api-reference').dataset.configuration = JSON.stringify(configuration);
|
|
195
|
-
</script>
|
|
196
|
-
<script src="https://cdn.jsdelivr.net/npm/@scalar/api-reference@1.28.33"></script>
|
|
197
|
-
</body>
|
|
198
|
-
</html>
|
|
199
|
-
`;
|
|
200
|
-
}
|
|
201
|
-
}
|
|
202
|
-
//# sourceMappingURL=openapi.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"openapi.js","sourceRoot":"","sources":["../../src/server/openapi.ts"],"names":[],"mappings":"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"}
|
package/lib/server/pipes.d.ts
DELETED
|
@@ -1,74 +0,0 @@
|
|
|
1
|
-
import { PipeOutput, v } from 'valleyed';
|
|
2
|
-
import { BaseApiKeysUtility, BaseTokensUtility } from './requests-auth';
|
|
3
|
-
import { EventBus } from '../events';
|
|
4
|
-
import { Instance } from '../instance';
|
|
5
|
-
export declare const serverPipe: v.Pipe<{
|
|
6
|
-
type: "fastify" | "express";
|
|
7
|
-
port: number;
|
|
8
|
-
publicPath: string | undefined;
|
|
9
|
-
healthPath: string | undefined;
|
|
10
|
-
openapi: {
|
|
11
|
-
docsVersion: string | undefined;
|
|
12
|
-
docsBaseUrl: string[] | undefined;
|
|
13
|
-
docsPath: string | undefined;
|
|
14
|
-
} | undefined;
|
|
15
|
-
requests: {
|
|
16
|
-
log: boolean | undefined;
|
|
17
|
-
paginationDefaultLimit: number | undefined;
|
|
18
|
-
maxFileUploadSizeInMb: number | undefined;
|
|
19
|
-
rateLimit: {
|
|
20
|
-
enabled: boolean | undefined;
|
|
21
|
-
periodInMs: number | undefined;
|
|
22
|
-
limit: number | undefined;
|
|
23
|
-
} | undefined;
|
|
24
|
-
slowdown: {
|
|
25
|
-
enabled: boolean | undefined;
|
|
26
|
-
periodInMs: number | undefined;
|
|
27
|
-
delayAfter: number | undefined;
|
|
28
|
-
delayInMs: number | undefined;
|
|
29
|
-
} | undefined;
|
|
30
|
-
} | undefined;
|
|
31
|
-
requestsAuth: {
|
|
32
|
-
tokens: BaseTokensUtility | undefined;
|
|
33
|
-
apiKey: BaseApiKeysUtility | undefined;
|
|
34
|
-
} | undefined;
|
|
35
|
-
}, {
|
|
36
|
-
type: "fastify" | "express";
|
|
37
|
-
port: number;
|
|
38
|
-
publicPath: string | undefined;
|
|
39
|
-
healthPath: string | undefined;
|
|
40
|
-
openapi: {
|
|
41
|
-
docsVersion: string;
|
|
42
|
-
docsBaseUrl: string[];
|
|
43
|
-
docsPath: string;
|
|
44
|
-
};
|
|
45
|
-
requests: {
|
|
46
|
-
log: boolean;
|
|
47
|
-
paginationDefaultLimit: number;
|
|
48
|
-
maxFileUploadSizeInMb: number;
|
|
49
|
-
rateLimit: {
|
|
50
|
-
enabled: boolean;
|
|
51
|
-
periodInMs: number;
|
|
52
|
-
limit: number;
|
|
53
|
-
};
|
|
54
|
-
slowdown: {
|
|
55
|
-
enabled: boolean;
|
|
56
|
-
periodInMs: number;
|
|
57
|
-
delayAfter: number;
|
|
58
|
-
delayInMs: number;
|
|
59
|
-
};
|
|
60
|
-
};
|
|
61
|
-
requestsAuth: {
|
|
62
|
-
tokens: BaseTokensUtility | undefined;
|
|
63
|
-
apiKey: BaseApiKeysUtility | undefined;
|
|
64
|
-
};
|
|
65
|
-
}, any>;
|
|
66
|
-
export type ServerConfig = {
|
|
67
|
-
config: PipeOutput<typeof serverPipe>;
|
|
68
|
-
app: {
|
|
69
|
-
id: string;
|
|
70
|
-
name: string;
|
|
71
|
-
};
|
|
72
|
-
log: Instance<any, any>['log'];
|
|
73
|
-
eventBus?: EventBus;
|
|
74
|
-
};
|
package/lib/server/pipes.js
DELETED
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
import { v } from 'valleyed';
|
|
2
|
-
import { BaseApiKeysUtility, BaseTokensUtility } from './requests-auth';
|
|
3
|
-
export const serverPipe = v.object({
|
|
4
|
-
type: v.in(['fastify', 'express']),
|
|
5
|
-
port: v.number(),
|
|
6
|
-
publicPath: v.optional(v.string()),
|
|
7
|
-
healthPath: v.optional(v.string()),
|
|
8
|
-
openapi: v.defaults(v.object({
|
|
9
|
-
docsVersion: v.defaults(v.string(), '1.0.0'),
|
|
10
|
-
docsBaseUrl: v.defaults(v.array(v.string()), ['/']),
|
|
11
|
-
docsPath: v.defaults(v.string(), '/__docs'),
|
|
12
|
-
}), {}),
|
|
13
|
-
requests: v.defaults(v.object({
|
|
14
|
-
log: v.defaults(v.boolean(), true),
|
|
15
|
-
paginationDefaultLimit: v.defaults(v.number(), 100),
|
|
16
|
-
maxFileUploadSizeInMb: v.defaults(v.number(), 500),
|
|
17
|
-
rateLimit: v.defaults(v.object({
|
|
18
|
-
enabled: v.defaults(v.boolean(), false),
|
|
19
|
-
periodInMs: v.defaults(v.number(), 60 * 60 * 1000),
|
|
20
|
-
limit: v.defaults(v.number(), 5000),
|
|
21
|
-
}), {}),
|
|
22
|
-
slowdown: v.defaults(v.object({
|
|
23
|
-
enabled: v.defaults(v.boolean(), false),
|
|
24
|
-
periodInMs: v.defaults(v.number(), 10 * 60 * 1000),
|
|
25
|
-
delayAfter: v.defaults(v.number(), 2000),
|
|
26
|
-
delayInMs: v.defaults(v.number(), 500),
|
|
27
|
-
}), {}),
|
|
28
|
-
}), {}),
|
|
29
|
-
requestsAuth: v.defaults(v.object({
|
|
30
|
-
tokens: v.optional(v.instanceOf(BaseTokensUtility)),
|
|
31
|
-
apiKey: v.optional(v.instanceOf(BaseApiKeysUtility)),
|
|
32
|
-
}), {}),
|
|
33
|
-
});
|
|
34
|
-
//# sourceMappingURL=pipes.js.map
|
package/lib/server/pipes.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"pipes.js","sourceRoot":"","sources":["../../src/server/pipes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,CAAC,EAAE,MAAM,UAAU,CAAA;AAExC,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAA;AAIvE,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,CAAC,MAAM,CAAC;IAClC,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,SAAS,EAAE,SAAS,CAAU,CAAC;IAC3C,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,UAAU,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IAClC,UAAU,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IAClC,OAAO,EAAE,CAAC,CAAC,QAAQ,CAClB,CAAC,CAAC,MAAM,CAAC;QACR,WAAW,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,OAAO,CAAC;QAC5C,WAAW,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;QACnD,QAAQ,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,SAAS,CAAC;KAC3C,CAAC,EACF,EAAE,CACF;IACD,QAAQ,EAAE,CAAC,CAAC,QAAQ,CACnB,CAAC,CAAC,MAAM,CAAC;QACR,GAAG,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,EAAE,EAAE,IAAI,CAAC;QAClC,sBAAsB,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,GAAG,CAAC;QACnD,qBAAqB,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,GAAG,CAAC;QAClD,SAAS,EAAE,CAAC,CAAC,QAAQ,CACpB,CAAC,CAAC,MAAM,CAAC;YACR,OAAO,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,EAAE,EAAE,KAAK,CAAC;YACvC,UAAU,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;YAClD,KAAK,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,IAAI,CAAC;SACnC,CAAC,EACF,EAAE,CACF;QACD,QAAQ,EAAE,CAAC,CAAC,QAAQ,CACnB,CAAC,CAAC,MAAM,CAAC;YACR,OAAO,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,EAAE,EAAE,KAAK,CAAC;YACvC,UAAU,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;YAClD,UAAU,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,IAAI,CAAC;YACxC,SAAS,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,GAAG,CAAC;SACtC,CAAC,EACF,EAAE,CACF;KACD,CAAC,EACF,EAAE,CACF;IACD,YAAY,EAAE,CAAC,CAAC,QAAQ,CACvB,CAAC,CAAC,MAAM,CAAC;QACR,MAAM,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,iBAAiB,CAAC,CAAC;QACnD,MAAM,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,kBAAkB,CAAC,CAAC;KACpD,CAAC,EACF,EAAE,CACF;CACD,CAAC,CAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"apiKeys.js","sourceRoot":"","sources":["../../../src/server/requests-auth/apiKeys.ts"],"names":[],"mappings":"AAEA,MAAM,OAAgB,kBAAkB;CAEvC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/server/requests-auth/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAA;AACzB,cAAc,UAAU,CAAA"}
|
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
import type { AuthUser, RefreshUser } from '../../types';
|
|
2
|
-
export declare abstract class BaseTokensUtility {
|
|
3
|
-
abstract createAccessToken(payload: AuthUser): Promise<string>;
|
|
4
|
-
abstract createRefreshToken(payload: RefreshUser): Promise<string>;
|
|
5
|
-
abstract verifyAccessToken(token: string): Promise<AuthUser>;
|
|
6
|
-
abstract verifyRefreshToken(token: string): Promise<RefreshUser>;
|
|
7
|
-
abstract retrieveAccessTokenFor(userId: string): Promise<string | null>;
|
|
8
|
-
abstract retrieveRefreshTokenFor(userId: string): Promise<string | null>;
|
|
9
|
-
abstract deleteAccessTokenFor(userId: string): Promise<void>;
|
|
10
|
-
abstract deleteRefreshTokenFor(userId: string): Promise<void>;
|
|
11
|
-
extractAccessTokenValue(headerValue: string): string;
|
|
12
|
-
exchangeTokens(tokens: {
|
|
13
|
-
accessToken: string;
|
|
14
|
-
refreshToken: string;
|
|
15
|
-
}, getPayload: (id: string) => Promise<{
|
|
16
|
-
access: AuthUser;
|
|
17
|
-
refresh: RefreshUser;
|
|
18
|
-
}>): Promise<{
|
|
19
|
-
accessToken: string;
|
|
20
|
-
refreshToken: string;
|
|
21
|
-
}>;
|
|
22
|
-
}
|
|
23
|
-
type CacheTokensUtilityOptions = {
|
|
24
|
-
accessTokenKey: string;
|
|
25
|
-
refreshTokenKey: string;
|
|
26
|
-
accessTokenTTL: number;
|
|
27
|
-
refreshTokenTTL: number;
|
|
28
|
-
accessTokenPrefix: string;
|
|
29
|
-
refreshTokenPrefix: string;
|
|
30
|
-
};
|
|
31
|
-
export declare class CacheTokensUtility extends BaseTokensUtility {
|
|
32
|
-
#private;
|
|
33
|
-
private options;
|
|
34
|
-
constructor(options?: Partial<CacheTokensUtilityOptions>);
|
|
35
|
-
createAccessToken(payload: AuthUser): Promise<string>;
|
|
36
|
-
createRefreshToken(payload: RefreshUser): Promise<string>;
|
|
37
|
-
verifyAccessToken(authHeader: string): Promise<AuthUser>;
|
|
38
|
-
verifyRefreshToken(token: string): Promise<RefreshUser>;
|
|
39
|
-
retrieveAccessTokenFor(userId: string): Promise<string | null>;
|
|
40
|
-
retrieveRefreshTokenFor(userId: string): Promise<string | null>;
|
|
41
|
-
deleteAccessTokenFor(userId: string): Promise<void>;
|
|
42
|
-
deleteRefreshTokenFor(userId: string): Promise<void>;
|
|
43
|
-
}
|
|
44
|
-
export {};
|