mirror of
https://github.com/denoland/deno.git
synced 2024-11-28 16:20:57 -05:00
refactor: prefix ops w/ crate they are defined in (#19044)
Co-authored-by: Bartek Iwańczuk <biwanczuk@gmail.com>
This commit is contained in:
parent
4e1a15090f
commit
162a0f0dcf
10 changed files with 358 additions and 317 deletions
|
@ -884,7 +884,7 @@ class SubtleCrypto {
|
||||||
// https://briansmith.org/rustdoc/src/ring/ec/curve25519/ed25519/signing.rs.html#260
|
// https://briansmith.org/rustdoc/src/ring/ec/curve25519/ed25519/signing.rs.html#260
|
||||||
const SIGNATURE_LEN = 32 * 2; // ELEM_LEN + SCALAR_LEN
|
const SIGNATURE_LEN = 32 * 2; // ELEM_LEN + SCALAR_LEN
|
||||||
const signature = new Uint8Array(SIGNATURE_LEN);
|
const signature = new Uint8Array(SIGNATURE_LEN);
|
||||||
if (!ops.op_sign_ed25519(keyData, data, signature)) {
|
if (!ops.op_crypto_sign_ed25519(keyData, data, signature)) {
|
||||||
throw new DOMException(
|
throw new DOMException(
|
||||||
"Failed to sign",
|
"Failed to sign",
|
||||||
"OperationError",
|
"OperationError",
|
||||||
|
@ -1363,7 +1363,7 @@ class SubtleCrypto {
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
return ops.op_verify_ed25519(keyData, data, signature);
|
return ops.op_crypto_verify_ed25519(keyData, data, signature);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1997,7 +1997,7 @@ async function generateKey(normalizedAlgorithm, extractable, usages) {
|
||||||
}
|
}
|
||||||
const privateKeyData = new Uint8Array(32);
|
const privateKeyData = new Uint8Array(32);
|
||||||
const publicKeyData = new Uint8Array(32);
|
const publicKeyData = new Uint8Array(32);
|
||||||
ops.op_generate_x25519_keypair(privateKeyData, publicKeyData);
|
ops.op_crypto_generate_x25519_keypair(privateKeyData, publicKeyData);
|
||||||
|
|
||||||
const handle = {};
|
const handle = {};
|
||||||
WeakMapPrototypeSet(KEY_STORE, handle, privateKeyData);
|
WeakMapPrototypeSet(KEY_STORE, handle, privateKeyData);
|
||||||
|
@ -2042,7 +2042,7 @@ async function generateKey(normalizedAlgorithm, extractable, usages) {
|
||||||
const privateKeyData = new Uint8Array(ED25519_SEED_LEN);
|
const privateKeyData = new Uint8Array(ED25519_SEED_LEN);
|
||||||
const publicKeyData = new Uint8Array(ED25519_PUBLIC_KEY_LEN);
|
const publicKeyData = new Uint8Array(ED25519_PUBLIC_KEY_LEN);
|
||||||
if (
|
if (
|
||||||
!ops.op_generate_ed25519_keypair(privateKeyData, publicKeyData)
|
!ops.op_crypto_generate_ed25519_keypair(privateKeyData, publicKeyData)
|
||||||
) {
|
) {
|
||||||
throw new DOMException("Failed to generate key", "OperationError");
|
throw new DOMException("Failed to generate key", "OperationError");
|
||||||
}
|
}
|
||||||
|
@ -2179,7 +2179,7 @@ function importKeyEd25519(
|
||||||
}
|
}
|
||||||
|
|
||||||
const publicKeyData = new Uint8Array(32);
|
const publicKeyData = new Uint8Array(32);
|
||||||
if (!ops.op_import_spki_ed25519(keyData, publicKeyData)) {
|
if (!ops.op_crypto_import_spki_ed25519(keyData, publicKeyData)) {
|
||||||
throw new DOMException("Invalid key data", "DataError");
|
throw new DOMException("Invalid key data", "DataError");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2210,7 +2210,7 @@ function importKeyEd25519(
|
||||||
}
|
}
|
||||||
|
|
||||||
const privateKeyData = new Uint8Array(32);
|
const privateKeyData = new Uint8Array(32);
|
||||||
if (!ops.op_import_pkcs8_ed25519(keyData, privateKeyData)) {
|
if (!ops.op_crypto_import_pkcs8_ed25519(keyData, privateKeyData)) {
|
||||||
throw new DOMException("Invalid key data", "DataError");
|
throw new DOMException("Invalid key data", "DataError");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2397,7 +2397,7 @@ function importKeyX25519(
|
||||||
}
|
}
|
||||||
|
|
||||||
const publicKeyData = new Uint8Array(32);
|
const publicKeyData = new Uint8Array(32);
|
||||||
if (!ops.op_import_spki_x25519(keyData, publicKeyData)) {
|
if (!ops.op_crypto_import_spki_x25519(keyData, publicKeyData)) {
|
||||||
throw new DOMException("Invalid key data", "DataError");
|
throw new DOMException("Invalid key data", "DataError");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2428,7 +2428,7 @@ function importKeyX25519(
|
||||||
}
|
}
|
||||||
|
|
||||||
const privateKeyData = new Uint8Array(32);
|
const privateKeyData = new Uint8Array(32);
|
||||||
if (!ops.op_import_pkcs8_x25519(keyData, privateKeyData)) {
|
if (!ops.op_crypto_import_pkcs8_x25519(keyData, privateKeyData)) {
|
||||||
throw new DOMException("Invalid key data", "DataError");
|
throw new DOMException("Invalid key data", "DataError");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -4055,7 +4055,7 @@ function exportKeyEd25519(format, key, innerKey) {
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
const spkiDer = ops.op_export_spki_ed25519(innerKey);
|
const spkiDer = ops.op_crypto_export_spki_ed25519(innerKey);
|
||||||
return TypedArrayPrototypeGetBuffer(spkiDer);
|
return TypedArrayPrototypeGetBuffer(spkiDer);
|
||||||
}
|
}
|
||||||
case "pkcs8": {
|
case "pkcs8": {
|
||||||
|
@ -4067,7 +4067,7 @@ function exportKeyEd25519(format, key, innerKey) {
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
const pkcs8Der = ops.op_export_pkcs8_ed25519(
|
const pkcs8Der = ops.op_crypto_export_pkcs8_ed25519(
|
||||||
new Uint8Array([0x04, 0x22, ...new SafeArrayIterator(innerKey)]),
|
new Uint8Array([0x04, 0x22, ...new SafeArrayIterator(innerKey)]),
|
||||||
);
|
);
|
||||||
pkcs8Der[15] = 0x20;
|
pkcs8Der[15] = 0x20;
|
||||||
|
@ -4075,7 +4075,7 @@ function exportKeyEd25519(format, key, innerKey) {
|
||||||
}
|
}
|
||||||
case "jwk": {
|
case "jwk": {
|
||||||
const x = key[_type] === "private"
|
const x = key[_type] === "private"
|
||||||
? ops.op_jwk_x_ed25519(innerKey)
|
? ops.op_crypto_jwk_x_ed25519(innerKey)
|
||||||
: ops.op_crypto_base64url_encode(innerKey);
|
: ops.op_crypto_base64url_encode(innerKey);
|
||||||
const jwk = {
|
const jwk = {
|
||||||
kty: "OKP",
|
kty: "OKP",
|
||||||
|
@ -4118,7 +4118,7 @@ function exportKeyX25519(format, key, innerKey) {
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
const spkiDer = ops.op_export_spki_x25519(innerKey);
|
const spkiDer = ops.op_crypto_export_spki_x25519(innerKey);
|
||||||
return TypedArrayPrototypeGetBuffer(spkiDer);
|
return TypedArrayPrototypeGetBuffer(spkiDer);
|
||||||
}
|
}
|
||||||
case "pkcs8": {
|
case "pkcs8": {
|
||||||
|
@ -4130,7 +4130,7 @@ function exportKeyX25519(format, key, innerKey) {
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
const pkcs8Der = ops.op_export_pkcs8_x25519(
|
const pkcs8Der = ops.op_crypto_export_pkcs8_x25519(
|
||||||
new Uint8Array([0x04, 0x22, ...new SafeArrayIterator(innerKey)]),
|
new Uint8Array([0x04, 0x22, ...new SafeArrayIterator(innerKey)]),
|
||||||
);
|
);
|
||||||
pkcs8Der[15] = 0x20;
|
pkcs8Der[15] = 0x20;
|
||||||
|
@ -4476,7 +4476,7 @@ async function deriveBits(normalizedAlgorithm, baseKey, length) {
|
||||||
const u = WeakMapPrototypeGet(KEY_STORE, uHandle);
|
const u = WeakMapPrototypeGet(KEY_STORE, uHandle);
|
||||||
|
|
||||||
const secret = new Uint8Array(32);
|
const secret = new Uint8Array(32);
|
||||||
const isIdentity = ops.op_derive_bits_x25519(k, u, secret);
|
const isIdentity = ops.op_crypto_derive_bits_x25519(k, u, secret);
|
||||||
|
|
||||||
// 6.
|
// 6.
|
||||||
if (isIdentity) {
|
if (isIdentity) {
|
||||||
|
|
|
@ -12,7 +12,10 @@ use spki::der::Decode;
|
||||||
use spki::der::Encode;
|
use spki::der::Encode;
|
||||||
|
|
||||||
#[op(fast)]
|
#[op(fast)]
|
||||||
pub fn op_generate_ed25519_keypair(pkey: &mut [u8], pubkey: &mut [u8]) -> bool {
|
pub fn op_crypto_generate_ed25519_keypair(
|
||||||
|
pkey: &mut [u8],
|
||||||
|
pubkey: &mut [u8],
|
||||||
|
) -> bool {
|
||||||
let mut rng = OsRng;
|
let mut rng = OsRng;
|
||||||
rng.fill_bytes(pkey);
|
rng.fill_bytes(pkey);
|
||||||
|
|
||||||
|
@ -25,7 +28,11 @@ pub fn op_generate_ed25519_keypair(pkey: &mut [u8], pubkey: &mut [u8]) -> bool {
|
||||||
}
|
}
|
||||||
|
|
||||||
#[op(fast)]
|
#[op(fast)]
|
||||||
pub fn op_sign_ed25519(key: &[u8], data: &[u8], signature: &mut [u8]) -> bool {
|
pub fn op_crypto_sign_ed25519(
|
||||||
|
key: &[u8],
|
||||||
|
data: &[u8],
|
||||||
|
signature: &mut [u8],
|
||||||
|
) -> bool {
|
||||||
let pair = match Ed25519KeyPair::from_seed_unchecked(key) {
|
let pair = match Ed25519KeyPair::from_seed_unchecked(key) {
|
||||||
Ok(p) => p,
|
Ok(p) => p,
|
||||||
Err(_) => return false,
|
Err(_) => return false,
|
||||||
|
@ -35,7 +42,11 @@ pub fn op_sign_ed25519(key: &[u8], data: &[u8], signature: &mut [u8]) -> bool {
|
||||||
}
|
}
|
||||||
|
|
||||||
#[op(fast)]
|
#[op(fast)]
|
||||||
pub fn op_verify_ed25519(pubkey: &[u8], data: &[u8], signature: &[u8]) -> bool {
|
pub fn op_crypto_verify_ed25519(
|
||||||
|
pubkey: &[u8],
|
||||||
|
data: &[u8],
|
||||||
|
signature: &[u8],
|
||||||
|
) -> bool {
|
||||||
ring::signature::UnparsedPublicKey::new(&ring::signature::ED25519, pubkey)
|
ring::signature::UnparsedPublicKey::new(&ring::signature::ED25519, pubkey)
|
||||||
.verify(data, signature)
|
.verify(data, signature)
|
||||||
.is_ok()
|
.is_ok()
|
||||||
|
@ -46,7 +57,7 @@ pub const ED25519_OID: const_oid::ObjectIdentifier =
|
||||||
const_oid::ObjectIdentifier::new_unwrap("1.3.101.112");
|
const_oid::ObjectIdentifier::new_unwrap("1.3.101.112");
|
||||||
|
|
||||||
#[op(fast)]
|
#[op(fast)]
|
||||||
pub fn op_import_spki_ed25519(key_data: &[u8], out: &mut [u8]) -> bool {
|
pub fn op_crypto_import_spki_ed25519(key_data: &[u8], out: &mut [u8]) -> bool {
|
||||||
// 2-3.
|
// 2-3.
|
||||||
let pk_info = match spki::SubjectPublicKeyInfo::from_der(key_data) {
|
let pk_info = match spki::SubjectPublicKeyInfo::from_der(key_data) {
|
||||||
Ok(pk_info) => pk_info,
|
Ok(pk_info) => pk_info,
|
||||||
|
@ -66,7 +77,7 @@ pub fn op_import_spki_ed25519(key_data: &[u8], out: &mut [u8]) -> bool {
|
||||||
}
|
}
|
||||||
|
|
||||||
#[op(fast)]
|
#[op(fast)]
|
||||||
pub fn op_import_pkcs8_ed25519(key_data: &[u8], out: &mut [u8]) -> bool {
|
pub fn op_crypto_import_pkcs8_ed25519(key_data: &[u8], out: &mut [u8]) -> bool {
|
||||||
// 2-3.
|
// 2-3.
|
||||||
// This should probably use OneAsymmetricKey instead
|
// This should probably use OneAsymmetricKey instead
|
||||||
let pk_info = match PrivateKeyInfo::from_der(key_data) {
|
let pk_info = match PrivateKeyInfo::from_der(key_data) {
|
||||||
|
@ -92,7 +103,9 @@ pub fn op_import_pkcs8_ed25519(key_data: &[u8], out: &mut [u8]) -> bool {
|
||||||
}
|
}
|
||||||
|
|
||||||
#[op]
|
#[op]
|
||||||
pub fn op_export_spki_ed25519(pubkey: &[u8]) -> Result<ZeroCopyBuf, AnyError> {
|
pub fn op_crypto_export_spki_ed25519(
|
||||||
|
pubkey: &[u8],
|
||||||
|
) -> Result<ZeroCopyBuf, AnyError> {
|
||||||
let key_info = spki::SubjectPublicKeyInfo {
|
let key_info = spki::SubjectPublicKeyInfo {
|
||||||
algorithm: spki::AlgorithmIdentifier {
|
algorithm: spki::AlgorithmIdentifier {
|
||||||
// id-Ed25519
|
// id-Ed25519
|
||||||
|
@ -105,7 +118,9 @@ pub fn op_export_spki_ed25519(pubkey: &[u8]) -> Result<ZeroCopyBuf, AnyError> {
|
||||||
}
|
}
|
||||||
|
|
||||||
#[op]
|
#[op]
|
||||||
pub fn op_export_pkcs8_ed25519(pkey: &[u8]) -> Result<ZeroCopyBuf, AnyError> {
|
pub fn op_crypto_export_pkcs8_ed25519(
|
||||||
|
pkey: &[u8],
|
||||||
|
) -> Result<ZeroCopyBuf, AnyError> {
|
||||||
// This should probably use OneAsymmetricKey instead
|
// This should probably use OneAsymmetricKey instead
|
||||||
let pk_info = rsa::pkcs8::PrivateKeyInfo {
|
let pk_info = rsa::pkcs8::PrivateKeyInfo {
|
||||||
public_key: None,
|
public_key: None,
|
||||||
|
@ -123,7 +138,7 @@ pub fn op_export_pkcs8_ed25519(pkey: &[u8]) -> Result<ZeroCopyBuf, AnyError> {
|
||||||
// 'x' from Section 2 of RFC 8037
|
// 'x' from Section 2 of RFC 8037
|
||||||
// https://www.rfc-editor.org/rfc/rfc8037#section-2
|
// https://www.rfc-editor.org/rfc/rfc8037#section-2
|
||||||
#[op]
|
#[op]
|
||||||
pub fn op_jwk_x_ed25519(pkey: &[u8]) -> Result<String, AnyError> {
|
pub fn op_crypto_jwk_x_ed25519(pkey: &[u8]) -> Result<String, AnyError> {
|
||||||
let pair = Ed25519KeyPair::from_seed_unchecked(pkey)?;
|
let pair = Ed25519KeyPair::from_seed_unchecked(pkey)?;
|
||||||
Ok(base64::encode_config(
|
Ok(base64::encode_config(
|
||||||
pair.public_key().as_ref(),
|
pair.public_key().as_ref(),
|
||||||
|
|
|
@ -88,20 +88,20 @@ deno_core::extension!(deno_crypto,
|
||||||
op_crypto_unwrap_key,
|
op_crypto_unwrap_key,
|
||||||
op_crypto_base64url_decode,
|
op_crypto_base64url_decode,
|
||||||
op_crypto_base64url_encode,
|
op_crypto_base64url_encode,
|
||||||
x25519::op_generate_x25519_keypair,
|
x25519::op_crypto_generate_x25519_keypair,
|
||||||
x25519::op_derive_bits_x25519,
|
x25519::op_crypto_derive_bits_x25519,
|
||||||
x25519::op_import_spki_x25519,
|
x25519::op_crypto_import_spki_x25519,
|
||||||
x25519::op_import_pkcs8_x25519,
|
x25519::op_crypto_import_pkcs8_x25519,
|
||||||
ed25519::op_generate_ed25519_keypair,
|
ed25519::op_crypto_generate_ed25519_keypair,
|
||||||
ed25519::op_import_spki_ed25519,
|
ed25519::op_crypto_import_spki_ed25519,
|
||||||
ed25519::op_import_pkcs8_ed25519,
|
ed25519::op_crypto_import_pkcs8_ed25519,
|
||||||
ed25519::op_sign_ed25519,
|
ed25519::op_crypto_sign_ed25519,
|
||||||
ed25519::op_verify_ed25519,
|
ed25519::op_crypto_verify_ed25519,
|
||||||
ed25519::op_export_spki_ed25519,
|
ed25519::op_crypto_export_spki_ed25519,
|
||||||
ed25519::op_export_pkcs8_ed25519,
|
ed25519::op_crypto_export_pkcs8_ed25519,
|
||||||
ed25519::op_jwk_x_ed25519,
|
ed25519::op_crypto_jwk_x_ed25519,
|
||||||
x25519::op_export_spki_x25519,
|
x25519::op_crypto_export_spki_x25519,
|
||||||
x25519::op_export_pkcs8_x25519,
|
x25519::op_crypto_export_pkcs8_x25519,
|
||||||
],
|
],
|
||||||
esm = [ "00_crypto.js", "01_webidl.js" ],
|
esm = [ "00_crypto.js", "01_webidl.js" ],
|
||||||
options = {
|
options = {
|
||||||
|
|
|
@ -12,7 +12,7 @@ use spki::der::Decode;
|
||||||
use spki::der::Encode;
|
use spki::der::Encode;
|
||||||
|
|
||||||
#[op(fast)]
|
#[op(fast)]
|
||||||
pub fn op_generate_x25519_keypair(pkey: &mut [u8], pubkey: &mut [u8]) {
|
pub fn op_crypto_generate_x25519_keypair(pkey: &mut [u8], pubkey: &mut [u8]) {
|
||||||
// u-coordinate of the base point.
|
// u-coordinate of the base point.
|
||||||
const X25519_BASEPOINT_BYTES: [u8; 32] = [
|
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,
|
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,
|
||||||
|
@ -32,7 +32,11 @@ pub fn op_generate_x25519_keypair(pkey: &mut [u8], pubkey: &mut [u8]) {
|
||||||
const MONTGOMERY_IDENTITY: MontgomeryPoint = MontgomeryPoint([0; 32]);
|
const MONTGOMERY_IDENTITY: MontgomeryPoint = MontgomeryPoint([0; 32]);
|
||||||
|
|
||||||
#[op(fast)]
|
#[op(fast)]
|
||||||
pub fn op_derive_bits_x25519(k: &[u8], u: &[u8], secret: &mut [u8]) -> bool {
|
pub fn op_crypto_derive_bits_x25519(
|
||||||
|
k: &[u8],
|
||||||
|
u: &[u8],
|
||||||
|
secret: &mut [u8],
|
||||||
|
) -> bool {
|
||||||
let k: [u8; 32] = k.try_into().expect("Expected byteLength 32");
|
let k: [u8; 32] = k.try_into().expect("Expected byteLength 32");
|
||||||
let u: [u8; 32] = u.try_into().expect("Expected byteLength 32");
|
let u: [u8; 32] = u.try_into().expect("Expected byteLength 32");
|
||||||
let sh_sec = x25519_dalek::x25519(k, u);
|
let sh_sec = x25519_dalek::x25519(k, u);
|
||||||
|
@ -49,7 +53,7 @@ pub const X25519_OID: const_oid::ObjectIdentifier =
|
||||||
const_oid::ObjectIdentifier::new_unwrap("1.3.101.110");
|
const_oid::ObjectIdentifier::new_unwrap("1.3.101.110");
|
||||||
|
|
||||||
#[op(fast)]
|
#[op(fast)]
|
||||||
pub fn op_import_spki_x25519(key_data: &[u8], out: &mut [u8]) -> bool {
|
pub fn op_crypto_import_spki_x25519(key_data: &[u8], out: &mut [u8]) -> bool {
|
||||||
// 2-3.
|
// 2-3.
|
||||||
let pk_info = match spki::SubjectPublicKeyInfo::from_der(key_data) {
|
let pk_info = match spki::SubjectPublicKeyInfo::from_der(key_data) {
|
||||||
Ok(pk_info) => pk_info,
|
Ok(pk_info) => pk_info,
|
||||||
|
@ -69,7 +73,7 @@ pub fn op_import_spki_x25519(key_data: &[u8], out: &mut [u8]) -> bool {
|
||||||
}
|
}
|
||||||
|
|
||||||
#[op(fast)]
|
#[op(fast)]
|
||||||
pub fn op_import_pkcs8_x25519(key_data: &[u8], out: &mut [u8]) -> bool {
|
pub fn op_crypto_import_pkcs8_x25519(key_data: &[u8], out: &mut [u8]) -> bool {
|
||||||
// 2-3.
|
// 2-3.
|
||||||
// This should probably use OneAsymmetricKey instead
|
// This should probably use OneAsymmetricKey instead
|
||||||
let pk_info = match PrivateKeyInfo::from_der(key_data) {
|
let pk_info = match PrivateKeyInfo::from_der(key_data) {
|
||||||
|
@ -95,7 +99,9 @@ pub fn op_import_pkcs8_x25519(key_data: &[u8], out: &mut [u8]) -> bool {
|
||||||
}
|
}
|
||||||
|
|
||||||
#[op]
|
#[op]
|
||||||
pub fn op_export_spki_x25519(pubkey: &[u8]) -> Result<ZeroCopyBuf, AnyError> {
|
pub fn op_crypto_export_spki_x25519(
|
||||||
|
pubkey: &[u8],
|
||||||
|
) -> Result<ZeroCopyBuf, AnyError> {
|
||||||
let key_info = spki::SubjectPublicKeyInfo {
|
let key_info = spki::SubjectPublicKeyInfo {
|
||||||
algorithm: spki::AlgorithmIdentifier {
|
algorithm: spki::AlgorithmIdentifier {
|
||||||
// id-X25519
|
// id-X25519
|
||||||
|
@ -108,7 +114,9 @@ pub fn op_export_spki_x25519(pubkey: &[u8]) -> Result<ZeroCopyBuf, AnyError> {
|
||||||
}
|
}
|
||||||
|
|
||||||
#[op]
|
#[op]
|
||||||
pub fn op_export_pkcs8_x25519(pkey: &[u8]) -> Result<ZeroCopyBuf, AnyError> {
|
pub fn op_crypto_export_pkcs8_x25519(
|
||||||
|
pkey: &[u8],
|
||||||
|
) -> Result<ZeroCopyBuf, AnyError> {
|
||||||
// This should probably use OneAsymmetricKey instead
|
// This should probably use OneAsymmetricKey instead
|
||||||
let pk_info = rsa::pkcs8::PrivateKeyInfo {
|
let pk_info = rsa::pkcs8::PrivateKeyInfo {
|
||||||
public_key: None,
|
public_key: None,
|
||||||
|
|
146
ext/fs/30_fs.js
146
ext/fs/30_fs.js
|
@ -5,17 +5,17 @@
|
||||||
const core = globalThis.Deno.core;
|
const core = globalThis.Deno.core;
|
||||||
const ops = core.ops;
|
const ops = core.ops;
|
||||||
const {
|
const {
|
||||||
op_chmod_async,
|
op_fs_chmod_async,
|
||||||
op_ftruncate_async,
|
op_fs_ftruncate_async,
|
||||||
op_truncate_async,
|
op_fs_truncate_async,
|
||||||
op_link_async,
|
op_fs_link_async,
|
||||||
op_flock_async,
|
op_fs_flock_async,
|
||||||
} = Deno.core.generateAsyncOpHandler(
|
} = Deno.core.generateAsyncOpHandler(
|
||||||
"op_chmod_async",
|
"op_fs_chmod_async",
|
||||||
"op_ftruncate_async",
|
"op_fs_ftruncate_async",
|
||||||
"op_truncate_async",
|
"op_fs_truncate_async",
|
||||||
"op_link_async",
|
"op_fs_link_async",
|
||||||
"op_flock_async",
|
"op_fs_flock_async",
|
||||||
);
|
);
|
||||||
const primordials = globalThis.__bootstrap.primordials;
|
const primordials = globalThis.__bootstrap.primordials;
|
||||||
const {
|
const {
|
||||||
|
@ -45,11 +45,11 @@ import {
|
||||||
import { pathFromURL } from "ext:deno_web/00_infra.js";
|
import { pathFromURL } from "ext:deno_web/00_infra.js";
|
||||||
|
|
||||||
function chmodSync(path, mode) {
|
function chmodSync(path, mode) {
|
||||||
ops.op_chmod_sync(pathFromURL(path), mode);
|
ops.op_fs_chmod_sync(pathFromURL(path), mode);
|
||||||
}
|
}
|
||||||
|
|
||||||
async function chmod(path, mode) {
|
async function chmod(path, mode) {
|
||||||
await op_chmod_async(pathFromURL(path), mode);
|
await op_fs_chmod_async(pathFromURL(path), mode);
|
||||||
}
|
}
|
||||||
|
|
||||||
function chownSync(
|
function chownSync(
|
||||||
|
@ -57,7 +57,7 @@ function chownSync(
|
||||||
uid,
|
uid,
|
||||||
gid,
|
gid,
|
||||||
) {
|
) {
|
||||||
ops.op_chown_sync(pathFromURL(path), uid, gid);
|
ops.op_fs_chown_sync(pathFromURL(path), uid, gid);
|
||||||
}
|
}
|
||||||
|
|
||||||
async function chown(
|
async function chown(
|
||||||
|
@ -66,7 +66,7 @@ async function chown(
|
||||||
gid,
|
gid,
|
||||||
) {
|
) {
|
||||||
await core.opAsync(
|
await core.opAsync(
|
||||||
"op_chown_async",
|
"op_fs_chown_async",
|
||||||
pathFromURL(path),
|
pathFromURL(path),
|
||||||
uid,
|
uid,
|
||||||
gid,
|
gid,
|
||||||
|
@ -77,7 +77,7 @@ function copyFileSync(
|
||||||
fromPath,
|
fromPath,
|
||||||
toPath,
|
toPath,
|
||||||
) {
|
) {
|
||||||
ops.op_copy_file_sync(
|
ops.op_fs_copy_file_sync(
|
||||||
pathFromURL(fromPath),
|
pathFromURL(fromPath),
|
||||||
pathFromURL(toPath),
|
pathFromURL(toPath),
|
||||||
);
|
);
|
||||||
|
@ -88,27 +88,31 @@ async function copyFile(
|
||||||
toPath,
|
toPath,
|
||||||
) {
|
) {
|
||||||
await core.opAsync(
|
await core.opAsync(
|
||||||
"op_copy_file_async",
|
"op_fs_copy_file_async",
|
||||||
pathFromURL(fromPath),
|
pathFromURL(fromPath),
|
||||||
pathFromURL(toPath),
|
pathFromURL(toPath),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
function cwd() {
|
function cwd() {
|
||||||
return ops.op_cwd();
|
return ops.op_fs_cwd();
|
||||||
}
|
}
|
||||||
|
|
||||||
function chdir(directory) {
|
function chdir(directory) {
|
||||||
ops.op_chdir(pathFromURL(directory));
|
ops.op_fs_chdir(pathFromURL(directory));
|
||||||
}
|
}
|
||||||
|
|
||||||
function makeTempDirSync(options = {}) {
|
function makeTempDirSync(options = {}) {
|
||||||
return ops.op_make_temp_dir_sync(options.dir, options.prefix, options.suffix);
|
return ops.op_fs_make_temp_dir_sync(
|
||||||
|
options.dir,
|
||||||
|
options.prefix,
|
||||||
|
options.suffix,
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
function makeTempDir(options = {}) {
|
function makeTempDir(options = {}) {
|
||||||
return core.opAsync(
|
return core.opAsync(
|
||||||
"op_make_temp_dir_async",
|
"op_fs_make_temp_dir_async",
|
||||||
options.dir,
|
options.dir,
|
||||||
options.prefix,
|
options.prefix,
|
||||||
options.suffix,
|
options.suffix,
|
||||||
|
@ -116,7 +120,7 @@ function makeTempDir(options = {}) {
|
||||||
}
|
}
|
||||||
|
|
||||||
function makeTempFileSync(options = {}) {
|
function makeTempFileSync(options = {}) {
|
||||||
return ops.op_make_temp_file_sync(
|
return ops.op_fs_make_temp_file_sync(
|
||||||
options.dir,
|
options.dir,
|
||||||
options.prefix,
|
options.prefix,
|
||||||
options.suffix,
|
options.suffix,
|
||||||
|
@ -125,7 +129,7 @@ function makeTempFileSync(options = {}) {
|
||||||
|
|
||||||
function makeTempFile(options = {}) {
|
function makeTempFile(options = {}) {
|
||||||
return core.opAsync(
|
return core.opAsync(
|
||||||
"op_make_temp_file_async",
|
"op_fs_make_temp_file_async",
|
||||||
options.dir,
|
options.dir,
|
||||||
options.prefix,
|
options.prefix,
|
||||||
options.suffix,
|
options.suffix,
|
||||||
|
@ -133,7 +137,7 @@ function makeTempFile(options = {}) {
|
||||||
}
|
}
|
||||||
|
|
||||||
function mkdirSync(path, options) {
|
function mkdirSync(path, options) {
|
||||||
ops.op_mkdir_sync(
|
ops.op_fs_mkdir_sync(
|
||||||
pathFromURL(path),
|
pathFromURL(path),
|
||||||
options?.recursive ?? false,
|
options?.recursive ?? false,
|
||||||
options?.mode,
|
options?.mode,
|
||||||
|
@ -142,7 +146,7 @@ function mkdirSync(path, options) {
|
||||||
|
|
||||||
async function mkdir(path, options) {
|
async function mkdir(path, options) {
|
||||||
await core.opAsync(
|
await core.opAsync(
|
||||||
"op_mkdir_async",
|
"op_fs_mkdir_async",
|
||||||
pathFromURL(path),
|
pathFromURL(path),
|
||||||
options?.recursive ?? false,
|
options?.recursive ?? false,
|
||||||
options?.mode,
|
options?.mode,
|
||||||
|
@ -150,14 +154,14 @@ async function mkdir(path, options) {
|
||||||
}
|
}
|
||||||
|
|
||||||
function readDirSync(path) {
|
function readDirSync(path) {
|
||||||
return ops.op_read_dir_sync(pathFromURL(path))[
|
return ops.op_fs_read_dir_sync(pathFromURL(path))[
|
||||||
SymbolIterator
|
SymbolIterator
|
||||||
]();
|
]();
|
||||||
}
|
}
|
||||||
|
|
||||||
function readDir(path) {
|
function readDir(path) {
|
||||||
const array = core.opAsync(
|
const array = core.opAsync(
|
||||||
"op_read_dir_async",
|
"op_fs_read_dir_async",
|
||||||
pathFromURL(path),
|
pathFromURL(path),
|
||||||
);
|
);
|
||||||
return {
|
return {
|
||||||
|
@ -171,26 +175,26 @@ function readDir(path) {
|
||||||
}
|
}
|
||||||
|
|
||||||
function readLinkSync(path) {
|
function readLinkSync(path) {
|
||||||
return ops.op_read_link_sync(pathFromURL(path));
|
return ops.op_fs_read_link_sync(pathFromURL(path));
|
||||||
}
|
}
|
||||||
|
|
||||||
function readLink(path) {
|
function readLink(path) {
|
||||||
return core.opAsync("op_read_link_async", pathFromURL(path));
|
return core.opAsync("op_fs_read_link_async", pathFromURL(path));
|
||||||
}
|
}
|
||||||
|
|
||||||
function realPathSync(path) {
|
function realPathSync(path) {
|
||||||
return ops.op_realpath_sync(pathFromURL(path));
|
return ops.op_fs_realpath_sync(pathFromURL(path));
|
||||||
}
|
}
|
||||||
|
|
||||||
function realPath(path) {
|
function realPath(path) {
|
||||||
return core.opAsync("op_realpath_async", pathFromURL(path));
|
return core.opAsync("op_fs_realpath_async", pathFromURL(path));
|
||||||
}
|
}
|
||||||
|
|
||||||
function removeSync(
|
function removeSync(
|
||||||
path,
|
path,
|
||||||
options = {},
|
options = {},
|
||||||
) {
|
) {
|
||||||
ops.op_remove_sync(
|
ops.op_fs_remove_sync(
|
||||||
pathFromURL(path),
|
pathFromURL(path),
|
||||||
!!options.recursive,
|
!!options.recursive,
|
||||||
);
|
);
|
||||||
|
@ -201,14 +205,14 @@ async function remove(
|
||||||
options = {},
|
options = {},
|
||||||
) {
|
) {
|
||||||
await core.opAsync(
|
await core.opAsync(
|
||||||
"op_remove_async",
|
"op_fs_remove_async",
|
||||||
pathFromURL(path),
|
pathFromURL(path),
|
||||||
!!options.recursive,
|
!!options.recursive,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
function renameSync(oldpath, newpath) {
|
function renameSync(oldpath, newpath) {
|
||||||
ops.op_rename_sync(
|
ops.op_fs_rename_sync(
|
||||||
pathFromURL(oldpath),
|
pathFromURL(oldpath),
|
||||||
pathFromURL(newpath),
|
pathFromURL(newpath),
|
||||||
);
|
);
|
||||||
|
@ -216,7 +220,7 @@ function renameSync(oldpath, newpath) {
|
||||||
|
|
||||||
async function rename(oldpath, newpath) {
|
async function rename(oldpath, newpath) {
|
||||||
await core.opAsync(
|
await core.opAsync(
|
||||||
"op_rename_async",
|
"op_fs_rename_async",
|
||||||
pathFromURL(oldpath),
|
pathFromURL(oldpath),
|
||||||
pathFromURL(newpath),
|
pathFromURL(newpath),
|
||||||
);
|
);
|
||||||
|
@ -322,31 +326,31 @@ function parseFileInfo(response) {
|
||||||
}
|
}
|
||||||
|
|
||||||
function fstatSync(rid) {
|
function fstatSync(rid) {
|
||||||
ops.op_fstat_sync(rid, statBuf);
|
ops.op_fs_fstat_sync(rid, statBuf);
|
||||||
return statStruct(statBuf);
|
return statStruct(statBuf);
|
||||||
}
|
}
|
||||||
|
|
||||||
async function fstat(rid) {
|
async function fstat(rid) {
|
||||||
return parseFileInfo(await core.opAsync("op_fstat_async", rid));
|
return parseFileInfo(await core.opAsync("op_fs_fstat_async", rid));
|
||||||
}
|
}
|
||||||
|
|
||||||
async function lstat(path) {
|
async function lstat(path) {
|
||||||
const res = await core.opAsync("op_lstat_async", pathFromURL(path));
|
const res = await core.opAsync("op_fs_lstat_async", pathFromURL(path));
|
||||||
return parseFileInfo(res);
|
return parseFileInfo(res);
|
||||||
}
|
}
|
||||||
|
|
||||||
function lstatSync(path) {
|
function lstatSync(path) {
|
||||||
ops.op_lstat_sync(pathFromURL(path), statBuf);
|
ops.op_fs_lstat_sync(pathFromURL(path), statBuf);
|
||||||
return statStruct(statBuf);
|
return statStruct(statBuf);
|
||||||
}
|
}
|
||||||
|
|
||||||
async function stat(path) {
|
async function stat(path) {
|
||||||
const res = await core.opAsync("op_stat_async", pathFromURL(path));
|
const res = await core.opAsync("op_fs_stat_async", pathFromURL(path));
|
||||||
return parseFileInfo(res);
|
return parseFileInfo(res);
|
||||||
}
|
}
|
||||||
|
|
||||||
function statSync(path) {
|
function statSync(path) {
|
||||||
ops.op_stat_sync(pathFromURL(path), statBuf);
|
ops.op_fs_stat_sync(pathFromURL(path), statBuf);
|
||||||
return statStruct(statBuf);
|
return statStruct(statBuf);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -358,31 +362,31 @@ function coerceLen(len) {
|
||||||
}
|
}
|
||||||
|
|
||||||
function ftruncateSync(rid, len) {
|
function ftruncateSync(rid, len) {
|
||||||
ops.op_ftruncate_sync(rid, coerceLen(len));
|
ops.op_fs_ftruncate_sync(rid, coerceLen(len));
|
||||||
}
|
}
|
||||||
|
|
||||||
async function ftruncate(rid, len) {
|
async function ftruncate(rid, len) {
|
||||||
await op_ftruncate_async(rid, coerceLen(len));
|
await op_fs_ftruncate_async(rid, coerceLen(len));
|
||||||
}
|
}
|
||||||
|
|
||||||
function truncateSync(path, len) {
|
function truncateSync(path, len) {
|
||||||
ops.op_truncate_sync(path, coerceLen(len));
|
ops.op_fs_truncate_sync(path, coerceLen(len));
|
||||||
}
|
}
|
||||||
|
|
||||||
async function truncate(path, len) {
|
async function truncate(path, len) {
|
||||||
await op_truncate_async(path, coerceLen(len));
|
await op_fs_truncate_async(path, coerceLen(len));
|
||||||
}
|
}
|
||||||
|
|
||||||
function umask(mask) {
|
function umask(mask) {
|
||||||
return ops.op_umask(mask);
|
return ops.op_fs_umask(mask);
|
||||||
}
|
}
|
||||||
|
|
||||||
function linkSync(oldpath, newpath) {
|
function linkSync(oldpath, newpath) {
|
||||||
ops.op_link_sync(oldpath, newpath);
|
ops.op_fs_link_sync(oldpath, newpath);
|
||||||
}
|
}
|
||||||
|
|
||||||
async function link(oldpath, newpath) {
|
async function link(oldpath, newpath) {
|
||||||
await op_link_async(oldpath, newpath);
|
await op_fs_link_async(oldpath, newpath);
|
||||||
}
|
}
|
||||||
|
|
||||||
function toUnixTimeFromEpoch(value) {
|
function toUnixTimeFromEpoch(value) {
|
||||||
|
@ -413,7 +417,7 @@ function futimeSync(
|
||||||
) {
|
) {
|
||||||
const { 0: atimeSec, 1: atimeNsec } = toUnixTimeFromEpoch(atime);
|
const { 0: atimeSec, 1: atimeNsec } = toUnixTimeFromEpoch(atime);
|
||||||
const { 0: mtimeSec, 1: mtimeNsec } = toUnixTimeFromEpoch(mtime);
|
const { 0: mtimeSec, 1: mtimeNsec } = toUnixTimeFromEpoch(mtime);
|
||||||
ops.op_futime_sync(rid, atimeSec, atimeNsec, mtimeSec, mtimeNsec);
|
ops.op_fs_futime_sync(rid, atimeSec, atimeNsec, mtimeSec, mtimeNsec);
|
||||||
}
|
}
|
||||||
|
|
||||||
async function futime(
|
async function futime(
|
||||||
|
@ -424,7 +428,7 @@ async function futime(
|
||||||
const { 0: atimeSec, 1: atimeNsec } = toUnixTimeFromEpoch(atime);
|
const { 0: atimeSec, 1: atimeNsec } = toUnixTimeFromEpoch(atime);
|
||||||
const { 0: mtimeSec, 1: mtimeNsec } = toUnixTimeFromEpoch(mtime);
|
const { 0: mtimeSec, 1: mtimeNsec } = toUnixTimeFromEpoch(mtime);
|
||||||
await core.opAsync(
|
await core.opAsync(
|
||||||
"op_futime_async",
|
"op_fs_futime_async",
|
||||||
rid,
|
rid,
|
||||||
atimeSec,
|
atimeSec,
|
||||||
atimeNsec,
|
atimeNsec,
|
||||||
|
@ -440,7 +444,7 @@ function utimeSync(
|
||||||
) {
|
) {
|
||||||
const { 0: atimeSec, 1: atimeNsec } = toUnixTimeFromEpoch(atime);
|
const { 0: atimeSec, 1: atimeNsec } = toUnixTimeFromEpoch(atime);
|
||||||
const { 0: mtimeSec, 1: mtimeNsec } = toUnixTimeFromEpoch(mtime);
|
const { 0: mtimeSec, 1: mtimeNsec } = toUnixTimeFromEpoch(mtime);
|
||||||
ops.op_utime_sync(
|
ops.op_fs_utime_sync(
|
||||||
pathFromURL(path),
|
pathFromURL(path),
|
||||||
atimeSec,
|
atimeSec,
|
||||||
atimeNsec,
|
atimeNsec,
|
||||||
|
@ -457,7 +461,7 @@ async function utime(
|
||||||
const { 0: atimeSec, 1: atimeNsec } = toUnixTimeFromEpoch(atime);
|
const { 0: atimeSec, 1: atimeNsec } = toUnixTimeFromEpoch(atime);
|
||||||
const { 0: mtimeSec, 1: mtimeNsec } = toUnixTimeFromEpoch(mtime);
|
const { 0: mtimeSec, 1: mtimeNsec } = toUnixTimeFromEpoch(mtime);
|
||||||
await core.opAsync(
|
await core.opAsync(
|
||||||
"op_utime_async",
|
"op_fs_utime_async",
|
||||||
pathFromURL(path),
|
pathFromURL(path),
|
||||||
atimeSec,
|
atimeSec,
|
||||||
atimeNsec,
|
atimeNsec,
|
||||||
|
@ -471,7 +475,7 @@ function symlinkSync(
|
||||||
newpath,
|
newpath,
|
||||||
options,
|
options,
|
||||||
) {
|
) {
|
||||||
ops.op_symlink_sync(
|
ops.op_fs_symlink_sync(
|
||||||
pathFromURL(oldpath),
|
pathFromURL(oldpath),
|
||||||
pathFromURL(newpath),
|
pathFromURL(newpath),
|
||||||
options?.type,
|
options?.type,
|
||||||
|
@ -484,7 +488,7 @@ async function symlink(
|
||||||
options,
|
options,
|
||||||
) {
|
) {
|
||||||
await core.opAsync(
|
await core.opAsync(
|
||||||
"op_symlink_async",
|
"op_fs_symlink_async",
|
||||||
pathFromURL(oldpath),
|
pathFromURL(oldpath),
|
||||||
pathFromURL(newpath),
|
pathFromURL(newpath),
|
||||||
options?.type,
|
options?.type,
|
||||||
|
@ -492,35 +496,35 @@ async function symlink(
|
||||||
}
|
}
|
||||||
|
|
||||||
function fdatasyncSync(rid) {
|
function fdatasyncSync(rid) {
|
||||||
ops.op_fdatasync_sync(rid);
|
ops.op_fs_fdatasync_sync(rid);
|
||||||
}
|
}
|
||||||
|
|
||||||
async function fdatasync(rid) {
|
async function fdatasync(rid) {
|
||||||
await core.opAsync("op_fdatasync_async", rid);
|
await core.opAsync("op_fs_fdatasync_async", rid);
|
||||||
}
|
}
|
||||||
|
|
||||||
function fsyncSync(rid) {
|
function fsyncSync(rid) {
|
||||||
ops.op_fsync_sync(rid);
|
ops.op_fs_fsync_sync(rid);
|
||||||
}
|
}
|
||||||
|
|
||||||
async function fsync(rid) {
|
async function fsync(rid) {
|
||||||
await core.opAsync("op_fsync_async", rid);
|
await core.opAsync("op_fs_fsync_async", rid);
|
||||||
}
|
}
|
||||||
|
|
||||||
function flockSync(rid, exclusive) {
|
function flockSync(rid, exclusive) {
|
||||||
ops.op_flock_sync(rid, exclusive === true);
|
ops.op_fs_flock_sync(rid, exclusive === true);
|
||||||
}
|
}
|
||||||
|
|
||||||
async function flock(rid, exclusive) {
|
async function flock(rid, exclusive) {
|
||||||
await op_flock_async(rid, exclusive === true);
|
await op_fs_flock_async(rid, exclusive === true);
|
||||||
}
|
}
|
||||||
|
|
||||||
function funlockSync(rid) {
|
function funlockSync(rid) {
|
||||||
ops.op_funlock_sync(rid);
|
ops.op_fs_funlock_sync(rid);
|
||||||
}
|
}
|
||||||
|
|
||||||
async function funlock(rid) {
|
async function funlock(rid) {
|
||||||
await core.opAsync("op_funlock_async", rid);
|
await core.opAsync("op_fs_funlock_async", rid);
|
||||||
}
|
}
|
||||||
|
|
||||||
function seekSync(
|
function seekSync(
|
||||||
|
@ -528,7 +532,7 @@ function seekSync(
|
||||||
offset,
|
offset,
|
||||||
whence,
|
whence,
|
||||||
) {
|
) {
|
||||||
return ops.op_seek_sync(rid, offset, whence);
|
return ops.op_fs_seek_sync(rid, offset, whence);
|
||||||
}
|
}
|
||||||
|
|
||||||
function seek(
|
function seek(
|
||||||
|
@ -536,7 +540,7 @@ function seek(
|
||||||
offset,
|
offset,
|
||||||
whence,
|
whence,
|
||||||
) {
|
) {
|
||||||
return core.opAsync("op_seek_async", rid, offset, whence);
|
return core.opAsync("op_fs_seek_async", rid, offset, whence);
|
||||||
}
|
}
|
||||||
|
|
||||||
function openSync(
|
function openSync(
|
||||||
|
@ -544,7 +548,7 @@ function openSync(
|
||||||
options,
|
options,
|
||||||
) {
|
) {
|
||||||
if (options) checkOpenOptions(options);
|
if (options) checkOpenOptions(options);
|
||||||
const rid = ops.op_open_sync(
|
const rid = ops.op_fs_open_sync(
|
||||||
pathFromURL(path),
|
pathFromURL(path),
|
||||||
options,
|
options,
|
||||||
);
|
);
|
||||||
|
@ -558,7 +562,7 @@ async function open(
|
||||||
) {
|
) {
|
||||||
if (options) checkOpenOptions(options);
|
if (options) checkOpenOptions(options);
|
||||||
const rid = await core.opAsync(
|
const rid = await core.opAsync(
|
||||||
"op_open_async",
|
"op_fs_open_async",
|
||||||
pathFromURL(path),
|
pathFromURL(path),
|
||||||
options,
|
options,
|
||||||
);
|
);
|
||||||
|
@ -685,7 +689,7 @@ function checkOpenOptions(options) {
|
||||||
const File = FsFile;
|
const File = FsFile;
|
||||||
|
|
||||||
function readFileSync(path) {
|
function readFileSync(path) {
|
||||||
return ops.op_read_file_sync(pathFromURL(path));
|
return ops.op_fs_read_file_sync(pathFromURL(path));
|
||||||
}
|
}
|
||||||
|
|
||||||
async function readFile(path, options) {
|
async function readFile(path, options) {
|
||||||
|
@ -700,7 +704,7 @@ async function readFile(path, options) {
|
||||||
|
|
||||||
try {
|
try {
|
||||||
const read = await core.opAsync(
|
const read = await core.opAsync(
|
||||||
"op_read_file_async",
|
"op_fs_read_file_async",
|
||||||
pathFromURL(path),
|
pathFromURL(path),
|
||||||
cancelRid,
|
cancelRid,
|
||||||
);
|
);
|
||||||
|
@ -716,7 +720,7 @@ async function readFile(path, options) {
|
||||||
}
|
}
|
||||||
|
|
||||||
function readTextFileSync(path) {
|
function readTextFileSync(path) {
|
||||||
return ops.op_read_file_text_sync(pathFromURL(path));
|
return ops.op_fs_read_file_text_sync(pathFromURL(path));
|
||||||
}
|
}
|
||||||
|
|
||||||
async function readTextFile(path, options) {
|
async function readTextFile(path, options) {
|
||||||
|
@ -731,7 +735,7 @@ async function readTextFile(path, options) {
|
||||||
|
|
||||||
try {
|
try {
|
||||||
const read = await core.opAsync(
|
const read = await core.opAsync(
|
||||||
"op_read_file_text_async",
|
"op_fs_read_file_text_async",
|
||||||
pathFromURL(path),
|
pathFromURL(path),
|
||||||
cancelRid,
|
cancelRid,
|
||||||
);
|
);
|
||||||
|
@ -752,7 +756,7 @@ function writeFileSync(
|
||||||
options = {},
|
options = {},
|
||||||
) {
|
) {
|
||||||
options.signal?.throwIfAborted();
|
options.signal?.throwIfAborted();
|
||||||
ops.op_write_file_sync(
|
ops.op_fs_write_file_sync(
|
||||||
pathFromURL(path),
|
pathFromURL(path),
|
||||||
options.mode,
|
options.mode,
|
||||||
options.append ?? false,
|
options.append ?? false,
|
||||||
|
@ -789,7 +793,7 @@ async function writeFile(
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
await core.opAsync(
|
await core.opAsync(
|
||||||
"op_write_file_async",
|
"op_fs_write_file_async",
|
||||||
pathFromURL(path),
|
pathFromURL(path),
|
||||||
options.mode,
|
options.mode,
|
||||||
options.append ?? false,
|
options.append ?? false,
|
||||||
|
|
122
ext/fs/lib.rs
122
ext/fs/lib.rs
|
@ -88,69 +88,69 @@ deno_core::extension!(deno_fs,
|
||||||
deps = [ deno_web ],
|
deps = [ deno_web ],
|
||||||
parameters = [P: FsPermissions],
|
parameters = [P: FsPermissions],
|
||||||
ops = [
|
ops = [
|
||||||
op_cwd<P>,
|
op_fs_cwd<P>,
|
||||||
op_umask,
|
op_fs_umask,
|
||||||
op_chdir<P>,
|
op_fs_chdir<P>,
|
||||||
|
|
||||||
op_open_sync<P>,
|
op_fs_open_sync<P>,
|
||||||
op_open_async<P>,
|
op_fs_open_async<P>,
|
||||||
op_mkdir_sync<P>,
|
op_fs_mkdir_sync<P>,
|
||||||
op_mkdir_async<P>,
|
op_fs_mkdir_async<P>,
|
||||||
op_chmod_sync<P>,
|
op_fs_chmod_sync<P>,
|
||||||
op_chmod_async<P>,
|
op_fs_chmod_async<P>,
|
||||||
op_chown_sync<P>,
|
op_fs_chown_sync<P>,
|
||||||
op_chown_async<P>,
|
op_fs_chown_async<P>,
|
||||||
op_remove_sync<P>,
|
op_fs_remove_sync<P>,
|
||||||
op_remove_async<P>,
|
op_fs_remove_async<P>,
|
||||||
op_copy_file_sync<P>,
|
op_fs_copy_file_sync<P>,
|
||||||
op_copy_file_async<P>,
|
op_fs_copy_file_async<P>,
|
||||||
op_stat_sync<P>,
|
op_fs_stat_sync<P>,
|
||||||
op_stat_async<P>,
|
op_fs_stat_async<P>,
|
||||||
op_lstat_sync<P>,
|
op_fs_lstat_sync<P>,
|
||||||
op_lstat_async<P>,
|
op_fs_lstat_async<P>,
|
||||||
op_realpath_sync<P>,
|
op_fs_realpath_sync<P>,
|
||||||
op_realpath_async<P>,
|
op_fs_realpath_async<P>,
|
||||||
op_read_dir_sync<P>,
|
op_fs_read_dir_sync<P>,
|
||||||
op_read_dir_async<P>,
|
op_fs_read_dir_async<P>,
|
||||||
op_rename_sync<P>,
|
op_fs_rename_sync<P>,
|
||||||
op_rename_async<P>,
|
op_fs_rename_async<P>,
|
||||||
op_link_sync<P>,
|
op_fs_link_sync<P>,
|
||||||
op_link_async<P>,
|
op_fs_link_async<P>,
|
||||||
op_symlink_sync<P>,
|
op_fs_symlink_sync<P>,
|
||||||
op_symlink_async<P>,
|
op_fs_symlink_async<P>,
|
||||||
op_read_link_sync<P>,
|
op_fs_read_link_sync<P>,
|
||||||
op_read_link_async<P>,
|
op_fs_read_link_async<P>,
|
||||||
op_truncate_sync<P>,
|
op_fs_truncate_sync<P>,
|
||||||
op_truncate_async<P>,
|
op_fs_truncate_async<P>,
|
||||||
op_utime_sync<P>,
|
op_fs_utime_sync<P>,
|
||||||
op_utime_async<P>,
|
op_fs_utime_async<P>,
|
||||||
op_make_temp_dir_sync<P>,
|
op_fs_make_temp_dir_sync<P>,
|
||||||
op_make_temp_dir_async<P>,
|
op_fs_make_temp_dir_async<P>,
|
||||||
op_make_temp_file_sync<P>,
|
op_fs_make_temp_file_sync<P>,
|
||||||
op_make_temp_file_async<P>,
|
op_fs_make_temp_file_async<P>,
|
||||||
op_write_file_sync<P>,
|
op_fs_write_file_sync<P>,
|
||||||
op_write_file_async<P>,
|
op_fs_write_file_async<P>,
|
||||||
op_read_file_sync<P>,
|
op_fs_read_file_sync<P>,
|
||||||
op_read_file_async<P>,
|
op_fs_read_file_async<P>,
|
||||||
op_read_file_text_sync<P>,
|
op_fs_read_file_text_sync<P>,
|
||||||
op_read_file_text_async<P>,
|
op_fs_read_file_text_async<P>,
|
||||||
|
|
||||||
op_seek_sync,
|
op_fs_seek_sync,
|
||||||
op_seek_async,
|
op_fs_seek_async,
|
||||||
op_fdatasync_sync,
|
op_fs_fdatasync_sync,
|
||||||
op_fdatasync_async,
|
op_fs_fdatasync_async,
|
||||||
op_fsync_sync,
|
op_fs_fsync_sync,
|
||||||
op_fsync_async,
|
op_fs_fsync_async,
|
||||||
op_fstat_sync,
|
op_fs_fstat_sync,
|
||||||
op_fstat_async,
|
op_fs_fstat_async,
|
||||||
op_flock_sync,
|
op_fs_flock_sync,
|
||||||
op_flock_async,
|
op_fs_flock_async,
|
||||||
op_funlock_sync,
|
op_fs_funlock_sync,
|
||||||
op_funlock_async,
|
op_fs_funlock_async,
|
||||||
op_ftruncate_sync,
|
op_fs_ftruncate_sync,
|
||||||
op_ftruncate_async,
|
op_fs_ftruncate_async,
|
||||||
op_futime_sync,
|
op_fs_futime_sync,
|
||||||
op_futime_async,
|
op_fs_futime_async,
|
||||||
|
|
||||||
],
|
],
|
||||||
esm = [ "30_fs.js" ],
|
esm = [ "30_fs.js" ],
|
||||||
|
|
128
ext/fs/ops.rs
128
ext/fs/ops.rs
|
@ -34,7 +34,7 @@ use crate::FsPermissions;
|
||||||
use crate::OpenOptions;
|
use crate::OpenOptions;
|
||||||
|
|
||||||
#[op]
|
#[op]
|
||||||
pub fn op_cwd<P>(state: &mut OpState) -> Result<String, AnyError>
|
pub fn op_fs_cwd<P>(state: &mut OpState) -> Result<String, AnyError>
|
||||||
where
|
where
|
||||||
P: FsPermissions + 'static,
|
P: FsPermissions + 'static,
|
||||||
{
|
{
|
||||||
|
@ -48,7 +48,7 @@ where
|
||||||
}
|
}
|
||||||
|
|
||||||
#[op]
|
#[op]
|
||||||
fn op_chdir<P>(state: &mut OpState, directory: &str) -> Result<(), AnyError>
|
fn op_fs_chdir<P>(state: &mut OpState, directory: &str) -> Result<(), AnyError>
|
||||||
where
|
where
|
||||||
P: FsPermissions + 'static,
|
P: FsPermissions + 'static,
|
||||||
{
|
{
|
||||||
|
@ -61,7 +61,10 @@ where
|
||||||
}
|
}
|
||||||
|
|
||||||
#[op]
|
#[op]
|
||||||
fn op_umask(state: &mut OpState, mask: Option<u32>) -> Result<u32, AnyError>
|
fn op_fs_umask(
|
||||||
|
state: &mut OpState,
|
||||||
|
mask: Option<u32>,
|
||||||
|
) -> Result<u32, AnyError>
|
||||||
where
|
where
|
||||||
{
|
{
|
||||||
check_unstable(state, "Deno.umask");
|
check_unstable(state, "Deno.umask");
|
||||||
|
@ -69,7 +72,7 @@ where
|
||||||
}
|
}
|
||||||
|
|
||||||
#[op]
|
#[op]
|
||||||
fn op_open_sync<P>(
|
fn op_fs_open_sync<P>(
|
||||||
state: &mut OpState,
|
state: &mut OpState,
|
||||||
path: String,
|
path: String,
|
||||||
options: Option<OpenOptions>,
|
options: Option<OpenOptions>,
|
||||||
|
@ -93,7 +96,7 @@ where
|
||||||
}
|
}
|
||||||
|
|
||||||
#[op]
|
#[op]
|
||||||
async fn op_open_async<P>(
|
async fn op_fs_open_async<P>(
|
||||||
state: Rc<RefCell<OpState>>,
|
state: Rc<RefCell<OpState>>,
|
||||||
path: String,
|
path: String,
|
||||||
options: Option<OpenOptions>,
|
options: Option<OpenOptions>,
|
||||||
|
@ -123,7 +126,7 @@ where
|
||||||
}
|
}
|
||||||
|
|
||||||
#[op]
|
#[op]
|
||||||
fn op_mkdir_sync<P>(
|
fn op_fs_mkdir_sync<P>(
|
||||||
state: &mut OpState,
|
state: &mut OpState,
|
||||||
path: String,
|
path: String,
|
||||||
recursive: bool,
|
recursive: bool,
|
||||||
|
@ -148,7 +151,7 @@ where
|
||||||
}
|
}
|
||||||
|
|
||||||
#[op]
|
#[op]
|
||||||
async fn op_mkdir_async<P>(
|
async fn op_fs_mkdir_async<P>(
|
||||||
state: Rc<RefCell<OpState>>,
|
state: Rc<RefCell<OpState>>,
|
||||||
path: String,
|
path: String,
|
||||||
recursive: bool,
|
recursive: bool,
|
||||||
|
@ -175,7 +178,7 @@ where
|
||||||
}
|
}
|
||||||
|
|
||||||
#[op]
|
#[op]
|
||||||
fn op_chmod_sync<P>(
|
fn op_fs_chmod_sync<P>(
|
||||||
state: &mut OpState,
|
state: &mut OpState,
|
||||||
path: String,
|
path: String,
|
||||||
mode: u32,
|
mode: u32,
|
||||||
|
@ -193,7 +196,7 @@ where
|
||||||
}
|
}
|
||||||
|
|
||||||
#[op]
|
#[op]
|
||||||
async fn op_chmod_async<P>(
|
async fn op_fs_chmod_async<P>(
|
||||||
state: Rc<RefCell<OpState>>,
|
state: Rc<RefCell<OpState>>,
|
||||||
path: String,
|
path: String,
|
||||||
mode: u32,
|
mode: u32,
|
||||||
|
@ -214,7 +217,7 @@ where
|
||||||
}
|
}
|
||||||
|
|
||||||
#[op]
|
#[op]
|
||||||
fn op_chown_sync<P>(
|
fn op_fs_chown_sync<P>(
|
||||||
state: &mut OpState,
|
state: &mut OpState,
|
||||||
path: String,
|
path: String,
|
||||||
uid: Option<u32>,
|
uid: Option<u32>,
|
||||||
|
@ -234,7 +237,7 @@ where
|
||||||
}
|
}
|
||||||
|
|
||||||
#[op]
|
#[op]
|
||||||
async fn op_chown_async<P>(
|
async fn op_fs_chown_async<P>(
|
||||||
state: Rc<RefCell<OpState>>,
|
state: Rc<RefCell<OpState>>,
|
||||||
path: String,
|
path: String,
|
||||||
uid: Option<u32>,
|
uid: Option<u32>,
|
||||||
|
@ -256,7 +259,7 @@ where
|
||||||
}
|
}
|
||||||
|
|
||||||
#[op]
|
#[op]
|
||||||
fn op_remove_sync<P>(
|
fn op_fs_remove_sync<P>(
|
||||||
state: &mut OpState,
|
state: &mut OpState,
|
||||||
path: &str,
|
path: &str,
|
||||||
recursive: bool,
|
recursive: bool,
|
||||||
|
@ -278,7 +281,7 @@ where
|
||||||
}
|
}
|
||||||
|
|
||||||
#[op]
|
#[op]
|
||||||
async fn op_remove_async<P>(
|
async fn op_fs_remove_async<P>(
|
||||||
state: Rc<RefCell<OpState>>,
|
state: Rc<RefCell<OpState>>,
|
||||||
path: String,
|
path: String,
|
||||||
recursive: bool,
|
recursive: bool,
|
||||||
|
@ -304,7 +307,7 @@ where
|
||||||
}
|
}
|
||||||
|
|
||||||
#[op]
|
#[op]
|
||||||
fn op_copy_file_sync<P>(
|
fn op_fs_copy_file_sync<P>(
|
||||||
state: &mut OpState,
|
state: &mut OpState,
|
||||||
from: &str,
|
from: &str,
|
||||||
to: &str,
|
to: &str,
|
||||||
|
@ -327,7 +330,7 @@ where
|
||||||
}
|
}
|
||||||
|
|
||||||
#[op]
|
#[op]
|
||||||
async fn op_copy_file_async<P>(
|
async fn op_fs_copy_file_async<P>(
|
||||||
state: Rc<RefCell<OpState>>,
|
state: Rc<RefCell<OpState>>,
|
||||||
from: String,
|
from: String,
|
||||||
to: String,
|
to: String,
|
||||||
|
@ -354,7 +357,7 @@ where
|
||||||
}
|
}
|
||||||
|
|
||||||
#[op]
|
#[op]
|
||||||
fn op_stat_sync<P>(
|
fn op_fs_stat_sync<P>(
|
||||||
state: &mut OpState,
|
state: &mut OpState,
|
||||||
path: String,
|
path: String,
|
||||||
stat_out_buf: &mut [u32],
|
stat_out_buf: &mut [u32],
|
||||||
|
@ -374,7 +377,7 @@ where
|
||||||
}
|
}
|
||||||
|
|
||||||
#[op]
|
#[op]
|
||||||
async fn op_stat_async<P>(
|
async fn op_fs_stat_async<P>(
|
||||||
state: Rc<RefCell<OpState>>,
|
state: Rc<RefCell<OpState>>,
|
||||||
path: String,
|
path: String,
|
||||||
) -> Result<SerializableStat, AnyError>
|
) -> Result<SerializableStat, AnyError>
|
||||||
|
@ -396,7 +399,7 @@ where
|
||||||
}
|
}
|
||||||
|
|
||||||
#[op]
|
#[op]
|
||||||
fn op_lstat_sync<P>(
|
fn op_fs_lstat_sync<P>(
|
||||||
state: &mut OpState,
|
state: &mut OpState,
|
||||||
path: String,
|
path: String,
|
||||||
stat_out_buf: &mut [u32],
|
stat_out_buf: &mut [u32],
|
||||||
|
@ -416,7 +419,7 @@ where
|
||||||
}
|
}
|
||||||
|
|
||||||
#[op]
|
#[op]
|
||||||
async fn op_lstat_async<P>(
|
async fn op_fs_lstat_async<P>(
|
||||||
state: Rc<RefCell<OpState>>,
|
state: Rc<RefCell<OpState>>,
|
||||||
path: String,
|
path: String,
|
||||||
) -> Result<SerializableStat, AnyError>
|
) -> Result<SerializableStat, AnyError>
|
||||||
|
@ -438,7 +441,7 @@ where
|
||||||
}
|
}
|
||||||
|
|
||||||
#[op]
|
#[op]
|
||||||
fn op_realpath_sync<P>(
|
fn op_fs_realpath_sync<P>(
|
||||||
state: &mut OpState,
|
state: &mut OpState,
|
||||||
path: String,
|
path: String,
|
||||||
) -> Result<String, AnyError>
|
) -> Result<String, AnyError>
|
||||||
|
@ -462,7 +465,7 @@ where
|
||||||
}
|
}
|
||||||
|
|
||||||
#[op]
|
#[op]
|
||||||
async fn op_realpath_async<P>(
|
async fn op_fs_realpath_async<P>(
|
||||||
state: Rc<RefCell<OpState>>,
|
state: Rc<RefCell<OpState>>,
|
||||||
path: String,
|
path: String,
|
||||||
) -> Result<String, AnyError>
|
) -> Result<String, AnyError>
|
||||||
|
@ -491,7 +494,7 @@ where
|
||||||
}
|
}
|
||||||
|
|
||||||
#[op]
|
#[op]
|
||||||
fn op_read_dir_sync<P>(
|
fn op_fs_read_dir_sync<P>(
|
||||||
state: &mut OpState,
|
state: &mut OpState,
|
||||||
path: String,
|
path: String,
|
||||||
) -> Result<Vec<FsDirEntry>, AnyError>
|
) -> Result<Vec<FsDirEntry>, AnyError>
|
||||||
|
@ -511,7 +514,7 @@ where
|
||||||
}
|
}
|
||||||
|
|
||||||
#[op]
|
#[op]
|
||||||
async fn op_read_dir_async<P>(
|
async fn op_fs_read_dir_async<P>(
|
||||||
state: Rc<RefCell<OpState>>,
|
state: Rc<RefCell<OpState>>,
|
||||||
path: String,
|
path: String,
|
||||||
) -> Result<Vec<FsDirEntry>, AnyError>
|
) -> Result<Vec<FsDirEntry>, AnyError>
|
||||||
|
@ -537,7 +540,7 @@ where
|
||||||
}
|
}
|
||||||
|
|
||||||
#[op]
|
#[op]
|
||||||
fn op_rename_sync<P>(
|
fn op_fs_rename_sync<P>(
|
||||||
state: &mut OpState,
|
state: &mut OpState,
|
||||||
oldpath: String,
|
oldpath: String,
|
||||||
newpath: String,
|
newpath: String,
|
||||||
|
@ -561,7 +564,7 @@ where
|
||||||
}
|
}
|
||||||
|
|
||||||
#[op]
|
#[op]
|
||||||
async fn op_rename_async<P>(
|
async fn op_fs_rename_async<P>(
|
||||||
state: Rc<RefCell<OpState>>,
|
state: Rc<RefCell<OpState>>,
|
||||||
oldpath: String,
|
oldpath: String,
|
||||||
newpath: String,
|
newpath: String,
|
||||||
|
@ -589,7 +592,7 @@ where
|
||||||
}
|
}
|
||||||
|
|
||||||
#[op]
|
#[op]
|
||||||
fn op_link_sync<P>(
|
fn op_fs_link_sync<P>(
|
||||||
state: &mut OpState,
|
state: &mut OpState,
|
||||||
oldpath: &str,
|
oldpath: &str,
|
||||||
newpath: &str,
|
newpath: &str,
|
||||||
|
@ -614,7 +617,7 @@ where
|
||||||
}
|
}
|
||||||
|
|
||||||
#[op]
|
#[op]
|
||||||
async fn op_link_async<P>(
|
async fn op_fs_link_async<P>(
|
||||||
state: Rc<RefCell<OpState>>,
|
state: Rc<RefCell<OpState>>,
|
||||||
oldpath: String,
|
oldpath: String,
|
||||||
newpath: String,
|
newpath: String,
|
||||||
|
@ -643,7 +646,7 @@ where
|
||||||
}
|
}
|
||||||
|
|
||||||
#[op]
|
#[op]
|
||||||
fn op_symlink_sync<P>(
|
fn op_fs_symlink_sync<P>(
|
||||||
state: &mut OpState,
|
state: &mut OpState,
|
||||||
oldpath: &str,
|
oldpath: &str,
|
||||||
newpath: &str,
|
newpath: &str,
|
||||||
|
@ -667,7 +670,7 @@ where
|
||||||
}
|
}
|
||||||
|
|
||||||
#[op]
|
#[op]
|
||||||
async fn op_symlink_async<P>(
|
async fn op_fs_symlink_async<P>(
|
||||||
state: Rc<RefCell<OpState>>,
|
state: Rc<RefCell<OpState>>,
|
||||||
oldpath: String,
|
oldpath: String,
|
||||||
newpath: String,
|
newpath: String,
|
||||||
|
@ -695,7 +698,7 @@ where
|
||||||
}
|
}
|
||||||
|
|
||||||
#[op]
|
#[op]
|
||||||
fn op_read_link_sync<P>(
|
fn op_fs_read_link_sync<P>(
|
||||||
state: &mut OpState,
|
state: &mut OpState,
|
||||||
path: String,
|
path: String,
|
||||||
) -> Result<String, AnyError>
|
) -> Result<String, AnyError>
|
||||||
|
@ -716,7 +719,7 @@ where
|
||||||
}
|
}
|
||||||
|
|
||||||
#[op]
|
#[op]
|
||||||
async fn op_read_link_async<P>(
|
async fn op_fs_read_link_async<P>(
|
||||||
state: Rc<RefCell<OpState>>,
|
state: Rc<RefCell<OpState>>,
|
||||||
path: String,
|
path: String,
|
||||||
) -> Result<String, AnyError>
|
) -> Result<String, AnyError>
|
||||||
|
@ -742,7 +745,7 @@ where
|
||||||
}
|
}
|
||||||
|
|
||||||
#[op]
|
#[op]
|
||||||
fn op_truncate_sync<P>(
|
fn op_fs_truncate_sync<P>(
|
||||||
state: &mut OpState,
|
state: &mut OpState,
|
||||||
path: &str,
|
path: &str,
|
||||||
len: u64,
|
len: u64,
|
||||||
|
@ -764,7 +767,7 @@ where
|
||||||
}
|
}
|
||||||
|
|
||||||
#[op]
|
#[op]
|
||||||
async fn op_truncate_async<P>(
|
async fn op_fs_truncate_async<P>(
|
||||||
state: Rc<RefCell<OpState>>,
|
state: Rc<RefCell<OpState>>,
|
||||||
path: String,
|
path: String,
|
||||||
len: u64,
|
len: u64,
|
||||||
|
@ -790,7 +793,7 @@ where
|
||||||
}
|
}
|
||||||
|
|
||||||
#[op]
|
#[op]
|
||||||
fn op_utime_sync<P>(
|
fn op_fs_utime_sync<P>(
|
||||||
state: &mut OpState,
|
state: &mut OpState,
|
||||||
path: &str,
|
path: &str,
|
||||||
atime_secs: i64,
|
atime_secs: i64,
|
||||||
|
@ -813,7 +816,7 @@ where
|
||||||
}
|
}
|
||||||
|
|
||||||
#[op]
|
#[op]
|
||||||
async fn op_utime_async<P>(
|
async fn op_fs_utime_async<P>(
|
||||||
state: Rc<RefCell<OpState>>,
|
state: Rc<RefCell<OpState>>,
|
||||||
path: String,
|
path: String,
|
||||||
atime_secs: i64,
|
atime_secs: i64,
|
||||||
|
@ -846,7 +849,7 @@ where
|
||||||
}
|
}
|
||||||
|
|
||||||
#[op]
|
#[op]
|
||||||
fn op_make_temp_dir_sync<P>(
|
fn op_fs_make_temp_dir_sync<P>(
|
||||||
state: &mut OpState,
|
state: &mut OpState,
|
||||||
dir: Option<String>,
|
dir: Option<String>,
|
||||||
prefix: Option<String>,
|
prefix: Option<String>,
|
||||||
|
@ -879,7 +882,7 @@ where
|
||||||
}
|
}
|
||||||
|
|
||||||
#[op]
|
#[op]
|
||||||
async fn op_make_temp_dir_async<P>(
|
async fn op_fs_make_temp_dir_async<P>(
|
||||||
state: Rc<RefCell<OpState>>,
|
state: Rc<RefCell<OpState>>,
|
||||||
dir: Option<String>,
|
dir: Option<String>,
|
||||||
prefix: Option<String>,
|
prefix: Option<String>,
|
||||||
|
@ -912,7 +915,7 @@ where
|
||||||
}
|
}
|
||||||
|
|
||||||
#[op]
|
#[op]
|
||||||
fn op_make_temp_file_sync<P>(
|
fn op_fs_make_temp_file_sync<P>(
|
||||||
state: &mut OpState,
|
state: &mut OpState,
|
||||||
dir: Option<String>,
|
dir: Option<String>,
|
||||||
prefix: Option<String>,
|
prefix: Option<String>,
|
||||||
|
@ -952,7 +955,7 @@ where
|
||||||
}
|
}
|
||||||
|
|
||||||
#[op]
|
#[op]
|
||||||
async fn op_make_temp_file_async<P>(
|
async fn op_fs_make_temp_file_async<P>(
|
||||||
state: Rc<RefCell<OpState>>,
|
state: Rc<RefCell<OpState>>,
|
||||||
dir: Option<String>,
|
dir: Option<String>,
|
||||||
prefix: Option<String>,
|
prefix: Option<String>,
|
||||||
|
@ -1067,7 +1070,7 @@ fn tmp_name(
|
||||||
}
|
}
|
||||||
|
|
||||||
#[op]
|
#[op]
|
||||||
fn op_write_file_sync<P>(
|
fn op_fs_write_file_sync<P>(
|
||||||
state: &mut OpState,
|
state: &mut OpState,
|
||||||
path: String,
|
path: String,
|
||||||
mode: Option<u32>,
|
mode: Option<u32>,
|
||||||
|
@ -1094,7 +1097,7 @@ where
|
||||||
}
|
}
|
||||||
|
|
||||||
#[op]
|
#[op]
|
||||||
async fn op_write_file_async<P>(
|
async fn op_fs_write_file_async<P>(
|
||||||
state: Rc<RefCell<OpState>>,
|
state: Rc<RefCell<OpState>>,
|
||||||
path: String,
|
path: String,
|
||||||
mode: Option<u32>,
|
mode: Option<u32>,
|
||||||
|
@ -1138,7 +1141,7 @@ where
|
||||||
}
|
}
|
||||||
|
|
||||||
#[op]
|
#[op]
|
||||||
fn op_read_file_sync<P>(
|
fn op_fs_read_file_sync<P>(
|
||||||
state: &mut OpState,
|
state: &mut OpState,
|
||||||
path: String,
|
path: String,
|
||||||
) -> Result<ZeroCopyBuf, AnyError>
|
) -> Result<ZeroCopyBuf, AnyError>
|
||||||
|
@ -1157,7 +1160,7 @@ where
|
||||||
}
|
}
|
||||||
|
|
||||||
#[op]
|
#[op]
|
||||||
async fn op_read_file_async<P>(
|
async fn op_fs_read_file_async<P>(
|
||||||
state: Rc<RefCell<OpState>>,
|
state: Rc<RefCell<OpState>>,
|
||||||
path: String,
|
path: String,
|
||||||
cancel_rid: Option<ResourceId>,
|
cancel_rid: Option<ResourceId>,
|
||||||
|
@ -1194,7 +1197,7 @@ where
|
||||||
}
|
}
|
||||||
|
|
||||||
#[op]
|
#[op]
|
||||||
fn op_read_file_text_sync<P>(
|
fn op_fs_read_file_text_sync<P>(
|
||||||
state: &mut OpState,
|
state: &mut OpState,
|
||||||
path: String,
|
path: String,
|
||||||
) -> Result<String, AnyError>
|
) -> Result<String, AnyError>
|
||||||
|
@ -1213,7 +1216,7 @@ where
|
||||||
}
|
}
|
||||||
|
|
||||||
#[op]
|
#[op]
|
||||||
async fn op_read_file_text_async<P>(
|
async fn op_fs_read_file_text_async<P>(
|
||||||
state: Rc<RefCell<OpState>>,
|
state: Rc<RefCell<OpState>>,
|
||||||
path: String,
|
path: String,
|
||||||
cancel_rid: Option<ResourceId>,
|
cancel_rid: Option<ResourceId>,
|
||||||
|
@ -1273,7 +1276,7 @@ fn to_seek_from(offset: i64, whence: i32) -> Result<SeekFrom, AnyError> {
|
||||||
}
|
}
|
||||||
|
|
||||||
#[op]
|
#[op]
|
||||||
fn op_seek_sync(
|
fn op_fs_seek_sync(
|
||||||
state: &mut OpState,
|
state: &mut OpState,
|
||||||
rid: ResourceId,
|
rid: ResourceId,
|
||||||
offset: i64,
|
offset: i64,
|
||||||
|
@ -1286,7 +1289,7 @@ fn op_seek_sync(
|
||||||
}
|
}
|
||||||
|
|
||||||
#[op]
|
#[op]
|
||||||
async fn op_seek_async(
|
async fn op_fs_seek_async(
|
||||||
state: Rc<RefCell<OpState>>,
|
state: Rc<RefCell<OpState>>,
|
||||||
rid: ResourceId,
|
rid: ResourceId,
|
||||||
offset: i64,
|
offset: i64,
|
||||||
|
@ -1299,7 +1302,7 @@ async fn op_seek_async(
|
||||||
}
|
}
|
||||||
|
|
||||||
#[op]
|
#[op]
|
||||||
fn op_fdatasync_sync(
|
fn op_fs_fdatasync_sync(
|
||||||
state: &mut OpState,
|
state: &mut OpState,
|
||||||
rid: ResourceId,
|
rid: ResourceId,
|
||||||
) -> Result<(), AnyError> {
|
) -> Result<(), AnyError> {
|
||||||
|
@ -1309,7 +1312,7 @@ fn op_fdatasync_sync(
|
||||||
}
|
}
|
||||||
|
|
||||||
#[op]
|
#[op]
|
||||||
async fn op_fdatasync_async(
|
async fn op_fs_fdatasync_async(
|
||||||
state: Rc<RefCell<OpState>>,
|
state: Rc<RefCell<OpState>>,
|
||||||
rid: ResourceId,
|
rid: ResourceId,
|
||||||
) -> Result<(), AnyError> {
|
) -> Result<(), AnyError> {
|
||||||
|
@ -1319,14 +1322,17 @@ async fn op_fdatasync_async(
|
||||||
}
|
}
|
||||||
|
|
||||||
#[op]
|
#[op]
|
||||||
fn op_fsync_sync(state: &mut OpState, rid: ResourceId) -> Result<(), AnyError> {
|
fn op_fs_fsync_sync(
|
||||||
|
state: &mut OpState,
|
||||||
|
rid: ResourceId,
|
||||||
|
) -> Result<(), AnyError> {
|
||||||
let file = FileResource::get_file(state, rid)?;
|
let file = FileResource::get_file(state, rid)?;
|
||||||
file.sync_sync()?;
|
file.sync_sync()?;
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
#[op]
|
#[op]
|
||||||
async fn op_fsync_async(
|
async fn op_fs_fsync_async(
|
||||||
state: Rc<RefCell<OpState>>,
|
state: Rc<RefCell<OpState>>,
|
||||||
rid: ResourceId,
|
rid: ResourceId,
|
||||||
) -> Result<(), AnyError> {
|
) -> Result<(), AnyError> {
|
||||||
|
@ -1336,7 +1342,7 @@ async fn op_fsync_async(
|
||||||
}
|
}
|
||||||
|
|
||||||
#[op]
|
#[op]
|
||||||
fn op_fstat_sync(
|
fn op_fs_fstat_sync(
|
||||||
state: &mut OpState,
|
state: &mut OpState,
|
||||||
rid: ResourceId,
|
rid: ResourceId,
|
||||||
stat_out_buf: &mut [u32],
|
stat_out_buf: &mut [u32],
|
||||||
|
@ -1349,7 +1355,7 @@ fn op_fstat_sync(
|
||||||
}
|
}
|
||||||
|
|
||||||
#[op]
|
#[op]
|
||||||
async fn op_fstat_async(
|
async fn op_fs_fstat_async(
|
||||||
state: Rc<RefCell<OpState>>,
|
state: Rc<RefCell<OpState>>,
|
||||||
rid: ResourceId,
|
rid: ResourceId,
|
||||||
) -> Result<SerializableStat, AnyError> {
|
) -> Result<SerializableStat, AnyError> {
|
||||||
|
@ -1359,7 +1365,7 @@ async fn op_fstat_async(
|
||||||
}
|
}
|
||||||
|
|
||||||
#[op]
|
#[op]
|
||||||
fn op_flock_sync(
|
fn op_fs_flock_sync(
|
||||||
state: &mut OpState,
|
state: &mut OpState,
|
||||||
rid: ResourceId,
|
rid: ResourceId,
|
||||||
exclusive: bool,
|
exclusive: bool,
|
||||||
|
@ -1371,7 +1377,7 @@ fn op_flock_sync(
|
||||||
}
|
}
|
||||||
|
|
||||||
#[op]
|
#[op]
|
||||||
async fn op_flock_async(
|
async fn op_fs_flock_async(
|
||||||
state: Rc<RefCell<OpState>>,
|
state: Rc<RefCell<OpState>>,
|
||||||
rid: ResourceId,
|
rid: ResourceId,
|
||||||
exclusive: bool,
|
exclusive: bool,
|
||||||
|
@ -1383,7 +1389,7 @@ async fn op_flock_async(
|
||||||
}
|
}
|
||||||
|
|
||||||
#[op]
|
#[op]
|
||||||
fn op_funlock_sync(
|
fn op_fs_funlock_sync(
|
||||||
state: &mut OpState,
|
state: &mut OpState,
|
||||||
rid: ResourceId,
|
rid: ResourceId,
|
||||||
) -> Result<(), AnyError> {
|
) -> Result<(), AnyError> {
|
||||||
|
@ -1394,7 +1400,7 @@ fn op_funlock_sync(
|
||||||
}
|
}
|
||||||
|
|
||||||
#[op]
|
#[op]
|
||||||
async fn op_funlock_async(
|
async fn op_fs_funlock_async(
|
||||||
state: Rc<RefCell<OpState>>,
|
state: Rc<RefCell<OpState>>,
|
||||||
rid: ResourceId,
|
rid: ResourceId,
|
||||||
) -> Result<(), AnyError> {
|
) -> Result<(), AnyError> {
|
||||||
|
@ -1405,7 +1411,7 @@ async fn op_funlock_async(
|
||||||
}
|
}
|
||||||
|
|
||||||
#[op]
|
#[op]
|
||||||
fn op_ftruncate_sync(
|
fn op_fs_ftruncate_sync(
|
||||||
state: &mut OpState,
|
state: &mut OpState,
|
||||||
rid: ResourceId,
|
rid: ResourceId,
|
||||||
len: u64,
|
len: u64,
|
||||||
|
@ -1416,7 +1422,7 @@ fn op_ftruncate_sync(
|
||||||
}
|
}
|
||||||
|
|
||||||
#[op]
|
#[op]
|
||||||
async fn op_ftruncate_async(
|
async fn op_fs_ftruncate_async(
|
||||||
state: Rc<RefCell<OpState>>,
|
state: Rc<RefCell<OpState>>,
|
||||||
rid: ResourceId,
|
rid: ResourceId,
|
||||||
len: u64,
|
len: u64,
|
||||||
|
@ -1427,7 +1433,7 @@ async fn op_ftruncate_async(
|
||||||
}
|
}
|
||||||
|
|
||||||
#[op]
|
#[op]
|
||||||
fn op_futime_sync(
|
fn op_fs_futime_sync(
|
||||||
state: &mut OpState,
|
state: &mut OpState,
|
||||||
rid: ResourceId,
|
rid: ResourceId,
|
||||||
atime_secs: i64,
|
atime_secs: i64,
|
||||||
|
@ -1441,7 +1447,7 @@ fn op_futime_sync(
|
||||||
}
|
}
|
||||||
|
|
||||||
#[op]
|
#[op]
|
||||||
async fn op_futime_async(
|
async fn op_fs_futime_async(
|
||||||
state: Rc<RefCell<OpState>>,
|
state: Rc<RefCell<OpState>>,
|
||||||
rid: ResourceId,
|
rid: ResourceId,
|
||||||
atime_secs: i64,
|
atime_secs: i64,
|
||||||
|
|
|
@ -50,35 +50,35 @@ const {
|
||||||
|
|
||||||
const {
|
const {
|
||||||
op_http_wait,
|
op_http_wait,
|
||||||
op_upgrade,
|
op_http_upgrade_next,
|
||||||
op_get_request_headers,
|
op_http_get_request_headers,
|
||||||
op_get_request_method_and_url,
|
op_http_get_request_method_and_url,
|
||||||
op_read_request_body,
|
op_http_read_request_body,
|
||||||
op_serve_http,
|
op_http_serve,
|
||||||
op_set_promise_complete,
|
op_http_set_promise_complete,
|
||||||
op_set_response_body_bytes,
|
op_http_set_response_body_bytes,
|
||||||
op_set_response_body_resource,
|
op_http_set_response_body_resource,
|
||||||
op_set_response_body_stream,
|
op_http_set_response_body_stream,
|
||||||
op_set_response_body_text,
|
op_http_set_response_body_text,
|
||||||
op_set_response_header,
|
op_http_set_response_header,
|
||||||
op_set_response_headers,
|
op_http_set_response_headers,
|
||||||
op_upgrade_raw,
|
op_http_upgrade_raw,
|
||||||
op_ws_server_create,
|
op_ws_server_create,
|
||||||
} = core.generateAsyncOpHandler(
|
} = core.generateAsyncOpHandler(
|
||||||
"op_http_wait",
|
"op_http_wait",
|
||||||
"op_upgrade",
|
"op_http_upgrade_next",
|
||||||
"op_get_request_headers",
|
"op_http_get_request_headers",
|
||||||
"op_get_request_method_and_url",
|
"op_http_get_request_method_and_url",
|
||||||
"op_read_request_body",
|
"op_http_read_request_body",
|
||||||
"op_serve_http",
|
"op_http_serve",
|
||||||
"op_set_promise_complete",
|
"op_http_set_promise_complete",
|
||||||
"op_set_response_body_bytes",
|
"op_http_set_response_body_bytes",
|
||||||
"op_set_response_body_resource",
|
"op_http_set_response_body_resource",
|
||||||
"op_set_response_body_stream",
|
"op_http_set_response_body_stream",
|
||||||
"op_set_response_body_text",
|
"op_http_set_response_body_text",
|
||||||
"op_set_response_header",
|
"op_http_set_response_header",
|
||||||
"op_set_response_headers",
|
"op_http_set_response_headers",
|
||||||
"op_upgrade_raw",
|
"op_http_upgrade_raw",
|
||||||
"op_ws_server_create",
|
"op_ws_server_create",
|
||||||
);
|
);
|
||||||
const _upgraded = Symbol("_upgraded");
|
const _upgraded = Symbol("_upgraded");
|
||||||
|
@ -178,7 +178,7 @@ class InnerRequest {
|
||||||
|
|
||||||
this.#upgraded = () => {};
|
this.#upgraded = () => {};
|
||||||
|
|
||||||
const upgradeRid = op_upgrade_raw(slabId);
|
const upgradeRid = op_http_upgrade_raw(slabId);
|
||||||
|
|
||||||
const conn = new TcpConn(
|
const conn = new TcpConn(
|
||||||
upgradeRid,
|
upgradeRid,
|
||||||
|
@ -209,7 +209,7 @@ class InnerRequest {
|
||||||
(async () => {
|
(async () => {
|
||||||
try {
|
try {
|
||||||
// Returns the connection and extra bytes, which we can pass directly to op_ws_server_create
|
// Returns the connection and extra bytes, which we can pass directly to op_ws_server_create
|
||||||
const upgrade = await op_upgrade(
|
const upgrade = await op_http_upgrade_next(
|
||||||
slabId,
|
slabId,
|
||||||
response.headerList,
|
response.headerList,
|
||||||
);
|
);
|
||||||
|
@ -248,7 +248,7 @@ class InnerRequest {
|
||||||
}
|
}
|
||||||
// TODO(mmastrac): This is quite slow as we're serializing a large number of values. We may want to consider
|
// TODO(mmastrac): This is quite slow as we're serializing a large number of values. We may want to consider
|
||||||
// splitting this up into multiple ops.
|
// splitting this up into multiple ops.
|
||||||
this.#methodAndUri = op_get_request_method_and_url(this.#slabId);
|
this.#methodAndUri = op_http_get_request_method_and_url(this.#slabId);
|
||||||
}
|
}
|
||||||
|
|
||||||
const path = this.#methodAndUri[2];
|
const path = this.#methodAndUri[2];
|
||||||
|
@ -283,7 +283,7 @@ class InnerRequest {
|
||||||
if (this.#slabId === undefined) {
|
if (this.#slabId === undefined) {
|
||||||
throw new TypeError("request closed");
|
throw new TypeError("request closed");
|
||||||
}
|
}
|
||||||
this.#methodAndUri = op_get_request_method_and_url(this.#slabId);
|
this.#methodAndUri = op_http_get_request_method_and_url(this.#slabId);
|
||||||
}
|
}
|
||||||
return {
|
return {
|
||||||
transport: "tcp",
|
transport: "tcp",
|
||||||
|
@ -297,7 +297,7 @@ class InnerRequest {
|
||||||
if (this.#slabId === undefined) {
|
if (this.#slabId === undefined) {
|
||||||
throw new TypeError("request closed");
|
throw new TypeError("request closed");
|
||||||
}
|
}
|
||||||
this.#methodAndUri = op_get_request_method_and_url(this.#slabId);
|
this.#methodAndUri = op_http_get_request_method_and_url(this.#slabId);
|
||||||
}
|
}
|
||||||
return this.#methodAndUri[0];
|
return this.#methodAndUri[0];
|
||||||
}
|
}
|
||||||
|
@ -315,7 +315,7 @@ class InnerRequest {
|
||||||
this.#body = null;
|
this.#body = null;
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
this.#streamRid = op_read_request_body(this.#slabId);
|
this.#streamRid = op_http_read_request_body(this.#slabId);
|
||||||
this.#body = new InnerBody(readableStreamForRid(this.#streamRid, false));
|
this.#body = new InnerBody(readableStreamForRid(this.#streamRid, false));
|
||||||
return this.#body;
|
return this.#body;
|
||||||
}
|
}
|
||||||
|
@ -324,7 +324,7 @@ class InnerRequest {
|
||||||
if (this.#slabId === undefined) {
|
if (this.#slabId === undefined) {
|
||||||
throw new TypeError("request closed");
|
throw new TypeError("request closed");
|
||||||
}
|
}
|
||||||
return op_get_request_headers(this.#slabId);
|
return op_http_get_request_headers(this.#slabId);
|
||||||
}
|
}
|
||||||
|
|
||||||
get slabId() {
|
get slabId() {
|
||||||
|
@ -365,12 +365,12 @@ function fastSyncResponseOrStream(req, respBody) {
|
||||||
const body = stream.body;
|
const body = stream.body;
|
||||||
|
|
||||||
if (ObjectPrototypeIsPrototypeOf(Uint8ArrayPrototype, body)) {
|
if (ObjectPrototypeIsPrototypeOf(Uint8ArrayPrototype, body)) {
|
||||||
op_set_response_body_bytes(req, body);
|
op_http_set_response_body_bytes(req, body);
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (typeof body === "string") {
|
if (typeof body === "string") {
|
||||||
op_set_response_body_text(req, body);
|
op_http_set_response_body_text(req, body);
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -380,7 +380,7 @@ function fastSyncResponseOrStream(req, respBody) {
|
||||||
}
|
}
|
||||||
const resourceBacking = getReadableStreamResourceBacking(stream);
|
const resourceBacking = getReadableStreamResourceBacking(stream);
|
||||||
if (resourceBacking) {
|
if (resourceBacking) {
|
||||||
op_set_response_body_resource(
|
op_http_set_response_body_resource(
|
||||||
req,
|
req,
|
||||||
resourceBacking.rid,
|
resourceBacking.rid,
|
||||||
resourceBacking.autoClose,
|
resourceBacking.autoClose,
|
||||||
|
@ -416,9 +416,9 @@ async function asyncResponse(responseBodies, req, status, stream) {
|
||||||
// and we race it.
|
// and we race it.
|
||||||
let timeoutPromise;
|
let timeoutPromise;
|
||||||
timeout = setTimeout(() => {
|
timeout = setTimeout(() => {
|
||||||
responseRid = op_set_response_body_stream(req);
|
responseRid = op_http_set_response_body_stream(req);
|
||||||
SetPrototypeAdd(responseBodies, responseRid);
|
SetPrototypeAdd(responseBodies, responseRid);
|
||||||
op_set_promise_complete(req, status);
|
op_http_set_promise_complete(req, status);
|
||||||
timeoutPromise = core.writeAll(responseRid, value1);
|
timeoutPromise = core.writeAll(responseRid, value1);
|
||||||
}, 250);
|
}, 250);
|
||||||
const { value: value2, done: done2 } = await reader.read();
|
const { value: value2, done: done2 } = await reader.read();
|
||||||
|
@ -443,13 +443,13 @@ async function asyncResponse(responseBodies, req, status, stream) {
|
||||||
// Reader will be closed by finally block
|
// Reader will be closed by finally block
|
||||||
// No response stream
|
// No response stream
|
||||||
closed = true;
|
closed = true;
|
||||||
op_set_response_body_bytes(req, value1);
|
op_http_set_response_body_bytes(req, value1);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
responseRid = op_set_response_body_stream(req);
|
responseRid = op_http_set_response_body_stream(req);
|
||||||
SetPrototypeAdd(responseBodies, responseRid);
|
SetPrototypeAdd(responseBodies, responseRid);
|
||||||
op_set_promise_complete(req, status);
|
op_http_set_promise_complete(req, status);
|
||||||
// Write our first packet
|
// Write our first packet
|
||||||
await core.writeAll(responseRid, value1);
|
await core.writeAll(responseRid, value1);
|
||||||
}
|
}
|
||||||
|
@ -481,7 +481,7 @@ async function asyncResponse(responseBodies, req, status, stream) {
|
||||||
core.tryClose(responseRid);
|
core.tryClose(responseRid);
|
||||||
SetPrototypeDelete(responseBodies, responseRid);
|
SetPrototypeDelete(responseBodies, responseRid);
|
||||||
} else {
|
} else {
|
||||||
op_set_promise_complete(req, status);
|
op_http_set_promise_complete(req, status);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -545,9 +545,9 @@ function mapToCallback(responseBodies, context, signal, callback, onError) {
|
||||||
const headers = inner.headerList;
|
const headers = inner.headerList;
|
||||||
if (headers && headers.length > 0) {
|
if (headers && headers.length > 0) {
|
||||||
if (headers.length == 1) {
|
if (headers.length == 1) {
|
||||||
op_set_response_header(req, headers[0][0], headers[0][1]);
|
op_http_set_response_header(req, headers[0][0], headers[0][1]);
|
||||||
} else {
|
} else {
|
||||||
op_set_response_headers(req, headers);
|
op_http_set_response_headers(req, headers);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -557,7 +557,7 @@ function mapToCallback(responseBodies, context, signal, callback, onError) {
|
||||||
// Handle the stream asynchronously
|
// Handle the stream asynchronously
|
||||||
await asyncResponse(responseBodies, req, status, stream);
|
await asyncResponse(responseBodies, req, status, stream);
|
||||||
} else {
|
} else {
|
||||||
op_set_promise_complete(req, status);
|
op_http_set_promise_complete(req, status);
|
||||||
}
|
}
|
||||||
|
|
||||||
innerRequest?.close();
|
innerRequest?.close();
|
||||||
|
@ -625,13 +625,13 @@ async function serve(arg1, arg2) {
|
||||||
listenOpts.alpnProtocols = ["h2", "http/1.1"];
|
listenOpts.alpnProtocols = ["h2", "http/1.1"];
|
||||||
const listener = Deno.listenTls(listenOpts);
|
const listener = Deno.listenTls(listenOpts);
|
||||||
listenOpts.port = listener.addr.port;
|
listenOpts.port = listener.addr.port;
|
||||||
context.initialize(op_serve_http(
|
context.initialize(op_http_serve(
|
||||||
listener.rid,
|
listener.rid,
|
||||||
));
|
));
|
||||||
} else {
|
} else {
|
||||||
const listener = Deno.listen(listenOpts);
|
const listener = Deno.listen(listenOpts);
|
||||||
listenOpts.port = listener.addr.port;
|
listenOpts.port = listener.addr.port;
|
||||||
context.initialize(op_serve_http(
|
context.initialize(op_http_serve(
|
||||||
listener.rid,
|
listener.rid,
|
||||||
));
|
));
|
||||||
}
|
}
|
||||||
|
|
|
@ -235,7 +235,7 @@ fn slab_insert(
|
||||||
}
|
}
|
||||||
|
|
||||||
#[op]
|
#[op]
|
||||||
pub fn op_upgrade_raw(
|
pub fn op_http_upgrade_raw(
|
||||||
state: &mut OpState,
|
state: &mut OpState,
|
||||||
index: u32,
|
index: u32,
|
||||||
) -> Result<ResourceId, AnyError> {
|
) -> Result<ResourceId, AnyError> {
|
||||||
|
@ -310,7 +310,7 @@ pub fn op_upgrade_raw(
|
||||||
}
|
}
|
||||||
|
|
||||||
#[op]
|
#[op]
|
||||||
pub async fn op_upgrade(
|
pub async fn op_http_upgrade_next(
|
||||||
state: Rc<RefCell<OpState>>,
|
state: Rc<RefCell<OpState>>,
|
||||||
index: u32,
|
index: u32,
|
||||||
headers: Vec<(ByteString, ByteString)>,
|
headers: Vec<(ByteString, ByteString)>,
|
||||||
|
@ -353,7 +353,7 @@ pub async fn op_upgrade(
|
||||||
}
|
}
|
||||||
|
|
||||||
#[op(fast)]
|
#[op(fast)]
|
||||||
pub fn op_set_promise_complete(index: u32, status: u16) {
|
pub fn op_http_set_promise_complete(index: u32, status: u16) {
|
||||||
with_resp_mut(index, |resp| {
|
with_resp_mut(index, |resp| {
|
||||||
// The Javascript code will never provide a status that is invalid here (see 23_response.js)
|
// The Javascript code will never provide a status that is invalid here (see 23_response.js)
|
||||||
*resp.as_mut().unwrap().status_mut() =
|
*resp.as_mut().unwrap().status_mut() =
|
||||||
|
@ -365,7 +365,7 @@ pub fn op_set_promise_complete(index: u32, status: u16) {
|
||||||
}
|
}
|
||||||
|
|
||||||
#[op]
|
#[op]
|
||||||
pub fn op_get_request_method_and_url(
|
pub fn op_http_get_request_method_and_url(
|
||||||
index: u32,
|
index: u32,
|
||||||
) -> (String, Option<String>, String, String, Option<u16>) {
|
) -> (String, Option<String>, String, String, Option<u16>) {
|
||||||
// TODO(mmastrac): Passing method can be optimized
|
// TODO(mmastrac): Passing method can be optimized
|
||||||
|
@ -393,7 +393,10 @@ pub fn op_get_request_method_and_url(
|
||||||
}
|
}
|
||||||
|
|
||||||
#[op]
|
#[op]
|
||||||
pub fn op_get_request_header(index: u32, name: String) -> Option<ByteString> {
|
pub fn op_http_get_request_header(
|
||||||
|
index: u32,
|
||||||
|
name: String,
|
||||||
|
) -> Option<ByteString> {
|
||||||
with_req(index, |req| {
|
with_req(index, |req| {
|
||||||
let value = req.headers.get(name);
|
let value = req.headers.get(name);
|
||||||
value.map(|value| value.as_bytes().into())
|
value.map(|value| value.as_bytes().into())
|
||||||
|
@ -401,7 +404,9 @@ pub fn op_get_request_header(index: u32, name: String) -> Option<ByteString> {
|
||||||
}
|
}
|
||||||
|
|
||||||
#[op]
|
#[op]
|
||||||
pub fn op_get_request_headers(index: u32) -> Vec<(ByteString, ByteString)> {
|
pub fn op_http_get_request_headers(
|
||||||
|
index: u32,
|
||||||
|
) -> Vec<(ByteString, ByteString)> {
|
||||||
with_req(index, |req| {
|
with_req(index, |req| {
|
||||||
let headers = &req.headers;
|
let headers = &req.headers;
|
||||||
let mut vec = Vec::with_capacity(headers.len());
|
let mut vec = Vec::with_capacity(headers.len());
|
||||||
|
@ -436,7 +441,10 @@ pub fn op_get_request_headers(index: u32) -> Vec<(ByteString, ByteString)> {
|
||||||
}
|
}
|
||||||
|
|
||||||
#[op(fast)]
|
#[op(fast)]
|
||||||
pub fn op_read_request_body(state: &mut OpState, index: u32) -> ResourceId {
|
pub fn op_http_read_request_body(
|
||||||
|
state: &mut OpState,
|
||||||
|
index: u32,
|
||||||
|
) -> ResourceId {
|
||||||
let incoming = with_req_body_mut(index, |body| body.take().unwrap());
|
let incoming = with_req_body_mut(index, |body| body.take().unwrap());
|
||||||
let body_resource = Rc::new(HttpRequestBody::new(incoming));
|
let body_resource = Rc::new(HttpRequestBody::new(incoming));
|
||||||
let res = state.resource_table.add_rc(body_resource.clone());
|
let res = state.resource_table.add_rc(body_resource.clone());
|
||||||
|
@ -447,7 +455,7 @@ pub fn op_read_request_body(state: &mut OpState, index: u32) -> ResourceId {
|
||||||
}
|
}
|
||||||
|
|
||||||
#[op(fast)]
|
#[op(fast)]
|
||||||
pub fn op_set_response_header(index: u32, name: &str, value: &str) {
|
pub fn op_http_set_response_header(index: u32, name: &str, value: &str) {
|
||||||
with_resp_mut(index, |resp| {
|
with_resp_mut(index, |resp| {
|
||||||
let resp_headers = resp.as_mut().unwrap().headers_mut();
|
let resp_headers = resp.as_mut().unwrap().headers_mut();
|
||||||
// These are valid latin-1 strings
|
// These are valid latin-1 strings
|
||||||
|
@ -458,7 +466,7 @@ pub fn op_set_response_header(index: u32, name: &str, value: &str) {
|
||||||
}
|
}
|
||||||
|
|
||||||
#[op]
|
#[op]
|
||||||
pub fn op_set_response_headers(
|
pub fn op_http_set_response_headers(
|
||||||
index: u32,
|
index: u32,
|
||||||
headers: Vec<(ByteString, ByteString)>,
|
headers: Vec<(ByteString, ByteString)>,
|
||||||
) {
|
) {
|
||||||
|
@ -476,7 +484,7 @@ pub fn op_set_response_headers(
|
||||||
}
|
}
|
||||||
|
|
||||||
#[op(fast)]
|
#[op(fast)]
|
||||||
pub fn op_set_response_body_resource(
|
pub fn op_http_set_response_body_resource(
|
||||||
state: &mut OpState,
|
state: &mut OpState,
|
||||||
index: u32,
|
index: u32,
|
||||||
stream_rid: ResourceId,
|
stream_rid: ResourceId,
|
||||||
|
@ -502,7 +510,7 @@ pub fn op_set_response_body_resource(
|
||||||
}
|
}
|
||||||
|
|
||||||
#[op(fast)]
|
#[op(fast)]
|
||||||
pub fn op_set_response_body_stream(
|
pub fn op_http_set_response_body_stream(
|
||||||
state: &mut OpState,
|
state: &mut OpState,
|
||||||
index: u32,
|
index: u32,
|
||||||
) -> Result<ResourceId, AnyError> {
|
) -> Result<ResourceId, AnyError> {
|
||||||
|
@ -521,7 +529,7 @@ pub fn op_set_response_body_stream(
|
||||||
}
|
}
|
||||||
|
|
||||||
#[op(fast)]
|
#[op(fast)]
|
||||||
pub fn op_set_response_body_text(index: u32, text: String) {
|
pub fn op_http_set_response_body_text(index: u32, text: String) {
|
||||||
if !text.is_empty() {
|
if !text.is_empty() {
|
||||||
with_resp_mut(index, move |response| {
|
with_resp_mut(index, move |response| {
|
||||||
response
|
response
|
||||||
|
@ -534,7 +542,7 @@ pub fn op_set_response_body_text(index: u32, text: String) {
|
||||||
}
|
}
|
||||||
|
|
||||||
#[op(fast)]
|
#[op(fast)]
|
||||||
pub fn op_set_response_body_bytes(index: u32, buffer: &[u8]) {
|
pub fn op_http_set_response_body_bytes(index: u32, buffer: &[u8]) {
|
||||||
if !buffer.is_empty() {
|
if !buffer.is_empty() {
|
||||||
with_resp_mut(index, |response| {
|
with_resp_mut(index, |response| {
|
||||||
response
|
response
|
||||||
|
@ -759,7 +767,7 @@ impl Drop for HttpJoinHandle {
|
||||||
}
|
}
|
||||||
|
|
||||||
#[op(v8)]
|
#[op(v8)]
|
||||||
pub fn op_serve_http(
|
pub fn op_http_serve(
|
||||||
state: Rc<RefCell<OpState>>,
|
state: Rc<RefCell<OpState>>,
|
||||||
listener_rid: ResourceId,
|
listener_rid: ResourceId,
|
||||||
) -> Result<(ResourceId, &'static str, String), AnyError> {
|
) -> Result<(ResourceId, &'static str, String), AnyError> {
|
||||||
|
@ -814,7 +822,7 @@ pub fn op_serve_http(
|
||||||
}
|
}
|
||||||
|
|
||||||
#[op(v8)]
|
#[op(v8)]
|
||||||
pub fn op_serve_http_on(
|
pub fn op_http_serve_on(
|
||||||
state: Rc<RefCell<OpState>>,
|
state: Rc<RefCell<OpState>>,
|
||||||
conn: ResourceId,
|
conn: ResourceId,
|
||||||
) -> Result<(ResourceId, &'static str, String), AnyError> {
|
) -> Result<(ResourceId, &'static str, String), AnyError> {
|
||||||
|
|
|
@ -88,30 +88,30 @@ deno_core::extension!(
|
||||||
deps = [deno_web, deno_net, deno_fetch, deno_websocket],
|
deps = [deno_web, deno_net, deno_fetch, deno_websocket],
|
||||||
ops = [
|
ops = [
|
||||||
op_http_accept,
|
op_http_accept,
|
||||||
op_http_write_headers,
|
|
||||||
op_http_headers,
|
op_http_headers,
|
||||||
op_http_write,
|
|
||||||
op_http_write_resource,
|
|
||||||
op_http_shutdown,
|
op_http_shutdown,
|
||||||
op_http_websocket_accept_header,
|
|
||||||
op_http_upgrade_websocket,
|
op_http_upgrade_websocket,
|
||||||
http_next::op_serve_http,
|
op_http_websocket_accept_header,
|
||||||
http_next::op_serve_http_on,
|
op_http_write_headers,
|
||||||
http_next::op_http_wait,
|
op_http_write_resource,
|
||||||
|
op_http_write,
|
||||||
|
http_next::op_http_get_request_header,
|
||||||
|
http_next::op_http_get_request_headers,
|
||||||
|
http_next::op_http_get_request_method_and_url,
|
||||||
|
http_next::op_http_read_request_body,
|
||||||
|
http_next::op_http_serve_on,
|
||||||
|
http_next::op_http_serve,
|
||||||
|
http_next::op_http_set_promise_complete,
|
||||||
|
http_next::op_http_set_response_body_bytes,
|
||||||
|
http_next::op_http_set_response_body_resource,
|
||||||
|
http_next::op_http_set_response_body_stream,
|
||||||
|
http_next::op_http_set_response_body_text,
|
||||||
|
http_next::op_http_set_response_header,
|
||||||
|
http_next::op_http_set_response_headers,
|
||||||
http_next::op_http_track,
|
http_next::op_http_track,
|
||||||
http_next::op_set_response_header,
|
http_next::op_http_upgrade_raw,
|
||||||
http_next::op_set_response_headers,
|
http_next::op_http_upgrade_next,
|
||||||
http_next::op_set_response_body_text,
|
http_next::op_http_wait,
|
||||||
http_next::op_set_promise_complete,
|
|
||||||
http_next::op_set_response_body_bytes,
|
|
||||||
http_next::op_set_response_body_resource,
|
|
||||||
http_next::op_set_response_body_stream,
|
|
||||||
http_next::op_get_request_header,
|
|
||||||
http_next::op_get_request_headers,
|
|
||||||
http_next::op_get_request_method_and_url,
|
|
||||||
http_next::op_read_request_body,
|
|
||||||
http_next::op_upgrade,
|
|
||||||
http_next::op_upgrade_raw,
|
|
||||||
],
|
],
|
||||||
esm = ["00_serve.js", "01_http.js"],
|
esm = ["00_serve.js", "01_http.js"],
|
||||||
);
|
);
|
||||||
|
|
Loading…
Reference in a new issue