@orpc/server 0.39.0 → 0.40.0
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/{chunk-N2FJGXSJ.js → chunk-L4ESXQX7.js} +2 -2
- package/dist/{chunk-DAUWED3D.js → chunk-NXEANHUK.js} +47 -15
- package/dist/{chunk-XP6YRLY2.js → chunk-XXBE6CYD.js} +3 -2
- package/dist/fetch.js +3 -3
- package/dist/hono.js +3 -3
- package/dist/index.js +15 -7
- package/dist/next.js +3 -3
- package/dist/node.js +2 -2
- package/dist/src/adapters/standard/rpc-serializer.d.ts +7 -1
- package/dist/src/context.d.ts +0 -1
- package/dist/src/index.d.ts +2 -1
- package/dist/src/middleware.d.ts +1 -0
- package/dist/src/procedure-client.d.ts +1 -0
- package/dist/src/procedure.d.ts +3 -2
- package/dist/standard.js +2 -2
- package/package.json +6 -7
@@ -2,7 +2,7 @@ import {
|
|
2
2
|
RPCCodec,
|
3
3
|
RPCMatcher,
|
4
4
|
StandardHandler
|
5
|
-
} from "./chunk-
|
5
|
+
} from "./chunk-NXEANHUK.js";
|
6
6
|
|
7
7
|
// src/adapters/fetch/rpc-handler.ts
|
8
8
|
import { toFetchResponse, toStandardRequest } from "@orpc/server-standard-fetch";
|
@@ -29,4 +29,4 @@ var RPCHandler = class {
|
|
29
29
|
export {
|
30
30
|
RPCHandler
|
31
31
|
};
|
32
|
-
//# sourceMappingURL=chunk-
|
32
|
+
//# sourceMappingURL=chunk-L4ESXQX7.js.map
|
@@ -6,13 +6,13 @@ import {
|
|
6
6
|
getRouterChild,
|
7
7
|
isProcedure,
|
8
8
|
unlazy
|
9
|
-
} from "./chunk-
|
9
|
+
} from "./chunk-XXBE6CYD.js";
|
10
10
|
import {
|
11
11
|
CompositePlugin
|
12
12
|
} from "./chunk-XI6WGCB3.js";
|
13
13
|
|
14
14
|
// src/adapters/standard/handler.ts
|
15
|
-
import { toORPCError } from "@orpc/contract";
|
15
|
+
import { ORPCError, toORPCError } from "@orpc/contract";
|
16
16
|
import { intercept, trim } from "@orpc/shared";
|
17
17
|
var StandardHandler = class {
|
18
18
|
constructor(router, matcher, codec, options = {}) {
|
@@ -34,6 +34,7 @@ var StandardHandler = class {
|
|
34
34
|
// context is optional only when all fields are optional so we can safely force it to have a context
|
35
35
|
},
|
36
36
|
async (interceptorOptions) => {
|
37
|
+
let isDecoding = false;
|
37
38
|
try {
|
38
39
|
return await intercept(
|
39
40
|
this.options.interceptors ?? [],
|
@@ -52,8 +53,11 @@ var StandardHandler = class {
|
|
52
53
|
};
|
53
54
|
this.plugin.beforeCreateProcedureClient(clientOptions, interceptorOptions2);
|
54
55
|
const client = createProcedureClient(match.procedure, clientOptions);
|
56
|
+
isDecoding = true;
|
55
57
|
const input = await this.codec.decode(request, match.params, match.procedure);
|
56
|
-
|
58
|
+
isDecoding = false;
|
59
|
+
const lastEventId = Array.isArray(request.headers["last-event-id"]) ? request.headers["last-event-id"].at(-1) : request.headers["last-event-id"];
|
60
|
+
const output = await client(input, { signal: request.signal, lastEventId });
|
57
61
|
const response = this.codec.encode(output, match.procedure);
|
58
62
|
return {
|
59
63
|
matched: true,
|
@@ -62,7 +66,10 @@ var StandardHandler = class {
|
|
62
66
|
}
|
63
67
|
);
|
64
68
|
} catch (e) {
|
65
|
-
const error =
|
69
|
+
const error = isDecoding ? new ORPCError("BAD_REQUEST", {
|
70
|
+
message: `Malformed request. Ensure the request body is properly formatted and the 'Content-Type' header is set correctly.`,
|
71
|
+
cause: e
|
72
|
+
}) : toORPCError(e);
|
66
73
|
const response = this.codec.encodeError(error);
|
67
74
|
return {
|
68
75
|
matched: true,
|
@@ -75,14 +82,27 @@ var StandardHandler = class {
|
|
75
82
|
};
|
76
83
|
|
77
84
|
// src/adapters/standard/rpc-serializer.ts
|
85
|
+
import { mapEventIterator, ORPCError as ORPCError2, toORPCError as toORPCError2 } from "@orpc/contract";
|
86
|
+
import { ErrorEvent, isAsyncIteratorObject } from "@orpc/server-standard";
|
78
87
|
import { findDeepMatches, isObject, set } from "@orpc/shared";
|
79
88
|
var RPCSerializer = class {
|
80
89
|
serialize(data) {
|
81
|
-
if (data
|
82
|
-
return
|
83
|
-
|
84
|
-
|
85
|
-
|
90
|
+
if (isAsyncIteratorObject(data)) {
|
91
|
+
return mapEventIterator(data, {
|
92
|
+
value: async (value) => serializeRPCJson(value),
|
93
|
+
error: async (e) => {
|
94
|
+
if (e instanceof ErrorEvent) {
|
95
|
+
return new ErrorEvent({
|
96
|
+
data: serializeRPCJson(e.data),
|
97
|
+
cause: e
|
98
|
+
});
|
99
|
+
}
|
100
|
+
return new ErrorEvent({
|
101
|
+
data: serializeRPCJson(toORPCError2(e).toJSON()),
|
102
|
+
cause: e
|
103
|
+
});
|
104
|
+
}
|
105
|
+
});
|
86
106
|
}
|
87
107
|
const serializedJSON = serializeRPCJson(data);
|
88
108
|
const { maps, values: blobs } = findDeepMatches((v) => v instanceof Blob, serializedJSON.json);
|
@@ -98,11 +118,23 @@ var RPCSerializer = class {
|
|
98
118
|
return form;
|
99
119
|
}
|
100
120
|
deserialize(serialized) {
|
101
|
-
if (serialized
|
102
|
-
return
|
103
|
-
|
104
|
-
|
105
|
-
|
121
|
+
if (isAsyncIteratorObject(serialized)) {
|
122
|
+
return mapEventIterator(serialized, {
|
123
|
+
value: async (value) => deserializeRPCJson(value),
|
124
|
+
error: async (e) => {
|
125
|
+
if (!(e instanceof ErrorEvent)) {
|
126
|
+
return e;
|
127
|
+
}
|
128
|
+
const deserialized = deserializeRPCJson(e.data);
|
129
|
+
if (ORPCError2.isValidJSON(deserialized)) {
|
130
|
+
return ORPCError2.fromJSON(deserialized, { cause: e });
|
131
|
+
}
|
132
|
+
return new ErrorEvent({
|
133
|
+
data: deserialized,
|
134
|
+
cause: e
|
135
|
+
});
|
136
|
+
}
|
137
|
+
});
|
106
138
|
}
|
107
139
|
if (!(serialized instanceof FormData)) {
|
108
140
|
return deserializeRPCJson(serialized);
|
@@ -316,4 +348,4 @@ export {
|
|
316
348
|
RPCCodec,
|
317
349
|
RPCMatcher
|
318
350
|
};
|
319
|
-
//# sourceMappingURL=chunk-
|
351
|
+
//# sourceMappingURL=chunk-NXEANHUK.js.map
|
@@ -81,7 +81,8 @@ function createProcedureClient(lazyableProcedure, ...[options]) {
|
|
81
81
|
errors,
|
82
82
|
path,
|
83
83
|
procedure,
|
84
|
-
signal: callerOptions?.signal
|
84
|
+
signal: callerOptions?.signal,
|
85
|
+
lastEventId: callerOptions?.lastEventId
|
85
86
|
},
|
86
87
|
(interceptorOptions) => executeProcedureInternal(interceptorOptions.procedure, interceptorOptions)
|
87
88
|
);
|
@@ -375,4 +376,4 @@ export {
|
|
375
376
|
convertPathToHttpPath,
|
376
377
|
createContractedProcedure
|
377
378
|
};
|
378
|
-
//# sourceMappingURL=chunk-
|
379
|
+
//# sourceMappingURL=chunk-XXBE6CYD.js.map
|
package/dist/fetch.js
CHANGED
@@ -1,8 +1,8 @@
|
|
1
1
|
import {
|
2
2
|
RPCHandler
|
3
|
-
} from "./chunk-
|
4
|
-
import "./chunk-
|
5
|
-
import "./chunk-
|
3
|
+
} from "./chunk-L4ESXQX7.js";
|
4
|
+
import "./chunk-NXEANHUK.js";
|
5
|
+
import "./chunk-XXBE6CYD.js";
|
6
6
|
import "./chunk-XI6WGCB3.js";
|
7
7
|
export {
|
8
8
|
RPCHandler
|
package/dist/hono.js
CHANGED
@@ -1,8 +1,8 @@
|
|
1
1
|
import {
|
2
2
|
RPCHandler
|
3
|
-
} from "./chunk-
|
4
|
-
import "./chunk-
|
5
|
-
import "./chunk-
|
3
|
+
} from "./chunk-L4ESXQX7.js";
|
4
|
+
import "./chunk-NXEANHUK.js";
|
5
|
+
import "./chunk-XXBE6CYD.js";
|
6
6
|
import "./chunk-XI6WGCB3.js";
|
7
7
|
|
8
8
|
// src/adapters/hono/middleware.ts
|
package/dist/index.js
CHANGED
@@ -21,7 +21,7 @@ import {
|
|
21
21
|
middlewareOutputFn,
|
22
22
|
setRouterContract,
|
23
23
|
unlazy
|
24
|
-
} from "./chunk-
|
24
|
+
} from "./chunk-XXBE6CYD.js";
|
25
25
|
|
26
26
|
// src/builder.ts
|
27
27
|
import { mergeErrorMap as mergeErrorMap2, mergeMeta as mergeMeta2, mergePrefix, mergeRoute as mergeRoute2, mergeTags } from "@orpc/contract";
|
@@ -50,10 +50,14 @@ function decorateMiddleware(middleware) {
|
|
50
50
|
decorated.concat = (concatMiddleware, mapInput) => {
|
51
51
|
const mapped = mapInput ? decorateMiddleware(concatMiddleware).mapInput(mapInput) : concatMiddleware;
|
52
52
|
const concatted = decorateMiddleware((options, input, output, ...rest) => {
|
53
|
-
const
|
54
|
-
|
55
|
-
|
56
|
-
|
53
|
+
const merged = middleware({
|
54
|
+
...options,
|
55
|
+
next: (...[nextOptions1]) => mapped({
|
56
|
+
...options,
|
57
|
+
context: { ...options.context, ...nextOptions1?.context },
|
58
|
+
next: (...[nextOptions2]) => options.next({ context: { ...nextOptions1?.context, ...nextOptions2?.context } })
|
59
|
+
}, input, output, ...rest)
|
60
|
+
}, input, output, ...rest);
|
57
61
|
return merged;
|
58
62
|
});
|
59
63
|
return concatted;
|
@@ -357,7 +361,8 @@ function createRouterClient(router, ...rest) {
|
|
357
361
|
}
|
358
362
|
|
359
363
|
// src/index.ts
|
360
|
-
import { isDefinedError, ORPCError, safe, type, ValidationError } from "@orpc/contract";
|
364
|
+
import { eventIterator, isDefinedError, ORPCError, safe, type, ValidationError } from "@orpc/contract";
|
365
|
+
import { getEventMeta, withEventMeta } from "@orpc/server-standard";
|
361
366
|
import { onError, onFinish, onStart, onSuccess } from "@orpc/shared";
|
362
367
|
export {
|
363
368
|
Builder,
|
@@ -378,8 +383,10 @@ export {
|
|
378
383
|
deepSetLazyRouterPrefix,
|
379
384
|
eachAllContractProcedure,
|
380
385
|
eachContractProcedure,
|
386
|
+
eventIterator,
|
381
387
|
fallbackConfig,
|
382
388
|
flatLazy,
|
389
|
+
getEventMeta,
|
383
390
|
getLazyRouterPrefix,
|
384
391
|
getRouterChild,
|
385
392
|
getRouterContract,
|
@@ -399,6 +406,7 @@ export {
|
|
399
406
|
safe,
|
400
407
|
setRouterContract,
|
401
408
|
type,
|
402
|
-
unlazy
|
409
|
+
unlazy,
|
410
|
+
withEventMeta
|
403
411
|
};
|
404
412
|
//# sourceMappingURL=index.js.map
|
package/dist/next.js
CHANGED
@@ -1,8 +1,8 @@
|
|
1
1
|
import {
|
2
2
|
RPCHandler
|
3
|
-
} from "./chunk-
|
4
|
-
import "./chunk-
|
5
|
-
import "./chunk-
|
3
|
+
} from "./chunk-L4ESXQX7.js";
|
4
|
+
import "./chunk-NXEANHUK.js";
|
5
|
+
import "./chunk-XXBE6CYD.js";
|
6
6
|
import "./chunk-XI6WGCB3.js";
|
7
7
|
|
8
8
|
// src/adapters/next/serve.ts
|
package/dist/node.js
CHANGED
@@ -3,7 +3,13 @@ export type RPCSerializedJsonMeta = ['bigint' | 'date' | 'nan' | 'undefined' | '
|
|
3
3
|
export type RPCSerialized = {
|
4
4
|
json: unknown;
|
5
5
|
meta: RPCSerializedJsonMeta;
|
6
|
-
} | FormData |
|
6
|
+
} | FormData | AsyncIteratorObject<{
|
7
|
+
json: unknown;
|
8
|
+
meta: RPCSerializedJsonMeta;
|
9
|
+
}, {
|
10
|
+
json: unknown;
|
11
|
+
meta: RPCSerializedJsonMeta;
|
12
|
+
}, void>;
|
7
13
|
export type RPCSerializedFormDataMaps = Segment[][];
|
8
14
|
export declare class RPCSerializer {
|
9
15
|
serialize(data: unknown): RPCSerialized;
|
package/dist/src/context.d.ts
CHANGED
@@ -1,6 +1,5 @@
|
|
1
1
|
import type { IsNever } from '@orpc/shared';
|
2
2
|
export type Context = Record<string, any>;
|
3
|
-
export type TypeInitialContext<T extends Context> = (type: T) => unknown;
|
4
3
|
export type MergedContext<T extends Context, U extends Context> = T & U;
|
5
4
|
export declare function mergeContext<T extends Context, U extends Context>(context: T, other: U): MergedContext<T, U>;
|
6
5
|
export type ConflictContextGuard<T extends Context> = true extends IsNever<T> | {
|
package/dist/src/index.d.ts
CHANGED
@@ -18,6 +18,7 @@ export * from './router';
|
|
18
18
|
export * from './router-accessible-lazy';
|
19
19
|
export * from './router-client';
|
20
20
|
export * from './utils';
|
21
|
-
export { isDefinedError, ORPCError, safe, type, ValidationError } from '@orpc/contract';
|
21
|
+
export { eventIterator, isDefinedError, ORPCError, safe, type, ValidationError } from '@orpc/contract';
|
22
|
+
export { getEventMeta, withEventMeta } from '@orpc/server-standard';
|
22
23
|
export { onError, onFinish, onStart, onSuccess } from '@orpc/shared';
|
23
24
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/src/middleware.d.ts
CHANGED
@@ -22,6 +22,7 @@ export interface MiddlewareOptions<TInContext extends Context, TOutput, TErrorCo
|
|
22
22
|
path: string[];
|
23
23
|
procedure: Procedure<Context, Context, Schema, Schema, unknown, ErrorMap, TMeta>;
|
24
24
|
signal?: AbortSignal;
|
25
|
+
lastEventId: string | undefined;
|
25
26
|
next: MiddlewareNextFn<TInContext, TOutput>;
|
26
27
|
errors: TErrorConstructorMap;
|
27
28
|
}
|
@@ -11,6 +11,7 @@ export interface ProcedureClientInterceptorOptions<TInitialContext extends Conte
|
|
11
11
|
path: string[];
|
12
12
|
procedure: Procedure<Context, Context, Schema, Schema, unknown, ErrorMap, TMeta>;
|
13
13
|
signal?: AbortSignal;
|
14
|
+
lastEventId: string | undefined;
|
14
15
|
}
|
15
16
|
/**
|
16
17
|
* Options for creating a procedure caller with comprehensive type safety
|
package/dist/src/procedure.d.ts
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
import type { ContractProcedureDef, ErrorMap, Meta, ORPCErrorConstructorMap, Schema, SchemaInput, SchemaOutput } from '@orpc/contract';
|
2
2
|
import type { Promisable } from '@orpc/shared';
|
3
|
-
import type { Context
|
3
|
+
import type { Context } from './context';
|
4
4
|
import type { AnyMiddleware } from './middleware';
|
5
5
|
export interface ProcedureHandlerOptions<TCurrentContext extends Context, TInput, TErrorConstructorMap extends ORPCErrorConstructorMap<any>, TMeta extends Meta> {
|
6
6
|
context: TCurrentContext;
|
@@ -8,13 +8,14 @@ export interface ProcedureHandlerOptions<TCurrentContext extends Context, TInput
|
|
8
8
|
path: string[];
|
9
9
|
procedure: Procedure<Context, Context, Schema, Schema, unknown, ErrorMap, TMeta>;
|
10
10
|
signal?: AbortSignal;
|
11
|
+
lastEventId: string | undefined;
|
11
12
|
errors: TErrorConstructorMap;
|
12
13
|
}
|
13
14
|
export interface ProcedureHandler<TCurrentContext extends Context, TInputSchema extends Schema, TOutputSchema extends Schema, THandlerOutput extends SchemaInput<TOutputSchema>, TErrorMap extends ErrorMap, TMeta extends Meta> {
|
14
15
|
(opt: ProcedureHandlerOptions<TCurrentContext, SchemaOutput<TInputSchema>, ORPCErrorConstructorMap<TErrorMap>, TMeta>): Promisable<SchemaInput<TOutputSchema, THandlerOutput>>;
|
15
16
|
}
|
16
17
|
export interface ProcedureDef<TInitialContext extends Context, TCurrentContext extends Context, TInputSchema extends Schema, TOutputSchema extends Schema, THandlerOutput extends SchemaInput<TOutputSchema>, TErrorMap extends ErrorMap, TMeta extends Meta> extends ContractProcedureDef<TInputSchema, TOutputSchema, TErrorMap, TMeta> {
|
17
|
-
__initialContext?:
|
18
|
+
__initialContext?: (type: TInitialContext) => unknown;
|
18
19
|
middlewares: AnyMiddleware[];
|
19
20
|
inputValidationIndex: number;
|
20
21
|
outputValidationIndex: number;
|
package/dist/standard.js
CHANGED
package/package.json
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
{
|
2
2
|
"name": "@orpc/server",
|
3
3
|
"type": "module",
|
4
|
-
"version": "0.
|
4
|
+
"version": "0.40.0",
|
5
5
|
"license": "MIT",
|
6
6
|
"homepage": "https://orpc.unnoq.com",
|
7
7
|
"repository": {
|
@@ -63,12 +63,11 @@
|
|
63
63
|
"next": ">=14.0.0"
|
64
64
|
},
|
65
65
|
"dependencies": {
|
66
|
-
"@orpc/server-standard": "^0.
|
67
|
-
"@orpc/server-standard-fetch": "^0.
|
68
|
-
"@orpc/server-standard-node": "^0.
|
69
|
-
"@
|
70
|
-
"@orpc/
|
71
|
-
"@orpc/shared": "0.39.0"
|
66
|
+
"@orpc/server-standard": "^0.4.0",
|
67
|
+
"@orpc/server-standard-fetch": "^0.4.0",
|
68
|
+
"@orpc/server-standard-node": "^0.4.0",
|
69
|
+
"@orpc/contract": "0.40.0",
|
70
|
+
"@orpc/shared": "0.40.0"
|
72
71
|
},
|
73
72
|
"devDependencies": {
|
74
73
|
"light-my-request": "^6.5.1"
|