@enkaku/server 0.1.1 → 0.2.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/lib/error.d.ts ADDED
@@ -0,0 +1,16 @@
1
+ import type { ErrorReplyPayload } from '@enkaku/protocol';
2
+ import { ErrorRejection, type ErrorRejectionOptions } from './rejections.js';
3
+ export type HandlerErrorParams<Code extends string = string, Data extends Record<string, unknown> = Record<string, unknown>, Info extends Record<string, unknown> = Record<string, unknown>> = Partial<ErrorRejectionOptions<Info>> & {
4
+ code: Code;
5
+ data?: Data;
6
+ message?: string;
7
+ };
8
+ export declare class HandlerError<Code extends string, Data extends Record<string, unknown> = Record<string, unknown>, Info extends Record<string, unknown> = Record<string, unknown>> extends ErrorRejection<Info> {
9
+ #private;
10
+ static from<Code extends string, Data extends Record<string, unknown> = Record<string, unknown>, Info extends Record<string, unknown> = Record<string, unknown>>(cause: unknown, params: HandlerErrorParams<Code, Data, Info>): HandlerError<Code, Data, Info>;
11
+ constructor(params: HandlerErrorParams<Code, Data, Info>);
12
+ get code(): Code;
13
+ get data(): Data;
14
+ toPayload(rid: string): ErrorReplyPayload<Code, Data>;
15
+ }
16
+ //# sourceMappingURL=error.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"error.d.ts","sourceRoot":"","sources":["../src/error.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAA;AAEzD,OAAO,EAAE,cAAc,EAAE,KAAK,qBAAqB,EAAE,MAAM,iBAAiB,CAAA;AAE5E,MAAM,MAAM,kBAAkB,CAC5B,IAAI,SAAS,MAAM,GAAG,MAAM,EAC5B,IAAI,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC9D,IAAI,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,IAC5D,OAAO,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC,GAAG;IACzC,IAAI,EAAE,IAAI,CAAA;IACV,IAAI,CAAC,EAAE,IAAI,CAAA;IACX,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB,CAAA;AAED,qBAAa,YAAY,CACvB,IAAI,SAAS,MAAM,EACnB,IAAI,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC9D,IAAI,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAC9D,SAAQ,cAAc,CAAC,IAAI,CAAC;;IAC5B,MAAM,CAAC,IAAI,CACT,IAAI,SAAS,MAAM,EACnB,IAAI,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC9D,IAAI,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC9D,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,kBAAkB,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC;gBAWnF,MAAM,EAAE,kBAAkB,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC;IAOxD,IAAI,IAAI,IAAI,IAAI,CAEf;IAED,IAAI,IAAI,IAAI,IAAI,CAEf;IAED,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,iBAAiB,CAAC,IAAI,EAAE,IAAI,CAAC;CAStD"}
package/lib/error.js ADDED
@@ -0,0 +1,37 @@
1
+ import { ErrorRejection } from './rejections.js';
2
+ export class HandlerError extends ErrorRejection {
3
+ static from(cause, params) {
4
+ return cause instanceof HandlerError ? cause : cause instanceof Error ? new HandlerError({
5
+ message: cause.message,
6
+ ...params,
7
+ cause
8
+ }) : new HandlerError({
9
+ message: 'Unknown error',
10
+ ...params,
11
+ cause
12
+ });
13
+ }
14
+ #code;
15
+ #data;
16
+ constructor(params){
17
+ const { code, data, message, ...options } = params;
18
+ super(message ?? `Handler error code: ${code}`, options);
19
+ this.#code = code;
20
+ this.#data = data ?? {};
21
+ }
22
+ get code() {
23
+ return this.#code;
24
+ }
25
+ get data() {
26
+ return this.#data;
27
+ }
28
+ toPayload(rid) {
29
+ return {
30
+ typ: 'error',
31
+ rid,
32
+ code: this.#code,
33
+ data: this.#data,
34
+ msg: this.message
35
+ };
36
+ }
37
+ }
@@ -0,0 +1,6 @@
1
+ import type { AnyDefinitions, ChannelPayloadOf, ClientMessage } from '@enkaku/protocol';
2
+ import { ErrorRejection } from '../rejections.js';
3
+ import type { HandlerContext } from '../types.js';
4
+ export type ChannelMessageOf<Definitions extends AnyDefinitions, Command extends keyof Definitions & string = keyof Definitions & string> = ClientMessage<ChannelPayloadOf<Command, Definitions[Command]>>;
5
+ export declare function handleChannel<Definitions extends AnyDefinitions, Command extends keyof Definitions & string>(ctx: HandlerContext<Definitions>, msg: ChannelMessageOf<Definitions, Command>): ErrorRejection | Promise<void>;
6
+ //# sourceMappingURL=channel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"channel.d.ts","sourceRoot":"","sources":["../../src/handlers/channel.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,cAAc,EAEd,gBAAgB,EAChB,aAAa,EACd,MAAM,kBAAkB,CAAA;AAGzB,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AACjD,OAAO,KAAK,EAGV,cAAc,EAKf,MAAM,aAAa,CAAA;AAGpB,MAAM,MAAM,gBAAgB,CAC1B,WAAW,SAAS,cAAc,EAClC,OAAO,SAAS,MAAM,WAAW,GAAG,MAAM,GAAG,MAAM,WAAW,GAAG,MAAM,IACrE,aAAa,CAAC,gBAAgB,CAAC,OAAO,EAAE,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA;AAElE,wBAAgB,aAAa,CAC3B,WAAW,SAAS,cAAc,EAClC,OAAO,SAAS,MAAM,WAAW,GAAG,MAAM,EAE1C,GAAG,EAAE,cAAc,CAAC,WAAW,CAAC,EAChC,GAAG,EAAE,gBAAgB,CAAC,WAAW,EAAE,OAAO,CAAC,GAC1C,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAyChC"}
@@ -0,0 +1,38 @@
1
+ import { createPipe } from '@enkaku/stream';
2
+ import { ErrorRejection } from '../rejections.js';
3
+ import { consumeReader, executeHandler } from '../utils.js';
4
+ export function handleChannel(ctx, msg) {
5
+ const handler = ctx.handlers[msg.payload.cmd];
6
+ if (handler == null) {
7
+ return new ErrorRejection(`No handler for command: ${msg.payload.cmd}`, {
8
+ info: msg.payload
9
+ });
10
+ }
11
+ const sendStream = createPipe();
12
+ const controller = Object.assign(new AbortController(), {
13
+ writer: sendStream.writable.getWriter()
14
+ });
15
+ controller.signal.addEventListener('abort', ()=>{
16
+ controller.writer.close();
17
+ });
18
+ ctx.controllers[msg.payload.rid] = controller;
19
+ const receiveStream = createPipe();
20
+ consumeReader({
21
+ onValue: async (val)=>{
22
+ await ctx.send({
23
+ typ: 'receive',
24
+ rid: msg.payload.rid,
25
+ val
26
+ });
27
+ },
28
+ reader: receiveStream.readable.getReader(),
29
+ signal: controller.signal
30
+ });
31
+ const handlerContext = {
32
+ params: msg.payload.prm,
33
+ readable: sendStream.readable,
34
+ signal: controller.signal,
35
+ writable: receiveStream.writable
36
+ };
37
+ return executeHandler(ctx, msg.payload, ()=>handler(handlerContext));
38
+ }
@@ -1,6 +1,6 @@
1
- import type { AnyActionDefinitions, ClientMessage, EventActionPayloadOf, OptionalRecord } from '@enkaku/protocol';
1
+ import type { AnyDefinitions, ClientMessage, EventPayloadOf } from '@enkaku/protocol';
2
2
  import { ErrorRejection } from '../rejections.js';
