@orpc/server 0.0.0-next.3ee2e95 → 0.0.0-next.3f23ae6

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.
Files changed (59) hide show
  1. package/README.md +17 -22
  2. package/dist/adapters/aws-lambda/index.d.mts +45 -0
  3. package/dist/adapters/aws-lambda/index.d.ts +45 -0
  4. package/dist/adapters/aws-lambda/index.mjs +41 -0
  5. package/dist/adapters/bun-ws/index.d.mts +35 -0
  6. package/dist/adapters/bun-ws/index.d.ts +35 -0
  7. package/dist/adapters/bun-ws/index.mjs +46 -0
  8. package/dist/adapters/crossws/index.d.mts +30 -0
  9. package/dist/adapters/crossws/index.d.ts +30 -0
  10. package/dist/adapters/crossws/index.mjs +46 -0
  11. package/dist/adapters/fetch/index.d.mts +28 -8
  12. package/dist/adapters/fetch/index.d.ts +28 -8
  13. package/dist/adapters/fetch/index.mjs +109 -8
  14. package/dist/adapters/message-port/index.d.mts +28 -0
  15. package/dist/adapters/message-port/index.d.ts +28 -0
  16. package/dist/adapters/message-port/index.mjs +41 -0
  17. package/dist/adapters/node/index.d.mts +28 -8
  18. package/dist/adapters/node/index.d.ts +28 -8
  19. package/dist/adapters/node/index.mjs +12 -9
  20. package/dist/adapters/standard/index.d.mts +4 -4
  21. package/dist/adapters/standard/index.d.ts +4 -4
  22. package/dist/adapters/standard/index.mjs +4 -3
  23. package/dist/adapters/websocket/index.d.mts +51 -0
  24. package/dist/adapters/websocket/index.d.ts +51 -0
  25. package/dist/adapters/websocket/index.mjs +69 -0
  26. package/dist/adapters/ws/index.d.mts +28 -0
  27. package/dist/adapters/ws/index.d.ts +28 -0
  28. package/dist/adapters/ws/index.mjs +39 -0
  29. package/dist/hibernation/index.d.mts +44 -0
  30. package/dist/hibernation/index.d.ts +44 -0
  31. package/dist/hibernation/index.mjs +65 -0
  32. package/dist/index.d.mts +555 -12
  33. package/dist/index.d.ts +555 -12
  34. package/dist/index.mjs +139 -14
  35. package/dist/plugins/index.d.mts +62 -30
  36. package/dist/plugins/index.d.ts +62 -30
  37. package/dist/plugins/index.mjs +24 -47
  38. package/dist/shared/{server.DfyOFejj.d.ts → server.-ACo36I0.d.ts} +18 -17
  39. package/dist/shared/server.BPAWobQg.d.ts +12 -0
  40. package/dist/shared/server.BW-nUGgA.mjs +36 -0
  41. package/dist/shared/server.Bd52nNaH.d.mts +12 -0
  42. package/dist/shared/{server.C56IpPNj.d.mts → server.BliFSTnG.d.mts} +2 -2
  43. package/dist/shared/{server.C78d5yfh.mjs → server.CHvOkcM3.mjs} +23 -10
  44. package/dist/shared/{server.DLt5njUb.d.mts → server.DD2C4ujN.d.mts} +57 -8
  45. package/dist/shared/{server.DLt5njUb.d.ts → server.DD2C4ujN.d.ts} +57 -8
  46. package/dist/shared/{server.C37gDhSZ.mjs → server.DG7Tamti.mjs} +3 -0
  47. package/dist/shared/{server.BVwwTHyO.mjs → server.DZ5BIITo.mjs} +1 -1
  48. package/dist/shared/{server.Dm5DEJl5.d.mts → server.Dq8xr7PQ.d.mts} +18 -17
  49. package/dist/shared/{server.DnuwaDJo.d.ts → server.IG2MjhrD.d.ts} +2 -2
  50. package/package.json +59 -20
  51. package/dist/adapters/hono/index.d.mts +0 -22
  52. package/dist/adapters/hono/index.d.ts +0 -22
  53. package/dist/adapters/hono/index.mjs +0 -32
  54. package/dist/adapters/next/index.d.mts +0 -29
  55. package/dist/adapters/next/index.d.ts +0 -29
  56. package/dist/adapters/next/index.mjs +0 -29
  57. package/dist/shared/server.CSIDw0mq.mjs +0 -106
  58. package/dist/shared/server.CyrwhzzU.d.ts +0 -8
  59. package/dist/shared/server.DgrNIRDf.d.mts +0 -8
