0
0
Fork 0
mirror of https://github.com/denoland/deno.git synced 2025-02-01 12:16:11 -05:00

Merge branch 'main' into perf_node_resolver

This commit is contained in:
David Sherret 2025-01-27 15:27:51 -05:00
commit 193a2a7281
36 changed files with 162 additions and 130 deletions

4
Cargo.lock generated
View file

@ -1945,9 +1945,9 @@ dependencies = [
[[package]]
name = "deno_lint"
version = "0.69.0"
version = "0.70.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "802583d3ca6c7063e14cafa02ddc206fb34e804e095d52032baf375c56a99515"
checksum = "ac94db8d8597b96c92d30a68b11d4bec6822dcbb3e8675ab1e0136816a301a34"
dependencies = [
"anyhow",
"deno_ast",

View file

@ -74,7 +74,7 @@ deno_doc = { version = "=0.164.0", features = ["rust", "comrak"] }
deno_error.workspace = true
deno_graph = { version = "=0.87.0" }
deno_lib.workspace = true
deno_lint = { version = "0.69.0" }
deno_lint = { version = "0.70.0" }
deno_lockfile.workspace = true
deno_media_type = { workspace = true, features = ["data_url", "decoding", "module_specifier"] }
deno_npm.workspace = true

View file

@ -197,8 +197,8 @@ impl ModuleLoader for EmbeddedModuleLoader {
referrer_kind,
NodeResolutionKind::Execution,
)
.map_err(JsErrorBox::from_err)?
.into_url(),
.and_then(|res| res.into_url())
.map_err(JsErrorBox::from_err)?,
);
}
@ -338,7 +338,7 @@ impl ModuleLoader for EmbeddedModuleLoader {
)
.map_err(JsErrorBox::from_err)?;
if let Some(res) = maybe_res {
return Ok(res.into_url());
return Ok(res.into_url().map_err(JsErrorBox::from_err)?);
}
Err(JsErrorBox::from_err(err).into())
}

View file

@ -8,7 +8,6 @@
"ban-untagged-ignore",
"ban-untagged-todo",
"ban-unused-ignore",
"button-has-type",
"camelcase",
"constructor-super",
"default-param-last",
@ -21,11 +20,11 @@
"getter-return",
"guard-for-in",
"jsx-boolean-value",
"jsx-button-has-type",
"jsx-curly-braces",
"jsx-key",
"jsx-no-children-prop",
"jsx-no-comment-text-nodes",
"jsx-no-danger-with-children",
"jsx-no-duplicate-props",
"jsx-no-unescaped-entities",
"jsx-no-useless-fragment",
@ -44,7 +43,6 @@
"no-const-assign",
"no-constant-condition",
"no-control-regex",
"no-danger",
"no-debugger",
"no-delete-var",
"no-deprecated-deno-api",
@ -115,9 +113,11 @@
"prefer-const",
"prefer-namespace-keyword",
"prefer-primordials",
"react-no-danger",
"react-no-danger-with-children",
"react-rules-of-hooks",
"require-await",
"require-yield",
"rules-of-hooks",
"single-var-declarator",
"triple-slash-reference",
"use-isnan",

View file

@ -409,6 +409,12 @@ async fn install_global(
.load_and_type_check_files(&[install_flags_global.module_url.clone()])
.await?;
if matches!(flags.config_flag, ConfigFlag::Discover)
&& cli_options.workspace().deno_jsons().next().is_some()
{
log::warn!("{} discovered config file will be ignored in the installed command. Use the --config flag if you wish to include it.", crate::colors::yellow("Warning"));
}
// create the install shim
create_install_shim(http_client, &flags, install_flags_global).await
}

View file

@ -1009,8 +1009,8 @@ fn resolve_non_graph_specifier_types(
resolution_mode,
NodeResolutionKind::Types,
)
.ok()
.map(|res| res.into_url()),
.and_then(|res| res.into_url())
.ok(),
)))
} else if let Ok(npm_req_ref) =
NpmPackageReqReference::from_str(raw_specifier)

View file

