@oneunit/auth 2.0.0

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.
Files changed (75) hide show
  1. package/ARCHITECTURE.md +465 -0
  2. package/CHANGELOG.md +214 -0
  3. package/LICENSE +21 -0
  4. package/README.md +647 -0
  5. package/dist/adapters.d.ts +51 -0
  6. package/dist/adapters.d.ts.map +1 -0
  7. package/dist/adapters.js +301 -0
  8. package/dist/adapters.js.map +1 -0
  9. package/dist/auth.d.ts +59 -0
  10. package/dist/auth.d.ts.map +1 -0
  11. package/dist/auth.js +560 -0
  12. package/dist/auth.js.map +1 -0
  13. package/dist/errors.d.ts +39 -0
  14. package/dist/errors.d.ts.map +1 -0
  15. package/dist/errors.js +65 -0
  16. package/dist/errors.js.map +1 -0
  17. package/dist/index.d.ts +11 -0
  18. package/dist/index.d.ts.map +1 -0
  19. package/dist/index.js +10 -0
  20. package/dist/index.js.map +1 -0
  21. package/dist/jwt.d.ts +11 -0
  22. package/dist/jwt.d.ts.map +1 -0
  23. package/dist/jwt.js +125 -0
  24. package/dist/jwt.js.map +1 -0
  25. package/dist/oauth.d.ts +31 -0
  26. package/dist/oauth.d.ts.map +1 -0
  27. package/dist/oauth.js +178 -0
  28. package/dist/oauth.js.map +1 -0
  29. package/dist/password.d.ts +5 -0
  30. package/dist/password.d.ts.map +1 -0
  31. package/dist/password.js +90 -0
  32. package/dist/password.js.map +1 -0
  33. package/dist/providers.d.ts +37 -0
  34. package/dist/providers.d.ts.map +1 -0
  35. package/dist/providers.js +471 -0
  36. package/dist/providers.js.map +1 -0
  37. package/dist/rbac.d.ts +40 -0
  38. package/dist/rbac.d.ts.map +1 -0
  39. package/dist/rbac.js +240 -0
  40. package/dist/rbac.js.map +1 -0
  41. package/dist/roles.d.ts +2 -0
  42. package/dist/roles.d.ts.map +1 -0
  43. package/dist/roles.js +2 -0
  44. package/dist/roles.js.map +1 -0
  45. package/dist/token.d.ts +2 -0
  46. package/dist/token.d.ts.map +1 -0
  47. package/dist/token.js +2 -0
  48. package/dist/token.js.map +1 -0
  49. package/dist/types.d.ts +383 -0
  50. package/dist/types.d.ts.map +1 -0
  51. package/dist/types.js +2 -0
  52. package/dist/types.js.map +1 -0
  53. package/dist/utils.d.ts +35 -0
  54. package/dist/utils.d.ts.map +1 -0
  55. package/dist/utils.js +192 -0
  56. package/dist/utils.js.map +1 -0
  57. package/examples/express.ts +111 -0
  58. package/examples/fastify.ts +59 -0
  59. package/examples/oauth-social.ts +83 -0
  60. package/examples/standalone.ts +67 -0
  61. package/examples/uwebsockets.ts +143 -0
  62. package/package.json +86 -0
  63. package/src/adapters.ts +333 -0
  64. package/src/auth.ts +684 -0
  65. package/src/errors.ts +76 -0
  66. package/src/index.ts +124 -0
  67. package/src/jwt.ts +159 -0
  68. package/src/oauth.ts +226 -0
  69. package/src/password.ts +111 -0
  70. package/src/providers.ts +551 -0
  71. package/src/rbac.ts +285 -0
  72. package/src/roles.ts +1 -0
  73. package/src/token.ts +1 -0
  74. package/src/types.ts +432 -0
  75. package/src/utils.ts +231 -0
