1
0
Fork 0
mirror of https://github.com/denoland/deno.git synced 2024-11-24 15:19:26 -05:00

chore: upgrade deno_ast to 0.5.0 (#12595)

This commit is contained in:
David Sherret 2021-11-01 16:22:27 -04:00 committed by GitHub
parent 2794d0b7a2
commit 0ec151b8cb
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
14 changed files with 127 additions and 62 deletions

View file

@ -35,9 +35,9 @@
"tools/wpt/manifest.json" "tools/wpt/manifest.json"
], ],
"plugins": [ "plugins": [
"https://plugins.dprint.dev/typescript-0.58.1.wasm", "https://plugins.dprint.dev/typescript-0.59.0.wasm",
"https://plugins.dprint.dev/json-0.13.0.wasm", "https://plugins.dprint.dev/json-0.13.1.wasm",
"https://plugins.dprint.dev/markdown-0.10.0.wasm", "https://plugins.dprint.dev/markdown-0.11.1.wasm",
"https://plugins.dprint.dev/toml-0.5.2.wasm" "https://plugins.dprint.dev/toml-0.5.2.wasm"
] ]
} }

32
Cargo.lock generated
View file

@ -695,9 +695,9 @@ dependencies = [
[[package]] [[package]]
name = "deno_ast" name = "deno_ast"
version = "0.4.1" version = "0.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e23902664e99dc1e0f7186ddd26dbf31fc2ab934ef86593700d43052f5ad43bf" checksum = "2ee37af956e0efce7863828eb055208965be06f47959b73c47466e0b5f9a1a9e"
dependencies = [ dependencies = [
"data-url", "data-url",
"dprint-swc-ecma-ast-view", "dprint-swc-ecma-ast-view",
@ -781,9 +781,9 @@ dependencies = [
[[package]] [[package]]
name = "deno_doc" name = "deno_doc"
version = "0.18.0" version = "0.19.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "81744eb79bda23580020b2df68a150197312b54c47e11160a65add0534c03ec5" checksum = "08abadd9f3ede74c5ba6e3d9a688ecfe160cf7fb2988ae133ef4e3d591d091e7"
dependencies = [ dependencies = [
"cfg-if 1.0.0", "cfg-if 1.0.0",
"deno_ast", "deno_ast",
@ -826,9 +826,9 @@ dependencies = [
[[package]] [[package]]
name = "deno_graph" name = "deno_graph"
version = "0.9.1" version = "0.10.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d7513c22ec28dd1a4eeb82a99fc543c92d7ee2f1a146a0dd6bea7427020eb863" checksum = "6df7e1b135780d9424ce4fb9a8927983d27d2c094922cb84b5fd5d72a4c85b82"
dependencies = [ dependencies = [
"anyhow", "anyhow",
"cfg-if 1.0.0", "cfg-if 1.0.0",
@ -862,9 +862,9 @@ dependencies = [
[[package]] [[package]]
name = "deno_lint" name = "deno_lint"
version = "0.18.1" version = "0.19.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "dce18a8ca950791a5aa75f6dbd64d3a49a9cb7339877c557ca2df7eb9dba0c5e" checksum = "7c031711a48a3c5ea4ca6103c6d6df456ba3b0bb048fb551f07da4f704e1d844"
dependencies = [ dependencies = [
"anyhow", "anyhow",
"deno_ast", "deno_ast",
@ -1097,9 +1097,9 @@ dependencies = [
[[package]] [[package]]
name = "dprint-core" name = "dprint-core"
version = "0.46.4" version = "0.47.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "df98b7d98583d9d57311b9df81f571f35a6ca3e8675d0128333b2e923dc85bcd" checksum = "75ed0f351c65487deac1ad113edffa75492209dc538e4f85c8d3362088176f3c"
dependencies = [ dependencies = [
"bumpalo", "bumpalo",
"rustc-hash", "rustc-hash",
@ -1108,9 +1108,9 @@ dependencies = [
[[package]] [[package]]
name = "dprint-plugin-json" name = "dprint-plugin-json"
version = "0.13.0" version = "0.13.1"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4a32a4eef2c639055370f16a359f0278025058e63193f0ad2340f30bf7ca8361" checksum = "c7e5184c59b6863c21dfd6f8491f895c7f935c41e62ce6464eea57fcb5cb9e60"
dependencies = [ dependencies = [
"dprint-core", "dprint-core",
"jsonc-parser", "jsonc-parser",
@ -1119,9 +1119,9 @@ dependencies = [
[[package]] [[package]]
name = "dprint-plugin-markdown" name = "dprint-plugin-markdown"
version = "0.10.0" version = "0.11.1"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "48b364aed2db4ccf8747dc1d9c7eb52a5e981a705c7aadfddd297fc4c3310772" checksum = "f3d76c5b041062f73b843fd8d4b2adf48aaaf1e0613bbdbb9b42c5b8cf8d586e"
dependencies = [ dependencies = [
"dprint-core", "dprint-core",
"pulldown-cmark", "pulldown-cmark",
@ -1131,9 +1131,9 @@ dependencies = [
[[package]] [[package]]
name = "dprint-plugin-typescript" name = "dprint-plugin-typescript"
version = "0.58.1" version = "0.59.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a5749ee5f8d448912fdab331a1535ac29364fc0f94e5c540532a6fa60178ba06" checksum = "a72ba2164e96a10905e57c0ddcf1ec4d7b66bc26226dba413b86016439f0e35f"
dependencies = [ dependencies = [
"deno_ast", "deno_ast",
"dprint-core", "dprint-core",

View file

@ -39,11 +39,11 @@ winapi = "0.3.9"
winres = "0.1.11" winres = "0.1.11"
[dependencies] [dependencies]
deno_ast = { version = "0.4.1", features = ["bundler", "codegen", "dep_graph", "module_specifier", "proposal", "react", "sourcemap", "transforms", "typescript", "view", "visit"] } deno_ast = { version = "0.5.0", features = ["bundler", "codegen", "dep_graph", "module_specifier", "proposal", "react", "sourcemap", "transforms", "typescript", "view", "visit"] }
deno_core = { version = "0.105.0", path = "../core" } deno_core = { version = "0.105.0", path = "../core" }
deno_doc = "0.18.0" deno_doc = "0.19.0"
deno_graph = "0.9.1" deno_graph = "0.10.0"
deno_lint = { version = "0.18.1", features = ["docs"] } deno_lint = { version = "0.19.0", features = ["docs"] }
deno_runtime = { version = "0.31.0", path = "../runtime" } deno_runtime = { version = "0.31.0", path = "../runtime" }
deno_tls = { version = "0.10.0", path = "../ext/tls" } deno_tls = { version = "0.10.0", path = "../ext/tls" }
@ -52,9 +52,9 @@ base64 = "0.13.0"
clap = "2.33.3" clap = "2.33.3"
data-url = "0.1.0" data-url = "0.1.0"
dissimilar = "1.0.2" dissimilar = "1.0.2"
dprint-plugin-json = "0.13.0" dprint-plugin-json = "0.13.1"
dprint-plugin-markdown = "0.10.0" dprint-plugin-markdown = "0.11.1"
dprint-plugin-typescript = "0.58.1" dprint-plugin-typescript = "0.59.0"
encoding_rs = "0.8.29" encoding_rs = "0.8.29"
env_logger = "0.8.4" env_logger = "0.8.4"
fancy-regex = "0.7.1" fancy-regex = "0.7.1"

View file

@ -280,8 +280,12 @@ fn get_version(source_bytes: &[u8], config_bytes: &[u8]) -> String {
/// Determine if a given media type is emittable or not. /// Determine if a given media type is emittable or not.
fn is_emittable(media_type: &MediaType, include_js: bool) -> bool { fn is_emittable(media_type: &MediaType, include_js: bool) -> bool {
match &media_type { match &media_type {
MediaType::TypeScript | MediaType::Tsx | MediaType::Jsx => true, MediaType::TypeScript
MediaType::JavaScript => include_js, | MediaType::Mts
| MediaType::Cts
| MediaType::Tsx
| MediaType::Jsx => true,
MediaType::JavaScript | MediaType::Mjs | MediaType::Cjs => include_js,
_ => false, _ => false,
} }
} }
@ -375,12 +379,17 @@ pub(crate) fn check_and_maybe_emit(
// Sometimes if `tsc` sees a CommonJS file it will _helpfully_ output it // Sometimes if `tsc` sees a CommonJS file it will _helpfully_ output it
// to ESM, which we don't really want to do unless someone has enabled // to ESM, which we don't really want to do unless someone has enabled
// check_js. // check_js.
if !check_js && *media_type == MediaType::JavaScript { if !check_js
&& matches!(
media_type,
MediaType::JavaScript | MediaType::Cjs | MediaType::Mjs
)
{
log::debug!("skipping emit for {}", specifier); log::debug!("skipping emit for {}", specifier);
continue; continue;
} }
match emit.media_type { match emit.media_type {
MediaType::JavaScript => { MediaType::JavaScript | MediaType::Mjs | MediaType::Cjs => {
let version = get_version(source.as_bytes(), &config_bytes); let version = get_version(source.as_bytes(), &config_bytes);
cache.set(CacheType::Version, &specifier, version)?; cache.set(CacheType::Version, &specifier, version)?;
cache.set(CacheType::Emit, &specifier, emit.data)?; cache.set(CacheType::Emit, &specifier, emit.data)?;
@ -390,7 +399,7 @@ pub(crate) fn check_and_maybe_emit(
} }
// this only occurs with the runtime emit, but we are using the same // this only occurs with the runtime emit, but we are using the same
// code paths, so we handle it here. // code paths, so we handle it here.
MediaType::Dts => { MediaType::Dts | MediaType::Dcts | MediaType::Dmts => {
cache.set(CacheType::Declaration, &specifier, emit.data)?; cache.set(CacheType::Declaration, &specifier, emit.data)?;
} }
_ => unreachable!(), _ => unreachable!(),
@ -677,10 +686,12 @@ pub(crate) fn valid_emit(
.specifiers() .specifiers()
.iter() .iter()
.filter(|(_, r)| match r { .filter(|(_, r)| match r {
Ok((_, MediaType::TypeScript)) Ok((_, MediaType::TypeScript | MediaType::Mts | MediaType::Cts))
| Ok((_, MediaType::Tsx)) | Ok((_, MediaType::Tsx))
| Ok((_, MediaType::Jsx)) => true, | Ok((_, MediaType::Jsx)) => true,
Ok((_, MediaType::JavaScript)) => emit_js, Ok((_, MediaType::JavaScript | MediaType::Mjs | MediaType::Cjs)) => {
emit_js
}
_ => false, _ => false,
}) })
.all(|(_, r)| { .all(|(_, r)| {
@ -756,9 +767,13 @@ pub(crate) fn to_file_map(
if let Some(map) = cache.get(CacheType::SourceMap, &specifier) { if let Some(map) = cache.get(CacheType::SourceMap, &specifier) {
files.insert(format!("{}.js.map", specifier), map); files.insert(format!("{}.js.map", specifier), map);
} }
} else if media_type == MediaType::JavaScript } else if matches!(
|| media_type == MediaType::Unknown media_type,
{ MediaType::JavaScript
| MediaType::Mjs
| MediaType::Cjs
| MediaType::Unknown
) {
if let Some(module) = graph.get(&specifier) { if let Some(module) = graph.get(&specifier) {
files.insert(specifier.to_string(), module.source.to_string()); files.insert(specifier.to_string(), module.source.to_string());
} }
@ -795,9 +810,13 @@ pub(crate) fn to_module_sources(
) )
// Then if the file is JavaScript (or unknown) and wasn't emitted, we // Then if the file is JavaScript (or unknown) and wasn't emitted, we
// will load the original source code in the module. // will load the original source code in the module.
} else if media_type == MediaType::JavaScript } else if matches!(
|| media_type == MediaType::Unknown media_type,
{ MediaType::JavaScript
| MediaType::Unknown
| MediaType::Cjs
| MediaType::Mjs
) {
if let Some(module) = graph.get(&found_specifier) { if let Some(module) = graph.get(&found_specifier) {
( (
requested_specifier.clone(), requested_specifier.clone(),
@ -840,8 +859,12 @@ mod tests {
fn test_is_emittable() { fn test_is_emittable() {
assert!(is_emittable(&MediaType::TypeScript, false)); assert!(is_emittable(&MediaType::TypeScript, false));
assert!(!is_emittable(&MediaType::Dts, false)); assert!(!is_emittable(&MediaType::Dts, false));
assert!(!is_emittable(&MediaType::Dcts, false));
assert!(!is_emittable(&MediaType::Dmts, false));
assert!(is_emittable(&MediaType::Tsx, false)); assert!(is_emittable(&MediaType::Tsx, false));
assert!(!is_emittable(&MediaType::JavaScript, false)); assert!(!is_emittable(&MediaType::JavaScript, false));
assert!(!is_emittable(&MediaType::Cjs, false));
assert!(!is_emittable(&MediaType::Mjs, false));
assert!(is_emittable(&MediaType::JavaScript, true)); assert!(is_emittable(&MediaType::JavaScript, true));
assert!(is_emittable(&MediaType::Jsx, false)); assert!(is_emittable(&MediaType::Jsx, false));
assert!(!is_emittable(&MediaType::Json, false)); assert!(!is_emittable(&MediaType::Json, false));

View file

@ -283,9 +283,10 @@ impl FileFetcher {
map_content_type(specifier, maybe_content_type); map_content_type(specifier, maybe_content_type);
let source = strip_shebang(get_source_from_bytes(bytes, maybe_charset)?); let source = strip_shebang(get_source_from_bytes(bytes, maybe_charset)?);
let maybe_types = match media_type { let maybe_types = match media_type {
MediaType::JavaScript | MediaType::Jsx => { MediaType::JavaScript
headers.get("x-typescript-types").cloned() | MediaType::Cjs
} | MediaType::Mjs
| MediaType::Jsx => headers.get("x-typescript-types").cloned(),
_ => None, _ => None,
}; };
@ -745,13 +746,17 @@ mod tests {
// Extension only // Extension only
(file_url!("/foo/bar.ts"), None, MediaType::TypeScript, None), (file_url!("/foo/bar.ts"), None, MediaType::TypeScript, None),
(file_url!("/foo/bar.tsx"), None, MediaType::Tsx, None), (file_url!("/foo/bar.tsx"), None, MediaType::Tsx, None),
(file_url!("/foo/bar.d.cts"), None, MediaType::Dcts, None),
(file_url!("/foo/bar.d.mts"), None, MediaType::Dmts, None),
(file_url!("/foo/bar.d.ts"), None, MediaType::Dts, None), (file_url!("/foo/bar.d.ts"), None, MediaType::Dts, None),
(file_url!("/foo/bar.js"), None, MediaType::JavaScript, None), (file_url!("/foo/bar.js"), None, MediaType::JavaScript, None),
(file_url!("/foo/bar.jsx"), None, MediaType::Jsx, None), (file_url!("/foo/bar.jsx"), None, MediaType::Jsx, None),
(file_url!("/foo/bar.json"), None, MediaType::Json, None), (file_url!("/foo/bar.json"), None, MediaType::Json, None),
(file_url!("/foo/bar.wasm"), None, MediaType::Wasm, None), (file_url!("/foo/bar.wasm"), None, MediaType::Wasm, None),
(file_url!("/foo/bar.cjs"), None, MediaType::JavaScript, None), (file_url!("/foo/bar.cjs"), None, MediaType::Cjs, None),
(file_url!("/foo/bar.mjs"), None, MediaType::JavaScript, None), (file_url!("/foo/bar.mjs"), None, MediaType::Mjs, None),
(file_url!("/foo/bar.cts"), None, MediaType::Cts, None),
(file_url!("/foo/bar.mts"), None, MediaType::Mts, None),
(file_url!("/foo/bar"), None, MediaType::Unknown, None), (file_url!("/foo/bar"), None, MediaType::Unknown, None),
// Media type no extension // Media type no extension
( (
@ -884,7 +889,7 @@ mod tests {
( (
"https://deno.land/x/mod.d.ts", "https://deno.land/x/mod.d.ts",
Some("application/javascript".to_string()), Some("application/javascript".to_string()),
MediaType::JavaScript, MediaType::Dts,
None, None,
), ),
( (

View file

@ -250,6 +250,7 @@ impl Document {
fn is_diagnosable(&self) -> bool { fn is_diagnosable(&self) -> bool {
matches!( matches!(
self.media_type(), self.media_type(),
// todo(#12410): Update with new media types for TS 4.5
MediaType::JavaScript MediaType::JavaScript
| MediaType::Jsx | MediaType::Jsx
| MediaType::TypeScript | MediaType::TypeScript

View file

@ -327,6 +327,7 @@ impl Inner {
if specifier.scheme() == "asset" { if specifier.scheme() == "asset" {
matches!( matches!(
MediaType::from(specifier), MediaType::from(specifier),
// todo(#12410): Update with new media types for TS 4.5
MediaType::JavaScript MediaType::JavaScript
| MediaType::Jsx | MediaType::Jsx
| MediaType::TypeScript | MediaType::TypeScript

View file

@ -73,7 +73,7 @@ unitTest(function webAssemblyExists() {
declare global { declare global {
namespace Deno { namespace Deno {
// deno-lint-ignore no-explicit-any // deno-lint-ignore no-explicit-any, no-var
var core: any; var core: any;
} }
} }

View file

@ -27,7 +27,7 @@ unitTest(async function sendAsyncStackTrace() {
declare global { declare global {
namespace Deno { namespace Deno {
// deno-lint-ignore no-explicit-any // deno-lint-ignore no-explicit-any, no-var
var core: any; var core: any;
} }
} }

View file

@ -47,7 +47,7 @@ unitTest({ permissions: { read: true } }, async function resourcesFile() {
Object.keys(resourcesBefore).length + 1, Object.keys(resourcesBefore).length + 1,
); );
const newRid = +Object.keys(resourcesAfter).find((rid): boolean => { const newRid = +Object.keys(resourcesAfter).find((rid): boolean => {
return !resourcesBefore.hasOwnProperty(rid); return !Object.prototype.hasOwnProperty.call(resourcesBefore, rid);
})!; })!;
assertEquals(resourcesAfter[newRid], "fsFile"); assertEquals(resourcesAfter[newRid], "fsFile");
}); });

View file

@ -515,8 +515,12 @@ fn extract_files_from_regex_blocks(
match attributes.get(0) { match attributes.get(0) {
Some(&"js") => MediaType::JavaScript, Some(&"js") => MediaType::JavaScript,
Some(&"mjs") => MediaType::Mjs,
Some(&"cjs") => MediaType::Cjs,
Some(&"jsx") => MediaType::Jsx, Some(&"jsx") => MediaType::Jsx,
Some(&"ts") => MediaType::TypeScript, Some(&"ts") => MediaType::TypeScript,
Some(&"mts") => MediaType::Mts,
Some(&"cts") => MediaType::Cts,
Some(&"tsx") => MediaType::Tsx, Some(&"tsx") => MediaType::Tsx,
Some(&"") => media_type, Some(&"") => media_type,
_ => MediaType::Unknown, _ => MediaType::Unknown,

View file

@ -140,8 +140,35 @@ fn get_tsc_media_type(specifier: &ModuleSpecifier) -> MediaType {
} }
MediaType::TypeScript MediaType::TypeScript
} }
Some("mts") => {
if let Some(os_str) = path.file_stem() {
if let Some(file_name) = os_str.to_str() {
if file_name.ends_with(".d") {
// todo(#12410): Use Dmts for TS 4.5
return MediaType::Dts;
}
}
}
// todo(#12410): Use Mts for TS 4.5
MediaType::TypeScript
}
Some("cts") => {
if let Some(os_str) = path.file_stem() {
if let Some(file_name) = os_str.to_str() {
if file_name.ends_with(".d") {
// todo(#12410): Use Dcts for TS 4.5
return MediaType::Dts;
}
}
}
// todo(#12410): Use Cts for TS 4.5
MediaType::TypeScript
}
Some("tsx") => MediaType::Tsx, Some("tsx") => MediaType::Tsx,
Some("js") => MediaType::JavaScript, Some("js") => MediaType::JavaScript,
// todo(#12410): Use correct media type for TS 4.5
Some("mjs") => MediaType::JavaScript,
Some("cjs") => MediaType::JavaScript,
Some("jsx") => MediaType::Jsx, Some("jsx") => MediaType::Jsx,
_ => MediaType::Unknown, _ => MediaType::Unknown,
}, },
@ -707,12 +734,16 @@ mod tests {
fn test_get_tsc_media_type() { fn test_get_tsc_media_type() {
let fixtures = vec![ let fixtures = vec![
("file:///a.ts", MediaType::TypeScript), ("file:///a.ts", MediaType::TypeScript),
("file:///a.cts", MediaType::TypeScript),
("file:///a.mts", MediaType::TypeScript),
("file:///a.tsx", MediaType::Tsx), ("file:///a.tsx", MediaType::Tsx),
("file:///a.d.ts", MediaType::Dts), ("file:///a.d.ts", MediaType::Dts),
("file:///a.d.cts", MediaType::Dts),
("file:///a.d.mts", MediaType::Dts),
("file:///a.js", MediaType::JavaScript), ("file:///a.js", MediaType::JavaScript),
("file:///a.jsx", MediaType::Jsx), ("file:///a.jsx", MediaType::Jsx),
("file:///a.cjs", MediaType::Unknown), ("file:///a.cjs", MediaType::JavaScript),
("file:///a.mjs", MediaType::Unknown), ("file:///a.mjs", MediaType::JavaScript),
("file:///a.json", MediaType::Unknown), ("file:///a.json", MediaType::Unknown),
("file:///a.wasm", MediaType::Unknown), ("file:///a.wasm", MediaType::Unknown),
("file:///a.js.map", MediaType::Unknown), ("file:///a.js.map", MediaType::Unknown),

View file

@ -48,10 +48,10 @@ when encoding/decoding.
- [ ] Experiment with KeyCache to optimize struct keys - [ ] Experiment with KeyCache to optimize struct keys
- [ ] Experiment with external v8 strings - [ ] Experiment with external v8 strings
- [ ] Explore using - [ ] Explore using
[json-stringifier.cc](https://chromium.googlesource.com/v8/v8/+/refs/heads/master/src/json/json-stringifier.cc)'s [json-stringifier.cc](https://chromium.googlesource.com/v8/v8/+/refs/heads/master/src/json/json-stringifier.cc)'s
fast-paths for arrays fast-paths for arrays
- [ ] Improve tests to test parity with `serde_json` (should be mostly - [ ] Improve tests to test parity with `serde_json` (should be mostly
interchangeable) interchangeable)
- [ ] Consider a `Payload` type that's deserializable by itself (holds scope & - [ ] Consider a `Payload` type that's deserializable by itself (holds scope &
value) value)
- [ ] Ensure we return errors instead of panicking on `.unwrap()`s - [ ] Ensure we return errors instead of panicking on `.unwrap()`s

View file

@ -4,17 +4,17 @@
- [ ] An up to date stable Rust toolchain - [ ] An up to date stable Rust toolchain
- [ ] A binary version of `deno` available (hopefully built from `main`) that is - [ ] A binary version of `deno` available (hopefully built from `main`) that is
going to be available throughout any local building you might do. going to be available throughout any local building you might do.
- [ ] Forks and local clones of - [ ] Forks and local clones of
[`denoland/deno`](https://github.com/denoland/deno/), [`denoland/deno`](https://github.com/denoland/deno/),
[`denoland/deno_std`](https://github.com/denoland/deno_std/), [`denoland/deno_std`](https://github.com/denoland/deno_std/),
[`denoland/dotland`](https://github.com/denoland/dotland/) and [`denoland/dotland`](https://github.com/denoland/dotland/) and
[`denoland/deno_docker`](https://github.com/denoland/deno_docker/) [`denoland/deno_docker`](https://github.com/denoland/deno_docker/)
- [ ] Ensure that external dependencies are up-to date in `denoland/deno` (e.g. - [ ] Ensure that external dependencies are up-to date in `denoland/deno` (e.g.
`rusty_v8`, `serde_v8`, `deno_doc`, `deno_lint`). `rusty_v8`, `serde_v8`, `deno_doc`, `deno_lint`).
- [ ] Ownership access on crates.io for the 19 (🙀) crates that you will be - [ ] Ownership access on crates.io for the 19 (🙀) crates that you will be
publishing. (Don't worry too much though as the main script publishing 18 of publishing. (Don't worry too much though as the main script publishing 18
the crates allows recovery) of the crates allows recovery)
- [ ] Lot's of ☕ - [ ] Lot's of ☕
**During this process `main` branch (or any other branch that you're creating **During this process `main` branch (or any other branch that you're creating