Commit f4c422c6 authored by nanahira's avatar nanahira

bump an add http things

parent 6ed2bf93
This diff is collapsed.
...@@ -44,6 +44,7 @@ ...@@ -44,6 +44,7 @@
"@types/node": "^18.0.6", "@types/node": "^18.0.6",
"@typescript-eslint/eslint-plugin": "^4.33.0", "@typescript-eslint/eslint-plugin": "^4.33.0",
"@typescript-eslint/parser": "^4.33.0", "@typescript-eslint/parser": "^4.33.0",
"cordis": "^2.0.6",
"eslint": "^7.32.0", "eslint": "^7.32.0",
"eslint-config-prettier": "^8.5.0", "eslint-config-prettier": "^8.5.0",
"eslint-plugin-prettier": "^3.4.1", "eslint-plugin-prettier": "^3.4.1",
...@@ -57,7 +58,9 @@ ...@@ -57,7 +58,9 @@
"@satorijs/satori": "^1.0.3" "@satorijs/satori": "^1.0.3"
}, },
"dependencies": { "dependencies": {
"cordis-decorators": "^1.0.7", "cordis-decorators": "^1.0.8",
"lodash": "^4.17.21" "lodash": "^4.17.21",
"@types/koa": "^2.13.5",
"@types/koa__router": "^8.0.11"
} }
} }
import { defaultRegistrarS } from './registrar'; import { defaultRegistrarS } from '../registrar';
export const { export const {
OnAnywhere, OnAnywhere,
......
import { defaultRegistrarS } from '../registrar';
import {
DefaultContext,
DefaultState,
ParameterizedContext,
Next as KoaNext,
} from 'koa';
import { RouterParamContext } from '@koa/router';
export type KoaContext = ParameterizedContext<
DefaultState,
DefaultContext & RouterParamContext<DefaultState, DefaultContext>,
any
>;
const RouterMethod = defaultRegistrarS.decorateMethod(
'route',
(
ctx,
fun: (ctx: KoaContext, Next: KoaNext) => Promise<any>,
method:
| 'get'
| 'post'
| 'put'
| 'delete'
| 'patch'
| 'options'
| 'head'
| 'all',
path: string,
) => {
const _path = path.startsWith('/') ? path : `/${path}`;
return ctx.router[method](_path, (koaCtx, next) => fun(koaCtx, next));
},
);
export const Get = (path: string) => RouterMethod('get', path);
export const Post = (path: string) => RouterMethod('post', path);
export const Put = (path: string) => RouterMethod('put', path);
export const Delete = (path: string) => RouterMethod('delete', path);
export const Patch = (path: string) => RouterMethod('patch', path);
export const Options = (path: string) => RouterMethod('options', path);
export const Head = (path: string) => RouterMethod('head', path);
export const All = (path: string) => RouterMethod('all', path);
export * from './common';
export * from './http';
...@@ -3,24 +3,37 @@ import { Registrar } from 'cordis-decorators'; ...@@ -3,24 +3,37 @@ import { Registrar } from 'cordis-decorators';
import { selectContext, Selection } from './utility/select-context'; import { selectContext, Selection } from './utility/select-context';
export class SatoriRegistrar<Ctx extends Context> extends Registrar<Ctx> { export class SatoriRegistrar<Ctx extends Context> extends Registrar<Ctx> {
methodDecorators() {
return {
...super.methodDecorators(),
};
}
selectorDecorators() { selectorDecorators() {
return { return {
OnAnywhere: () => this.decorateTransformer((ctx, r) => ctx.any()), OnAnywhere: this.decorateTransformer((ctx) => ctx.any()),
OnNowhere: () => this.decorateTransformer((ctx, r) => ctx.never()), OnNowhere: this.decorateTransformer((ctx) => ctx.never()),
OnUser: (...values: string[]) => OnUser: this.decorateTransformer((ctx, ...values: string[]) =>
this.decorateTransformer((ctx, r) => ctx.user(...r(values))), ctx.user(...values),
OnSelf: (...values: string[]) => ),
this.decorateTransformer((ctx, r) => ctx.self(...r(values))), OnSelf: this.decorateTransformer((ctx, ...values: string[]) =>
OnGuild: (...values: string[]) => ctx.self(...values),
this.decorateTransformer((ctx, r) => ctx.guild(...r(values))), ),
OnChannel: (...values: string[]) => OnGuild: this.decorateTransformer((ctx, ...values: string[]) =>
this.decorateTransformer((ctx, r) => ctx.channel(...r(values))), ctx.guild(...values),
OnPlatform: (...values: string[]) => ),
this.decorateTransformer((ctx, r) => ctx.platform(...r(values))), OnChannel: this.decorateTransformer((ctx, ...values: string[]) =>
OnPrivate: (...values: string[]) => ctx.channel(...values),
this.decorateTransformer((ctx, r) => ctx.private(...r(values))), ),
OnSelection: (selection: Selection) => OnPlatform: this.decorateTransformer((ctx, ...values: string[]) =>
this.decorateTransformer((ctx, r) => selectContext(ctx, r(selection))), ctx.platform(...values),
),
OnPrivate: this.decorateTransformer((ctx, ...values: string[]) =>
ctx.private(...values),
),
OnSelection: this.decorateTransformer((ctx, selection: Selection) =>
selectContext(ctx, selection),
),
}; };
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment