Skip to content

Commit 52b88cf

Browse files
authored
Merge branch 'main' into patch-repl-1
2 parents efbc162 + d372c0d commit 52b88cf

28 files changed

+464
-177
lines changed

Cargo.lock

+4-4
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

+1-1
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ license = "MIT"
5353
repository = "https://github.com/denoland/deno"
5454

5555
[workspace.dependencies]
56-
deno_ast = { version = "=0.46.6", features = ["transpiling"] }
56+
deno_ast = { version = "=0.46.7", features = ["transpiling"] }
5757
deno_core = { version = "0.346.0" }
5858

5959
deno_cache_dir = "=0.20.0"

cli/factory.rs

+20-39
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,6 @@ use deno_resolver::factory::DenoDirPathProviderOptions;
3838
use deno_resolver::factory::NpmProcessStateOptions;
3939
use deno_resolver::factory::ResolverFactoryOptions;
4040
use deno_resolver::factory::SpecifiedImportMapProvider;
41-
use deno_resolver::graph::FoundPackageJsonDepFlag;
4241
use deno_resolver::npm::managed::NpmResolutionCell;
4342
use deno_resolver::npm::DenoInNpmPackageChecker;
4443
use deno_resolver::workspace::WorkspaceResolver;
@@ -103,7 +102,6 @@ use crate::npm::NpmResolutionInitializer;
103102
use crate::npm::WorkspaceNpmPatchPackages;
104103
use crate::resolver::on_resolve_diagnostic;
105104
use crate::resolver::CliCjsTracker;
106-
use crate::resolver::CliDenoResolver;
107105
use crate::resolver::CliNpmGraphResolver;
108106
use crate::resolver::CliNpmReqResolver;
109107
use crate::resolver::CliResolver;
@@ -306,7 +304,6 @@ struct CliFactoryServices {
306304
blob_store: Deferred<Arc<BlobStore>>,
307305
caches: Deferred<Arc<Caches>>,
308306
cjs_module_export_analyzer: Deferred<Arc<CliCjsModuleExportAnalyzer>>,
309-
cjs_tracker: Deferred<Arc<CliCjsTracker>>,
310307
cli_options: Deferred<Arc<CliOptions>>,
311308
code_cache: Deferred<Arc<CodeCache>>,
312309
deno_dir_path_provider: Deferred<Arc<CliDenoDirPathProvider>>,
@@ -316,7 +313,6 @@ struct CliFactoryServices {
316313
eszip_module_loader_provider: Deferred<Arc<EszipModuleLoaderProvider>>,
317314
feature_checker: Deferred<Arc<FeatureChecker>>,
318315
file_fetcher: Deferred<Arc<CliFileFetcher>>,
319-
found_pkg_json_dep_flag: Arc<FoundPackageJsonDepFlag>,
320316
fs: Deferred<Arc<dyn deno_fs::FileSystem>>,
321317
http_client_provider: Deferred<Arc<HttpClientProvider>>,
322318
main_graph_container: Deferred<Arc<MainModuleGraphContainer>>,
@@ -338,7 +334,6 @@ struct CliFactoryServices {
338334
parsed_source_cache: Deferred<Arc<ParsedSourceCache>>,
339335
permission_desc_parser:
340336
Deferred<Arc<RuntimePermissionDescriptorParser<CliSys>>>,
341-
resolver: Deferred<Arc<CliResolver>>,
342337
resolver_factory: Deferred<Arc<CliResolverFactory>>,
343338
root_cert_store_provider: Deferred<Arc<dyn RootCertStoreProvider>>,
344339
root_permissions_container: Deferred<PermissionsContainer>,
@@ -616,7 +611,10 @@ impl CliFactory {
616611
let cli_options = self.cli_options()?;
617612
Ok(Arc::new(CliNpmGraphResolver::new(
618613
self.npm_installer_if_managed().await?.cloned(),
619-
self.services.found_pkg_json_dep_flag.clone(),
614+
self
615+
.resolver_factory()?
616+
.found_package_json_dep_flag()
617+
.clone(),
620618
cli_options.default_npm_caching_strategy(),
621619
)))
622620
}
@@ -812,28 +810,11 @@ impl CliFactory {
812810
self.resolver_factory()?.workspace_resolver().await
813811
}
814812

815-
pub async fn deno_resolver(&self) -> Result<&Arc<CliDenoResolver>, AnyError> {
813+
pub async fn resolver(&self) -> Result<&Arc<CliResolver>, AnyError> {
816814
self.initialize_npm_resolution_if_managed().await?;
817815
self.resolver_factory()?.deno_resolver().await
818816
}
819817

820-
pub async fn resolver(&self) -> Result<&Arc<CliResolver>, AnyError> {
821-
self
822-
.services
823-
.resolver
824-
.get_or_try_init_async(
825-
async {
826-
Ok(Arc::new(CliResolver::new(
827-
self.deno_resolver().await?.clone(),
828-
self.services.found_pkg_json_dep_flag.clone(),
829-
Box::new(on_resolve_diagnostic),
830-
)))
831-
}
832-
.boxed_local(),
833-
)
834-
.await
835-
}
836-
837818
pub fn maybe_file_watcher_reporter(&self) -> &Option<FileWatcherReporter> {
838819
let maybe_file_watcher_reporter = self
839820
.watcher_communicator
@@ -1117,20 +1098,7 @@ impl CliFactory {
11171098
}
11181099

11191100
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-
})
1101+
self.resolver_factory()?.cjs_tracker()
11341102
}
11351103

11361104
pub fn permission_desc_parser(
@@ -1396,9 +1364,19 @@ impl CliFactory {
13961364

13971365
pub fn resolver_factory(&self) -> Result<&Arc<CliResolverFactory>, AnyError> {
13981366
self.services.resolver_factory.get_or_try_init(|| {
1367+
let options = self.cli_options()?;
13991368
Ok(Arc::new(CliResolverFactory::new(
14001369
self.workspace_factory()?.clone(),
14011370
ResolverFactoryOptions {
1371+
is_cjs_resolution_mode: if options.is_node_main()
1372+
|| options.unstable_detect_cjs()
1373+
{
1374+
IsCjsResolutionMode::ImplicitTypeCommonJs
1375+
} else if options.detect_cjs() {
1376+
IsCjsResolutionMode::ExplicitTypeCommonJs
1377+
} else {
1378+
IsCjsResolutionMode::Disabled
1379+
},
14021380
node_resolver_options: NodeResolverOptions {
14031381
conditions_from_resolution_mode: Default::default(),
14041382
typescript_version: Some(
@@ -1411,7 +1389,7 @@ impl CliFactory {
14111389
node_resolution_cache: Some(Arc::new(NodeResolutionThreadLocalCache)),
14121390
npm_system_info: self.flags.subcommand.npm_system_info(),
14131391
specified_import_map: Some(Box::new(CliSpecifiedImportMapProvider {
1414-
cli_options: self.cli_options()?.clone(),
1392+
cli_options: options.clone(),
14151393
eszip_module_loader_provider: self
14161394
.eszip_module_loader_provider()?
14171395
.clone(),
@@ -1422,6 +1400,9 @@ impl CliFactory {
14221400
})),
14231401
bare_node_builtins: self.flags.unstable_config.bare_node_builtins,
14241402
unstable_sloppy_imports: self.flags.unstable_config.sloppy_imports,
1403+
on_mapped_resolution_diagnostic: Some(Arc::new(
1404+
on_resolve_diagnostic,
1405+
)),
14251406
package_json_cache: Some(Arc::new(
14261407
node_resolver::PackageJsonThreadLocalCache,
14271408
)),

cli/lsp/resolver.rs

+40-37
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,6 @@ use crate::npm::CliNpmResolverManagedSnapshotOption;
7777
use crate::npm::NpmResolutionInitializer;
7878
use crate::npm::WorkspaceNpmPatchPackages;
7979
use crate::resolver::on_resolve_diagnostic;
80-
use crate::resolver::CliDenoResolver;
8180
use crate::resolver::CliIsCjsResolver;
8281
use crate::resolver::CliNpmReqResolver;
8382
use crate::resolver::CliResolver;
@@ -913,45 +912,49 @@ impl<'a> ResolverFactory<'a> {
913912
pub fn cli_resolver(&self) -> &Arc<CliResolver> {
914913
self.services.cli_resolver.get_or_init(|| {
915914
let npm_req_resolver = self.npm_pkg_req_resolver().cloned();
916-
let deno_resolver = Arc::new(CliDenoResolver::new(DenoResolverOptions {
917-
in_npm_pkg_checker: self.in_npm_pkg_checker().clone(),
918-
node_and_req_resolver: match (self.node_resolver(), npm_req_resolver) {
919-
(Some(node_resolver), Some(npm_req_resolver)) => {
920-
Some(NodeAndNpmReqResolver {
921-
node_resolver: node_resolver.clone(),
922-
npm_req_resolver,
923-
})
924-
}
925-
_ => None,
926-
},
927-
workspace_resolver: self
928-
.config_data
929-
.map(|d| d.resolver.clone())
930-
.unwrap_or_else(|| {
931-
Arc::new(WorkspaceResolver::new_raw(
932-
// this is fine because this is only used before initialization
933-
Arc::new(ModuleSpecifier::parse("file:///").unwrap()),
934-
None,
935-
Vec::new(),
936-
Vec::new(),
937-
PackageJsonDepResolution::Disabled,
938-
Default::default(),
939-
Default::default(),
940-
Default::default(),
941-
Default::default(),
942-
self.sys.clone(),
943-
))
944-
}),
945-
bare_node_builtins: self
946-
.config_data
947-
.is_some_and(|d| d.unstable.contains("bare-node-builtins")),
948-
is_byonm: self.config_data.map(|d| d.byonm).unwrap_or(false),
949-
maybe_vendor_dir: self.config_data.and_then(|d| d.vendor_dir.as_ref()),
950-
}));
915+
let deno_resolver =
916+
Arc::new(deno_resolver::RawDenoResolver::new(DenoResolverOptions {
917+
in_npm_pkg_checker: self.in_npm_pkg_checker().clone(),
918+
node_and_req_resolver: match (self.node_resolver(), npm_req_resolver)
919+
{
920+
(Some(node_resolver), Some(npm_req_resolver)) => {
921+
Some(NodeAndNpmReqResolver {
922+
node_resolver: node_resolver.clone(),
923+
npm_req_resolver,
924+
})
925+
}
926+
_ => None,
927+
},
928+
workspace_resolver: self
929+
.config_data
930+
.map(|d| d.resolver.clone())
931+
.unwrap_or_else(|| {
932+
Arc::new(WorkspaceResolver::new_raw(
933+
// this is fine because this is only used before initialization
934+
Arc::new(ModuleSpecifier::parse("file:///").unwrap()),
935+
None,
936+
Vec::new(),
937+
Vec::new(),
938+
PackageJsonDepResolution::Disabled,
939+
Default::default(),
940+
Default::default(),
941+
Default::default(),
942+
Default::default(),
943+
self.sys.clone(),
944+
))
945+
}),
946+
bare_node_builtins: self
947+
.config_data
948+
.is_some_and(|d| d.unstable.contains("bare-node-builtins")),
949+
is_byonm: self.config_data.map(|d| d.byonm).unwrap_or(false),
950+
maybe_vendor_dir: self
951+
.config_data
952+
.and_then(|d| d.vendor_dir.as_ref()),
953+
}));
951954
Arc::new(CliResolver::new(
952955
deno_resolver,
953956
self.services.found_pkg_json_dep_flag.clone(),
954-
Box::new(on_resolve_diagnostic),
957+
Some(Arc::new(on_resolve_diagnostic)),
955958
))
956959
})
957960
}

cli/lsp/text.rs

+4-4
Original file line numberDiff line numberDiff line change
@@ -73,10 +73,10 @@ pub fn get_edits(a: &str, b: &str, line_index: &LineIndex) -> Vec<TextEdit> {
7373
if a == b {
7474
return vec![];
7575
}
76-
// Heuristic to detect things like minified files. `diff()` is expensive.
77-
if b.chars().filter(|c| *c == '\n').count()
78-
> line_index.inner.utf8_offsets_len() * 3
79-
{
76+
// Heuristic to detect things like large JSON or minified files. `diff()` is
77+
// expensive.
78+
let b_lines = b.chars().filter(|c| *c == '\n').count();
79+
if b_lines > 10000 || b_lines > line_index.inner.utf8_offsets_len() * 3 {
8080
return vec![TextEdit {
8181
range: lsp::Range {
8282
start: lsp::Position::new(0, 0),

cli/lsp/tsc.rs

+14-6
Original file line numberDiff line numberDiff line change
@@ -4554,12 +4554,20 @@ fn op_load<'s>(
45544554
} else {
45554555
state.get_module(&specifier)
45564556
};
4557-
let maybe_load_response = module.as_ref().map(|m| LoadResponse {
4558-
data: m.text.clone(),
4559-
script_kind: crate::tsc::as_ts_script_kind(m.media_type),
4560-
version: state.script_version(&specifier),
4561-
is_cjs: m.resolution_mode == ResolutionMode::Require,
4562-
is_classic_script: m.notebook_uri.is_some(),
4557+
let maybe_load_response = module.as_ref().map(|m| {
4558+
let data = if m.media_type == MediaType::Json && m.text.len() > 10_000_000 {
4559+
// VSCode's TS server types large JSON files this way.
4560+
DocumentText::Static("{}\n")
4561+
} else {
4562+
m.text.clone()
4563+
};
4564+
LoadResponse {
4565+
data,
4566+
script_kind: crate::tsc::as_ts_script_kind(m.media_type),
4567+
version: state.script_version(&specifier),
4568+
is_cjs: m.resolution_mode == ResolutionMode::Require,
4569+
is_classic_script: m.notebook_uri.is_some(),
4570+
}
45634571
});
45644572
let serialized = serde_v8::to_v8(scope, maybe_load_response)?;
45654573
state.performance.measure(mark);

cli/main.rs

+2-1
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

cli/resolver.rs

+5-14
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
use std::sync::Arc;
44

55
use async_trait::async_trait;
6-
use deno_ast::ModuleSpecifier;
76
use deno_error::JsErrorBox;
87
use deno_graph::NpmLoadError;
98
use deno_graph::NpmResolvePkgReqsResult;
@@ -23,36 +22,28 @@ pub type CliCjsTracker =
2322
deno_resolver::cjs::CjsTracker<DenoInNpmPackageChecker, CliSys>;
2423
pub type CliIsCjsResolver =
2524
deno_resolver::cjs::IsCjsResolver<DenoInNpmPackageChecker, CliSys>;
26-
pub type CliDenoResolver = deno_resolver::DenoResolver<
27-
DenoInNpmPackageChecker,
28-
DenoIsBuiltInNodeModuleChecker,
29-
CliNpmResolver,
30-
CliSys,
31-
>;
3225
pub type CliNpmReqResolver = deno_resolver::npm::NpmReqResolver<
3326
DenoInNpmPackageChecker,
3427
DenoIsBuiltInNodeModuleChecker,
3528
CliNpmResolver,
3629
CliSys,
3730
>;
38-
pub type CliResolver = deno_resolver::graph::DenoGraphResolver<
31+
pub type CliResolver = deno_resolver::graph::DenoResolver<
3932
DenoInNpmPackageChecker,
4033
DenoIsBuiltInNodeModuleChecker,
4134
CliNpmResolver,
4235
CliSys,
4336
>;
4437

4538
pub fn on_resolve_diagnostic(
46-
diagnostic: &deno_resolver::workspace::MappedResolutionDiagnostic,
47-
referrer: &ModuleSpecifier,
48-
position: deno_graph::Position,
39+
diagnostic: deno_resolver::graph::MappedResolutionDiagnosticWithPosition,
4940
) {
5041
log::warn!(
5142
"{} {}\n at {}:{}",
5243
deno_runtime::colors::yellow("Warning"),
53-
diagnostic,
54-
referrer,
55-
position,
44+
diagnostic.diagnostic,
45+
diagnostic.referrer,
46+
diagnostic.start
5647
);
5748
}
5849

cli/tsc/dts/lib.deno.ns.d.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -5671,7 +5671,7 @@ declare namespace Deno {
56715671
* @category FFI
56725672
*/
56735673
export type FromNativeType<T extends NativeType = NativeType> = T extends
5674-
NativeStructType ? Uint8Array
5674+
NativeStructType ? Uint8Array<ArrayBuffer>
56755675
: T extends NativeNumberType ? T extends NativeU8Enum<infer U> ? U
56765676
: T extends NativeI8Enum<infer U> ? U
56775677
: T extends NativeU16Enum<infer U> ? U
@@ -5696,7 +5696,7 @@ declare namespace Deno {
56965696
*/
56975697
export type FromNativeResultType<
56985698
T extends NativeResultType = NativeResultType,
5699-
> = T extends NativeStructType ? Uint8Array
5699+
> = T extends NativeStructType ? Uint8Array<ArrayBuffer>
57005700
: T extends NativeNumberType ? T extends NativeU8Enum<infer U> ? U
57015701
: T extends NativeI8Enum<infer U> ? U
57025702
: T extends NativeU16Enum<infer U> ? U

ext/net/02_tls.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -187,7 +187,7 @@ async function startTls(
187187
hostname,
188188
caCerts,
189189
alpnProtocols,
190-
});
190+
}, null);
191191
return new TlsConn(rid, remoteAddr, localAddr);
192192
}
193193

0 commit comments

Comments
 (0)