@@ -0,0 +1,28 @@
1
+ import { MaybeOptionalOptions } from '@orpc/shared';
2
+ import { WebSocket } from 'ws';
3
+ import { C as Context, R as Router } from '../../shared/server.DD2C4ujN.js';
4
+ import { i as StandardHandler } from '../../shared/server.-ACo36I0.js';
5
+ import { F as FriendlyStandardHandleOptions } from '../../shared/server.IG2MjhrD.js';
6
+ import { S as StandardRPCHandlerOptions } from '../../shared/server.BPAWobQg.js';
7
+ import '@orpc/client';
8
+ import '@orpc/contract';
9
+ import '@orpc/standard-server';
10
+ import '@orpc/client/standard';
11
+
12
+ declare class experimental_WsHandler<T extends Context> {
13
+ private readonly standardHandler;
14
+ constructor(standardHandler: StandardHandler<T>);
15
+ upgrade(ws: Pick<WebSocket, 'addEventListener' | 'send'>, ...rest: MaybeOptionalOptions<Omit<FriendlyStandardHandleOptions<T>, 'prefix'>>): Promise<void>;
16
+ }
17
+
18
+ /**
19
+ * RPC Handler for ws (node ws) adapter
20
+ *
21
+ * @see {@link https://orpc.unnoq.com/docs/rpc-handler RPC Handler Docs}
22
+ * @see {@link https://orpc.unnoq.com/docs/adapters/websocket Websocket Adapter Docs}
23
+ */
24
+ declare class experimental_RPCHandler<T extends Context> extends experimental_WsHandler<T> {
25
+ constructor(router: Router<any, T>, options?: NoInfer<StandardRPCHandlerOptions<T>>);
26
+ }
27
+
28
+ export { experimental_RPCHandler, experimental_WsHandler };
@@ -0,0 +1,39 @@
1
+ import { resolveMaybeOptionalOptions } from '@orpc/shared';
2
+ import { ServerPeer } from '@orpc/standard-server-peer';
3
+ import { r as resolveFriendlyStandardHandleOptions } from '../../shared/server.DZ5BIITo.mjs';
4
+ import '@orpc/client';
5
+ import '@orpc/standard-server';
6
+ import '@orpc/contract';
7
+ import { b as StandardRPCHandler } from '../../shared/server.CHvOkcM3.mjs';
8
+ import '@orpc/client/standard';
9
+ import '../../shared/server.DG7Tamti.mjs';
10
+
11
+ class experimental_WsHandler {
12
+ constructor(standardHandler) {
13
+ this.standardHandler = standardHandler;
14
+ }
15
+ async upgrade(ws, ...rest) {
16
+ const peer = new ServerPeer(ws.send.bind(ws));
17
+ ws.addEventListener("message", async (event) => {
18
+ const message = Array.isArray(event.data) ? await new Blob(event.data).arrayBuffer() : event.data;
19
+ const [id, request] = await peer.message(message);
20
+ if (!request) {
21
+ return;
22
+ }
23
+ const options = resolveFriendlyStandardHandleOptions(resolveMaybeOptionalOptions(rest));
24
+ const { response } = await this.standardHandler.handle({ ...request, body: () => Promise.resolve(request.body) }, options);
25
+ await peer.response(id, response ?? { status: 404, headers: {}, body: "No procedure matched" });
26
+ });
27
+ ws.addEventListener("close", () => {
28
+ peer.close();
29
+ });
30
+ }
31
+ }
32
+
33
+ class experimental_RPCHandler extends experimental_WsHandler {
34
+ constructor(router, options = {}) {
35
+ super(new StandardRPCHandler(router, options));
36
+ }
37
+ }
38
+
39
+ export { experimental_RPCHandler, experimental_WsHandler };
@@ -0,0 +1,44 @@
1
+ import { StandardRPCJsonSerializerOptions } from '@orpc/client/standard';
2
+ import { a as StandardHandlerPlugin, b as StandardHandlerOptions } from '../shared/server.Dq8xr7PQ.mjs';
3
+ import { experimental_HibernationEventIterator } from '@orpc/standard-server';
4
+ export { experimental_HibernationEventIterator, experimental_HibernationEventIteratorCallback } from '@orpc/standard-server';
5
+ import { C as Context, R as Router } from '../shared/server.DD2C4ujN.mjs';
6
+ import '@orpc/client';
7
+ import '@orpc/contract';
8
+ import '@orpc/shared';
9
+
10
+ interface experimental_EncodeHibernationRPCEventOptions extends StandardRPCJsonSerializerOptions {
11
+ /**
12
+ * The type of event, each type corresponds a different operation
13
+ *
14
+ * - 'message' = 'yield'
15
+ * - 'error' = 'throw'
16
+ * - 'done' = 'return'
17
+ *
18
+ * @default 'message'
19
+ */
20
+ event?: 'message' | 'error' | 'done';
21
+ }
22
+ /**
23
+ * Encodes a Hibernation RPC Event
24
+ *
25
+ * @see {@link https://orpc.unnoq.com/docs/plugins/hibernation Hibernation Plugin}
26
+ */
27
+ declare function experimental_encodeHibernationRPCEvent(id: number, payload: unknown, options?: experimental_EncodeHibernationRPCEventOptions): string;
28
+
29
+ interface experimental_HibernationContext {
30
+ iterator?: experimental_HibernationEventIterator<any>;
31
+ }
32
+ /**
33
+ * Enable Hibernation APIs
34
+ *
35
+ * @see {@link https://orpc.unnoq.com/docs/plugins/hibernation Hibernation Plugin}
36
+ */
37
+ declare class experimental_HibernationPlugin<T extends Context> implements StandardHandlerPlugin<T> {
38
+ readonly HIBERNATION_CONTEXT_SYMBOL: symbol;
39
+ order: number;
40
+ init(options: StandardHandlerOptions<T>, _router: Router<any, T>): void;
41
+ }
42
+
43
+ export { experimental_HibernationPlugin, experimental_encodeHibernationRPCEvent };
44
+ export type { experimental_EncodeHibernationRPCEventOptions, experimental_HibernationContext };
@@ -0,0 +1,44 @@
1
+ import { StandardRPCJsonSerializerOptions } from '@orpc/client/standard';
2
+ import { a as StandardHandlerPlugin, b as StandardHandlerOptions } from '../shared/server.-ACo36I0.js';
3
+ import { experimental_HibernationEventIterator } from '@orpc/standard-server';
4
+ export { experimental_HibernationEventIterator, experimental_HibernationEventIteratorCallback } from '@orpc/standard-server';
5
+ import { C as Context, R as Router } from '../shared/server.DD2C4ujN.js';
6
+ import '@orpc/client';
7
+ import '@orpc/contract';
8
+ import '@orpc/shared';
9
+
10
+ interface experimental_EncodeHibernationRPCEventOptions extends StandardRPCJsonSerializerOptions {
11
+ /**
12
+ * The type of event, each type corresponds a different operation
13
+ *
14
+ * - 'message' = 'yield'
15
+ * - 'error' = 'throw'
16
+ * - 'done' = 'return'
17
+ *
18
+ * @default 'message'
19
+ */
20
+ event?: 'message' | 'error' | 'done';
21
+ }
22
+ /**
23
+ * Encodes a Hibernation RPC Event
24
+ *
25
+ * @see {@link https://orpc.unnoq.com/docs/plugins/hibernation Hibernation Plugin}
26
+ */
27
+ declare function experimental_encodeHibernationRPCEvent(id: number, payload: unknown, options?: experimental_EncodeHibernationRPCEventOptions): string;
28
+
29
+ interface experimental_HibernationContext {
30
+ iterator?: experimental_HibernationEventIterator<any>;
31
+ }
32
+ /**
33
+ * Enable Hibernation APIs
34
+ *
35
+ * @see {@link https://orpc.unnoq.com/docs/plugins/hibernation Hibernation Plugin}
36
+ */
37
+ declare class experimental_HibernationPlugin<T extends Context> implements StandardHandlerPlugin<T> {
38
+ readonly HIBERNATION_CONTEXT_SYMBOL: symbol;
39
+ order: number;
40
+ init(options: StandardHandlerOptions<T>, _router: Router<any, T>): void;
41
+ }
42
+
43
+ export { experimental_HibernationPlugin, experimental_encodeHibernationRPCEvent };
44
+ export type { experimental_EncodeHibernationRPCEventOptions, experimental_HibernationContext };
@@ -0,0 +1,65 @@
1
+ import { toORPCError } from '@orpc/client';
2
+ import { StandardRPCJsonSerializer } from '@orpc/client/standard';
3
+ import { stringifyJSON } from '@orpc/shared';
4
+ import { getEventMeta, experimental_HibernationEventIterator } from '@orpc/standard-server';
5
+ export { experimental_HibernationEventIterator } from '@orpc/standard-server';
6
+ import { MessageType } from '@orpc/standard-server-peer';
7
+
8
+ function experimental_encodeHibernationRPCEvent(id, payload, options = {}) {
9
+ const { event = "message", ...rest } = options;
10
+ const serializer = new StandardRPCJsonSerializer(rest);
11
+ const data = event === "error" ? toORPCError(payload).toJSON() : payload;
12
+ const [json, meta] = serializer.serialize(data);
13
+ return stringifyJSON({
14
+ i: id,
15
+ t: MessageType.EVENT_ITERATOR,
16
+ p: {
17
+ e: event,
18
+ d: { json, meta },
19
+ m: getEventMeta(payload)
20
+ }
21
+ });
22
+ }
23
+
24
+ class experimental_HibernationPlugin {
25
+ HIBERNATION_CONTEXT_SYMBOL = Symbol("HIBERNATION_CONTEXT");
26
+ order = 2e6;
27
+ // make sure execute after the batch plugin
28
+ init(options, _router) {
29
+ options.interceptors ??= [];
30
+ options.clientInterceptors ??= [];
31
+ options.interceptors.unshift(async (options2) => {
32
+ const hibernationContext = {};
33
+ const result = await options2.next({
34
+ ...options2,
35
+ context: {
36
+ [this.HIBERNATION_CONTEXT_SYMBOL]: hibernationContext,
37
+ ...options2.context
38
+ }
39
+ });
40
+ if (!result.matched || !hibernationContext.iterator) {
41
+ return result;
42
+ }
43
+ return {
44
+ ...result,
45
+ response: {
46
+ ...result.response,
47
+ body: hibernationContext.iterator
48
+ }
49
+ };
50
+ });
51
+ options.clientInterceptors.unshift(async (options2) => {
52
+ const hibernationContext = options2.context[this.HIBERNATION_CONTEXT_SYMBOL];
53
+ if (!hibernationContext) {
54
+ throw new TypeError("[HibernationPlugin] Hibernation context has been corrupted or modified by another plugin or interceptor");
55
+ }
56
+ const output = await options2.next();
57
+ if (output instanceof experimental_HibernationEventIterator) {
58
+ hibernationContext.iterator = output;
59
+ }
60
+ return output;
61
+ });
62
+ }
63
+ }
64
+
65
+ export { experimental_HibernationPlugin, experimental_encodeHibernationRPCEvent };