Vendor things

This commit is contained in:
John Doty 2024-03-08 11:03:01 -08:00
parent 5deceec006
commit 977e3c17e5
19434 changed files with 10682014 additions and 0 deletions

View file

@ -0,0 +1 @@
console.log("hello world!");

View file

@ -0,0 +1,4 @@
{
"name": "jquery",
"main": "index.js"
}

View file

@ -0,0 +1 @@
console.log("hello world!");

View file

@ -0,0 +1 @@
console.log("hello world!");

View file

@ -0,0 +1,7 @@
{
"name": "jquery",
"main": "./index.js",
"browser": {
"./index.js": "./browser.js"
}
}

View file

@ -0,0 +1 @@
console.log("hello world!");

View file

@ -0,0 +1,4 @@
{
"name": "jquery",
"main": "index.js"
}

View file

@ -0,0 +1 @@
console.log("hello world!");

View file

@ -0,0 +1,4 @@
{
"name": "example",
"main": "index.js"
}

View file

@ -0,0 +1,4 @@
{
"name": "app",
"main": "file.js"
}

View file

@ -0,0 +1,107 @@
#![deny(warnings)]
#![cfg(feature = "node")]
use std::{
env::{current_dir, set_current_dir},
path::PathBuf,
sync::{Arc, Mutex},
};
use lazy_static::lazy_static;
use swc_common::FileName;
extern crate swc_ecma_loader;
use swc_ecma_loader::{resolve::Resolve, resolvers::node::NodeModulesResolver, TargetEnv};
lazy_static! {
static ref UPDATE_DIR_MUTEX: Arc<Mutex<()>> = Arc::new(Mutex::new(()));
}
fn inside_directory(dir: &str, callback: fn()) {
let arc = Arc::clone(&UPDATE_DIR_MUTEX);
let _lock = arc.lock().expect("could not lock");
let initial_current_dir = current_dir().unwrap();
let new_current_dir = format!("{}{}", initial_current_dir.display(), dir);
set_current_dir(new_current_dir).unwrap();
callback();
set_current_dir(initial_current_dir).unwrap();
}
#[test]
fn basic_import() {
inside_directory("/tests/basic_import", || {
// Given
let node_resolver = NodeModulesResolver::new(TargetEnv::Node, Default::default(), true);
// When
let resolved = node_resolver
.resolve(&FileName::Real(PathBuf::from("jquery")), "jquery")
.expect("should resolve");
// Expect
assert_eq!(
resolved,
FileName::Real(PathBuf::from("node_modules/jquery/index.js"))
);
});
}
#[test]
fn hoisting() {
inside_directory("/tests/hoisting/packages/app", || {
// Given
let node_resolver = NodeModulesResolver::new(TargetEnv::Node, Default::default(), true);
// When
let resolved = node_resolver
.resolve(&FileName::Real(PathBuf::from("jquery")), "jquery")
.expect("should resolve");
// Expect
assert_eq!(
resolved,
FileName::Real(PathBuf::from("../../node_modules/jquery/index.js"))
);
});
}
#[test]
fn builtin_modules() {
let node_resolver = NodeModulesResolver::new(TargetEnv::Node, Default::default(), true);
// When
let resolved = node_resolver
.resolve(&FileName::Real(PathBuf::from("index.js")), "path")
.expect("should resolve");
// Expect
assert_eq!(resolved, FileName::Custom("node:path".to_string()));
// When
let resolved = node_resolver
.resolve(&FileName::Real(PathBuf::from("index.js")), "node:path")
.expect("should resolve");
// Expect
assert_eq!(resolved, FileName::Custom("node:path".to_string()));
}
#[test]
fn browser_overwrite() {
inside_directory("/tests/browser_overwrite", || {
// Given
let node_resolver = NodeModulesResolver::new(TargetEnv::Browser, Default::default(), true);
// When
let resolved = node_resolver
.resolve(&FileName::Real(PathBuf::from("jquery")), "jquery")
.expect("should resolve");
// Expect
assert_eq!(
resolved,
FileName::Real(PathBuf::from("node_modules/jquery/browser.js"))
);
});
}

View file

@ -0,0 +1,89 @@
#![cfg(feature = "tsc")]
use std::collections::HashMap;
use anyhow::{anyhow, Error};
use swc_common::{collections::AHashMap, FileName};
use swc_ecma_loader::{resolve::Resolve, resolvers::tsc::TsConfigResolver};
#[test]
fn base_dir_exact() {}
#[test]
fn base_dir_wildcard() {}
#[test]
fn exact() {
let mut map = HashMap::default();
map.insert("jquery".to_string(), "fail".to_string());
map.insert(
"./node_modules/jquery/dist/jquery".to_string(),
"success".to_string(),
);
let r = TsConfigResolver::new(
TestResolver(map),
".".into(),
vec![(
"jquery".into(),
vec!["node_modules/jquery/dist/jquery".into()],
)],
);
{
let resolved = r
.resolve(&FileName::Anon, "jquery")
.expect("should resolve");
assert_eq!(resolved, FileName::Custom("success".into()));
}
{
r.resolve(&FileName::Anon, "unrelated")
.expect_err("should not touch error");
}
}
#[test]
fn pattern_1() {
let mut map = HashMap::default();
map.insert("./folder1/file1".to_string(), "success-1".to_string());
map.insert("./folder1/file2".to_string(), "success-2".to_string());
map.insert(
"./generated/folder2/file3".to_string(),
"success-3".to_string(),
);
let r = TsConfigResolver::new(
TestResolver(map),
".".into(),
vec![("*".into(), vec!["*".into(), "generated/*".into()])],
);
{
let resolved = r
.resolve(&FileName::Anon, "folder1/file2")
.expect("should resolve");
assert_eq!(resolved, FileName::Custom("success-2".into()));
}
{
let resolved = r
.resolve(&FileName::Anon, "folder2/file3")
.expect("should resolve");
assert_eq!(resolved, FileName::Custom("success-3".into()));
}
}
struct TestResolver(AHashMap<String, String>);
impl Resolve for TestResolver {
fn resolve(&self, _: &FileName, src: &str) -> Result<FileName, Error> {
self.0
.get(src)
.cloned()
.map(FileName::Custom)
.ok_or_else(|| anyhow!("failed to resolve `{}`", src))
}
}