Comparing version 1.0.21 to 1.0.22
@@ -365,3 +365,3 @@ "use strict"; | ||
}; | ||
var File = import_typebox.TypeRegistry.Get("Files") ?? import_system.TypeSystem.Type("File", validateFile); | ||
var File2 = import_typebox.TypeRegistry.Get("Files") ?? import_system.TypeSystem.Type("File", validateFile); | ||
var Files = import_typebox.TypeRegistry.Get("Files") ?? import_system.TypeSystem.Type( | ||
@@ -512,3 +512,3 @@ "Files", | ||
}, | ||
File, | ||
File: File2, | ||
Files: (options = {}) => t.Transform(Files(options)).Decode((value) => { | ||
@@ -720,2 +720,3 @@ if (Array.isArray(value)) | ||
}; | ||
var ELYSIA_FORM_DATA = Symbol("ElysiaFormData"); | ||
@@ -722,0 +723,0 @@ // src/cookies.ts |
@@ -277,3 +277,3 @@ "use strict"; | ||
}; | ||
var File = import_typebox.TypeRegistry.Get("Files") ?? import_system.TypeSystem.Type("File", validateFile); | ||
var File2 = import_typebox.TypeRegistry.Get("Files") ?? import_system.TypeSystem.Type("File", validateFile); | ||
var Files = import_typebox.TypeRegistry.Get("Files") ?? import_system.TypeSystem.Type( | ||
@@ -424,3 +424,3 @@ "Files", | ||
}, | ||
File, | ||
File: File2, | ||
Files: (options = {}) => t.Transform(Files(options)).Decode((value) => { | ||
@@ -587,2 +587,3 @@ if (Array.isArray(value)) | ||
var encoder = new TextEncoder(); | ||
var ELYSIA_FORM_DATA = Symbol("ElysiaFormData"); | ||
@@ -589,0 +590,0 @@ // src/error.ts |
@@ -475,3 +475,3 @@ "use strict"; | ||
}; | ||
var File = import_typebox.TypeRegistry.Get("Files") ?? import_system.TypeSystem.Type("File", validateFile); | ||
var File2 = import_typebox.TypeRegistry.Get("Files") ?? import_system.TypeSystem.Type("File", validateFile); | ||
var Files = import_typebox.TypeRegistry.Get("Files") ?? import_system.TypeSystem.Type( | ||
@@ -622,3 +622,3 @@ "Files", | ||
}, | ||
File, | ||
File: File2, | ||
Files: (options = {}) => t.Transform(Files(options)).Decode((value) => { | ||
@@ -785,2 +785,20 @@ if (Array.isArray(value)) | ||
var encoder = new TextEncoder(); | ||
var ELYSIA_FORM_DATA = Symbol("ElysiaFormData"); | ||
var form = (items) => { | ||
const formData = new FormData(); | ||
for (const [key, value] of Object.entries(items)) { | ||
if (Array.isArray(value)) { | ||
for (const v of value) { | ||
if (value instanceof File) | ||
formData.append(key, value, value.name); | ||
formData.append(key, v); | ||
} | ||
continue; | ||
} | ||
if (value instanceof File) | ||
formData.append(key, value, value.name); | ||
formData.append(key, value); | ||
} | ||
return formData; | ||
}; | ||
@@ -893,5 +911,17 @@ // src/handler.ts | ||
return handleFile(response, set); | ||
case "Object": | ||
case "Array": | ||
return Response.json(response, set); | ||
case "Object": | ||
for (const value in Object.values(response)) { | ||
switch (value?.constructor?.name) { | ||
case "Blob": | ||
case "File": | ||
case "ArrayBuffer": | ||
case "FileRef": | ||
return new Response(form(response)); | ||
default: | ||
break; | ||
} | ||
} | ||
return Response.json(response, set); | ||
case "ReadableStream": | ||
@@ -970,2 +1000,4 @@ if (!set.headers["content-type"]?.startsWith( | ||
return new Response(response?.toString(), set); | ||
case "FormData": | ||
return new Response(response, set); | ||
default: | ||
@@ -1030,9 +1062,20 @@ if (response instanceof Response) { | ||
return handleFile(response, set); | ||
case "Array": | ||
return Response.json(response); | ||
case "Object": | ||
case "Array": | ||
return new Response(JSON.stringify(response), { | ||
headers: { | ||
"content-type": "application/json" | ||
for (const value in Object.values(response)) { | ||
switch (value?.constructor?.name) { | ||
case "Blob": | ||
case "File": | ||
case "ArrayBuffer": | ||
case "FileRef": | ||
return new Response( | ||
form(response), | ||
set | ||
); | ||
default: | ||
break; | ||
} | ||
}); | ||
} | ||
return Response.json(response, set); | ||
case "ReadableStream": | ||
@@ -1084,2 +1127,4 @@ request?.signal.addEventListener( | ||
return new Response(response?.toString(), set); | ||
case "FormData": | ||
return new Response(response, set); | ||
default: | ||
@@ -1139,5 +1184,20 @@ if (response instanceof Response) | ||
return handleFile(response, set); | ||
case "Object": | ||
case "Array": | ||
return Response.json(response, set); | ||
case "Object": | ||
for (const value in Object.values(response)) { | ||
switch (value?.constructor?.name) { | ||
case "Blob": | ||
case "File": | ||
case "ArrayBuffer": | ||
case "FileRef": | ||
return new Response( | ||
form(response), | ||
set | ||
); | ||
default: | ||
break; | ||
} | ||
} | ||
return Response.json(response, set); | ||
case "ReadableStream": | ||
@@ -1214,2 +1274,4 @@ if (!set.headers["content-type"]?.startsWith( | ||
); | ||
case "FormData": | ||
return new Response(response); | ||
case "Cookie": | ||
@@ -1274,9 +1336,20 @@ if (response instanceof Cookie) | ||
return handleFile(response, set); | ||
case "Array": | ||
return Response.json(response); | ||
case "Object": | ||
case "Array": | ||
return new Response(JSON.stringify(response), { | ||
headers: { | ||
"content-type": "application/json" | ||
for (const value in Object.values(response)) { | ||
switch (value?.constructor?.name) { | ||
case "Blob": | ||
case "File": | ||
case "ArrayBuffer": | ||
case "FileRef": | ||
return new Response( | ||
form(response), | ||
set | ||
); | ||
default: | ||
break; | ||
} | ||
}); | ||
} | ||
return Response.json(response, set); | ||
case "ReadableStream": | ||
@@ -1327,2 +1400,4 @@ request?.signal.addEventListener( | ||
return new Response(response?.toString(), set); | ||
case "FormData": | ||
return new Response(response); | ||
default: | ||
@@ -1367,9 +1442,19 @@ if (response instanceof Response) | ||
return handleFile(response); | ||
case "Array": | ||
return Response.json(response); | ||
case "Object": | ||
case "Array": | ||
return new Response(JSON.stringify(response), { | ||
headers: { | ||
"content-type": "application/json" | ||
} | ||
}); | ||
form: | ||
for (const value of Object.values(response)) | ||
switch (value?.constructor?.name) { | ||
case "Blob": | ||
case "File": | ||
case "ArrayBuffer": | ||
case "FileRef": | ||
return new Response(form(response)); | ||
case "Object": | ||
break form; | ||
default: | ||
break; | ||
} | ||
return Response.json(response); | ||
case "ReadableStream": | ||
@@ -1414,2 +1499,4 @@ request?.signal.addEventListener( | ||
return new Response(response.toString()); | ||
case "FormData": | ||
return new Response(response); | ||
default: | ||
@@ -1416,0 +1503,0 @@ if (response instanceof Response) |
@@ -301,2 +301,3 @@ "use strict"; | ||
var encoder = new TextEncoder(); | ||
var ELYSIA_FORM_DATA = Symbol("ElysiaFormData"); | ||
@@ -462,3 +463,3 @@ // src/error.ts | ||
}; | ||
var File = import_typebox2.TypeRegistry.Get("Files") ?? import_system.TypeSystem.Type("File", validateFile); | ||
var File2 = import_typebox2.TypeRegistry.Get("Files") ?? import_system.TypeSystem.Type("File", validateFile); | ||
var Files = import_typebox2.TypeRegistry.Get("Files") ?? import_system.TypeSystem.Type( | ||
@@ -609,3 +610,3 @@ "Files", | ||
}, | ||
File, | ||
File: File2, | ||
Files: (options = {}) => t.Transform(Files(options)).Decode((value) => { | ||
@@ -612,0 +613,0 @@ if (Array.isArray(value)) |
/// <reference types="bun-types" /> | ||
/// <reference types="node" /> | ||
/// <reference types="bun-types" /> | ||
/// <reference types="bun-types" /> | ||
import type { Elysia } from '.'; | ||
import type { Serve, Server, WebSocketHandler } from 'bun'; | ||
import type { BunFile, Serve, Server, WebSocketHandler } from 'bun'; | ||
import type { TSchema, TObject, StaticDecode, TAnySchema } from '@sinclair/typebox'; | ||
@@ -179,4 +180,4 @@ import type { TypeCheck } from '@sinclair/typebox/compiler'; | ||
cookie: UnwrapSchema<Schema['cookie'], Definitions>; | ||
response: Schema['response'] extends TSchema | string ? UnwrapSchema<Schema['response'], Definitions> : Schema['response'] extends SuccessfulResponse<TAnySchema | string> ? { | ||
[k in keyof Schema['response']]: UnwrapSchema<Schema['response'][k], Definitions>; | ||
response: Schema['response'] extends TSchema | string ? CoExist<UnwrapSchema<Schema['response'], Definitions>, File, BunFile> : Schema['response'] extends SuccessfulResponse<TAnySchema | string> ? { | ||
[k in keyof Schema['response']]: CoExist<UnwrapSchema<Schema['response'][k], Definitions>, File, BunFile>; | ||
} : unknown | void; | ||
@@ -239,2 +240,8 @@ } | ||
}, Path extends string = ''> = (context: Context<Route, Singleton, Path>) => Route['response'] extends SuccessfulResponse ? Response | MaybePromise<Route['response'][keyof Route['response']]> : Response | MaybePromise<Route['response']>; | ||
export type Replace<Original, Target, With> = Original extends Record<string, unknown> ? { | ||
[K in keyof Original]: Original[K] extends Target ? With : Original[K]; | ||
} : Original extends Target ? With : Original; | ||
export type CoExist<Original, Target, With> = Original extends Record<string, unknown> ? { | ||
[K in keyof Original]: Original[K] extends Target ? Original[K] | With : Original[K]; | ||
} : Original extends Target ? Original | With : Original; | ||
export type InlineHandler<Route extends RouteSchema = {}, Singleton extends SingletonBase = { | ||
@@ -577,3 +584,3 @@ decorator: {}; | ||
export type CreateEden<Path extends string, Property extends Record<string, unknown> = {}> = Path extends `/${infer Rest}` ? _CreateEden<Rest, Property> : Path extends '' ? _CreateEden<'index', Property> : _CreateEden<Path, Property>; | ||
export type ComposeElysiaResponse<Response, Handle> = Handle extends (...a: any[]) => infer A ? _ComposeElysiaResponse<Response, Awaited<A>> : _ComposeElysiaResponse<Response, Awaited<Handle>>; | ||
export type ComposeElysiaResponse<Response, Handle> = Handle extends (...a: any[]) => infer A ? _ComposeElysiaResponse<Response, Replace<Awaited<A>, BunFile, File>> : _ComposeElysiaResponse<Response, Replace<Awaited<Handle>, BunFile, File>>; | ||
type _ComposeElysiaResponse<Response, Handle> = Prettify<unknown extends Response ? { | ||
@@ -580,0 +587,0 @@ 200: Exclude<Handle, { |
@@ -0,6 +1,11 @@ | ||
/// <reference types="node" /> | ||
/// <reference types="bun-types" /> | ||
/// <reference types="bun-types" /> | ||
/// <reference types="bun-types" /> | ||
import { TSchema } from '@sinclair/typebox'; | ||
import { TypeCheck } from '@sinclair/typebox/compiler'; | ||
import type { LifeCycleStore, LocalHook, MaybeArray, InputSchema, LifeCycleType, HookContainer } from './types'; | ||
import type { LifeCycleStore, LocalHook, MaybeArray, InputSchema, LifeCycleType, HookContainer, Replace } from './types'; | ||
import type { CookieOptions } from './cookies'; | ||
import { Sucrose } from './sucrose'; | ||
import { BunFile } from 'bun'; | ||
export declare const replaceUrlPath: (url: string, pathname: string) => string; | ||
@@ -213,3 +218,10 @@ export declare const mergeDeep: <A extends Record<string, any>, B extends Record<string, any>>(target: A, source: B, { skipKeys }?: { | ||
*/ | ||
export declare const redirect: (url: string, status?: number) => import("undici-types").Response; | ||
export declare const redirect: (url: string, status?: 301 | 302 | 303 | 307 | 308) => import("undici-types").Response; | ||
export type redirect = typeof redirect; | ||
export declare const ELYSIA_FORM_DATA: unique symbol; | ||
export type ELYSIA_FORM_DATA = typeof ELYSIA_FORM_DATA; | ||
type ElysiaFormData<T extends Record<string | number, unknown>> = FormData & { | ||
[ELYSIA_FORM_DATA]: Replace<T, BunFile, File>; | ||
}; | ||
export declare const form: <const T extends Record<string | number, unknown>>(items: T) => ElysiaFormData<T>; | ||
export {}; |
@@ -33,2 +33,3 @@ "use strict"; | ||
__export(utils_exports, { | ||
ELYSIA_FORM_DATA: () => ELYSIA_FORM_DATA, | ||
InvertedStatusMap: () => InvertedStatusMap, | ||
@@ -43,2 +44,3 @@ PromiseGroup: () => PromiseGroup, | ||
fnToContainer: () => fnToContainer, | ||
form: () => form, | ||
getCookieValidator: () => getCookieValidator, | ||
@@ -392,3 +394,3 @@ getResponseSchemaValidator: () => getResponseSchemaValidator, | ||
}; | ||
var File = import_typebox.TypeRegistry.Get("Files") ?? import_system.TypeSystem.Type("File", validateFile); | ||
var File2 = import_typebox.TypeRegistry.Get("Files") ?? import_system.TypeSystem.Type("File", validateFile); | ||
var Files = import_typebox.TypeRegistry.Get("Files") ?? import_system.TypeSystem.Type( | ||
@@ -539,3 +541,3 @@ "Files", | ||
}, | ||
File, | ||
File: File2, | ||
Files: (options = {}) => t.Transform(Files(options)).Decode((value) => { | ||
@@ -1290,10 +1292,24 @@ if (Array.isArray(value)) | ||
}); | ||
var redirect = (url, status = 301) => new Response(null, { | ||
status, | ||
headers: { | ||
Location: url | ||
var redirect = (url, status = 301) => Response.redirect(url, status); | ||
var ELYSIA_FORM_DATA = Symbol("ElysiaFormData"); | ||
var form = (items) => { | ||
const formData = new FormData(); | ||
for (const [key, value] of Object.entries(items)) { | ||
if (Array.isArray(value)) { | ||
for (const v of value) { | ||
if (value instanceof File) | ||
formData.append(key, value, value.name); | ||
formData.append(key, v); | ||
} | ||
continue; | ||
} | ||
if (value instanceof File) | ||
formData.append(key, value, value.name); | ||
formData.append(key, value); | ||
} | ||
}); | ||
return formData; | ||
}; | ||
// Annotate the CommonJS export names for ESM import in node: | ||
0 && (module.exports = { | ||
ELYSIA_FORM_DATA, | ||
InvertedStatusMap, | ||
@@ -1308,2 +1324,3 @@ PromiseGroup, | ||
fnToContainer, | ||
form, | ||
getCookieValidator, | ||
@@ -1310,0 +1327,0 @@ getResponseSchemaValidator, |
@@ -272,3 +272,3 @@ "use strict"; | ||
}; | ||
var File = import_typebox.TypeRegistry.Get("Files") ?? import_system.TypeSystem.Type("File", validateFile); | ||
var File2 = import_typebox.TypeRegistry.Get("Files") ?? import_system.TypeSystem.Type("File", validateFile); | ||
var Files = import_typebox.TypeRegistry.Get("Files") ?? import_system.TypeSystem.Type( | ||
@@ -419,3 +419,3 @@ "Files", | ||
}, | ||
File, | ||
File: File2, | ||
Files: (options = {}) => t.Transform(Files(options)).Decode((value) => { | ||
@@ -582,2 +582,3 @@ if (Array.isArray(value)) | ||
var encoder = new TextEncoder(); | ||
var ELYSIA_FORM_DATA = Symbol("ElysiaFormData"); | ||
@@ -584,0 +585,0 @@ // src/error.ts |
/// <reference types="bun-types" /> | ||
/// <reference types="node" /> | ||
/// <reference types="bun-types" /> | ||
/// <reference types="bun-types" /> | ||
import type { Elysia } from '.'; | ||
import type { Serve, Server, WebSocketHandler } from 'bun'; | ||
import type { BunFile, Serve, Server, WebSocketHandler } from 'bun'; | ||
import type { TSchema, TObject, StaticDecode, TAnySchema } from '@sinclair/typebox'; | ||
@@ -179,4 +180,4 @@ import type { TypeCheck } from '@sinclair/typebox/compiler'; | ||
cookie: UnwrapSchema<Schema['cookie'], Definitions>; | ||
response: Schema['response'] extends TSchema | string ? UnwrapSchema<Schema['response'], Definitions> : Schema['response'] extends SuccessfulResponse<TAnySchema | string> ? { | ||
[k in keyof Schema['response']]: UnwrapSchema<Schema['response'][k], Definitions>; | ||
response: Schema['response'] extends TSchema | string ? CoExist<UnwrapSchema<Schema['response'], Definitions>, File, BunFile> : Schema['response'] extends SuccessfulResponse<TAnySchema | string> ? { | ||
[k in keyof Schema['response']]: CoExist<UnwrapSchema<Schema['response'][k], Definitions>, File, BunFile>; | ||
} : unknown | void; | ||
@@ -239,2 +240,8 @@ } | ||
}, Path extends string = ''> = (context: Context<Route, Singleton, Path>) => Route['response'] extends SuccessfulResponse ? Response | MaybePromise<Route['response'][keyof Route['response']]> : Response | MaybePromise<Route['response']>; | ||
export type Replace<Original, Target, With> = Original extends Record<string, unknown> ? { | ||
[K in keyof Original]: Original[K] extends Target ? With : Original[K]; | ||
} : Original extends Target ? With : Original; | ||
export type CoExist<Original, Target, With> = Original extends Record<string, unknown> ? { | ||
[K in keyof Original]: Original[K] extends Target ? Original[K] | With : Original[K]; | ||
} : Original extends Target ? Original | With : Original; | ||
export type InlineHandler<Route extends RouteSchema = {}, Singleton extends SingletonBase = { | ||
@@ -577,3 +584,3 @@ decorator: {}; | ||
export type CreateEden<Path extends string, Property extends Record<string, unknown> = {}> = Path extends `/${infer Rest}` ? _CreateEden<Rest, Property> : Path extends '' ? _CreateEden<'index', Property> : _CreateEden<Path, Property>; | ||
export type ComposeElysiaResponse<Response, Handle> = Handle extends (...a: any[]) => infer A ? _ComposeElysiaResponse<Response, Awaited<A>> : _ComposeElysiaResponse<Response, Awaited<Handle>>; | ||
export type ComposeElysiaResponse<Response, Handle> = Handle extends (...a: any[]) => infer A ? _ComposeElysiaResponse<Response, Replace<Awaited<A>, BunFile, File>> : _ComposeElysiaResponse<Response, Replace<Awaited<Handle>, BunFile, File>>; | ||
type _ComposeElysiaResponse<Response, Handle> = Prettify<unknown extends Response ? { | ||
@@ -580,0 +587,0 @@ 200: Exclude<Handle, { |
@@ -0,6 +1,11 @@ | ||
/// <reference types="node" /> | ||
/// <reference types="bun-types" /> | ||
/// <reference types="bun-types" /> | ||
/// <reference types="bun-types" /> | ||
import { TSchema } from '@sinclair/typebox'; | ||
import { TypeCheck } from '@sinclair/typebox/compiler'; | ||
import type { LifeCycleStore, LocalHook, MaybeArray, InputSchema, LifeCycleType, HookContainer } from './types'; | ||
import type { LifeCycleStore, LocalHook, MaybeArray, InputSchema, LifeCycleType, HookContainer, Replace } from './types'; | ||
import type { CookieOptions } from './cookies'; | ||
import { Sucrose } from './sucrose'; | ||
import { BunFile } from 'bun'; | ||
export declare const replaceUrlPath: (url: string, pathname: string) => string; | ||
@@ -213,3 +218,10 @@ export declare const mergeDeep: <A extends Record<string, any>, B extends Record<string, any>>(target: A, source: B, { skipKeys }?: { | ||
*/ | ||
export declare const redirect: (url: string, status?: number) => import("undici-types").Response; | ||
export declare const redirect: (url: string, status?: 301 | 302 | 303 | 307 | 308) => import("undici-types").Response; | ||
export type redirect = typeof redirect; | ||
export declare const ELYSIA_FORM_DATA: unique symbol; | ||
export type ELYSIA_FORM_DATA = typeof ELYSIA_FORM_DATA; | ||
type ElysiaFormData<T extends Record<string | number, unknown>> = FormData & { | ||
[ELYSIA_FORM_DATA]: Replace<T, BunFile, File>; | ||
}; | ||
export declare const form: <const T extends Record<string | number, unknown>>(items: T) => ElysiaFormData<T>; | ||
export {}; |
{ | ||
"name": "elysia", | ||
"description": "Ergonomic Framework for Human", | ||
"version": "1.0.21", | ||
"version": "1.0.22", | ||
"author": { | ||
@@ -14,2 +14,3 @@ "name": "saltyAom", | ||
"exports": { | ||
"./package.json": "./package.json", | ||
".": { | ||
@@ -16,0 +17,0 @@ "types": "./dist/index.d.ts", |
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
Uses eval
Supply chain riskPackage uses dynamic code execution (e.g., eval()), which is a dangerous practice. This can prevent the code from running in certain environments and increases the risk that the code may contain exploits or malicious behavior.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
Uses eval
Supply chain riskPackage uses dynamic code execution (e.g., eval()), which is a dangerous practice. This can prevent the code from running in certain environments and increases the risk that the code may contain exploits or malicious behavior.
Found 1 instance in 1 package
2440115
47130