velocious 1.0.569 → 1.0.571
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/README.md +56 -2
- package/build/configuration-types.js +17 -0
- package/build/configuration.js +70 -0
- package/build/database/drivers/base.js +82 -44
- package/build/database/operation-connection.js +11 -0
- package/build/database/operation.js +10 -0
- package/build/http-server/client/index.js +77 -4
- package/build/http-server/client/response-compression.js +224 -0
- package/build/http-server/client/response.js +57 -0
- package/build/http-server/websocket-events-host.js +91 -48
- package/build/src/configuration-types.d.ts +55 -0
- package/build/src/configuration-types.d.ts.map +1 -1
- package/build/src/configuration-types.js +16 -1
- package/build/src/configuration.d.ts +6 -0
- package/build/src/configuration.d.ts.map +1 -1
- package/build/src/configuration.js +61 -1
- package/build/src/database/drivers/base.d.ts +30 -3
- package/build/src/database/drivers/base.d.ts.map +1 -1
- package/build/src/database/drivers/base.js +78 -42
- package/build/src/database/operation-connection.d.ts +6 -0
- package/build/src/database/operation-connection.d.ts.map +1 -1
- package/build/src/database/operation-connection.js +10 -1
- package/build/src/database/operation.d.ts +8 -0
- package/build/src/database/operation.d.ts.map +1 -1
- package/build/src/database/operation.js +10 -1
- package/build/src/http-server/client/index.d.ts +17 -1
- package/build/src/http-server/client/index.d.ts.map +1 -1
- package/build/src/http-server/client/index.js +74 -5
- package/build/src/http-server/client/response-compression.d.ts +71 -0
- package/build/src/http-server/client/response-compression.d.ts.map +1 -0
- package/build/src/http-server/client/response-compression.js +197 -0
- package/build/src/http-server/client/response.d.ts +27 -0
- package/build/src/http-server/client/response.d.ts.map +1 -1
- package/build/src/http-server/client/response.js +49 -1
- package/build/src/http-server/websocket-events-host.d.ts +28 -11
- package/build/src/http-server/websocket-events-host.d.ts.map +1 -1
- package/build/src/http-server/websocket-events-host.js +84 -46
- package/build/tsconfig.tsbuildinfo +1 -1
- package/package.json +4 -3
- package/scripts/docker-run.sh +20 -0
- package/scripts/verify-docker-dev-environment.js +579 -0
- package/src/configuration-types.js +17 -0
- package/src/configuration.js +70 -0
- package/src/database/drivers/base.js +82 -44
- package/src/database/operation-connection.js +11 -0
- package/src/database/operation.js +10 -0
- package/src/http-server/client/index.js +77 -4
- package/src/http-server/client/response-compression.js +224 -0
- package/src/http-server/client/response.js +57 -0
- package/src/http-server/websocket-events-host.js +91 -48
|
@@ -0,0 +1,224 @@
|
|
|
1
|
+
// @ts-check
|
|
2
|
+
|
|
3
|
+
import zlib from "node:zlib"
|
|
4
|
+
import {promisify} from "node:util"
|
|
5
|
+
|
|
6
|
+
const brotliCompressAsync = promisify(zlib.brotliCompress)
|
|
7
|
+
const gzipAsync = promisify(zlib.gzip)
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* Exact media types (beyond the text/*, *+json, and *+xml families) that are worth compressing.
|
|
11
|
+
* Everything else — unknown binary types and commonly pre-compressed media such as images,
|
|
12
|
+
* video, and archives — is left untouched by the conservative allowlist.
|
|
13
|
+
* @type {Set<string>} */
|
|
14
|
+
const COMPRESSIBLE_EXACT_MEDIA_TYPES = new Set([
|
|
15
|
+
"application/ecmascript",
|
|
16
|
+
"application/javascript",
|
|
17
|
+
"application/json",
|
|
18
|
+
"application/x-javascript",
|
|
19
|
+
"application/xml",
|
|
20
|
+
"image/svg+xml"
|
|
21
|
+
])
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* RFC 9110 §12.4.2 qvalue grammar: `0` or `1` with at most three fractional
|
|
25
|
+
* digits, and only zeros after `1`.
|
|
26
|
+
* @type {RegExp} */
|
|
27
|
+
const QVALUE_PATTERN = /^(?:0(?:\.\d{1,3})?|1(?:\.0{1,3})?)$/u
|
|
28
|
+
|
|
29
|
+
/**
|
|
30
|
+
* Runs parse accept encoding.
|
|
31
|
+
* @param {string} headerValue - Accept-Encoding header value.
|
|
32
|
+
* @returns {Map<string, number>} - Lowercased coding to q-value (0-1).
|
|
33
|
+
*/
|
|
34
|
+
export function parseAcceptEncoding(headerValue) {
|
|
35
|
+
/** @type {Map<string, number>} */
|
|
36
|
+
const codings = new Map()
|
|
37
|
+
|
|
38
|
+
for (const part of headerValue.split(",")) {
|
|
39
|
+
const [codingToken, ...parameters] = part.split(";")
|
|
40
|
+
const coding = codingToken?.trim().toLowerCase()
|
|
41
|
+
|
|
42
|
+
if (!coding) continue
|
|
43
|
+
|
|
44
|
+
let q = 1
|
|
45
|
+
|
|
46
|
+
for (const parameter of parameters) {
|
|
47
|
+
const [name, value] = parameter.split("=")
|
|
48
|
+
|
|
49
|
+
if (name?.trim().toLowerCase() != "q") continue
|
|
50
|
+
|
|
51
|
+
const qvalue = value?.trim() || ""
|
|
52
|
+
|
|
53
|
+
// A malformed q-value (e.g. `.5`, `01`, `1.001`, more than three fractional
|
|
54
|
+
// digits, or empty) is treated as "not acceptable" (q=0), per RFC 9110 §12.4.2.
|
|
55
|
+
q = QVALUE_PATTERN.test(qvalue) ? Number(qvalue) : 0
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
codings.set(coding, q)
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
return codings
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
/**
|
|
65
|
+
* Negotiates the content coding for a response from the Accept-Encoding header.
|
|
66
|
+
* Identity participates in the same quality comparison as the supported codings:
|
|
67
|
+
* a higher-q identity selects identity, and equal-q ties break in server order
|
|
68
|
+
* br, gzip, identity. Identity defaults to acceptable unless explicitly refused
|
|
69
|
+
* with `identity;q=0` or a `*;q=0` wildcard without a more specific identity
|
|
70
|
+
* entry, and an explicit coding entry beats the wildcard.
|
|
71
|
+
* @param {string | null | undefined} acceptEncoding - Accept-Encoding header value.
|
|
72
|
+
* @returns {{encoding: "br" | "gzip" | "identity", identityAcceptable: boolean} | {notAcceptable: true}} - Negotiated coding, or that no acceptable representation exists.
|
|
73
|
+
*/
|
|
74
|
+
export function negotiateContentEncoding(acceptEncoding) {
|
|
75
|
+
if (acceptEncoding === undefined || acceptEncoding === null || acceptEncoding.trim() === "") {
|
|
76
|
+
return {encoding: "identity", identityAcceptable: true}
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
const codings = parseAcceptEncoding(acceptEncoding)
|
|
80
|
+
const wildcardQ = codings.get("*")
|
|
81
|
+
const identityQ = codings.get("identity") ?? wildcardQ ?? 1
|
|
82
|
+
|
|
83
|
+
// Declared in server preference order; the stable sort keeps this order for ties.
|
|
84
|
+
/** @type {Array<{coding: "br" | "gzip" | "identity", q: number}>} */
|
|
85
|
+
const candidates = [
|
|
86
|
+
{coding: "br", q: codings.get("br") ?? wildcardQ ?? 0},
|
|
87
|
+
{coding: "gzip", q: codings.get("gzip") ?? wildcardQ ?? 0},
|
|
88
|
+
{coding: "identity", q: identityQ}
|
|
89
|
+
]
|
|
90
|
+
const selected = candidates
|
|
91
|
+
.filter((candidate) => candidate.q > 0)
|
|
92
|
+
.sort((a, b) => b.q - a.q)[0]
|
|
93
|
+
|
|
94
|
+
if (!selected) return {notAcceptable: true}
|
|
95
|
+
|
|
96
|
+
return {encoding: selected.coding, identityAcceptable: identityQ > 0}
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
/**
|
|
100
|
+
* Runs is compressible content type.
|
|
101
|
+
* @param {string} contentType - Content-Type header value.
|
|
102
|
+
* @returns {boolean} - Whether the media type is on the compressible allowlist.
|
|
103
|
+
*/
|
|
104
|
+
export function isCompressibleContentType(contentType) {
|
|
105
|
+
const mediaType = contentType.split(";")[0]?.trim().toLowerCase()
|
|
106
|
+
|
|
107
|
+
if (!mediaType) return false
|
|
108
|
+
|
|
109
|
+
// Server-sent events are long-lived streams; buffering them for compression
|
|
110
|
+
// would break delivery, so they are excluded before the textual allowlist.
|
|
111
|
+
if (mediaType == "text/event-stream") return false
|
|
112
|
+
if (mediaType.startsWith("text/")) return true
|
|
113
|
+
if (mediaType.endsWith("+json") || mediaType.endsWith("+xml")) return true
|
|
114
|
+
|
|
115
|
+
return COMPRESSIBLE_EXACT_MEDIA_TYPES.has(mediaType)
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
/**
|
|
119
|
+
* Merges Accept-Encoding into the response Vary header case-insensitively and
|
|
120
|
+
* without duplicates. An existing `Vary: *` already covers every request header
|
|
121
|
+
* and is preserved as-is.
|
|
122
|
+
* @param {import("./response.js").default} response - Response instance.
|
|
123
|
+
* @returns {void} - No return value.
|
|
124
|
+
*/
|
|
125
|
+
export function addAcceptEncodingToVary(response) {
|
|
126
|
+
for (const headerKey in response.headers) {
|
|
127
|
+
if (headerKey.toLowerCase() != "vary") continue
|
|
128
|
+
|
|
129
|
+
const values = response.headers[headerKey]
|
|
130
|
+
const tokens = values.flatMap((value) => value.split(",").map((token) => token.trim().toLowerCase()))
|
|
131
|
+
|
|
132
|
+
if (tokens.includes("*") || tokens.includes("accept-encoding")) return
|
|
133
|
+
|
|
134
|
+
if (values.length > 0) {
|
|
135
|
+
values[0] = `${values[0]}, Accept-Encoding`
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
return
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
response.setHeader("Vary", "Accept-Encoding")
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
/**
|
|
145
|
+
* Negotiates and applies compression to a buffered response body immediately before
|
|
146
|
+
* framing. Only string/Uint8Array responses reach this point; sendFile responses and
|
|
147
|
+
* bodyless statuses are excluded by the caller. Transformation is skipped for
|
|
148
|
+
* Cache-Control no-transform, non-allowlisted or pre-compressed media types,
|
|
149
|
+
* server-sent events, partial (206) responses, requests with a Range header,
|
|
150
|
+
* credentialed requests (Authorization/Cookie headers), responses carrying
|
|
151
|
+
* credentials or validators (Set-Cookie/ETag/Digest/Content-Digest/Content-Range
|
|
152
|
+
* headers), and per-response opt-outs; a skipped
|
|
153
|
+
* transformation is still sent as identity when the client accepts identity, and
|
|
154
|
+
* answered "not-acceptable" when it does not. Responses that already carry an
|
|
155
|
+
* application-supplied Content-Encoding are passed through unchanged and never
|
|
156
|
+
* negotiate. When the client forbids every representation (identity and all
|
|
157
|
+
* supported codings), the outcome is "not-acceptable".
|
|
158
|
+
* @param {object} args - Options object.
|
|
159
|
+
* @param {Buffer} args.bodyBuffer - Buffered response body bytes (UTF-8 encoded for string bodies).
|
|
160
|
+
* @param {import("../../configuration-types.js").NormalizedHttpCompressionConfiguration} args.compression - Normalized compression configuration.
|
|
161
|
+
* @param {import("./request.js").default | import("./websocket-request.js").default} args.request - Request object.
|
|
162
|
+
* @param {import("./response.js").default} args.response - Response instance.
|
|
163
|
+
* @returns {Promise<{outcome: "identity"} | {outcome: "compressed", body: Buffer} | {outcome: "not-acceptable"}>} - Compression outcome.
|
|
164
|
+
*/
|
|
165
|
+
export async function applyResponseCompression({bodyBuffer, compression, request, response}) {
|
|
166
|
+
if (!compression.enabled) return {outcome: "identity"}
|
|
167
|
+
|
|
168
|
+
// Application-supplied encodings stay application-owned: they are passed through
|
|
169
|
+
// unchanged and never take part in negotiation failure handling.
|
|
170
|
+
if (response.getHeader("Content-Encoding").length > 0) return {outcome: "identity"}
|
|
171
|
+
|
|
172
|
+
const negotiated = negotiateContentEncoding(request.header("accept-encoding"))
|
|
173
|
+
|
|
174
|
+
if ("notAcceptable" in negotiated) return {outcome: "not-acceptable"}
|
|
175
|
+
|
|
176
|
+
const cacheControlTokens = response.getHeader("Cache-Control")
|
|
177
|
+
.flatMap((value) => value.split(","))
|
|
178
|
+
.map((token) => token.trim().toLowerCase())
|
|
179
|
+
const contentType = response.getHeader("Content-Type")[0]
|
|
180
|
+
|
|
181
|
+
// Automatic security exclusions: credentialed requests (Authorization/Cookie) and
|
|
182
|
+
// responses carrying credentials (Set-Cookie) or representation validators
|
|
183
|
+
// (ETag/Digest/Content-Digest) are never transformed — compression could leak
|
|
184
|
+
// secret-bearing content through a compression oracle, and validators stay
|
|
185
|
+
// application-owned rather than being recomputed for encoded variants.
|
|
186
|
+
const transformable = !response.isCompressionDisabled() &&
|
|
187
|
+
response.getStatusCode() !== 206 &&
|
|
188
|
+
!request.header("range") &&
|
|
189
|
+
!request.header("authorization") &&
|
|
190
|
+
!request.header("cookie") &&
|
|
191
|
+
response.getHeader("Content-Range").length === 0 &&
|
|
192
|
+
response.getHeader("Set-Cookie").length === 0 &&
|
|
193
|
+
response.getHeader("ETag").length === 0 &&
|
|
194
|
+
response.getHeader("Digest").length === 0 &&
|
|
195
|
+
response.getHeader("Content-Digest").length === 0 &&
|
|
196
|
+
!cacheControlTokens.includes("no-transform") &&
|
|
197
|
+
contentType !== undefined &&
|
|
198
|
+
isCompressibleContentType(contentType)
|
|
199
|
+
|
|
200
|
+
if (!transformable) {
|
|
201
|
+
// A skipped transformation may still go out as identity when the client accepts
|
|
202
|
+
// identity; when identity is forbidden, no acceptable representation can be sent.
|
|
203
|
+
return negotiated.identityAcceptable ? {outcome: "identity"} : {outcome: "not-acceptable"}
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
// The representation now depends on the request's Accept-Encoding, even when this
|
|
207
|
+
// particular response ends up identity (missing header, higher-q identity, below threshold).
|
|
208
|
+
addAcceptEncodingToVary(response)
|
|
209
|
+
|
|
210
|
+
if (negotiated.encoding == "identity") return {outcome: "identity"}
|
|
211
|
+
|
|
212
|
+
// Below the threshold the smaller identity representation is sent instead — but only
|
|
213
|
+
// when identity is acceptable; a client that forbids identity must never be forced
|
|
214
|
+
// onto an unacceptable representation by the size check.
|
|
215
|
+
if (bodyBuffer.length < compression.threshold && negotiated.identityAcceptable) return {outcome: "identity"}
|
|
216
|
+
|
|
217
|
+
const body = negotiated.encoding == "br"
|
|
218
|
+
? await brotliCompressAsync(bodyBuffer, {params: {[zlib.constants.BROTLI_PARAM_QUALITY]: compression.brotliQuality}})
|
|
219
|
+
: await gzipAsync(bodyBuffer, {level: compression.gzipLevel})
|
|
220
|
+
|
|
221
|
+
response.setHeader("Content-Encoding", negotiated.encoding)
|
|
222
|
+
|
|
223
|
+
return {body, outcome: "compressed"}
|
|
224
|
+
}
|
|
@@ -98,6 +98,11 @@ export default class VelociousHttpServerClientResponse {
|
|
|
98
98
|
* @type {Record<string, string[]>} */
|
|
99
99
|
headers = {}
|
|
100
100
|
|
|
101
|
+
/**
|
|
102
|
+
* Whether compression has been disabled for this specific response.
|
|
103
|
+
* @type {boolean} */
|
|
104
|
+
compressionDisabled = false
|
|
105
|
+
|
|
101
106
|
/**
|
|
102
107
|
* Runs constructor.
|
|
103
108
|
* @param {object} args - Options object.
|
|
@@ -133,6 +138,58 @@ export default class VelociousHttpServerClientResponse {
|
|
|
133
138
|
this.headers[key] = [value]
|
|
134
139
|
}
|
|
135
140
|
|
|
141
|
+
/**
|
|
142
|
+
* Returns every value set for a header, matched case-insensitively.
|
|
143
|
+
* @param {string} key - Header name.
|
|
144
|
+
* @returns {string[]} - Header values in insertion order.
|
|
145
|
+
*/
|
|
146
|
+
getHeader(key) {
|
|
147
|
+
const lowerCaseKey = key.toLowerCase()
|
|
148
|
+
|
|
149
|
+
/** @type {string[]} */
|
|
150
|
+
const values = []
|
|
151
|
+
|
|
152
|
+
for (const headerKey in this.headers) {
|
|
153
|
+
if (headerKey.toLowerCase() == lowerCaseKey) {
|
|
154
|
+
values.push(...this.headers[headerKey])
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
return values
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
/**
|
|
162
|
+
* Removes every value set for a header, matched case-insensitively.
|
|
163
|
+
* @param {string} key - Header name.
|
|
164
|
+
* @returns {void} - No return value.
|
|
165
|
+
*/
|
|
166
|
+
removeHeader(key) {
|
|
167
|
+
const lowerCaseKey = key.toLowerCase()
|
|
168
|
+
|
|
169
|
+
for (const headerKey in this.headers) {
|
|
170
|
+
if (headerKey.toLowerCase() == lowerCaseKey) {
|
|
171
|
+
delete this.headers[headerKey]
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
/**
|
|
177
|
+
* Disables HTTP response compression for this specific response, even when the
|
|
178
|
+
* server is configured to compress buffered responses.
|
|
179
|
+
* @returns {void} - No return value.
|
|
180
|
+
*/
|
|
181
|
+
disableCompression() {
|
|
182
|
+
this.compressionDisabled = true
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
/**
|
|
186
|
+
* Runs is compression disabled.
|
|
187
|
+
* @returns {boolean} - Whether compression has been disabled for this response.
|
|
188
|
+
*/
|
|
189
|
+
isCompressionDisabled() {
|
|
190
|
+
return this.compressionDisabled
|
|
191
|
+
}
|
|
192
|
+
|
|
136
193
|
/**
|
|
137
194
|
* Runs get body.
|
|
138
195
|
* @returns {string | Uint8Array | null} - The body.
|
|
@@ -12,19 +12,32 @@ export class VelociousHttpServerWebsocketEventsHost {
|
|
|
12
12
|
* Broadcast handlers grouped by the configuration that owns them.
|
|
13
13
|
* @type {Map<import("../configuration.js").default, Set<import("./worker-handler/index.js").default>>} */
|
|
14
14
|
this.broadcastHandlersByConfiguration = new Map()
|
|
15
|
-
|
|
15
|
+
/**
|
|
16
|
+
* Ordered publish tails keyed by channel. Each channel persists and
|
|
17
|
+
* dispatches behind its own tail so a slow channel cannot head-of-line
|
|
18
|
+
* block unrelated channels. A rejected tail stays in the map so the
|
|
19
|
+
* channel remains poisoned and observable.
|
|
20
|
+
* @type {Map<string, Promise<void>>} */
|
|
21
|
+
this.publishQueuesByChannel = new Map()
|
|
16
22
|
}
|
|
17
23
|
|
|
18
24
|
/**
|
|
19
|
-
* Returns a promise that
|
|
20
|
-
*
|
|
21
|
-
*
|
|
22
|
-
*
|
|
23
|
-
*
|
|
25
|
+
* Returns a promise that settles when every channel tail pending at call
|
|
26
|
+
* time has settled (including event-log persistence). Useful when a
|
|
27
|
+
* request handler needs to guarantee its broadcast is persisted before
|
|
28
|
+
* responding — without this, the HTTP response can return before the
|
|
29
|
+
* async event-log write finishes. This is a snapshot barrier: work
|
|
30
|
+
* enqueued after the snapshot is not awaited, and the first rejection in
|
|
31
|
+
* snapshot order is rethrown after every snapshotted tail has settled.
|
|
24
32
|
* @returns {Promise<void>}
|
|
25
33
|
*/
|
|
26
34
|
async awaitPendingBroadcasts() {
|
|
27
|
-
|
|
35
|
+
const snapshot = [...this.publishQueuesByChannel.values()]
|
|
36
|
+
const results = await Promise.allSettled(snapshot)
|
|
37
|
+
|
|
38
|
+
for (const result of results) {
|
|
39
|
+
if (result.status === "rejected") throw result.reason
|
|
40
|
+
}
|
|
28
41
|
}
|
|
29
42
|
|
|
30
43
|
/**
|
|
@@ -66,18 +79,22 @@ export class VelociousHttpServerWebsocketEventsHost {
|
|
|
66
79
|
const channel = publishArgs.channel
|
|
67
80
|
const payload = publishArgs.payload
|
|
68
81
|
|
|
69
|
-
this._queuePublish(
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
handler.
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
82
|
+
this._queuePublish({
|
|
83
|
+
callback: async () => {
|
|
84
|
+
const persistedEvent = await this._persistEventIfNeeded({channel, payload})
|
|
85
|
+
|
|
86
|
+
for (const handler of this.handlers) {
|
|
87
|
+
handler.dispatchWebsocketEvent({
|
|
88
|
+
channel,
|
|
89
|
+
createdAt: persistedEvent?.createdAt,
|
|
90
|
+
eventId: persistedEvent?.id,
|
|
91
|
+
payload
|
|
92
|
+
})
|
|
93
|
+
}
|
|
94
|
+
},
|
|
95
|
+
channel,
|
|
96
|
+
errorMessage: "Failed to publish websocket event"
|
|
97
|
+
})
|
|
81
98
|
}
|
|
82
99
|
|
|
83
100
|
/**
|
|
@@ -92,43 +109,54 @@ export class VelociousHttpServerWebsocketEventsHost {
|
|
|
92
109
|
* @returns {void}
|
|
93
110
|
*/
|
|
94
111
|
broadcastV2({body, broadcastParams, channel, configuration}) {
|
|
95
|
-
// Chain onto
|
|
96
|
-
// the next broadcast — without this, a
|
|
97
|
-
// immediately after a broadcast could miss the
|
|
98
|
-
// event when replaying from lastEventId on a slow DB.
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
112
|
+
// Chain onto the channel's own publish tail so persistence completes
|
|
113
|
+
// before the next broadcast on that same channel — without this, a
|
|
114
|
+
// subscriber that connects immediately after a broadcast could miss the
|
|
115
|
+
// just-persisted event when replaying from lastEventId on a slow DB.
|
|
116
|
+
// Other channels chain onto their own tails and are not delayed.
|
|
117
|
+
this._queuePublish({
|
|
118
|
+
callback: async () => {
|
|
119
|
+
const persistedEvent = await this._persistV2EventIfNeeded({body, channel, configuration})
|
|
120
|
+
const dispatchedTargets = new Set()
|
|
121
|
+
|
|
122
|
+
for (const handler of this.broadcastHandlersByConfiguration.get(configuration) || []) {
|
|
123
|
+
const dispatchKey = handler.websocketV2BroadcastDispatchKey()
|
|
124
|
+
|
|
125
|
+
if (dispatchedTargets.has(dispatchKey)) continue
|
|
126
|
+
|
|
127
|
+
dispatchedTargets.add(dispatchKey)
|
|
128
|
+
handler.dispatchWebsocketV2Broadcast({
|
|
129
|
+
body,
|
|
130
|
+
broadcastParams,
|
|
131
|
+
channel,
|
|
132
|
+
eventId: persistedEvent?.id,
|
|
133
|
+
createdAt: persistedEvent?.createdAt
|
|
134
|
+
})
|
|
135
|
+
}
|
|
136
|
+
},
|
|
137
|
+
channel,
|
|
138
|
+
errorMessage: "Failed to persist/broadcast V2 event",
|
|
139
|
+
originatingConfiguration: configuration
|
|
140
|
+
})
|
|
118
141
|
}
|
|
119
142
|
|
|
120
143
|
/**
|
|
121
|
-
*
|
|
122
|
-
*
|
|
123
|
-
*
|
|
124
|
-
* @param {
|
|
144
|
+
* Queues publish work behind the channel's own ordered tail so only work
|
|
145
|
+
* for the same channel serializes — a slow or failed channel never
|
|
146
|
+
* head-of-line blocks unrelated channels.
|
|
147
|
+
* @param {object} args - Options object.
|
|
148
|
+
* @param {() => Promise<void>} args.callback - Publish work to run in channel order.
|
|
149
|
+
* @param {string} args.channel - Channel whose ordered tail the work chains onto.
|
|
150
|
+
* @param {string} args.errorMessage - Message logged when publish work fails.
|
|
151
|
+
* @param {import("../configuration.js").default} [args.originatingConfiguration] - Configuration whose context owns the work.
|
|
125
152
|
* @returns {void}
|
|
126
153
|
*/
|
|
127
|
-
_queuePublish(callback, errorMessage, originatingConfiguration) {
|
|
154
|
+
_queuePublish({callback, channel, errorMessage, originatingConfiguration}) {
|
|
128
155
|
const handler = this.handlers.values().next().value
|
|
129
156
|
const configuration = originatingConfiguration || handler?.configuration
|
|
157
|
+
const previousTail = this.publishQueuesByChannel.get(channel) || Promise.resolve()
|
|
130
158
|
|
|
131
|
-
|
|
159
|
+
const tail = previousTail
|
|
132
160
|
.then(async () => {
|
|
133
161
|
if (configuration) {
|
|
134
162
|
return await configuration.withoutCurrentConnectionContexts(callback)
|
|
@@ -140,6 +168,21 @@ export class VelociousHttpServerWebsocketEventsHost {
|
|
|
140
168
|
console.error(errorMessage, error)
|
|
141
169
|
throw error
|
|
142
170
|
})
|
|
171
|
+
|
|
172
|
+
this.publishQueuesByChannel.set(channel, tail)
|
|
173
|
+
|
|
174
|
+
// Remove the tail once it settles successfully, but only when it is
|
|
175
|
+
// still the newest tail — an older settled tail must never delete a
|
|
176
|
+
// newer one. A rejected tail stays in the map so the channel remains
|
|
177
|
+
// poisoned and observable through awaitPendingBroadcasts.
|
|
178
|
+
tail.then(
|
|
179
|
+
() => {
|
|
180
|
+
if (this.publishQueuesByChannel.get(channel) === tail) {
|
|
181
|
+
this.publishQueuesByChannel.delete(channel)
|
|
182
|
+
}
|
|
183
|
+
},
|
|
184
|
+
() => undefined
|
|
185
|
+
)
|
|
143
186
|
}
|
|
144
187
|
|
|
145
188
|
/**
|
|
@@ -227,8 +227,23 @@
|
|
|
227
227
|
* @property {string} [peerType] - Optional human-readable label for this peer (e.g. "server", "background-jobs-worker").
|
|
228
228
|
* @property {number} [unreachableReportMs] - Grace window (ms) a beacon connect/disconnect blip must persist before it is reported as a framework-error. Transient outages that recover within this window (e.g. a deploy restarting the broker) are not reported. Defaults to 30000.
|
|
229
229
|
*/
|
|
230
|
+
/**
|
|
231
|
+
* @typedef {object} HttpCompressionConfiguration
|
|
232
|
+
* @property {boolean} [enabled] - Whether buffered response compression is enabled. Defaults to true; set false to disable globally.
|
|
233
|
+
* @property {number} [threshold] - Minimum buffered body size in bytes before compression is applied. Defaults to 1024.
|
|
234
|
+
* @property {number} [brotliQuality] - Brotli encoder quality (0-11). Defaults to 4.
|
|
235
|
+
* @property {number} [gzipLevel] - Gzip compression level (0-9). Defaults to 6.
|
|
236
|
+
*/
|
|
237
|
+
/**
|
|
238
|
+
* @typedef {object} NormalizedHttpCompressionConfiguration
|
|
239
|
+
* @property {boolean} enabled - Whether buffered HTTP response compression is enabled.
|
|
240
|
+
* @property {number} threshold - Minimum buffered body size in bytes before compression is applied.
|
|
241
|
+
* @property {number} brotliQuality - Brotli encoder quality (0-11).
|
|
242
|
+
* @property {number} gzipLevel - Gzip compression level (0-9).
|
|
243
|
+
*/
|
|
230
244
|
/**
|
|
231
245
|
* @typedef {object} HttpServerConfiguration
|
|
246
|
+
* @property {boolean | HttpCompressionConfiguration} [compression] - Buffered response compression. Enabled with documented defaults when absent; false or {enabled: false} disables it globally.
|
|
232
247
|
* @property {string} [host] - Hostname to bind the HTTP server to.
|
|
233
248
|
* @property {boolean} [inProcess] - Run HTTP handlers in the main thread instead of worker threads.
|
|
234
249
|
* @property {number} [maxWorkers] - Backward-compatible alias for workers.
|
|
@@ -1153,7 +1168,47 @@ export type BeaconConfiguration = {
|
|
|
1153
1168
|
*/
|
|
1154
1169
|
unreachableReportMs?: number | undefined;
|
|
1155
1170
|
};
|
|
1171
|
+
export type HttpCompressionConfiguration = {
|
|
1172
|
+
/**
|
|
1173
|
+
* - Whether buffered response compression is enabled. Defaults to true; set false to disable globally.
|
|
1174
|
+
*/
|
|
1175
|
+
enabled?: boolean | undefined;
|
|
1176
|
+
/**
|
|
1177
|
+
* - Minimum buffered body size in bytes before compression is applied. Defaults to 1024.
|
|
1178
|
+
*/
|
|
1179
|
+
threshold?: number | undefined;
|
|
1180
|
+
/**
|
|
1181
|
+
* - Brotli encoder quality (0-11). Defaults to 4.
|
|
1182
|
+
*/
|
|
1183
|
+
brotliQuality?: number | undefined;
|
|
1184
|
+
/**
|
|
1185
|
+
* - Gzip compression level (0-9). Defaults to 6.
|
|
1186
|
+
*/
|
|
1187
|
+
gzipLevel?: number | undefined;
|
|
1188
|
+
};
|
|
1189
|
+
export type NormalizedHttpCompressionConfiguration = {
|
|
1190
|
+
/**
|
|
1191
|
+
* - Whether buffered HTTP response compression is enabled.
|
|
1192
|
+
*/
|
|
1193
|
+
enabled: boolean;
|
|
1194
|
+
/**
|
|
1195
|
+
* - Minimum buffered body size in bytes before compression is applied.
|
|
1196
|
+
*/
|
|
1197
|
+
threshold: number;
|
|
1198
|
+
/**
|
|
1199
|
+
* - Brotli encoder quality (0-11).
|
|
1200
|
+
*/
|
|
1201
|
+
brotliQuality: number;
|
|
1202
|
+
/**
|
|
1203
|
+
* - Gzip compression level (0-9).
|
|
1204
|
+
*/
|
|
1205
|
+
gzipLevel: number;
|
|
1206
|
+
};
|
|
1156
1207
|
export type HttpServerConfiguration = {
|
|
1208
|
+
/**
|
|
1209
|
+
* - Buffered response compression. Enabled with documented defaults when absent; false or {enabled: false} disables it globally.
|
|
1210
|
+
*/
|
|
1211
|
+
compression?: boolean | HttpCompressionConfiguration | undefined;
|
|
1157
1212
|
/**
|
|
1158
1213
|
* - Hostname to bind the HTTP server to.
|
|
1159
1214
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"configuration-types.d.ts","sourceRoot":"","sources":["../../src/configuration-types.js"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"configuration-types.d.ts","sourceRoot":"","sources":["../../src/configuration-types.js"],"names":[],"mappings":"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"}
|