@orpc/server 1.14.9 → 1.14.11
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 +52 -98
- package/dist/adapters/crossws/index.d.mts +45 -21
- package/dist/adapters/crossws/index.d.ts +45 -21
- package/dist/adapters/crossws/index.mjs +40 -18
- package/dist/adapters/fetch/index.d.mts +64 -96
- package/dist/adapters/fetch/index.d.ts +64 -96
- package/dist/adapters/fetch/index.mjs +34 -139
- package/dist/adapters/message-port/index.d.mts +49 -34
- package/dist/adapters/message-port/index.d.ts +49 -34
- package/dist/adapters/message-port/index.mjs +68 -37
- package/dist/adapters/node/index.d.mts +63 -71
- package/dist/adapters/node/index.d.ts +63 -71
- package/dist/adapters/node/index.mjs +36 -113
- package/dist/adapters/standard/index.d.mts +16 -18
- package/dist/adapters/standard/index.d.ts +16 -18
- package/dist/adapters/standard/index.mjs +5 -5
- package/dist/adapters/standard-peer/index.d.mts +12 -14
- package/dist/adapters/standard-peer/index.d.ts +12 -14
- package/dist/adapters/standard-peer/index.mjs +2 -21
- package/dist/adapters/websocket/index.d.mts +53 -38
- package/dist/adapters/websocket/index.d.ts +53 -38
- package/dist/adapters/websocket/index.mjs +59 -42
- package/dist/extensions/callable.d.mts +10 -0
- package/dist/extensions/callable.d.ts +10 -0
- package/dist/extensions/callable.mjs +11 -0
- package/dist/helpers/index.d.mts +4 -4
- package/dist/helpers/index.d.ts +4 -4
- package/dist/helpers/index.mjs +13 -5
- package/dist/index.d.mts +166 -770
- package/dist/index.d.ts +166 -770
- package/dist/index.mjs +306 -399
- package/dist/plugins/index.d.mts +214 -121
- package/dist/plugins/index.d.ts +214 -121
- package/dist/plugins/index.mjs +576 -214
- package/dist/shared/server.15O7oC1p.d.mts +61 -0
- package/dist/shared/server.B4BnEWWm.d.mts +67 -0
- package/dist/shared/server.BhsVw7m7.d.ts +104 -0
- package/dist/shared/server.BoiFpNT7.mjs +224 -0
- package/dist/shared/server.COPVXhDG.mjs +271 -0
- package/dist/shared/server.CX4vUnDk.mjs +11 -0
- package/dist/shared/server.CcR4kgje.d.mts +206 -0
- package/dist/shared/server.CcR4kgje.d.ts +206 -0
- package/dist/shared/server.CnN50DHH.d.ts +67 -0
- package/dist/shared/server.DBs0rrf9.mjs +41 -0
- package/dist/shared/server.DDFizwfU.d.mts +104 -0
- package/dist/shared/server.D_QauotT.mjs +30 -0
- package/dist/shared/server.DofEOwf-.mjs +237 -0
- package/dist/shared/{server.DZ5BIITo.mjs → server.W91HSRkE.mjs} +2 -2
- package/dist/shared/server.m3szVJGU.d.ts +61 -0
- package/package.json +26 -56
- package/dist/adapters/aws-lambda/index.d.mts +0 -46
- package/dist/adapters/aws-lambda/index.d.ts +0 -46
- package/dist/adapters/aws-lambda/index.mjs +0 -40
- package/dist/adapters/bun-ws/index.d.mts +0 -36
- package/dist/adapters/bun-ws/index.d.ts +0 -36
- package/dist/adapters/bun-ws/index.mjs +0 -47
- package/dist/adapters/fastify/index.d.mts +0 -53
- package/dist/adapters/fastify/index.d.ts +0 -53
- package/dist/adapters/fastify/index.mjs +0 -52
- package/dist/adapters/ws/index.d.mts +0 -31
- package/dist/adapters/ws/index.d.ts +0 -31
- package/dist/adapters/ws/index.mjs +0 -41
- package/dist/hibernation/index.d.mts +0 -44
- package/dist/hibernation/index.d.ts +0 -44
- package/dist/hibernation/index.mjs +0 -65
- package/dist/shared/server.7cEtMB30.d.ts +0 -74
- package/dist/shared/server.B8gYOD5g.d.mts +0 -12
- package/dist/shared/server.BqadksTP.d.mts +0 -74
- package/dist/shared/server.C8_sRzQB.d.mts +0 -42
- package/dist/shared/server.ChUyt5-i.d.mts +0 -32
- package/dist/shared/server.ChyoA9XY.d.ts +0 -42
- package/dist/shared/server.DEBcqOjg.mjs +0 -418
- package/dist/shared/server.EfTOZ2Q7.d.ts +0 -12
- package/dist/shared/server.TEVCLCFC.mjs +0 -39
- package/dist/shared/server.ZxHCEN1h.mjs +0 -226
- package/dist/shared/server.qKsRrdxW.d.mts +0 -193
- package/dist/shared/server.qKsRrdxW.d.ts +0 -193
- package/dist/shared/server.yoEB3Fx4.d.ts +0 -32
|
@@ -1,56 +1,71 @@
|
|
|
1
1
|
import { SupportedMessagePort } from '@orpc/client/message-port';
|
|
2
2
|
import { Value, Promisable, MaybeOptionalOptions } from '@orpc/shared';
|
|
3
|
-
import {
|
|
4
|
-
import { C as Context
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
3
|
+
import { ServerPeer, EncodePeerMessageOptions, DecodePeerMessageOptions } from '@standardserver/peer';
|
|
4
|
+
import { C as Context } from '../../shared/server.CcR4kgje.mjs';
|
|
5
|
+
import { S as StandardHandler, a as StandardHandlerOptions } from '../../shared/server.DDFizwfU.mjs';
|
|
6
|
+
import { StandardPeerRequestHandlerOptions } from '../standard-peer/index.mjs';
|
|
7
|
+
import { R as Router } from '../../shared/server.15O7oC1p.mjs';
|
|
8
|
+
import { R as RPCHandlerCodecOptions } from '../../shared/server.B4BnEWWm.mjs';
|
|
8
9
|
import '@orpc/client';
|
|
9
10
|
import '@orpc/contract';
|
|
10
|
-
import '@
|
|
11
|
-
import '../../shared/server.B8gYOD5g.mjs';
|
|
12
|
-
import '@orpc/client/standard';
|
|
13
|
-
import '../../shared/server.C8_sRzQB.mjs';
|
|
11
|
+
import '@standardserver/core';
|
|
14
12
|
|
|
13
|
+
type DecodedResponseMessage = ConstructorParameters<typeof ServerPeer>[0] extends (message: infer TMessage) => unknown ? TMessage : never;
|
|
15
14
|
interface MessagePortHandlerOptions<_T extends Context> {
|
|
16
15
|
/**
|
|
17
|
-
* By default, oRPC
|
|
18
|
-
*
|
|
19
|
-
*
|
|
16
|
+
* By default, oRPC encodes peer messages as strings or binary data before sending them over the message port.
|
|
17
|
+
* Use this option to bypass encoding and leverage the full capabilities of the
|
|
18
|
+
* [MessagePort: postMessage() method](https://developer.mozilla.org/en-US/docs/Web/API/MessagePort/postMessage),
|
|
19
|
+
* such as transferring object ownership or supporting non-serializable objects like `OffscreenCanvas` or improving performance.
|
|
20
20
|
*
|
|
21
21
|
* @remarks
|
|
22
|
-
* -
|
|
22
|
+
* - Returning `null` or `undefined` disables this feature.
|
|
23
23
|
*
|
|
24
|
-
* @warning
|
|
25
|
-
* @example
|
|
26
|
-
* ```ts
|
|
27
|
-
* experimental_transfer: (message, port) => {
|
|
28
|
-
* const transfer = deepFindTransferableObjects(message) // implement your own logic
|
|
29
|
-
* return transfer.length ? transfer : null // only enable when needed
|
|
30
|
-
* }
|
|
31
|
-
* ```
|
|
32
|
-
*
|
|
33
|
-
* @see {@link https://orpc.dev/docs/adapters/message-port#transfer Message Port Transfer Docs}
|
|
24
|
+
* @warning Ensure your message port implementation supports `transferable` objects before enabling this.
|
|
34
25
|
*/
|
|
35
26
|
experimental_transfer?: Value<Promisable<object[] | null | undefined>, [message: DecodedResponseMessage, port: SupportedMessagePort]>;
|
|
27
|
+
/**
|
|
28
|
+
* Options for encoding peer messages. such as `prefix` for distinguishing messages on the same channel..
|
|
29
|
+
*/
|
|
30
|
+
encodePeerMessage?: EncodePeerMessageOptions | undefined;
|
|
31
|
+
/**
|
|
32
|
+
* Options for decoding peer messages. such as `prefix` for distinguishing messages on the same channel..
|
|
33
|
+
*/
|
|
34
|
+
decodePeerMessage?: DecodePeerMessageOptions | undefined;
|
|
36
35
|
}
|
|
37
36
|
declare class MessagePortHandler<T extends Context> {
|
|
38
|
-
private readonly
|
|
37
|
+
private readonly handler;
|
|
38
|
+
private readonly peers;
|
|
39
39
|
private readonly transfer;
|
|
40
|
-
|
|
41
|
-
|
|
40
|
+
private readonly encodePeerMessageOptions;
|
|
41
|
+
private readonly decodePeerMessageOptions;
|
|
42
|
+
constructor(handler: StandardHandler<T>, options?: NoInfer<MessagePortHandlerOptions<T>>);
|
|
43
|
+
/**
|
|
44
|
+
* Attaches message and close listeners to a message port.
|
|
45
|
+
*
|
|
46
|
+
* Prefer this over calling `.message()` and `.close()` manually.
|
|
47
|
+
*/
|
|
48
|
+
upgrade(port: SupportedMessagePort, ...rest: MaybeOptionalOptions<StandardPeerRequestHandlerOptions<T>>): void;
|
|
49
|
+
/**
|
|
50
|
+
* Handles a single message received from a message port.
|
|
51
|
+
*
|
|
52
|
+
* @param port The message port instance. Use the same instance for all messages.
|
|
53
|
+
*/
|
|
54
|
+
message(port: SupportedMessagePort, data: unknown, ...rest: MaybeOptionalOptions<StandardPeerRequestHandlerOptions<T>>): Promise<{
|
|
55
|
+
matched: boolean;
|
|
56
|
+
}>;
|
|
57
|
+
/**
|
|
58
|
+
* Cleans up peer state for a closed message port.
|
|
59
|
+
*
|
|
60
|
+
* @param port The same message port instance passed to `.message()`.
|
|
61
|
+
*/
|
|
62
|
+
close(port: SupportedMessagePort): Promise<void>;
|
|
42
63
|
}
|
|
43
64
|
|
|
44
|
-
interface RPCHandlerOptions<T extends Context> extends
|
|
65
|
+
interface RPCHandlerOptions<T extends Context> extends StandardHandlerOptions<T>, RPCHandlerCodecOptions<T>, MessagePortHandlerOptions<T> {
|
|
45
66
|
}
|
|
46
|
-
/**
|
|
47
|
-
* RPC Handler for common message port implementations.
|
|
48
|
-
*
|
|
49
|
-
* @see {@link https://orpc.dev/docs/rpc-handler RPC Handler Docs}
|
|
50
|
-
* @see {@link https://orpc.dev/docs/adapters/message-port Message Port Adapter Docs}
|
|
51
|
-
*/
|
|
52
67
|
declare class RPCHandler<T extends Context> extends MessagePortHandler<T> {
|
|
53
|
-
constructor(router: Router<
|
|
68
|
+
constructor(router: Router<T>, options?: NoInfer<RPCHandlerOptions<T>>);
|
|
54
69
|
}
|
|
55
70
|
|
|
56
71
|
export { MessagePortHandler, RPCHandler };
|
|
@@ -1,56 +1,71 @@
|
|
|
1
1
|
import { SupportedMessagePort } from '@orpc/client/message-port';
|
|
2
2
|
import { Value, Promisable, MaybeOptionalOptions } from '@orpc/shared';
|
|
3
|
-
import {
|
|
4
|
-
import { C as Context
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
3
|
+
import { ServerPeer, EncodePeerMessageOptions, DecodePeerMessageOptions } from '@standardserver/peer';
|
|
4
|
+
import { C as Context } from '../../shared/server.CcR4kgje.js';
|
|
5
|
+
import { S as StandardHandler, a as StandardHandlerOptions } from '../../shared/server.BhsVw7m7.js';
|
|
6
|
+
import { StandardPeerRequestHandlerOptions } from '../standard-peer/index.js';
|
|
7
|
+
import { R as Router } from '../../shared/server.m3szVJGU.js';
|
|
8
|
+
import { R as RPCHandlerCodecOptions } from '../../shared/server.CnN50DHH.js';
|
|
8
9
|
import '@orpc/client';
|
|
9
10
|
import '@orpc/contract';
|
|
10
|
-
import '@
|
|
11
|
-
import '../../shared/server.EfTOZ2Q7.js';
|
|
12
|
-
import '@orpc/client/standard';
|
|
13
|
-
import '../../shared/server.ChyoA9XY.js';
|
|
11
|
+
import '@standardserver/core';
|
|
14
12
|
|
|
13
|
+
type DecodedResponseMessage = ConstructorParameters<typeof ServerPeer>[0] extends (message: infer TMessage) => unknown ? TMessage : never;
|
|
15
14
|
interface MessagePortHandlerOptions<_T extends Context> {
|
|
16
15
|
/**
|
|
17
|
-
* By default, oRPC
|
|
18
|
-
*
|
|
19
|
-
*
|
|
16
|
+
* By default, oRPC encodes peer messages as strings or binary data before sending them over the message port.
|
|
17
|
+
* Use this option to bypass encoding and leverage the full capabilities of the
|
|
18
|
+
* [MessagePort: postMessage() method](https://developer.mozilla.org/en-US/docs/Web/API/MessagePort/postMessage),
|
|
19
|
+
* such as transferring object ownership or supporting non-serializable objects like `OffscreenCanvas` or improving performance.
|
|
20
20
|
*
|
|
21
21
|
* @remarks
|
|
22
|
-
* -
|
|
22
|
+
* - Returning `null` or `undefined` disables this feature.
|
|
23
23
|
*
|
|
24
|
-
* @warning
|
|
25
|
-
* @example
|
|
26
|
-
* ```ts
|
|
27
|
-
* experimental_transfer: (message, port) => {
|
|
28
|
-
* const transfer = deepFindTransferableObjects(message) // implement your own logic
|
|
29
|
-
* return transfer.length ? transfer : null // only enable when needed
|
|
30
|
-
* }
|
|
31
|
-
* ```
|
|
32
|
-
*
|
|
33
|
-
* @see {@link https://orpc.dev/docs/adapters/message-port#transfer Message Port Transfer Docs}
|
|
24
|
+
* @warning Ensure your message port implementation supports `transferable` objects before enabling this.
|
|
34
25
|
*/
|
|
35
26
|
experimental_transfer?: Value<Promisable<object[] | null | undefined>, [message: DecodedResponseMessage, port: SupportedMessagePort]>;
|
|
27
|
+
/**
|
|
28
|
+
* Options for encoding peer messages. such as `prefix` for distinguishing messages on the same channel..
|
|
29
|
+
*/
|
|
30
|
+
encodePeerMessage?: EncodePeerMessageOptions | undefined;
|
|
31
|
+
/**
|
|
32
|
+
* Options for decoding peer messages. such as `prefix` for distinguishing messages on the same channel..
|
|
33
|
+
*/
|
|
34
|
+
decodePeerMessage?: DecodePeerMessageOptions | undefined;
|
|
36
35
|
}
|
|
37
36
|
declare class MessagePortHandler<T extends Context> {
|
|
38
|
-
private readonly
|
|
37
|
+
private readonly handler;
|
|
38
|
+
private readonly peers;
|
|
39
39
|
private readonly transfer;
|
|
40
|
-
|
|
41
|
-
|
|
40
|
+
private readonly encodePeerMessageOptions;
|
|
41
|
+
private readonly decodePeerMessageOptions;
|
|
42
|
+
constructor(handler: StandardHandler<T>, options?: NoInfer<MessagePortHandlerOptions<T>>);
|
|
43
|
+
/**
|
|
44
|
+
* Attaches message and close listeners to a message port.
|
|
45
|
+
*
|
|
46
|
+
* Prefer this over calling `.message()` and `.close()` manually.
|
|
47
|
+
*/
|
|
48
|
+
upgrade(port: SupportedMessagePort, ...rest: MaybeOptionalOptions<StandardPeerRequestHandlerOptions<T>>): void;
|
|
49
|
+
/**
|
|
50
|
+
* Handles a single message received from a message port.
|
|
51
|
+
*
|
|
52
|
+
* @param port The message port instance. Use the same instance for all messages.
|
|
53
|
+
*/
|
|
54
|
+
message(port: SupportedMessagePort, data: unknown, ...rest: MaybeOptionalOptions<StandardPeerRequestHandlerOptions<T>>): Promise<{
|
|
55
|
+
matched: boolean;
|
|
56
|
+
}>;
|
|
57
|
+
/**
|
|
58
|
+
* Cleans up peer state for a closed message port.
|
|
59
|
+
*
|
|
60
|
+
* @param port The same message port instance passed to `.message()`.
|
|
61
|
+
*/
|
|
62
|
+
close(port: SupportedMessagePort): Promise<void>;
|
|
42
63
|
}
|
|
43
64
|
|
|
44
|
-
interface RPCHandlerOptions<T extends Context> extends
|
|
65
|
+
interface RPCHandlerOptions<T extends Context> extends StandardHandlerOptions<T>, RPCHandlerCodecOptions<T>, MessagePortHandlerOptions<T> {
|
|
45
66
|
}
|
|
46
|
-
/**
|
|
47
|
-
* RPC Handler for common message port implementations.
|
|
48
|
-
*
|
|
49
|
-
* @see {@link https://orpc.dev/docs/rpc-handler RPC Handler Docs}
|
|
50
|
-
* @see {@link https://orpc.dev/docs/adapters/message-port Message Port Adapter Docs}
|
|
51
|
-
*/
|
|
52
67
|
declare class RPCHandler<T extends Context> extends MessagePortHandler<T> {
|
|
53
|
-
constructor(router: Router<
|
|
68
|
+
constructor(router: Router<T>, options?: NoInfer<RPCHandlerOptions<T>>);
|
|
54
69
|
}
|
|
55
70
|
|
|
56
71
|
export { MessagePortHandler, RPCHandler };
|
|
@@ -1,54 +1,85 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { value, resolveMaybeOptionalOptions
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import '../../shared/server.DZ5BIITo.mjs';
|
|
7
|
-
import '@orpc/client/standard';
|
|
1
|
+
import { onMessagePortMessage, onMessagePortClose, postMessagePortMessage } from '@orpc/client/message-port';
|
|
2
|
+
import { value, resolveMaybeOptionalOptions } from '@orpc/shared';
|
|
3
|
+
import { ServerPeer, encodePeerMessage, decodePeerMessage, isClientPeerSendMessage, isPeerMessage } from '@standardserver/peer';
|
|
4
|
+
import { c as createStandardPeerRequestHandler } from '../../shared/server.CX4vUnDk.mjs';
|
|
5
|
+
import { R as RPCHandlerCodec, S as StandardHandler } from '../../shared/server.COPVXhDG.mjs';
|
|
8
6
|
import '@orpc/client';
|
|
9
|
-
import '@
|
|
10
|
-
import '../../shared/server.
|
|
7
|
+
import '@standardserver/core';
|
|
8
|
+
import '../../shared/server.DofEOwf-.mjs';
|
|
11
9
|
import '@orpc/contract';
|
|
10
|
+
import '../../shared/server.BoiFpNT7.mjs';
|
|
12
11
|
|
|
13
12
|
class MessagePortHandler {
|
|
14
|
-
constructor(
|
|
15
|
-
this.
|
|
13
|
+
constructor(handler, options = {}) {
|
|
14
|
+
this.handler = handler;
|
|
16
15
|
this.transfer = options.experimental_transfer;
|
|
16
|
+
this.encodePeerMessageOptions = options.encodePeerMessage;
|
|
17
|
+
this.decodePeerMessageOptions = options.decodePeerMessage;
|
|
17
18
|
}
|
|
19
|
+
peers = /* @__PURE__ */ new WeakMap();
|
|
18
20
|
transfer;
|
|
21
|
+
encodePeerMessageOptions;
|
|
22
|
+
decodePeerMessageOptions;
|
|
23
|
+
/**
|
|
24
|
+
* Attaches message and close listeners to a message port.
|
|
25
|
+
*
|
|
26
|
+
* Prefer this over calling `.message()` and `.close()` manually.
|
|
27
|
+
*/
|
|
19
28
|
upgrade(port, ...rest) {
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
await
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
29
|
+
onMessagePortMessage(port, (message) => this.message(port, message, ...rest));
|
|
30
|
+
onMessagePortClose(port, () => this.close(port));
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Handles a single message received from a message port.
|
|
34
|
+
*
|
|
35
|
+
* @param port The message port instance. Use the same instance for all messages.
|
|
36
|
+
*/
|
|
37
|
+
async message(port, data, ...rest) {
|
|
38
|
+
let peer = this.peers.get(port);
|
|
39
|
+
if (!peer) {
|
|
40
|
+
this.peers.set(port, peer = new ServerPeer(async (message) => {
|
|
41
|
+
const transfer = await value(this.transfer, message, port);
|
|
42
|
+
if (transfer) {
|
|
43
|
+
postMessagePortMessage(port, message, transfer);
|
|
44
|
+
} else {
|
|
45
|
+
postMessagePortMessage(port, await encodePeerMessage(message, this.encodePeerMessageOptions));
|
|
46
|
+
}
|
|
47
|
+
}));
|
|
48
|
+
}
|
|
49
|
+
let peerMessage;
|
|
50
|
+
if (typeof data === "string" || data instanceof Uint8Array) {
|
|
51
|
+
const result = decodePeerMessage(data, this.decodePeerMessageOptions);
|
|
52
|
+
if (result.matched && isClientPeerSendMessage(result.message)) {
|
|
53
|
+
peerMessage = result.message;
|
|
41
54
|
}
|
|
42
|
-
})
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
55
|
+
} else if (isPeerMessage(data) && isClientPeerSendMessage(data)) {
|
|
56
|
+
peerMessage = data;
|
|
57
|
+
}
|
|
58
|
+
if (peerMessage === void 0) {
|
|
59
|
+
return { matched: false };
|
|
60
|
+
}
|
|
61
|
+
await peer.message(peerMessage, createStandardPeerRequestHandler(this.handler, resolveMaybeOptionalOptions(rest)));
|
|
62
|
+
return { matched: true };
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Cleans up peer state for a closed message port.
|
|
66
|
+
*
|
|
67
|
+
* @param port The same message port instance passed to `.message()`.
|
|
68
|
+
*/
|
|
69
|
+
async close(port) {
|
|
70
|
+
const peer = this.peers.get(port);
|
|
71
|
+
if (peer) {
|
|
72
|
+
this.peers.delete(port);
|
|
73
|
+
await peer.close();
|
|
74
|
+
}
|
|
46
75
|
}
|
|
47
76
|
}
|
|
48
77
|
|
|
49
78
|
class RPCHandler extends MessagePortHandler {
|
|
50
79
|
constructor(router, options = {}) {
|
|
51
|
-
|
|
80
|
+
const codec = new RPCHandlerCodec(router, options);
|
|
81
|
+
const handler = new StandardHandler(codec, options);
|
|
82
|
+
super(handler, options);
|
|
52
83
|
}
|
|
53
84
|
}
|
|
54
85
|
|
|
@@ -1,99 +1,91 @@
|
|
|
1
|
-
import { C as Context, R as Router } from '../../shared/server.qKsRrdxW.mjs';
|
|
2
1
|
import { Interceptor, MaybeOptionalOptions } from '@orpc/shared';
|
|
3
|
-
import { SendStandardResponseOptions, NodeHttpRequest, NodeHttpResponse } from '@
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import
|
|
7
|
-
import {
|
|
2
|
+
import { SendStandardResponseOptions, NodeHttpRequest, NodeHttpResponse } from '@standardserver/node';
|
|
3
|
+
import { C as Context } from '../../shared/server.CcR4kgje.mjs';
|
|
4
|
+
import { e as StandardHandlerPlugin, b as StandardHandlerHandleOptions, S as StandardHandler, a as StandardHandlerOptions } from '../../shared/server.DDFizwfU.mjs';
|
|
5
|
+
import { FriendlyStandardHandlerHandleOptions } from '../standard/index.mjs';
|
|
6
|
+
import { R as Router } from '../../shared/server.15O7oC1p.mjs';
|
|
7
|
+
import { R as RPCHandlerCodecOptions } from '../../shared/server.B4BnEWWm.mjs';
|
|
8
8
|
import '@orpc/client';
|
|
9
9
|
import '@orpc/contract';
|
|
10
|
-
import '@
|
|
11
|
-
import '@orpc/client/standard';
|
|
12
|
-
import '../../shared/server.C8_sRzQB.mjs';
|
|
10
|
+
import '@standardserver/core';
|
|
13
11
|
|
|
14
12
|
interface NodeHttpHandlerPlugin<T extends Context> extends StandardHandlerPlugin<T> {
|
|
15
|
-
|
|
13
|
+
/**
|
|
14
|
+
* Initializes the plugin and returns new node HTTP handler options.
|
|
15
|
+
* Called once per plugin instance during composition.
|
|
16
|
+
*
|
|
17
|
+
* This method allows plugins to wrap, extend, or transform node HTTP handler options
|
|
18
|
+
* such as interceptors, or other configuration.
|
|
19
|
+
*
|
|
20
|
+
* @param options - The current handler options from previous plugins or base configuration
|
|
21
|
+
* @returns Transformed handler options with plugin's modifications applied
|
|
22
|
+
*
|
|
23
|
+
* @example
|
|
24
|
+
* ```ts
|
|
25
|
+
* initNodeHttpHandlerOptions(options) {
|
|
26
|
+
* return {
|
|
27
|
+
* ...options,
|
|
28
|
+
* nodeHttpInterceptors: [...(options.nodeHttpInterceptors || []), myInterceptor]
|
|
29
|
+
* }
|
|
30
|
+
* }
|
|
31
|
+
* ```
|
|
32
|
+
*/
|
|
33
|
+
initNodeHttpHandlerOptions?(options: NodeHttpHandlerOptions<T>): NodeHttpHandlerOptions<T>;
|
|
16
34
|
}
|
|
17
|
-
declare class CompositeNodeHttpHandlerPlugin<T extends Context
|
|
18
|
-
|
|
35
|
+
declare class CompositeNodeHttpHandlerPlugin<T extends Context> implements NodeHttpHandlerPlugin<T> {
|
|
36
|
+
readonly name = "~composite/node-http-handler";
|
|
37
|
+
protected readonly plugins: NodeHttpHandlerPlugin<T>[];
|
|
38
|
+
constructor(plugins?: NodeHttpHandlerPlugin<T>[]);
|
|
39
|
+
initNodeHttpHandlerOptions(options: NodeHttpHandlerOptions<T>): NodeHttpHandlerOptions<T>;
|
|
19
40
|
}
|
|
20
41
|
|
|
21
|
-
type
|
|
42
|
+
type NodeHttpHandlerHandleResult = {
|
|
22
43
|
matched: true;
|
|
23
44
|
} | {
|
|
24
45
|
matched: false;
|
|
25
46
|
};
|
|
26
|
-
interface
|
|
47
|
+
interface NodeHttpHandlerNodeHttpInterceptorOptions<T extends Context> extends StandardHandlerHandleOptions<T> {
|
|
27
48
|
request: NodeHttpRequest;
|
|
28
49
|
response: NodeHttpResponse;
|
|
29
|
-
sendStandardResponseOptions: SendStandardResponseOptions;
|
|
30
|
-
}
|
|
31
|
-
interface NodeHttpHandlerOptions<T extends Context> extends SendStandardResponseOptions {
|
|
32
|
-
adapterInterceptors?: Interceptor<NodeHttpHandlerInterceptorOptions<T>, Promise<NodeHttpHandleResult>>[];
|
|
33
|
-
plugins?: NodeHttpHandlerPlugin<T>[];
|
|
34
|
-
}
|
|
35
|
-
declare class NodeHttpHandler<T extends Context> {
|
|
36
|
-
private readonly standardHandler;
|
|
37
|
-
private readonly sendStandardResponseOptions;
|
|
38
|
-
private readonly adapterInterceptors;
|
|
39
|
-
constructor(standardHandler: StandardHandler<T>, options?: NoInfer<NodeHttpHandlerOptions<T>>);
|
|
40
|
-
handle(request: NodeHttpRequest, response: NodeHttpResponse, ...rest: MaybeOptionalOptions<FriendlyStandardHandleOptions<T>>): Promise<NodeHttpHandleResult>;
|
|
50
|
+
sendStandardResponseOptions: SendStandardResponseOptions | undefined;
|
|
41
51
|
}
|
|
42
|
-
|
|
43
|
-
interface
|
|
52
|
+
type NodeHttpHandlerNodeHttpInterceptor<T extends Context> = Interceptor<NodeHttpHandlerNodeHttpInterceptorOptions<T>, Promise<NodeHttpHandlerHandleResult>>;
|
|
53
|
+
interface NodeHttpHandlerOptions<T extends Context> {
|
|
44
54
|
/**
|
|
45
|
-
*
|
|
55
|
+
* Custom options for `sendStandardResponse`, used to send a `Standard Response`
|
|
46
56
|
*/
|
|
47
|
-
|
|
48
|
-
}
|
|
49
|
-
/**
|
|
50
|
-
* The Body Limit Plugin restricts the size of the request body for the Node.js HTTP Server.
|
|
51
|
-
*
|
|
52
|
-
* @see {@link https://orpc.dev/docs/plugins/body-limit Body Limit Plugin Docs}
|
|
53
|
-
*/
|
|
54
|
-
declare class BodyLimitPlugin<T extends Context> implements NodeHttpHandlerPlugin<T> {
|
|
55
|
-
private readonly maxBodySize;
|
|
56
|
-
constructor(options: BodyLimitPluginOptions);
|
|
57
|
-
initRuntimeAdapter(options: NodeHttpHandlerOptions<T>): void;
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
interface CompressionPluginOptions extends compression.CompressionOptions {
|
|
57
|
+
sendStandardResponse?: SendStandardResponseOptions | undefined;
|
|
61
58
|
/**
|
|
62
|
-
*
|
|
63
|
-
*
|
|
64
|
-
* @warning [Event Iterator](https://orpc.dev/docs/event-iterator) responses are never compressed, regardless of this filter's return value.
|
|
65
|
-
* @default only responses with compressible content types are compressed.
|
|
59
|
+
* Interceptors that run before the mapping between the Standard API and Node HTTP API,
|
|
60
|
+
* useful for extending Node HTTP request/response before handling, ...
|
|
66
61
|
*/
|
|
67
|
-
|
|
62
|
+
nodeHttpInterceptors?: NodeHttpHandlerNodeHttpInterceptor<T>[] | undefined;
|
|
63
|
+
plugins?: NodeHttpHandlerPlugin<T>[] | undefined;
|
|
68
64
|
}
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
private readonly compressionHandler;
|
|
76
|
-
constructor(options?: CompressionPluginOptions);
|
|
77
|
-
initRuntimeAdapter(options: NodeHttpHandlerOptions<T>): void;
|
|
65
|
+
declare class NodeHttpHandler<T extends Context> {
|
|
66
|
+
private readonly standardHandler;
|
|
67
|
+
private readonly sendStandardResponseOptions;
|
|
68
|
+
private readonly nodeHttpInterceptors;
|
|
69
|
+
constructor(standardHandler: StandardHandler<T>, options?: NoInfer<NodeHttpHandlerOptions<T>>);
|
|
70
|
+
handle(request: NodeHttpRequest, response: NodeHttpResponse, ...rest: MaybeOptionalOptions<FriendlyStandardHandlerHandleOptions<T>>): Promise<NodeHttpHandlerHandleResult>;
|
|
78
71
|
}
|
|
79
72
|
|
|
80
|
-
interface RPCHandlerOptions<T extends Context> extends NodeHttpHandlerOptions<T>, Omit<
|
|
73
|
+
interface RPCHandlerOptions<T extends Context> extends NodeHttpHandlerOptions<T>, Omit<StandardHandlerOptions<T>, 'plugins'>, RPCHandlerCodecOptions<T> {
|
|
81
74
|
/**
|
|
82
|
-
*
|
|
83
|
-
*
|
|
84
|
-
* @default true
|
|
75
|
+
* Configuration for {@link CSRFGuardHandlerPlugin}, which is enabled by default for `RPCHandler` over HTTP.
|
|
85
76
|
*/
|
|
86
|
-
|
|
77
|
+
csrfGuardPlugin?: {
|
|
78
|
+
/**
|
|
79
|
+
* If `false`, this plugin is disabled.
|
|
80
|
+
*
|
|
81
|
+
* @default true
|
|
82
|
+
*/
|
|
83
|
+
enabled?: boolean;
|
|
84
|
+
};
|
|
87
85
|
}
|
|
88
|
-
/**
|
|
89
|
-
* RPC Handler for Node.js HTTP Server
|
|
90
|
-
*
|
|
91
|
-
* @see {@link https://orpc.dev/docs/rpc-handler RPC Handler Docs}
|
|
92
|
-
* @see {@link https://orpc.dev/docs/adapters/http HTTP Adapter Docs}
|
|
93
|
-
*/
|
|
94
86
|
declare class RPCHandler<T extends Context> extends NodeHttpHandler<T> {
|
|
95
|
-
constructor(router: Router<
|
|
87
|
+
constructor(router: Router<T>, options?: NoInfer<RPCHandlerOptions<T>>);
|
|
96
88
|
}
|
|
97
89
|
|
|
98
|
-
export {
|
|
99
|
-
export type {
|
|
90
|
+
export { CompositeNodeHttpHandlerPlugin, NodeHttpHandler, RPCHandler };
|
|
91
|
+
export type { NodeHttpHandlerHandleResult, NodeHttpHandlerNodeHttpInterceptor, NodeHttpHandlerNodeHttpInterceptorOptions, NodeHttpHandlerOptions, NodeHttpHandlerPlugin, RPCHandlerOptions };
|