@atproto/oauth-provider 0.2.17 → 0.3.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (91) hide show
  1. package/CHANGELOG.md +22 -0
  2. package/dist/client/client-manager.d.ts.map +1 -1
  3. package/dist/client/client-manager.js +6 -8
  4. package/dist/client/client-manager.js.map +1 -1
  5. package/dist/device/device-data.d.ts +7 -8
  6. package/dist/device/device-data.d.ts.map +1 -1
  7. package/dist/device/device-data.js +3 -2
  8. package/dist/device/device-data.js.map +1 -1
  9. package/dist/device/device-manager.d.ts +104 -19
  10. package/dist/device/device-manager.d.ts.map +1 -1
  11. package/dist/device/device-manager.js +43 -30
  12. package/dist/device/device-manager.js.map +1 -1
  13. package/dist/lib/http/accept.d.ts +2 -1
  14. package/dist/lib/http/accept.d.ts.map +1 -1
  15. package/dist/lib/http/accept.js.map +1 -1
  16. package/dist/lib/http/method.d.ts +1 -1
  17. package/dist/lib/http/method.d.ts.map +1 -1
  18. package/dist/lib/http/request.d.ts +10 -1
  19. package/dist/lib/http/request.d.ts.map +1 -1
  20. package/dist/lib/http/request.js +38 -0
  21. package/dist/lib/http/request.js.map +1 -1
  22. package/dist/lib/http/response.d.ts +3 -2
  23. package/dist/lib/http/response.d.ts.map +1 -1
  24. package/dist/lib/http/response.js.map +1 -1
  25. package/dist/lib/http/route.d.ts +2 -1
  26. package/dist/lib/http/route.d.ts.map +1 -1
  27. package/dist/lib/http/route.js.map +1 -1
  28. package/dist/lib/http/router.d.ts +2 -1
  29. package/dist/lib/http/router.d.ts.map +1 -1
  30. package/dist/lib/http/router.js.map +1 -1
  31. package/dist/lib/http/stream.d.ts +1 -1
  32. package/dist/lib/http/stream.d.ts.map +1 -1
  33. package/dist/lib/http/types.d.ts +0 -1
  34. package/dist/lib/http/types.d.ts.map +1 -1
  35. package/dist/lib/util/function.d.ts +8 -0
  36. package/dist/lib/util/function.d.ts.map +1 -1
  37. package/dist/lib/util/function.js +1 -1
  38. package/dist/lib/util/function.js.map +1 -1
  39. package/dist/lib/util/time.d.ts +7 -1
  40. package/dist/lib/util/time.d.ts.map +1 -1
  41. package/dist/lib/util/time.js +23 -12
  42. package/dist/lib/util/time.js.map +1 -1
  43. package/dist/oauth-hooks.d.ts +56 -4
  44. package/dist/oauth-hooks.d.ts.map +1 -1
  45. package/dist/oauth-hooks.js +8 -0
  46. package/dist/oauth-hooks.js.map +1 -1
  47. package/dist/oauth-provider.d.ts +10 -7
  48. package/dist/oauth-provider.d.ts.map +1 -1
  49. package/dist/oauth-provider.js +24 -23
  50. package/dist/oauth-provider.js.map +1 -1
  51. package/dist/output/output-manager.d.ts +1 -1
  52. package/dist/output/output-manager.d.ts.map +1 -1
  53. package/dist/output/send-authorize-redirect.d.ts +1 -1
  54. package/dist/output/send-authorize-redirect.d.ts.map +1 -1
  55. package/dist/output/send-web-page.d.ts +1 -1
  56. package/dist/output/send-web-page.d.ts.map +1 -1
  57. package/dist/request/request-manager.d.ts +2 -1
  58. package/dist/request/request-manager.d.ts.map +1 -1
  59. package/dist/request/request-manager.js +9 -1
  60. package/dist/request/request-manager.js.map +1 -1
  61. package/dist/token/token-manager.d.ts +3 -2
  62. package/dist/token/token-manager.d.ts.map +1 -1
  63. package/dist/token/token-manager.js +39 -24
  64. package/dist/token/token-manager.js.map +1 -1
  65. package/package.json +2 -4
  66. package/src/client/client-manager.ts +9 -11
  67. package/src/device/device-data.ts +3 -2
  68. package/src/device/device-manager.ts +93 -75
  69. package/src/lib/http/accept.ts +2 -6
  70. package/src/lib/http/method.ts +1 -1
  71. package/src/lib/http/request.ts +64 -1
  72. package/src/lib/http/response.ts +3 -2
  73. package/src/lib/http/route.ts +2 -1
  74. package/src/lib/http/router.ts +2 -1
  75. package/src/lib/http/stream.ts +1 -1
  76. package/src/lib/http/types.ts +0 -1
  77. package/src/lib/util/function.ts +19 -2
  78. package/src/lib/util/time.ts +35 -18
  79. package/src/oauth-hooks.ts +73 -13
  80. package/src/oauth-provider.ts +69 -28
  81. package/src/output/output-manager.ts +1 -1
  82. package/src/output/send-authorize-redirect.ts +1 -1
  83. package/src/output/send-web-page.ts +1 -1
  84. package/src/request/request-manager.ts +13 -2
  85. package/src/token/token-manager.ts +52 -23
  86. package/tsconfig.backend.tsbuildinfo +1 -1
  87. package/dist/device/device-details.d.ts +0 -16
  88. package/dist/device/device-details.d.ts.map +0 -1
  89. package/dist/device/device-details.js +0 -34
  90. package/dist/device/device-details.js.map +0 -1
  91. package/src/device/device-details.ts +0 -42
