@trpc/server 10.0.0-alpha.20 → 10.0.0-alpha.23
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/adapters/aws-lambda/dist/trpc-server-adapters-aws-lambda.cjs.d.ts +1 -0
- package/adapters/aws-lambda/dist/trpc-server-adapters-aws-lambda.cjs.dev.js +90 -0
- package/adapters/aws-lambda/dist/trpc-server-adapters-aws-lambda.cjs.js +7 -0
- package/adapters/aws-lambda/dist/trpc-server-adapters-aws-lambda.cjs.prod.js +90 -0
- package/adapters/aws-lambda/dist/trpc-server-adapters-aws-lambda.esm.js +86 -0
- package/adapters/express/dist/trpc-server-adapters-express.cjs.dev.js +4 -4
- package/adapters/express/dist/trpc-server-adapters-express.cjs.prod.js +4 -4
- package/adapters/express/dist/trpc-server-adapters-express.esm.js +4 -4
- package/adapters/fastify/dist/trpc-server-adapters-fastify.cjs.dev.js +5 -5
- package/adapters/fastify/dist/trpc-server-adapters-fastify.cjs.prod.js +5 -5
- package/adapters/fastify/dist/trpc-server-adapters-fastify.esm.js +5 -5
- package/adapters/fastify/index.js +1 -1
- package/adapters/fetch/index.d.ts +1 -0
- package/adapters/fetch/index.js +1 -0
- package/adapters/next/dist/trpc-server-adapters-next.cjs.dev.js +4 -4
- package/adapters/next/dist/trpc-server-adapters-next.cjs.prod.js +4 -4
- package/adapters/next/dist/trpc-server-adapters-next.esm.js +4 -4
- package/adapters/node-http/dist/trpc-server-adapters-node-http.cjs.dev.js +4 -4
- package/adapters/node-http/dist/trpc-server-adapters-node-http.cjs.prod.js +4 -4
- package/adapters/node-http/dist/trpc-server-adapters-node-http.esm.js +4 -4
- package/adapters/standalone/dist/trpc-server-adapters-standalone.cjs.dev.js +4 -4
- package/adapters/standalone/dist/trpc-server-adapters-standalone.cjs.prod.js +4 -4
- package/adapters/standalone/dist/trpc-server-adapters-standalone.esm.js +4 -4
- package/adapters/ws/dist/trpc-server-adapters-ws.cjs.dev.js +2 -2
- package/adapters/ws/dist/trpc-server-adapters-ws.cjs.prod.js +2 -2
- package/adapters/ws/dist/trpc-server-adapters-ws.esm.js +2 -2
- package/dist/TRPCError-7971540a.mjs +65 -0
- package/dist/{transformTRPCResponse-43a869de.js → TRPCError-ddec3395.js} +18 -59
- package/dist/TRPCError.d.ts +3 -3
- package/dist/TRPCError.d.ts.map +1 -1
- package/dist/adapters/express.js +5 -5
- package/dist/adapters/express.mjs +5 -5
- package/dist/adapters/fastify/fastifyRequestHandler.d.ts.map +1 -1
- package/dist/adapters/fastify/index.js +7 -8
- package/dist/adapters/fastify/index.mjs +6 -7
- package/dist/adapters/fetch/fetchRequestHandler.d.ts +8 -0
- package/dist/adapters/fetch/fetchRequestHandler.d.ts.map +1 -0
- package/dist/adapters/fetch/index.d.ts +3 -0
- package/dist/adapters/fetch/index.d.ts.map +1 -0
- package/dist/adapters/fetch/index.js +69 -0
- package/dist/adapters/fetch/index.mjs +65 -0
- package/dist/adapters/fetch/index.ts.js +1 -0
- package/dist/adapters/fetch/types.d.ts +21 -0
- package/dist/adapters/fetch/types.d.ts.map +1 -0
- package/dist/adapters/next.d.ts.map +1 -1
- package/dist/adapters/next.js +9 -10
- package/dist/adapters/next.mjs +8 -9
- package/dist/adapters/node-http/index.js +5 -5
- package/dist/adapters/node-http/index.mjs +5 -5
- package/dist/adapters/node-http/nodeHTTPRequestHandler.d.ts.map +1 -1
- package/dist/adapters/node-http/types.d.ts +9 -7
- package/dist/adapters/node-http/types.d.ts.map +1 -1
- package/dist/adapters/standalone.d.ts.map +1 -1
- package/dist/adapters/standalone.js +11 -8
- package/dist/adapters/standalone.mjs +11 -7
- package/dist/adapters/ws.d.ts +4 -4
- package/dist/adapters/ws.d.ts.map +1 -1
- package/dist/adapters/ws.js +117 -80
- package/dist/adapters/ws.mjs +112 -75
- package/dist/assertNotBrowser.d.ts.map +1 -1
- package/dist/{codes-7a3d4f65.mjs → envelopes-1deb2fa7.mjs} +19 -1
- package/dist/{codes-7f46544e.js → envelopes-a953b930.js} +18 -0
- package/dist/http/index.d.ts +1 -1
- package/dist/http/internals/getHTTPStatusCode.d.ts +1 -0
- package/dist/http/internals/getHTTPStatusCode.d.ts.map +1 -1
- package/dist/http/internals/types.d.ts +5 -4
- package/dist/http/internals/types.d.ts.map +1 -1
- package/dist/http/resolveHTTPResponse.d.ts +1 -1
- package/dist/http/resolveHTTPResponse.d.ts.map +1 -1
- package/dist/http/{ResponseMeta.d.ts → responseMeta.d.ts} +1 -1
- package/dist/http/responseMeta.d.ts.map +1 -0
- package/dist/index.d.ts +0 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +45 -54
- package/dist/index.mjs +40 -47
- package/dist/internals/{BaseHandlerOptions.d.ts → baseHandlerOptions.d.ts} +2 -2
- package/dist/internals/{BaseHandlerOptions.d.ts.map → baseHandlerOptions.d.ts.map} +1 -1
- package/dist/internals/callProcedure.d.ts +2 -2
- package/dist/internals/callProcedure.d.ts.map +1 -1
- package/dist/internals/errors.d.ts +1 -0
- package/dist/internals/errors.d.ts.map +1 -1
- package/dist/internals/middlewares.d.ts +5 -2
- package/dist/internals/middlewares.d.ts.map +1 -1
- package/dist/internals/{OnErrorFunction.d.ts → onErrorFunction.d.ts} +1 -1
- package/dist/internals/{OnErrorFunction.d.ts.map → onErrorFunction.d.ts.map} +1 -1
- package/dist/internals/procedure.d.ts +20 -14
- package/dist/internals/procedure.d.ts.map +1 -1
- package/dist/internals/transformTRPCResponse.d.ts +4 -2
- package/dist/internals/transformTRPCResponse.d.ts.map +1 -1
- package/dist/{nodeHTTPRequestHandler-5fccb3bb.mjs → nodeHTTPRequestHandler-1cdb6383.mjs} +2 -3
- package/dist/{nodeHTTPRequestHandler-7d71ac09.js → nodeHTTPRequestHandler-848f07b5.js} +4 -5
- package/dist/observable/index.d.ts +5 -0
- package/dist/observable/index.d.ts.map +1 -0
- package/dist/observable/index.js +204 -0
- package/dist/observable/index.mjs +195 -0
- package/dist/observable/index.ts.js +1 -0
- package/dist/observable/internals/identity.d.ts +2 -0
- package/dist/observable/internals/identity.d.ts.map +1 -0
- package/dist/observable/internals/observableToPromise.d.ts +10 -0
- package/dist/observable/internals/observableToPromise.d.ts.map +1 -0
- package/dist/observable/internals/pipe.d.ts +4 -0
- package/dist/observable/internals/pipe.d.ts.map +1 -0
- package/dist/observable/observable.d.ts +5 -0
- package/dist/observable/observable.d.ts.map +1 -0
- package/dist/observable/operators/index.d.ts +4 -0
- package/dist/observable/operators/index.d.ts.map +1 -0
- package/dist/observable/operators/map.d.ts +3 -0
- package/dist/observable/operators/map.d.ts.map +1 -0
- package/dist/observable/operators/share.d.ts +6 -0
- package/dist/observable/operators/share.d.ts.map +1 -0
- package/dist/observable/operators/tap.d.ts +3 -0
- package/dist/observable/operators/tap.d.ts.map +1 -0
- package/dist/observable/types.d.ts +29 -0
- package/dist/observable/types.d.ts.map +1 -0
- package/dist/observable-137ea1bd.mjs +105 -0
- package/dist/observable-3aa4d911.js +108 -0
- package/dist/{resolveHTTPResponse-3292a84a.mjs → resolveHTTPResponse-54a79e6c.mjs} +18 -23
- package/dist/{resolveHTTPResponse-c3777a47.js → resolveHTTPResponse-ec3dccaa.js} +24 -29
- package/dist/router.d.ts +31 -27
- package/dist/router.d.ts.map +1 -1
- package/dist/rpc/codes.d.ts +2 -0
- package/dist/rpc/codes.d.ts.map +1 -1
- package/dist/rpc/envelopes.d.ts +61 -39
- package/dist/rpc/envelopes.d.ts.map +1 -1
- package/dist/rpc/index.js +7 -3
- package/dist/rpc/index.mjs +1 -1
- package/dist/subscription.d.ts +3 -52
- package/dist/subscription.d.ts.map +1 -1
- package/dist/subscription.js +44 -0
- package/dist/subscription.mjs +40 -0
- package/dist/subscription.ts.js +1 -0
- package/dist/transformTRPCResponse-333bed6c.js +56 -0
- package/dist/transformTRPCResponse-e0cba527.mjs +53 -0
- package/dist/types.d.ts +8 -0
- package/dist/types.d.ts.map +1 -1
- package/observable/index.d.ts +1 -0
- package/observable/index.js +1 -0
- package/package.json +30 -8
- package/rpc/dist/trpc-server-rpc.cjs.dev.js +1 -1
- package/rpc/dist/trpc-server-rpc.cjs.prod.js +1 -1
- package/rpc/dist/trpc-server-rpc.esm.js +1 -1
- package/src/TRPCError.ts +2 -2
- package/src/adapters/fastify/fastifyRequestHandler.ts +0 -1
- package/src/adapters/fastify/fastifyTRPCPlugin.ts +1 -1
- package/src/adapters/fetch/fetchRequestHandler.ts +61 -0
- package/src/adapters/fetch/index.ts +2 -0
- package/src/adapters/fetch/types.ts +28 -0
- package/src/adapters/next.ts +3 -5
- package/src/adapters/node-http/nodeHTTPRequestHandler.ts +0 -1
- package/src/adapters/node-http/types.ts +9 -7
- package/src/adapters/standalone.ts +10 -3
- package/src/adapters/ws.ts +115 -77
- package/src/assertNotBrowser.ts +1 -0
- package/src/http/index.ts +1 -1
- package/src/http/internals/getHTTPStatusCode.ts +1 -0
- package/src/http/internals/types.ts +5 -6
- package/src/http/resolveHTTPResponse.ts +20 -24
- package/src/http/{ResponseMeta.ts → responseMeta.ts} +0 -0
- package/src/index.ts +0 -1
- package/src/internals/{BaseHandlerOptions.ts → baseHandlerOptions.ts} +1 -1
- package/src/internals/callProcedure.ts +6 -3
- package/src/internals/errors.ts +20 -4
- package/src/internals/middlewares.ts +6 -2
- package/src/internals/{OnErrorFunction.ts → onErrorFunction.ts} +0 -0
- package/src/internals/procedure.ts +102 -42
- package/src/internals/transformTRPCResponse.ts +20 -15
- package/src/observable/index.ts +4 -0
- package/src/observable/internals/identity.ts +3 -0
- package/src/observable/internals/observableToPromise.ts +49 -0
- package/src/observable/internals/pipe.ts +22 -0
- package/src/observable/observable.test.ts +101 -0
- package/src/observable/observable.ts +75 -0
- package/src/observable/operators/index.ts +3 -0
- package/src/observable/operators/map.test.ts +92 -0
- package/src/observable/operators/map.ts +25 -0
- package/src/observable/operators/share.test.ts +60 -0
- package/src/observable/operators/share.ts +67 -0
- package/src/observable/operators/tap.ts +26 -0
- package/src/observable/types.ts +69 -0
- package/src/router.ts +96 -37
- package/src/rpc/codes.ts +1 -0
- package/src/rpc/envelopes.ts +87 -68
- package/src/subscription.ts +5 -123
- package/src/types.ts +7 -0
- package/dist/http/ResponseMeta.d.ts.map +0 -1
- package/dist/internals/wrapCallSafe.d.ts +0 -16
- package/dist/internals/wrapCallSafe.d.ts.map +0 -1
- package/dist/subscription-0d8a48ec.mjs +0 -133
- package/dist/subscription-41611bc2.js +0 -136
- package/dist/transformTRPCResponse-ff424ff4.mjs +0 -105
- package/src/internals/wrapCallSafe.ts +0 -19
- package/ws/dist/trpc-server-ws.cjs.d.ts +0 -1
- package/ws/dist/trpc-server-ws.cjs.dev.js +0 -15
- package/ws/dist/trpc-server-ws.cjs.js +0 -7
- package/ws/dist/trpc-server-ws.cjs.prod.js +0 -15
- package/ws/dist/trpc-server-ws.esm.js +0 -11
- package/ws/index.d.ts +0 -1
- package/ws/index.js +0 -1
package/src/subscription.ts
CHANGED
|
@@ -1,135 +1,17 @@
|
|
|
1
|
-
import { EventEmitter } from 'events';
|
|
2
1
|
import { getErrorFromUnknown } from './internals/errors';
|
|
2
|
+
import { Observable, Observer, observable } from './observable';
|
|
3
3
|
|
|
4
|
-
interface SubscriptionEvents<TOutput> {
|
|
5
|
-
data: (data: TOutput) => void;
|
|
6
|
-
destroy: () => void;
|
|
7
|
-
error: (error: Error) => void;
|
|
8
|
-
}
|
|
9
|
-
declare interface SubscriptionEventEmitter<TOutput> {
|
|
10
|
-
on<U extends keyof SubscriptionEvents<TOutput>>(
|
|
11
|
-
event: U,
|
|
12
|
-
listener: SubscriptionEvents<TOutput>[U],
|
|
13
|
-
): this;
|
|
14
|
-
|
|
15
|
-
once<U extends keyof SubscriptionEvents<TOutput>>(
|
|
16
|
-
event: U,
|
|
17
|
-
listener: SubscriptionEvents<TOutput>[U],
|
|
18
|
-
): this;
|
|
19
|
-
|
|
20
|
-
emit<U extends keyof SubscriptionEvents<TOutput>>(
|
|
21
|
-
event: U,
|
|
22
|
-
...args: Parameters<SubscriptionEvents<TOutput>[U]>
|
|
23
|
-
): boolean;
|
|
24
|
-
}
|
|
25
|
-
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
26
|
-
class SubscriptionEventEmitter<TOutput> extends EventEmitter {}
|
|
27
|
-
|
|
28
|
-
type UnsubscribeFn = () => void;
|
|
29
|
-
type EmitFn<TOutput> = (data: TOutput) => void;
|
|
30
|
-
|
|
31
|
-
export type SubscriptionEmit<TOutput> = {
|
|
32
|
-
data: EmitFn<TOutput>;
|
|
33
|
-
error: EmitFn<Error>;
|
|
34
|
-
};
|
|
35
|
-
export type SubscriptionCallback<TOutput> = (
|
|
36
|
-
emit: SubscriptionEmit<TOutput>,
|
|
37
|
-
) => UnsubscribeFn | Promise<UnsubscribeFn>;
|
|
38
|
-
|
|
39
|
-
/**
|
|
40
|
-
* @beta
|
|
41
|
-
*/
|
|
42
|
-
export class Subscription<TOutput = unknown> {
|
|
43
|
-
private readonly events: SubscriptionEventEmitter<TOutput>;
|
|
44
|
-
private callback;
|
|
45
|
-
private isDestroyed: boolean;
|
|
46
|
-
|
|
47
|
-
constructor(callback: SubscriptionCallback<TOutput>) {
|
|
48
|
-
this.isDestroyed = false;
|
|
49
|
-
this.events = new SubscriptionEventEmitter<TOutput>();
|
|
50
|
-
this.callback = callback;
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
public destroy() {
|
|
54
|
-
if (this.isDestroyed) {
|
|
55
|
-
return;
|
|
56
|
-
}
|
|
57
|
-
// debug('Subscription.destroy()', reason);
|
|
58
|
-
this.isDestroyed = true;
|
|
59
|
-
this.events.emit('destroy');
|
|
60
|
-
this.events.removeAllListeners();
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
public async start() {
|
|
64
|
-
/* istanbul ignore next */
|
|
65
|
-
if (this.isDestroyed) {
|
|
66
|
-
throw new Error('Called start() on a destroyed subscription');
|
|
67
|
-
}
|
|
68
|
-
try {
|
|
69
|
-
const emit: SubscriptionEmit<TOutput> = {
|
|
70
|
-
error: (err) => this.emitError(err),
|
|
71
|
-
data: (data) => this.emitOutput(data),
|
|
72
|
-
};
|
|
73
|
-
const cancel = await this.callback(emit);
|
|
74
|
-
if (
|
|
75
|
-
this.isDestroyed
|
|
76
|
-
/* istanbul ignore next */
|
|
77
|
-
) {
|
|
78
|
-
cancel();
|
|
79
|
-
} else {
|
|
80
|
-
this.events.on('destroy', cancel);
|
|
81
|
-
}
|
|
82
|
-
} catch (
|
|
83
|
-
cause
|
|
84
|
-
/* istanbul ignore next */
|
|
85
|
-
) {
|
|
86
|
-
this.emitError(getErrorFromUnknown(cause));
|
|
87
|
-
}
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
/* istanbul ignore next */
|
|
91
|
-
/**
|
|
92
|
-
* @deprecated This method is just here to help with `inferSubscriptionOutput` which I can't get working without it
|
|
93
|
-
*/
|
|
94
|
-
public output(): TOutput {
|
|
95
|
-
throw new Error('Not in use');
|
|
96
|
-
}
|
|
97
|
-
|
|
98
|
-
/**
|
|
99
|
-
* Emit data
|
|
100
|
-
*/
|
|
101
|
-
emitOutput(data: TOutput) {
|
|
102
|
-
this.events.emit('data', data);
|
|
103
|
-
}
|
|
104
|
-
/**
|
|
105
|
-
* Emit error
|
|
106
|
-
*/
|
|
107
|
-
emitError(err: Error) {
|
|
108
|
-
this.events.emit('error', err);
|
|
109
|
-
}
|
|
110
|
-
|
|
111
|
-
on(...args: Parameters<SubscriptionEventEmitter<TOutput>['on']>) {
|
|
112
|
-
return this.events.on(...args);
|
|
113
|
-
}
|
|
114
|
-
off(...args: Parameters<SubscriptionEventEmitter<TOutput>['off']>) {
|
|
115
|
-
return this.events.off(...args);
|
|
116
|
-
}
|
|
117
|
-
}
|
|
118
|
-
|
|
119
|
-
/**
|
|
120
|
-
* @alpha Might be removed
|
|
121
|
-
*/
|
|
122
4
|
export function subscriptionPullFactory<TOutput>(opts: {
|
|
123
5
|
/**
|
|
124
6
|
* The interval of how often the function should run
|
|
125
7
|
*/
|
|
126
8
|
intervalMs: number;
|
|
127
|
-
pull(emit:
|
|
128
|
-
}):
|
|
9
|
+
pull(emit: Observer<TOutput, unknown>): void | Promise<void>;
|
|
10
|
+
}): Observable<TOutput, unknown> {
|
|
129
11
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
130
12
|
let timer: any;
|
|
131
13
|
let stopped = false;
|
|
132
|
-
async function _pull(emit:
|
|
14
|
+
async function _pull(emit: Observer<TOutput, unknown>) {
|
|
133
15
|
/* istanbul ignore next */
|
|
134
16
|
if (stopped) {
|
|
135
17
|
return;
|
|
@@ -146,7 +28,7 @@ export function subscriptionPullFactory<TOutput>(opts: {
|
|
|
146
28
|
}
|
|
147
29
|
}
|
|
148
30
|
|
|
149
|
-
return
|
|
31
|
+
return observable<TOutput>((emit) => {
|
|
150
32
|
_pull(emit).catch((err) => emit.error(getErrorFromUnknown(err)));
|
|
151
33
|
return () => {
|
|
152
34
|
clearTimeout(timer);
|
package/src/types.ts
CHANGED
|
@@ -46,3 +46,10 @@ export type ThenArg<T> = T extends PromiseLike<infer U> ? ThenArg<U> : T;
|
|
|
46
46
|
* @public
|
|
47
47
|
*/
|
|
48
48
|
export type Dict<T> = Record<string, T | undefined>;
|
|
49
|
+
|
|
50
|
+
/**
|
|
51
|
+
* @internal
|
|
52
|
+
* Creates a "lower-priority" type inference.
|
|
53
|
+
* https://github.com/microsoft/TypeScript/issues/14829#issuecomment-322267089
|
|
54
|
+
*/
|
|
55
|
+
export type InferLast<T> = T & { [K in keyof T]: T[K] };
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ResponseMeta.d.ts","sourceRoot":"","sources":["../../src/http/ResponseMeta.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,YAAY;IAC3B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAClC"}
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
declare type AsyncFn<T> = () => Promise<T> | T;
|
|
2
|
-
/**
|
|
3
|
-
* Wrap a function in a safe wrapper that never throws
|
|
4
|
-
* Returns a discriminated union
|
|
5
|
-
*/
|
|
6
|
-
export declare function wrapCallSafe<T>(fn: AsyncFn<T>): Promise<{
|
|
7
|
-
ok: true;
|
|
8
|
-
data: T;
|
|
9
|
-
error?: undefined;
|
|
10
|
-
} | {
|
|
11
|
-
ok: false;
|
|
12
|
-
error: unknown;
|
|
13
|
-
data?: undefined;
|
|
14
|
-
}>;
|
|
15
|
-
export {};
|
|
16
|
-
//# sourceMappingURL=wrapCallSafe.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"wrapCallSafe.d.ts","sourceRoot":"","sources":["../../src/internals/wrapCallSafe.ts"],"names":[],"mappings":"AAAA,aAAK,OAAO,CAAC,CAAC,IAAI,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACvC;;;GAGG;AACH,wBAAsB,YAAY,CAAC,CAAC,EAAE,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC;;;;;;;;GAanD"}
|
|
@@ -1,133 +0,0 @@
|
|
|
1
|
-
import { EventEmitter } from 'events';
|
|
2
|
-
import { g as getErrorFromUnknown } from './transformTRPCResponse-ff424ff4.mjs';
|
|
3
|
-
|
|
4
|
-
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
5
|
-
class SubscriptionEventEmitter extends EventEmitter {}
|
|
6
|
-
|
|
7
|
-
/**
|
|
8
|
-
* @beta
|
|
9
|
-
*/
|
|
10
|
-
class Subscription {
|
|
11
|
-
constructor(callback) {
|
|
12
|
-
this.events = void 0;
|
|
13
|
-
this.callback = void 0;
|
|
14
|
-
this.isDestroyed = void 0;
|
|
15
|
-
this.isDestroyed = false;
|
|
16
|
-
this.events = new SubscriptionEventEmitter();
|
|
17
|
-
this.callback = callback;
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
destroy() {
|
|
21
|
-
if (this.isDestroyed) {
|
|
22
|
-
return;
|
|
23
|
-
} // debug('Subscription.destroy()', reason);
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
this.isDestroyed = true;
|
|
27
|
-
this.events.emit('destroy');
|
|
28
|
-
this.events.removeAllListeners();
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
async start() {
|
|
32
|
-
/* istanbul ignore next */
|
|
33
|
-
if (this.isDestroyed) {
|
|
34
|
-
throw new Error('Called start() on a destroyed subscription');
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
try {
|
|
38
|
-
const emit = {
|
|
39
|
-
error: err => this.emitError(err),
|
|
40
|
-
data: data => this.emitOutput(data)
|
|
41
|
-
};
|
|
42
|
-
const cancel = await this.callback(emit);
|
|
43
|
-
|
|
44
|
-
if (this.isDestroyed
|
|
45
|
-
/* istanbul ignore next */
|
|
46
|
-
) {
|
|
47
|
-
cancel();
|
|
48
|
-
} else {
|
|
49
|
-
this.events.on('destroy', cancel);
|
|
50
|
-
}
|
|
51
|
-
} catch (cause
|
|
52
|
-
/* istanbul ignore next */
|
|
53
|
-
) {
|
|
54
|
-
this.emitError(getErrorFromUnknown(cause));
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
/* istanbul ignore next */
|
|
58
|
-
|
|
59
|
-
/**
|
|
60
|
-
* @deprecated This method is just here to help with `inferSubscriptionOutput` which I can't get working without it
|
|
61
|
-
*/
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
output() {
|
|
65
|
-
throw new Error('Not in use');
|
|
66
|
-
}
|
|
67
|
-
/**
|
|
68
|
-
* Emit data
|
|
69
|
-
*/
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
emitOutput(data) {
|
|
73
|
-
this.events.emit('data', data);
|
|
74
|
-
}
|
|
75
|
-
/**
|
|
76
|
-
* Emit error
|
|
77
|
-
*/
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
emitError(err) {
|
|
81
|
-
this.events.emit('error', err);
|
|
82
|
-
}
|
|
83
|
-
|
|
84
|
-
on(...args) {
|
|
85
|
-
return this.events.on(...args);
|
|
86
|
-
}
|
|
87
|
-
|
|
88
|
-
off(...args) {
|
|
89
|
-
return this.events.off(...args);
|
|
90
|
-
}
|
|
91
|
-
|
|
92
|
-
}
|
|
93
|
-
/**
|
|
94
|
-
* @alpha Might be removed
|
|
95
|
-
*/
|
|
96
|
-
|
|
97
|
-
function subscriptionPullFactory(opts) {
|
|
98
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
99
|
-
let timer;
|
|
100
|
-
let stopped = false;
|
|
101
|
-
|
|
102
|
-
async function _pull(emit) {
|
|
103
|
-
/* istanbul ignore next */
|
|
104
|
-
if (stopped) {
|
|
105
|
-
return;
|
|
106
|
-
}
|
|
107
|
-
|
|
108
|
-
try {
|
|
109
|
-
await opts.pull(emit);
|
|
110
|
-
} catch (err
|
|
111
|
-
/* istanbul ignore next */
|
|
112
|
-
) {
|
|
113
|
-
emit.error(getErrorFromUnknown(err));
|
|
114
|
-
}
|
|
115
|
-
/* istanbul ignore else */
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
if (!stopped) {
|
|
119
|
-
timer = setTimeout(() => _pull(emit), opts.intervalMs);
|
|
120
|
-
}
|
|
121
|
-
}
|
|
122
|
-
|
|
123
|
-
return new Subscription(emit => {
|
|
124
|
-
_pull(emit).catch(err => emit.error(getErrorFromUnknown(err)));
|
|
125
|
-
|
|
126
|
-
return () => {
|
|
127
|
-
clearTimeout(timer);
|
|
128
|
-
stopped = true;
|
|
129
|
-
};
|
|
130
|
-
});
|
|
131
|
-
}
|
|
132
|
-
|
|
133
|
-
export { Subscription as S, subscriptionPullFactory as s };
|
|
@@ -1,136 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
var events = require('events');
|
|
4
|
-
var transformTRPCResponse = require('./transformTRPCResponse-43a869de.js');
|
|
5
|
-
|
|
6
|
-
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
7
|
-
class SubscriptionEventEmitter extends events.EventEmitter {}
|
|
8
|
-
|
|
9
|
-
/**
|
|
10
|
-
* @beta
|
|
11
|
-
*/
|
|
12
|
-
class Subscription {
|
|
13
|
-
constructor(callback) {
|
|
14
|
-
this.events = void 0;
|
|
15
|
-
this.callback = void 0;
|
|
16
|
-
this.isDestroyed = void 0;
|
|
17
|
-
this.isDestroyed = false;
|
|
18
|
-
this.events = new SubscriptionEventEmitter();
|
|
19
|
-
this.callback = callback;
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
destroy() {
|
|
23
|
-
if (this.isDestroyed) {
|
|
24
|
-
return;
|
|
25
|
-
} // debug('Subscription.destroy()', reason);
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
this.isDestroyed = true;
|
|
29
|
-
this.events.emit('destroy');
|
|
30
|
-
this.events.removeAllListeners();
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
async start() {
|
|
34
|
-
/* istanbul ignore next */
|
|
35
|
-
if (this.isDestroyed) {
|
|
36
|
-
throw new Error('Called start() on a destroyed subscription');
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
try {
|
|
40
|
-
const emit = {
|
|
41
|
-
error: err => this.emitError(err),
|
|
42
|
-
data: data => this.emitOutput(data)
|
|
43
|
-
};
|
|
44
|
-
const cancel = await this.callback(emit);
|
|
45
|
-
|
|
46
|
-
if (this.isDestroyed
|
|
47
|
-
/* istanbul ignore next */
|
|
48
|
-
) {
|
|
49
|
-
cancel();
|
|
50
|
-
} else {
|
|
51
|
-
this.events.on('destroy', cancel);
|
|
52
|
-
}
|
|
53
|
-
} catch (cause
|
|
54
|
-
/* istanbul ignore next */
|
|
55
|
-
) {
|
|
56
|
-
this.emitError(transformTRPCResponse.getErrorFromUnknown(cause));
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
/* istanbul ignore next */
|
|
60
|
-
|
|
61
|
-
/**
|
|
62
|
-
* @deprecated This method is just here to help with `inferSubscriptionOutput` which I can't get working without it
|
|
63
|
-
*/
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
output() {
|
|
67
|
-
throw new Error('Not in use');
|
|
68
|
-
}
|
|
69
|
-
/**
|
|
70
|
-
* Emit data
|
|
71
|
-
*/
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
emitOutput(data) {
|
|
75
|
-
this.events.emit('data', data);
|
|
76
|
-
}
|
|
77
|
-
/**
|
|
78
|
-
* Emit error
|
|
79
|
-
*/
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
emitError(err) {
|
|
83
|
-
this.events.emit('error', err);
|
|
84
|
-
}
|
|
85
|
-
|
|
86
|
-
on(...args) {
|
|
87
|
-
return this.events.on(...args);
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
off(...args) {
|
|
91
|
-
return this.events.off(...args);
|
|
92
|
-
}
|
|
93
|
-
|
|
94
|
-
}
|
|
95
|
-
/**
|
|
96
|
-
* @alpha Might be removed
|
|
97
|
-
*/
|
|
98
|
-
|
|
99
|
-
function subscriptionPullFactory(opts) {
|
|
100
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
101
|
-
let timer;
|
|
102
|
-
let stopped = false;
|
|
103
|
-
|
|
104
|
-
async function _pull(emit) {
|
|
105
|
-
/* istanbul ignore next */
|
|
106
|
-
if (stopped) {
|
|
107
|
-
return;
|
|
108
|
-
}
|
|
109
|
-
|
|
110
|
-
try {
|
|
111
|
-
await opts.pull(emit);
|
|
112
|
-
} catch (err
|
|
113
|
-
/* istanbul ignore next */
|
|
114
|
-
) {
|
|
115
|
-
emit.error(transformTRPCResponse.getErrorFromUnknown(err));
|
|
116
|
-
}
|
|
117
|
-
/* istanbul ignore else */
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
if (!stopped) {
|
|
121
|
-
timer = setTimeout(() => _pull(emit), opts.intervalMs);
|
|
122
|
-
}
|
|
123
|
-
}
|
|
124
|
-
|
|
125
|
-
return new Subscription(emit => {
|
|
126
|
-
_pull(emit).catch(err => emit.error(transformTRPCResponse.getErrorFromUnknown(err)));
|
|
127
|
-
|
|
128
|
-
return () => {
|
|
129
|
-
clearTimeout(timer);
|
|
130
|
-
stopped = true;
|
|
131
|
-
};
|
|
132
|
-
});
|
|
133
|
-
}
|
|
134
|
-
|
|
135
|
-
exports.Subscription = Subscription;
|
|
136
|
-
exports.subscriptionPullFactory = subscriptionPullFactory;
|
|
@@ -1,105 +0,0 @@
|
|
|
1
|
-
function getMessageFromUnkownError(err, fallback) {
|
|
2
|
-
if (typeof err === 'string') {
|
|
3
|
-
return err;
|
|
4
|
-
}
|
|
5
|
-
|
|
6
|
-
if (err instanceof Error && typeof err.message === 'string') {
|
|
7
|
-
return err.message;
|
|
8
|
-
}
|
|
9
|
-
|
|
10
|
-
return fallback;
|
|
11
|
-
}
|
|
12
|
-
function getErrorFromUnknown(cause) {
|
|
13
|
-
// this should ideally be an `instanceof TRPCError` but for some reason that isn't working
|
|
14
|
-
// ref https://github.com/trpc/trpc/issues/331
|
|
15
|
-
if (cause instanceof Error && cause.name === 'TRPCError') {
|
|
16
|
-
return cause;
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
const err = new TRPCError({
|
|
20
|
-
code: 'INTERNAL_SERVER_ERROR',
|
|
21
|
-
cause
|
|
22
|
-
}); // take stack trace from cause
|
|
23
|
-
|
|
24
|
-
if (cause instanceof Error) {
|
|
25
|
-
err.stack = cause.stack;
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
return err;
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
class TRPCError extends Error {
|
|
32
|
-
constructor(opts) {
|
|
33
|
-
var _opts$message;
|
|
34
|
-
|
|
35
|
-
const cause = opts.cause;
|
|
36
|
-
const code = opts.code;
|
|
37
|
-
const message = (_opts$message = opts.message) !== null && _opts$message !== void 0 ? _opts$message : getMessageFromUnkownError(cause, code); // eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
38
|
-
// @ts-ignore https://github.com/tc39/proposal-error-cause
|
|
39
|
-
|
|
40
|
-
super(message, {
|
|
41
|
-
cause
|
|
42
|
-
});
|
|
43
|
-
this.cause = void 0;
|
|
44
|
-
this.code = void 0;
|
|
45
|
-
this.code = code;
|
|
46
|
-
this.cause = cause;
|
|
47
|
-
this.name = 'TRPCError';
|
|
48
|
-
Object.setPrototypeOf(this, new.target.prototype);
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
async function callProcedure(opts) {
|
|
54
|
-
const {
|
|
55
|
-
type,
|
|
56
|
-
path,
|
|
57
|
-
input
|
|
58
|
-
} = opts;
|
|
59
|
-
const caller = opts.router.createCaller(opts.ctx);
|
|
60
|
-
|
|
61
|
-
if (type === 'query') {
|
|
62
|
-
return caller.query(path, input);
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
if (type === 'mutation') {
|
|
66
|
-
return caller.mutation(path, input);
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
if (type === 'subscription') {
|
|
70
|
-
const sub = await caller.subscription(path, input);
|
|
71
|
-
return sub;
|
|
72
|
-
}
|
|
73
|
-
/* istanbul ignore next */
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
throw new Error(`Unknown procedure type ${type}`);
|
|
77
|
-
}
|
|
78
|
-
|
|
79
|
-
function transformTRPCResponseItem(router, item) {
|
|
80
|
-
if ('error' in item) {
|
|
81
|
-
return { ...item,
|
|
82
|
-
error: router._def.transformer.output.serialize(item.error)
|
|
83
|
-
};
|
|
84
|
-
}
|
|
85
|
-
|
|
86
|
-
if (item.result.type !== 'data') {
|
|
87
|
-
return item;
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
return { ...item,
|
|
91
|
-
result: { ...item.result,
|
|
92
|
-
data: router._def.transformer.output.serialize(item.result.data)
|
|
93
|
-
}
|
|
94
|
-
};
|
|
95
|
-
}
|
|
96
|
-
/**
|
|
97
|
-
* Takes a unserialized `TRPCResponse` and serializes it with the router's transformers
|
|
98
|
-
**/
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
function transformTRPCResponse(router, itemOrItems) {
|
|
102
|
-
return Array.isArray(itemOrItems) ? itemOrItems.map(item => transformTRPCResponseItem(router, item)) : transformTRPCResponseItem(router, itemOrItems);
|
|
103
|
-
}
|
|
104
|
-
|
|
105
|
-
export { TRPCError as T, callProcedure as c, getErrorFromUnknown as g, transformTRPCResponse as t };
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
type AsyncFn<T> = () => Promise<T> | T;
|
|
2
|
-
/**
|
|
3
|
-
* Wrap a function in a safe wrapper that never throws
|
|
4
|
-
* Returns a discriminated union
|
|
5
|
-
*/
|
|
6
|
-
export async function wrapCallSafe<T>(fn: AsyncFn<T>) {
|
|
7
|
-
try {
|
|
8
|
-
const data = await fn();
|
|
9
|
-
return {
|
|
10
|
-
ok: true as const,
|
|
11
|
-
data,
|
|
12
|
-
};
|
|
13
|
-
} catch (cause) {
|
|
14
|
-
return {
|
|
15
|
-
ok: false as const,
|
|
16
|
-
error: cause,
|
|
17
|
-
};
|
|
18
|
-
}
|
|
19
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from "../../dist/declarations/src/ws/index";
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
-
|
|
5
|
-
var adapters_ws_dist_trpcServerAdaptersWs = require('../../adapters/ws/dist/trpc-server-adapters-ws.cjs.dev.js');
|
|
6
|
-
require('../../dist/transformTRPCResponse-8248515e.cjs.dev.js');
|
|
7
|
-
require('../../dist/subscription-9e007280.cjs.dev.js');
|
|
8
|
-
require('events');
|
|
9
|
-
|
|
10
|
-
/**
|
|
11
|
-
* @deprecated replace your import with `@trpc/server/adapters/ws`
|
|
12
|
-
*/
|
|
13
|
-
const applyWSSHandler = adapters_ws_dist_trpcServerAdaptersWs.applyWSSHandler;
|
|
14
|
-
|
|
15
|
-
exports.applyWSSHandler = applyWSSHandler;
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
-
|
|
5
|
-
var adapters_ws_dist_trpcServerAdaptersWs = require('../../adapters/ws/dist/trpc-server-adapters-ws.cjs.prod.js');
|
|
6
|
-
require('../../dist/transformTRPCResponse-dcbf66c5.cjs.prod.js');
|
|
7
|
-
require('../../dist/subscription-12fb50be.cjs.prod.js');
|
|
8
|
-
require('events');
|
|
9
|
-
|
|
10
|
-
/**
|
|
11
|
-
* @deprecated replace your import with `@trpc/server/adapters/ws`
|
|
12
|
-
*/
|
|
13
|
-
const applyWSSHandler = adapters_ws_dist_trpcServerAdaptersWs.applyWSSHandler;
|
|
14
|
-
|
|
15
|
-
exports.applyWSSHandler = applyWSSHandler;
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import { applyWSSHandler as applyWSSHandler$1 } from '../../adapters/ws/dist/trpc-server-adapters-ws.esm.js';
|
|
2
|
-
import '../../dist/transformTRPCResponse-f73dc4a2.esm.js';
|
|
3
|
-
import '../../dist/subscription-a81120d6.esm.js';
|
|
4
|
-
import 'events';
|
|
5
|
-
|
|
6
|
-
/**
|
|
7
|
-
* @deprecated replace your import with `@trpc/server/adapters/ws`
|
|
8
|
-
*/
|
|
9
|
-
const applyWSSHandler = applyWSSHandler$1;
|
|
10
|
-
|
|
11
|
-
export { applyWSSHandler };
|
package/ws/index.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from '../dist/ws';
|
package/ws/index.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
module.exports = require('../dist/ws/index');
|