diff options
author | Kitson Kelly <me@kitsonkelly.com> | 2021-10-29 10:56:01 +1100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-10-29 10:56:01 +1100 |
commit | 34a9ddff091950aee9d89915cd13944259e7d346 (patch) | |
tree | 9ccf8c07c34fe5661c90097584eb8b47da3e9ba9 /cli/lsp/resolver.rs | |
parent | 74a93fdf63a17de990954399b10eb6dfe7dd1973 (diff) |
refactor(lsp): use deno_graph and single document struct (#12535)
Closes #12473
Diffstat (limited to 'cli/lsp/resolver.rs')
-rw-r--r-- | cli/lsp/resolver.rs | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/cli/lsp/resolver.rs b/cli/lsp/resolver.rs new file mode 100644 index 000000000..4f768b697 --- /dev/null +++ b/cli/lsp/resolver.rs @@ -0,0 +1,33 @@ +// Copyright 2018-2021 the Deno authors. All rights reserved. MIT license. + +use deno_core::error::AnyError; +use deno_core::ModuleSpecifier; +use deno_graph::source::Resolver; +use import_map::ImportMap; +use std::sync::Arc; + +#[derive(Debug)] +pub(crate) struct ImportMapResolver(Arc<ImportMap>); + +impl ImportMapResolver { + pub fn new(import_map: Arc<ImportMap>) -> Self { + Self(import_map) + } + + pub fn as_resolver(&self) -> &dyn Resolver { + self + } +} + +impl Resolver for ImportMapResolver { + fn resolve( + &self, + specifier: &str, + referrer: &ModuleSpecifier, + ) -> Result<ModuleSpecifier, AnyError> { + self + .0 + .resolve(specifier, referrer.as_str()) + .map_err(|err| err.into()) + } +} |