@openclaw/slack 2026.9.1 → 2026.9.2
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/{action-runtime-DND4Pyp2.js → action-runtime-DftQWpI4.js} +4 -4
- package/dist/action-runtime.runtime-rHI3UAh4.js +2 -0
- package/dist/{actions-fh66A6lc.js → actions-CFkvEv1d.js} +3 -3
- package/dist/api.js +9 -9
- package/dist/{approval-handler.runtime-D7d8sKM0.js → approval-handler.runtime-BeILKdw4.js} +31 -15
- package/dist/{channel-4m8IAdMD.js → channel-CmOuxbOD.js} +24 -23
- package/dist/channel-config-api.js +1 -1
- package/dist/channel-plugin-api.js +1 -1
- package/dist/{channel-type-3-SqEMVc.js → channel-type-BWt2CRaI.js} +2 -2
- package/dist/{channel.setup-t_ghLGb_.js → channel.setup-D5z1ReaT.js} +8 -3
- package/dist/{config-schema-bP3eV2ra.js → config-schema-JDx_f9Zb.js} +2 -2
- package/dist/{directory-live-q32AW7N1.js → directory-live-BuBPHmju.js} +1 -1
- package/dist/{monitor-Chwu_SiZ.js → monitor-DI07pfJl.js} +3 -3
- package/dist/{outbound-adapter-BB8wAjm5.js → outbound-adapter-B5QyTRpJ.js} +3 -2
- package/dist/{pipeline.runtime-BklS_NEj.js → pipeline.runtime-BdIwZgm4.js} +567 -733
- package/dist/{policy-D7PKkiet.js → policy-Bh5TOqII.js} +2 -2
- package/dist/{probe-gj5yQgN2.js → probe-Biy--yhL.js} +42 -10
- package/dist/{provider-Do50wMWn.js → provider-DoaUvAM4.js} +5583 -4921
- package/dist/{relay-source-DWuduiJ2.js → relay-source-D4uecp68.js} +1 -1
- package/dist/{replies-Dc6WVh_Q.js → replies-DENuTcPO.js} +4 -3
- package/dist/reply-blocks-PRkhyAN7.js +790 -0
- package/dist/{resolve-channels-CU7Bg5Ka.js → resolve-channels-DQGV2VrE.js} +1 -1
- package/dist/{resolve-users-DrhttvRQ.js → resolve-users-DRGt_Q4I.js} +1 -1
- package/dist/runtime-api.js +10 -10
- package/dist/{scopes-B9HRguDe.js → scopes-CZzeGdWV.js} +1 -1
- package/dist/{send-Djswy6lf.js → send-DElUcgIs.js} +10 -10
- package/dist/{send.runtime-__WVTWLQ.js → send.runtime-C8D6cKGm.js} +1 -1
- package/dist/{group-policy-BKjMqT-8.js → session-status-BynwcZSO.js} +169 -799
- package/dist/setup-plugin-api.js +1 -1
- package/dist/{setup-surface-DO0e-MMS.js → setup-surface-B1_gpGBl.js} +4 -4
- package/dist/{shared-DEQBEKBL.js → shared-CNQsWJT7.js} +2 -2
- package/dist/{slash-dispatch.runtime-C3B4h5ZM.js → slash-dispatch.runtime-DhsXavSY.js} +1 -1
- package/node_modules/typebox/build/format/json_pointer.d.mts +2 -2
- package/node_modules/typebox/build/format/json_pointer.mjs +2 -2
- package/node_modules/typebox/build/format/json_pointer_uri_fragment.d.mts +2 -2
- package/node_modules/typebox/build/format/json_pointer_uri_fragment.mjs +2 -2
- package/node_modules/typebox/build/format/relative_json_pointer.d.mts +2 -2
- package/node_modules/typebox/build/format/relative_json_pointer.mjs +2 -2
- package/node_modules/typebox/build/system/memory/assign.mjs +2 -1
- package/node_modules/typebox/build/system/memory/create.mjs +3 -4
- package/node_modules/typebox/build/system/memory/discard.mjs +2 -2
- package/node_modules/typebox/build/system/memory/freeze.d.mts +4 -0
- package/node_modules/typebox/build/system/memory/freeze.mjs +6 -0
- package/node_modules/typebox/build/system/memory/update.mjs +3 -2
- package/node_modules/typebox/package.json +1 -1
- package/node_modules/undici/lib/dispatcher/balanced-pool.js +4 -2
- package/node_modules/undici/lib/dispatcher/client-h1.js +12 -4
- package/node_modules/undici/lib/dispatcher/client-h2.js +70 -14
- package/node_modules/undici/lib/dispatcher/client.js +6 -2
- package/node_modules/undici/lib/handler/cache-handler.js +21 -5
- package/node_modules/undici/lib/handler/retry-handler.js +42 -7
- package/node_modules/undici/lib/interceptor/cache.js +20 -1
- package/node_modules/undici/lib/interceptor/decompress.js +146 -14
- package/node_modules/undici/lib/interceptor/dump.js +10 -23
- package/node_modules/undici/lib/web/eventsource/eventsource-stream.js +245 -150
- package/node_modules/undici/lib/web/websocket/connection.js +1 -1
- package/node_modules/undici/lib/web/websocket/permessage-deflate.js +5 -0
- package/node_modules/undici/lib/web/websocket/stream/websocketstream.js +8 -10
- package/node_modules/undici/package.json +1 -1
- package/node_modules/undici/types/interceptors.d.ts +2 -0
- package/openclaw.plugin.json +3 -3
- package/package.json +6 -6
- package/skills/_vendor/slack-skills-plugin.LICENSE +21 -0
- package/skills/_vendor/slack-skills-plugin.json +31 -0
- package/skills/block-kit/SKILL.md +37 -0
- package/skills/block-kit/references/official-block-kit.md +257 -0
- package/skills/block-kit/references/official-common-patterns.md +385 -0
- package/skills/slack/SKILL.md +1 -1
- package/dist/action-runtime.runtime-CEhbmS-Z.js +0 -2
- package/dist/conversation-binding-route-Vee8Dgbf.js +0 -115
|
@@ -117,7 +117,10 @@ function staleResponseRequiresRevalidation (result, cacheType) {
|
|
|
117
117
|
* @returns {boolean}
|
|
118
118
|
*/
|
|
119
119
|
function revalidationResponseDisallowsCachedReuse (cacheType, headers) {
|
|
120
|
-
if (
|
|
120
|
+
if (
|
|
121
|
+
(headers.vary && isInvalidOrWildcardVaryHeader(headers.vary)) ||
|
|
122
|
+
(cacheType === 'shared' && Object.hasOwn(headers, 'set-cookie'))
|
|
123
|
+
) {
|
|
121
124
|
return true
|
|
122
125
|
}
|
|
123
126
|
|
|
@@ -376,6 +379,17 @@ function handleResult (
|
|
|
376
379
|
return handleUncachedResponse(dispatch, globalOpts, cacheKey, handler, opts, reqCacheControl)
|
|
377
380
|
}
|
|
378
381
|
|
|
382
|
+
// Shared stores may outlive the Undici version that wrote them. Do not
|
|
383
|
+
// re-serve a Set-Cookie header from an existing shared-cache entry.
|
|
384
|
+
if (globalOpts.type === 'shared' && Object.hasOwn(result.headers, 'set-cookie')) {
|
|
385
|
+
if (util.isStream(result.body)) {
|
|
386
|
+
result.body.on('error', nop).destroy()
|
|
387
|
+
}
|
|
388
|
+
|
|
389
|
+
deleteCachedValue(globalOpts.store, cacheKey)
|
|
390
|
+
return handleUncachedResponse(dispatch, globalOpts, cacheKey, handler, opts, reqCacheControl)
|
|
391
|
+
}
|
|
392
|
+
|
|
379
393
|
const now = Date.now()
|
|
380
394
|
if (now > result.deleteAt) {
|
|
381
395
|
// Response is expired, cache store shouldn't have given this to us
|
|
@@ -574,6 +588,11 @@ module.exports = (opts = {}) => {
|
|
|
574
588
|
* @type {import('../../types/cache-interceptor.d.ts').default.CacheKey}
|
|
575
589
|
*/
|
|
576
590
|
const cacheKey = makeCacheKey(opts)
|
|
591
|
+
|
|
592
|
+
if (!arrayIncludes(util.safeHTTPMethods, opts.method)) {
|
|
593
|
+
return dispatch(opts, new CacheHandler(globalOpts, cacheKey, handler))
|
|
594
|
+
}
|
|
595
|
+
|
|
577
596
|
const result = store.get(cacheKey)
|
|
578
597
|
|
|
579
598
|
if (result && typeof result.then === 'function') {
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
'use strict'
|
|
2
2
|
|
|
3
3
|
const { createInflate, createGunzip, createBrotliDecompress, createZstdDecompress } = require('node:zlib')
|
|
4
|
-
const { pipeline } = require('node:stream')
|
|
4
|
+
const { pipeline, Transform: TransformStream } = require('node:stream')
|
|
5
|
+
const { InvalidArgumentError, ResponseExceededMaxSizeError } = require('../core/errors')
|
|
5
6
|
const DecoratorHandler = require('../handler/decorator-handler')
|
|
6
7
|
const { runtimeFeatures } = require('../util/runtime-features')
|
|
7
8
|
|
|
@@ -21,6 +22,31 @@ const supportedEncodings = {
|
|
|
21
22
|
}
|
|
22
23
|
|
|
23
24
|
const defaultSkipStatusCodes = /** @type {const} */ ([204, 304])
|
|
25
|
+
const defaultMaxSize = 64 * 1024 * 1024
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* Limits the output of one stage in a decompression chain.
|
|
29
|
+
* @param {number} maxSize - Maximum output size in bytes
|
|
30
|
+
* @returns {Transform}
|
|
31
|
+
*/
|
|
32
|
+
function createMaxSizeLimiter (maxSize) {
|
|
33
|
+
let size = 0
|
|
34
|
+
|
|
35
|
+
return new TransformStream({
|
|
36
|
+
transform (chunk, _encoding, callback) {
|
|
37
|
+
const decompressedSize = size + chunk.length
|
|
38
|
+
if (decompressedSize > maxSize) {
|
|
39
|
+
callback(new ResponseExceededMaxSizeError(
|
|
40
|
+
`Decompressed response size (${decompressedSize}) exceeded maxSize (${maxSize})`
|
|
41
|
+
))
|
|
42
|
+
return
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
size = decompressedSize
|
|
46
|
+
callback(null, chunk)
|
|
47
|
+
}
|
|
48
|
+
})
|
|
49
|
+
}
|
|
24
50
|
|
|
25
51
|
let warningEmitted = /** @type {boolean} */ (false)
|
|
26
52
|
|
|
@@ -28,20 +54,36 @@ let warningEmitted = /** @type {boolean} */ (false)
|
|
|
28
54
|
* @typedef {Object} DecompressHandlerOptions
|
|
29
55
|
* @property {number[]|Readonly<number[]>} [skipStatusCodes=[204, 304]] - List of status codes to skip decompression for
|
|
30
56
|
* @property {boolean} [skipErrorResponses] - Whether to skip decompression for error responses (status codes >= 400)
|
|
57
|
+
* @property {number} [maxSize=67108864] - Maximum decompressed response size in bytes
|
|
31
58
|
*/
|
|
32
59
|
|
|
33
60
|
class DecompressHandler extends DecoratorHandler {
|
|
34
61
|
/** @type {Transform[]} */
|
|
35
62
|
#decompressors = []
|
|
63
|
+
/** @type {Record<string, string | string[]> | undefined} */
|
|
64
|
+
#trailers
|
|
36
65
|
/** @type {Readonly<number[]>} */
|
|
37
66
|
#skipStatusCodes
|
|
38
67
|
/** @type {boolean} */
|
|
39
68
|
#skipErrorResponses
|
|
69
|
+
/** @type {number} */
|
|
70
|
+
#maxSize
|
|
71
|
+
/** @type {number} */
|
|
72
|
+
#decompressedSize = 0
|
|
73
|
+
/** @type {boolean} */
|
|
74
|
+
#terminated = false
|
|
75
|
+
/** @type {boolean} */
|
|
76
|
+
#inputEnded = false
|
|
77
|
+
|
|
78
|
+
constructor (handler, { skipStatusCodes = defaultSkipStatusCodes, skipErrorResponses = true, maxSize = defaultMaxSize } = {}) {
|
|
79
|
+
if (!Number.isSafeInteger(maxSize) || maxSize < 1) {
|
|
80
|
+
throw new InvalidArgumentError('maxSize must be a positive integer')
|
|
81
|
+
}
|
|
40
82
|
|
|
41
|
-
constructor (handler, { skipStatusCodes = defaultSkipStatusCodes, skipErrorResponses = true } = {}) {
|
|
42
83
|
super(handler)
|
|
43
84
|
this.#skipStatusCodes = skipStatusCodes
|
|
44
85
|
this.#skipErrorResponses = skipErrorResponses
|
|
86
|
+
this.#maxSize = maxSize
|
|
45
87
|
}
|
|
46
88
|
|
|
47
89
|
/**
|
|
@@ -61,7 +103,7 @@ class DecompressHandler extends DecoratorHandler {
|
|
|
61
103
|
* Creates a chain of decompressors for multiple content encodings
|
|
62
104
|
*
|
|
63
105
|
* @param {string} encodings - Comma-separated list of content encodings
|
|
64
|
-
* @returns {Array<
|
|
106
|
+
* @returns {Array<Transform>} - Array of decompressor and limiting streams
|
|
65
107
|
* @throws {Error} - If the number of content-encodings exceeds the maximum allowed
|
|
66
108
|
*/
|
|
67
109
|
#createDecompressionChain (encodings) {
|
|
@@ -89,7 +131,40 @@ class DecompressHandler extends DecoratorHandler {
|
|
|
89
131
|
decompressors.push(supportedEncodings[encoding]())
|
|
90
132
|
}
|
|
91
133
|
|
|
92
|
-
|
|
134
|
+
if (decompressors.length < 2) {
|
|
135
|
+
return decompressors
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
/** @type {Transform[]} */
|
|
139
|
+
const streams = []
|
|
140
|
+
for (let i = 0; i < decompressors.length; i++) {
|
|
141
|
+
streams.push(decompressors[i])
|
|
142
|
+
if (i < decompressors.length - 1) {
|
|
143
|
+
streams.push(createMaxSizeLimiter(this.#maxSize))
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
return streams
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
/**
|
|
151
|
+
* Stops decompression and reports an error.
|
|
152
|
+
* @param {Controller} controller - The controller to coordinate with
|
|
153
|
+
* @param {Error} error - The decompression error
|
|
154
|
+
* @returns {void}
|
|
155
|
+
*/
|
|
156
|
+
#fail (controller, error) {
|
|
157
|
+
if (this.#terminated) {
|
|
158
|
+
return
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
if (this.#inputEnded) {
|
|
162
|
+
// The request is already marked complete once the compressed input ends,
|
|
163
|
+
// so controller.abort() can no longer propagate decoder flush errors.
|
|
164
|
+
this.onResponseError(controller, error)
|
|
165
|
+
} else {
|
|
166
|
+
controller.abort(error)
|
|
167
|
+
}
|
|
93
168
|
}
|
|
94
169
|
|
|
95
170
|
/**
|
|
@@ -100,8 +175,21 @@ class DecompressHandler extends DecoratorHandler {
|
|
|
100
175
|
*/
|
|
101
176
|
#setupDecompressorEvents (decompressor, controller) {
|
|
102
177
|
decompressor.on('readable', () => {
|
|
178
|
+
if (this.#terminated) {
|
|
179
|
+
return
|
|
180
|
+
}
|
|
181
|
+
|
|
103
182
|
let chunk
|
|
104
183
|
while ((chunk = decompressor.read()) !== null) {
|
|
184
|
+
const decompressedSize = this.#decompressedSize + chunk.length
|
|
185
|
+
if (decompressedSize > this.#maxSize) {
|
|
186
|
+
this.#fail(controller, new ResponseExceededMaxSizeError(
|
|
187
|
+
`Decompressed response size (${decompressedSize}) exceeded maxSize (${this.#maxSize})`
|
|
188
|
+
))
|
|
189
|
+
return
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
this.#decompressedSize = decompressedSize
|
|
105
193
|
const result = super.onResponseData(controller, chunk)
|
|
106
194
|
if (result === false) {
|
|
107
195
|
break
|
|
@@ -110,7 +198,7 @@ class DecompressHandler extends DecoratorHandler {
|
|
|
110
198
|
})
|
|
111
199
|
|
|
112
200
|
decompressor.on('error', (error) => {
|
|
113
|
-
|
|
201
|
+
this.#fail(controller, error)
|
|
114
202
|
})
|
|
115
203
|
}
|
|
116
204
|
|
|
@@ -124,7 +212,13 @@ class DecompressHandler extends DecoratorHandler {
|
|
|
124
212
|
this.#setupDecompressorEvents(decompressor, controller)
|
|
125
213
|
|
|
126
214
|
decompressor.on('end', () => {
|
|
127
|
-
|
|
215
|
+
if (this.#terminated) {
|
|
216
|
+
return
|
|
217
|
+
}
|
|
218
|
+
|
|
219
|
+
this.#terminated = true
|
|
220
|
+
this.#cleanupDecompressors()
|
|
221
|
+
super.onResponseEnd(controller, this.#trailers)
|
|
128
222
|
})
|
|
129
223
|
}
|
|
130
224
|
|
|
@@ -138,11 +232,18 @@ class DecompressHandler extends DecoratorHandler {
|
|
|
138
232
|
this.#setupDecompressorEvents(lastDecompressor, controller)
|
|
139
233
|
|
|
140
234
|
pipeline(this.#decompressors, (err) => {
|
|
235
|
+
if (this.#terminated) {
|
|
236
|
+
return
|
|
237
|
+
}
|
|
238
|
+
|
|
141
239
|
if (err) {
|
|
142
|
-
|
|
240
|
+
this.#fail(controller, err)
|
|
143
241
|
return
|
|
144
242
|
}
|
|
145
|
-
|
|
243
|
+
|
|
244
|
+
this.#terminated = true
|
|
245
|
+
this.#cleanupDecompressors()
|
|
246
|
+
super.onResponseEnd(controller, this.#trailers)
|
|
146
247
|
})
|
|
147
248
|
}
|
|
148
249
|
|
|
@@ -181,6 +282,33 @@ class DecompressHandler extends DecoratorHandler {
|
|
|
181
282
|
// Remove compression headers since we're decompressing
|
|
182
283
|
const { 'content-encoding': _, 'content-length': __, ...newHeaders } = headers
|
|
183
284
|
|
|
285
|
+
if (controller?.rawHeaders) {
|
|
286
|
+
const rawHeaders = controller.rawHeaders
|
|
287
|
+
|
|
288
|
+
if (Array.isArray(rawHeaders)) {
|
|
289
|
+
const filteredHeaders = []
|
|
290
|
+
for (let i = 0; i < rawHeaders.length; i += 2) {
|
|
291
|
+
const headerName = rawHeaders[i]
|
|
292
|
+
const name = Buffer.isBuffer(headerName) ? headerName.toString('latin1') : `${headerName}`
|
|
293
|
+
const lowerName = name.toLowerCase()
|
|
294
|
+
|
|
295
|
+
if (lowerName === 'content-encoding' || lowerName === 'content-length') {
|
|
296
|
+
continue
|
|
297
|
+
}
|
|
298
|
+
|
|
299
|
+
filteredHeaders.push(rawHeaders[i], rawHeaders[i + 1])
|
|
300
|
+
}
|
|
301
|
+
rawHeaders.splice(0, rawHeaders.length, ...filteredHeaders)
|
|
302
|
+
} else if (typeof rawHeaders === 'object') {
|
|
303
|
+
for (const name of Object.keys(rawHeaders)) {
|
|
304
|
+
const lowerName = name.toLowerCase()
|
|
305
|
+
if (lowerName === 'content-encoding' || lowerName === 'content-length') {
|
|
306
|
+
delete rawHeaders[name]
|
|
307
|
+
}
|
|
308
|
+
}
|
|
309
|
+
}
|
|
310
|
+
}
|
|
311
|
+
|
|
184
312
|
if (this.#decompressors.length === 1) {
|
|
185
313
|
this.#setupSingleDecompressor(controller)
|
|
186
314
|
} else {
|
|
@@ -210,8 +338,9 @@ class DecompressHandler extends DecoratorHandler {
|
|
|
210
338
|
*/
|
|
211
339
|
onResponseEnd (controller, trailers) {
|
|
212
340
|
if (this.#decompressors.length > 0) {
|
|
341
|
+
this.#inputEnded = true
|
|
342
|
+
this.#trailers = trailers
|
|
213
343
|
this.#decompressors[0].end()
|
|
214
|
-
this.#cleanupDecompressors()
|
|
215
344
|
return
|
|
216
345
|
}
|
|
217
346
|
super.onResponseEnd(controller, trailers)
|
|
@@ -223,12 +352,15 @@ class DecompressHandler extends DecoratorHandler {
|
|
|
223
352
|
* @returns {void}
|
|
224
353
|
*/
|
|
225
354
|
onResponseError (controller, err) {
|
|
226
|
-
if (this.#
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
355
|
+
if (this.#terminated) {
|
|
356
|
+
return
|
|
357
|
+
}
|
|
358
|
+
|
|
359
|
+
this.#terminated = true
|
|
360
|
+
for (const decompressor of this.#decompressors) {
|
|
361
|
+
decompressor.destroy()
|
|
231
362
|
}
|
|
363
|
+
this.#cleanupDecompressors()
|
|
232
364
|
super.onResponseError(controller, err)
|
|
233
365
|
}
|
|
234
366
|
}
|
|
@@ -7,7 +7,6 @@ class DumpHandler extends DecoratorHandler {
|
|
|
7
7
|
#maxSize = 1024 * 1024
|
|
8
8
|
#dumped = false
|
|
9
9
|
#size = 0
|
|
10
|
-
#controller = null
|
|
11
10
|
aborted = false
|
|
12
11
|
reason = false
|
|
13
12
|
|
|
@@ -29,7 +28,6 @@ class DumpHandler extends DecoratorHandler {
|
|
|
29
28
|
|
|
30
29
|
onRequestStart (controller, context) {
|
|
31
30
|
controller.abort = this.#abort.bind(this)
|
|
32
|
-
this.#controller = controller
|
|
33
31
|
|
|
34
32
|
return super.onRequestStart(controller, context)
|
|
35
33
|
}
|
|
@@ -53,43 +51,32 @@ class DumpHandler extends DecoratorHandler {
|
|
|
53
51
|
}
|
|
54
52
|
|
|
55
53
|
onResponseError (controller, err) {
|
|
56
|
-
|
|
57
|
-
return
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
// On network errors before connect, controller will be null
|
|
61
|
-
err = this.#controller?.reason ?? err
|
|
62
|
-
|
|
63
|
-
super.onResponseError(controller, err)
|
|
54
|
+
super.onResponseError(controller, this.aborted === true ? this.reason : err)
|
|
64
55
|
}
|
|
65
56
|
|
|
66
57
|
onResponseData (controller, chunk) {
|
|
67
58
|
this.#size = this.#size + chunk.length
|
|
68
59
|
|
|
69
|
-
if (this.#size
|
|
70
|
-
|
|
60
|
+
if (this.#size > this.#maxSize) {
|
|
61
|
+
throw new RequestAbortedError(
|
|
62
|
+
`Response size (${this.#size}) larger than maxSize (${this.#maxSize})`
|
|
63
|
+
)
|
|
64
|
+
}
|
|
71
65
|
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
} else {
|
|
75
|
-
super.onResponseEnd(controller, {})
|
|
76
|
-
}
|
|
66
|
+
if (this.#size === this.#maxSize) {
|
|
67
|
+
this.#dumped = true
|
|
77
68
|
}
|
|
78
69
|
|
|
79
70
|
return true
|
|
80
71
|
}
|
|
81
72
|
|
|
82
73
|
onResponseEnd (controller, trailers) {
|
|
83
|
-
if (this
|
|
84
|
-
return
|
|
85
|
-
}
|
|
86
|
-
|
|
87
|
-
if (this.#controller.aborted === true) {
|
|
74
|
+
if (this.aborted === true) {
|
|
88
75
|
super.onResponseError(controller, this.reason)
|
|
89
76
|
return
|
|
90
77
|
}
|
|
91
78
|
|
|
92
|
-
super.onResponseEnd(controller, trailers)
|
|
79
|
+
super.onResponseEnd(controller, this.#dumped ? {} : trailers)
|
|
93
80
|
}
|
|
94
81
|
}
|
|
95
82
|
|