Skip to content

Commit 8b868a3

Browse files
committed
Use more workerd native modules
1 parent abe49d8 commit 8b868a3

File tree

5 files changed

+67
-119
lines changed

5 files changed

+67
-119
lines changed

.changeset/cold-parents-guess.md

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
---
2+
"@cloudflare/unenv-preset": patch
3+
"wrangler": patch
4+
---
5+
6+
Use more workerd native modules
7+
8+
Node modules `punycode`, `trace_events`, `cluster`, `wasi`, and `domains` will be used when enabled
9+
via a compatibility flag or by default when the compatibility date is greater or equal to 2025-12-04.

packages/unenv-preset/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@
4949
},
5050
"peerDependencies": {
5151
"unenv": "2.0.0-rc.24",
52-
"workerd": "^1.20251106.1"
52+
"workerd": "^1.20251125.0"
5353
},
5454
"peerDependenciesMeta": {
5555
"workerd": {

packages/unenv-preset/src/preset.ts

Lines changed: 35 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -325,12 +325,11 @@ function getFsOverrides({
325325
* Returns the overrides for `node:punycode` (unenv or workerd)
326326
*
327327
* The native punycode implementation:
328-
* - is experimental
328+
* - is enabled starting from 2025-12-04
329329
* - can be enabled with the "enable_nodejs_punycode_module" flag
330330
* - can be disabled with the "disable_nodejs_punycode_module" flag
331331
*/
332332
function getPunycodeOverrides({
333-
// eslint-disable-next-line unused-imports/no-unused-vars
334333
compatibilityDate,
335334
compatibilityFlags,
336335
}: {
@@ -341,12 +340,13 @@ function getPunycodeOverrides({
341340
"disable_nodejs_punycode_module"
342341
);
343342

344-
// TODO: add `enabledByDate` when a date is defined in workerd
345-
const enabledByFlag =
346-
compatibilityFlags.includes("enable_nodejs_punycode_module") &&
347-
compatibilityFlags.includes("experimental");
343+
const enabledByFlag = compatibilityFlags.includes(
344+
"enable_nodejs_punycode_module"
345+
);
348346

349-
const enabled = enabledByFlag && !disabledByFlag;
347+
const enabledByDate = compatibilityDate >= "2025-12-04";
348+
349+
const enabled = (enabledByFlag || enabledByDate) && !disabledByFlag;
350350

351351
return enabled
352352
? {
@@ -363,12 +363,11 @@ function getPunycodeOverrides({
363363
* Returns the overrides for `node:cluster` (unenv or workerd)
364364
*
365365
* The native cluster implementation:
366-
* - is experimental
366+
* - is enabled starting from 2025-12-04
367367
* - can be enabled with the "enable_nodejs_cluster_module" flag
368368
* - can be disabled with the "disable_nodejs_cluster_module" flag
369369
*/
370370
function getClusterOverrides({
371-
// eslint-disable-next-line unused-imports/no-unused-vars
372371
compatibilityDate,
373372
compatibilityFlags,
374373
}: {
@@ -379,12 +378,13 @@ function getClusterOverrides({
379378
"disable_nodejs_cluster_module"
380379
);
381380

382-
// TODO: add `enabledByDate` when a date is defined in workerd
383-
const enabledByFlag =
384-
compatibilityFlags.includes("enable_nodejs_cluster_module") &&
385-
compatibilityFlags.includes("experimental");
381+
const enabledByFlag = compatibilityFlags.includes(
382+
"enable_nodejs_cluster_module"
383+
);
384+
385+
const enabledByDate = compatibilityDate >= "2025-12-04";
386386

387-
const enabled = enabledByFlag && !disabledByFlag;
387+
const enabled = (enabledByFlag || enabledByDate) && !disabledByFlag;
388388

389389
return enabled
390390
? {
@@ -401,12 +401,11 @@ function getClusterOverrides({
401401
* Returns the overrides for `node:trace_events` (unenv or workerd)
402402
*
403403
* The native trace_events implementation:
404-
* - is experimental
404+
* - is enabled starting from 2025-12-04
405405
* - can be enabled with the "enable_nodejs_trace_events_module" flag
406406
* - can be disabled with the "disable_nodejs_trace_events_module" flag
407407
*/
408408
function getTraceEventsOverrides({
409-
// eslint-disable-next-line unused-imports/no-unused-vars
410409
compatibilityDate,
411410
compatibilityFlags,
412411
}: {
@@ -417,12 +416,13 @@ function getTraceEventsOverrides({
417416
"disable_nodejs_trace_events_module"
418417
);
419418

420-
// TODO: add `enabledByDate` when a date is defined in workerd
421-
const enabledByFlag =
422-
compatibilityFlags.includes("enable_nodejs_trace_events_module") &&
423-
compatibilityFlags.includes("experimental");
419+
const enabledByFlag = compatibilityFlags.includes(
420+
"enable_nodejs_trace_events_module"
421+
);
422+
423+
const enabledByDate = compatibilityDate >= "2025-12-04";
424424

425-
const enabled = enabledByFlag && !disabledByFlag;
425+
const enabled = (enabledByFlag || enabledByDate) && !disabledByFlag;
426426

427427
return enabled
428428
? {
@@ -439,12 +439,11 @@ function getTraceEventsOverrides({
439439
* Returns the overrides for `node:domain` (unenv or workerd)
440440
*
441441
* The native domain implementation:
442-
* - is experimental
442+
* - is enabled starting from 2025-12-04
443443
* - can be enabled with the "enable_nodejs_domain_module" flag
444444
* - can be disabled with the "disable_nodejs_domain_module" flag
445445
*/
446446
function getDomainOverrides({
447-
// eslint-disable-next-line unused-imports/no-unused-vars
448447
compatibilityDate,
449448
compatibilityFlags,
450449
}: {
@@ -455,12 +454,13 @@ function getDomainOverrides({
455454
"disable_nodejs_domain_module"
456455
);
457456

458-
// TODO: add `enabledByDate` when a date is defined in workerd
459-
const enabledByFlag =
460-
compatibilityFlags.includes("enable_nodejs_domain_module") &&
461-
compatibilityFlags.includes("experimental");
457+
const enabledByFlag = compatibilityFlags.includes(
458+
"enable_nodejs_domain_module"
459+
);
460+
461+
const enabledByDate = compatibilityDate >= "2025-12-04";
462462

463-
const enabled = enabledByFlag && !disabledByFlag;
463+
const enabled = (enabledByFlag || enabledByDate) && !disabledByFlag;
464464

465465
return enabled
466466
? {
@@ -477,12 +477,11 @@ function getDomainOverrides({
477477
* Returns the overrides for `node:wasi` (unenv or workerd)
478478
*
479479
* The native wasi implementation:
480-
* - is experimental
480+
* - is enabled starting from 2025-12-04
481481
* - can be enabled with the "enable_nodejs_wasi_module" flag
482482
* - can be disabled with the "disable_nodejs_wasi_module" flag
483483
*/
484484
function getWasiOverrides({
485-
// eslint-disable-next-line unused-imports/no-unused-vars
486485
compatibilityDate,
487486
compatibilityFlags,
488487
}: {
@@ -493,12 +492,13 @@ function getWasiOverrides({
493492
"disable_nodejs_wasi_module"
494493
);
495494

496-
// TODO: add `enabledByDate` when a date is defined in workerd
497-
const enabledByFlag =
498-
compatibilityFlags.includes("enable_nodejs_wasi_module") &&
499-
compatibilityFlags.includes("experimental");
495+
const enabledByFlag = compatibilityFlags.includes(
496+
"enable_nodejs_wasi_module"
497+
);
500498

501-
const enabled = enabledByFlag && !disabledByFlag;
499+
const enabledByDate = compatibilityDate >= "2025-12-04";
500+
501+
const enabled = (enabledByFlag || enabledByDate) && !disabledByFlag;
502502

503503
return enabled
504504
? {

packages/wrangler/e2e/unenv-preset/preset.test.ts

Lines changed: 20 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -236,90 +236,87 @@ const localTestConfigs: TestConfig[] = [
236236
],
237237
// node:punycode
238238
[
239-
// TODO: add test for disabled by date (no date defined yet)
240-
// TODO: add test for enabled by date (no date defined yet)
239+
// TODO: add test for disabled by date (2025-12-04)
240+
// TODO: add test for enabled by date (2025-12-04)
241241
{
242242
name: "punycode enabled by flag",
243243
compatibilityDate: "2024-09-23",
244-
compatibilityFlags: ["enable_nodejs_punycode_module", "experimental"],
244+
compatibilityFlags: ["enable_nodejs_punycode_module"],
245245
expectRuntimeFlags: {
246246
enable_nodejs_punycode_module: true,
247247
},
248248
},
249-
// TODO: update the date past the default enable date (when defined)
249+
// TODO: update the date past the default enable date (2025-12-04)
250250
{
251251
name: "punycode disabled by flag",
252252
compatibilityDate: "2024-09-23",
253-
compatibilityFlags: ["disable_nodejs_punycode_module", "experimental"],
253+
compatibilityFlags: ["disable_nodejs_punycode_module"],
254254
expectRuntimeFlags: {
255255
enable_nodejs_punycode_module: false,
256256
},
257257
},
258258
],
259259
// node:cluster
260260
[
261-
// TODO: add test for disabled by date (no date defined yet)
262-
// TODO: add test for enabled by date (no date defined yet)
261+
// TODO: add test for disabled by date (2025-12-04)
262+
// TODO: add test for enabled by date (2025-12-04)
263263
{
264264
name: "cluster enabled by flag",
265265
compatibilityDate: "2024-09-23",
266-
compatibilityFlags: ["enable_nodejs_cluster_module", "experimental"],
266+
compatibilityFlags: ["enable_nodejs_cluster_module"],
267267
expectRuntimeFlags: {
268268
enable_nodejs_cluster_module: true,
269269
},
270270
},
271-
// TODO: update the date past the default enable date (when defined)
271+
// TODO: update the date past the default enable date (2025-12-04)
272272
{
273273
name: "cluster disabled by flag",
274274
compatibilityDate: "2024-09-23",
275-
compatibilityFlags: ["disable_nodejs_cluster_module", "experimental"],
275+
compatibilityFlags: ["disable_nodejs_cluster_module"],
276276
expectRuntimeFlags: {
277277
enable_nodejs_cluster_module: false,
278278
},
279279
},
280280
],
281281
// trace_events
282282
[
283-
// TODO: add test for disabled by date (no date defined yet)
284-
// TODO: add test for enabled by date (no date defined yet)
283+
// TODO: add test for disabled by date (2025-12-04)
284+
// TODO: add test for enabled by date (2025-12-04)
285285
{
286286
name: "trace_events enabled by flag",
287287
compatibilityDate: "2024-09-23",
288-
compatibilityFlags: ["enable_nodejs_trace_events_module", "experimental"],
288+
compatibilityFlags: ["enable_nodejs_trace_events_module"],
289289
expectRuntimeFlags: {
290290
enable_nodejs_trace_events_module: true,
291291
},
292292
},
293-
// TODO: update the date past the default enable date (when defined)
293+
// TODO: update the date past the default enable date (2025-12-04)
294294
{
295295
name: "trace_events disabled by flag",
296296
compatibilityDate: "2024-09-23",
297-
compatibilityFlags: [
298-
"disable_nodejs_trace_events_module",
299-
"experimental",
300-
],
297+
compatibilityFlags: ["disable_nodejs_trace_events_module"],
301298
expectRuntimeFlags: {
302299
enable_nodejs_trace_events_module: false,
303300
},
304301
},
305302
],
306303
// domain
307304
[
308-
// TODO: add test for disabled by date (no date defined yet)
309-
// TODO: add test for enabled by date (no date defined yet)
305+
// TODO: add test for disabled by date (2025-12-04)
306+
// TODO: add test for enabled by date (2025-12-04)
310307
{
311308
name: "domain enabled by flag",
312309
compatibilityDate: "2024-09-23",
313-
compatibilityFlags: ["enable_nodejs_domain_module", "experimental"],
310+
compatibilityFlags: ["enable_nodejs_domain_module"],
314311
expectRuntimeFlags: {
315312
enable_nodejs_domain_module: true,
316313
},
317314
},
318-
// TODO: update the date past the default enable date (when defined)
315+
// TODO: update the date past the default enable date (2025-12-04)
319316
{
320317
name: "domain disabled by flag",
321318
compatibilityDate: "2024-09-23",
322-
compatibilityFlags: ["disable_nodejs_domain_module", "experimental"],
319+
compatibilityFlags: ["disable_nodejs_domain_module"],
323320
expectRuntimeFlags: {
324321
enable_nodejs_domain_module: false,
325322
},

0 commit comments

Comments
 (0)