@@ -1 +1 @@
1
- {"version":3,"file":"token-manager.js","sourceRoot":"","sources":["../../src/token/token-manager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"token-manager.js","sourceRoot":"","sources":["../../src/token/token-manager.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@atproto/oauth-provider",
3
- "version": "0.2.17",
3
+ "version": "0.3.1",
4
4
  "license": "MIT",
5
5
  "description": "Generic OAuth2 and OpenID Connect provider for Node.js. Currently only supports features needed for Atproto.",
6
6
  "keywords": [
@@ -38,14 +38,13 @@
38
38
  "http-errors": "^2.0.0",
39
39
  "ioredis": "^5.3.2",
40
40
  "jose": "^5.2.0",
41
- "keygrip": "^1.1.0",
42
41
  "psl": "^1.9.0",
43
42
  "zod": "^3.23.8",
44
43
  "@atproto-labs/fetch": "0.2.1",
45
44
  "@atproto-labs/fetch-node": "0.1.7",
46
- "@atproto-labs/pipe": "0.1.0",
47
45
  "@atproto-labs/simple-store": "0.1.2",
48
46
  "@atproto-labs/simple-store-memory": "0.1.2",
47
+ "@atproto-labs/pipe": "0.1.0",
49
48
  "@atproto/common": "^0.4.8",
50
49
  "@atproto/jwk": "0.1.3",
51
50
  "@atproto/jwk-jose": "0.1.4",
@@ -58,7 +57,6 @@
58
57
  "@rollup/plugin-terser": "^0.4.4",
59
58
  "@rollup/plugin-typescript": "^11.1.6",
60
59
  "@types/cookie": "^0.6.0",
61
- "@types/keygrip": "^1.0.6",
62
60
  "@types/psl": "1.1.3",
63
61
  "@types/react": "^18.2.50",
64
62
  "@types/react-dom": "^18.2.18",
@@ -110,17 +110,15 @@ export class ClientManager {
110
110
  })
111
111
  : undefined
112
112
 
113
- const partialInfo = this.hooks.onClientInfo
114
- ? await callAsync(this.hooks.onClientInfo, clientId, {
115
- metadata,
116
- jwks,
117
- }).catch((err) => {
118
- throw InvalidClientMetadataError.from(
119
- err,
120
- `Rejected client information for "${clientId}"`,
121
- )
122
- })
123
- : undefined
113
+ const partialInfo = await callAsync(this.hooks.getClientInfo, clientId, {
114
+ metadata,
115
+ jwks,
116
+ }).catch((err) => {
117
+ throw InvalidClientMetadataError.from(
118
+ err,
119
+ `Rejected client information for "${clientId}"`,
120
+ )
121
+ })
124
122
 
125
123
  const isFirstParty = partialInfo?.isFirstParty ?? false
126
124
  const isTrusted = partialInfo?.isTrusted ?? isFirstParty
@@ -1,10 +1,11 @@
1
1
  import { z } from 'zod'
2
- import { deviceDetailsSchema } from './device-details.js'
3
2
  import { sessionIdSchema } from './session-id.js'
4
3
 
5
- export const deviceDataSchema = deviceDetailsSchema.extend({
4
+ export const deviceDataSchema = z.object({
6
5
  sessionId: sessionIdSchema,
7
6
  lastSeenAt: z.date(),
7
+ userAgent: z.string().nullable(),
8
+ ipAddress: z.string(),
8
9
  })
9
10
 
10
11
  export type DeviceData = z.infer<typeof deviceDataSchema>
@@ -1,84 +1,89 @@
1
- import { IncomingMessage, ServerResponse } from 'node:http'
1
+ import type { IncomingMessage, ServerResponse } from 'node:http'
2
2
  import { serialize as serializeCookie } from 'cookie'
3
- import type Keygrip from 'keygrip'
4
3
  import { z } from 'zod'
5
4
  import { SESSION_FIXATION_MAX_AGE } from '../constants.js'
6
5
  import { appendHeader, parseHttpCookies } from '../lib/http/index.js'
6
+ import { RequestMetadata, extractRequestMetadata } from '../lib/http/request.js'
7
7
  import { DeviceData } from './device-data.js'
8
- import { extractDeviceDetails } from './device-details.js'
9
8
  import { DeviceId, deviceIdSchema, generateDeviceId } from './device-id.js'
10
9
  import { DeviceStore } from './device-store.js'
11
10
  import { generateSessionId, sessionIdSchema } from './session-id.js'
12
11
 
13
- export const DEFAULT_OPTIONS = {
12
+ /**
13
+ * @see {@link https://www.npmjs.com/package/keygrip | Keygrip}
14
+ */
15
+ export const keygripSchema = z.object({
16
+ sign: z.function().args(z.any()).returns(z.string()),
17
+ verify: z.function().args(z.any(), z.string()).returns(z.boolean()),
18
+ index: z.function().args(z.any(), z.string()).returns(z.number()),
19
+ })
20
+
21
+ export const deviceManagerOptionsSchema = z.object({
14
22
  /**
15
23
  * Controls whether the IP address is read from the `X-Forwarded-For` header
16
24
  * (if `true`), or from the `req.socket.remoteAddress` property (if `false`).
17
25
  *
18
26
  * @default true // (nowadays, most requests are proxied)
19
27
  */
20
- trustProxy: true,
21
-
28
+ trustProxy: z.boolean().default(true),
22
29
  /**
23
30
  * Amount of time (in ms) after which session IDs will be rotated
24
31
  *
25
32
  * @default 300e3 // (5 minutes)
26
33
  */
27
- rotationRate: 5 * 60e3,
28
-
34
+ rotationRate: z.number().default(300e3),
29
35
  /**
30
36
  * Cookie options
31
37
  */
32
- cookie: {
33
- keys: undefined as undefined | Keygrip,
34
-
35
- /**
36
- * Name of the cookie used to identify the device
37
- *
38
- * @default 'session-id'
39
- */
40
- device: 'device-id',
41
-
42
- /**
43
- * Name of the cookie used to identify the session
44
- *
45
- * @default 'session-id'
46
- */
47
- session: 'session-id',
48
-
49
- /**
50
- * Url path for the cookie
51
- *
52
- * @default '/oauth/authorize'
53
- */
54
- path: '/oauth/authorize',
55
-
56
- /**
57
- * Amount of time (in ms) after which the session cookie will expire.
58
- * If set to `null`, the cookie will be a session cookie (deleted when the
59
- * browser is closed).
60
- *
61
- * @default 10 * 365.2 * 24 * 60 * 60e3 // 10 years (in ms)
62
- */
63
- age: <number | null>(10 * 365.2 * 24 * 60 * 60e3),
64
-
65
- /**
66
- * Controls whether the cookie is only sent over HTTPS (if `true`), or also
67
- * over HTTP (if `false`). This should **NOT** be set to `false` in
68
- * production.
69
- */
70
- secure: true,
71
-
72
- /**
73
- * Controls whether the cookie is sent along with cross-site requests.
74
- *
75
- * @default 'lax'
76
- */
77
- sameSite: 'lax' as 'lax' | 'strict',
78
- },
79
- }
38
+ cookie: z
39
+ .object({
40
+ keys: keygripSchema.optional(),
41
+ /**
42
+ * Name of the cookie used to identify the device
43
+ *
44
+ * @default 'session-id'
45
+ */
46
+ device: z.string().default('device-id'),
47
+ /**
48
+ * Name of the cookie used to identify the session
49
+ *
50
+ * @default 'session-id'
51
+ */
52
+ session: z.string().default('session-id'),
53
+ /**
54
+ * Url path for the cookie
55
+ *
56
+ * @default '/oauth/authorize'
57
+ */
58
+ path: z.string().default('/oauth/authorize'),
59
+ /**
60
+ * Amount of time (in ms) after which the session cookie will expire.
61
+ * If set to `null`, the cookie will be a session cookie (deleted when the
62
+ * browser is closed).
63
+ *
64
+ * @default 10 years
65
+ */
66
+ age: z
67
+ .number()
68
+ .nullable()
69
+ .default(10 * 365.2 * 24 * 60 * 60e3),
70
+ /**
71
+ * Controls whether the cookie is only sent over HTTPS (if `true`), or also
72
+ * over HTTP (if `false`). This should **NOT** be set to `false` in
73
+ * production.
74
+ */
75
+ secure: z.boolean().default(true),
76
+ /**
77
+ * Controls whether the cookie is sent along with cross-site requests.
78
+ *
79
+ * @default 'lax'
80
+ */
81
+ sameSite: z.enum(['lax', 'strict']).default('lax'),
82
+ })
83
+ .default({}),
84
+ })
80
85
 
81
- export type DeviceDeviceManagerOptions = typeof DEFAULT_OPTIONS
86
+ export type DeviceManagerOptions = z.input<typeof deviceManagerOptionsSchema>
82
87
 
83
88
  const cookieValueSchema = z.tuple([deviceIdSchema, sessionIdSchema])
84
89
  type CookieValue = z.infer<typeof cookieValueSchema>
@@ -89,16 +94,23 @@ type CookieValue = z.infer<typeof cookieValueSchema>
89
94
  * identify the session.
90
95
  */
91
96
  export class DeviceManager {
97
+ private readonly options: z.infer<typeof deviceManagerOptionsSchema>
98
+
92
99
  constructor(
93
100
  private readonly store: DeviceStore,
94
- private readonly options: DeviceDeviceManagerOptions = DEFAULT_OPTIONS,
95
- ) {}
101
+ options: DeviceManagerOptions = {},
102
+ ) {
103
+ this.options = deviceManagerOptionsSchema.parse(options)
104
+ }
96
105
 
97
106
  public async load(
98
107
  req: IncomingMessage,
99
108
  res: ServerResponse,
100
109
  forceRotate = false,
101
- ): Promise<{ deviceId: DeviceId }> {
110
+ ): Promise<{
111
+ deviceId: DeviceId
112
+ deviceMetadata: RequestMetadata
113
+ }> {
102
114
  const cookie = await this.getCookie(req)
103
115
  if (cookie) {
104
116
  return this.refresh(
@@ -115,8 +127,11 @@ export class DeviceManager {
115
127
  private async create(
116
128
  req: IncomingMessage,
117
129
  res: ServerResponse,
118
- ): Promise<{ deviceId: DeviceId }> {
119
- const { userAgent, ipAddress } = this.getDeviceDetails(req)
130
+ ): Promise<{
131
+ deviceId: DeviceId
132
+ deviceMetadata: RequestMetadata
133
+ }> {
134
+ const deviceMetadata = this.getRequestMetadata(req)
120
135
 
121
136
  const [deviceId, sessionId] = await Promise.all([
122
137
  generateDeviceId(),
@@ -126,13 +141,13 @@ export class DeviceManager {
126
141
  await this.store.createDevice(deviceId, {
127
142
  sessionId,
128
143
  lastSeenAt: new Date(),
129
- userAgent,
130
- ipAddress,
144
+ userAgent: deviceMetadata.userAgent ?? null,
145
+ ipAddress: deviceMetadata.ipAddress,
131
146
  })
132
147
 
133
148
  this.setCookie(res, [deviceId, sessionId])
134
149
 
135
- return { deviceId }
150
+ return { deviceId, deviceMetadata }
136
151
  }
137
152
 
138
153
  private async refresh(
@@ -140,7 +155,10 @@ export class DeviceManager {
140
155
  res: ServerResponse,
141
156
  [deviceId, sessionId]: CookieValue,
142
157
  forceRotate = false,
143
- ): Promise<{ deviceId: DeviceId }> {
158
+ ): Promise<{
159
+ deviceId: DeviceId
160
+ deviceMetadata: RequestMetadata
161
+ }> {
144
162
  const data = await this.store.readDevice(deviceId)
145
163
  if (!data) return this.create(req, res)
146
164
 
@@ -159,24 +177,24 @@ export class DeviceManager {
159
177
  }
160
178
  }
161
179
 
162
- const details = this.getDeviceDetails(req)
180
+ const deviceMetadata = this.getRequestMetadata(req)
163
181
 
164
182
  if (
165
183
  forceRotate ||
166
- details.ipAddress !== data.ipAddress ||
167
- details.userAgent !== data.userAgent ||
184
+ deviceMetadata.ipAddress !== data.ipAddress ||
185
+ deviceMetadata.userAgent !== data.userAgent ||
168
186
  age > this.options.rotationRate
169
187
  ) {
170
188
  await this.rotate(req, res, deviceId, {
171
- ipAddress: details.ipAddress,
172
- userAgent: details.userAgent || data.userAgent,
189
+ ipAddress: deviceMetadata.ipAddress,
190
+ userAgent: deviceMetadata.userAgent || data.userAgent,
173
191
  })
174
192
  }
175
193
 
176
- return { deviceId }
194
+ return { deviceId, deviceMetadata }
177
195
  }
178
196
 
179
- public async rotate(
197
+ private async rotate(
180
198
  req: IncomingMessage,
181
199
  res: ServerResponse,
182
200
  deviceId: DeviceId,
@@ -284,7 +302,7 @@ export class DeviceManager {
284
302
  }
285
303
  }
286
304
 
287
- private getDeviceDetails(req: IncomingMessage) {
288
- return extractDeviceDetails(req, this.options.trustProxy)
305
+ public getRequestMetadata(req: IncomingMessage) {
306
+ return extractRequestMetadata(req, this.options)
289
307
  }
290
308
  }
@@ -1,11 +1,7 @@
1
+ import type { IncomingMessage, ServerResponse } from 'node:http'
1
2
  import { mediaType } from '@hapi/accept'
2
3
  import { SubCtx, subCtx } from './context.js'
3
- import {
4
- IncomingMessage,
5
- Middleware,
6
- NextFunction,
7
- ServerResponse,
8
- } from './types.js'
4
+ import { Middleware, NextFunction } from './types.js'
9
5
 
10
6
  type View<
11
7
  T,
@@ -1,4 +1,4 @@
1
- import { IncomingMessage } from './types.js'
1
+ import type { IncomingMessage } from 'node:http'
2
2
 
3
3
  export type MethodMatcherInput = string | Iterable<string> | MethodMatcher
4
4
  export type MethodMatcher = (req: IncomingMessage) => boolean
@@ -1,8 +1,8 @@
1
1
  import { randomBytes } from 'node:crypto'
2
+ import type { IncomingMessage, ServerResponse } from 'node:http'
2
3
  import { parse as parseCookie, serialize as serializeCookie } from 'cookie'
3
4
  import createHttpError from 'http-errors'
4
5
  import { appendHeader } from './response.js'
5
- import { IncomingMessage, ServerResponse } from './types.js'
6
6
  import { UrlReference, urlMatch } from './url.js'
7
7
 
8
8
  export function validateHeaderValue(
@@ -162,3 +162,66 @@ export function parseHttpCookies(
162
162
  ? ((req as any).cookies = parseCookie(req.headers['cookie']))
163
163
  : null
164
164
  }
165
+
166
+ export type ExtractRequestMetadataOptions = {
167
+ trustProxy?: boolean
168
+ }
169
+
170
+ export type RequestMetadata = {
171
+ userAgent?: string
172
+ ipAddress: string
173
+ port: number
174
+ }
175
+
176
+ export function extractRequestMetadata(
177
+ req: IncomingMessage,
178
+ options?: ExtractRequestMetadataOptions,
179
+ ): RequestMetadata {
180
+ const userAgent = req.headers['user-agent'] || undefined
181
+ const ipAddress = extractIpAddress(req, options) || null
182
+ const port = extractPort(req, options)
183
+
184
+ if (ipAddress == null || port == null) {
185
+ throw new Error('Could not determine IP address')
186
+ }
187
+
188
+ return { userAgent, ipAddress, port }
189
+ }
190
+
191
+ function extractIpAddress(
192
+ req: IncomingMessage,
193
+ options?: ExtractRequestMetadataOptions,
194
+ ): string | undefined {
195
+ // Express app compatibility
196
+ if ('ip' in req && typeof req.ip === 'string') {
197
+ return req.ip
198
+ }
199
+
200
+ if (options?.trustProxy) {
201
+ const forwardedFor = req.headers['x-forwarded-for']
202
+ if (typeof forwardedFor === 'string') {
203
+ const firstForward = forwardedFor.split(',')[0]!.trim()
204
+ if (firstForward) return firstForward
205
+ }
206
+ }
207
+
208
+ return req.socket.remoteAddress
209
+ }
210
+
211
+ function extractPort(
212
+ req: IncomingMessage,
213
+ options?: ExtractRequestMetadataOptions,
214
+ ): number | undefined {
215
+ if (options?.trustProxy) {
216
+ const forwardedPort = req.headers['x-forwarded-port']
217
+ if (typeof forwardedPort === 'string') {
218
+ const port = Number(forwardedPort.trim())
219
+ if (!Number.isInteger(port) || port < 0 || port > 65535) {
220
+ throw new Error('Invalid forwarded port')
221
+ }
222
+ return port
223
+ }
224
+ }
225
+
226
+ return req.socket.remotePort
227
+ }
@@ -1,5 +1,6 @@
1
- import { Readable, pipeline } from 'node:stream'
2
- import { Handler, ServerResponse } from './types.js'
1
+ import type { ServerResponse } from 'node:http'
2
+ import { type Readable, pipeline } from 'node:stream'
3
+ import { Handler } from './types.js'
3
4
 
4
5
  export function appendHeader(
5
6
  res: ServerResponse,
@@ -1,8 +1,9 @@
1
+ import type { IncomingMessage, ServerResponse } from 'node:http'
1
2
  import { SubCtx, subCtx } from './context.js'
2
3
  import { MethodMatcherInput, createMethodMatcher } from './method.js'
3
4
  import { combineMiddlewares } from './middleware.js'
4
5
  import { Params, Path, createPathMatcher } from './path.js'
5
- import { IncomingMessage, Middleware, ServerResponse } from './types.js'
6
+ import { Middleware } from './types.js'
6
7
 
7
8
  export type RouteCtx<T, P extends Params> = SubCtx<T, { params: Readonly<P> }>
8
9
  export type RouteMiddleware<
@@ -1,9 +1,10 @@
1
+ import type { IncomingMessage, ServerResponse } from 'node:http'
1
2
  import { SubCtx, subCtx } from './context.js'
2
3
  import { MethodMatcherInput } from './method.js'
3
4
  import { asHandler, combineMiddlewares } from './middleware.js'
4
5
  import { Params, Path } from './path.js'
5
6
  import { RouteMiddleware, createRoute } from './route.js'
6
- import { IncomingMessage, Middleware, ServerResponse } from './types.js'
7
+ import { Middleware } from './types.js'
7
8
 
8
9
  export type RouterCtx<T> = SubCtx<T, { url: Readonly<URL> }>
9
10
  export type RouterMiddleware<
@@ -1,4 +1,4 @@
1
- import { IncomingMessage } from 'node:http'
1
+ import type { IncomingMessage } from 'node:http'
2
2
  import { Readable } from 'node:stream'
3
3
  import createHttpError from 'http-errors'
4
4
  import { decodeStream, streamToNodeBuffer } from '@atproto/common'
@@ -1,5 +1,4 @@
1
1
  import type { IncomingMessage, ServerResponse } from 'node:http'
2
- export { IncomingMessage, ServerResponse }
3
2
 
4
3
  export type NextFunction = (err?: unknown) => void
5
4
 
@@ -1,7 +1,24 @@
1
+ /**
2
+ * This function serves two purposes:
3
+ * - It ensures that the return value is a Promise, even if the function returns
4
+ * a "thenable" (i.e. a Promise-like object).
5
+ * - It allows to avoid assigning a `this` context to the function, which is
6
+ * particularly useful when the function is a member of a "private" object.
7
+ */
1
8
  export async function callAsync<F extends (...args: any[]) => unknown>(
2
9
  this: ThisParameterType<F>,
3
10
  fn: F,
4
11
  ...args: Parameters<F>
5
- ): Promise<Awaited<ReturnType<F>>> {
6
- return await (fn(...args) as ReturnType<F>)
12
+ ): Promise<Awaited<ReturnType<F>>>
13
+ export async function callAsync<F extends (...args: any[]) => unknown>(
14
+ this: ThisParameterType<F>,
15
+ fn?: F,
16
+ ...args: Parameters<F>
17
+ ): Promise<Awaited<ReturnType<F>> | undefined>
18
+ export async function callAsync<F extends (...args: any[]) => unknown>(
19
+ this: ThisParameterType<F>,
20
+ fn?: F,
21
+ ...args: Parameters<F>
22
+ ): Promise<Awaited<ReturnType<F>> | undefined> {
23
+ return (await fn?.(...args)) as Awaited<ReturnType<F>> | undefined
7
24
  }
@@ -1,33 +1,50 @@
1
+ import { setTimeout as sleep } from 'node:timers/promises'
1
2
  import { Awaitable } from './type.js'
2
3
 
4
+ export function onOvertimeDefault(options: {
5
+ start: number
6
+ end: number
7
+ elapsed: number
8
+ time: number
9
+ }): void {
10
+ console.warn(
11
+ `constantTime: execution time was ${options.elapsed}ms (which is greater than ${options.time}ms). You should increase the "time" to properly defend against timing attacks.`,
12
+ )
13
+ }
14
+
3
15
  /**
4
16
  * Utility function to protect against timing attacks.
5
17
  */
6
- export async function constantTime<T>(
7
- delay: number,
8
- fn: () => Awaitable<T>,
9
- ): Promise<T> {
10
- if (!Number.isFinite(delay) || delay <= 0) {
11
- throw new TypeError('Delay must be greater than 0')
18
+ export async function constantTime<R, T = unknown>(
19
+ this: T,
20
+ time: number,
21
+ fn: (this: T) => Awaitable<R>,
22
+ onOvertime = onOvertimeDefault,
23
+ ): Promise<R> {
24
+ if (!Number.isFinite(time) || time <= 0) {
25
+ throw new TypeError(`"time" must be a positive number`)
12
26
  }
13
27
 
14
28
  const start = Date.now()
15
29
  try {
16
- return await fn()
30
+ return await fn.call(this)
17
31
  } finally {
18
- const delta = Date.now() - start
32
+ const end = Date.now()
33
+ const elapsed = end - start
19
34
 
20
- // Let's make sure we always wait for a multiple of `delay` milliseconds.
21
- const n = Math.max(1, Math.ceil(delta / delay))
35
+ const remaining = time - elapsed
36
+ if (remaining >= 0) {
37
+ // Happy path, execution time was smaller than "time"
38
+ await sleep(remaining)
39
+ } else {
40
+ // The function execution took longer than "time"
41
+ onOvertime({ start, end, elapsed, time })
22
42
 
23
- // Ideally, the multiple should always be 1 in order to to properly defend
24
- // against timing attacks. Show a warning if it's not.
25
- if (n > 1) {
26
- console.warn(
27
- `constantTime: execution time was ${delta}ms, waiting for the next multiple of ${delay}ms. You should increase the delay to properly defend against timing attacks.`,
28
- )
29
- }
43
+ // Sleep until the next multiple of "time" to mitigate any attack
44
+ const multiplier = Math.ceil(elapsed / time)
45
+ const remaining = multiplier * time - elapsed
30
46
 
31
- await new Promise((resolve) => setTimeout(resolve, n * delay))
47
+ await sleep(remaining)
48
+ }
32
49
  }
33
50
  }