@@ -0,0 +1,51 @@
1
+ import type { Auth } from "./auth.js";
2
+ import type { ExpressNext, ExpressRequestLike, ExpressResponseLike, ExtractTokenOptions, FastifyLike, KoaContextLike, UwsHandler, UwsHttpRequest, UwsHttpResponse, UwsRequestSnapshot } from "./types.js";
3
+ export declare function expressAdapter(auth: Auth): {
4
+ initialize(): (req: ExpressRequestLike, _res: ExpressResponseLike, next?: ExpressNext) => void;
5
+ authenticate(options?: ExtractTokenOptions): (req: ExpressRequestLike, res: ExpressResponseLike, next?: ExpressNext) => Promise<void>;
6
+ requirePermission(...permissions: string[]): (req: ExpressRequestLike, res: ExpressResponseLike, next?: ExpressNext) => void;
7
+ requireRole(...roles: string[]): (req: ExpressRequestLike, res: ExpressResponseLike, next?: ExpressNext) => void;
8
+ };
9
+ export declare function fastifyAdapter(auth: Auth): (fastify: FastifyLike, options?: ExtractTokenOptions) => Promise<void>;
10
+ export declare function koaAdapter(auth: Auth): {
11
+ authenticate(options?: ExtractTokenOptions): (ctx: KoaContextLike, next: () => Promise<void>) => Promise<void>;
12
+ requirePermission(...permissions: string[]): (ctx: KoaContextLike, next: () => Promise<void>) => Promise<void>;
13
+ };
14
+ declare function jsonResponse(res: UwsHttpResponse, status: number, body: unknown): void;
15
+ export declare function snapshotUwsRequest(res: UwsHttpResponse, req: UwsHttpRequest, extra?: Partial<UwsRequestSnapshot>): UwsRequestSnapshot;
16
+ export declare function uwsAdapter(auth: Auth): {
17
+ snapshot: typeof snapshotUwsRequest;
18
+ authenticate(options?: ExtractTokenOptions): (handler: UwsHandler) => UwsHandler;
19
+ requirePermission(...permissions: string[]): (handler: UwsHandler) => UwsHandler;
20
+ requireRole(...roles: string[]): (handler: UwsHandler) => UwsHandler;
21
+ json: typeof jsonResponse;
22
+ };
23
+ export declare function createAdapters(auth: Auth): {
24
+ express: {
25
+ initialize(): (req: ExpressRequestLike, _res: ExpressResponseLike, next?: ExpressNext) => void;
26
+ authenticate(options?: ExtractTokenOptions): (req: ExpressRequestLike, res: ExpressResponseLike, next?: ExpressNext) => Promise<void>;
27
+ requirePermission(...permissions: string[]): (req: ExpressRequestLike, res: ExpressResponseLike, next?: ExpressNext) => void;
28
+ requireRole(...roles: string[]): (req: ExpressRequestLike, res: ExpressResponseLike, next?: ExpressNext) => void;
29
+ };
30
+ fastify: (fastify: FastifyLike, options?: ExtractTokenOptions) => Promise<void>;
31
+ koa: {
32
+ authenticate(options?: ExtractTokenOptions): (ctx: KoaContextLike, next: () => Promise<void>) => Promise<void>;
33
+ requirePermission(...permissions: string[]): (ctx: KoaContextLike, next: () => Promise<void>) => Promise<void>;
34
+ };
35
+ uws: {
36
+ snapshot: typeof snapshotUwsRequest;
37
+ authenticate(options?: ExtractTokenOptions): (handler: UwsHandler) => UwsHandler;
38
+ requirePermission(...permissions: string[]): (handler: UwsHandler) => UwsHandler;
39
+ requireRole(...roles: string[]): (handler: UwsHandler) => UwsHandler;
40
+ json: typeof jsonResponse;
41
+ };
42
+ uWebSockets: {
43
+ snapshot: typeof snapshotUwsRequest;
44
+ authenticate(options?: ExtractTokenOptions): (handler: UwsHandler) => UwsHandler;
45
+ requirePermission(...permissions: string[]): (handler: UwsHandler) => UwsHandler;
46
+ requireRole(...roles: string[]): (handler: UwsHandler) => UwsHandler;
47
+ json: typeof jsonResponse;
48
+ };
49
+ };
50
+ export {};
51
+ //# sourceMappingURL=adapters.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"adapters.d.ts","sourceRoot":"","sources":["../src/adapters.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,KAAK,EACV,WAAW,EACX,kBAAkB,EAClB,mBAAmB,EACnB,mBAAmB,EACnB,WAAW,EAGX,cAAc,EACd,UAAU,EACV,cAAc,EACd,eAAe,EACf,kBAAkB,EACnB,MAAM,YAAY,CAAC;AAmCpB,wBAAgB,cAAc,CAAC,IAAI,EAAE,IAAI;mBAG3B,KAAK,kBAAkB,EAAE,MAAM,mBAAmB,EAAE,OAAO,WAAW;2BAM1D,mBAAmB,IACzB,KAAK,kBAAkB,EAAE,KAAK,mBAAmB,EAAE,OAAO,WAAW;sCAoBnD,MAAM,EAAE,IAChC,KAAK,kBAAkB,EAAE,KAAK,mBAAmB,EAAE,OAAO,WAAW;0BAazD,MAAM,EAAE,IACpB,KAAK,kBAAkB,EAAE,KAAK,mBAAmB,EAAE,OAAO,WAAW;EAelF;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,IAAI,IACV,SAAS,WAAW,EAAE,UAAS,mBAAwB,mBAyCrF;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,IAAI;2BAEX,mBAAmB,IACzB,KAAK,cAAc,EAAE,MAAM,MAAM,OAAO,CAAC,IAAI,CAAC;sCAqB5B,MAAM,EAAE,IAC1B,KAAK,cAAc,EAAE,MAAM,MAAM,OAAO,CAAC,IAAI,CAAC;EAejE;AAED,iBAAS,YAAY,CAAC,GAAG,EAAE,eAAe,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,IAAI,CAe/E;AAYD,wBAAgB,kBAAkB,CAChC,GAAG,EAAE,eAAe,EACpB,GAAG,EAAE,cAAc,EACnB,KAAK,GAAE,OAAO,CAAC,kBAAkB,CAAM,GACtC,kBAAkB,CAqBpB;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,IAAI;;2BAIX,mBAAmB,IAC/B,SAAS,UAAU,KAAG,UAAU;sCA+BR,MAAM,EAAE,IAEhC,SAAS,UAAU,KAAG,UAAU;0BAcpB,MAAM,EAAE,IAEpB,SAAS,UAAU,KAAG,UAAU;;EAgB7C;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,IAAI;;uBA/Q3B,KAAK,kBAAkB,EAAE,MAAM,mBAAmB,EAAE,OAAO,WAAW;+BAM1D,mBAAmB,IACzB,KAAK,kBAAkB,EAAE,KAAK,mBAAmB,EAAE,OAAO,WAAW;0CAoBnD,MAAM,EAAE,IAChC,KAAK,kBAAkB,EAAE,KAAK,mBAAmB,EAAE,OAAO,WAAW;8BAazD,MAAM,EAAE,IACpB,KAAK,kBAAkB,EAAE,KAAK,mBAAmB,EAAE,OAAO,WAAW;;uBAkB3C,WAAW,YAAW,mBAAmB;;+BA6CvD,mBAAmB,IACzB,KAAK,cAAc,EAAE,MAAM,MAAM,OAAO,CAAC,IAAI,CAAC;0CAqB5B,MAAM,EAAE,IAC1B,KAAK,cAAc,EAAE,MAAM,MAAM,OAAO,CAAC,IAAI,CAAC;;;;+BA2ExC,mBAAmB,IAC/B,SAAS,UAAU,KAAG,UAAU;0CA+BR,MAAM,EAAE,IAEhC,SAAS,UAAU,KAAG,UAAU;8BAcpB,MAAM,EAAE,IAEpB,SAAS,UAAU,KAAG,UAAU;;;;;+BAlDpB,mBAAmB,IAC/B,SAAS,UAAU,KAAG,UAAU;0CA+BR,MAAM,EAAE,IAEhC,SAAS,UAAU,KAAG,UAAU;8BAcpB,MAAM,EAAE,IAEpB,SAAS,UAAU,KAAG,UAAU;;;EA0B7C"}
@@ -0,0 +1,301 @@
1
+ import { AuthError, ForbiddenError, UnauthorizedError } from "./errors.js";
2
+ function sendError(reply, error) {
3
+ const err = error;
4
+ const status = err.status ?? 401;
5
+ const body = {
6
+ error: err.code ?? "AUTH_ERROR",
7
+ message: err.message,
8
+ };
9
+ if (typeof reply.status === "function" && typeof reply.send === "function") {
10
+ const next = reply.status(status);
11
+ if (next && typeof next.send === "function") {
12
+ next.send(body);
13
+ }
14
+ else {
15
+ reply.send(body);
16
+ }
17
+ return;
18
+ }
19
+ if (typeof reply.code === "function") {
20
+ const coded = reply.code(status);
21
+ const send = coded.send ?? reply.send;
22
+ if (typeof send === "function") {
23
+ send.call(coded, body);
24
+ return;
25
+ }
26
+ }
27
+ if (typeof reply.status === "function") {
28
+ reply.status(status);
29
+ reply.body = body;
30
+ return;
31
+ }
32
+ throw error;
33
+ }
34
+ export function expressAdapter(auth) {
35
+ return {
36
+ initialize() {
37
+ return (req, _res, next) => {
38
+ req.auth = auth;
39
+ next?.();
40
+ };
41
+ },
42
+ authenticate(options = {}) {
43
+ return async (req, res, next) => {
44
+ try {
45
+ req.user = await auth.verifyRequest(req, options);
46
+ req.token = auth.extractToken(req, options);
47
+ next?.();
48
+ }
49
+ catch (error) {
50
+ if (options.optional && error instanceof UnauthorizedError) {
51
+ req.user = null;
52
+ next?.();
53
+ return;
54
+ }
55
+ if (options.passthrough) {
56
+ next?.(error);
57
+ return;
58
+ }
59
+ sendError(res, error);
60
+ }
61
+ };
62
+ },
63
+ requirePermission(...permissions) {
64
+ return (req, res, next) => {
65
+ try {
66
+ if (!req.user) {
67
+ throw new UnauthorizedError("Authentication required");
68
+ }
69
+ auth.authorize(req.user, permissions);
70
+ next?.();
71
+ }
72
+ catch (error) {
73
+ sendError(res, error);
74
+ }
75
+ };
76
+ },
77
+ requireRole(...roles) {
78
+ return (req, res, next) => {
79
+ try {
80
+ if (!req.user) {
81
+ throw new UnauthorizedError("Authentication required");
82
+ }
83
+ if (!auth.hasRole(req.user, roles)) {
84
+ throw new ForbiddenError("Insufficient role");
85
+ }
86
+ next?.();
87
+ }
88
+ catch (error) {
89
+ sendError(res, error);
90
+ }
91
+ };
92
+ },
93
+ };
94
+ }
95
+ export function fastifyAdapter(auth) {
96
+ return async function plugin(fastify, options = {}) {
97
+ fastify.decorate("auth", auth);
98
+ fastify.decorateRequest("user", null);
99
+ fastify.decorate("authenticate", (opts = {}) => async (request, reply) => {
100
+ // Merge once so the error path sees the same options as the verify path;
101
+ // reading `opts.optional` alone ignored plugin-level configuration.
102
+ const settings = { ...options, ...opts };
103
+ try {
104
+ request.user = await auth.verifyRequest(request, settings);
105
+ }
106
+ catch (error) {
107
+ if (settings.optional && error instanceof UnauthorizedError) {
108
+ request.user = null;
109
+ return;
110
+ }
111
+ const err = error;
112
+ return reply.code(err.status ?? 401).send({
113
+ error: err.code ?? "AUTH_ERROR",
114
+ message: err.message,
115
+ });
116
+ }
117
+ });
118
+ fastify.decorate("requirePermission", (...permissions) => async (request, reply) => {
119
+ if (!request.user) {
120
+ return reply.code(401).send({ error: "UNAUTHORIZED", message: "Authentication required" });
121
+ }
122
+ if (!auth.can(request.user, permissions)) {
123
+ return reply.code(403).send({ error: "FORBIDDEN", message: "Missing permission" });
124
+ }
125
+ });
126
+ fastify.decorate("requireRole", (...roles) => async (request, reply) => {
127
+ if (!request.user) {
128
+ return reply.code(401).send({ error: "UNAUTHORIZED", message: "Authentication required" });
129
+ }
130
+ if (!auth.hasRole(request.user, roles)) {
131
+ return reply.code(403).send({ error: "FORBIDDEN", message: "Insufficient role" });
132
+ }
133
+ });
134
+ };
135
+ }
136
+ export function koaAdapter(auth) {
137
+ return {
138
+ authenticate(options = {}) {
139
+ return async (ctx, next) => {
140
+ try {
141
+ ctx.state.user = await auth.verifyRequest(ctx.request, options);
142
+ ctx.state.token = auth.extractToken(ctx.request, options);
143
+ }
144
+ catch (error) {
145
+ if (options.optional && error instanceof UnauthorizedError) {
146
+ ctx.state.user = null;
147
+ await next();
148
+ return;
149
+ }
150
+ const err = error;
151
+ ctx.status = err.status ?? 401;
152
+ ctx.body = { error: err.code ?? "AUTH_ERROR", message: err.message };
153
+ return;
154
+ }
155
+ // `next()` stays outside the try so downstream handler errors propagate
156
+ // to Koa's own error handling instead of being reported as auth failures.
157
+ await next();
158
+ };
159
+ },
160
+ requirePermission(...permissions) {
161
+ return async (ctx, next) => {
162
+ if (!ctx.state.user) {
163
+ ctx.status = 401;
164
+ ctx.body = { error: "UNAUTHORIZED", message: "Authentication required" };
165
+ return;
166
+ }
167
+ if (!auth.can(ctx.state.user, permissions)) {
168
+ ctx.status = 403;
169
+ ctx.body = { error: "FORBIDDEN", message: "Missing permission" };
170
+ return;
171
+ }
172
+ await next();
173
+ };
174
+ },
175
+ };
176
+ }
177
+ function jsonResponse(res, status, body) {
178
+ if (typeof res.cork === "function") {
179
+ res.cork(() => {
180
+ res.writeStatus?.(String(status));
181
+ res.writeHeader?.("Content-Type", "application/json; charset=utf-8");
182
+ res.end?.(JSON.stringify(body));
183
+ });
184
+ return;
185
+ }
186
+ if (typeof res.writeStatus === "function") {
187
+ res.writeStatus(String(status));
188
+ res.writeHeader?.("Content-Type", "application/json; charset=utf-8");
189
+ res.end?.(JSON.stringify(body));
190
+ }
191
+ }
192
+ function attachAbort(res) {
193
+ let aborted = false;
194
+ if (typeof res.onAborted === "function") {
195
+ res.onAborted(() => {
196
+ aborted = true;
197
+ });
198
+ }
199
+ return () => aborted;
200
+ }
201
+ export function snapshotUwsRequest(res, req, extra = {}) {
202
+ const headers = {};
203
+ if (typeof req.forEach === "function") {
204
+ req.forEach((key, value) => {
205
+ headers[key] = value;
206
+ });
207
+ }
208
+ else {
209
+ const authorization = req.getHeader?.("authorization");
210
+ const cookie = req.getHeader?.("cookie");
211
+ if (authorization)
212
+ headers.authorization = authorization;
213
+ if (cookie)
214
+ headers.cookie = cookie;
215
+ }
216
+ return {
217
+ method: req.getMethod?.() ?? extra.method,
218
+ url: req.getUrl?.() ?? extra.url,
219
+ query: req.getQuery?.() ?? extra.query,
220
+ headers,
221
+ cookies: extra.cookies,
222
+ res,
223
+ };
224
+ }
225
+ export function uwsAdapter(auth) {
226
+ return {
227
+ snapshot: snapshotUwsRequest,
228
+ authenticate(options = {}) {
229
+ return (handler) => async (res, req) => {
230
+ const aborted = attachAbort(res);
231
+ const request = snapshotUwsRequest(res, req);
232
+ try {
233
+ request.user = await auth.verifyRequest(request, options);
234
+ request.token = auth.extractToken(request, options);
235
+ if (aborted()) {
236
+ return;
237
+ }
238
+ return await handler(res, req, request);
239
+ }
240
+ catch (error) {
241
+ if (options.optional && error instanceof UnauthorizedError) {
242
+ request.user = null;
243
+ if (aborted()) {
244
+ return;
245
+ }
246
+ return await handler(res, req, request);
247
+ }
248
+ if (aborted()) {
249
+ return;
250
+ }
251
+ const err = error;
252
+ jsonResponse(res, err.status ?? 401, {
253
+ error: err.code ?? "AUTH_ERROR",
254
+ message: err.message,
255
+ });
256
+ }
257
+ };
258
+ },
259
+ requirePermission(...permissions) {
260
+ const requested = permissions.flat();
261
+ return (handler) => async (res, req, request) => {
262
+ const snapshot = request ?? snapshotUwsRequest(res, req);
263
+ if (!snapshot.user) {
264
+ jsonResponse(res, 401, { error: "UNAUTHORIZED", message: "Authentication required" });
265
+ return;
266
+ }
267
+ if (!auth.can(snapshot.user, requested)) {
268
+ jsonResponse(res, 403, { error: "FORBIDDEN", message: "Missing permission" });
269
+ return;
270
+ }
271
+ return await handler(res, req, snapshot);
272
+ };
273
+ },
274
+ requireRole(...roles) {
275
+ const requested = roles.flat();
276
+ return (handler) => async (res, req, request) => {
277
+ const snapshot = request ?? snapshotUwsRequest(res, req);
278
+ if (!snapshot.user) {
279
+ jsonResponse(res, 401, { error: "UNAUTHORIZED", message: "Authentication required" });
280
+ return;
281
+ }
282
+ if (!auth.hasRole(snapshot.user, requested)) {
283
+ jsonResponse(res, 403, { error: "FORBIDDEN", message: "Insufficient role" });
284
+ return;
285
+ }
286
+ return await handler(res, req, snapshot);
287
+ };
288
+ },
289
+ json: jsonResponse,
290
+ };
291
+ }
292
+ export function createAdapters(auth) {
293
+ return {
294
+ express: expressAdapter(auth),
295
+ fastify: fastifyAdapter(auth),
296
+ koa: koaAdapter(auth),
297
+ uws: uwsAdapter(auth),
298
+ uWebSockets: uwsAdapter(auth),
299
+ };
300
+ }
301
+ //# sourceMappingURL=adapters.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"adapters.js","sourceRoot":"","sources":["../src/adapters.ts"],"names":[],"mappings":"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"}
package/dist/auth.d.ts ADDED
@@ -0,0 +1,59 @@
1
+ import { RBAC } from "./rbac.js";
2
+ import { OAuth } from "./oauth.js";
3
+ import type { AuthHookHandler, AuthHookName, AuthOptions, AuthSubject, ExtractTokenOptions, JwtPayload, JwtSignOptions, JwtVerifyOptions, LoginOptions, LoginResult, OAuthAuthorizeOptions, PasswordOptions, RefreshStore, Secret, UserRecord, UserStore } from "./types.js";
4
+ type ClaimExtractor = (user: UserRecord) => unknown;
5
+ export declare class Auth {
6
+ secret: Secret;
7
+ refreshSecret: Secret;
8
+ issuer?: string;
9
+ audience?: string | string[];
10
+ algorithm: string;
11
+ accessTokenTtl: string | number;
12
+ refreshTokenTtl: string | number;
13
+ clockTolerance: number;
14
+ trustUserPermissions: boolean;
15
+ userStore: UserStore | null;
16
+ refreshStore: RefreshStore;
17
+ onLogin: AuthOptions["onLogin"];
18
+ onLink: AuthOptions["onLink"];
19
+ rbac: RBAC;
20
+ oauth: OAuth;
21
+ claimExtractors: Map<string, ClaimExtractor>;
22
+ hooks: Record<AuthHookName, AuthHookHandler[]>;
23
+ constructor(options?: Partial<AuthOptions>);
24
+ registerExtractor(name: string, extractor: ClaimExtractor): this;
25
+ hook(event: AuthHookName, handler: AuthHookHandler): this;
26
+ login(user: UserRecord, options?: LoginOptions): Promise<LoginResult>;
27
+ loginWithPassword(identifier: string, password: string, options?: LoginOptions): Promise<LoginResult>;
28
+ register(input?: Record<string, unknown>, options?: LoginOptions): Promise<LoginResult>;
29
+ verify(token: string, options?: JwtVerifyOptions): Promise<JwtPayload>;
30
+ verifyRequest(request: unknown, options?: ExtractTokenOptions): Promise<JwtPayload>;
31
+ extractToken(request: unknown, options?: ExtractTokenOptions): string | null;
32
+ refresh(refreshToken: string, options?: LoginOptions): Promise<LoginResult>;
33
+ /**
34
+ * Rotation only reaches this when `consume` is absent, so `revoke` is the only
35
+ * thing that can do the job.
36
+ */
37
+ private requireRevokeSupport;
38
+ revoke(refreshToken?: string | null): Promise<boolean>;
39
+ logout(refreshToken?: string | null): Promise<boolean>;
40
+ getAuthorizationUrl(provider: string, options?: OAuthAuthorizeOptions): Promise<{
41
+ url: string;
42
+ state: string;
43
+ provider: string;
44
+ codeVerifier?: string;
45
+ }>;
46
+ loginWithOAuth(provider: string, params: string | Record<string, string>, options?: LoginOptions): Promise<LoginResult>;
47
+ can(subject: AuthSubject | string | null | undefined, permission: string | string[]): boolean;
48
+ authorize(subject: AuthSubject | string | null | undefined, permission: string | string[]): true;
49
+ hasRole(subject: AuthSubject | string | null | undefined, roles: string | string[]): boolean;
50
+ hashPassword(password: string, options?: PasswordOptions): Promise<string>;
51
+ verifyPassword(password: string, hash: string): Promise<boolean>;
52
+ sign(payload: object, options?: JwtSignOptions): string;
53
+ collectClaims(user: UserRecord, extractorNames?: string[]): Promise<Record<string, unknown>>;
54
+ runHooks(event: AuthHookName, payload: unknown): Promise<void>;
55
+ }
56
+ export declare function createMemoryRefreshStore(): RefreshStore;
57
+ export declare function createAuth(options: AuthOptions): Auth;
58
+ export { Auth as auth };
59
+ //# sourceMappingURL=auth.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"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"}