Skip to content

Commit 3862de8

Browse files
committed
withResolvers shim
1 parent 61c73a3 commit 3862de8

File tree

3 files changed

+25
-5
lines changed

3 files changed

+25
-5
lines changed

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -143,7 +143,7 @@
143143
"@types/dompurify": "3.0.5"
144144
},
145145
"volta": {
146-
"node": "22.16.0",
146+
"node": "20.19.3",
147147
"yarn": "1.22.22"
148148
}
149149
}

scripts/generate-md-exports.mjs

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -126,14 +126,22 @@ async function createWork() {
126126
}
127127

128128
const md5 = data => createHash('md5').update(data).digest('hex');
129+
const withResolvers = () => {
130+
let resolve, reject;
131+
const promise = new Promise((res, rej) => {
132+
resolve = res;
133+
reject = rej;
134+
});
135+
return {resolve, reject, promise};
136+
};
129137

130138
async function genMDFromHTML(source, target, {cacheDir, noCache}) {
131139
const text = await readFile(source, {encoding: 'utf8'});
132140
const hash = md5(text);
133141
const cacheFile = path.join(cacheDir, hash);
134142
if (!noCache) {
135143
try {
136-
const {resolve, reject, promise} = Promise.withResolvers();
144+
const {resolve, reject, promise} = withResolvers();
137145
const reader = createReadStream(cacheFile);
138146
reader.on('error', reject);
139147
reader.pause();
@@ -185,7 +193,7 @@ async function genMDFromHTML(source, target, {cacheDir, noCache}) {
185193
const reader = Readable.from(data);
186194
reader.pause();
187195

188-
const {resolve, reject, promise} = Promise.withResolvers();
196+
const {resolve, reject, promise} = withResolvers();
189197
const writer = createWriteStream(target, {
190198
encoding: 'utf8',
191199
});

src/mdx.ts

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -47,8 +47,20 @@ mkdirSync(CACHE_DIR, {recursive: true});
4747

4848
const md5 = (data: BinaryLike) => createHash('md5').update(data).digest('hex');
4949

50+
// TODO: Remove this shim when we upgrade to Node 22 on Vercel
51+
function withResolvers<T>() {
52+
let resolve!: (value: T | PromiseLike<T>) => void;
53+
let reject!: (reason?: any) => void;
54+
const promise = new Promise<T>((res, rej) => {
55+
resolve = res;
56+
reject = rej;
57+
});
58+
return {resolve, reject, promise};
59+
};
60+
61+
5062
async function readCacheFile(file: string): Promise<string> {
51-
const {resolve, reject, promise} = Promise.withResolvers<string>();
63+
const {resolve, reject, promise} = withResolvers<string>();
5264

5365
const reader = createReadStream(file);
5466
reader.on('error', reject);
@@ -71,7 +83,7 @@ async function readCacheFile(file: string): Promise<string> {
7183
}
7284

7385
async function writeCacheFile(file: string, data: string) {
74-
const {resolve, reject, promise} = Promise.withResolvers<void>();
86+
const {resolve, reject, promise} = withResolvers<void>();
7587

7688
const reader = Readable.from(data);
7789
reader.pause();

0 commit comments

Comments
 (0)