@@ -74,6 +74,7 @@ export function getCloudflarePreset({
7474 const fsOverrides = getFsOverrides ( compat ) ;
7575 const punycodeOverrides = getPunycodeOverrides ( compat ) ;
7676 const clusterOverrides = getClusterOverrides ( compat ) ;
77+ const domainOverrides = getDomainOverrides ( compat ) ;
7778
7879 // "dynamic" as they depend on the compatibility date and flags
7980 const dynamicNativeModules = [
@@ -84,6 +85,7 @@ export function getCloudflarePreset({
8485 ...fsOverrides . nativeModules ,
8586 ...punycodeOverrides . nativeModules ,
8687 ...clusterOverrides . nativeModules ,
88+ ...domainOverrides . nativeModules ,
8789 ] ;
8890
8991 // "dynamic" as they depend on the compatibility date and flags
@@ -95,6 +97,7 @@ export function getCloudflarePreset({
9597 ...fsOverrides . hybridModules ,
9698 ...punycodeOverrides . hybridModules ,
9799 ...clusterOverrides . hybridModules ,
100+ ...domainOverrides . hybridModules ,
98101 ] ;
99102
100103 return {
@@ -387,3 +390,41 @@ function getClusterOverrides({
387390 hybridModules : [ ] ,
388391 } ;
389392}
393+
394+ /**
395+ * Returns the overrides for `node:domain` (unenv or workerd)
396+ *
397+ * The native domain implementation:
398+ * - is experimental
399+ * - can be enabled with the "enable_nodejs_domain_module" flag
400+ * - can be disabled with the "disable_nodejs_domain_module" flag
401+ */
402+ function getDomainOverrides ( {
403+ // eslint-disable-next-line unused-imports/no-unused-vars
404+ compatibilityDate,
405+ compatibilityFlags,
406+ } : {
407+ compatibilityDate : string ;
408+ compatibilityFlags : string [ ] ;
409+ } ) : { nativeModules : string [ ] ; hybridModules : string [ ] } {
410+ const disabledByFlag = compatibilityFlags . includes (
411+ "disable_nodejs_domain_module"
412+ ) ;
413+
414+ // TODO: add `enabledByDate` when a date is defined in workerd
415+ const enabledByFlag =
416+ compatibilityFlags . includes ( "enable_nodejs_domain_module" ) &&
417+ compatibilityFlags . includes ( "experimental" ) ;
418+
419+ const enabled = enabledByFlag && ! disabledByFlag ;
420+
421+ return enabled
422+ ? {
423+ nativeModules : [ "domain" ] ,
424+ hybridModules : [ ] ,
425+ }
426+ : {
427+ nativeModules : [ ] ,
428+ hybridModules : [ ] ,
429+ } ;
430+ }
0 commit comments