Skip to content

Commit b16821f

Browse files
Merge branch 'main' into f_cache_env_file
2 parents a1a26ca + 3a13653 commit b16821f

File tree

8 files changed

+51
-19
lines changed

8 files changed

+51
-19
lines changed

cli/factory.rs

Lines changed: 12 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -306,7 +306,6 @@ struct CliFactoryServices {
306306
blob_store: Deferred<Arc<BlobStore>>,
307307
caches: Deferred<Arc<Caches>>,
308308
cjs_module_export_analyzer: Deferred<Arc<CliCjsModuleExportAnalyzer>>,
309-
cjs_tracker: Deferred<Arc<CliCjsTracker>>,
310309
cli_options: Deferred<Arc<CliOptions>>,
311310
code_cache: Deferred<Arc<CodeCache>>,
312311
deno_dir_path_provider: Deferred<Arc<CliDenoDirPathProvider>>,
@@ -1117,20 +1116,7 @@ impl CliFactory {
11171116
}
11181117

11191118
pub fn cjs_tracker(&self) -> Result<&Arc<CliCjsTracker>, AnyError> {
1120-
self.services.cjs_tracker.get_or_try_init(|| {
1121-
let options = self.cli_options()?;
1122-
Ok(Arc::new(CliCjsTracker::new(
1123-
self.in_npm_pkg_checker()?.clone(),
1124-
self.pkg_json_resolver()?.clone(),
1125-
if options.is_node_main() || options.unstable_detect_cjs() {
1126-
IsCjsResolutionMode::ImplicitTypeCommonJs
1127-
} else if options.detect_cjs() {
1128-
IsCjsResolutionMode::ExplicitTypeCommonJs
1129-
} else {
1130-
IsCjsResolutionMode::Disabled
1131-
},
1132-
)))
1133-
})
1119+
self.resolver_factory()?.cjs_tracker()
11341120
}
11351121

11361122
pub fn permission_desc_parser(
@@ -1396,9 +1382,19 @@ impl CliFactory {
13961382

13971383
pub fn resolver_factory(&self) -> Result<&Arc<CliResolverFactory>, AnyError> {
13981384
self.services.resolver_factory.get_or_try_init(|| {
1385+
let options = self.cli_options()?;
13991386
Ok(Arc::new(CliResolverFactory::new(
14001387
self.workspace_factory()?.clone(),
14011388
ResolverFactoryOptions {
1389+
is_cjs_resolution_mode: if options.is_node_main()
1390+
|| options.unstable_detect_cjs()
1391+
{
1392+
IsCjsResolutionMode::ImplicitTypeCommonJs
1393+
} else if options.detect_cjs() {
1394+
IsCjsResolutionMode::ExplicitTypeCommonJs
1395+
} else {
1396+
IsCjsResolutionMode::Disabled
1397+
},
14021398
node_resolver_options: NodeResolverOptions {
14031399
conditions_from_resolution_mode: Default::default(),
14041400
typescript_version: Some(
@@ -1411,7 +1407,7 @@ impl CliFactory {
14111407
node_resolution_cache: Some(Arc::new(NodeResolutionThreadLocalCache)),
14121408
npm_system_info: self.flags.subcommand.npm_system_info(),
14131409
specified_import_map: Some(Box::new(CliSpecifiedImportMapProvider {
1414-
cli_options: self.cli_options()?.clone(),
1410+
cli_options: options.clone(),
14151411
eszip_module_loader_provider: self
14161412
.eszip_module_loader_provider()?
14171413
.clone(),

cli/main.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -686,7 +686,8 @@ fn wait_for_start(
686686
Serving,
687687
}
688688

689-
let buf = deno_core::serde_json::to_vec(&Event::Serving).unwrap();
689+
let mut buf = deno_core::serde_json::to_vec(&Event::Serving).unwrap();
690+
buf.push(b'\n');
690691
let _ = tx.write_all(&buf).await;
691692
});
692693

ext/node/polyfills/_process/streams.mjs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ import {
2323
import { Duplex, Readable, Writable } from "node:stream";
2424
import * as io from "ext:deno_io/12_io.js";
2525
import { guessHandleType } from "ext:deno_node/internal_binding/util.ts";
26+
import { op_bootstrap_color_depth } from "ext:core/ops";
2627

2728
// https://github.com/nodejs/node/blob/00738314828074243c9a52a228ab4c68b04259ef/lib/internal/bootstrap/switches/is_main_thread.js#L41
2829
export function createWritableStdioStream(writer, name, warmup = false) {
@@ -103,6 +104,13 @@ export function createWritableStdioStream(writer, name, warmup = false) {
103104
value: () =>
104105
writer?.isTerminal() ? ObjectValues(Deno.consoleSize?.()) : undefined,
105106
},
107+
getColorDepth: {
108+
__proto__: null,
109+
enumerable: true,
110+
configurable: true,
111+
writable: true,
112+
value: () => op_bootstrap_color_depth(),
113+
},
106114
});
107115

108116
// If we're warming up, create a stdout/stderr stream that assumes a terminal (the most likely case).

resolvers/deno/cjs.rs

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,10 @@ use url::Url;
1010

1111
use crate::sync::MaybeDashMap;
1212

13+
#[allow(clippy::disallowed_types)]
14+
pub type CjsTrackerRc<TInNpmPackageChecker, TSys> =
15+
crate::sync::MaybeArc<CjsTracker<TInNpmPackageChecker, TSys>>;
16+
1317
/// Keeps track of what module specifiers were resolved as CJS.
1418
///
1519
/// Modules that are `.js`, `.ts`, `.jsx`, and `tsx` are only known to
@@ -135,13 +139,14 @@ impl<TInNpmPackageChecker: InNpmPackageChecker, TSys: FsRead>
135139
}
136140
}
137141

138-
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
142+
#[derive(Debug, Default, Clone, Copy, PartialEq, Eq)]
139143
pub enum IsCjsResolutionMode {
140144
/// Requires an explicit `"type": "commonjs"` in the package.json.
141145
ExplicitTypeCommonJs,
142146
/// Implicitly uses `"type": "commonjs"` if no `"type"` is specified.
143147
ImplicitTypeCommonJs,
144148
/// Does not respect `"type": "commonjs"` and always treats ambiguous files as ESM.
149+
#[default]
145150
Disabled,
146151
}
147152

resolvers/deno/factory.rs

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,9 @@ use sys_traits::ThreadSleep;
4747
use thiserror::Error;
4848
use url::Url;
4949

50+
use crate::cjs::CjsTracker;
51+
use crate::cjs::CjsTrackerRc;
52+
use crate::cjs::IsCjsResolutionMode;
5053
use crate::npm::managed::ManagedInNpmPkgCheckerCreateOptions;
5154
use crate::npm::managed::ManagedNpmResolverCreateOptions;
5255
use crate::npm::managed::NpmResolutionCellRc;
@@ -590,6 +593,7 @@ impl<TSys: WorkspaceFactorySys> WorkspaceFactory<TSys> {
590593

591594
#[derive(Debug, Default)]
592595
pub struct ResolverFactoryOptions {
596+
pub is_cjs_resolution_mode: IsCjsResolutionMode,
593597
pub npm_system_info: NpmSystemInfo,
594598
pub node_resolver_options: NodeResolverOptions,
595599
pub node_resolution_cache: Option<node_resolver::NodeResolutionCacheRc>,
@@ -604,6 +608,7 @@ pub struct ResolverFactoryOptions {
604608
pub struct ResolverFactory<TSys: WorkspaceFactorySys> {
605609
options: ResolverFactoryOptions,
606610
sys: NodeResolutionSys<TSys>,
611+
cjs_tracker: Deferred<CjsTrackerRc<DenoInNpmPackageChecker, TSys>>,
607612
deno_resolver: async_once_cell::OnceCell<DefaultDenoResolverRc<TSys>>,
608613
in_npm_package_checker: Deferred<DenoInNpmPackageChecker>,
609614
node_resolver: Deferred<
@@ -639,6 +644,7 @@ impl<TSys: WorkspaceFactorySys> ResolverFactory<TSys> {
639644
workspace_factory.sys.clone(),
640645
options.node_resolution_cache.clone(),
641646
),
647+
cjs_tracker: Default::default(),
642648
deno_resolver: Default::default(),
643649
in_npm_package_checker: Default::default(),
644650
node_resolver: Default::default(),
@@ -685,6 +691,18 @@ impl<TSys: WorkspaceFactorySys> ResolverFactory<TSys> {
685691
.await
686692
}
687693

694+
pub fn cjs_tracker(
695+
&self,
696+
) -> Result<&CjsTrackerRc<DenoInNpmPackageChecker, TSys>, anyhow::Error> {
697+
self.cjs_tracker.get_or_try_init(|| {
698+
Ok(new_rc(CjsTracker::new(
699+
self.in_npm_package_checker()?.clone(),
700+
self.pkg_json_resolver().clone(),
701+
self.options.is_cjs_resolution_mode,
702+
)))
703+
})
704+
}
705+
688706
pub fn in_npm_package_checker(
689707
&self,
690708
) -> Result<&DenoInNpmPackageChecker, anyhow::Error> {

resolvers/deno/lib.rs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,10 +14,12 @@ use deno_semver::npm::NpmPackageReqReference;
1414
use node_resolver::errors::NodeResolveError;
1515
use node_resolver::errors::PackageSubpathResolveError;
1616
use node_resolver::errors::UnknownBuiltInNodeModuleError;
17+
pub use node_resolver::DenoIsBuiltInNodeModuleChecker;
1718
use node_resolver::InNpmPackageChecker;
1819
use node_resolver::IsBuiltInNodeModuleChecker;
1920
use node_resolver::NodeResolution;
2021
use node_resolver::NodeResolutionKind;
22+
pub use node_resolver::NodeResolverOptions;
2123
use node_resolver::NodeResolverRc;
2224
use node_resolver::NpmPackageFolderResolver;
2325
use node_resolver::ResolutionMode;
@@ -185,7 +187,7 @@ pub type DenoResolverRc<
185187
/// used by the Deno CLI.
186188
pub type DefaultDenoResolverRc<TSys> = DenoResolverRc<
187189
npm::DenoInNpmPackageChecker,
188-
node_resolver::DenoIsBuiltInNodeModuleChecker,
190+
DenoIsBuiltInNodeModuleChecker,
189191
npm::NpmResolver<TSys>,
190192
TSys,
191193
>;

tests/specs/run/unconfigured/main.out

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
true
22
hello world
33
EVENT: "Serving"
4+
45
[Object: null prototype] { success: true, code: 0, signal: null }

tests/unit_node/process_test.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -657,6 +657,7 @@ Deno.test({
657657
const consoleSize = isTTY ? Deno.consoleSize() : undefined;
658658
assertEquals(process.stdout.columns, consoleSize?.columns);
659659
assertEquals(process.stdout.rows, consoleSize?.rows);
660+
assert([1, 4, 8, 24].includes(process.stdout.getColorDepth()));
660661
assertEquals(
661662
`${process.stdout.getWindowSize()}`,
662663
`${consoleSize && [consoleSize.columns, consoleSize.rows]}`,

0 commit comments

Comments
 (0)