bun-crumb 0.2.0 → 0.3.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/README.md +4 -4
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -1
- package/dist/types/route.d.ts +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# <div align='center'> <a> **Bun Crumb** </a> </div>
|
|
2
2
|
|
|
3
3
|
<div align='center'>
|
|
4
|
-
[](https://github.com/a-marigold/crumb/actions) [](https://bun.com) [](https://npmjs.com/package/bun-crumb)
|
|
4
|
+
[](https://github.com/a-marigold/crumb/actions) [](https://bun.com) [](https://npmjs.com/package/bun-crumb) [](https://npmjs.com/package/bun-crumb)
|
|
5
5
|
|
|
6
6
|
</div>
|
|
7
7
|
|
|
@@ -24,7 +24,7 @@ bun add bun-crumb
|
|
|
24
24
|
Handling Requests
|
|
25
25
|
|
|
26
26
|
```typescript
|
|
27
|
-
import { createRoute, type RouteResponse } from 'crumb
|
|
27
|
+
import { createRoute, type RouteResponse } from 'bun-crumb';
|
|
28
28
|
|
|
29
29
|
type Product = { title: string; price: number; id: number };
|
|
30
30
|
|
|
@@ -50,7 +50,7 @@ createRoute({
|
|
|
50
50
|
Middleware / Pre-handlers
|
|
51
51
|
|
|
52
52
|
```typescript
|
|
53
|
-
import { createRoute, type RouteResponse } from 'crumb
|
|
53
|
+
import { createRoute, type RouteResponse } from 'bun-crumb';
|
|
54
54
|
|
|
55
55
|
type Product = { title: string; price: number; id: number };
|
|
56
56
|
|
|
@@ -80,7 +80,7 @@ createRoute({
|
|
|
80
80
|
Setting Headers and Status
|
|
81
81
|
|
|
82
82
|
```typescript
|
|
83
|
-
import { createRoute } from 'crumb
|
|
83
|
+
import { createRoute } from 'bun-crumb';
|
|
84
84
|
|
|
85
85
|
createRoute({
|
|
86
86
|
url: '/auth',
|
package/dist/index.d.ts
CHANGED
|
@@ -89,7 +89,7 @@ interface RouteResponse<T extends {
|
|
|
89
89
|
send: (data: T['body'], options?: ResponseOptions) => void;
|
|
90
90
|
}
|
|
91
91
|
type Route = Partial<Record<HttpMethod, RouteOptions>>;
|
|
92
|
-
type RouteHandler = (request: RouteRequest, response: RouteResponse) => void;
|
|
92
|
+
type RouteHandler = (request: RouteRequest, response: RouteResponse) => Promise<void> | void;
|
|
93
93
|
type RouteOptions = {
|
|
94
94
|
url: string;
|
|
95
95
|
method: HttpMethod;
|
package/dist/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{serve as t}from"bun";class e extends Error{status;constructor(t,e){super(e),this.status=t,this.name="HttpError"}}const n=new Map,s=(t,n,s,
|
|
1
|
+
import{serve as t}from"bun";class e extends Error{status;constructor(t,e){super(e),this.status=t,this.name="HttpError"}}const n=new Map,s=(t,n,s,o)=>{const r={"application/json":t=>t.json().catch(t=>{throw new e(400,t)}).then(t=>{if(s&&o&&!o(t,s))throw new e(400,"Request does not match schema");return t}),"text/plain":t=>t.text().catch(t=>{throw new e(400,t)}).then(t=>{if(s&&o&&!o(t,s))throw new e(400,"Request does not match schema");return t})};return n in r?r[n](t):Promise.reject(new e(415,"Unsupported media type"))},o=(t,n)=>o=>{const r=o.headers.get("Content-Type")??"text/plain",a=o;return a.handleBody=()=>s(o,r,t.schema,n).then(t=>t),Promise.resolve(((t,e)=>{let n,s,o=null;const r={},a={setHeader:(t,e)=>{r[t]=e},send:(t,e)=>{"object"==typeof t?r["Content-Type"]="application/json":"string"==typeof t&&(r["Content-Type"]="text/plain"),o=t,n=e?.status,s=e?.statusText}};return Promise.all([e.onRequest?.(t,a),e.preHandler?.(t,a),e.handler(t,a)]).then(()=>new Response(null==o?null:JSON.stringify(o),{headers:r,status:n,statusText:s}))})(a,t)).then(t=>t).catch(t=>t instanceof e?new Response(t.message,{status:t.status}):new Response("Internal server error",{status:500}))},r=(t,e)=>{const n={};for(const s in t)Object.hasOwn(t,s)&&(n[s]=o(t[s],e));return n},a=(t,e)=>{const n={};for(const s of t)n[s[0]]=r(s[1],e);return t.clear(),n},c=e=>{t({port:e.port,hostname:e.hostname,development:e.development??!1,routes:a(n,e?.schemaValidator)})},h=t=>{const e=n.get(t.url);e?e[t.method]=t:n.set(t.url,{[t.method]:t})};export{n as _routes,h as createRoute,s as handleBody,c as listen,r as prepareRoute,a as prepareRoutes,o as wrapRouteCallback};
|
package/dist/types/route.d.ts
CHANGED
|
@@ -49,7 +49,7 @@ export interface RouteResponse<T extends {
|
|
|
49
49
|
send: (data: T['body'], options?: ResponseOptions) => void;
|
|
50
50
|
}
|
|
51
51
|
export type Route = Partial<Record<HttpMethod, RouteOptions>>;
|
|
52
|
-
export type RouteHandler = (request: RouteRequest, response: RouteResponse) => void;
|
|
52
|
+
export type RouteHandler = (request: RouteRequest, response: RouteResponse) => Promise<void> | void;
|
|
53
53
|
export type RouteOptions = {
|
|
54
54
|
url: string;
|
|
55
55
|
method: HttpMethod;
|