@technomoron/api-server-base 2.0.0-beta.21 → 2.0.0-beta.23
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/cjs/common/types.cjs +10 -0
- package/dist/cjs/common/types.d.ts +137 -0
- package/dist/cjs/{api-module.cjs → server/src/api-module.cjs} +8 -0
- package/dist/{esm → cjs/server/src}/api-module.d.ts +15 -0
- package/dist/cjs/{api-server-base.cjs → server/src/api-server-base.cjs} +669 -627
- package/dist/{esm → cjs/server/src}/api-server-base.d.ts +105 -78
- package/dist/cjs/{auth-api/auth-module.js → server/src/auth-api/auth-module.cjs} +96 -76
- package/dist/cjs/{auth-api → server/src/auth-api}/auth-module.d.ts +1 -1
- package/dist/cjs/{auth-api/compat-auth-storage.js → server/src/auth-api/compat-auth-storage.cjs} +4 -4
- package/dist/cjs/{auth-api/mem-auth-store.js → server/src/auth-api/mem-auth-store.cjs} +7 -7
- package/dist/cjs/{auth-api/module.js → server/src/auth-api/module.cjs} +1 -1
- package/dist/cjs/server/src/auth-api/schemas.cjs +171 -0
- package/dist/cjs/server/src/auth-api/schemas.d.ts +21 -0
- package/dist/cjs/{auth-api/sql-auth-store.js → server/src/auth-api/sql-auth-store.cjs} +8 -8
- package/dist/cjs/{auth-api/user-id.js → server/src/auth-api/user-id.cjs} +12 -3
- package/dist/{esm → cjs/server/src}/auth-cookie-options.d.ts +5 -3
- package/dist/cjs/server/src/base/client-info.cjs +285 -0
- package/dist/cjs/server/src/base/client-info.d.ts +27 -0
- package/dist/cjs/server/src/base/error-utils.cjs +50 -0
- package/dist/cjs/server/src/base/error-utils.d.ts +16 -0
- package/dist/cjs/server/src/base/request-utils.cjs +27 -0
- package/dist/cjs/server/src/base/request-utils.d.ts +8 -0
- package/dist/cjs/{index.cjs → server/src/index.cjs} +24 -15
- package/dist/{esm → cjs/server/src}/index.d.ts +7 -0
- package/dist/cjs/server/src/limiter/auth-rate-limiter.cjs +35 -0
- package/dist/cjs/server/src/limiter/auth-rate-limiter.d.ts +12 -0
- package/dist/cjs/server/src/limiter/fixed-window.cjs +41 -0
- package/dist/cjs/server/src/limiter/fixed-window.d.ts +11 -0
- package/dist/cjs/{oauth/base.js → server/src/oauth/base.cjs} +1 -0
- package/dist/cjs/{oauth → server/src/oauth}/base.d.ts +8 -1
- package/dist/cjs/{oauth/memory.js → server/src/oauth/memory.cjs} +7 -4
- package/dist/{esm → cjs/server/src}/oauth/memory.d.ts +1 -1
- package/dist/cjs/{oauth/models.js → server/src/oauth/models.cjs} +2 -2
- package/dist/cjs/{oauth/sequelize.js → server/src/oauth/sequelize.cjs} +11 -7
- package/dist/{esm → cjs/server/src}/oauth/sequelize.d.ts +1 -1
- package/dist/cjs/{passkey/base.js → server/src/passkey/base.cjs} +1 -0
- package/dist/{esm → cjs/server/src}/passkey/base.d.ts +11 -0
- package/dist/cjs/{passkey/memory.js → server/src/passkey/memory.cjs} +2 -2
- package/dist/cjs/{passkey/models.js → server/src/passkey/models.cjs} +1 -1
- package/dist/cjs/{passkey/sequelize.js → server/src/passkey/sequelize.cjs} +3 -3
- package/dist/cjs/{passkey/service.js → server/src/passkey/service.cjs} +17 -3
- package/dist/{esm → cjs/server/src}/passkey/service.d.ts +1 -1
- package/dist/cjs/{sequelize-utils.js → server/src/sequelize-utils.cjs} +4 -5
- package/dist/cjs/{token/base.js → server/src/token/base.cjs} +4 -0
- package/dist/{esm → cjs/server/src}/token/base.d.ts +7 -0
- package/dist/cjs/{token/memory.js → server/src/token/memory.cjs} +15 -20
- package/dist/cjs/{token/sequelize.js → server/src/token/sequelize.cjs} +25 -11
- package/dist/cjs/server/src/upload/memory.cjs +92 -0
- package/dist/cjs/server/src/upload/memory.d.ts +17 -0
- package/dist/cjs/server/src/upload/tus-module.cjs +270 -0
- package/dist/cjs/server/src/upload/tus-module.d.ts +38 -0
- package/dist/cjs/server/src/upload/types.d.ts +8 -0
- package/dist/cjs/{user/base.js → server/src/user/base.cjs} +1 -0
- package/dist/cjs/{user → server/src/user}/base.d.ts +9 -0
- package/dist/cjs/{user/memory.js → server/src/user/memory.cjs} +29 -7
- package/dist/cjs/{user/sequelize.js → server/src/user/sequelize.cjs} +33 -8
- package/dist/cjs/server/src/user/types.cjs +2 -0
- package/dist/esm/common/types.d.ts +137 -0
- package/dist/esm/common/types.js +9 -0
- package/dist/{cjs → esm/server/src}/api-module.d.ts +15 -0
- package/dist/esm/{api-module.js → server/src/api-module.js} +8 -0
- package/dist/{cjs → esm/server/src}/api-server-base.d.ts +105 -78
- package/dist/esm/{api-server-base.js → server/src/api-server-base.js} +658 -616
- package/dist/esm/{auth-api → server/src/auth-api}/auth-module.d.ts +1 -1
- package/dist/esm/{auth-api → server/src/auth-api}/auth-module.js +92 -72
- package/dist/esm/{auth-api → server/src/auth-api}/compat-auth-storage.js +3 -3
- package/dist/esm/server/src/auth-api/schemas.d.ts +21 -0
- package/dist/esm/server/src/auth-api/schemas.js +168 -0
- package/dist/esm/{auth-api → server/src/auth-api}/user-id.js +12 -3
- package/dist/{cjs → esm/server/src}/auth-cookie-options.d.ts +5 -3
- package/dist/esm/server/src/base/client-info.d.ts +27 -0
- package/dist/esm/server/src/base/client-info.js +282 -0
- package/dist/esm/server/src/base/error-utils.d.ts +16 -0
- package/dist/esm/server/src/base/error-utils.js +44 -0
- package/dist/esm/server/src/base/request-utils.d.ts +8 -0
- package/dist/esm/server/src/base/request-utils.js +23 -0
- package/dist/{cjs → esm/server/src}/index.d.ts +7 -0
- package/dist/esm/{index.js → server/src/index.js} +4 -0
- package/dist/esm/server/src/limiter/auth-rate-limiter.d.ts +12 -0
- package/dist/esm/server/src/limiter/auth-rate-limiter.js +32 -0
- package/dist/esm/server/src/limiter/fixed-window.d.ts +11 -0
- package/dist/esm/server/src/limiter/fixed-window.js +37 -0
- package/dist/esm/{oauth → server/src/oauth}/base.d.ts +8 -1
- package/dist/esm/server/src/oauth/base.js +3 -0
- package/dist/{cjs → esm/server/src}/oauth/memory.d.ts +1 -1
- package/dist/esm/{oauth → server/src/oauth}/memory.js +5 -2
- package/dist/{cjs → esm/server/src}/oauth/sequelize.d.ts +1 -1
- package/dist/esm/{oauth → server/src/oauth}/sequelize.js +6 -2
- package/dist/{cjs → esm/server/src}/passkey/base.d.ts +11 -0
- package/dist/esm/server/src/passkey/base.js +3 -0
- package/dist/{cjs → esm/server/src}/passkey/service.d.ts +1 -1
- package/dist/esm/{passkey → server/src/passkey}/service.js +17 -3
- package/dist/esm/{sequelize-utils.js → server/src/sequelize-utils.js} +4 -5
- package/dist/{cjs → esm/server/src}/token/base.d.ts +7 -0
- package/dist/esm/{token → server/src/token}/base.js +4 -0
- package/dist/esm/{token → server/src/token}/memory.js +14 -19
- package/dist/esm/{token → server/src/token}/sequelize.js +22 -8
- package/dist/esm/server/src/upload/memory.d.ts +17 -0
- package/dist/esm/server/src/upload/memory.js +86 -0
- package/dist/esm/server/src/upload/tus-module.d.ts +38 -0
- package/dist/esm/server/src/upload/tus-module.js +266 -0
- package/dist/esm/server/src/upload/types.d.ts +8 -0
- package/dist/esm/{user → server/src/user}/base.d.ts +9 -0
- package/dist/esm/{user → server/src/user}/base.js +1 -0
- package/dist/esm/{user → server/src/user}/memory.js +27 -5
- package/dist/esm/{user → server/src/user}/sequelize.js +30 -5
- package/dist/esm/server/src/user/types.js +1 -0
- package/docs/swagger/openapi.json +411 -125
- package/package.json +129 -134
- package/README.txt +0 -213
- package/dist/esm/oauth/base.js +0 -2
- package/dist/esm/passkey/base.js +0 -2
- /package/dist/cjs/{auth-api → server/src/auth-api}/compat-auth-storage.d.ts +0 -0
- /package/dist/cjs/{auth-api → server/src/auth-api}/mem-auth-store.d.ts +0 -0
- /package/dist/cjs/{auth-api → server/src/auth-api}/module.d.ts +0 -0
- /package/dist/cjs/{auth-api → server/src/auth-api}/sql-auth-store.d.ts +0 -0
- /package/dist/cjs/{auth-api/storage.js → server/src/auth-api/storage.cjs} +0 -0
- /package/dist/cjs/{auth-api → server/src/auth-api}/storage.d.ts +0 -0
- /package/dist/cjs/{auth-api/types.js → server/src/auth-api/types.cjs} +0 -0
- /package/dist/cjs/{auth-api → server/src/auth-api}/types.d.ts +0 -0
- /package/dist/cjs/{auth-api → server/src/auth-api}/user-id.d.ts +0 -0
- /package/dist/cjs/{auth-cookie-options.js → server/src/auth-cookie-options.cjs} +0 -0
- /package/dist/cjs/{oauth → server/src/oauth}/models.d.ts +0 -0
- /package/dist/cjs/{oauth/types.js → server/src/oauth/types.cjs} +0 -0
- /package/dist/cjs/{oauth → server/src/oauth}/types.d.ts +0 -0
- /package/dist/cjs/{passkey/config.js → server/src/passkey/config.cjs} +0 -0
- /package/dist/cjs/{passkey → server/src/passkey}/config.d.ts +0 -0
- /package/dist/cjs/{passkey → server/src/passkey}/memory.d.ts +0 -0
- /package/dist/cjs/{passkey → server/src/passkey}/models.d.ts +0 -0
- /package/dist/cjs/{passkey → server/src/passkey}/sequelize.d.ts +0 -0
- /package/dist/cjs/{passkey/types.js → server/src/passkey/types.cjs} +0 -0
- /package/dist/cjs/{passkey → server/src/passkey}/types.d.ts +0 -0
- /package/dist/cjs/{sequelize-utils.d.ts → server/src/sequelize-utils.d.ts} +0 -0
- /package/dist/cjs/{token → server/src/token}/memory.d.ts +0 -0
- /package/dist/cjs/{token → server/src/token}/sequelize.d.ts +0 -0
- /package/dist/cjs/{token/types.js → server/src/token/types.cjs} +0 -0
- /package/dist/cjs/{token → server/src/token}/types.d.ts +0 -0
- /package/dist/cjs/{user/types.js → server/src/upload/types.cjs} +0 -0
- /package/dist/cjs/{user → server/src/user}/memory.d.ts +0 -0
- /package/dist/cjs/{user → server/src/user}/sequelize.d.ts +0 -0
- /package/dist/cjs/{user → server/src/user}/types.d.ts +0 -0
- /package/dist/esm/{auth-api → server/src/auth-api}/compat-auth-storage.d.ts +0 -0
- /package/dist/esm/{auth-api → server/src/auth-api}/mem-auth-store.d.ts +0 -0
- /package/dist/esm/{auth-api → server/src/auth-api}/mem-auth-store.js +0 -0
- /package/dist/esm/{auth-api → server/src/auth-api}/module.d.ts +0 -0
- /package/dist/esm/{auth-api → server/src/auth-api}/module.js +0 -0
- /package/dist/esm/{auth-api → server/src/auth-api}/sql-auth-store.d.ts +0 -0
- /package/dist/esm/{auth-api → server/src/auth-api}/sql-auth-store.js +0 -0
- /package/dist/esm/{auth-api → server/src/auth-api}/storage.d.ts +0 -0
- /package/dist/esm/{auth-api → server/src/auth-api}/storage.js +0 -0
- /package/dist/esm/{auth-api → server/src/auth-api}/types.d.ts +0 -0
- /package/dist/esm/{auth-api → server/src/auth-api}/types.js +0 -0
- /package/dist/esm/{auth-api → server/src/auth-api}/user-id.d.ts +0 -0
- /package/dist/esm/{auth-cookie-options.js → server/src/auth-cookie-options.js} +0 -0
- /package/dist/esm/{oauth → server/src/oauth}/models.d.ts +0 -0
- /package/dist/esm/{oauth → server/src/oauth}/models.js +0 -0
- /package/dist/esm/{oauth → server/src/oauth}/types.d.ts +0 -0
- /package/dist/esm/{oauth → server/src/oauth}/types.js +0 -0
- /package/dist/esm/{passkey → server/src/passkey}/config.d.ts +0 -0
- /package/dist/esm/{passkey → server/src/passkey}/config.js +0 -0
- /package/dist/esm/{passkey → server/src/passkey}/memory.d.ts +0 -0
- /package/dist/esm/{passkey → server/src/passkey}/memory.js +0 -0
- /package/dist/esm/{passkey → server/src/passkey}/models.d.ts +0 -0
- /package/dist/esm/{passkey → server/src/passkey}/models.js +0 -0
- /package/dist/esm/{passkey → server/src/passkey}/sequelize.d.ts +0 -0
- /package/dist/esm/{passkey → server/src/passkey}/sequelize.js +0 -0
- /package/dist/esm/{passkey → server/src/passkey}/types.d.ts +0 -0
- /package/dist/esm/{passkey → server/src/passkey}/types.js +0 -0
- /package/dist/esm/{sequelize-utils.d.ts → server/src/sequelize-utils.d.ts} +0 -0
- /package/dist/esm/{token → server/src/token}/memory.d.ts +0 -0
- /package/dist/esm/{token → server/src/token}/sequelize.d.ts +0 -0
- /package/dist/esm/{token → server/src/token}/types.d.ts +0 -0
- /package/dist/esm/{token → server/src/token}/types.js +0 -0
- /package/dist/esm/{user → server/src/upload}/types.js +0 -0
- /package/dist/esm/{user → server/src/user}/memory.d.ts +0 -0
- /package/dist/esm/{user → server/src/user}/sequelize.d.ts +0 -0
- /package/dist/esm/{user → server/src/user}/types.d.ts +0 -0
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Shared type definitions used by both api-server-base and api-client-base.
|
|
4
|
+
* This file contains only `type`/`interface` declarations — no runtime code.
|
|
5
|
+
* Both packages reference these types via `import type`. Note that TypeScript
|
|
6
|
+
* does NOT inline `import type` references in emitted `.d.ts` files — the
|
|
7
|
+
* path aliases persist. Source files therefore keep inline type definitions
|
|
8
|
+
* to avoid broken references for consumers of the published packages.
|
|
9
|
+
*/
|
|
10
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared type definitions used by both api-server-base and api-client-base.
|
|
3
|
+
* This file contains only `type`/`interface` declarations — no runtime code.
|
|
4
|
+
* Both packages reference these types via `import type`. Note that TypeScript
|
|
5
|
+
* does NOT inline `import type` references in emitted `.d.ts` files — the
|
|
6
|
+
* path aliases persist. Source files therefore keep inline type definitions
|
|
7
|
+
* to avoid broken references for consumers of the published packages.
|
|
8
|
+
*/
|
|
9
|
+
export type AuthIdentifier = string | number;
|
|
10
|
+
export type SafeUser = Record<string, unknown>;
|
|
11
|
+
export interface ApiResponseData<T = unknown> {
|
|
12
|
+
success: boolean;
|
|
13
|
+
code: number;
|
|
14
|
+
message: string;
|
|
15
|
+
data: T | null;
|
|
16
|
+
errors: Record<string, string>;
|
|
17
|
+
}
|
|
18
|
+
export interface AuthTokenData<User = SafeUser> {
|
|
19
|
+
accessToken?: string;
|
|
20
|
+
refreshToken?: string;
|
|
21
|
+
user?: User;
|
|
22
|
+
}
|
|
23
|
+
export interface WhoAmIResponseData<User = SafeUser, UserId extends AuthIdentifier = AuthIdentifier> {
|
|
24
|
+
user: User;
|
|
25
|
+
isImpersonating: boolean;
|
|
26
|
+
realUser?: User | null;
|
|
27
|
+
realUserId?: UserId | null;
|
|
28
|
+
}
|
|
29
|
+
export interface LogoutResponseData {
|
|
30
|
+
revoked: number;
|
|
31
|
+
}
|
|
32
|
+
export type TokenStatus = 'active' | 'expired' | 'revoked';
|
|
33
|
+
export interface Token {
|
|
34
|
+
accessToken: string;
|
|
35
|
+
refreshToken: string;
|
|
36
|
+
userId: string;
|
|
37
|
+
expires?: Date;
|
|
38
|
+
issuedAt?: Date;
|
|
39
|
+
lastSeenAt?: Date;
|
|
40
|
+
status?: TokenStatus;
|
|
41
|
+
ruid?: string;
|
|
42
|
+
clientId?: string;
|
|
43
|
+
/**
|
|
44
|
+
* Optional session partition key. Token stores may use `domain` and `fingerprint`
|
|
45
|
+
* to replace previous sessions that match the same bucket.
|
|
46
|
+
*/
|
|
47
|
+
domain?: string;
|
|
48
|
+
/**
|
|
49
|
+
* Optional device/session fingerprint used together with `domain` for session bucketing.
|
|
50
|
+
*/
|
|
51
|
+
fingerprint?: string;
|
|
52
|
+
label?: string;
|
|
53
|
+
browser?: string;
|
|
54
|
+
device?: string;
|
|
55
|
+
ip?: string;
|
|
56
|
+
os?: string;
|
|
57
|
+
scope?: string[];
|
|
58
|
+
loginType?: string;
|
|
59
|
+
refreshTtlSeconds?: number;
|
|
60
|
+
sessionCookie?: boolean;
|
|
61
|
+
}
|
|
62
|
+
export interface TokenPair {
|
|
63
|
+
accessToken: string;
|
|
64
|
+
refreshToken: string;
|
|
65
|
+
}
|
|
66
|
+
export interface OAuthClient {
|
|
67
|
+
clientId: string;
|
|
68
|
+
clientSecret?: string;
|
|
69
|
+
hasSecret?: boolean;
|
|
70
|
+
firstParty?: boolean;
|
|
71
|
+
metadata?: Record<string, unknown>;
|
|
72
|
+
name?: string;
|
|
73
|
+
redirectUris: string[];
|
|
74
|
+
scope?: string[];
|
|
75
|
+
}
|
|
76
|
+
export interface AuthCodeData {
|
|
77
|
+
code: string;
|
|
78
|
+
clientId: string;
|
|
79
|
+
codeChallenge?: string;
|
|
80
|
+
codeChallengeMethod?: 'plain' | 'S256';
|
|
81
|
+
expiresAt: Date;
|
|
82
|
+
metadata?: Record<string, unknown>;
|
|
83
|
+
redirectUri?: string;
|
|
84
|
+
scope?: string[];
|
|
85
|
+
userId: AuthIdentifier;
|
|
86
|
+
}
|
|
87
|
+
export type AuthCode = AuthCodeData;
|
|
88
|
+
export type AuthCodeRequest = Omit<AuthCodeData, 'code' | 'expiresAt'> & {
|
|
89
|
+
code?: string;
|
|
90
|
+
expiresInSeconds?: number;
|
|
91
|
+
};
|
|
92
|
+
export interface OAuthStartParams {
|
|
93
|
+
provider: string;
|
|
94
|
+
redirectUri?: string;
|
|
95
|
+
scope?: string | string[];
|
|
96
|
+
state?: string;
|
|
97
|
+
extras?: Record<string, unknown>;
|
|
98
|
+
}
|
|
99
|
+
export interface OAuthStartResult extends Record<string, unknown> {
|
|
100
|
+
url: string;
|
|
101
|
+
state?: string;
|
|
102
|
+
codeVerifier?: string;
|
|
103
|
+
}
|
|
104
|
+
export interface OAuthCallbackParams {
|
|
105
|
+
provider: string;
|
|
106
|
+
query: Record<string, string | string[]>;
|
|
107
|
+
body: Record<string, unknown>;
|
|
108
|
+
}
|
|
109
|
+
export interface OAuthCallbackResult<PublicUser> extends Record<string, unknown> {
|
|
110
|
+
user: PublicUser;
|
|
111
|
+
tokens?: {
|
|
112
|
+
accessToken: string;
|
|
113
|
+
refreshToken: string;
|
|
114
|
+
};
|
|
115
|
+
}
|
|
116
|
+
export type TusMetadata = Record<string, string>;
|
|
117
|
+
export interface TusUploadRecord {
|
|
118
|
+
id: string;
|
|
119
|
+
length: number;
|
|
120
|
+
offset: number;
|
|
121
|
+
metadata: TusMetadata;
|
|
122
|
+
userId?: string;
|
|
123
|
+
createdAt: Date;
|
|
124
|
+
updatedAt: Date;
|
|
125
|
+
completedAt?: Date;
|
|
126
|
+
}
|
|
127
|
+
export interface TusCreateUploadInput {
|
|
128
|
+
id?: string;
|
|
129
|
+
length: number;
|
|
130
|
+
metadata: TusMetadata;
|
|
131
|
+
userId?: string;
|
|
132
|
+
}
|
|
133
|
+
export interface TusAppendInput {
|
|
134
|
+
uploadId: string;
|
|
135
|
+
offset: number;
|
|
136
|
+
chunk: Buffer;
|
|
137
|
+
}
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.ApiModule = void 0;
|
|
4
|
+
/** Base class for feature modules mounted into {@link ApiServer}. */
|
|
4
5
|
class ApiModule {
|
|
6
|
+
/** The server instance this module is mounted on. */
|
|
5
7
|
get server() {
|
|
6
8
|
if (this._server === undefined) {
|
|
7
9
|
throw new Error('ApiModule.server is not set. Mount the module with ApiServer.api(...) before using it.');
|
|
@@ -15,12 +17,18 @@ class ApiModule {
|
|
|
15
17
|
this.mountpath = '';
|
|
16
18
|
this.namespace = opts.namespace ?? this.constructor.defaultNamespace ?? '';
|
|
17
19
|
}
|
|
20
|
+
/** Optional pre-mount configuration validation hook. */
|
|
18
21
|
checkConfig() {
|
|
19
22
|
return true;
|
|
20
23
|
}
|
|
24
|
+
/** Return all routes exposed by this module. */
|
|
21
25
|
defineRoutes() {
|
|
22
26
|
return [];
|
|
23
27
|
}
|
|
28
|
+
/** Optional mount-time hook for modules that need direct server integration. */
|
|
29
|
+
onMount() {
|
|
30
|
+
return;
|
|
31
|
+
}
|
|
24
32
|
}
|
|
25
33
|
exports.ApiModule = ApiModule;
|
|
26
34
|
ApiModule.defaultNamespace = '';
|
|
@@ -4,7 +4,10 @@ export type ApiHandler<Data = unknown> = (apiReq: ApiRequest) => Promise<ApiHand
|
|
|
4
4
|
export type ApiAuthType = 'none' | 'maybe' | 'yes' | 'strict' | 'apikey';
|
|
5
5
|
export type ApiAuthClass = 'any' | 'admin';
|
|
6
6
|
export interface ApiKey {
|
|
7
|
+
/** Real user identity — who the key belongs to. */
|
|
7
8
|
uid: unknown;
|
|
9
|
+
/** Effective user identity — who the key acts as. When set, the request is treated as impersonation (isImpersonating() === true). */
|
|
10
|
+
euid?: unknown;
|
|
8
11
|
}
|
|
9
12
|
export type ApiRoute = {
|
|
10
13
|
method: 'get' | 'post' | 'put' | 'patch' | 'delete';
|
|
@@ -14,17 +17,29 @@ export type ApiRoute = {
|
|
|
14
17
|
type: ApiAuthType;
|
|
15
18
|
req: ApiAuthClass;
|
|
16
19
|
};
|
|
20
|
+
schema?: {
|
|
21
|
+
body?: Record<string, unknown>;
|
|
22
|
+
querystring?: Record<string, unknown>;
|
|
23
|
+
params?: Record<string, unknown>;
|
|
24
|
+
};
|
|
17
25
|
};
|
|
26
|
+
/** Base class for feature modules mounted into {@link ApiServer}. */
|
|
18
27
|
export declare class ApiModule<T = unknown> {
|
|
19
28
|
private _server?;
|
|
29
|
+
/** The server instance this module is mounted on. */
|
|
20
30
|
get server(): T;
|
|
21
31
|
set server(value: T);
|
|
32
|
+
/** Route namespace under `apiBasePath`. */
|
|
22
33
|
namespace: string;
|
|
23
34
|
mountpath: string;
|
|
24
35
|
static defaultNamespace: string;
|
|
25
36
|
constructor(opts?: {
|
|
26
37
|
namespace?: string;
|
|
27
38
|
});
|
|
39
|
+
/** Optional pre-mount configuration validation hook. */
|
|
28
40
|
checkConfig(): boolean;
|
|
41
|
+
/** Return all routes exposed by this module. */
|
|
29
42
|
defineRoutes(): ApiRoute[];
|
|
43
|
+
/** Optional mount-time hook for modules that need direct server integration. */
|
|
44
|
+
onMount(): void;
|
|
30
45
|
}
|