Skip to content

Commit bf7f43d

Browse files
committed
chore - deno 2
1 parent 4c9a7b3 commit bf7f43d

File tree

7 files changed

+36
-47
lines changed

7 files changed

+36
-47
lines changed

configuration

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
# in src/command/check/check.ts
1212

1313
# Binary dependencies
14-
export DENO=v1.46.3
14+
export DENO=v2.2.10
1515
# TODO figure out where 0.1.41 apple silicon libs are available
1616
export DENO_DOM=v0.1.41-alpha-artifacts
1717
export PANDOC=3.6.3

package/scripts/deno_std/download.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,4 +10,4 @@ fi
1010

1111

1212
export DENO_DIR="$QUARTO_SRC_PATH/resources/deno_std/cache"
13-
"$QUARTO_DENO" cache --no-config --unstable-ffi --lock "$QUARTO_SRC_PATH/resources/deno_std/deno_std.lock" "$@" "$QUARTO_PACKAGE_PATH/scripts/deno_std/deno_std.ts"
13+
"$QUARTO_DENO" cache --allow-all --no-config --unstable-ffi --lock "$QUARTO_SRC_PATH/resources/deno_std/deno_std.lock" "$@" "$QUARTO_PACKAGE_PATH/scripts/deno_std/deno_std.ts"

src/command/preview/preview-shiny.ts

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -159,13 +159,6 @@ function runPreviewControlService(
159159

160160
const port = findOpenPort();
161161

162-
const controlListener = Deno.listen({ port, hostname: kLocalhost });
163-
onCleanup(() => controlListener.close());
164-
165-
handleHttpRequests(controlListener, handler).then(() => {
166-
// terminanted
167-
}).catch((_error) => {
168-
// ignore errors
169-
});
162+
onCleanup(handleHttpRequests({ ...handlerOptions, handler }).stop);
170163
info(`Preview service running (${port})`);
171164
}

src/core/http-server.ts

Lines changed: 15 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,30 +1,22 @@
11
/*
22
* http-server.ts
33
*
4-
* Copyright (C) 2020-2022 Posit Software, PBC
4+
* Copyright (C) 2025 Posit Software, PBC
55
*/
66

7-
import { warning } from "../deno_ral/log.ts";
8-
9-
export async function handleHttpRequests(
10-
listener: Deno.Listener,
11-
handler: (req: Request) => Promise<Response>,
7+
export function handleHttpRequests(
8+
options: {
9+
port?: number;
10+
hostname?: string;
11+
handler: (req: Request) => Promise<Response>;
12+
},
1213
) {
13-
for await (const conn of listener) {
14-
(async () => {
15-
try {
16-
for await (const { request, respondWith } of Deno.serveHttp(conn)) {
17-
await respondWith(handler(request));
18-
}
19-
} catch (err) {
20-
if (!(err instanceof Error)) throw err;
21-
warning(err.message);
22-
try {
23-
conn.close();
24-
} catch {
25-
//
26-
}
27-
}
28-
})();
29-
}
14+
const abortController = new AbortController();
15+
const server = Deno.serve({ ...options, signal: abortController.signal });
16+
return {
17+
server,
18+
stop: () => {
19+
abortController.abort();
20+
},
21+
};
3022
}

src/core/http.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -150,6 +150,7 @@ export function httpFileRequestHandler(
150150
}
151151
}
152152
} catch (e) {
153+
if (!(e instanceof Error)) throw e;
153154
// it's possible for an exception to occur before we've normalized the path
154155
// so we need to renormalize it here
155156
if (fsPath) {

src/preview/preview-server.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@
55
*/
66

77
import { MuxAsyncIterator } from "async/mux-async-iterator";
8-
import { iterateReader } from "io/iterate-reader";
98
import { isWindows } from "../deno_ral/platform.ts";
109

1110
export interface PreviewServer {

src/project/serve/serve.ts

Lines changed: 17 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -403,7 +403,7 @@ function externalPreviewServer(
403403
): Promise<PreviewServer> {
404404
// run a control channel server for handling render requests
405405
// if there was a renderToken() passed
406-
let controlListener: Deno.Listener | undefined;
406+
let stop: () => void | undefined;
407407
if (renderToken()) {
408408
const outputDir = projectOutputDir(project);
409409
const handlerOptions: HttpFileRequestOptions = {
@@ -425,12 +425,12 @@ function externalPreviewServer(
425425

426426
const handler = httpFileRequestHandler(handlerOptions);
427427
const port = findOpenPort();
428-
controlListener = Deno.listen({ port, hostname: kLocalhost });
429-
handleHttpRequests(controlListener, handler).then(() => {
430-
// terminanted
431-
}).catch((_error) => {
432-
// ignore errors
433-
});
428+
({ stop } = handleHttpRequests({
429+
port,
430+
hostname: kLocalhost,
431+
handler,
432+
}));
433+
// .abortController;
434434
info(`Preview service running (${port})`);
435435
}
436436

@@ -467,9 +467,7 @@ function externalPreviewServer(
467467
return server.serve();
468468
},
469469
stop: () => {
470-
if (controlListener) {
471-
controlListener.close();
472-
}
470+
stop?.();
473471
return server.stop();
474472
},
475473
});
@@ -772,15 +770,21 @@ async function internalPreviewServer(
772770
const path = (targetPath && targetPath !== "index.html") ? targetPath : "";
773771

774772
// start listening
775-
const listener = Deno.listen({ port: options.port!, hostname: options.host });
773+
let stop: () => void | undefined;
776774

777775
return {
778776
start: () => Promise.resolve(path),
779777
serve: async () => {
780-
await handleHttpRequests(listener, handler);
778+
const { server, stop: stopServer } = handleHttpRequests({
779+
port: options.port!,
780+
hostname: options.host,
781+
handler,
782+
});
783+
stop = stopServer;
784+
await server.finished;
781785
},
782786
stop: () => {
783-
listener.close();
787+
stop?.();
784788
return Promise.resolve();
785789
},
786790
};

0 commit comments

Comments
 (0)