deno/ext/node/polyfills/internal/http.ts
James Bronder a2c0157306
fix(ext/node): use primordials in ext/node/polyfills/internal/http.ts (#29082)
Towards #24236. This PR replaces `Date`, `Date` methods, and `Symbol`s
with their primordial versions.
2025-04-29 18:34:22 +02:00

45 lines
1 KiB
TypeScript

// Copyright 2018-2025 the Deno authors. MIT license.
// Copyright Joyent and Node contributors. All rights reserved. MIT license.
import { setUnrefTimeout } from "node:timers";
import { notImplemented } from "ext:deno_node/_utils.ts";
import { primordials } from "ext:core/mod.js";
const {
Date,
DatePrototypeToUTCString,
DatePrototypeGetMilliseconds,
Symbol,
} = primordials;
let utcCache: string | undefined;
export function utcDate() {
if (!utcCache) cache();
return utcCache;
}
function cache() {
const d = new Date();
utcCache = DatePrototypeToUTCString(d);
setUnrefTimeout(resetCache, 1000 - DatePrototypeGetMilliseconds(d));
}
function resetCache() {
utcCache = undefined;
}
export function emitStatistics(
_statistics: { startTime: [number, number] } | null,
) {
notImplemented("internal/http.emitStatistics");
}
export const kOutHeaders = Symbol("kOutHeaders");
export const kNeedDrain = Symbol("kNeedDrain");
export default {
utcDate,
emitStatistics,
kOutHeaders,
kNeedDrain,
};