Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

async-ioctl

Package Overview
Dependencies
Maintainers
1
Versions
23
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

async-ioctl - npm Package Compare versions

Comparing version 1.0.2 to 1.0.3

6

build/ioctl.d.ts

@@ -9,3 +9,8 @@ /// <reference types="node" />

export declare function ioctl(fd: MaybeBigInt, request: MaybeBigInt, data?: MaybeBufferPointer): Promise<number>;
declare const BaseError: ErrorConstructor;
export declare namespace ioctl {
class Error extends BaseError {
readonly code: number;
constructor(code: number);
}
function batch(...calls: [

@@ -22,2 +27,3 @@ fd: MaybeBigInt,

}
export {};
//# sourceMappingURL=ioctl.d.ts.map

35

build/ioctl.js

@@ -17,3 +17,12 @@ "use strict";

exports.ioctl = ioctl;
const BaseError = Error;
(function (ioctl) {
class Error extends BaseError {
code;
constructor(code) {
super(`ioctl error ${code}`);
this.code = code;
}
}
ioctl.Error = Error;
async function batch(...calls) {

@@ -30,5 +39,3 @@ return await new Promise((resolve, reject) => {

if (result == -1) {
const err = new Error(`Error ${error} running ioctl`);
err.code = error;
throw err;
throw new Error(error);
}

@@ -56,6 +63,12 @@ else {

async function blocking(fd, request, data) {
console.log('Calling blocking ioctl', { fd, request, data });
return await new Promise((resolve, reject) => {
try {
ioctl_node_1.default.blocking(BigInt(fd), BigInt(request), pointer(data), complete(resolve, reject));
ioctl_node_1.default.blocking(BigInt(fd), BigInt(request), pointer(data), (error, result) => {
if (result == -1) {
reject(new Error(error));
}
else {
resolve(result);
}
});
}

@@ -69,14 +82,2 @@ catch (error) {

})(ioctl = exports.ioctl || (exports.ioctl = {}));
function complete(resolve, reject) {
return (error, result) => {
if (result == -1) {
const err = new Error(`Error ${error} running ioctl`);
err.code = error;
reject(err);
}
else {
resolve(result);
}
};
}
function pointer(ptr) {

@@ -83,0 +84,0 @@ if (ptr === undefined || ptr === null) {

{
"name": "async-ioctl",
"version": "1.0.2",
"version": "1.0.3",
"license": "MIT",

@@ -5,0 +5,0 @@ "main": "build/ioctl.js",

# node-async-ioctl
Asynchronous `ioctl` for Node.js. Used for `node-nbd-client`, UNIX-only.
Asynchronous `ioctl` for Node.js. Used for [`node-nbd-client`](https://github.com/fathyb/node-nbd-client), UNIX-only.
## Usage
Three APIs are provided, all return a `Promise`:
- `ioctl(fd: number | bigint, request: number | bigint, value: number | bigint | Buffer): Promise<number>`
- meant for `ioctl` calls returning immediately. Uses the libuv thread pool.
- `ioctl.batch(batch: [fd: number | bigint, request: number | bigint, value: number | bigint | Buffer][]): Promise<number[]>`
- same as `ioctl(fd, request, value)` except requests can be submitted in batches.
- `ioctl.blocking(fd: number | bigint, request: number | bigint, value: number | bigint | Buffer): Promise<number>`
- meant for `ioctl` calls blocking until something happens. Uses a dedicated thread so more memory and higher latency.
- `ioctl(fd, request, value)`: meant for `ioctl` calls returning immediately. Uses the libuv thread pool.
- `ioctl.batch()`: same as `ioctl(fd, request, value)` except requests can be submitted in batches, lowering latency between calls.
- `ioctl.blocking()`: meant for `ioctl` calls blocking until something happens. Uses a dedicated thread so more memory and higher latency.
```js

@@ -19,4 +20,4 @@ import { open } from 'fs'

// No argument
const result = await ioctl(device.fd, 0x2000ab00)
// Get number of rows for current terminal
const rows = await ioctl(process.stdout.fd, 0x2000ab00)
// Buffer argument

@@ -23,0 +24,0 @@ const result = await ioctl(device.fd, 0x2000ab00, Buffer.from('test'))

@@ -20,3 +20,11 @@ import native from '../native/build/Release/ioctl.node'

const BaseError = Error
export namespace ioctl {
export class Error extends BaseError {
constructor(public readonly code: number) {
super(`ioctl error ${code}`)
}
}
export async function batch(

@@ -42,9 +50,3 @@ ...calls: [

if (result == -1) {
const err: any = new Error(
`Error ${error} running ioctl`,
)
err.code = error
throw err
throw new Error(error)
} else {

@@ -75,4 +77,2 @@ return result

) {
console.log('Calling blocking ioctl', { fd, request, data })
return await new Promise<number>((resolve, reject) => {

@@ -84,3 +84,9 @@ try {

pointer(data),
complete(resolve, reject),
(error: number, result: number) => {
if (result == -1) {
reject(new Error(error))
} else {
resolve(result)
}
},
)

@@ -94,19 +100,2 @@ } catch (error) {

function complete(
resolve: (result: number) => void,
reject: (error: Error) => void,
) {
return (error: number, result: number) => {
if (result == -1) {
const err: any = new Error(`Error ${error} running ioctl`)
err.code = error
reject(err)
} else {
resolve(result)
}
}
}
function pointer(ptr: undefined | MaybeBufferPointer) {

@@ -113,0 +102,0 @@ if (ptr === undefined || ptr === null) {

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc