Socket
Socket
Sign inDemoInstall

elysia

Package Overview
Dependencies
Maintainers
1
Versions
408
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.5.0-exp-230422.2257 to 0.5.0-exp-230424.1141

74

dist/compose.js

@@ -1,2 +0,2 @@

import{parse as e}from"fast-querystring";import{mapEarlyResponse as r,mapResponse as t}from"./handler";import{createValidationError as a,mapPathnameAndQueryRegEx as s}from"./utils";import{mapErrorCode as n}from"./error";let o="AsyncFunction",c=e=>e.constructor.name===o,l=Bun?.Transpiler?new Bun.Transpiler({minifyWhitespace:!0,inline:!0,platform:"bun",allowBunRuntime:!0}):null;export const composeHandler=({method:s,hooks:i,validator:u,handler:d,handleError:f})=>{let p="try {\n",h="GET"!==s||d.constructor.name===o||i.parse.length||i.afterHandle.find(c)||i.beforeHandle.find(c)||i.transform.find(c);if(h){if(p+=`
let e;import{parse as r}from"fast-querystring";import{mapEarlyResponse as t,mapResponse as a}from"./handler";import{createValidationError as s,removeHostnameRegex as n,removeFragmentRegex as o,removePathRegex as c,removeQueryRegex as l}from"./utils";import{mapErrorCode as u}from"./error";let i="AsyncFunction",p=e=>e.constructor.name===i,d=Bun?.Transpiler?new Bun.Transpiler({minifyWhitespace:!0,inline:!0,platform:"bun",allowBunRuntime:!0}):null;export const composeHandler=({method:e,hooks:n,validator:o,handler:c,handleError:l})=>{let f="try {\n",h="GET"!==e||c.constructor.name===i||n.parse.length||n.afterHandle.find(p)||n.beforeHandle.find(p)||n.transform.find(p);if(h){if(f+=`
let contentType = c.request.headers.get('content-type');

@@ -9,8 +9,8 @@

}
`,i.parse.length){p+=`used = false
`;for(let e=0;e<i.parse.length;e++){let r=`bo${e}`;p+=`if(!c.request.bodyUsed) {
`,n.parse.length){f+=`used = false
`;for(let e=0;e<n.parse.length;e++){let r=`bo${e}`;f+=`if(!c.request.bodyUsed) {
let ${r} = parse[${e}](c, contentType);
if(${r} instanceof Promise) ${r} = await ${r}
if(${r} !== undefined) { c.body = ${r}; used = true }
}`}p+="if (!used)"}p+=`switch (contentType) {
}`}f+="if (!used)"}f+=`switch (contentType) {
case 'application/json':

@@ -45,36 +45,36 @@ c.body = await c.request.json()

}}
`}if(i?.transform)for(let e=0;e<i.transform.length;e++)p+=i.transform[e].constructor.name===o?`await transform[${e}](c);`:`transform[${e}](c);`;if(u&&(u.headers&&(p+=`
const _header = {}
`}if(n?.transform)for(let e=0;e<n.transform.length;e++)f+=n.transform[e].constructor.name===i?`await transform[${e}](c);`:`transform[${e}](c);`;if(o&&(o.headers&&(f+=`
const h = {}
for (const key of c.request.headers.keys())
_header[key] = c.request.headers.get(key)
h[key] = c.request.headers.get(key)
if (headers.Check(_header) === false) {
if (headers.Check(h) === false) {
throw createValidationError(
'header',
headers,
_header
h
)
}
`),u.params&&(p+="if(params.Check(c.params) === false) { throw createValidationError('params', params, c.params) }"),u.query&&(p+="if(query.Check(c.query) === false) { throw createValidationError('params', query, c.query) }"),u.body&&(p+="if(body.Check(c.body) === false) { throw createValidationError('body', body, c.body) }")),i?.beforeHandle)for(let e=0;e<i.beforeHandle.length;e++){let r=`be${e}`;if(p+=(i.beforeHandle[e].constructor.name===o?`let ${r} = await beforeHandle[${e}](c);
`),o.params&&(f+="if(params.Check(c.params) === false) { throw createValidationError('params', params, c.params) }"),o.query&&(f+="if(query.Check(c.query) === false) { throw createValidationError('params', query, c.query) }"),o.body&&(f+="if(body.Check(c.body) === false) { throw createValidationError('body', body, c.body) }")),n?.beforeHandle)for(let e=0;e<n.beforeHandle.length;e++){let r=`be${e}`;if(f+=(n.beforeHandle[e].constructor.name===i?`let ${r} = await beforeHandle[${e}](c);
`:`let ${r} = beforeHandle[${e}](c);
`)+`if(${r} !== undefined) {
`,i?.afterHandle)for(let e=0;e<i.afterHandle.length;e++){let t=`af${e}`;p+=(i.afterHandle[e].constructor.name===o?`const ${t} = await afterHandle[${e}](c, ${r});
`,n?.afterHandle)for(let e=0;e<n.afterHandle.length;e++){let t=`af${e}`;f+=(n.afterHandle[e].constructor.name===i?`const ${t} = await afterHandle[${e}](c, ${r});
`:`const ${t} = afterHandle[${e}](c, ${r});
`)+`if(${t} !== undefined) { ${r} = ${t} }
`}u.response&&(p+=`if(response[c.set.status]?.Check(${r}) === false) { throw createValidationError('response', response[c.set.status], ${r}) }
`),p+=`return mapEarlyResponse(${r}, c.set)}
`}if(i?.afterHandle.length){p+=d.constructor.name===o?`let r = await handler(c);
`}o.response&&(f+=`if(response[c.set.status]?.Check(${r}) === false) { throw createValidationError('response', response[c.set.status], ${r}) }
`),f+=`return mapEarlyResponse(${r}, c.set)}
`}if(n?.afterHandle.length){f+=c.constructor.name===i?`let r = await handler(c);
`:`let r = handler(c);
`;for(let e=0;e<i.afterHandle.length;e++){let r=`af${e}`;p+=i.afterHandle[e].constructor.name===o?`let ${r} = await afterHandle[${e}](c, r)
`;for(let e=0;e<n.afterHandle.length;e++){let r=`af${e}`;f+=n.afterHandle[e].constructor.name===i?`let ${r} = await afterHandle[${e}](c, r)
`:`let ${r} = afterHandle[${e}](c, r)
`,u.response?p+=`if(response[c.set.status]?.Check(${r}) === false) { throw createValidationError('response', response[c.set.status], ${r}) }
`,o.response?f+=`if(response[c.set.status]?.Check(${r}) === false) { throw createValidationError('response', response[c.set.status], ${r}) }
${r} = mapEarlyResponse(${r}, c.set)
if(${r}) return ${r};
`:p+=`if(${r}) return ${r};
`}u.response&&(p+=`if(response[c.set.status]?.Check(r) === false) { throw createValidationError('response', response[c.set.status], r) }
`),p+=`return mapResponse(r, c.set);
`}else u.response?p+=(d.constructor.name===o?`const r = await handler(c);
`:f+=`if(${r}) return ${r};
`}o.response&&(f+=`if(response[c.set.status]?.Check(r) === false) { throw createValidationError('response', response[c.set.status], r) }
`),f+=`return mapResponse(r, c.set);
`}else o.response?f+=(c.constructor.name===i?`const r = await handler(c);
`:`const r = handler(c);
`)+`if(response[c.set.status]?.Check(r) === false) { throw createValidationError('response', response[c.set.status], r) }
`+"return mapResponse(r, c.set);":p+=d.constructor.name===o?"return mapResponse(await handler(c), c.set);":"return mapResponse(handler(c), c.set);";p+=`
`+"return mapResponse(r, c.set);":f+=c.constructor.name===i?"return mapResponse(await handler(c), c.set);":"return mapResponse(handler(c), c.set);";f+=`
} catch(error) {

@@ -105,3 +105,3 @@ ${h?"":"return (async () => {"}

${h?"":"})()"}
}`,p=`const {
}`,f=`const {
handler,

@@ -132,7 +132,10 @@ handleError,

return ${h?"async":""} function(c) {${p}}`,l&&(p=l.transformSync(p));let m=Function("hooks",p);return m({handler:d,hooks:i,validator:u,handleError:f,utils:{createValidationError:a,mapResponse:t,mapEarlyResponse:r,mapErrorCode:n,parseQuery:e}})};export const composeGeneralHandler=t=>{let a=Object.keys(t.decorators).length,n=a>0,o=`const {
return ${h?"async":""} function(c) {${f}}`,d&&(f=d.transformSync(f));let m=Function("hooks",f);return m({handler:c,hooks:n,validator:o,handleError:l,utils:{createValidationError:s,mapResponse:a,mapEarlyResponse:t,mapErrorCode:u,parseQuery:r}})};export const composeGeneralHandler=a=>{let s=Object.keys(a.decorators).length,u=s>0;if(e?.[0]===s&&e[1]===a.event.request.length)return Function("data",e?.[2])({app:a,parseQuery:r,mapEarlyResponse:t,removeHostnameRegex:n,removeQueryRegex:l,removePathRegex:c,removeFragmentRegex:o});let i=`const {
app,
parseQuery,
mapPathnameAndQueryRegEx: map,
mapEarlyResponse
${a.event.request.length?"mapEarlyResponse,":""}
removeHostnameRegex: rHost,
removeQueryRegex: rQuery,
removePathRegex: rPath,
removeFragmentRegex: rFrag
} = data

@@ -157,3 +160,3 @@

return function(request) {
${n?`
${u?`
ctx.set = {

@@ -177,3 +180,3 @@ headers: {},

${t.event.request.length?`
${a.event.request.length?`
try {

@@ -191,13 +194,16 @@ for (let i = 0; i < app.event.request.length; i++) {

const fracture = map.exec(request.url)
if (fracture[2]) ctx.query = parseQuery(fracture[2])
${n?"else ctx.query = {}":""}
const p = request.url.replace(rHost, '')
const path = p.replace(rQuery, '').replace(rFrag, '')
const query = p.replace(rPath, '').replace(rFrag, '')
if (query) ctx.query = parseQuery(query)
${u?"else ctx.query = {}":""}
const handle = _static.get(request.method + fracture[1])
const handle = _static.get(request.method + path)
if (handle) {
${n?"ctx.params = {}":""}
${u?"ctx.params = {}":""}
return handle(ctx)
} else {
const route = router._m(request.method, fracture[1]) ?? router._m('ALL', fracture[1])
const route = router._m(request.method, path) ?? router._m('ALL', path)

@@ -215,2 +221,2 @@ if (!route)

}
}`;return l&&(o=l.transformSync(o)),Function("data",o)({app:t,parseQuery:e,mapPathnameAndQueryRegEx:s,mapEarlyResponse:r})};
}`;return d&&(i=d.transformSync(i)),e=[s,a.event.request.length,i],Function("data",i)({app:a,parseQuery:r,mapEarlyResponse:t,removeHostnameRegex:n,removeQueryRegex:l,removePathRegex:c,removeFragmentRegex:o})};

@@ -12,2 +12,6 @@ import { TSchema } from '@sinclair/typebox';

export declare const mapPathnameAndQueryRegEx: RegExp;
export declare const removeHostnameRegex: RegExp;
export declare const removeQueryRegex: RegExp;
export declare const removePathRegex: RegExp;
export declare const removeFragmentRegex: RegExp;
export declare const mergeDeep: <A extends Object = Object, B extends Object = Object>(target: A, source: B) => DeepMergeTwoTypes<A, B>;

@@ -14,0 +18,0 @@ export declare const createValidationError: (type: string, validator: TypeCheck<any>, value: any) => ValidationError;

@@ -1,1 +0,1 @@

import{Kind as e}from"@sinclair/typebox";import{TypeCompiler as r}from"@sinclair/typebox/compiler";import{ValidationError as t}from"./validation";export const SCHEMA=Symbol("schema");export const DEFS=Symbol("definitions");export const EXPOSED=Symbol("exposed");export const mergeObjectArray=(e,r)=>[...Array.isArray(e)?e:[e],...Array.isArray(r)?r:[r]];export const mergeHook=(e,r)=>{let t="schema"in e?e.schema:null,o=r&&"schema"in r?r.schema:null;return{schema:t||o?{body:o?.body??t?.body,header:o?.headers??t?.headers,params:o?.params??t?.params,query:o?.query??t?.query,response:o?.response??t?.response,detail:mergeDeep(o?.detail??{},t?.detail??{})}:void 0,transform:mergeObjectArray(e.transform??[],r?.transform??[]),beforeHandle:mergeObjectArray(e.beforeHandle??[],r?.beforeHandle??[]),parse:mergeObjectArray(e.parse??[],r?.parse??[]),afterHandle:mergeObjectArray(e.afterHandle??[],r?.afterHandle??[]),error:mergeObjectArray(e.error??[],r?.error??[])}};export const clone=e=>e;export const mapPathnameAndQueryRegEx=/:\/\/[^/]+([^#?]+)(?:\?([^#]+))?/;let o=e=>e&&"object"==typeof e&&!Array.isArray(e);export const mergeDeep=(e,r)=>{let t=Object.assign({},e);return o(e)&&o(r)&&Object.keys(r).forEach(a=>{o(r[a])&&a in e?t[a]=mergeDeep(e[a],r[a]):Object.assign(t,{[a]:r[a]})}),t};export const createValidationError=(e,r,o)=>{let a=r.Errors(o).First(),n=`Invalid ${e}: '${a?.path?.slice(1)||"root"}'. ${a?.message}`;return new t({cause:n,type:e,validator:r,value:o})};export const getSchemaValidator=(e,t,o=!1)=>{if(!e||"string"==typeof e&&!(e in t))return;let a="string"==typeof e?t[e]:e;return"object"===a.type&&"additionalProperties"in a==!1&&(a.additionalProperties=o),r.Compile(a)};export const getResponseSchemaValidator=(t,o,a=!1)=>{if(!t||"string"==typeof t&&!(t in o))return;let n="string"==typeof t?o[t]:t;if(e in n)return{200:r.Compile(n)};let i={};return Object.keys(n).forEach(t=>{let s=n[t];if("string"==typeof s){if(s in o){let a=o[s];a.type,i[+t]=e in a?r.Compile(a):a}return}"object"===s.type&&"additionalProperties"in s==!1&&(s.additionalProperties=a),i[+t]=e in s?r.Compile(s):s}),i};
import{Kind as e}from"@sinclair/typebox";import{TypeCompiler as r}from"@sinclair/typebox/compiler";import{ValidationError as t}from"./validation";export const SCHEMA=Symbol("schema");export const DEFS=Symbol("definitions");export const EXPOSED=Symbol("exposed");export const mergeObjectArray=(e,r)=>[...Array.isArray(e)?e:[e],...Array.isArray(r)?r:[r]];export const mergeHook=(e,r)=>{let t="schema"in e?e.schema:null,o=r&&"schema"in r?r.schema:null;return{schema:t||o?{body:o?.body??t?.body,header:o?.headers??t?.headers,params:o?.params??t?.params,query:o?.query??t?.query,response:o?.response??t?.response,detail:mergeDeep(o?.detail??{},t?.detail??{})}:void 0,transform:mergeObjectArray(e.transform??[],r?.transform??[]),beforeHandle:mergeObjectArray(e.beforeHandle??[],r?.beforeHandle??[]),parse:mergeObjectArray(e.parse??[],r?.parse??[]),afterHandle:mergeObjectArray(e.afterHandle??[],r?.afterHandle??[]),error:mergeObjectArray(e.error??[],r?.error??[])}};export const clone=e=>e;export const mapPathnameAndQueryRegEx=/:\/\/[^/]+([^#?]+)(?:\?([^#]+))?/;export const removeHostnameRegex=/^[a-z]+?:\/\/[^/]+/;export const removeQueryRegex=/\?.*?([\w=&%]+)/;export const removePathRegex=/^[^?]*(\?|$)/;export const removeFragmentRegex=/#(\S+)/;let o=e=>e&&"object"==typeof e&&!Array.isArray(e);export const mergeDeep=(e,r)=>{let t=Object.assign({},e);return o(e)&&o(r)&&Object.keys(r).forEach(a=>{o(r[a])&&a in e?t[a]=mergeDeep(e[a],r[a]):Object.assign(t,{[a]:r[a]})}),t};export const createValidationError=(e,r,o)=>{let a=r.Errors(o).First(),n=`Invalid ${e}: '${a?.path?.slice(1)||"root"}'. ${a?.message}`;return new t({cause:n,type:e,validator:r,value:o})};export const getSchemaValidator=(e,t,o=!1)=>{if(!e||"string"==typeof e&&!(e in t))return;let a="string"==typeof e?t[e]:e;return"object"===a.type&&"additionalProperties"in a==!1&&(a.additionalProperties=o),r.Compile(a)};export const getResponseSchemaValidator=(t,o,a=!1)=>{if(!t||"string"==typeof t&&!(t in o))return;let n="string"==typeof t?o[t]:t;if(e in n)return{200:r.Compile(n)};let s={};return Object.keys(n).forEach(t=>{let i=n[t];if("string"==typeof i){if(i in o){let a=o[i];a.type,s[+t]=e in a?r.Compile(a):a}return}"object"===i.type&&"additionalProperties"in i==!1&&(i.additionalProperties=a),s[+t]=e in i?r.Compile(i):i}),s};
{
"name": "elysia",
"description": "Fast, and friendly Bun web framework",
"version": "0.5.0-exp-230422.2257",
"version": "0.5.0-exp-230424.1141",
"author": {

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

@@ -6,3 +6,9 @@ import { Elysia } from '.'

import { mapEarlyResponse, mapResponse } from './handler'
import { createValidationError, mapPathnameAndQueryRegEx } from './utils'
import {
createValidationError,
removeHostnameRegex,
removeFragmentRegex,
removePathRegex,
removeQueryRegex
} from './utils'
import { mapErrorCode } from './error'

@@ -124,11 +130,11 @@

fnLiteral += `
const _header = {}
const h = {}
for (const key of c.request.headers.keys())
_header[key] = c.request.headers.get(key)
h[key] = c.request.headers.get(key)
if (headers.Check(_header) === false) {
if (headers.Check(h) === false) {
throw createValidationError(
'header',
headers,
_header
h
)

@@ -296,2 +302,6 @@ }

// This is a cached for composeGeneralHandler generated function literal
// to prevent minimize transpiler work
let generalCached: [number, number, string] | undefined
export const composeGeneralHandler = (app: Elysia<any>) => {

@@ -302,7 +312,27 @@ // @ts-ignore

if (
generalCached?.[0] === totalDecorators &&
generalCached[1] === app.event.request.length
)
return Function(
'data',
generalCached?.[2]
)({
app,
parseQuery,
mapEarlyResponse,
removeHostnameRegex,
removeQueryRegex,
removePathRegex,
removeFragmentRegex
})
let fnLiteral = `const {
app,
parseQuery,
mapPathnameAndQueryRegEx: map,
mapEarlyResponse
${app.event.request.length ? 'mapEarlyResponse,' : ''}
removeHostnameRegex: rHost,
removeQueryRegex: rQuery,
removePathRegex: rPath,
removeFragmentRegex: rFrag
} = data

@@ -367,7 +397,10 @@

const fracture = map.exec(request.url)
if (fracture[2]) ctx.query = parseQuery(fracture[2])
const p = request.url.replace(rHost, '')
const path = p.replace(rQuery, '').replace(rFrag, '')
const query = p.replace(rPath, '').replace(rFrag, '')
if (query) ctx.query = parseQuery(query)
${hasDecorators ? `else ctx.query = {}` : ''}
const handle = _static.get(request.method + fracture[1])
const handle = _static.get(request.method + path)
if (handle) {

@@ -378,3 +411,3 @@ ${hasDecorators ? `ctx.params = {}` : ''}

} else {
const route = router._m(request.method, fracture[1]) ?? router._m('ALL', fracture[1])
const route = router._m(request.method, path) ?? router._m('ALL', path)

@@ -396,2 +429,4 @@ if (!route)

generalCached = [totalDecorators, app.event.request.length, fnLiteral]
return Function(

@@ -403,5 +438,8 @@ 'data',

parseQuery,
mapPathnameAndQueryRegEx,
mapEarlyResponse
mapEarlyResponse,
removeHostnameRegex,
removeQueryRegex,
removePathRegex,
removeFragmentRegex
})
}

@@ -67,4 +67,14 @@ import { Kind, TSchema } from '@sinclair/typebox'

/**
* @deprecated
*
* should be removed in 0.6
*/
export const mapPathnameAndQueryRegEx = /:\/\/[^/]+([^#?]+)(?:\?([^#]+))?/
export const removeHostnameRegex = /^[a-z]+?:\/\/[^/]+/
export const removeQueryRegex = /\?.*?([\w=&%]+)/
export const removePathRegex = /^[^?]*(\?|$)/
export const removeFragmentRegex = /#(\S+)/;
const isObject = (item: any): item is Object =>

@@ -71,0 +81,0 @@ item && typeof item === 'object' && !Array.isArray(item)

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