MCPcopy Create free account
hub / github.com/middleapi/orpc / init

Method init

packages/server/src/plugins/response-headers.ts:15–55  ·  view source on GitHub ↗
(options: StandardHandlerOptions<T>)

Source from the content-addressed store, hash-verified

13 */
14export class ResponseHeadersPlugin<T extends ResponseHeadersPluginContext> implements StandardHandlerPlugin<T> {
15 init(options: StandardHandlerOptions<T>): void {
16 options.rootInterceptors ??= []
17
18 options.rootInterceptors.push(async (interceptorOptions) => {
19 const resHeaders = interceptorOptions.context.resHeaders ?? new Headers()
20
21 const result = await interceptorOptions.next({
22 ...interceptorOptions,
23 context: {
24 ...interceptorOptions.context,
25 resHeaders,
26 },
27 })
28
29 if (!result.matched) {
30 return result
31 }
32
33 const responseHeaders = clone(result.response.headers)
34
35 for (const [key, value] of resHeaders) {
36 if (Array.isArray(responseHeaders[key])) {
37 responseHeaders[key].push(value)
38 }
39 else if (responseHeaders[key] !== undefined) {
40 responseHeaders[key] = [responseHeaders[key], value]
41 }
42 else {
43 responseHeaders[key] = value
44 }
45 }
46
47 return {
48 ...result,
49 response: {
50 ...result.response,
51 headers: responseHeaders,
52 },
53 }
54 })
55 }
56}

Callers

nothing calls this directly

Calls 3

cloneFunction · 0.90
pushMethod · 0.80
nextMethod · 0.45

Tested by

no test coverage detected