Skip to content

Commit fcd9b4f

Browse files
committed
chore: revisit deno vendoring strategy
1 parent a52a052 commit fcd9b4f

File tree

1,450 files changed

+292375
-5380
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

1,450 files changed

+292375
-5380
lines changed

Cargo.lock

Lines changed: 907 additions & 761 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 9 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "clarinet"
3-
version = "0.10.0"
3+
version = "0.10.1"
44
authors = ["Ludo Galabru <ludovic@galabru.com>"]
55
edition = "2018"
66
description = "Clarinet is a clarity runtime packaged as a command line tool, designed to facilitate smart contract understanding, development, testing and deployment."
@@ -15,12 +15,11 @@ categories = ["command-line-utilities", "development-tools", "development-tools:
1515
[workspace]
1616
members = [".", "xtask/"]
1717

18-
[build-dependencies]
19-
deno_core = "=0.80.2"
20-
deno_runtime = "=0.9.3"
21-
# deno_web = "=0.31.0"
22-
regex = "1.4.3"
23-
serde = { version = "1.0.123", features = ["derive"] }
18+
# [build-dependencies]
19+
# deno_core = { path = "./vendor/deno/core" }
20+
# deno_runtime = { path = "./vendor/deno/runtime" }
21+
# regex = "1.4.3"
22+
# serde = { version = "1.0.123", features = ["derive"] }
2423

2524
[target.'cfg(windows)'.build-dependencies]
2625
winapi = "0.3.9"
@@ -31,10 +30,9 @@ clap = { version = "3.0.0-beta.2" }
3130
toml = { version = "0.5.6", features = ["preserve_order"] }
3231
serde = "1"
3332
serde_derive = "1"
34-
deno_core = "=0.80.2"
35-
deno_runtime = "=0.9.3"
36-
# deno_web = "=0.31.0"
37-
rusty_v8 = "=0.20.0"
33+
deno_core = { path = "./vendor/deno/core" }
34+
deno_runtime = { path = "./vendor/deno/runtime" }
35+
deno = { path = "./vendor/deno/cli" }
3836
# clarity_repl = { package = "clarity-repl", path = "../../clarity-repl", features = ["cli"] }
3937
clarity_repl = { package = "clarity-repl", version = "=0.12.1" }
4038
bip39 = "1.0.0-rc1"
@@ -55,16 +53,8 @@ futures = "0.3.12"
5553
tokio = { version = "=1.5.0", features = ["full"] }
5654
lazy_static = "1.4.0"
5755
atty = "0.2.14"
58-
jsonc-parser = "0.15.1"
59-
notify = "=5.0.0-pre.4"
60-
sourcemap = "=6.0.1"
61-
swc_bundler = "=0.25.1"
62-
swc_common = { version = "=0.10.12", features = ["sourcemap"] }
63-
swc_ecmascript = { version = "=0.24.1", features = ["codegen", "dep_graph", "parser", "proposal", "react", "transforms", "typescript", "visit"] }
64-
tempfile = "=3.2.0"
6556
termcolor = "1.1.2"
6657
text-size = "=1.1.0"
67-
walkdir = "=2.3.1"
6858
regex = "1.4.3"
6959
libc = "0.2.86"
7060
encoding_rs = "0.8.28"

src/test/deno.rs

Lines changed: 70 additions & 175 deletions
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,25 @@
1-
use deno_core::serde_json::{json, Value};
2-
use deno_core::json_op_sync;
1+
use deno::create_main_worker;
2+
use deno::File;
3+
use deno::MediaType;
4+
use deno::Flags;
5+
use deno::ProgramState;
6+
use deno::tools;
7+
use deno::fs_util;
8+
use deno::tsc::{op, State};
9+
use deno_core::{OpFn};
10+
use deno_core::serde_json::{self, json, Value};
11+
use deno_core::op_sync;
312
use deno_core::error::AnyError;
13+
use deno_core::url::Url;
14+
use deno_runtime::web_worker::WebWorkerOptions;
15+
use deno_runtime::ops::worker_host::CreateWebWorkerCb;
16+
use deno_runtime::web_worker::WebWorker;
417
use deno_runtime::permissions::Permissions;
5-
use deno_runtime::worker::MainWorker;
6-
use deno_runtime::worker::WorkerOptions;
18+
use deno_runtime::worker::{MainWorker, WorkerOptions};
719
use std::rc::Rc;
820
use std::sync::Arc;
921
use serde::Serialize;
1022
use serde::de::DeserializeOwned;
11-
use deno_core::{OpFn};
12-
use super::source_maps::apply_source_map;
13-
use super::file_fetcher::File;
14-
use super::media_type::MediaType;
15-
use super::flags::Flags;
16-
use super::program_state::ProgramState;
17-
use super::tools;
18-
use super::ops;
19-
use super::fmt_errors::PrettyJsError;
20-
use super::module_loader::CliModuleLoader;
21-
use deno_core::ModuleSpecifier;
22-
use deno_runtime::web_worker::WebWorkerOptions;
23-
use deno_runtime::ops::worker_host::CreateWebWorkerCb;
24-
use deno_runtime::web_worker::WebWorker;
2523
use clarity_repl::clarity::coverage::CoverageReporter;
2624

2725
mod sessions {
@@ -155,7 +153,7 @@ pub async fn run_tests(files: Vec<String>, include_coverage: bool) -> Result<(),
155153
vec!["./tests/".to_string()]
156154
};
157155
let test_modules =
158-
tools::test_runner::prepare_test_modules_urls(include, &cwd)?;
156+
tools::test_runner::collect_test_module_specifiers(include, &cwd, fs_util::is_supported_ext)?;
159157

160158
if test_modules.is_empty() {
161159
println!("No matching test modules found");
@@ -164,7 +162,7 @@ pub async fn run_tests(files: Vec<String>, include_coverage: bool) -> Result<(),
164162
let main_module = deno_core::resolve_path("$deno$test.ts")?;
165163
// Create a dummy source file.
166164

167-
let source = tools::test_runner::render_test_file(
165+
let source = render_test_file(
168166
test_modules.clone(),
169167
fail_fast,
170168
quiet,
@@ -184,7 +182,7 @@ pub async fn run_tests(files: Vec<String>, include_coverage: bool) -> Result<(),
184182
program_state.file_fetcher.insert_cached(source_file);
185183

186184
let mut worker =
187-
create_main_worker(&program_state, main_module.clone(), permissions);
185+
create_main_worker(&program_state, main_module.clone(), permissions, false);
188186

189187
worker.js_runtime.register_op("setup_chain", op(setup_chain));
190188
worker.js_runtime.register_op("mine_block", op(mine_block));
@@ -199,14 +197,14 @@ pub async fn run_tests(files: Vec<String>, include_coverage: bool) -> Result<(),
199197
}
200198

201199
worker.execute("window.dispatchEvent(new Event('load'))");
202-
let res = worker.run_event_loop().await;
200+
let res = worker.run_event_loop(false).await;
203201
if let Err(e) = res {
204202
println!("{}", e);
205203
return Err(e);
206204
}
207205

208206
worker.execute("window.dispatchEvent(new Event('unload'))")?;
209-
let res = worker.run_event_loop().await;
207+
let res = worker.run_event_loop(false).await;
210208
if let Err(e) = res {
211209
println!("{}", e);
212210
return Err(e);
@@ -233,166 +231,55 @@ pub async fn run_tests(files: Vec<String>, include_coverage: bool) -> Result<(),
233231
Ok(())
234232
}
235233

236-
fn create_web_worker_callback(
237-
program_state: Arc<ProgramState>,
238-
) -> Arc<CreateWebWorkerCb> {
239-
Arc::new(move |args| {
240-
let global_state_ = program_state.clone();
241-
let js_error_create_fn = Rc::new(move |core_js_error| {
242-
let source_mapped_error =
243-
apply_source_map(&core_js_error, global_state_.clone());
244-
PrettyJsError::create(source_mapped_error)
245-
});
246-
247-
let attach_inspector = program_state.maybe_inspector_server.is_some()
248-
|| program_state.coverage_dir.is_some();
249-
let maybe_inspector_server = program_state.maybe_inspector_server.clone();
250-
251-
let module_loader = CliModuleLoader::new_for_worker(
252-
program_state.clone(),
253-
args.parent_permissions.clone(),
254-
);
255-
let create_web_worker_cb =
256-
create_web_worker_callback(program_state.clone());
257-
258-
let options = WebWorkerOptions {
259-
args: program_state.flags.argv.clone(),
260-
apply_source_maps: true,
261-
debug_flag: false,
262-
unstable: program_state.flags.unstable,
263-
ca_data: program_state.ca_data.clone(),
264-
user_agent: super::version::get_user_agent(),
265-
seed: program_state.flags.seed,
266-
module_loader,
267-
create_web_worker_cb,
268-
js_error_create_fn: Some(js_error_create_fn),
269-
use_deno_namespace: args.use_deno_namespace,
270-
attach_inspector,
271-
maybe_inspector_server,
272-
runtime_version: super::version::deno(),
273-
ts_version: super::version::TYPESCRIPT.to_string(),
274-
no_color: !super::colors::use_color(),
275-
get_error_class_fn: None,
276-
};
277-
278-
let mut worker = WebWorker::from_options(
279-
args.name,
280-
args.permissions,
281-
args.main_module,
282-
args.worker_id,
283-
&options,
284-
);
285-
286-
// This block registers additional ops and state that
287-
// are only available in the CLI
288-
{
289-
let js_runtime = &mut worker.js_runtime;
290-
js_runtime
291-
.op_state()
292-
.borrow_mut()
293-
.put::<Arc<ProgramState>>(program_state.clone());
294-
// Applies source maps - works in conjuction with `js_error_create_fn`
295-
// above
296-
ops::errors::init(js_runtime);
297-
if args.use_deno_namespace {
298-
ops::runtime_compiler::init(js_runtime);
299-
}
300-
}
301-
worker.bootstrap(&options);
302-
303-
worker
304-
})
305-
}
234+
pub fn render_test_file(
235+
modules: Vec<Url>,
236+
fail_fast: bool,
237+
quiet: bool,
238+
filter: Option<String>,
239+
) -> String {
240+
let mut test_file = "".to_string();
306241

307-
pub fn create_main_worker(
308-
program_state: &Arc<ProgramState>,
309-
main_module: ModuleSpecifier,
310-
permissions: Permissions,
311-
) -> MainWorker {
312-
let module_loader = CliModuleLoader::new(program_state.clone());
313-
314-
let global_state_ = program_state.clone();
315-
316-
let js_error_create_fn = Rc::new(move |core_js_error| {
317-
let source_mapped_error =
318-
apply_source_map(&core_js_error, global_state_.clone());
319-
PrettyJsError::create(source_mapped_error)
320-
});
321-
322-
let attach_inspector = program_state.maybe_inspector_server.is_some()
323-
|| program_state.flags.repl
324-
|| program_state.coverage_dir.is_some();
325-
let maybe_inspector_server = program_state.maybe_inspector_server.clone();
326-
let should_break_on_first_statement =
327-
program_state.flags.inspect_brk.is_some();
328-
329-
let create_web_worker_cb = create_web_worker_callback(program_state.clone());
330-
331-
let options = WorkerOptions {
332-
apply_source_maps: true,
333-
args: program_state.flags.argv.clone(),
334-
debug_flag: false,
335-
unstable: program_state.flags.unstable,
336-
ca_data: program_state.ca_data.clone(),
337-
user_agent: super::version::get_user_agent(),
338-
seed: program_state.flags.seed,
339-
js_error_create_fn: Some(js_error_create_fn),
340-
create_web_worker_cb,
341-
attach_inspector,
342-
maybe_inspector_server,
343-
should_break_on_first_statement,
344-
module_loader,
345-
runtime_version: super::version::deno(),
346-
ts_version: super::version::TYPESCRIPT.to_string(),
347-
no_color: !super::colors::use_color(),
348-
get_error_class_fn: None,
349-
location: program_state.flags.location.clone(),
350-
};
351-
352-
let mut worker = MainWorker::from_options(main_module, permissions, &options);
353-
354-
// This block registers additional ops and state that
355-
// are only available in the CLI
356-
{
357-
let js_runtime = &mut worker.js_runtime;
358-
js_runtime
359-
.op_state()
360-
.borrow_mut()
361-
.put::<Arc<ProgramState>>(program_state.clone());
362-
// Applies source maps - works in conjuction with `js_error_create_fn`
363-
// above
364-
ops::errors::init(js_runtime);
365-
ops::runtime_compiler::init(js_runtime);
366-
}
367-
worker.bootstrap(&options);
368-
369-
worker
242+
for module in modules {
243+
test_file.push_str(&format!("import \"{}\";\n", module.to_string()));
370244
}
371245

372-
373-
fn get_error_class_name(e: &AnyError) -> &'static str {
374-
deno_runtime::errors::get_error_class_name(e).unwrap_or("Error")
375-
}
246+
let options = if let Some(filter) = filter {
247+
json!({ "failFast": fail_fast, "reportToConsole": !quiet, "disableLog": quiet, "filter": filter })
248+
} else {
249+
json!({ "failFast": fail_fast, "reportToConsole": !quiet, "disableLog": quiet })
250+
};
376251

377-
fn op<F, V, R>(op_fn: F) -> Box<OpFn>
378-
where
379-
F: Fn(V) -> Result<R, AnyError> + 'static,
380-
V: DeserializeOwned,
381-
R: Serialize,
382-
{
383-
json_op_sync(move |s, args, _bufs| {
384-
op_fn(args)
385-
})
252+
test_file.push_str("// @ts-ignore\n");
253+
254+
test_file.push_str(&format!(
255+
"await Deno[Deno.internal].runTests({});\n",
256+
options
257+
));
258+
259+
test_file
386260
}
387261

262+
// fn op<F, V, R>(op_fn: F) -> Box<OpFn>
263+
// where
264+
// F: Fn(V) -> Result<R, AnyError> + 'static,
265+
// V: DeserializeOwned,
266+
// R: Serialize,
267+
// {
268+
// op_sync(move |s, args, _: ()| {
269+
// op_fn(args)
270+
// })
271+
// }
272+
388273
#[derive(Debug, Deserialize)]
389274
#[serde(rename_all = "camelCase")]
390275
struct SetupChainArgs {
391276
name: String,
392277
transactions: Vec<TransactionArgs>
393278
}
394279

395-
fn setup_chain(args: SetupChainArgs) -> Result<Value, AnyError> {
280+
fn setup_chain(state: &mut State, args: Value) -> Result<Value, AnyError> {
281+
let args: SetupChainArgs = serde_json::from_value(args)
282+
.expect("Invalid request from JavaScript for \"op_load\".");
396283
let (session_id, accounts) = sessions::handle_setup_chain(args.name, args.transactions)?;
397284

398285
Ok(json!({
@@ -439,7 +326,9 @@ struct TransferSTXArgs {
439326
recipient: String,
440327
}
441328

442-
fn mine_block(args: MineBlockArgs) -> Result<Value, AnyError> {
329+
fn mine_block(state: &mut State, args: Value) -> Result<Value, AnyError> {
330+
let args: MineBlockArgs = serde_json::from_value(args)
331+
.expect("Invalid request from JavaScript.");
443332
let (block_height, receipts) = sessions::perform_block(args.session_id, |name, session| {
444333
let initial_tx_sender = session.get_tx_sender();
445334
let mut receipts = vec![];
@@ -486,7 +375,9 @@ struct MineEmptyBlocksArgs {
486375
count: u32,
487376
}
488377

489-
fn mine_empty_blocks(args: MineEmptyBlocksArgs) -> Result<Value, AnyError> {
378+
fn mine_empty_blocks(state: &mut State, args: Value) -> Result<Value, AnyError> {
379+
let args: MineEmptyBlocksArgs = serde_json::from_value(args)
380+
.expect("Invalid request from JavaScript.");
490381
let block_height = sessions::perform_block(args.session_id, |name, session| {
491382
let block_height = session.advance_chain_tip(args.count);
492383
Ok(block_height)
@@ -506,9 +397,11 @@ struct CallReadOnlyFnArgs {
506397
contract: String,
507398
method: String,
508399
args: Vec<String>,
509-
}
400+
}
510401

511-
fn call_read_only_fn(args: CallReadOnlyFnArgs) -> Result<Value, AnyError> {
402+
fn call_read_only_fn(state: &mut State, args: Value) -> Result<Value, AnyError> {
403+
let args: CallReadOnlyFnArgs = serde_json::from_value(args)
404+
.expect("Invalid request from JavaScript.");
512405
let (result, events) = sessions::perform_block(args.session_id, |name, session| {
513406
let initial_tx_sender = session.get_tx_sender();
514407
session.set_tx_sender(args.sender.clone());
@@ -539,7 +432,9 @@ struct GetAssetsMapsArgs {
539432
session_id: u32,
540433
}
541434

542-
fn get_assets_maps(args: GetAssetsMapsArgs) -> Result<Value, AnyError> {
435+
fn get_assets_maps(state: &mut State, args: Value) -> Result<Value, AnyError> {
436+
let args: GetAssetsMapsArgs = serde_json::from_value(args)
437+
.expect("Invalid request from JavaScript.");
543438
let assets_maps = sessions::perform_block(args.session_id, |name, session| {
544439
let assets_maps = session.get_assets_maps();
545440
Ok(assets_maps)

0 commit comments

Comments
 (0)