3
3
  import type { HandlerContext } from '../types.js';
4
- export type EventMessageOf<Definitions extends AnyActionDefinitions, Meta extends OptionalRecord, Name extends keyof Definitions & string = keyof Definitions & string> = ClientMessage<EventActionPayloadOf<Name, Definitions[Name]>, Meta>;
5
- export declare function handleEvent<Definitions extends AnyActionDefinitions, Meta extends OptionalRecord, Name extends keyof Definitions & string>(context: HandlerContext<Definitions, Meta>, message: EventMessageOf<Definitions, Meta, Name>): ErrorRejection | Promise<void>;
4
+ export type EventMessageOf<Definitions extends AnyDefinitions, Command extends keyof Definitions & string = keyof Definitions & string> = ClientMessage<EventPayloadOf<Command, Definitions[Command]>>;
5
+ export declare function handleEvent<Definitions extends AnyDefinitions, Command extends keyof Definitions & string>(ctx: HandlerContext<Definitions>, msg: EventMessageOf<Definitions, Command>): ErrorRejection | Promise<void>;
6
6
  //# sourceMappingURL=event.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"event.d.ts","sourceRoot":"","sources":["../../src/handlers/event.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,oBAAoB,EACpB,aAAa,EACb,oBAAoB,EACpB,cAAc,EACf,MAAM,kBAAkB,CAAA;AAEzB,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AACjD,OAAO,KAAK,EAA+B,cAAc,EAAE,MAAM,aAAa,CAAA;AAE9E,MAAM,MAAM,cAAc,CACxB,WAAW,SAAS,oBAAoB,EACxC,IAAI,SAAS,cAAc,EAC3B,IAAI,SAAS,MAAM,WAAW,GAAG,MAAM,GAAG,MAAM,WAAW,GAAG,MAAM,IAClE,aAAa,CAAC,oBAAoB,CAAC,IAAI,EAAE,WAAW,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAA;AAEtE,wBAAgB,WAAW,CACzB,WAAW,SAAS,oBAAoB,EACxC,IAAI,SAAS,cAAc,EAC3B,IAAI,SAAS,MAAM,WAAW,GAAG,MAAM,EAEvC,OAAO,EAAE,cAAc,CAAC,WAAW,EAAE,IAAI,CAAC,EAC1C,OAAO,EAAE,cAAc,CAAC,WAAW,EAAE,IAAI,EAAE,IAAI,CAAC,GAC/C,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAehC"}
1
+ {"version":3,"file":"event.d.ts","sourceRoot":"","sources":["../../src/handlers/event.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AAErF,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AACjD,OAAO,KAAK,EAA+B,cAAc,EAAE,MAAM,aAAa,CAAA;AAG9E,MAAM,MAAM,cAAc,CACxB,WAAW,SAAS,cAAc,EAClC,OAAO,SAAS,MAAM,WAAW,GAAG,MAAM,GAAG,MAAM,WAAW,GAAG,MAAM,IACrE,aAAa,CAAC,cAAc,CAAC,OAAO,EAAE,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA;AAEhE,wBAAgB,WAAW,CACzB,WAAW,SAAS,cAAc,EAClC,OAAO,SAAS,MAAM,WAAW,GAAG,MAAM,EAE1C,GAAG,EAAE,cAAc,CAAC,WAAW,CAAC,EAChC,GAAG,EAAE,cAAc,CAAC,WAAW,EAAE,OAAO,CAAC,GACxC,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAchC"}
@@ -1,21 +1,20 @@
1
1
  import { ErrorRejection } from '../rejections.js';
2
- export function handleEvent(context, message) {
3
- const { action, meta } = message;
4
- const handler = context.handlers[action.name];
2
+ import { toPromise } from '../utils.js';
3
+ export function handleEvent(ctx, msg) {
4
+ const handler = ctx.handlers[msg.payload.cmd];
5
5
  if (handler == null) {
6
- return new ErrorRejection(`No handler for action ${action.name}`, {
7
- info: action
6
+ return new ErrorRejection(`No handler for command: ${msg.payload.cmd}`, {
7
+ info: msg.payload
8
8
  });
9
9
  }
10
- const data = action.data;
11
- return Promise.resolve(handler({
12
- data,
13
- meta
14
- })).catch((cause)=>{
15
- const err = new ErrorRejection(`Error handling ${action.name}`, {
16
- info: action,
10
+ const data = msg.payload.data;
11
+ return toPromise(()=>handler({
12
+ data
13
+ })).catch((cause)=>{
14
+ const err = new ErrorRejection(`Error handling command: ${msg.payload.cmd}`, {
15
+ info: msg.payload,
17
16
  cause
18
17
  });
19
- context.reject(err);
18
+ ctx.reject(err);
20
19
  });
21
20
  }
@@ -1,6 +1,6 @@
1
- import type { AnyActionDefinitions, ClientMessage, OptionalRecord, RequestActionPayloadOf } from '@enkaku/protocol';
1
+ import type { AnyDefinitions, ClientMessage, RequestPayloadOf } from '@enkaku/protocol';
2
2
  import { ErrorRejection } from '../rejections.js';
3
3
  import type { HandlerContext } from '../types.js';
4
- export type RequestMessageOf<Definitions extends AnyActionDefinitions, Meta extends OptionalRecord, Name extends keyof Definitions & string = keyof Definitions & string> = ClientMessage<RequestActionPayloadOf<Name, Definitions[Name]>, Meta>;
5
- export declare function handleRequest<Definitions extends AnyActionDefinitions, Meta extends OptionalRecord, Name extends keyof Definitions & string>(context: HandlerContext<Definitions, Meta>, message: RequestMessageOf<Definitions, Meta, Name>): ErrorRejection | Promise<void>;
4
+ export type RequestMessageOf<Definitions extends AnyDefinitions, Command extends keyof Definitions & string = keyof Definitions & string> = ClientMessage<RequestPayloadOf<Command, Definitions[Command]>>;
5
+ export declare function handleRequest<Definitions extends AnyDefinitions, Command extends keyof Definitions & string>(ctx: HandlerContext<Definitions>, msg: RequestMessageOf<Definitions, Command>): ErrorRejection | Promise<void>;
6
6
  //# sourceMappingURL=request.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"request.d.ts","sourceRoot":"","sources":["../../src/handlers/request.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,oBAAoB,EAEpB,aAAa,EACb,cAAc,EACd,sBAAsB,EACvB,MAAM,kBAAkB,CAAA;AAEzB,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AACjD,OAAO,KAAK,EAGV,cAAc,EAEf,MAAM,aAAa,CAAA;AAEpB,MAAM,MAAM,gBAAgB,CAC1B,WAAW,SAAS,oBAAoB,EACxC,IAAI,SAAS,cAAc,EAC3B,IAAI,SAAS,MAAM,WAAW,GAAG,MAAM,GAAG,MAAM,WAAW,GAAG,MAAM,IAClE,aAAa,CAAC,sBAAsB,CAAC,IAAI,EAAE,WAAW,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAA;AAExE,wBAAgB,aAAa,CAC3B,WAAW,SAAS,oBAAoB,EACxC,IAAI,SAAS,cAAc,EAC3B,IAAI,SAAS,MAAM,WAAW,GAAG,MAAM,EAEvC,OAAO,EAAE,cAAc,CAAC,WAAW,EAAE,IAAI,CAAC,EAC1C,OAAO,EAAE,gBAAgB,CAAC,WAAW,EAAE,IAAI,EAAE,IAAI,CAAC,GACjD,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAkChC"}
1
+ {"version":3,"file":"request.d.ts","sourceRoot":"","sources":["../../src/handlers/request.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAA;AAEvF,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AACjD,OAAO,KAAK,EAAE,cAAc,EAA0C,MAAM,aAAa,CAAA;AAGzF,MAAM,MAAM,gBAAgB,CAC1B,WAAW,SAAS,cAAc,EAClC,OAAO,SAAS,MAAM,WAAW,GAAG,MAAM,GAAG,MAAM,WAAW,GAAG,MAAM,IACrE,aAAa,CAAC,gBAAgB,CAAC,OAAO,EAAE,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA;AAElE,wBAAgB,aAAa,CAC3B,WAAW,SAAS,cAAc,EAClC,OAAO,SAAS,MAAM,WAAW,GAAG,MAAM,EAE1C,GAAG,EAAE,cAAc,CAAC,WAAW,CAAC,EAChC,GAAG,EAAE,gBAAgB,CAAC,WAAW,EAAE,OAAO,CAAC,GAC1C,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAchC"}
@@ -1,36 +1,17 @@
1
1
  import { ErrorRejection } from '../rejections.js';
2
- export function handleRequest(context, message) {
3
- const { action, meta } = message;
4
- const handler = context.handlers[action.name];
2
+ import { executeHandler } from '../utils.js';
3
+ export function handleRequest(ctx, msg) {
4
+ const handler = ctx.handlers[msg.payload.cmd];
5
5
  if (handler == null) {
6
- return new ErrorRejection(`No handler for action ${action.name}`, {
7
- info: action
6
+ return new ErrorRejection(`No handler for command: ${msg.payload.cmd}`, {
7
+ info: msg.payload
8
8
  });
9
9
  }
10
10
  const controller = new AbortController();
11
- context.controllers[action.id] = controller;
12
- const params = action.params;
13
- return Promise.resolve(handler({
14
- params,
15
- meta,
16
- signal: controller.signal
17
- })).then((value)=>{
18
- if (!controller.signal.aborted) {
19
- return context.send({
20
- action: {
21
- type: 'result',
22
- id: action.id,
23
- value
24
- }
25
- });
26
- }
27
- }).catch((cause)=>{
28
- const err = new ErrorRejection(`Error handling ${action.name}`, {
29
- info: action,
30
- cause
31
- });
32
- context.reject(err);
33
- }).finally(()=>{
34
- delete context.controllers[action.id];
35
- });
11
+ ctx.controllers[msg.payload.rid] = controller;
12
+ const params = msg.payload.prm;
13
+ return executeHandler(ctx, msg.payload, ()=>handler({
14
+ params,
15
+ signal: controller.signal
16
+ }));
36
17
  }
@@ -0,0 +1,6 @@
1
+ import type { AnyDefinitions, ClientMessage, StreamPayloadOf } from '@enkaku/protocol';
2
+ import { ErrorRejection } from '../rejections.js';
3
+ import type { HandlerContext } from '../types.js';
4
+ export type StreamMessageOf<Definitions extends AnyDefinitions, Command extends keyof Definitions & string = keyof Definitions & string> = ClientMessage<StreamPayloadOf<Command, Definitions[Command]>>;
5
+ export declare function handleStream<Definitions extends AnyDefinitions, Command extends keyof Definitions & string>(ctx: HandlerContext<Definitions>, msg: StreamMessageOf<Definitions, Command>): ErrorRejection | Promise<void>;
6
+ //# sourceMappingURL=stream.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stream.d.ts","sourceRoot":"","sources":["../../src/handlers/stream.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,cAAc,EAEd,aAAa,EACb,eAAe,EAChB,MAAM,kBAAkB,CAAA;AAGzB,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AACjD,OAAO,KAAK,EACV,cAAc,EAMf,MAAM,aAAa,CAAA;AAGpB,MAAM,MAAM,eAAe,CACzB,WAAW,SAAS,cAAc,EAClC,OAAO,SAAS,MAAM,WAAW,GAAG,MAAM,GAAG,MAAM,WAAW,GAAG,MAAM,IACrE,aAAa,CAAC,eAAe,CAAC,OAAO,EAAE,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA;AAEjE,wBAAgB,YAAY,CAC1B,WAAW,SAAS,cAAc,EAClC,OAAO,SAAS,MAAM,WAAW,GAAG,MAAM,EAE1C,GAAG,EAAE,cAAc,CAAC,WAAW,CAAC,EAChC,GAAG,EAAE,eAAe,CAAC,WAAW,EAAE,OAAO,CAAC,GACzC,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAgChC"}
@@ -0,0 +1,31 @@
1
+ import { createPipe } from '@enkaku/stream';
2
+ import { ErrorRejection } from '../rejections.js';
3
+ import { consumeReader, executeHandler } from '../utils.js';
4
+ export function handleStream(ctx, msg) {
5
+ const handler = ctx.handlers[msg.payload.cmd];
6
+ if (handler == null) {
7
+ return new ErrorRejection(`No handler for command: ${msg.payload.cmd}`, {
8
+ info: msg.payload
9
+ });
10
+ }
11
+ const controller = new AbortController();
12
+ ctx.controllers[msg.payload.rid] = controller;
13
+ const receiveStream = createPipe();
14
+ consumeReader({
15
+ onValue: async (val)=>{
16
+ await ctx.send({
17
+ typ: 'receive',
18
+ rid: msg.payload.rid,
19
+ val
20
+ });
21
+ },
22
+ reader: receiveStream.readable.getReader(),
23
+ signal: controller.signal
24
+ });
25
+ const handlerContext = {
26
+ params: msg.payload.prm,
27
+ signal: controller.signal,
28
+ writable: receiveStream.writable
29
+ };
30
+ return executeHandler(ctx, msg.payload, ()=>handler(handlerContext));
31
+ }
package/lib/index.d.ts CHANGED
@@ -1,4 +1,4 @@
1
1
  export type { RejectionType } from './rejections.js';
2
2
  export { type ServeParams, type Server, serve } from './server.js';
3
- export type { ActionHandlers, ChannelHandler, ChannelHandlerContext, EventHandler, EventHandlerContext, HandlerReturn, RequestHandler, RequestHandlerContext, StreamHandler, StreamHandlerContext, } from './types.js';
3
+ export type { ChannelHandler, ChannelHandlerContext, CommandHandlers, EventHandler, EventHandlerContext, HandlerReturn, RequestHandler, RequestHandlerContext, StreamHandler, StreamHandlerContext, } from './types.js';
4
4
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AACpD,OAAO,EAAE,KAAK,WAAW,EAAE,KAAK,MAAM,EAAE,KAAK,EAAE,MAAM,aAAa,CAAA;AAClE,YAAY,EACV,cAAc,EACd,cAAc,EACd,qBAAqB,EACrB,YAAY,EACZ,mBAAmB,EACnB,aAAa,EACb,cAAc,EACd,qBAAqB,EACrB,aAAa,EACb,oBAAoB,GACrB,MAAM,YAAY,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AACpD,OAAO,EAAE,KAAK,WAAW,EAAE,KAAK,MAAM,EAAE,KAAK,EAAE,MAAM,aAAa,CAAA;AAClE,YAAY,EACV,cAAc,EACd,qBAAqB,EACrB,eAAe,EACf,YAAY,EACZ,mBAAmB,EACnB,aAAa,EACb,cAAc,EACd,qBAAqB,EACrB,aAAa,EACb,oBAAoB,GACrB,MAAM,YAAY,CAAA"}
@@ -1,23 +1,25 @@
1
- import type { OptionalRecord } from '@enkaku/protocol';
2
1
  export declare enum RejectionReason {
3
2
  ABORT = 1,
4
3
  ERROR = 2,
5
4
  TIMEOUT = 3
6
5
  }
7
- export type RejectionType<Reason extends RejectionReason = RejectionReason, Info extends OptionalRecord = OptionalRecord> = {
6
+ export type RejectionType<Reason extends RejectionReason = RejectionReason, Info extends Record<string, unknown> = Record<string, unknown>> = {
8
7
  readonly reason: Reason;
9
8
  readonly info: Info;
10
9
  };
11
- export declare class Rejection<Reason extends RejectionReason = RejectionReason, Info extends OptionalRecord = OptionalRecord> implements RejectionType<Reason> {
10
+ export declare class Rejection<Reason extends RejectionReason = RejectionReason, Info extends Record<string, unknown> = Record<string, unknown>> implements RejectionType<Reason, Info> {
12
11
  #private;
13
12
  constructor(reason: Reason, info: Info);
14
13
  get reason(): Reason;
15
14
  get info(): Info;
16
15
  }
17
- export type ErrorRejectionOptions<Info extends OptionalRecord = OptionalRecord> = ErrorOptions & {
16
+ export declare class AbortRejection<Info extends Record<string, unknown> = Record<string, unknown>> extends Rejection<RejectionReason.ABORT, Info> {
17
+ constructor(info: Info);
18
+ }
19
+ export type ErrorRejectionOptions<Info extends Record<string, unknown> = Record<string, unknown>> = ErrorOptions & {
18
20
  info: Info;
19
21
  };
20
- export declare class ErrorRejection<Info extends OptionalRecord = OptionalRecord> extends Error implements RejectionType<RejectionReason.ERROR, Info> {
22
+ export declare class ErrorRejection<Info extends Record<string, unknown> = Record<string, unknown>> extends Error implements RejectionType<RejectionReason.ERROR, Info> {
21
23
  #private;
22
24
  constructor(message: string, options?: ErrorRejectionOptions<Info>);
23
25
  get reason(): RejectionReason.ERROR;
@@ -1 +1 @@
1
- {"version":3,"file":"rejections.d.ts","sourceRoot":"","sources":["../src/rejections.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AAEtD,oBAAY,eAAe;IACzB,KAAK,IAAI;IACT,KAAK,IAAI;IACT,OAAO,IAAI;CACZ;AAED,MAAM,MAAM,aAAa,CACvB,MAAM,SAAS,eAAe,GAAG,eAAe,EAChD,IAAI,SAAS,cAAc,GAAG,cAAc,IAC1C;IACF,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAA;CACpB,CAAA;AAED,qBAAa,SAAS,CACpB,MAAM,SAAS,eAAe,GAAG,eAAe,EAChD,IAAI,SAAS,cAAc,GAAG,cAAc,CAC5C,YAAW,aAAa,CAAC,MAAM,CAAC;;gBAKpB,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI;IAKtC,IAAI,MAAM,IAAI,MAAM,CAEnB;IAED,IAAI,IAAI,IAAI,IAAI,CAEf;CACF;AAED,MAAM,MAAM,qBAAqB,CAAC,IAAI,SAAS,cAAc,GAAG,cAAc,IAAI,YAAY,GAAG;IAC/F,IAAI,EAAE,IAAI,CAAA;CACX,CAAA;AAED,qBAAa,cAAc,CAAC,IAAI,SAAS,cAAc,GAAG,cAAc,CACtE,SAAQ,KACR,YAAW,aAAa,CAAC,eAAe,CAAC,KAAK,EAAE,IAAI,CAAC;;gBAIzC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,qBAAqB,CAAC,IAAI,CAAC;IAKlE,IAAI,MAAM,IAAI,eAAe,CAAC,KAAK,CAElC;IAED,IAAI,IAAI,IAAI,IAAI,CAEf;CACF"}
1
+ {"version":3,"file":"rejections.d.ts","sourceRoot":"","sources":["../src/rejections.ts"],"names":[],"mappings":"AAAA,oBAAY,eAAe;IACzB,KAAK,IAAI;IACT,KAAK,IAAI;IACT,OAAO,IAAI;CACZ;AAED,MAAM,MAAM,aAAa,CACvB,MAAM,SAAS,eAAe,GAAG,eAAe,EAChD,IAAI,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,IAC5D;IACF,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAA;CACpB,CAAA;AAED,qBAAa,SAAS,CACpB,MAAM,SAAS,eAAe,GAAG,eAAe,EAChD,IAAI,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAC9D,YAAW,aAAa,CAAC,MAAM,EAAE,IAAI,CAAC;;gBAK1B,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI;IAKtC,IAAI,MAAM,IAAI,MAAM,CAEnB;IAED,IAAI,IAAI,IAAI,IAAI,CAEf;CACF;AAED,qBAAa,cAAc,CACzB,IAAI,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAC9D,SAAQ,SAAS,CAAC,eAAe,CAAC,KAAK,EAAE,IAAI,CAAC;gBAClC,IAAI,EAAE,IAAI;CAGvB;AAED,MAAM,MAAM,qBAAqB,CAAC,IAAI,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,IAC9F,YAAY,GAAG;IACb,IAAI,EAAE,IAAI,CAAA;CACX,CAAA;AAEH,qBAAa,cAAc,CAAC,IAAI,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CACxF,SAAQ,KACR,YAAW,aAAa,CAAC,eAAe,CAAC,KAAK,EAAE,IAAI,CAAC;;gBAIzC,OAAO,EAAE,MAAM,EAAE,OAAO,GAAS,qBAAqB,CAAC,IAAI,CAAC;IAKxE,IAAI,MAAM,IAAI,eAAe,CAAC,KAAK,CAElC;IAED,IAAI,IAAI,IAAI,IAAI,CAEf;CACF"}
package/lib/rejections.js CHANGED
@@ -18,11 +18,18 @@ export class Rejection {
18
18
  return this.#info;
19
19
  }
20
20
  }
21
+ export class AbortRejection extends Rejection {
22
+ constructor(info){
23
+ super(1, info);
24
+ }
25
+ }
21
26
  export class ErrorRejection extends Error {
22
27
  #info;
23
- constructor(message, options){
24
- super(message);
25
- this.#info = options?.info ?? {};
28
+ constructor(message, options = {}){
29
+ super(message, {
30
+ cause: options.cause
31
+ });
32
+ this.#info = options.info ?? {};
26
33
  }
27
34
  get reason() {
28
35
  return 2;
package/lib/server.d.ts CHANGED
@@ -1,21 +1,21 @@
1
- import type { AnyActionDefinitions, OptionalRecord, ServerTransportOf } from '@enkaku/protocol';
1
+ import type { AnyDefinitions, ServerTransportOf } from '@enkaku/protocol';
2
2
  import { type Disposer } from '@enkaku/util';
3
3
  import { type RejectionType } from './rejections.js';
4
- import type { ActionController, ActionHandlers } from './types.js';
5
- export type HandleMessagesParams<Definitions extends AnyActionDefinitions, Meta extends OptionalRecord> = {
6
- controllers: Record<string, ActionController>;
7
- handlers: ActionHandlers<Definitions, Meta>;
4
+ import type { CommandHandlers, HandlerController } from './types.js';
5
+ export type HandleMessagesParams<Definitions extends AnyDefinitions> = {
6
+ controllers: Record<string, HandlerController>;
7
+ handlers: CommandHandlers<Definitions>;
8
8
  reject: (rejection: RejectionType) => void;
9
9
  signal: AbortSignal;
10
- transport: ServerTransportOf<Definitions, Meta>;
10
+ transport: ServerTransportOf<Definitions>;
11
11
  };
12
- export type ServeParams<Definitions extends AnyActionDefinitions, Meta extends OptionalRecord> = {
13
- handlers: ActionHandlers<Definitions, Meta>;
12
+ export type ServeParams<Definitions extends AnyDefinitions> = {
13
+ handlers: CommandHandlers<Definitions>;
14
14
  signal?: AbortSignal;
15
- transport: ServerTransportOf<Definitions, Meta>;
15
+ transport: ServerTransportOf<Definitions>;
16
16
  };
17
17
  export type Server = Disposer & {
18
18
  rejections: ReadableStream<RejectionType>;
19
19
  };
20
- export declare function serve<Definitions extends AnyActionDefinitions, Meta extends OptionalRecord>(params: ServeParams<Definitions, Meta>): Server;
20
+ export declare function serve<Definitions extends AnyDefinitions>(params: ServeParams<Definitions>): Server;
21
21
  //# sourceMappingURL=server.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,oBAAoB,EAEpB,cAAc,EACd,iBAAiB,EAClB,MAAM,kBAAkB,CAAA;AAEzB,OAAO,EAAE,KAAK,QAAQ,EAAkB,MAAM,cAAc,CAAA;AAI5D,OAAO,EAAkB,KAAK,aAAa,EAAE,MAAM,iBAAiB,CAAA;AACpE,OAAO,KAAK,EAAE,gBAAgB,EAAE,cAAc,EAAkB,MAAM,YAAY,CAAA;AAElF,MAAM,MAAM,oBAAoB,CAC9B,WAAW,SAAS,oBAAoB,EACxC,IAAI,SAAS,cAAc,IACzB;IACF,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAA;IAC7C,QAAQ,EAAE,cAAc,CAAC,WAAW,EAAE,IAAI,CAAC,CAAA;IAC3C,MAAM,EAAE,CAAC,SAAS,EAAE,aAAa,KAAK,IAAI,CAAA;IAC1C,MAAM,EAAE,WAAW,CAAA;IACnB,SAAS,EAAE,iBAAiB,CAAC,WAAW,EAAE,IAAI,CAAC,CAAA;CAChD,CAAA;AA+ED,MAAM,MAAM,WAAW,CAAC,WAAW,SAAS,oBAAoB,EAAE,IAAI,SAAS,cAAc,IAAI;IAC/F,QAAQ,EAAE,cAAc,CAAC,WAAW,EAAE,IAAI,CAAC,CAAA;IAC3C,MAAM,CAAC,EAAE,WAAW,CAAA;IACpB,SAAS,EAAE,iBAAiB,CAAC,WAAW,EAAE,IAAI,CAAC,CAAA;CAChD,CAAA;AAED,MAAM,MAAM,MAAM,GAAG,QAAQ,GAAG;IAC9B,UAAU,EAAE,cAAc,CAAC,aAAa,CAAC,CAAA;CAC1C,CAAA;AAED,wBAAgB,KAAK,CAAC,WAAW,SAAS,oBAAoB,EAAE,IAAI,SAAS,cAAc,EACzF,MAAM,EAAE,WAAW,CAAC,WAAW,EAAE,IAAI,CAAC,GACrC,MAAM,CA8BR"}
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAsB,cAAc,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAA;AAE7F,OAAO,EAAE,KAAK,QAAQ,EAAkB,MAAM,cAAc,CAAA;AAM5D,OAAO,EAAkB,KAAK,aAAa,EAAE,MAAM,iBAAiB,CAAA;AACpE,OAAO,KAAK,EAEV,eAAe,EAEf,iBAAiB,EAClB,MAAM,YAAY,CAAA;AAEnB,MAAM,MAAM,oBAAoB,CAAC,WAAW,SAAS,cAAc,IAAI;IACrE,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAA;IAC9C,QAAQ,EAAE,eAAe,CAAC,WAAW,CAAC,CAAA;IACtC,MAAM,EAAE,CAAC,SAAS,EAAE,aAAa,KAAK,IAAI,CAAA;IAC1C,MAAM,EAAE,WAAW,CAAA;IACnB,SAAS,EAAE,iBAAiB,CAAC,WAAW,CAAC,CAAA;CAC1C,CAAA;AAkFD,MAAM,MAAM,WAAW,CAAC,WAAW,SAAS,cAAc,IAAI;IAC5D,QAAQ,EAAE,eAAe,CAAC,WAAW,CAAC,CAAA;IACtC,MAAM,CAAC,EAAE,WAAW,CAAA;IACpB,SAAS,EAAE,iBAAiB,CAAC,WAAW,CAAC,CAAA;CAC1C,CAAA;AAED,MAAM,MAAM,MAAM,GAAG,QAAQ,GAAG;IAC9B,UAAU,EAAE,cAAc,CAAC,aAAa,CAAC,CAAA;CAC1C,CAAA;AAED,wBAAgB,KAAK,CAAC,WAAW,SAAS,cAAc,EACtD,MAAM,EAAE,WAAW,CAAC,WAAW,CAAC,GAC/B,MAAM,CA8BR"}
package/lib/server.js CHANGED
@@ -1,7 +1,10 @@
1
+ import { unsignedToken } from '@enkaku/jwt';
1
2
  import { createPipe } from '@enkaku/stream';
2
3
  import { createDisposer } from '@enkaku/util';
4
+ import { handleChannel } from './handlers/channel.js';
3
5
  import { handleEvent } from './handlers/event.js';
4
6
  import { handleRequest } from './handlers/request.js';
7
+ import { handleStream } from './handlers/stream.js';
5
8
  import { ErrorRejection } from './rejections.js';
6
9
  async function handleMessages(params) {
7
10
  const { controllers, handlers, reject, signal, transport } = params;
@@ -9,7 +12,7 @@ async function handleMessages(params) {
9
12
  controllers,
10
13
  handlers,
11
14
  reject,
12
- send: (message)=>transport.write(message)
15
+ send: (payload)=>transport.write(unsignedToken(payload))
13
16
  };
14
17
  const running = Object.create(null);
15
18
  const disposer = createDisposer(async ()=>{
@@ -20,11 +23,11 @@ async function handleMessages(params) {
20
23
  // Wait until all running handlers are done
21
24
  await Promise.all(Object.values(running));
22
25
  }, signal);
23
- function process(action, returned) {
26
+ function process(payload, returned) {
24
27
  if (returned instanceof ErrorRejection) {
25
28
  reject(returned);
26
29
  } else {
27
- const id = action.type === 'event' ? Math.random().toString(36).slice(2) : action.id;
30
+ const id = payload.typ === 'event' ? Math.random().toString(36).slice(2) : payload.rid;
28
31
  running[id] = returned;
29
32
  returned.then(()=>{
30
33
  delete running[id];
@@ -38,23 +41,28 @@ async function handleMessages(params) {
38
41
  return;
39
42
  }
40
43
  const msg = next.value;
41
- switch(msg.action.type){
44
+ switch(msg.payload.typ){
42
45
  case 'abort':
43
- controllers[msg.action.id]?.abort();
46
+ controllers[msg.payload.rid]?.abort();
44
47
  break;
45
48
  case 'channel':
46
- throw new Error('Not implemented');
49
+ process(msg.payload, handleChannel(context, msg));
50
+ break;
47
51
  case 'event':
48
- process(msg.action, handleEvent(context, msg));
52
+ process(msg.payload, handleEvent(context, msg));
49
53
  break;
50
54
  case 'request':
51
- process(msg.action, handleRequest(context, msg));
55
+ process(msg.payload, handleRequest(context, msg));
52
56
  break;
53
57
  case 'send':
54
- // TODO: send to tracked channel
55
- throw new Error('Not implemented');
58
+ {
59
+ const controller = controllers[msg.payload.rid];
60
+ controller?.writer.write(msg.payload.val);
61
+ break;
62
+ }
56
63
  case 'stream':
57
- throw new Error('Not implemented');
64
+ process(msg.payload, handleStream(context, msg));
65
+ break;
58
66
  }
59
67
  handleNext();
60
68
  }
package/lib/types.d.ts CHANGED
@@ -1,40 +1,40 @@
1
- import type { AnyActionDefinition, AnyActionDefinitions, AnyServerMessageOf, ChannelActionDefinition, EventActionDefinition, OptionalRecord, RequestActionDefinition, StreamActionDefinition } from '@enkaku/protocol';
1
+ import type { AnyDefinition, AnyDefinitions, AnyServerPayloadOf, ChannelDefinition, EventDefinition, RequestDefinition, StreamDefinition } from '@enkaku/protocol';
2
2
  import type { RejectionType } from './rejections.js';
3
3
  export type RequestController = AbortController;
4
4
  export type ChannelController<Send = unknown> = AbortController & {
5
- writable: WritableStream<Send>;
5
+ writer: WritableStreamDefaultWriter<Send>;
6
6
  };
7
- export type ActionController<Send = unknown> = RequestController | ChannelController<Send>;
8
- export type EventHandlerContext<Data, Meta extends OptionalRecord> = {
7
+ export type HandlerController<Send = unknown> = RequestController | ChannelController<Send>;
8
+ export type EventHandlerContext<Data> = {
9
9
  data: Data;
10
- meta: Meta;
11
10
  };
12
- export type EventHandler<Data, Meta extends OptionalRecord> = (context: EventHandlerContext<Data, Meta>) => void;
13
- export type RequestHandlerContext<Params, Meta extends OptionalRecord> = {
11
+ export type EventHandler<Data> = (context: EventHandlerContext<Data>) => void | Promise<void>;
12
+ export type RequestHandlerContext<Params> = {
14
13
  params: Params;
15
- meta: Meta;
16
14
  signal: AbortSignal;
17
15
  };
18
16
  export type HandlerReturn<Result> = Result | Promise<Result>;
19
- export type RequestHandler<Params, Result, Meta extends OptionalRecord> = (context: RequestHandlerContext<Params, Meta>) => HandlerReturn<Result>;
20
- export type StreamHandlerContext<Params, Receive, Meta extends OptionalRecord> = RequestHandlerContext<Params, Meta> & {
17
+ export type RequestHandler<Params, Result> = (context: RequestHandlerContext<Params>) => HandlerReturn<Result>;
18
+ export type StreamHandlerContext<Params, Receive> = RequestHandlerContext<Params> & {
21
19
  writable: WritableStream<Receive>;
22
20
  };
23
- export type StreamHandler<Params, Receive, Result, Meta extends OptionalRecord> = (context: StreamHandlerContext<Params, Receive, Meta>) => HandlerReturn<Result>;
24
- export type ChannelHandlerContext<Params, Sent, Receive, Meta extends OptionalRecord> = StreamHandlerContext<Params, Receive, Meta> & {
21
+ export type StreamHandler<Params, Receive, Result> = (context: StreamHandlerContext<Params, Receive>) => HandlerReturn<Result>;
22
+ export type ChannelHandlerContext<Params, Sent, Receive> = StreamHandlerContext<Params, Receive> & {
25
23
  readable: ReadableStream<Sent>;
26
24
  };
27
- export type ChannelHandler<Params, Sent, Receive, Result, Meta extends OptionalRecord = OptionalRecord> = (context: ChannelHandlerContext<Params, Sent, Receive, Meta>) => HandlerReturn<Result>;
28
- export type ActionHandlers<Definitions, Meta extends OptionalRecord> = Definitions extends Record<infer Names extends string, AnyActionDefinition> ? {
29
- [Name in Names & string]: Definitions[Name] extends EventActionDefinition<infer Data> ? (context: EventHandlerContext<Data, Meta>) => void : Definitions[Name] extends RequestActionDefinition<infer Params, infer Result> ? (context: RequestHandlerContext<Params, Meta>) => HandlerReturn<Result> : Definitions[Name] extends StreamActionDefinition<infer Params, infer Receive, infer Result> ? (context: StreamHandlerContext<Params, Receive, Meta>) => HandlerReturn<Result> : Definitions[Name] extends ChannelActionDefinition<infer Params, infer Send, infer Receive, infer Result> ? (context: ChannelHandlerContext<Params, Send, Receive, Meta>) => HandlerReturn<Result> : never;
25
+ export type ChannelHandler<Params, Sent, Receive, Result> = (context: ChannelHandlerContext<Params, Sent, Receive>) => HandlerReturn<Result>;
26
+ export type CommandHandlers<Definitions> = Definitions extends Record<infer Commands extends string, AnyDefinition> ? {
27
+ [Command in Commands & string]: Definitions[Command] extends EventDefinition<infer Data> ? (context: EventHandlerContext<Data>) => void : Definitions[Command] extends RequestDefinition<infer Params, infer Result> ? (context: RequestHandlerContext<Params>) => HandlerReturn<Result> : Definitions[Command] extends StreamDefinition<infer Params, infer Receive, infer Result> ? (context: StreamHandlerContext<Params, Receive>) => HandlerReturn<Result> : Definitions[Command] extends ChannelDefinition<infer Params, infer Send, infer Receive, infer Result> ? (context: ChannelHandlerContext<Params, Send, Receive>) => HandlerReturn<Result> : never;
30
28
  } : Record<string, never>;
31
- export type EventDataType<Definitions extends AnyActionDefinitions, Name extends keyof Definitions & string> = Definitions[Name] extends EventActionDefinition<infer Data> ? Data : never;
32
- export type ActionParamsType<Definitions extends AnyActionDefinitions, Name extends keyof Definitions & string> = Definitions[Name] extends RequestActionDefinition<infer Params> ? Params : Definitions[Name] extends StreamActionDefinition<infer Params> ? Params : Definitions[Name] extends ChannelActionDefinition<infer Params> ? Params : never;
33
- export type ActionResultType<Definitions extends Record<string, unknown>, Name extends keyof Definitions & string> = Definitions[Name] extends RequestActionDefinition<infer Params, infer Result> ? Result : Definitions[Name] extends StreamActionDefinition<infer Params, infer Receive, infer Result> ? Result : Definitions[Name] extends ChannelActionDefinition<infer Params, infer Send, infer Receive, infer Result> ? Result : never;
34
- export type HandlerContext<Definitions extends AnyActionDefinitions, Meta extends OptionalRecord> = {
35
- controllers: Record<string, ActionController>;
36
- handlers: ActionHandlers<Definitions, Meta>;
29
+ export type EventDataType<Definitions extends AnyDefinitions, Command extends keyof Definitions & string> = Definitions[Command] extends EventDefinition<infer Data> ? Data : never;
30
+ export type ParamsType<Definitions extends AnyDefinitions, Command extends keyof Definitions & string> = Definitions[Command] extends RequestDefinition<infer Params> ? Params : Definitions[Command] extends StreamDefinition<infer Params> ? Params : Definitions[Command] extends ChannelDefinition<infer Params> ? Params : never;
31
+ export type ReceiveType<Definitions extends Record<string, unknown>, Command extends keyof Definitions & string> = Definitions[Command] extends StreamDefinition<infer Params, infer Receive> ? Receive : Definitions[Command] extends ChannelDefinition<infer Params, infer Send, infer Receive> ? Receive : never;
32
+ export type ResultType<Definitions extends Record<string, unknown>, Command extends keyof Definitions & string> = Definitions[Command] extends RequestDefinition<infer Params, infer Result> ? Result : Definitions[Command] extends StreamDefinition<infer Params, infer Receive, infer Result> ? Result : Definitions[Command] extends ChannelDefinition<infer Params, infer Send, infer Receive, infer Result> ? Result : never;
33
+ export type SendType<Definitions extends Record<string, unknown>, Command extends keyof Definitions & string> = Definitions[Command] extends ChannelDefinition<infer Params, infer Send> ? Send : never;
34
+ export type HandlerContext<Definitions extends AnyDefinitions> = {
35
+ controllers: Record<string, HandlerController>;
36
+ handlers: CommandHandlers<Definitions>;
37
37
  reject: (rejection: RejectionType) => void;
38
- send: (message: AnyServerMessageOf<Definitions>) => Promise<void>;
38
+ send: (payload: AnyServerPayloadOf<Definitions>) => Promise<void>;
39
39
  };
40
40
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/lib/utils.d.ts ADDED
@@ -0,0 +1,12 @@
1
+ import type { AnyDefinitions, RequestCallPayload, RequestType } from '@enkaku/protocol';
2
+ import type { HandlerContext, ParamsType, ResultType } from './types.js';
3
+ export type ConsumeReaderParams<T> = {
4
+ onDone?: () => void;
5
+ onValue: (value: T) => Promise<void>;
6
+ reader: ReadableStreamDefaultReader<T>;
7
+ signal: AbortSignal;
8
+ };
9
+ export declare function consumeReader<T>(params: ConsumeReaderParams<T>): Promise<void>;
10
+ export declare function toPromise<T = unknown>(execute: () => T | Promise<T>): Promise<T>;
11
+ export declare function executeHandler<Definitions extends AnyDefinitions, Command extends keyof Definitions & string, Result extends ResultType<Definitions, Command> = ResultType<Definitions, Command>>(context: HandlerContext<Definitions>, payload: RequestCallPayload<RequestType, Command, ParamsType<Definitions, Command>>, execute: () => Result | Promise<Result>): Promise<void>;
12
+ //# sourceMappingURL=utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,cAAc,EAEd,kBAAkB,EAClB,WAAW,EACZ,MAAM,kBAAkB,CAAA;AAIzB,OAAO,KAAK,EAAE,cAAc,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AAExE,MAAM,MAAM,mBAAmB,CAAC,CAAC,IAAI;IACnC,MAAM,CAAC,EAAE,MAAM,IAAI,CAAA;IACnB,OAAO,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IACpC,MAAM,EAAE,2BAA2B,CAAC,CAAC,CAAC,CAAA;IACtC,MAAM,EAAE,WAAW,CAAA;CACpB,CAAA;AAED,wBAAsB,aAAa,CAAC,CAAC,EAAE,MAAM,EAAE,mBAAmB,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAoBpF;AAGD,wBAAgB,SAAS,CAAC,CAAC,GAAG,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAMhF;AAED,wBAAsB,cAAc,CAClC,WAAW,SAAS,cAAc,EAClC,OAAO,SAAS,MAAM,WAAW,GAAG,MAAM,EAC1C,MAAM,SAAS,UAAU,CAAC,WAAW,EAAE,OAAO,CAAC,GAAG,UAAU,CAAC,WAAW,EAAE,OAAO,CAAC,EAElF,OAAO,EAAE,cAAc,CAAC,WAAW,CAAC,EACpC,OAAO,EAAE,kBAAkB,CAAC,WAAW,EAAE,OAAO,EAAE,UAAU,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC,EACnF,OAAO,EAAE,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,GACtC,OAAO,CAAC,IAAI,CAAC,CA2Bf"}
package/lib/utils.js ADDED
@@ -0,0 +1,54 @@
1
+ import { HandlerError } from './error.js';
2
+ import { ErrorRejection } from './rejections.js';
3
+ export async function consumeReader(params) {
4
+ async function handle() {
5
+ if (params.signal.aborted) {
6
+ return;
7
+ }
8
+ const next = await params.reader.read();
9
+ if (next.done) {
10
+ params.onDone?.();
11
+ return;
12
+ }
13
+ if (params.signal.aborted) {
14
+ return;
15
+ }
16
+ await params.onValue(next.value);
17
+ handle();
18
+ }
19
+ handle();
20
+ }
21
+ // Replace by Promise.try() when widely available
22
+ export function toPromise(execute) {
23
+ try {
24
+ return Promise.resolve(execute());
25
+ } catch (err) {
26
+ return Promise.reject(err);
27
+ }
28
+ }
29
+ export async function executeHandler(context, payload, execute) {
30
+ const controller = context.controllers[payload.rid];
31
+ try {
32
+ const val = await toPromise(execute);
33
+ if (!controller.signal.aborted) {
34
+ await context.send({
35
+ typ: 'result',
36
+ rid: payload.rid,
37
+ val
38
+ });
39
+ }
40
+ } catch (cause) {
41
+ if (!controller.signal.aborted) {
42
+ context.send(HandlerError.from(cause, {
43
+ code: 'EKK2000',
44
+ message: 'Error code EKK2000'
45
+ }).toPayload(payload.rid));
46
+ }
47
+ context.reject(new ErrorRejection(`Error handling command: ${payload.cmd}`, {
48
+ info: payload,
49
+ cause
50
+ }));
51
+ } finally{
52
+ delete context.controllers[payload.rid];
53
+ }
54
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@enkaku/server",
3
- "version": "0.1.1",
3
+ "version": "0.2.0",
4
4
  "license": "MIT",
5
5
  "keywords": [],
6
6
  "type": "module",
@@ -14,11 +14,12 @@
14
14
  ],
15
15
  "sideEffects": false,
16
16
  "dependencies": {
17
- "@enkaku/stream": "^0.1.0",
18
- "@enkaku/util": "^0.1.0"
17
+ "@enkaku/jwt": "^0.2.0",
18
+ "@enkaku/util": "^0.1.0",
19
+ "@enkaku/stream": "^0.1.0"
19
20
  },
20
21
  "devDependencies": {
21
- "@enkaku/protocol": "^0.1.0",
22
+ "@enkaku/protocol": "^0.2.0",
22
23
  "@enkaku/transport": "^0.1.0"
23
24
  },
24
25
  "scripts": {