Socket
Socket
Sign inDemoInstall

elysia

Package Overview
Dependencies
Maintainers
1
Versions
411
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

elysia - npm Package Compare versions

Comparing version 0.2.0-beta.0 to 0.2.0-beta.1

2

dist/context.d.ts

@@ -16,2 +16,2 @@ /// <reference types="bun-types" />

}
export type PreContext<Store extends Elysia['store'] = Elysia['store']> = Omit<Context<{}, Store>, 'query' | 'params' | 'body'>;
export type PreContext<Route extends TypedRoute = TypedRoute, Store extends Elysia['store'] = Elysia['store']> = Omit<Context<Route, Store>, 'query' | 'params' | 'body'>;

@@ -20,4 +20,4 @@ /// <reference types="bun-types" />

onStart(handler: VoidLifeCycle<Instance>): this;
onRequest(handler: BeforeRequestHandler<Instance['store']>): this;
onParse(parser: BodyParser): this;
onRequest<Route extends OverwritableTypeRoute = TypedRoute>(handler: BeforeRequestHandler<Route, Instance>): this;
onParse(parser: BodyParser<any, Instance>): this;
onTransform<Route extends OverwritableTypeRoute = TypedRoute>(handler: NoReturnHandler<Route, Instance>): this;

@@ -24,0 +24,0 @@ onBeforeHandle<Route extends OverwritableTypeRoute = TypedRoute>(handler: Handler<Route, Instance>): this;