@ -48,6 +48,7 @@ import {
op_crypto_verify_ed25519,
op_crypto_verify_key,
op_crypto_wrap_key,
op_crypto_x25519_public_key,
} from "ext:core/ops";
const {
ArrayBufferIsView,
@ -4532,17 +4533,18 @@ function exportKeyX25519(format, key, innerKey) {
return TypedArrayPrototypeGetBuffer(pkcs8Der);
}
case "jwk": {
if (key[_type] === "private") {
throw new DOMException("Not implemented", "NotSupportedError");
}
const x = op_crypto_base64url_encode(innerKey);
const jwk = {
kty: "OKP",
crv: "X25519",
x,
"key_ops": key.usages,
ext: key[_extractable],
};
if (key[_type] === "private") {
jwk.x = op_crypto_x25519_public_key(innerKey);
jwk.d = op_crypto_base64url_encode(innerKey);
} else {
jwk.x = op_crypto_base64url_encode(innerKey);
}
return jwk;
}
default:

View file

@ -98,6 +98,7 @@ deno_core::extension!(deno_crypto,
op_crypto_base64url_decode,
op_crypto_base64url_encode,
x25519::op_crypto_generate_x25519_keypair,
x25519::op_crypto_x25519_public_key,
x25519::op_crypto_derive_bits_x25519,
x25519::op_crypto_import_spki_x25519,
x25519::op_crypto_import_pkcs8_x25519,

View file

@ -1,5 +1,6 @@
// Copyright 2018-2025 the Deno authors. MIT license.
use base64::prelude::BASE64_URL_SAFE_NO_PAD;
use curve25519_dalek::montgomery::MontgomeryPoint;
use deno_core::op2;
use deno_core::ToJsBuffer;
@ -20,17 +21,16 @@ pub enum X25519Error {
#[error(transparent)]
Der(#[from] spki::der::Error),
}
// u-coordinate of the base point.
const X25519_BASEPOINT_BYTES: [u8; 32] = [
9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
];
#[op2(fast)]
pub fn op_crypto_generate_x25519_keypair(
#[buffer] pkey: &mut [u8],
#[buffer] pubkey: &mut [u8],
) {
// u-coordinate of the base point.
const X25519_BASEPOINT_BYTES: [u8; 32] = [
9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0,
];
let mut rng = OsRng;
rng.fill_bytes(pkey);
// https://www.rfc-editor.org/rfc/rfc7748#section-6.1
@ -42,6 +42,17 @@ pub fn op_crypto_generate_x25519_keypair(
pubkey.copy_from_slice(&x25519_dalek::x25519(pkey, X25519_BASEPOINT_BYTES));
}
#[op2]
#[string]
pub fn op_crypto_x25519_public_key(#[buffer] private_key: &[u8]) -> String {
use base64::Engine;
let private_key: [u8; 32] =
private_key.try_into().expect("Expected byteLength 32");
BASE64_URL_SAFE_NO_PAD
.encode(x25519_dalek::x25519(private_key, X25519_BASEPOINT_BYTES))
}
const MONTGOMERY_IDENTITY: MontgomeryPoint = MontgomeryPoint([0; 32]);
#[op2(fast)]

View file

@ -255,10 +255,12 @@ impl<
{
return node_resolver
.resolve(raw_specifier, referrer, resolution_mode, resolution_kind)
.map(|res| DenoResolution {
url: res.into_url(),
found_package_json_dep,
maybe_diagnostic,
.and_then(|res| {
Ok(DenoResolution {
url: res.into_url()?,
found_package_json_dep,
maybe_diagnostic,
})
})
.map_err(|e| e.into());
}
@ -498,9 +500,9 @@ impl<
})?;
if let Some(res) = maybe_resolution {
match res {
NodeResolution::Module(url) => {
NodeResolution::Module(ref _url) => {
return Ok(DenoResolution {
url,
url: res.into_url()?,
maybe_diagnostic,
found_package_json_dep,
})

View file

@ -116,21 +116,19 @@ impl NodeResolutionKind {
#[derive(Debug)]
pub enum NodeResolution {
Module(Url),
Module(UrlOrPath),
BuiltIn(String),
}
impl NodeResolution {
pub fn into_url(self) -> Url {
pub fn into_url(self) -> Result<Url, NodeResolveError> {
match self {
Self::Module(u) => u,
Self::BuiltIn(specifier) => {
if specifier.starts_with("node:") {
Url::parse(&specifier).unwrap()
} else {
Url::parse(&format!("node:{specifier}")).unwrap()
}
}
Self::Module(u) => Ok(u.into_url()?),
Self::BuiltIn(specifier) => Ok(if specifier.starts_with("node:") {
Url::parse(&specifier).unwrap()
} else {
Url::parse(&format!("node:{specifier}")).unwrap()
}),
}
}
}
@ -221,7 +219,7 @@ impl<
if let Ok(url) = Url::parse(specifier) {
if url.scheme() == "data" {
return Ok(NodeResolution::Module(url));
return Ok(NodeResolution::Module(UrlOrPath::Url(url)));
}
if let Some(module_name) =
@ -246,7 +244,7 @@ impl<
let url = referrer
.join(specifier)
.map_err(|source| DataUrlReferrerError { source })?;
return Ok(NodeResolution::Module(url));
return Ok(NodeResolution::Module(UrlOrPath::Url(url)));
}
}
@ -274,8 +272,8 @@ impl<
url
};
let url = self.finalize_resolution(url, Some(&referrer))?;
let resolve_response = NodeResolution::Module(url.into_url()?);
let url_or_path = self.finalize_resolution(url, Some(&referrer))?;
let resolve_response = NodeResolution::Module(url_or_path);
// TODO(bartlomieju): skipped checking errors for commonJS resolution and
// "preserveSymlinksMain"/"preserveSymlinks" options.
Ok(resolve_response)

View file

@ -0,0 +1,5 @@
{
"tempDir": true,
"args": "install --root ./bins -g --name my-cli main.js",
"output": "install.out"
}

View file

@ -0,0 +1,2 @@
{
}

View file

@ -0,0 +1,3 @@
Warning discovered config file will be ignored in the installed command. Use the --config flag if you wish to include it.
✅ Successfully installed my-cli
[WILDCARD]

View file

@ -0,0 +1 @@
console.log(1);

View file

@ -5,7 +5,7 @@ error[no-unused-vars]: `t` is never used
| ^
= hint: If this is intentional, prefix it with an underscore like `_t`
docs: https://lint.deno.land/rules/no-unused-vars
docs: https://docs.deno.com/lint/rules/no-unused-vars
Found 1 problem

View file

@ -5,7 +5,7 @@ error[no-empty]: Empty block statement
| ^^
= hint: Add code or comment to the empty block
docs: https://lint.deno.land/rules/no-empty
docs: https://docs.deno.com/lint/rules/no-empty
Found 1 problem

View file

@ -5,7 +5,7 @@ error[verbatim-module-syntax]: All import identifiers are used in types
| ^^^^^^
= hint: Change `import` to `import type` and optionally add an explicit side effect import
docs: https://lint.deno.land/rules/verbatim-module-syntax
docs: https://docs.deno.com/lint/rules/verbatim-module-syntax
Found 1 problem (1 fixable via --fix)

View file

@ -5,7 +5,7 @@ error[no-unused-vars]: `React` is never used
| ^^^^^
= hint: If this is intentional, prefix it with an underscore like `_React`
docs: https://lint.deno.land/rules/no-unused-vars
docs: https://docs.deno.com/lint/rules/no-unused-vars
Found 1 problem

View file

@ -5,7 +5,7 @@ error[no-node-globals]: NodeJS globals are not available in Deno
| ^^^^^^^^^^^^
= hint: Add `import { setImmediate } from "node:timers";`
docs: https://lint.deno.land/rules/no-node-globals
docs: https://docs.deno.com/lint/rules/no-node-globals
error[no-node-globals]: NodeJS globals are not available in Deno
@ -15,7 +15,7 @@ error[no-node-globals]: NodeJS globals are not available in Deno
| ^^^^^^^^^^^^
= hint: Add `import { setImmediate } from "node:timers";`
docs: https://lint.deno.land/rules/no-node-globals
docs: https://docs.deno.com/lint/rules/no-node-globals
Found 2 problems (2 fixable via --fix)

View file

@ -6,7 +6,7 @@ error[no-unused-vars]: `a` is never used
| ^
= hint: If this is intentional, prefix it with an underscore like `_a`
docs: https://lint.deno.land/rules/no-unused-vars
docs: https://docs.deno.com/lint/rules/no-unused-vars
error[no-unused-vars]: `a` is never used
@ -16,7 +16,7 @@ error[no-unused-vars]: `a` is never used
| ^
= hint: If this is intentional, prefix it with an underscore like `_a`
docs: https://lint.deno.land/rules/no-unused-vars
docs: https://docs.deno.com/lint/rules/no-unused-vars
[UNORDERED_END]

View file

@ -6,7 +6,7 @@ error[no-unused-vars]: `a` is never used
| ^
= hint: If this is intentional, prefix it with an underscore like `_a`
docs: https://lint.deno.land/rules/no-unused-vars
docs: https://docs.deno.com/lint/rules/no-unused-vars
error[no-unused-vars]: `a` is never used
@ -16,7 +16,7 @@ error[no-unused-vars]: `a` is never used
| ^
= hint: If this is intentional, prefix it with an underscore like `_a`
docs: https://lint.deno.land/rules/no-unused-vars
docs: https://docs.deno.com/lint/rules/no-unused-vars
[UNORDERED_END]

View file

@ -5,7 +5,7 @@ error[ban-untagged-ignore]: Ignore directive requires lint rule name(s)
| ^^^^^^^^^^^^^^^^^^^
= hint: Add one or more lint rule names. E.g. // deno-lint-ignore adjacent-overload-signatures
docs: https://lint.deno.land/rules/ban-untagged-ignore
docs: https://docs.deno.com/lint/rules/ban-untagged-ignore
error[no-empty]: Empty block statement
@ -15,6 +15,6 @@ error[no-empty]: Empty block statement
| ^^
= hint: Add code or comment to the empty block
docs: https://lint.deno.land/rules/no-empty
docs: https://docs.deno.com/lint/rules/no-empty

View file

@ -5,7 +5,7 @@ error[no-explicit-any]: `any` type is not allowed
| ^^^
= hint: Use a specific type other than `any`
docs: https://lint.deno.land/rules/no-explicit-any
docs: https://docs.deno.com/lint/rules/no-explicit-any
Found 1 problem

View file

@ -9,7 +9,7 @@ error[no-unused-vars]: `foo` is never used
| ^^^
= hint: If this is intentional, prefix it with an underscore like `_foo`
docs: https://lint.deno.land/rules/no-unused-vars
docs: https://docs.deno.com/lint/rules/no-unused-vars
Found 1 problem

View file

@ -5,7 +5,7 @@ error[ban-untagged-todo]: TODO should be tagged with (@username) or (#issue)
| ^^^^^^^^^^^^
= hint: Add a user tag or issue reference to the TODO comment, e.g. TODO(@djones), TODO(djones), TODO(#123)
docs: https://lint.deno.land/rules/ban-untagged-todo
docs: https://docs.deno.com/lint/rules/ban-untagged-todo
error[no-unused-vars]: `add` is never used
@ -15,7 +15,7 @@ error[no-unused-vars]: `add` is never used
| ^^^
= hint: If this is intentional, prefix it with an underscore like `_add`
docs: https://lint.deno.land/rules/no-unused-vars
docs: https://docs.deno.com/lint/rules/no-unused-vars
Found 2 problems

View file

@ -5,7 +5,7 @@ error[ban-untagged-todo]: TODO should be tagged with (@username) or (#issue)
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
= hint: Add a user tag or issue reference to the TODO comment, e.g. TODO(@djones), TODO(djones), TODO(#123)
docs: https://lint.deno.land/rules/ban-untagged-todo
docs: https://docs.deno.com/lint/rules/ban-untagged-todo
error[no-unused-vars]: `subtract` is never used
@ -15,7 +15,7 @@ error[no-unused-vars]: `subtract` is never used
| ^^^^^^^^
= hint: If this is intentional, prefix it with an underscore like `_subtract`
docs: https://lint.deno.land/rules/no-unused-vars
docs: https://docs.deno.com/lint/rules/no-unused-vars
Found 2 problems

View file

@ -5,7 +5,7 @@ error[ban-untagged-todo]: TODO should be tagged with (@username) or (#issue)
| ^^^^^^^^^^^^
= hint: Add a user tag or issue reference to the TODO comment, e.g. TODO(@djones), TODO(djones), TODO(#123)
docs: https://lint.deno.land/rules/ban-untagged-todo
docs: https://docs.deno.com/lint/rules/ban-untagged-todo
error[no-unused-vars]: `add` is never used
@ -15,7 +15,7 @@ error[no-unused-vars]: `add` is never used
| ^^^
= hint: If this is intentional, prefix it with an underscore like `_add`
docs: https://lint.deno.land/rules/no-unused-vars
docs: https://docs.deno.com/lint/rules/no-unused-vars
Found 2 problems

View file

@ -6,7 +6,7 @@ error[no-unused-vars]: `foo` is never used
| ^^^
= hint: If this is intentional, prefix it with an underscore like `_foo`
docs: https://lint.deno.land/rules/no-unused-vars
docs: https://docs.deno.com/lint/rules/no-unused-vars
error[no-unused-vars]: `foo` is never used
@ -16,7 +16,7 @@ error[no-unused-vars]: `foo` is never used
| ^^^
= hint: If this is intentional, prefix it with an underscore like `_foo`
docs: https://lint.deno.land/rules/no-unused-vars
docs: https://docs.deno.com/lint/rules/no-unused-vars
error[no-unused-vars]: `foo` is never used
@ -26,7 +26,7 @@ error[no-unused-vars]: `foo` is never used
| ^^^
= hint: If this is intentional, prefix it with an underscore like `_foo`
docs: https://lint.deno.land/rules/no-unused-vars
docs: https://docs.deno.com/lint/rules/no-unused-vars
error[no-unused-vars]: `foo` is never used
@ -36,7 +36,7 @@ error[no-unused-vars]: `foo` is never used
| ^^^
= hint: If this is intentional, prefix it with an underscore like `_foo`
docs: https://lint.deno.land/rules/no-unused-vars
docs: https://docs.deno.com/lint/rules/no-unused-vars
error[no-unused-vars]: `foo` is never used
@ -46,7 +46,7 @@ error[no-unused-vars]: `foo` is never used
| ^^^
= hint: If this is intentional, prefix it with an underscore like `_foo`
docs: https://lint.deno.land/rules/no-unused-vars
docs: https://docs.deno.com/lint/rules/no-unused-vars
error[no-unused-vars]: `foo` is never used
@ -56,7 +56,7 @@ error[no-unused-vars]: `foo` is never used
| ^^^
= hint: If this is intentional, prefix it with an underscore like `_foo`
docs: https://lint.deno.land/rules/no-unused-vars
docs: https://docs.deno.com/lint/rules/no-unused-vars
error[no-unused-vars]: `foo` is never used
@ -66,7 +66,7 @@ error[no-unused-vars]: `foo` is never used
| ^^^
= hint: If this is intentional, prefix it with an underscore like `_foo`
docs: https://lint.deno.land/rules/no-unused-vars
docs: https://docs.deno.com/lint/rules/no-unused-vars
error[no-unused-vars]: `foo` is never used
@ -76,7 +76,7 @@ error[no-unused-vars]: `foo` is never used
| ^^^
= hint: If this is intentional, prefix it with an underscore like `_foo`
docs: https://lint.deno.land/rules/no-unused-vars
docs: https://docs.deno.com/lint/rules/no-unused-vars
error[no-unused-vars]: `foo` is never used
@ -86,7 +86,7 @@ error[no-unused-vars]: `foo` is never used
| ^^^
= hint: If this is intentional, prefix it with an underscore like `_foo`
docs: https://lint.deno.land/rules/no-unused-vars
docs: https://docs.deno.com/lint/rules/no-unused-vars
[UNORDERED_END]

View file

@ -6,7 +6,7 @@ error[no-unused-vars]: `foo` is never used
| ^^^
= hint: If this is intentional, prefix it with an underscore like `_foo`
docs: https://lint.deno.land/rules/no-unused-vars
docs: https://docs.deno.com/lint/rules/no-unused-vars
error[no-unused-vars]: `foo` is never used
@ -16,7 +16,7 @@ error[no-unused-vars]: `foo` is never used
| ^^^
= hint: If this is intentional, prefix it with an underscore like `_foo`
docs: https://lint.deno.land/rules/no-unused-vars
docs: https://docs.deno.com/lint/rules/no-unused-vars
error[no-unused-vars]: `foo` is never used
@ -26,7 +26,7 @@ error[no-unused-vars]: `foo` is never used
| ^^^
= hint: If this is intentional, prefix it with an underscore like `_foo`
docs: https://lint.deno.land/rules/no-unused-vars
docs: https://docs.deno.com/lint/rules/no-unused-vars
error[no-unused-vars]: `foo` is never used
@ -36,7 +36,7 @@ error[no-unused-vars]: `foo` is never used
| ^^^
= hint: If this is intentional, prefix it with an underscore like `_foo`
docs: https://lint.deno.land/rules/no-unused-vars
docs: https://docs.deno.com/lint/rules/no-unused-vars
error[no-unused-vars]: `foo` is never used
@ -46,7 +46,7 @@ error[no-unused-vars]: `foo` is never used
| ^^^
= hint: If this is intentional, prefix it with an underscore like `_foo`
docs: https://lint.deno.land/rules/no-unused-vars
docs: https://docs.deno.com/lint/rules/no-unused-vars
error[no-unused-vars]: `foo` is never used
@ -56,7 +56,7 @@ error[no-unused-vars]: `foo` is never used
| ^^^
= hint: If this is intentional, prefix it with an underscore like `_foo`
docs: https://lint.deno.land/rules/no-unused-vars
docs: https://docs.deno.com/lint/rules/no-unused-vars
error[no-unused-vars]: `foo` is never used
@ -66,7 +66,7 @@ error[no-unused-vars]: `foo` is never used
| ^^^
= hint: If this is intentional, prefix it with an underscore like `_foo`
docs: https://lint.deno.land/rules/no-unused-vars
docs: https://docs.deno.com/lint/rules/no-unused-vars
error[no-unused-vars]: `foo` is never used
@ -76,7 +76,7 @@ error[no-unused-vars]: `foo` is never used
| ^^^
= hint: If this is intentional, prefix it with an underscore like `_foo`
docs: https://lint.deno.land/rules/no-unused-vars
docs: https://docs.deno.com/lint/rules/no-unused-vars
error[no-unused-vars]: `foo` is never used
@ -86,7 +86,7 @@ error[no-unused-vars]: `foo` is never used
| ^^^
= hint: If this is intentional, prefix it with an underscore like `_foo`
docs: https://lint.deno.land/rules/no-unused-vars
docs: https://docs.deno.com/lint/rules/no-unused-vars
[UNORDERED_END]

View file

@ -6,7 +6,7 @@ error[no-unused-vars]: `foo` is never used
| ^^^
= hint: If this is intentional, prefix it with an underscore like `_foo`
docs: https://lint.deno.land/rules/no-unused-vars
docs: https://docs.deno.com/lint/rules/no-unused-vars
error[no-unused-vars]: `foo` is never used
@ -16,7 +16,7 @@ error[no-unused-vars]: `foo` is never used
| ^^^
= hint: If this is intentional, prefix it with an underscore like `_foo`
docs: https://lint.deno.land/rules/no-unused-vars
docs: https://docs.deno.com/lint/rules/no-unused-vars
error[no-unused-vars]: `foo` is never used
@ -26,7 +26,7 @@ error[no-unused-vars]: `foo` is never used
| ^^^
= hint: If this is intentional, prefix it with an underscore like `_foo`
docs: https://lint.deno.land/rules/no-unused-vars
docs: https://docs.deno.com/lint/rules/no-unused-vars
error[no-unused-vars]: `foo` is never used
@ -36,7 +36,7 @@ error[no-unused-vars]: `foo` is never used
| ^^^
= hint: If this is intentional, prefix it with an underscore like `_foo`
docs: https://lint.deno.land/rules/no-unused-vars
docs: https://docs.deno.com/lint/rules/no-unused-vars
error[no-unused-vars]: `foo` is never used
@ -46,7 +46,7 @@ error[no-unused-vars]: `foo` is never used
| ^^^
= hint: If this is intentional, prefix it with an underscore like `_foo`
docs: https://lint.deno.land/rules/no-unused-vars
docs: https://docs.deno.com/lint/rules/no-unused-vars
error[no-unused-vars]: `foo` is never used
@ -56,7 +56,7 @@ error[no-unused-vars]: `foo` is never used
| ^^^
= hint: If this is intentional, prefix it with an underscore like `_foo`
docs: https://lint.deno.land/rules/no-unused-vars
docs: https://docs.deno.com/lint/rules/no-unused-vars
error[no-unused-vars]: `foo` is never used
@ -66,7 +66,7 @@ error[no-unused-vars]: `foo` is never used
| ^^^
= hint: If this is intentional, prefix it with an underscore like `_foo`
docs: https://lint.deno.land/rules/no-unused-vars
docs: https://docs.deno.com/lint/rules/no-unused-vars
error[no-unused-vars]: `foo` is never used
@ -76,7 +76,7 @@ error[no-unused-vars]: `foo` is never used
| ^^^
= hint: If this is intentional, prefix it with an underscore like `_foo`
docs: https://lint.deno.land/rules/no-unused-vars
docs: https://docs.deno.com/lint/rules/no-unused-vars
error[no-unused-vars]: `foo` is never used
@ -86,7 +86,7 @@ error[no-unused-vars]: `foo` is never used
| ^^^
= hint: If this is intentional, prefix it with an underscore like `_foo`
docs: https://lint.deno.land/rules/no-unused-vars
docs: https://docs.deno.com/lint/rules/no-unused-vars
error[no-unused-vars]: `foo` is never used
@ -96,7 +96,7 @@ error[no-unused-vars]: `foo` is never used
| ^^^
= hint: If this is intentional, prefix it with an underscore like `_foo`
docs: https://lint.deno.land/rules/no-unused-vars
docs: https://docs.deno.com/lint/rules/no-unused-vars
error[no-unused-vars]: `foo` is never used
@ -106,7 +106,7 @@ error[no-unused-vars]: `foo` is never used
| ^^^
= hint: If this is intentional, prefix it with an underscore like `_foo`
docs: https://lint.deno.land/rules/no-unused-vars
docs: https://docs.deno.com/lint/rules/no-unused-vars
[UNORDERED_END]

View file

@ -6,7 +6,7 @@ error[no-unused-vars]: `foo` is never used
| ^^^
= hint: If this is intentional, prefix it with an underscore like `_foo`
docs: https://lint.deno.land/rules/no-unused-vars
docs: https://docs.deno.com/lint/rules/no-unused-vars
error[no-unused-vars]: `foo` is never used
@ -16,7 +16,7 @@ error[no-unused-vars]: `foo` is never used
| ^^^
= hint: If this is intentional, prefix it with an underscore like `_foo`
docs: https://lint.deno.land/rules/no-unused-vars
docs: https://docs.deno.com/lint/rules/no-unused-vars
error[no-unused-vars]: `foo` is never used
@ -26,7 +26,7 @@ error[no-unused-vars]: `foo` is never used
| ^^^
= hint: If this is intentional, prefix it with an underscore like `_foo`
docs: https://lint.deno.land/rules/no-unused-vars
docs: https://docs.deno.com/lint/rules/no-unused-vars
error[no-unused-vars]: `foo` is never used
@ -36,7 +36,7 @@ error[no-unused-vars]: `foo` is never used
| ^^^
= hint: If this is intentional, prefix it with an underscore like `_foo`
docs: https://lint.deno.land/rules/no-unused-vars
docs: https://docs.deno.com/lint/rules/no-unused-vars
error[no-unused-vars]: `foo` is never used
@ -46,7 +46,7 @@ error[no-unused-vars]: `foo` is never used
| ^^^
= hint: If this is intentional, prefix it with an underscore like `_foo`
docs: https://lint.deno.land/rules/no-unused-vars
docs: https://docs.deno.com/lint/rules/no-unused-vars
error[no-unused-vars]: `foo` is never used
@ -56,7 +56,7 @@ error[no-unused-vars]: `foo` is never used
| ^^^
= hint: If this is intentional, prefix it with an underscore like `_foo`
docs: https://lint.deno.land/rules/no-unused-vars
docs: https://docs.deno.com/lint/rules/no-unused-vars
error[no-unused-vars]: `foo` is never used
@ -66,7 +66,7 @@ error[no-unused-vars]: `foo` is never used
| ^^^
= hint: If this is intentional, prefix it with an underscore like `_foo`
docs: https://lint.deno.land/rules/no-unused-vars
docs: https://docs.deno.com/lint/rules/no-unused-vars
error[no-unused-vars]: `foo` is never used
@ -76,7 +76,7 @@ error[no-unused-vars]: `foo` is never used
| ^^^
= hint: If this is intentional, prefix it with an underscore like `_foo`
docs: https://lint.deno.land/rules/no-unused-vars
docs: https://docs.deno.com/lint/rules/no-unused-vars
error[no-unused-vars]: `foo` is never used
@ -86,7 +86,7 @@ error[no-unused-vars]: `foo` is never used
| ^^^
= hint: If this is intentional, prefix it with an underscore like `_foo`
docs: https://lint.deno.land/rules/no-unused-vars
docs: https://docs.deno.com/lint/rules/no-unused-vars
error[no-unused-vars]: `foo` is never used
@ -96,7 +96,7 @@ error[no-unused-vars]: `foo` is never used
| ^^^
= hint: If this is intentional, prefix it with an underscore like `_foo`
docs: https://lint.deno.land/rules/no-unused-vars
docs: https://docs.deno.com/lint/rules/no-unused-vars
error[no-unused-vars]: `foo` is never used
@ -106,7 +106,7 @@ error[no-unused-vars]: `foo` is never used
| ^^^
= hint: If this is intentional, prefix it with an underscore like `_foo`
docs: https://lint.deno.land/rules/no-unused-vars
docs: https://docs.deno.com/lint/rules/no-unused-vars
[UNORDERED_END]

View file

@ -5,7 +5,7 @@ error[no-eval]: `eval` call is not allowed
| ^^^^^^^^
= hint: Remove the use of `eval`
docs: https://lint.deno.land/rules/no-eval
docs: https://docs.deno.com/lint/rules/no-eval
error[no-await-in-loop]: Unexpected `await` inside a loop.
@ -15,7 +15,7 @@ error[no-await-in-loop]: Unexpected `await` inside a loop.
| ^^^^^^^^^^^^^^^^^^^^^^^
= hint: Remove `await` in loop body, store all promises generated and then `await Promise.all(storedPromises)` after the loop
docs: https://lint.deno.land/rules/no-await-in-loop
docs: https://docs.deno.com/lint/rules/no-await-in-loop
error[no-explicit-any]: `any` type is not allowed
@ -25,7 +25,7 @@ error[no-explicit-any]: `any` type is not allowed
| ^^^
= hint: Use a specific type other than `any`
docs: https://lint.deno.land/rules/no-explicit-any
docs: https://docs.deno.com/lint/rules/no-explicit-any
Found 3 problems

View file

@ -5,7 +5,7 @@ error[no-eval]: `eval` call is not allowed
| ^^^^^^^^
= hint: Remove the use of `eval`
docs: https://lint.deno.land/rules/no-eval
docs: https://docs.deno.com/lint/rules/no-eval
error[no-unused-vars]: `unused` is never used
@ -15,7 +15,7 @@ error[no-unused-vars]: `unused` is never used
| ^^^^^^
= hint: If this is intentional, prefix it with an underscore like `_unused`
docs: https://lint.deno.land/rules/no-unused-vars
docs: https://docs.deno.com/lint/rules/no-unused-vars
error[no-explicit-any]: `any` type is not allowed
@ -25,7 +25,7 @@ error[no-explicit-any]: `any` type is not allowed
| ^^^
= hint: Use a specific type other than `any`
docs: https://lint.deno.land/rules/no-explicit-any
docs: https://docs.deno.com/lint/rules/no-explicit-any
error[no-eval]: `eval` call is not allowed
@ -35,7 +35,7 @@ error[no-eval]: `eval` call is not allowed
| ^^^^^^^^
= hint: Remove the use of `eval`
docs: https://lint.deno.land/rules/no-eval
docs: https://docs.deno.com/lint/rules/no-eval
error[no-await-in-loop]: Unexpected `await` inside a loop.
@ -45,7 +45,7 @@ error[no-await-in-loop]: Unexpected `await` inside a loop.
| ^^^^^^^^^^^^^^^^^^^^^^^
= hint: Remove `await` in loop body, store all promises generated and then `await Promise.all(storedPromises)` after the loop
docs: https://lint.deno.land/rules/no-await-in-loop
docs: https://docs.deno.com/lint/rules/no-await-in-loop
error[no-explicit-any]: `any` type is not allowed
@ -55,7 +55,7 @@ error[no-explicit-any]: `any` type is not allowed
| ^^^
= hint: Use a specific type other than `any`
docs: https://lint.deno.land/rules/no-explicit-any
docs: https://docs.deno.com/lint/rules/no-explicit-any
error[no-eval]: `eval` call is not allowed
@ -65,7 +65,7 @@ error[no-eval]: `eval` call is not allowed
| ^^^^^^^^
= hint: Remove the use of `eval`
docs: https://lint.deno.land/rules/no-eval
docs: https://docs.deno.com/lint/rules/no-eval
error[no-unused-vars]: `unused` is never used
@ -75,7 +75,7 @@ error[no-unused-vars]: `unused` is never used
| ^^^^^^
= hint: If this is intentional, prefix it with an underscore like `_unused`
docs: https://lint.deno.land/rules/no-unused-vars
docs: https://docs.deno.com/lint/rules/no-unused-vars
Found 8 problems

View file

@ -2085,3 +2085,20 @@ Deno.test(async function x25519SharedSecret() {
assertEquals(sharedSecret1.byteLength, 16);
assertEquals(new Uint8Array(sharedSecret1), new Uint8Array(sharedSecret2));
});
Deno.test(async function x25519ExportJwk() {
const keyPair = await crypto.subtle.generateKey(
{
name: "X25519",
},
true,
["deriveBits"],
) as CryptoKeyPair;
const jwk = await crypto.subtle.exportKey("jwk", keyPair.privateKey);
assertEquals(jwk.kty, "OKP");
assertEquals(jwk.crv, "X25519");
assert(jwk.d);
assert(jwk.x);
});

View file

@ -845,14 +845,6 @@
"Good parameters: Ed448 bits (jwk, object(crv, d, x, kty), {name: Ed448}, false, [sign])",
"Good parameters: Ed448 bits (pkcs8, buffer(73), {name: Ed448}, false, [sign, sign])",
"Good parameters: Ed448 bits (jwk, object(crv, d, x, kty), {name: Ed448}, false, [sign, sign])",
"Good parameters: X25519 bits (jwk, object(crv, d, x, kty), {name: X25519}, true, [deriveKey])",
"Good parameters with ignored JWK alg: X25519 (jwk, object(crv, d, x, kty), {name: X25519}, true, [deriveKey])",
"Good parameters: X25519 bits (jwk, object(crv, d, x, kty), {name: X25519}, true, [deriveBits, deriveKey])",
"Good parameters with ignored JWK alg: X25519 (jwk, object(crv, d, x, kty), {name: X25519}, true, [deriveBits, deriveKey])",
"Good parameters: X25519 bits (jwk, object(crv, d, x, kty), {name: X25519}, true, [deriveBits])",
"Good parameters with ignored JWK alg: X25519 (jwk, object(crv, d, x, kty), {name: X25519}, true, [deriveBits])",
"Good parameters: X25519 bits (jwk, object(crv, d, x, kty), {name: X25519}, true, [deriveKey, deriveBits, deriveKey, deriveBits])",
"Good parameters with ignored JWK alg: X25519 (jwk, object(crv, d, x, kty), {name: X25519}, true, [deriveKey, deriveBits, deriveKey, deriveBits])",
"Good parameters: X448 bits (pkcs8, buffer(72), {name: X448}, true, [deriveKey])",
"Good parameters: X448 bits (jwk, object(crv, d, x, kty), {name: X448}, true, [deriveKey])",
"Good parameters with ignored JWK alg: X448 (jwk, object(crv, d, x, kty), {name: X448}, true, [deriveKey])",
@ -902,14 +894,6 @@
"Good parameters: Ed448 bits (jwk, object(crv, d, x, kty), {name: Ed448}, false, [sign])",
"Good parameters: Ed448 bits (pkcs8, buffer(73), {name: Ed448}, false, [sign, sign])",
"Good parameters: Ed448 bits (jwk, object(crv, d, x, kty), {name: Ed448}, false, [sign, sign])",
"Good parameters: X25519 bits (jwk, object(crv, d, x, kty), {name: X25519}, true, [deriveKey])",
"Good parameters with ignored JWK alg: X25519 (jwk, object(crv, d, x, kty), {name: X25519}, true, [deriveKey])",
"Good parameters: X25519 bits (jwk, object(crv, d, x, kty), {name: X25519}, true, [deriveBits, deriveKey])",
"Good parameters with ignored JWK alg: X25519 (jwk, object(crv, d, x, kty), {name: X25519}, true, [deriveBits, deriveKey])",
"Good parameters: X25519 bits (jwk, object(crv, d, x, kty), {name: X25519}, true, [deriveBits])",
"Good parameters with ignored JWK alg: X25519 (jwk, object(crv, d, x, kty), {name: X25519}, true, [deriveBits])",
"Good parameters: X25519 bits (jwk, object(crv, d, x, kty), {name: X25519}, true, [deriveKey, deriveBits, deriveKey, deriveBits])",
"Good parameters with ignored JWK alg: X25519 (jwk, object(crv, d, x, kty), {name: X25519}, true, [deriveKey, deriveBits, deriveKey, deriveBits])",
"Good parameters: X448 bits (pkcs8, buffer(72), {name: X448}, true, [deriveKey])",
"Good parameters: X448 bits (jwk, object(crv, d, x, kty), {name: X448}, true, [deriveKey])",
"Good parameters with ignored JWK alg: X448 (jwk, object(crv, d, x, kty), {name: X448}, true, [deriveKey])",