@arrirpc/server 0.69.2 → 0.71.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/README.md +62 -52
- package/dist/index.cjs +55 -87
- package/dist/index.d.cts +16 -16
- package/dist/index.d.mts +16 -16
- package/dist/index.d.ts +16 -16
- package/dist/index.mjs +48 -87
- package/package.json +6 -9
package/README.md
CHANGED
|
@@ -2,28 +2,36 @@
|
|
|
2
2
|
|
|
3
3
|
Typescript implementation of [Arri RPC](/README.md). It's built on top of [H3](https://github.com/unjs/h3) and uses [esbuild](https://esbuild.github.io/) for bundling.
|
|
4
4
|
|
|
5
|
-
Parameters and responses are defined using [@arrirpc/schema](/
|
|
5
|
+
Parameters and responses are defined using [@arrirpc/schema](/languages/ts/ts-schema/README.md) for automatic validation and serialization of inputs and outputs and to generate Arri Type Definitions for client generators.
|
|
6
|
+
|
|
7
|
+
## Related Libraries
|
|
8
|
+
|
|
9
|
+
| Name | Description |
|
|
10
|
+
| --------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
11
|
+
| [arri](/tooling/cli/README.md) | The Arri CLI |
|
|
12
|
+
| [@arrirpc/schema](/languages/ts/ts-schema/README.md) | High performance validation library used to define the inputs and outputs of procedures. Can also be used standalone as a generic TS validation library. |
|
|
13
|
+
| [@arrirpc/eslint-plugin](/languages/ts/eslint-plugin/README.md) | Eslint rules for Arri RPC |
|
|
6
14
|
|
|
7
15
|
## Table of Contents
|
|
8
16
|
|
|
9
|
-
-
|
|
10
|
-
-
|
|
11
|
-
-
|
|
12
|
-
-
|
|
13
|
-
-
|
|
14
|
-
-
|
|
15
|
-
-
|
|
16
|
-
-
|
|
17
|
-
-
|
|
18
|
-
-
|
|
19
|
-
-
|
|
20
|
-
-
|
|
21
|
-
-
|
|
22
|
-
-
|
|
23
|
-
-
|
|
24
|
-
-
|
|
25
|
-
-
|
|
26
|
-
-
|
|
17
|
+
- [Quickstart](#quickstart)
|
|
18
|
+
- [Manual Setup](#manual-setup)
|
|
19
|
+
- [Install Dependencies](#install-dependencies)
|
|
20
|
+
- [Scaffold Your Project](#scaffold-your-project)
|
|
21
|
+
- [Usage](#usage)
|
|
22
|
+
- [Creating Procedures](#creating-procedures)
|
|
23
|
+
- [File-Based Routing](#file-based-routing)
|
|
24
|
+
- [Manual Routing](#manual-routing)
|
|
25
|
+
- [Creating Event Stream Procedures](#creating-event-stream-procedures)
|
|
26
|
+
- [Creating Websocket Procedures](#creating-websocket-procedures-experimental)
|
|
27
|
+
- [Adding to the RPC Context](#adding-to-the-rpc-context)
|
|
28
|
+
- [Adding Non-RPC Routes](#adding-non-rpc-routes)
|
|
29
|
+
- [Adding Middleware](#adding-middleware)
|
|
30
|
+
- [Key Concepts](#key-concepts)
|
|
31
|
+
- [Arri Definition File](#arri-definition-file)
|
|
32
|
+
- [How Procedures Map To Endpoints](#how-procedures-map-to-endpoints)
|
|
33
|
+
- [H3 Support](#h3-support)
|
|
34
|
+
- [Arri CLI](#arri-cli)
|
|
27
35
|
|
|
28
36
|
## Quickstart
|
|
29
37
|
|
|
@@ -47,10 +55,12 @@ pnpm run dev
|
|
|
47
55
|
|
|
48
56
|
```bash
|
|
49
57
|
# npm
|
|
50
|
-
npm install arri
|
|
58
|
+
npm install -D arri
|
|
59
|
+
npm install @arrirpc/server @arrirpc/schema
|
|
51
60
|
|
|
52
61
|
# pnpm
|
|
53
|
-
pnpm install arri
|
|
62
|
+
pnpm install -D arri
|
|
63
|
+
pnpm install @arrirpc/server @arrirpc/schema
|
|
54
64
|
```
|
|
55
65
|
|
|
56
66
|
### Scaffold Your Project
|
|
@@ -84,7 +94,7 @@ Create an `arri.config.ts` in the project directory
|
|
|
84
94
|
|
|
85
95
|
```ts
|
|
86
96
|
// arri.config.ts
|
|
87
|
-
import { defineConfig, servers, generators } from
|
|
97
|
+
import { defineConfig, servers, generators } from 'arri';
|
|
88
98
|
|
|
89
99
|
export default defineConfig({
|
|
90
100
|
server: servers.tsServer(),
|
|
@@ -105,7 +115,7 @@ Create an app entry file in your src directory. The name of the file must match
|
|
|
105
115
|
|
|
106
116
|
```ts
|
|
107
117
|
// ./src/app.ts
|
|
108
|
-
import { ArriApp } from
|
|
118
|
+
import { ArriApp } from 'arri';
|
|
109
119
|
|
|
110
120
|
const app = new ArriApp();
|
|
111
121
|
|
|
@@ -154,8 +164,8 @@ Example `.rpc.ts` file
|
|
|
154
164
|
|
|
155
165
|
```ts
|
|
156
166
|
// ./src/users/getUser.rpc.ts
|
|
157
|
-
import { defineRpc } from
|
|
158
|
-
import { a } from
|
|
167
|
+
import { defineRpc } from '@arrirpc/server';
|
|
168
|
+
import { a } from '@arrirpc/schema';
|
|
159
169
|
|
|
160
170
|
export default defineRpc({
|
|
161
171
|
params: a.object({
|
|
@@ -177,8 +187,8 @@ export default defineRpc({
|
|
|
177
187
|
```ts
|
|
178
188
|
export default defineConfig({
|
|
179
189
|
servers: servers.tsServer({
|
|
180
|
-
procedureDir:
|
|
181
|
-
procedureGlobPatterns: [
|
|
190
|
+
procedureDir: 'procedures', // change which directory to look for procedures (This is relative to the srcDir)
|
|
191
|
+
procedureGlobPatterns: ['**/*.rpc.ts'], // change the file name glob pattern for finding rpcs
|
|
182
192
|
}),
|
|
183
193
|
// rest of config
|
|
184
194
|
});
|
|
@@ -221,23 +231,23 @@ Event stream procedures make use of [Server Sent Events](https://developer.mozil
|
|
|
221
231
|
|
|
222
232
|
Arri Event streams sent the following event types:
|
|
223
233
|
|
|
224
|
-
-
|
|
225
|
-
-
|
|
226
|
-
-
|
|
234
|
+
- `message` - A standard message with the response data serialized as JSON
|
|
235
|
+
- `done` - A message to tell clients that there will be no more events
|
|
236
|
+
- `ping` - A message periodically sent by the server to keep the connection alive.
|
|
227
237
|
|
|
228
238
|
```ts
|
|
229
239
|
/// message event ///
|
|
230
240
|
id: string | undefined;
|
|
231
|
-
event:
|
|
241
|
+
event: 'message';
|
|
232
242
|
data: Response; // whatever you have specified as the response serialized to json
|
|
233
243
|
|
|
234
244
|
/// done event ///
|
|
235
|
-
event:
|
|
236
|
-
data:
|
|
245
|
+
event: 'done';
|
|
246
|
+
data: 'this stream has ended';
|
|
237
247
|
|
|
238
248
|
/// ping event ///
|
|
239
|
-
event:
|
|
240
|
-
data:
|
|
249
|
+
event: 'ping';
|
|
250
|
+
data: '';
|
|
241
251
|
```
|
|
242
252
|
|
|
243
253
|
##### Example Usage:
|
|
@@ -261,15 +271,15 @@ export default defineEventStreamRpc({
|
|
|
261
271
|
// send a message every second
|
|
262
272
|
const interval = setInterval(async () => {
|
|
263
273
|
await stream.push({
|
|
264
|
-
id:
|
|
265
|
-
name:
|
|
274
|
+
id: '1',
|
|
275
|
+
name: 'John Doe',
|
|
266
276
|
createdAt: new Date(),
|
|
267
277
|
updatedAt: new Date(),
|
|
268
278
|
});
|
|
269
279
|
}, 1000);
|
|
270
280
|
|
|
271
281
|
// cleanup when the client disconnects
|
|
272
|
-
stream.on(
|
|
282
|
+
stream.on('close', () => {
|
|
273
283
|
clearInterval(interval);
|
|
274
284
|
});
|
|
275
285
|
},
|
|
@@ -412,12 +422,12 @@ const authMiddleware = defineMiddleware(async (event) => {
|
|
|
412
422
|
// assume you did something to get the user from the request
|
|
413
423
|
event.context.user = {
|
|
414
424
|
id: 1,
|
|
415
|
-
name:
|
|
416
|
-
email:
|
|
425
|
+
name: 'John Doe',
|
|
426
|
+
email: 'johndoe@gmail.com',
|
|
417
427
|
};
|
|
418
428
|
});
|
|
419
429
|
|
|
420
|
-
app.rpc(
|
|
430
|
+
app.rpc('sayHello', {
|
|
421
431
|
params: undefined,
|
|
422
432
|
response: a.object({
|
|
423
433
|
message: a.string(),
|
|
@@ -434,9 +444,9 @@ app.rpc("sayHello", {
|
|
|
434
444
|
To get type safety for these new properties create a `.d.ts` file and augment the `ArriEventContext` provided by `@arrirpc/server`
|
|
435
445
|
|
|
436
446
|
```ts
|
|
437
|
-
import
|
|
447
|
+
import '@arrirpc/server';
|
|
438
448
|
|
|
439
|
-
declare module
|
|
449
|
+
declare module '@arrirpc/server' {
|
|
440
450
|
interface ArriEventContext {
|
|
441
451
|
user?: {
|
|
442
452
|
id: number;
|
|
@@ -538,18 +548,18 @@ By default all procedures will become post requests, but you can change this whe
|
|
|
538
548
|
```ts
|
|
539
549
|
// procedures/users/getUser.rpc.ts
|
|
540
550
|
export default defineRpc({
|
|
541
|
-
method:
|
|
551
|
+
method: 'get',
|
|
542
552
|
// rest of config
|
|
543
553
|
});
|
|
544
554
|
```
|
|
545
555
|
|
|
546
556
|
The supported HTTP methods are as follows:
|
|
547
557
|
|
|
548
|
-
-
|
|
549
|
-
-
|
|
550
|
-
-
|
|
551
|
-
-
|
|
552
|
-
-
|
|
558
|
+
- post
|
|
559
|
+
- get
|
|
560
|
+
- delete
|
|
561
|
+
- patch
|
|
562
|
+
- put
|
|
553
563
|
|
|
554
564
|
When using a get method the RPC params will be mapped as query parameters which will be coerced into their type using the `a.coerce` method from `arri-validate`. Get methods support all basic scalar types however arrays and nested objects are not supported.
|
|
555
565
|
|
|
@@ -562,7 +572,7 @@ Arri is built on top of [H3](https://h3.unjs.io/utils/request#getrequestipevent)
|
|
|
562
572
|
Arri re-eports all of the H3 utilities.
|
|
563
573
|
|
|
564
574
|
```ts
|
|
565
|
-
import { getRequestIP, setResponseHeader } from
|
|
575
|
+
import { getRequestIP, setResponseHeader } from '@arrirpc/server';
|
|
566
576
|
```
|
|
567
577
|
|
|
568
578
|
#### Accessing H3 Events
|
|
@@ -592,8 +602,8 @@ defineEventStreamRpc({
|
|
|
592
602
|
Arri server is just an H3 app under the hood so you can start it the same way you would start an H3 app. Although you should note that currently the filed based router only works when using the Arri CLI.
|
|
593
603
|
|
|
594
604
|
```ts
|
|
595
|
-
import { createServer } from
|
|
596
|
-
import { ArriApp, toNodeListener } from
|
|
605
|
+
import { createServer } from 'node:http';
|
|
606
|
+
import { ArriApp, toNodeListener } from '@arrirpc/server';
|
|
597
607
|
|
|
598
608
|
const app = new ArriApp();
|
|
599
609
|
|
package/dist/index.cjs
CHANGED
|
@@ -5,17 +5,11 @@ const h3 = require('h3');
|
|
|
5
5
|
const schema = require('@arrirpc/schema');
|
|
6
6
|
const scule = require('scule');
|
|
7
7
|
|
|
8
|
-
var __defProp$5 = Object.defineProperty;
|
|
9
|
-
var __defNormalProp$5 = (obj, key, value) => key in obj ? __defProp$5(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
10
|
-
var __publicField$5 = (obj, key, value) => {
|
|
11
|
-
__defNormalProp$5(obj, typeof key !== "symbol" ? key + "" : key, value);
|
|
12
|
-
return value;
|
|
13
|
-
};
|
|
14
8
|
class arriError extends Error {
|
|
9
|
+
code;
|
|
10
|
+
data;
|
|
15
11
|
constructor(err) {
|
|
16
12
|
super(err.message);
|
|
17
|
-
__publicField$5(this, "code");
|
|
18
|
-
__publicField$5(this, "data");
|
|
19
13
|
this.code = err.code;
|
|
20
14
|
this.data = err.data;
|
|
21
15
|
if (err.stack) {
|
|
@@ -279,7 +273,7 @@ function createHttpRpcDefinition(rpcName, httpPath, procedure) {
|
|
|
279
273
|
params: getRpcParamName(rpcName, procedure),
|
|
280
274
|
response: getRpcResponseDefinition(rpcName, procedure),
|
|
281
275
|
isDeprecated: procedure.isDeprecated,
|
|
282
|
-
isEventStream: procedure.isEventStream === true ? true :
|
|
276
|
+
isEventStream: procedure.isEventStream === true ? true : undefined
|
|
283
277
|
};
|
|
284
278
|
}
|
|
285
279
|
function getRpcPath(rpcName, prefix = "") {
|
|
@@ -294,7 +288,7 @@ function getRpcPath(rpcName, prefix = "") {
|
|
|
294
288
|
}
|
|
295
289
|
function getRpcParamName(rpcName, procedure) {
|
|
296
290
|
if (!isRpcParamSchema(procedure.params)) {
|
|
297
|
-
return
|
|
291
|
+
return undefined;
|
|
298
292
|
}
|
|
299
293
|
const nameParts = rpcName.split(".").map(
|
|
300
294
|
(part) => codegenUtils.removeDisallowedChars(part, `!@#$%^&*()+=[]{}|\\;:'"<>,./?`)
|
|
@@ -304,7 +298,7 @@ function getRpcParamName(rpcName, procedure) {
|
|
|
304
298
|
}
|
|
305
299
|
function getRpcResponseName(rpcName, procedure) {
|
|
306
300
|
if (!isRpcParamSchema(procedure.response)) {
|
|
307
|
-
return
|
|
301
|
+
return undefined;
|
|
308
302
|
}
|
|
309
303
|
const nameParts = rpcName.split(".").map(
|
|
310
304
|
(part) => codegenUtils.removeDisallowedChars(part, `!@#$%^&*()+=[]{}|\\;:'"<>,./?`)
|
|
@@ -314,17 +308,17 @@ function getRpcResponseName(rpcName, procedure) {
|
|
|
314
308
|
}
|
|
315
309
|
function getRpcResponseDefinition(rpcName, procedure) {
|
|
316
310
|
if (!isRpcParamSchema(procedure.response)) {
|
|
317
|
-
return
|
|
311
|
+
return undefined;
|
|
318
312
|
}
|
|
319
313
|
const name = getRpcResponseName(rpcName, procedure);
|
|
320
314
|
if (!name) {
|
|
321
|
-
return
|
|
315
|
+
return undefined;
|
|
322
316
|
}
|
|
323
317
|
return name;
|
|
324
318
|
}
|
|
325
319
|
function registerRpc(router, path, procedure, opts) {
|
|
326
|
-
const paramValidator = procedure.params ? getSchemaValidator(procedure.name, "params", procedure.params) :
|
|
327
|
-
const responseValidator = procedure.response ? getSchemaValidator(procedure.name, "response", procedure.response) :
|
|
320
|
+
const paramValidator = procedure.params ? getSchemaValidator(procedure.name, "params", procedure.params) : undefined;
|
|
321
|
+
const responseValidator = procedure.response ? getSchemaValidator(procedure.name, "response", procedure.response) : undefined;
|
|
328
322
|
const httpMethod = procedure.method ?? "post";
|
|
329
323
|
const handler = h3.eventHandler(async (event) => {
|
|
330
324
|
event.context.rpcName = procedure.name;
|
|
@@ -475,16 +469,10 @@ function getSchemaValidator(rpcName, type, schema$1) {
|
|
|
475
469
|
return schema.a.compile(schema$1);
|
|
476
470
|
} catch (_) {
|
|
477
471
|
console.error(`Error compiling ${type} validator for ${rpcName}`);
|
|
478
|
-
return
|
|
472
|
+
return undefined;
|
|
479
473
|
}
|
|
480
474
|
}
|
|
481
475
|
|
|
482
|
-
var __defProp$4 = Object.defineProperty;
|
|
483
|
-
var __defNormalProp$4 = (obj, key, value) => key in obj ? __defProp$4(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
484
|
-
var __publicField$4 = (obj, key, value) => {
|
|
485
|
-
__defNormalProp$4(obj, typeof key !== "symbol" ? key + "" : key, value);
|
|
486
|
-
return value;
|
|
487
|
-
};
|
|
488
476
|
function defineEventStreamRpc(config) {
|
|
489
477
|
return {
|
|
490
478
|
...config,
|
|
@@ -497,15 +485,15 @@ function isEventStreamRpc(input) {
|
|
|
497
485
|
return isRpc(input) && "isEventStream" in input && input.isEventStream === true;
|
|
498
486
|
}
|
|
499
487
|
class EventStreamConnection {
|
|
488
|
+
lastEventId;
|
|
489
|
+
validationErrors;
|
|
490
|
+
validator;
|
|
491
|
+
serializer;
|
|
492
|
+
// for some reason Rollup cannot output DTS when this is set to NodeJS.Timeout
|
|
493
|
+
pingInterval = undefined;
|
|
494
|
+
pingIntervalMs;
|
|
495
|
+
eventStream;
|
|
500
496
|
constructor(event, opts) {
|
|
501
|
-
__publicField$4(this, "lastEventId");
|
|
502
|
-
__publicField$4(this, "validationErrors");
|
|
503
|
-
__publicField$4(this, "validator");
|
|
504
|
-
__publicField$4(this, "serializer");
|
|
505
|
-
// for some reason Rollup cannot output DTS when this is set to NodeJS.Timeout
|
|
506
|
-
__publicField$4(this, "pingInterval");
|
|
507
|
-
__publicField$4(this, "pingIntervalMs");
|
|
508
|
-
__publicField$4(this, "eventStream");
|
|
509
497
|
this.eventStream = h3.createEventStream(event);
|
|
510
498
|
this.lastEventId = h3.getHeader(event, "Last-Event-Id");
|
|
511
499
|
this.pingIntervalMs = opts.pingInterval ?? 6e4;
|
|
@@ -585,8 +573,8 @@ class EventStreamConnection {
|
|
|
585
573
|
}
|
|
586
574
|
}
|
|
587
575
|
function registerEventStreamRpc(router, path, procedure, opts) {
|
|
588
|
-
const paramValidator = procedure.params ? getSchemaValidator(procedure.name, "params", procedure.params) :
|
|
589
|
-
const responseValidator = procedure.response ? getSchemaValidator(procedure.name, "response", procedure.response) :
|
|
576
|
+
const paramValidator = procedure.params ? getSchemaValidator(procedure.name, "params", procedure.params) : undefined;
|
|
577
|
+
const responseValidator = procedure.response ? getSchemaValidator(procedure.name, "response", procedure.response) : undefined;
|
|
590
578
|
const httpMethod = procedure.method ?? "get";
|
|
591
579
|
const handler = h3.eventHandler(async (event) => {
|
|
592
580
|
event.context.rpcName = procedure.name;
|
|
@@ -615,12 +603,9 @@ function registerEventStreamRpc(router, path, procedure, opts) {
|
|
|
615
603
|
validator: responseValidator?.validate ?? function() {
|
|
616
604
|
return true;
|
|
617
605
|
},
|
|
618
|
-
serializer: (
|
|
619
|
-
|
|
620
|
-
|
|
621
|
-
return "";
|
|
622
|
-
}
|
|
623
|
-
),
|
|
606
|
+
serializer: responseValidator?.serialize ?? function(_) {
|
|
607
|
+
return "";
|
|
608
|
+
},
|
|
624
609
|
validationErrors(input) {
|
|
625
610
|
if (procedure.response) {
|
|
626
611
|
return schema.a.errors(procedure.response, input);
|
|
@@ -782,17 +767,11 @@ function handleRoute(router, method, route, opts) {
|
|
|
782
767
|
}
|
|
783
768
|
}
|
|
784
769
|
|
|
785
|
-
var __defProp$3 = Object.defineProperty;
|
|
786
|
-
var __defNormalProp$3 = (obj, key, value) => key in obj ? __defProp$3(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
787
|
-
var __publicField$3 = (obj, key, value) => {
|
|
788
|
-
__defNormalProp$3(obj, typeof key !== "symbol" ? key + "" : key, value);
|
|
789
|
-
return value;
|
|
790
|
-
};
|
|
791
770
|
class ArriRouter {
|
|
771
|
+
routes = [];
|
|
772
|
+
definitions = {};
|
|
773
|
+
prefix;
|
|
792
774
|
constructor(routePrefix = "") {
|
|
793
|
-
__publicField$3(this, "routes", []);
|
|
794
|
-
__publicField$3(this, "definitions", {});
|
|
795
|
-
__publicField$3(this, "prefix");
|
|
796
775
|
this.prefix = routePrefix;
|
|
797
776
|
}
|
|
798
777
|
route(route) {
|
|
@@ -812,19 +791,13 @@ class ArriRouter {
|
|
|
812
791
|
}
|
|
813
792
|
}
|
|
814
793
|
|
|
815
|
-
var __defProp$2 = Object.defineProperty;
|
|
816
|
-
var __defNormalProp$2 = (obj, key, value) => key in obj ? __defProp$2(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
817
|
-
var __publicField$2 = (obj, key, value) => {
|
|
818
|
-
__defNormalProp$2(obj, typeof key !== "symbol" ? key + "" : key, value);
|
|
819
|
-
return value;
|
|
820
|
-
};
|
|
821
794
|
class ArriService {
|
|
795
|
+
name;
|
|
822
796
|
constructor(name) {
|
|
823
|
-
__publicField$2(this, "name");
|
|
824
|
-
__publicField$2(this, "procedures", []);
|
|
825
|
-
__publicField$2(this, "definitions", {});
|
|
826
797
|
this.name = name;
|
|
827
798
|
}
|
|
799
|
+
procedures = [];
|
|
800
|
+
definitions = {};
|
|
828
801
|
rpc(name, procedure) {
|
|
829
802
|
procedure.name = `${this.name}.${name}`;
|
|
830
803
|
this.procedures.push(procedure);
|
|
@@ -849,18 +822,12 @@ function defineService(name, procedures) {
|
|
|
849
822
|
return service;
|
|
850
823
|
}
|
|
851
824
|
|
|
852
|
-
var __defProp$1 = Object.defineProperty;
|
|
853
|
-
var __defNormalProp$1 = (obj, key, value) => key in obj ? __defProp$1(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
854
|
-
var __publicField$1 = (obj, key, value) => {
|
|
855
|
-
__defNormalProp$1(obj, typeof key !== "symbol" ? key + "" : key, value);
|
|
856
|
-
return value;
|
|
857
|
-
};
|
|
858
825
|
class WsPeer {
|
|
826
|
+
_peer;
|
|
827
|
+
_validator;
|
|
828
|
+
context;
|
|
829
|
+
url;
|
|
859
830
|
constructor(peer, opts) {
|
|
860
|
-
__publicField$1(this, "_peer");
|
|
861
|
-
__publicField$1(this, "_validator");
|
|
862
|
-
__publicField$1(this, "context");
|
|
863
|
-
__publicField$1(this, "url");
|
|
864
831
|
this._peer = peer;
|
|
865
832
|
this._validator = opts.validator;
|
|
866
833
|
this.url = peer.websocket.url ?? "";
|
|
@@ -937,30 +904,24 @@ function createWsRpcDefinition(rpcName, path, rpc) {
|
|
|
937
904
|
};
|
|
938
905
|
}
|
|
939
906
|
|
|
940
|
-
var __defProp = Object.defineProperty;
|
|
941
|
-
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
942
|
-
var __publicField = (obj, key, value) => {
|
|
943
|
-
__defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
|
|
944
|
-
return value;
|
|
945
|
-
};
|
|
946
907
|
const createAppDefinition = (def) => def;
|
|
947
908
|
class ArriApp {
|
|
909
|
+
__isArri__ = true;
|
|
910
|
+
h3App;
|
|
911
|
+
h3Router = h3.createRouter();
|
|
912
|
+
_rpcDefinitionPath;
|
|
913
|
+
_rpcRoutePrefix;
|
|
914
|
+
appInfo;
|
|
915
|
+
_procedures = {};
|
|
916
|
+
_definitions = {};
|
|
917
|
+
_middlewares = [];
|
|
918
|
+
_onRequest;
|
|
919
|
+
_onAfterResponse;
|
|
920
|
+
_onBeforeResponse;
|
|
921
|
+
_onError;
|
|
922
|
+
_debug;
|
|
923
|
+
definitionPath;
|
|
948
924
|
constructor(opts = {}) {
|
|
949
|
-
__publicField(this, "__isArri__", true);
|
|
950
|
-
__publicField(this, "h3App");
|
|
951
|
-
__publicField(this, "h3Router", h3.createRouter());
|
|
952
|
-
__publicField(this, "_rpcDefinitionPath");
|
|
953
|
-
__publicField(this, "_rpcRoutePrefix");
|
|
954
|
-
__publicField(this, "appInfo");
|
|
955
|
-
__publicField(this, "_procedures", {});
|
|
956
|
-
__publicField(this, "_definitions", {});
|
|
957
|
-
__publicField(this, "_middlewares", []);
|
|
958
|
-
__publicField(this, "_onRequest");
|
|
959
|
-
__publicField(this, "_onAfterResponse");
|
|
960
|
-
__publicField(this, "_onBeforeResponse");
|
|
961
|
-
__publicField(this, "_onError");
|
|
962
|
-
__publicField(this, "_debug");
|
|
963
|
-
__publicField(this, "definitionPath");
|
|
964
925
|
this.appInfo = opts?.appInfo;
|
|
965
926
|
this.h3App = h3.createApp({
|
|
966
927
|
debug: opts?.debug
|
|
@@ -1158,6 +1119,13 @@ exports.registerRoute = registerRoute;
|
|
|
1158
1119
|
exports.registerRpc = registerRpc;
|
|
1159
1120
|
exports.registerWebsocketRpc = registerWebsocketRpc;
|
|
1160
1121
|
exports.validateRpcRequestInput = validateRpcRequestInput;
|
|
1122
|
+
Object.prototype.hasOwnProperty.call(h3, '__proto__') &&
|
|
1123
|
+
!Object.prototype.hasOwnProperty.call(exports, '__proto__') &&
|
|
1124
|
+
Object.defineProperty(exports, '__proto__', {
|
|
1125
|
+
enumerable: true,
|
|
1126
|
+
value: h3['__proto__']
|
|
1127
|
+
});
|
|
1128
|
+
|
|
1161
1129
|
Object.keys(h3).forEach(function (k) {
|
|
1162
1130
|
if (k !== 'default' && !Object.prototype.hasOwnProperty.call(exports, k)) exports[k] = h3[k];
|
|
1163
1131
|
});
|
package/dist/index.d.cts
CHANGED
|
@@ -55,9 +55,9 @@ declare const arriErrorResponse: AObjectSchema<{
|
|
|
55
55
|
data?: any;
|
|
56
56
|
}>;
|
|
57
57
|
type arriErrorResponse = a.infer<typeof arriErrorResponse>;
|
|
58
|
-
declare function defineError(statusCode: StatusCode, input?: Partial<Omit<arriErrorResponse,
|
|
59
|
-
declare function errorResponseFromValidationErrors(errors: ValidationError[
|
|
60
|
-
declare function handleH3Error(err: unknown, event: H3Event, onError: ArriOptions[
|
|
58
|
+
declare function defineError(statusCode: StatusCode, input?: Partial<Omit<arriErrorResponse, 'code' | 'stack'>>): arriError;
|
|
59
|
+
declare function errorResponseFromValidationErrors(errors: ValidationError['errors'], prefixText?: string): H3Error;
|
|
60
|
+
declare function handleH3Error(err: unknown, event: H3Event, onError: ArriOptions['onError'], debug: boolean): Promise<void>;
|
|
61
61
|
|
|
62
62
|
interface RouteEvent<TPath extends string, TQuery extends Record<any, any> = any, TBody = any> extends H3Event {
|
|
63
63
|
context: RouteEventContext<TPath, TQuery, TBody>;
|
|
@@ -74,7 +74,7 @@ interface ArriRoute<TPath extends string, TQuery extends AObjectSchema<any, any>
|
|
|
74
74
|
postHandler?: (event: PostRouteEvent<TPath, InferType<TQuery>, InferType<TBody>, Awaited<TResponse>>) => any;
|
|
75
75
|
}
|
|
76
76
|
declare function defineRoute<TPath extends string, TQuery extends AObjectSchema<any, any> = any, TBody extends AObjectSchema<any, any> = any, TResponse = any>(route: ArriRoute<TPath, TQuery, TBody, TResponse>): ArriRoute<TPath, TQuery, TBody, TResponse>;
|
|
77
|
-
type RouteOptions = Pick<ArriOptions,
|
|
77
|
+
type RouteOptions = Pick<ArriOptions, 'onAfterResponse' | 'onBeforeResponse' | 'onError' | 'onRequest' | 'debug'> & {
|
|
78
78
|
middleware: Middleware[];
|
|
79
79
|
};
|
|
80
80
|
declare function registerRoute(router: Router, route: ArriRoute<any>, opts: RouteOptions): void;
|
|
@@ -91,9 +91,9 @@ declare class ArriRouter {
|
|
|
91
91
|
getDefinitions(): DefinitionMap;
|
|
92
92
|
}
|
|
93
93
|
|
|
94
|
-
declare function defineEventStreamRpc<TParams extends RpcParamSchema | undefined = undefined, TResponse extends RpcParamSchema | undefined | never = undefined>(config: Omit<EventStreamRpc<TParams, TResponse>,
|
|
94
|
+
declare function defineEventStreamRpc<TParams extends RpcParamSchema | undefined = undefined, TResponse extends RpcParamSchema | undefined | never = undefined>(config: Omit<EventStreamRpc<TParams, TResponse>, 'isEventStream' | 'transport'>): EventStreamRpc<TParams, TResponse>;
|
|
95
95
|
declare function isEventStreamRpc(input: unknown): input is EventStreamRpc<any, any>;
|
|
96
|
-
interface EventStreamRpc<TParams extends RpcParamSchema | undefined = undefined, TResponse extends RpcParamSchema | undefined = undefined> extends Omit<HttpRpc<true, TParams, TResponse>,
|
|
96
|
+
interface EventStreamRpc<TParams extends RpcParamSchema | undefined = undefined, TResponse extends RpcParamSchema | undefined = undefined> extends Omit<HttpRpc<true, TParams, TResponse>, 'handler' | 'postHandler'> {
|
|
97
97
|
isEventStream: true;
|
|
98
98
|
handler: EventStreamRpcHandler<TParams extends RpcParamSchema ? InferType<TParams> : undefined, TResponse extends RpcParamSchema ? InferType<TResponse> : undefined>;
|
|
99
99
|
}
|
|
@@ -146,7 +146,7 @@ interface NamedWebsocketRpc<TParams extends RpcParamSchema | undefined = undefin
|
|
|
146
146
|
name: string;
|
|
147
147
|
}
|
|
148
148
|
interface WebsocketRpc<TParams extends RpcParamSchema | undefined = undefined, TResponse extends RpcParamSchema | undefined = undefined> {
|
|
149
|
-
transport:
|
|
149
|
+
transport: 'ws';
|
|
150
150
|
description?: string;
|
|
151
151
|
path?: string;
|
|
152
152
|
isDeprecated?: boolean;
|
|
@@ -189,7 +189,7 @@ interface WebSocketRpcHandler<TParams, TResponse> {
|
|
|
189
189
|
/**
|
|
190
190
|
* @experimental
|
|
191
191
|
*/
|
|
192
|
-
declare function defineWebsocketRpc<TParams extends RpcParamSchema | undefined, TResponse extends RpcParamSchema | undefined>(def: Omit<WebsocketRpc<TParams, TResponse>,
|
|
192
|
+
declare function defineWebsocketRpc<TParams extends RpcParamSchema | undefined, TResponse extends RpcParamSchema | undefined>(def: Omit<WebsocketRpc<TParams, TResponse>, 'transport'>): WebsocketRpc<TParams, TResponse>;
|
|
193
193
|
/**
|
|
194
194
|
* @experimental
|
|
195
195
|
*/
|
|
@@ -206,7 +206,7 @@ interface NamedHttpRpc<TIsEventStream extends boolean = false, TParams extends R
|
|
|
206
206
|
}
|
|
207
207
|
type Rpc<TIsEventStream extends boolean = false, TParams extends RpcParamSchema | undefined = undefined, TResponse extends RpcParamSchema | undefined = undefined> = HttpRpc<TIsEventStream, TParams, TResponse> | WebsocketRpc<TParams, TResponse>;
|
|
208
208
|
interface HttpRpc<TIsEventStream extends boolean = false, TParams extends RpcParamSchema | undefined = undefined, TResponse extends RpcParamSchema | undefined = undefined> {
|
|
209
|
-
transport:
|
|
209
|
+
transport: 'http';
|
|
210
210
|
method?: RpcHttpMethod;
|
|
211
211
|
path?: string;
|
|
212
212
|
description?: string;
|
|
@@ -218,23 +218,23 @@ interface HttpRpc<TIsEventStream extends boolean = false, TParams extends RpcPar
|
|
|
218
218
|
handler: TIsEventStream extends true ? EventStreamRpcHandler<TParams extends RpcParamSchema ? InferType<TParams> : undefined, TResponse extends RpcParamSchema ? InferType<TResponse> : undefined> : RpcHandler<TParams extends RpcParamSchema ? InferType<TParams> : undefined, TResponse extends RpcParamSchema ? InferType<TResponse> : void>;
|
|
219
219
|
postHandler?: TIsEventStream extends true ? undefined : RpcPostHandler<TParams extends RpcParamSchema ? InferType<TParams> : undefined, TResponse extends RpcParamSchema ? InferType<TResponse> : undefined>;
|
|
220
220
|
}
|
|
221
|
-
interface RpcEvent<TParams = undefined> extends Omit<H3Event,
|
|
221
|
+
interface RpcEvent<TParams = undefined> extends Omit<H3Event, 'context'> {
|
|
222
222
|
context: RpcEventContext<TParams>;
|
|
223
223
|
}
|
|
224
|
-
interface RpcPostEvent<TParams = undefined, TResponse = undefined> extends Omit<H3Event,
|
|
224
|
+
interface RpcPostEvent<TParams = undefined, TResponse = undefined> extends Omit<H3Event, 'context'> {
|
|
225
225
|
context: RpcPostEventContext<TParams, TResponse>;
|
|
226
226
|
}
|
|
227
227
|
type RpcHandler<TParams, TResponse> = (context: RpcEventContext<TParams>, event: RpcEvent<TParams>) => TResponse | Promise<TResponse>;
|
|
228
228
|
type RpcPostHandler<TParams, TResponse> = (context: RpcPostEventContext<TParams, TResponse>, event: RpcPostEvent<TParams, TResponse>) => any;
|
|
229
229
|
declare function isRpc(input: unknown): input is HttpRpc<any, any>;
|
|
230
|
-
declare function defineRpc<TParams extends RpcParamSchema | undefined = undefined, TResponse extends RpcParamSchema | undefined | never = undefined>(config: Omit<HttpRpc<false, TParams, TResponse>,
|
|
230
|
+
declare function defineRpc<TParams extends RpcParamSchema | undefined = undefined, TResponse extends RpcParamSchema | undefined | never = undefined>(config: Omit<HttpRpc<false, TParams, TResponse>, 'transport' | 'isEventStream'>): HttpRpc<false, TParams, TResponse>;
|
|
231
231
|
declare function createHttpRpcDefinition(rpcName: string, httpPath: string, procedure: HttpRpc<any, any, any>): HttpRpcDefinition;
|
|
232
232
|
declare function getRpcPath(rpcName: string, prefix?: string): string;
|
|
233
233
|
declare function getRpcParamName(rpcName: string, procedure: HttpRpc<any, any, any> | WebsocketRpc<any, any>): string | undefined;
|
|
234
234
|
declare function getRpcResponseName(rpcName: string, procedure: HttpRpc<any, any, any> | WebsocketRpc<any, any>): string | undefined;
|
|
235
235
|
declare function registerRpc(router: Router, path: string, procedure: NamedHttpRpc<any, any, any>, opts: RouteOptions): void;
|
|
236
236
|
declare function validateRpcRequestInput(event: H3Event, httpMethod: RpcHttpMethod, schema: ASchema, validator: ReturnType<typeof a.compile>): Promise<void>;
|
|
237
|
-
declare function getSchemaValidator(rpcName: string, type:
|
|
237
|
+
declare function getSchemaValidator(rpcName: string, type: 'params' | 'response', schema: ASchema<any>): ReturnType<typeof a.compile> | undefined;
|
|
238
238
|
|
|
239
239
|
declare class ArriService {
|
|
240
240
|
name: string;
|
|
@@ -256,7 +256,7 @@ declare class ArriApp {
|
|
|
256
256
|
readonly h3Router: Router;
|
|
257
257
|
private readonly _rpcDefinitionPath;
|
|
258
258
|
private readonly _rpcRoutePrefix;
|
|
259
|
-
appInfo: AppDefinition[
|
|
259
|
+
appInfo: AppDefinition['info'];
|
|
260
260
|
private _procedures;
|
|
261
261
|
private _definitions;
|
|
262
262
|
private readonly _middlewares;
|
|
@@ -280,7 +280,7 @@ interface ArriOptions {
|
|
|
280
280
|
/**
|
|
281
281
|
* Metadata to display in the __definition.json file
|
|
282
282
|
*/
|
|
283
|
-
appInfo?: AppDefinition[
|
|
283
|
+
appInfo?: AppDefinition['info'];
|
|
284
284
|
rpcRoutePrefix?: string;
|
|
285
285
|
/**
|
|
286
286
|
* Defaults to /__definitions
|
|
@@ -294,7 +294,7 @@ interface ArriOptions {
|
|
|
294
294
|
onBeforeResponse?: (event: RequestHookEvent) => void | Promise<void>;
|
|
295
295
|
onError?: (error: arriError, event: RequestHookEvent) => void | Promise<void>;
|
|
296
296
|
}
|
|
297
|
-
interface RequestHookEvent extends Omit<H3Event,
|
|
297
|
+
interface RequestHookEvent extends Omit<H3Event, 'context'> {
|
|
298
298
|
context: RequestHookContext;
|
|
299
299
|
}
|
|
300
300
|
|
package/dist/index.d.mts
CHANGED
|
@@ -55,9 +55,9 @@ declare const arriErrorResponse: AObjectSchema<{
|
|
|
55
55
|
data?: any;
|
|
56
56
|
}>;
|
|
57
57
|
type arriErrorResponse = a.infer<typeof arriErrorResponse>;
|
|
58
|
-
declare function defineError(statusCode: StatusCode, input?: Partial<Omit<arriErrorResponse,
|
|
59
|
-
declare function errorResponseFromValidationErrors(errors: ValidationError[
|
|
60
|
-
declare function handleH3Error(err: unknown, event: H3Event, onError: ArriOptions[
|
|
58
|
+
declare function defineError(statusCode: StatusCode, input?: Partial<Omit<arriErrorResponse, 'code' | 'stack'>>): arriError;
|
|
59
|
+
declare function errorResponseFromValidationErrors(errors: ValidationError['errors'], prefixText?: string): H3Error;
|
|
60
|
+
declare function handleH3Error(err: unknown, event: H3Event, onError: ArriOptions['onError'], debug: boolean): Promise<void>;
|
|
61
61
|
|
|
62
62
|
interface RouteEvent<TPath extends string, TQuery extends Record<any, any> = any, TBody = any> extends H3Event {
|
|
63
63
|
context: RouteEventContext<TPath, TQuery, TBody>;
|
|
@@ -74,7 +74,7 @@ interface ArriRoute<TPath extends string, TQuery extends AObjectSchema<any, any>
|
|
|
74
74
|
postHandler?: (event: PostRouteEvent<TPath, InferType<TQuery>, InferType<TBody>, Awaited<TResponse>>) => any;
|
|
75
75
|
}
|
|
76
76
|
declare function defineRoute<TPath extends string, TQuery extends AObjectSchema<any, any> = any, TBody extends AObjectSchema<any, any> = any, TResponse = any>(route: ArriRoute<TPath, TQuery, TBody, TResponse>): ArriRoute<TPath, TQuery, TBody, TResponse>;
|
|
77
|
-
type RouteOptions = Pick<ArriOptions,
|
|
77
|
+
type RouteOptions = Pick<ArriOptions, 'onAfterResponse' | 'onBeforeResponse' | 'onError' | 'onRequest' | 'debug'> & {
|
|
78
78
|
middleware: Middleware[];
|
|
79
79
|
};
|
|
80
80
|
declare function registerRoute(router: Router, route: ArriRoute<any>, opts: RouteOptions): void;
|
|
@@ -91,9 +91,9 @@ declare class ArriRouter {
|
|
|
91
91
|
getDefinitions(): DefinitionMap;
|
|
92
92
|
}
|
|
93
93
|
|
|
94
|
-
declare function defineEventStreamRpc<TParams extends RpcParamSchema | undefined = undefined, TResponse extends RpcParamSchema | undefined | never = undefined>(config: Omit<EventStreamRpc<TParams, TResponse>,
|
|
94
|
+
declare function defineEventStreamRpc<TParams extends RpcParamSchema | undefined = undefined, TResponse extends RpcParamSchema | undefined | never = undefined>(config: Omit<EventStreamRpc<TParams, TResponse>, 'isEventStream' | 'transport'>): EventStreamRpc<TParams, TResponse>;
|
|
95
95
|
declare function isEventStreamRpc(input: unknown): input is EventStreamRpc<any, any>;
|
|
96
|
-
interface EventStreamRpc<TParams extends RpcParamSchema | undefined = undefined, TResponse extends RpcParamSchema | undefined = undefined> extends Omit<HttpRpc<true, TParams, TResponse>,
|
|
96
|
+
interface EventStreamRpc<TParams extends RpcParamSchema | undefined = undefined, TResponse extends RpcParamSchema | undefined = undefined> extends Omit<HttpRpc<true, TParams, TResponse>, 'handler' | 'postHandler'> {
|
|
97
97
|
isEventStream: true;
|
|
98
98
|
handler: EventStreamRpcHandler<TParams extends RpcParamSchema ? InferType<TParams> : undefined, TResponse extends RpcParamSchema ? InferType<TResponse> : undefined>;
|
|
99
99
|
}
|
|
@@ -146,7 +146,7 @@ interface NamedWebsocketRpc<TParams extends RpcParamSchema | undefined = undefin
|
|
|
146
146
|
name: string;
|
|
147
147
|
}
|
|
148
148
|
interface WebsocketRpc<TParams extends RpcParamSchema | undefined = undefined, TResponse extends RpcParamSchema | undefined = undefined> {
|
|
149
|
-
transport:
|
|
149
|
+
transport: 'ws';
|
|
150
150
|
description?: string;
|
|
151
151
|
path?: string;
|
|
152
152
|
isDeprecated?: boolean;
|
|
@@ -189,7 +189,7 @@ interface WebSocketRpcHandler<TParams, TResponse> {
|
|
|
189
189
|
/**
|
|
190
190
|
* @experimental
|
|
191
191
|
*/
|
|
192
|
-
declare function defineWebsocketRpc<TParams extends RpcParamSchema | undefined, TResponse extends RpcParamSchema | undefined>(def: Omit<WebsocketRpc<TParams, TResponse>,
|
|
192
|
+
declare function defineWebsocketRpc<TParams extends RpcParamSchema | undefined, TResponse extends RpcParamSchema | undefined>(def: Omit<WebsocketRpc<TParams, TResponse>, 'transport'>): WebsocketRpc<TParams, TResponse>;
|
|
193
193
|
/**
|
|
194
194
|
* @experimental
|
|
195
195
|
*/
|
|
@@ -206,7 +206,7 @@ interface NamedHttpRpc<TIsEventStream extends boolean = false, TParams extends R
|
|
|
206
206
|
}
|
|
207
207
|
type Rpc<TIsEventStream extends boolean = false, TParams extends RpcParamSchema | undefined = undefined, TResponse extends RpcParamSchema | undefined = undefined> = HttpRpc<TIsEventStream, TParams, TResponse> | WebsocketRpc<TParams, TResponse>;
|
|
208
208
|
interface HttpRpc<TIsEventStream extends boolean = false, TParams extends RpcParamSchema | undefined = undefined, TResponse extends RpcParamSchema | undefined = undefined> {
|
|
209
|
-
transport:
|
|
209
|
+
transport: 'http';
|
|
210
210
|
method?: RpcHttpMethod;
|
|
211
211
|
path?: string;
|
|
212
212
|
description?: string;
|
|
@@ -218,23 +218,23 @@ interface HttpRpc<TIsEventStream extends boolean = false, TParams extends RpcPar
|
|
|
218
218
|
handler: TIsEventStream extends true ? EventStreamRpcHandler<TParams extends RpcParamSchema ? InferType<TParams> : undefined, TResponse extends RpcParamSchema ? InferType<TResponse> : undefined> : RpcHandler<TParams extends RpcParamSchema ? InferType<TParams> : undefined, TResponse extends RpcParamSchema ? InferType<TResponse> : void>;
|
|
219
219
|
postHandler?: TIsEventStream extends true ? undefined : RpcPostHandler<TParams extends RpcParamSchema ? InferType<TParams> : undefined, TResponse extends RpcParamSchema ? InferType<TResponse> : undefined>;
|
|
220
220
|
}
|
|
221
|
-
interface RpcEvent<TParams = undefined> extends Omit<H3Event,
|
|
221
|
+
interface RpcEvent<TParams = undefined> extends Omit<H3Event, 'context'> {
|
|
222
222
|
context: RpcEventContext<TParams>;
|
|
223
223
|
}
|
|
224
|
-
interface RpcPostEvent<TParams = undefined, TResponse = undefined> extends Omit<H3Event,
|
|
224
|
+
interface RpcPostEvent<TParams = undefined, TResponse = undefined> extends Omit<H3Event, 'context'> {
|
|
225
225
|
context: RpcPostEventContext<TParams, TResponse>;
|
|
226
226
|
}
|
|
227
227
|
type RpcHandler<TParams, TResponse> = (context: RpcEventContext<TParams>, event: RpcEvent<TParams>) => TResponse | Promise<TResponse>;
|
|
228
228
|
type RpcPostHandler<TParams, TResponse> = (context: RpcPostEventContext<TParams, TResponse>, event: RpcPostEvent<TParams, TResponse>) => any;
|
|
229
229
|
declare function isRpc(input: unknown): input is HttpRpc<any, any>;
|
|
230
|
-
declare function defineRpc<TParams extends RpcParamSchema | undefined = undefined, TResponse extends RpcParamSchema | undefined | never = undefined>(config: Omit<HttpRpc<false, TParams, TResponse>,
|
|
230
|
+
declare function defineRpc<TParams extends RpcParamSchema | undefined = undefined, TResponse extends RpcParamSchema | undefined | never = undefined>(config: Omit<HttpRpc<false, TParams, TResponse>, 'transport' | 'isEventStream'>): HttpRpc<false, TParams, TResponse>;
|
|
231
231
|
declare function createHttpRpcDefinition(rpcName: string, httpPath: string, procedure: HttpRpc<any, any, any>): HttpRpcDefinition;
|
|
232
232
|
declare function getRpcPath(rpcName: string, prefix?: string): string;
|
|
233
233
|
declare function getRpcParamName(rpcName: string, procedure: HttpRpc<any, any, any> | WebsocketRpc<any, any>): string | undefined;
|
|
234
234
|
declare function getRpcResponseName(rpcName: string, procedure: HttpRpc<any, any, any> | WebsocketRpc<any, any>): string | undefined;
|
|
235
235
|
declare function registerRpc(router: Router, path: string, procedure: NamedHttpRpc<any, any, any>, opts: RouteOptions): void;
|
|
236
236
|
declare function validateRpcRequestInput(event: H3Event, httpMethod: RpcHttpMethod, schema: ASchema, validator: ReturnType<typeof a.compile>): Promise<void>;
|
|
237
|
-
declare function getSchemaValidator(rpcName: string, type:
|
|
237
|
+
declare function getSchemaValidator(rpcName: string, type: 'params' | 'response', schema: ASchema<any>): ReturnType<typeof a.compile> | undefined;
|
|
238
238
|
|
|
239
239
|
declare class ArriService {
|
|
240
240
|
name: string;
|
|
@@ -256,7 +256,7 @@ declare class ArriApp {
|
|
|
256
256
|
readonly h3Router: Router;
|
|
257
257
|
private readonly _rpcDefinitionPath;
|
|
258
258
|
private readonly _rpcRoutePrefix;
|
|
259
|
-
appInfo: AppDefinition[
|
|
259
|
+
appInfo: AppDefinition['info'];
|
|
260
260
|
private _procedures;
|
|
261
261
|
private _definitions;
|
|
262
262
|
private readonly _middlewares;
|
|
@@ -280,7 +280,7 @@ interface ArriOptions {
|
|
|
280
280
|
/**
|
|
281
281
|
* Metadata to display in the __definition.json file
|
|
282
282
|
*/
|
|
283
|
-
appInfo?: AppDefinition[
|
|
283
|
+
appInfo?: AppDefinition['info'];
|
|
284
284
|
rpcRoutePrefix?: string;
|
|
285
285
|
/**
|
|
286
286
|
* Defaults to /__definitions
|
|
@@ -294,7 +294,7 @@ interface ArriOptions {
|
|
|
294
294
|
onBeforeResponse?: (event: RequestHookEvent) => void | Promise<void>;
|
|
295
295
|
onError?: (error: arriError, event: RequestHookEvent) => void | Promise<void>;
|
|
296
296
|
}
|
|
297
|
-
interface RequestHookEvent extends Omit<H3Event,
|
|
297
|
+
interface RequestHookEvent extends Omit<H3Event, 'context'> {
|
|
298
298
|
context: RequestHookContext;
|
|
299
299
|
}
|
|
300
300
|
|
package/dist/index.d.ts
CHANGED
|
@@ -55,9 +55,9 @@ declare const arriErrorResponse: AObjectSchema<{
|
|
|
55
55
|
data?: any;
|
|
56
56
|
}>;
|
|
57
57
|
type arriErrorResponse = a.infer<typeof arriErrorResponse>;
|
|
58
|
-
declare function defineError(statusCode: StatusCode, input?: Partial<Omit<arriErrorResponse,
|
|
59
|
-
declare function errorResponseFromValidationErrors(errors: ValidationError[
|
|
60
|
-
declare function handleH3Error(err: unknown, event: H3Event, onError: ArriOptions[
|
|
58
|
+
declare function defineError(statusCode: StatusCode, input?: Partial<Omit<arriErrorResponse, 'code' | 'stack'>>): arriError;
|
|
59
|
+
declare function errorResponseFromValidationErrors(errors: ValidationError['errors'], prefixText?: string): H3Error;
|
|
60
|
+
declare function handleH3Error(err: unknown, event: H3Event, onError: ArriOptions['onError'], debug: boolean): Promise<void>;
|
|
61
61
|
|
|
62
62
|
interface RouteEvent<TPath extends string, TQuery extends Record<any, any> = any, TBody = any> extends H3Event {
|
|
63
63
|
context: RouteEventContext<TPath, TQuery, TBody>;
|
|
@@ -74,7 +74,7 @@ interface ArriRoute<TPath extends string, TQuery extends AObjectSchema<any, any>
|
|
|
74
74
|
postHandler?: (event: PostRouteEvent<TPath, InferType<TQuery>, InferType<TBody>, Awaited<TResponse>>) => any;
|
|
75
75
|
}
|
|
76
76
|
declare function defineRoute<TPath extends string, TQuery extends AObjectSchema<any, any> = any, TBody extends AObjectSchema<any, any> = any, TResponse = any>(route: ArriRoute<TPath, TQuery, TBody, TResponse>): ArriRoute<TPath, TQuery, TBody, TResponse>;
|
|
77
|
-
type RouteOptions = Pick<ArriOptions,
|
|
77
|
+
type RouteOptions = Pick<ArriOptions, 'onAfterResponse' | 'onBeforeResponse' | 'onError' | 'onRequest' | 'debug'> & {
|
|
78
78
|
middleware: Middleware[];
|
|
79
79
|
};
|
|
80
80
|
declare function registerRoute(router: Router, route: ArriRoute<any>, opts: RouteOptions): void;
|
|
@@ -91,9 +91,9 @@ declare class ArriRouter {
|
|
|
91
91
|
getDefinitions(): DefinitionMap;
|
|
92
92
|
}
|
|
93
93
|
|
|
94
|
-
declare function defineEventStreamRpc<TParams extends RpcParamSchema | undefined = undefined, TResponse extends RpcParamSchema | undefined | never = undefined>(config: Omit<EventStreamRpc<TParams, TResponse>,
|
|
94
|
+
declare function defineEventStreamRpc<TParams extends RpcParamSchema | undefined = undefined, TResponse extends RpcParamSchema | undefined | never = undefined>(config: Omit<EventStreamRpc<TParams, TResponse>, 'isEventStream' | 'transport'>): EventStreamRpc<TParams, TResponse>;
|
|
95
95
|
declare function isEventStreamRpc(input: unknown): input is EventStreamRpc<any, any>;
|
|
96
|
-
interface EventStreamRpc<TParams extends RpcParamSchema | undefined = undefined, TResponse extends RpcParamSchema | undefined = undefined> extends Omit<HttpRpc<true, TParams, TResponse>,
|
|
96
|
+
interface EventStreamRpc<TParams extends RpcParamSchema | undefined = undefined, TResponse extends RpcParamSchema | undefined = undefined> extends Omit<HttpRpc<true, TParams, TResponse>, 'handler' | 'postHandler'> {
|
|
97
97
|
isEventStream: true;
|
|
98
98
|
handler: EventStreamRpcHandler<TParams extends RpcParamSchema ? InferType<TParams> : undefined, TResponse extends RpcParamSchema ? InferType<TResponse> : undefined>;
|
|
99
99
|
}
|
|
@@ -146,7 +146,7 @@ interface NamedWebsocketRpc<TParams extends RpcParamSchema | undefined = undefin
|
|
|
146
146
|
name: string;
|
|
147
147
|
}
|
|
148
148
|
interface WebsocketRpc<TParams extends RpcParamSchema | undefined = undefined, TResponse extends RpcParamSchema | undefined = undefined> {
|
|
149
|
-
transport:
|
|
149
|
+
transport: 'ws';
|
|
150
150
|
description?: string;
|
|
151
151
|
path?: string;
|
|
152
152
|
isDeprecated?: boolean;
|
|
@@ -189,7 +189,7 @@ interface WebSocketRpcHandler<TParams, TResponse> {
|
|
|
189
189
|
/**
|
|
190
190
|
* @experimental
|
|
191
191
|
*/
|
|
192
|
-
declare function defineWebsocketRpc<TParams extends RpcParamSchema | undefined, TResponse extends RpcParamSchema | undefined>(def: Omit<WebsocketRpc<TParams, TResponse>,
|
|
192
|
+
declare function defineWebsocketRpc<TParams extends RpcParamSchema | undefined, TResponse extends RpcParamSchema | undefined>(def: Omit<WebsocketRpc<TParams, TResponse>, 'transport'>): WebsocketRpc<TParams, TResponse>;
|
|
193
193
|
/**
|
|
194
194
|
* @experimental
|
|
195
195
|
*/
|
|
@@ -206,7 +206,7 @@ interface NamedHttpRpc<TIsEventStream extends boolean = false, TParams extends R
|
|
|
206
206
|
}
|
|
207
207
|
type Rpc<TIsEventStream extends boolean = false, TParams extends RpcParamSchema | undefined = undefined, TResponse extends RpcParamSchema | undefined = undefined> = HttpRpc<TIsEventStream, TParams, TResponse> | WebsocketRpc<TParams, TResponse>;
|
|
208
208
|
interface HttpRpc<TIsEventStream extends boolean = false, TParams extends RpcParamSchema | undefined = undefined, TResponse extends RpcParamSchema | undefined = undefined> {
|
|
209
|
-
transport:
|
|
209
|
+
transport: 'http';
|
|
210
210
|
method?: RpcHttpMethod;
|
|
211
211
|
path?: string;
|
|
212
212
|
description?: string;
|
|
@@ -218,23 +218,23 @@ interface HttpRpc<TIsEventStream extends boolean = false, TParams extends RpcPar
|
|
|
218
218
|
handler: TIsEventStream extends true ? EventStreamRpcHandler<TParams extends RpcParamSchema ? InferType<TParams> : undefined, TResponse extends RpcParamSchema ? InferType<TResponse> : undefined> : RpcHandler<TParams extends RpcParamSchema ? InferType<TParams> : undefined, TResponse extends RpcParamSchema ? InferType<TResponse> : void>;
|
|
219
219
|
postHandler?: TIsEventStream extends true ? undefined : RpcPostHandler<TParams extends RpcParamSchema ? InferType<TParams> : undefined, TResponse extends RpcParamSchema ? InferType<TResponse> : undefined>;
|
|
220
220
|
}
|
|
221
|
-
interface RpcEvent<TParams = undefined> extends Omit<H3Event,
|
|
221
|
+
interface RpcEvent<TParams = undefined> extends Omit<H3Event, 'context'> {
|
|
222
222
|
context: RpcEventContext<TParams>;
|
|
223
223
|
}
|
|
224
|
-
interface RpcPostEvent<TParams = undefined, TResponse = undefined> extends Omit<H3Event,
|
|
224
|
+
interface RpcPostEvent<TParams = undefined, TResponse = undefined> extends Omit<H3Event, 'context'> {
|
|
225
225
|
context: RpcPostEventContext<TParams, TResponse>;
|
|
226
226
|
}
|
|
227
227
|
type RpcHandler<TParams, TResponse> = (context: RpcEventContext<TParams>, event: RpcEvent<TParams>) => TResponse | Promise<TResponse>;
|
|
228
228
|
type RpcPostHandler<TParams, TResponse> = (context: RpcPostEventContext<TParams, TResponse>, event: RpcPostEvent<TParams, TResponse>) => any;
|
|
229
229
|
declare function isRpc(input: unknown): input is HttpRpc<any, any>;
|
|
230
|
-
declare function defineRpc<TParams extends RpcParamSchema | undefined = undefined, TResponse extends RpcParamSchema | undefined | never = undefined>(config: Omit<HttpRpc<false, TParams, TResponse>,
|
|
230
|
+
declare function defineRpc<TParams extends RpcParamSchema | undefined = undefined, TResponse extends RpcParamSchema | undefined | never = undefined>(config: Omit<HttpRpc<false, TParams, TResponse>, 'transport' | 'isEventStream'>): HttpRpc<false, TParams, TResponse>;
|
|
231
231
|
declare function createHttpRpcDefinition(rpcName: string, httpPath: string, procedure: HttpRpc<any, any, any>): HttpRpcDefinition;
|
|
232
232
|
declare function getRpcPath(rpcName: string, prefix?: string): string;
|
|
233
233
|
declare function getRpcParamName(rpcName: string, procedure: HttpRpc<any, any, any> | WebsocketRpc<any, any>): string | undefined;
|
|
234
234
|
declare function getRpcResponseName(rpcName: string, procedure: HttpRpc<any, any, any> | WebsocketRpc<any, any>): string | undefined;
|
|
235
235
|
declare function registerRpc(router: Router, path: string, procedure: NamedHttpRpc<any, any, any>, opts: RouteOptions): void;
|
|
236
236
|
declare function validateRpcRequestInput(event: H3Event, httpMethod: RpcHttpMethod, schema: ASchema, validator: ReturnType<typeof a.compile>): Promise<void>;
|
|
237
|
-
declare function getSchemaValidator(rpcName: string, type:
|
|
237
|
+
declare function getSchemaValidator(rpcName: string, type: 'params' | 'response', schema: ASchema<any>): ReturnType<typeof a.compile> | undefined;
|
|
238
238
|
|
|
239
239
|
declare class ArriService {
|
|
240
240
|
name: string;
|
|
@@ -256,7 +256,7 @@ declare class ArriApp {
|
|
|
256
256
|
readonly h3Router: Router;
|
|
257
257
|
private readonly _rpcDefinitionPath;
|
|
258
258
|
private readonly _rpcRoutePrefix;
|
|
259
|
-
appInfo: AppDefinition[
|
|
259
|
+
appInfo: AppDefinition['info'];
|
|
260
260
|
private _procedures;
|
|
261
261
|
private _definitions;
|
|
262
262
|
private readonly _middlewares;
|
|
@@ -280,7 +280,7 @@ interface ArriOptions {
|
|
|
280
280
|
/**
|
|
281
281
|
* Metadata to display in the __definition.json file
|
|
282
282
|
*/
|
|
283
|
-
appInfo?: AppDefinition[
|
|
283
|
+
appInfo?: AppDefinition['info'];
|
|
284
284
|
rpcRoutePrefix?: string;
|
|
285
285
|
/**
|
|
286
286
|
* Defaults to /__definitions
|
|
@@ -294,7 +294,7 @@ interface ArriOptions {
|
|
|
294
294
|
onBeforeResponse?: (event: RequestHookEvent) => void | Promise<void>;
|
|
295
295
|
onError?: (error: arriError, event: RequestHookEvent) => void | Promise<void>;
|
|
296
296
|
}
|
|
297
|
-
interface RequestHookEvent extends Omit<H3Event,
|
|
297
|
+
interface RequestHookEvent extends Omit<H3Event, 'context'> {
|
|
298
298
|
context: RequestHookContext;
|
|
299
299
|
}
|
|
300
300
|
|
package/dist/index.mjs
CHANGED
|
@@ -4,17 +4,11 @@ export * from 'h3';
|
|
|
4
4
|
import { a, isAObjectSchema, isADiscriminatorSchema, isAdaptedSchema, validatorFromAdaptedSchema } from '@arrirpc/schema';
|
|
5
5
|
import { kebabCase, pascalCase } from 'scule';
|
|
6
6
|
|
|
7
|
-
var __defProp$5 = Object.defineProperty;
|
|
8
|
-
var __defNormalProp$5 = (obj, key, value) => key in obj ? __defProp$5(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
9
|
-
var __publicField$5 = (obj, key, value) => {
|
|
10
|
-
__defNormalProp$5(obj, typeof key !== "symbol" ? key + "" : key, value);
|
|
11
|
-
return value;
|
|
12
|
-
};
|
|
13
7
|
class arriError extends Error {
|
|
8
|
+
code;
|
|
9
|
+
data;
|
|
14
10
|
constructor(err) {
|
|
15
11
|
super(err.message);
|
|
16
|
-
__publicField$5(this, "code");
|
|
17
|
-
__publicField$5(this, "data");
|
|
18
12
|
this.code = err.code;
|
|
19
13
|
this.data = err.data;
|
|
20
14
|
if (err.stack) {
|
|
@@ -278,7 +272,7 @@ function createHttpRpcDefinition(rpcName, httpPath, procedure) {
|
|
|
278
272
|
params: getRpcParamName(rpcName, procedure),
|
|
279
273
|
response: getRpcResponseDefinition(rpcName, procedure),
|
|
280
274
|
isDeprecated: procedure.isDeprecated,
|
|
281
|
-
isEventStream: procedure.isEventStream === true ? true :
|
|
275
|
+
isEventStream: procedure.isEventStream === true ? true : undefined
|
|
282
276
|
};
|
|
283
277
|
}
|
|
284
278
|
function getRpcPath(rpcName, prefix = "") {
|
|
@@ -293,7 +287,7 @@ function getRpcPath(rpcName, prefix = "") {
|
|
|
293
287
|
}
|
|
294
288
|
function getRpcParamName(rpcName, procedure) {
|
|
295
289
|
if (!isRpcParamSchema(procedure.params)) {
|
|
296
|
-
return
|
|
290
|
+
return undefined;
|
|
297
291
|
}
|
|
298
292
|
const nameParts = rpcName.split(".").map(
|
|
299
293
|
(part) => removeDisallowedChars(part, `!@#$%^&*()+=[]{}|\\;:'"<>,./?`)
|
|
@@ -303,7 +297,7 @@ function getRpcParamName(rpcName, procedure) {
|
|
|
303
297
|
}
|
|
304
298
|
function getRpcResponseName(rpcName, procedure) {
|
|
305
299
|
if (!isRpcParamSchema(procedure.response)) {
|
|
306
|
-
return
|
|
300
|
+
return undefined;
|
|
307
301
|
}
|
|
308
302
|
const nameParts = rpcName.split(".").map(
|
|
309
303
|
(part) => removeDisallowedChars(part, `!@#$%^&*()+=[]{}|\\;:'"<>,./?`)
|
|
@@ -313,17 +307,17 @@ function getRpcResponseName(rpcName, procedure) {
|
|
|
313
307
|
}
|
|
314
308
|
function getRpcResponseDefinition(rpcName, procedure) {
|
|
315
309
|
if (!isRpcParamSchema(procedure.response)) {
|
|
316
|
-
return
|
|
310
|
+
return undefined;
|
|
317
311
|
}
|
|
318
312
|
const name = getRpcResponseName(rpcName, procedure);
|
|
319
313
|
if (!name) {
|
|
320
|
-
return
|
|
314
|
+
return undefined;
|
|
321
315
|
}
|
|
322
316
|
return name;
|
|
323
317
|
}
|
|
324
318
|
function registerRpc(router, path, procedure, opts) {
|
|
325
|
-
const paramValidator = procedure.params ? getSchemaValidator(procedure.name, "params", procedure.params) :
|
|
326
|
-
const responseValidator = procedure.response ? getSchemaValidator(procedure.name, "response", procedure.response) :
|
|
319
|
+
const paramValidator = procedure.params ? getSchemaValidator(procedure.name, "params", procedure.params) : undefined;
|
|
320
|
+
const responseValidator = procedure.response ? getSchemaValidator(procedure.name, "response", procedure.response) : undefined;
|
|
327
321
|
const httpMethod = procedure.method ?? "post";
|
|
328
322
|
const handler = eventHandler(async (event) => {
|
|
329
323
|
event.context.rpcName = procedure.name;
|
|
@@ -474,16 +468,10 @@ function getSchemaValidator(rpcName, type, schema) {
|
|
|
474
468
|
return a.compile(schema);
|
|
475
469
|
} catch (_) {
|
|
476
470
|
console.error(`Error compiling ${type} validator for ${rpcName}`);
|
|
477
|
-
return
|
|
471
|
+
return undefined;
|
|
478
472
|
}
|
|
479
473
|
}
|
|
480
474
|
|
|
481
|
-
var __defProp$4 = Object.defineProperty;
|
|
482
|
-
var __defNormalProp$4 = (obj, key, value) => key in obj ? __defProp$4(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
483
|
-
var __publicField$4 = (obj, key, value) => {
|
|
484
|
-
__defNormalProp$4(obj, typeof key !== "symbol" ? key + "" : key, value);
|
|
485
|
-
return value;
|
|
486
|
-
};
|
|
487
475
|
function defineEventStreamRpc(config) {
|
|
488
476
|
return {
|
|
489
477
|
...config,
|
|
@@ -496,15 +484,15 @@ function isEventStreamRpc(input) {
|
|
|
496
484
|
return isRpc(input) && "isEventStream" in input && input.isEventStream === true;
|
|
497
485
|
}
|
|
498
486
|
class EventStreamConnection {
|
|
487
|
+
lastEventId;
|
|
488
|
+
validationErrors;
|
|
489
|
+
validator;
|
|
490
|
+
serializer;
|
|
491
|
+
// for some reason Rollup cannot output DTS when this is set to NodeJS.Timeout
|
|
492
|
+
pingInterval = undefined;
|
|
493
|
+
pingIntervalMs;
|
|
494
|
+
eventStream;
|
|
499
495
|
constructor(event, opts) {
|
|
500
|
-
__publicField$4(this, "lastEventId");
|
|
501
|
-
__publicField$4(this, "validationErrors");
|
|
502
|
-
__publicField$4(this, "validator");
|
|
503
|
-
__publicField$4(this, "serializer");
|
|
504
|
-
// for some reason Rollup cannot output DTS when this is set to NodeJS.Timeout
|
|
505
|
-
__publicField$4(this, "pingInterval");
|
|
506
|
-
__publicField$4(this, "pingIntervalMs");
|
|
507
|
-
__publicField$4(this, "eventStream");
|
|
508
496
|
this.eventStream = createEventStream(event);
|
|
509
497
|
this.lastEventId = getHeader(event, "Last-Event-Id");
|
|
510
498
|
this.pingIntervalMs = opts.pingInterval ?? 6e4;
|
|
@@ -584,8 +572,8 @@ class EventStreamConnection {
|
|
|
584
572
|
}
|
|
585
573
|
}
|
|
586
574
|
function registerEventStreamRpc(router, path, procedure, opts) {
|
|
587
|
-
const paramValidator = procedure.params ? getSchemaValidator(procedure.name, "params", procedure.params) :
|
|
588
|
-
const responseValidator = procedure.response ? getSchemaValidator(procedure.name, "response", procedure.response) :
|
|
575
|
+
const paramValidator = procedure.params ? getSchemaValidator(procedure.name, "params", procedure.params) : undefined;
|
|
576
|
+
const responseValidator = procedure.response ? getSchemaValidator(procedure.name, "response", procedure.response) : undefined;
|
|
589
577
|
const httpMethod = procedure.method ?? "get";
|
|
590
578
|
const handler = eventHandler(async (event) => {
|
|
591
579
|
event.context.rpcName = procedure.name;
|
|
@@ -614,12 +602,9 @@ function registerEventStreamRpc(router, path, procedure, opts) {
|
|
|
614
602
|
validator: responseValidator?.validate ?? function() {
|
|
615
603
|
return true;
|
|
616
604
|
},
|
|
617
|
-
serializer: (
|
|
618
|
-
|
|
619
|
-
|
|
620
|
-
return "";
|
|
621
|
-
}
|
|
622
|
-
),
|
|
605
|
+
serializer: responseValidator?.serialize ?? function(_) {
|
|
606
|
+
return "";
|
|
607
|
+
},
|
|
623
608
|
validationErrors(input) {
|
|
624
609
|
if (procedure.response) {
|
|
625
610
|
return a.errors(procedure.response, input);
|
|
@@ -781,17 +766,11 @@ function handleRoute(router, method, route, opts) {
|
|
|
781
766
|
}
|
|
782
767
|
}
|
|
783
768
|
|
|
784
|
-
var __defProp$3 = Object.defineProperty;
|
|
785
|
-
var __defNormalProp$3 = (obj, key, value) => key in obj ? __defProp$3(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
786
|
-
var __publicField$3 = (obj, key, value) => {
|
|
787
|
-
__defNormalProp$3(obj, typeof key !== "symbol" ? key + "" : key, value);
|
|
788
|
-
return value;
|
|
789
|
-
};
|
|
790
769
|
class ArriRouter {
|
|
770
|
+
routes = [];
|
|
771
|
+
definitions = {};
|
|
772
|
+
prefix;
|
|
791
773
|
constructor(routePrefix = "") {
|
|
792
|
-
__publicField$3(this, "routes", []);
|
|
793
|
-
__publicField$3(this, "definitions", {});
|
|
794
|
-
__publicField$3(this, "prefix");
|
|
795
774
|
this.prefix = routePrefix;
|
|
796
775
|
}
|
|
797
776
|
route(route) {
|
|
@@ -811,19 +790,13 @@ class ArriRouter {
|
|
|
811
790
|
}
|
|
812
791
|
}
|
|
813
792
|
|
|
814
|
-
var __defProp$2 = Object.defineProperty;
|
|
815
|
-
var __defNormalProp$2 = (obj, key, value) => key in obj ? __defProp$2(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
816
|
-
var __publicField$2 = (obj, key, value) => {
|
|
817
|
-
__defNormalProp$2(obj, typeof key !== "symbol" ? key + "" : key, value);
|
|
818
|
-
return value;
|
|
819
|
-
};
|
|
820
793
|
class ArriService {
|
|
794
|
+
name;
|
|
821
795
|
constructor(name) {
|
|
822
|
-
__publicField$2(this, "name");
|
|
823
|
-
__publicField$2(this, "procedures", []);
|
|
824
|
-
__publicField$2(this, "definitions", {});
|
|
825
796
|
this.name = name;
|
|
826
797
|
}
|
|
798
|
+
procedures = [];
|
|
799
|
+
definitions = {};
|
|
827
800
|
rpc(name, procedure) {
|
|
828
801
|
procedure.name = `${this.name}.${name}`;
|
|
829
802
|
this.procedures.push(procedure);
|
|
@@ -848,18 +821,12 @@ function defineService(name, procedures) {
|
|
|
848
821
|
return service;
|
|
849
822
|
}
|
|
850
823
|
|
|
851
|
-
var __defProp$1 = Object.defineProperty;
|
|
852
|
-
var __defNormalProp$1 = (obj, key, value) => key in obj ? __defProp$1(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
853
|
-
var __publicField$1 = (obj, key, value) => {
|
|
854
|
-
__defNormalProp$1(obj, typeof key !== "symbol" ? key + "" : key, value);
|
|
855
|
-
return value;
|
|
856
|
-
};
|
|
857
824
|
class WsPeer {
|
|
825
|
+
_peer;
|
|
826
|
+
_validator;
|
|
827
|
+
context;
|
|
828
|
+
url;
|
|
858
829
|
constructor(peer, opts) {
|
|
859
|
-
__publicField$1(this, "_peer");
|
|
860
|
-
__publicField$1(this, "_validator");
|
|
861
|
-
__publicField$1(this, "context");
|
|
862
|
-
__publicField$1(this, "url");
|
|
863
830
|
this._peer = peer;
|
|
864
831
|
this._validator = opts.validator;
|
|
865
832
|
this.url = peer.websocket.url ?? "";
|
|
@@ -936,30 +903,24 @@ function createWsRpcDefinition(rpcName, path, rpc) {
|
|
|
936
903
|
};
|
|
937
904
|
}
|
|
938
905
|
|
|
939
|
-
var __defProp = Object.defineProperty;
|
|
940
|
-
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
941
|
-
var __publicField = (obj, key, value) => {
|
|
942
|
-
__defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
|
|
943
|
-
return value;
|
|
944
|
-
};
|
|
945
906
|
const createAppDefinition = (def) => def;
|
|
946
907
|
class ArriApp {
|
|
908
|
+
__isArri__ = true;
|
|
909
|
+
h3App;
|
|
910
|
+
h3Router = createRouter();
|
|
911
|
+
_rpcDefinitionPath;
|
|
912
|
+
_rpcRoutePrefix;
|
|
913
|
+
appInfo;
|
|
914
|
+
_procedures = {};
|
|
915
|
+
_definitions = {};
|
|
916
|
+
_middlewares = [];
|
|
917
|
+
_onRequest;
|
|
918
|
+
_onAfterResponse;
|
|
919
|
+
_onBeforeResponse;
|
|
920
|
+
_onError;
|
|
921
|
+
_debug;
|
|
922
|
+
definitionPath;
|
|
947
923
|
constructor(opts = {}) {
|
|
948
|
-
__publicField(this, "__isArri__", true);
|
|
949
|
-
__publicField(this, "h3App");
|
|
950
|
-
__publicField(this, "h3Router", createRouter());
|
|
951
|
-
__publicField(this, "_rpcDefinitionPath");
|
|
952
|
-
__publicField(this, "_rpcRoutePrefix");
|
|
953
|
-
__publicField(this, "appInfo");
|
|
954
|
-
__publicField(this, "_procedures", {});
|
|
955
|
-
__publicField(this, "_definitions", {});
|
|
956
|
-
__publicField(this, "_middlewares", []);
|
|
957
|
-
__publicField(this, "_onRequest");
|
|
958
|
-
__publicField(this, "_onAfterResponse");
|
|
959
|
-
__publicField(this, "_onBeforeResponse");
|
|
960
|
-
__publicField(this, "_onError");
|
|
961
|
-
__publicField(this, "_debug");
|
|
962
|
-
__publicField(this, "definitionPath");
|
|
963
924
|
this.appInfo = opts?.appInfo;
|
|
964
925
|
this.h3App = createApp({
|
|
965
926
|
debug: opts?.debug
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@arrirpc/server",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.71.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": {
|
|
@@ -24,18 +24,15 @@
|
|
|
24
24
|
"dependencies": {
|
|
25
25
|
"@types/source-map-support": "^0.5.10",
|
|
26
26
|
"crossws": "^0.3.1",
|
|
27
|
-
"h3": "^1.13.
|
|
27
|
+
"h3": "^1.13.1",
|
|
28
28
|
"scule": "^1.3.0",
|
|
29
29
|
"source-map-support": "^0.5.21",
|
|
30
30
|
"uncrypto": "^0.1.3",
|
|
31
|
-
"@arrirpc/codegen-
|
|
32
|
-
"@arrirpc/
|
|
33
|
-
"
|
|
34
|
-
"@arrirpc/codegen-utils": "0.69.2",
|
|
35
|
-
"arri": "0.69.2",
|
|
36
|
-
"@arrirpc/schema": "0.69.2"
|
|
31
|
+
"@arrirpc/codegen-utils": "0.71.0",
|
|
32
|
+
"@arrirpc/schema": "0.71.0",
|
|
33
|
+
"arri": "0.71.0"
|
|
37
34
|
},
|
|
38
35
|
"devDependencies": {
|
|
39
|
-
"bun-types": "^1.1.
|
|
36
|
+
"bun-types": "^1.1.43"
|
|
40
37
|
}
|
|
41
38
|
}
|