Skip to content

Commit 49a1334

Browse files
committed
ref: use Deno.serve instead of std module
1 parent 20f9fa4 commit 49a1334

6 files changed

Lines changed: 25 additions & 881 deletions

File tree

examples/deno/main.ts

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ import { swagger } from '@elysiajs/swagger';
1717
const key = Deno.readTextFileSync('../../keys/localhost-key.pem');
1818
const cert = Deno.readTextFileSync('../../keys/localhost.pem');
1919

20-
const app = new Elysia()
20+
new Elysia()
2121
.use(cookie())
2222
.use(swagger())
2323
.get('/', () => ({ hello: 'Deno👋' }))
@@ -33,5 +33,3 @@ const app = new Elysia()
3333
})
3434
.listen({ key, cert, port: 8443 });
3535

36-
console.log(`Listening on https://localhost:${app.server!.port}`);
37-

src/env/deno/deno-types.d.ts

Lines changed: 13 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -1,63 +1,39 @@
11
declare namespace Deno {
22
interface Server {
3-
[Symbol.asyncIterator](): AsyncGenerator<Conn>;
43
close(): void;
54
}
65

7-
interface Conn extends Closer {
8-
localAddr: Addr;
9-
remoteAddr: Addr;
10-
}
11-
12-
interface NetAddr {
13-
port: number;
14-
}
15-
16-
interface Listener extends Closer {
17-
accept(): Promise<Conn>;
18-
addr: Addr;
19-
}
20-
216
interface Closer {
227
close(): void;
238
}
249

25-
interface HttpConn extends Conn {
26-
nextRequest(): Promise<RequestEvent>;
27-
[Symbol.asyncIterator](): AsyncGenerator<RequestEvent>;
28-
}
29-
30-
interface RequestEvent {
31-
request: Request;
32-
respondWith(response: Response): Promise<void>;
33-
}
34-
35-
type ListenOptions = { port: number; hostname: string; transport: 'tcp' };
10+
type ServeOptions = {
11+
port?: number;
12+
hostname?: string;
13+
onError?: (error: unknown) => Response | Promise<Response>;
14+
};
3615

37-
type ListenTlsOptions = ListenOptions & {
16+
type ServeTlsOptions = ServeOptions & {
3817
key: string;
3918
cert: string;
40-
alpnProtocols?: string[];
4119
};
4220

43-
interface Addr {}
44-
}
45-
46-
interface Http {
47-
new (message: string): Error;
21+
type ServeHandler = (request: Request) => Response | Promise<Response>;
4822
}
4923

5024
const Deno: {
51-
// https://deno.land/api@v1.33.4?s=Deno.listenTls
52-
listenTls(options: Deno.ListenTlsOptions): Deno.Listener;
53-
listen(options: Deno.ListenOptions): Deno.Listener;
54-
serveHttp(connection: Deno.Conn): Deno.HttpConn;
5525
env: {
5626
get(name: string): string | undefined;
5727
};
5828
readFileSync(path: string | URL): Uint8Array; // https://deno.land/api@v1.33.1?s=Deno.readFileSync
5929
readTextFileSync(path: string): string;
6030

31+
// https://deno.land/api@v1.35.0?s=Deno.serve
32+
serve(
33+
options: Deno.ServeOptions | Deno.ServeTlsOptions,
34+
handler: Deno.ServeHandler
35+
): Deno.Server;
36+
6137
errors: {
6238
BadResource;
6339
InvalidData;

src/env/deno/server.ts

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@ import type {
1010

1111
import { ensureDefaults } from '../../config.js';
1212

13-
import { Server } from './std/server.js';
1413
import { handleError } from '../error.js';
1514

1615
const ElysiaBun: TElysiaBun = {
@@ -22,12 +21,19 @@ const ElysiaBun: TElysiaBun = {
2221
options.development = Deno.env.get('NODE_ENV') !== 'production';
2322
}
2423

25-
const denoServer = new Server({
24+
const serveOptions: Deno.ServeOptions = {
2625
hostname,
2726
port,
28-
handler: (request) => server.fetch(request),
2927
onError: (error) => handleError(options, server, error)
30-
});
28+
};
29+
30+
if (key && cert) {
31+
const serveTlsOptions = serveOptions as Deno.ServeTlsOptions;
32+
serveTlsOptions.key = key;
33+
serveTlsOptions.cert = cert;
34+
}
35+
36+
let denoServer: Deno.Server;
3137

3238
const server: TElysiaServer = {
3339
id: '',
@@ -56,11 +62,7 @@ const ElysiaBun: TElysiaBun = {
5662
}
5763
};
5864

59-
if (key && cert) {
60-
void denoServer.listenAndServeTls(cert, key);
61-
} else {
62-
void denoServer.listenAndServe();
63-
}
65+
denoServer = Deno.serve(serveOptions, (request) => server.fetch(request));
6466

6567
return server as TBunServer;
6668
},

src/env/deno/std/README.md

Lines changed: 0 additions & 27 deletions
This file was deleted.

src/env/deno/std/delay.ts

Lines changed: 0 additions & 67 deletions
This file was deleted.

0 commit comments

Comments
 (0)