@@ -271,10 +271,20 @@ import { Router } from './router';

};
let context;
if (this.decorators) {
context = clone(this.decorators);
context.request = request;
context.set = set;
context.store = this.store;
}
else {
context = {
set,
store: this.store,
request
};
}
try {
for (let i = 0; i < this.event.request.length; i++) {
const onRequest = this.event.request[i];
let response = onRequest({
request,
store: this.store,
set
});
let response = onRequest(context);
if (response instanceof Promise)

@@ -295,8 +305,12 @@ response = await response;

throw new Error('NOT_FOUND');
const hooks = handler.hooks;
let body;
if (request.method !== 'GET') {
const contentType = request.headers.get('content-type');
let contentType = request.headers.get('content-type');
if (contentType) {
const index = contentType.indexOf(';');
if (index !== -1)
contentType = contentType.slice(0, index);
for (let i = 0; i < this.event.parse.length; i++) {
let temp = this.event.parse[i](request, contentType);
let temp = this.event.parse[i](context, contentType);
if (temp instanceof Promise)

@@ -309,3 +323,3 @@ temp = await temp;

}
if (body === undefined)
if (body === undefined) {
switch (contentType) {

@@ -318,25 +332,12 @@ case 'application/json':

break;
case 'application/x-www-form-urlencoded':
body = mapQuery(await request.text(), null);
break;
}
}
}
}
const hooks = handler.hooks;
let context;
if (this.decorators) {
context = clone(this.decorators);
context.request = request;
context.body = body;
context.set = set;
context.store = this.store;
context.params = route?.params || {};
context.query = mapQuery(request.url, index);
}
else
context = {
request,
body,
set,
store: this.store,
params: route?.params || {},
query: mapQuery(request.url, index)
};
context.body = body;
context.params = route?.params || {};
context.query = mapQuery(request.url, index);
for (let i = 0; i < hooks.transform.length; i++) {

@@ -383,14 +384,4 @@ const operation = hooks.transform[i](context);

response = await response;
if (handler.validator?.response)
if (response instanceof Response) {
let res;
if (handler.validator.response.schema.type === 'object')
res = await response.clone().json();
else
res = await response.clone().text();
if (handler.validator.response.Check(res) === false)
throw createValidationError('response', handler.validator.response, response);
}
else if (handler.validator.response.Check(response) === false)
throw createValidationError('response', handler.validator.response, response);
if (handler.validator?.response?.Check(response) === false)
throw createValidationError('response', handler.validator.response, response);
for (let i = 0; i < hooks.afterHandle.length; i++) {

@@ -397,0 +388,0 @@ let newResponse = hooks.afterHandle[i](context, response);

@@ -27,7 +27,7 @@ /// <reference types="bun-types" />

export type VoidLifeCycle<Instance extends ElysiaInstance = ElysiaInstance> = ((app: Elysia<Instance>) => void) | ((app: Elysia<Instance>) => Promise<void>);
export type BodyParser = (request: Request, contentType: string) => any | Promise<any>;
export type BodyParser<Route extends TypedRoute = TypedRoute, Instance extends ElysiaInstance = ElysiaInstance> = (context: PreContext<Route, Instance['store']> & Instance['request'], contentType: string) => any | Promise<any>;
export interface LifeCycle<Instance extends ElysiaInstance = ElysiaInstance> {
start: VoidLifeCycle<Instance>;
request: BeforeRequestHandler;
parse: BodyParser;
request: BeforeRequestHandler<any, Instance>;
parse: BodyParser<any, Instance>;
transform: NoReturnHandler<any, Instance>;

@@ -42,4 +42,4 @@ beforeHandle: Handler<any, Instance>;

start: VoidLifeCycle<Instance>[];
request: BeforeRequestHandler[];
parse: BodyParser[];
request: BeforeRequestHandler<any, Instance>[];
parse: BodyParser<any, Instance>[];
transform: NoReturnHandler<any, Instance>[];

@@ -51,3 +51,3 @@ beforeHandle: Handler<any, Instance>[];

}
export type BeforeRequestHandler<Store extends ElysiaInstance['store'] = ElysiaInstance['store']> = (context: PreContext<Store>) => any;
export type BeforeRequestHandler<Route extends TypedRoute = TypedRoute, Instance extends ElysiaInstance = ElysiaInstance> = (context: PreContext<Route, Instance['store']> & Instance['request']) => any;
export interface RegisteredHook<Instance extends ElysiaInstance = ElysiaInstance> {

@@ -54,0 +54,0 @@ schema?: TypedSchema;

@@ -9,5 +9,5 @@ import { TypeCheck } from '@sinclair/typebox/compiler';

export declare const getPath: (url: string, queryIndex?: number) => string;
export declare const mapQuery: (url: string, queryIndex?: number) => Record<string, string>;
export declare const mapQuery: (url: string, queryIndex?: number | null) => Record<string, string>;
export declare const mergeDeep: <A extends Object = Object, B extends Object = Object>(target: A, source: B) => DeepMergeTwoTypes<A, B>;
export declare const createValidationError: (type: string, validator: TypeCheck<any>, value: any) => Error;
export declare const getSchemaValidator: <Schema extends TSchema | undefined = undefined>(schema: Schema, additionalProperties?: boolean) => TypeCheck<NonNullable<Schema>> | undefined;

@@ -41,23 +41,26 @@ import { TypeCompiler } from '@sinclair/typebox/compiler';

const query = {};
let paths = url.slice(queryIndex);
if (queryIndex)
url = url.slice(queryIndex);
else
url = ';' + url;
while (true) {
const sep = paths.indexOf('&', 4);
const sep = url.indexOf('&', 4);
if (sep === -1) {
const equal = paths.indexOf('=');
let value = paths.slice(equal + 1);
const equal = url.indexOf('=');
let value = url.slice(equal + 1);
const hashIndex = value.indexOf('#');
if (hashIndex !== -1)
value = value.substring(0, hashIndex);
if (value.indexOf('%') !== -1)
value = value.slice(0, hashIndex);
if (value.includes('%'))
value = decodeURI(value);
query[paths.slice(1, equal)] = decodeURI(value);
query[url.slice(1, equal)] = value;
break;
}
const path = paths.slice(0, sep);
const path = url.slice(0, sep);
const equal = path.indexOf('=');
let value = path.slice(equal + 1);
if (value.indexOf('%') !== -1)
if (value.includes('%'))
value = decodeURI(value);
query[path.slice(1, equal)] = value;
paths = paths.slice(sep);
url = url.slice(sep);
}

@@ -64,0 +67,0 @@ return query;

{
"name": "elysia",
"description": "Fast, and friendly Bun web framework",
"version": "0.2.0-beta.0",
"version": "0.2.0-beta.1",
"author": {

@@ -6,0 +6,0 @@ "name": "saltyAom",

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc