UNPKG

@jsonjoy.com/json-pack

Version:

High-performance JSON serialization library

334 lines (333 loc) 13.4 kB
import * as msg from './messages'; import * as structs from './structs'; import { type Nfsv4LockType } from './constants'; /** * Static builder helpers for NFS v4 operations. * Provides a simpler API for constructing NFS v4 request messages. * * @example * ```ts * const response = await client.compound([ * nfs.PUTROOTFH(), * nfs.LOOKUP('file.txt'), * nfs.GETATTR([0x00000001]), * ]); * ``` */ export declare const nfs: { /** * PUTROOTFH - Set current filehandle to root of export. */ PUTROOTFH(): msg.Nfsv4PutrootfhRequest; /** * PUTFH - Set current filehandle. * @param fh - Filehandle to set as current */ PUTFH(fh: structs.Nfsv4Fh): msg.Nfsv4PutfhRequest; /** * PUTPUBFH - Set current filehandle to public filehandle. */ PUTPUBFH(): msg.Nfsv4PutpubfhRequest; /** * GETFH - Get current filehandle. */ GETFH(): msg.Nfsv4GetfhRequest; /** * LOOKUP - Lookup filename in current directory. * @param name - Filename to lookup */ LOOKUP(name: string): msg.Nfsv4LookupRequest; /** * LOOKUPP - Lookup parent directory (..). */ LOOKUPP(): msg.Nfsv4LookuppRequest; /** * GETATTR - Get file attributes. * @param attrBitmap - Attribute bitmap (array of uint32 values) */ GETATTR(attrBitmap: number[]): msg.Nfsv4GetattrRequest; /** * READDIR - Read directory entries. * @param attrBitmap - Attribute bitmap for entries (single uint32 or array) * @param cookieverf - Cookie verifier (8 bytes), defaults to zeros * @param cookie - Starting cookie, defaults to 0 * @param dircount - Max bytes for directory info, defaults to 1000 * @param maxcount - Max bytes for reply, defaults to 8192 */ READDIR(attrBitmap: number | number[], cookieverf?: Uint8Array, cookie?: bigint, dircount?: number, maxcount?: number): msg.Nfsv4ReaddirRequest; /** * ACCESS - Check access permissions. * @param accessMask - Access mask (default: 0x3f for all bits) */ ACCESS(accessMask?: number): msg.Nfsv4AccessRequest; /** * READ - Read file data. * @param offset - Byte offset to read from * @param count - Number of bytes to read * @param stateid - State ID (defaults to all zeros) */ READ(offset: bigint, count: number, stateid?: structs.Nfsv4Stateid): msg.Nfsv4ReadRequest; /** * WRITE - Write file data. * @param stateid - State ID to write to * @param offset - Byte offset * @param stable - Stable flag (Nfsv4StableHow) * @param data - Data to write */ WRITE(stateid: structs.Nfsv4Stateid, offset: bigint, stable: number, data: Uint8Array): msg.Nfsv4WriteRequest; /** * COMMIT - Commit written data to stable storage. * @param offset - Byte offset * @param count - Number of bytes */ COMMIT(offset: bigint, count: number): msg.Nfsv4CommitRequest; /** * CREATE - Create a new file. * @param objtype - Object type to create * @param objname - Name of object to create * @param createattrs - Attributes for the new object */ CREATE(objtype: structs.Nfsv4CreateType, objname: string, createattrs: structs.Nfsv4Fattr): msg.Nfsv4CreateRequest; /** * LINK - Create a hard link. * @param newname - Name for the new link */ LINK(newname: string): msg.Nfsv4LinkRequest; /** * READLINK - Read symbolic link. */ READLINK(): msg.Nfsv4ReadlinkRequest; /** * SAVEFH - Save current filehandle. */ SAVEFH(): msg.Nfsv4SavefhRequest; /** * RESTOREFH - Restore saved filehandle to current. */ RESTOREFH(): msg.Nfsv4RestorefhRequest; /** * SETATTR - Set file attributes. * @param stateid - State ID * @param attrs - Attributes to set */ SETATTR(stateid: structs.Nfsv4Stateid, attrs: structs.Nfsv4Fattr): msg.Nfsv4SetattrRequest; /** * VERIFY - Verify attributes match. * @param attrs - Attributes to verify */ VERIFY(attrs: structs.Nfsv4Fattr): msg.Nfsv4VerifyRequest; /** * NVERIFY - Verify attributes don't match. * @param attrs - Attributes to verify don't match */ NVERIFY(attrs: structs.Nfsv4Fattr): msg.Nfsv4NverifyRequest; /** * REMOVE - Remove file or directory. * @param name - Name of file/directory to remove */ REMOVE(name: string): msg.Nfsv4RemoveRequest; /** * RENAME - Rename file or directory. * @param oldname - Current name * @param newname - New name */ RENAME(oldname: string, newname: string): msg.Nfsv4RenameRequest; /** * RENEW - Renew client lease. * @param clientid - Client ID */ RENEW(clientid: bigint): msg.Nfsv4RenewRequest; /** * SETCLIENTID - Establish client ID. * @param client - Client identifier * @param callback - Callback info * @param callbackIdent - Callback identifier */ SETCLIENTID(client: structs.Nfsv4ClientId, callback: structs.Nfsv4CbClient, callbackIdent: number): msg.Nfsv4SetclientidRequest; /** * SETCLIENTID_CONFIRM - Confirm client ID. * @param clientid - Client ID to confirm * @param verifier - Verifier from SETCLIENTID response */ SETCLIENTID_CONFIRM(clientid: bigint, verifier: structs.Nfsv4Verifier): msg.Nfsv4SetclientidConfirmRequest; /** * OPEN - Open a file. * @param seqid - Sequence ID for open-owner * @param shareAccess - Share access mode (OPEN4_SHARE_ACCESS_*) * @param shareDeny - Share deny mode (OPEN4_SHARE_DENY_*) * @param owner - Open owner (clientid + owner bytes) * @param openhow - Open how structure (use OpenHow helper) * @param claim - Open claim (use OpenClaim helper) */ OPEN(seqid: number, shareAccess: number, shareDeny: number, owner: structs.Nfsv4OpenOwner, openhow: structs.Nfsv4OpenHow, claim: structs.Nfsv4OpenClaim): msg.Nfsv4OpenRequest; /** * CLOSE - Close an open file. * @param seqid - Sequence ID * @param openStateid - State ID from OPEN */ CLOSE(seqid: number, openStateid: structs.Nfsv4Stateid): msg.Nfsv4CloseRequest; /** * OPEN_CONFIRM - Confirm an open. * @param openStateid - State ID from OPEN * @param seqid - Sequence ID */ OPEN_CONFIRM(openStateid: structs.Nfsv4Stateid, seqid: number): msg.Nfsv4OpenConfirmRequest; /** * OPEN_DOWNGRADE - Downgrade open access/deny modes. * @param openStateid - State ID from OPEN * @param seqid - Sequence ID * @param shareAccess - New share access mode * @param shareDeny - New share deny mode */ OPEN_DOWNGRADE(openStateid: structs.Nfsv4Stateid, seqid: number, shareAccess: number, shareDeny: number): msg.Nfsv4OpenDowngradeRequest; /** * OPENATTR - Open named attribute directory. * @param createdir - Whether to create the directory if it doesn't exist */ OPENATTR(createdir?: boolean): msg.Nfsv4OpenattrRequest; /** * SECINFO - Get security information for a file. * @param name - Filename to get security info for */ SECINFO(name: string): msg.Nfsv4SecinfoRequest; /** * DELEGPURGE - Purge delegations (not supported). * @param clientid - Client ID */ DELEGPURGE(clientid: bigint): msg.Nfsv4DelegpurgeRequest; /** * DELEGRETURN - Return delegation (not supported). * @param stateid - Delegation stateid */ DELEGRETURN(stateid: structs.Nfsv4Stateid): msg.Nfsv4DelegreturnRequest; /** * LOCK - Lock byte range. * @param locktype - Lock type (READ_LT, WRITE_LT, READW_LT, or WRITEW_LT) * @param reclaim - True if reclaiming lock after server restart * @param offset - Starting byte offset * @param length - Length in bytes (0xFFFFFFFFFFFFFFFF for EOF) * @param locker - Lock owner info (new or existing lock owner) */ LOCK(locktype: Nfsv4LockType, reclaim: boolean, offset: bigint, length: bigint, locker: structs.Nfsv4LockOwnerInfo): msg.Nfsv4LockRequest; /** * LOCKT - Test for conflicting lock (non-blocking). * @param locktype - Lock type (READ_LT or WRITE_LT) * @param offset - Starting byte offset * @param length - Length in bytes (0xFFFFFFFFFFFFFFFF for EOF) * @param owner - Lock owner */ LOCKT(locktype: number, offset: bigint, length: bigint, owner: structs.Nfsv4LockOwner): msg.Nfsv4LocktRequest; /** * LOCKU - Unlock byte range. * @param locktype - Lock type (READ_LT or WRITE_LT) * @param seqid - Sequence number * @param lockStateid - Lock stateid from LOCK operation * @param offset - Starting byte offset * @param length - Length in bytes */ LOCKU(locktype: number, seqid: number, lockStateid: structs.Nfsv4Stateid, offset: bigint, length: bigint): msg.Nfsv4LockuRequest; /** * RELEASE_LOCKOWNER - Release all locks for a lock-owner. * @param lockOwner - Lock owner to release */ RELEASE_LOCKOWNER(lockOwner: structs.Nfsv4LockOwner): msg.Nfsv4ReleaseLockOwnerRequest; /** * Create an Nfsv4Verifier (8-byte opaque data). * @param data - 8-byte Uint8Array, defaults to zeros */ Verifier(data?: Uint8Array): structs.Nfsv4Verifier; /** * Create an Nfsv4Stateid (state identifier). * @param seqid - Sequence ID (default: 0) * @param other - 12-byte opaque data (default: zeros) */ Stateid(seqid?: number, other?: Uint8Array): structs.Nfsv4Stateid; /** * Create Nfsv4Fattr from attribute numbers (automatically converts to bitmap). * @param attrNums - Array of attribute numbers (Nfsv4Attr enum values) * @param attrVals - Encoded attribute values as byte array */ Fattr(attrNums: number[], attrVals: Uint8Array): structs.Nfsv4Fattr; /** * Create Nfsv4ClientId (client identifier). * @param verifier - 8-byte verifier * @param id - Variable-length client ID bytes */ ClientId(verifier: structs.Nfsv4Verifier, id: Uint8Array): structs.Nfsv4ClientId; /** * Create Nfsv4CbClient (callback client information). * @param cbProgram - Callback program number * @param rNetid - Network ID string (e.g., 'tcp', 'udp') * @param rAddr - Network address string (e.g., '127.0.0.1.8.1') */ CbClient(cbProgram: number, rNetid: string, rAddr: string): structs.Nfsv4CbClient; /** * Create Nfsv4Bitmap from attribute numbers. * @param attrNums - Array of attribute numbers (Nfsv4Attr enum values) */ Bitmap(attrNums: number[]): structs.Nfsv4Bitmap; /** * Create Nfsv4CreateType for regular file creation. */ CreateTypeFile(): structs.Nfsv4CreateType; /** * Create Nfsv4CreateType for directory creation. */ CreateTypeDir(): structs.Nfsv4CreateType; /** * Create Nfsv4OpenOwner (open owner identifier). * @param clientid - Client ID * @param owner - Owner bytes (unique identifier) */ OpenOwner(clientid: bigint, owner: Uint8Array): structs.Nfsv4OpenOwner; /** * Create Nfsv4OpenClaim for CLAIM_NULL (open by filename). * @param filename - Name of file to open */ OpenClaimNull(filename: string): structs.Nfsv4OpenClaim; /** * Create Nfsv4OpenHow for OPEN4_NOCREATE (open existing file). */ OpenHowNoCreate(): structs.Nfsv4OpenHow; /** * Create Nfsv4OpenHow for OPEN4_CREATE with UNCHECKED4 mode. * @param createattrs - Optional file attributes to set on create */ OpenHowCreateUnchecked(createattrs?: structs.Nfsv4Fattr): structs.Nfsv4OpenHow; /** * Create Nfsv4OpenHow for OPEN4_CREATE with GUARDED4 mode. * @param createattrs - Optional file attributes to set on create */ OpenHowCreateGuarded(createattrs?: structs.Nfsv4Fattr): structs.Nfsv4OpenHow; /** * Create Nfsv4OpenHow for OPEN4_CREATE with EXCLUSIVE4 mode. * @param verifier - 8-byte verifier for exclusive create */ OpenHowCreateExclusive(verifier: structs.Nfsv4Verifier): structs.Nfsv4OpenHow; /** * Create Nfsv4LockOwner (lock owner identifier). * @param clientid - Client ID * @param owner - Owner bytes (unique identifier) */ LockOwner(clientid: bigint, owner: Uint8Array): structs.Nfsv4LockOwner; /** * Create Nfsv4LockOwnerInfo for new lock owner (open_to_lock_owner). * @param openSeqid - Current open-owner seqid * @param openStateid - Open stateid from OPEN operation * @param lockSeqid - Initial lock-owner seqid (typically 0) * @param lockOwner - Lock owner identifier */ NewLockOwner(openSeqid: number, openStateid: structs.Nfsv4Stateid, lockSeqid: number, lockOwner: structs.Nfsv4LockOwner): structs.Nfsv4LockOwnerInfo; /** * Create Nfsv4LockOwnerInfo for existing lock owner. * @param lockStateid - Lock stateid from previous LOCK operation * @param lockSeqid - Lock-owner seqid */ ExistingLockOwner(lockStateid: structs.Nfsv4Stateid, lockSeqid: number): structs.Nfsv4LockOwnerInfo; /** * ILLEGAL - Illegal operation (for testing RFC 7530 §15.2.4 compliance). * This operation is used to test server handling of illegal operation codes. * Per RFC 7530, the server should respond with NFS4ERR_OP_ILLEGAL. */ ILLEGAL(): msg.Nfsv4IllegalRequest; };