Package Exports
- @archildata/client
- @archildata/client/index.js
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (@archildata/client) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
@archil/node
High-performance Node.js bindings for the Archil distributed filesystem client.
Overview
This package provides low-level N-API bindings to the Archil client library, exposing the ArchilService trait methods directly to JavaScript/TypeScript. It's designed for use cases where you need direct protocol access without FUSE overhead.
Installation
npm install @archil/nodeUsage
import { ArchilClient } from '@archil/node';
// Connect to Archil (authenticated via mount server)
const client = await ArchilClient.connectAuthenticated({
mountServer: 'https://mount.archil.io',
mountName: 'my-account/my-disk',
});
// Get root directory attributes
const rootAttrs = await client.getAttributes(1n);
console.log('Root size:', rootAttrs.size);
// List directory contents
const entries = await client.readDirectory(1n);
for (const entry of entries) {
console.log(`${entry.name} (inode: ${entry.inodeId})`);
}
// Read a file
const lookup = await client.lookupInode(1n, 'myfile.txt');
const data = await client.readInode(lookup.inodeId, 0n, 1024);
console.log('File content:', data.toString());
// Close when done
await client.close();API
ArchilClient
The main client class for interacting with Archil filesystems.
Connection Methods
connectDirect(config)- Connect directly to a server (for testing)connectAuthenticated(config)- Connect via mount server with authentication
Metadata Operations
getAttributes(inodeId, user?)- Get inode attributeslookupInode(parentInodeId, name, user?)- Lookup entry by namereadDirectory(inodeId, offset?, cookie?, user?)- List directory entriesgetExtendedAttribute(inodeId, name, user?)- Get xattr valuelistExtendedAttributes(inodeId, user?)- List xattr names
Data Operations
readInode(inodeId, offset, length, user?)- Read file data
Delegation Operations
checkout(inodeId, force?, user?)- Acquire write delegationcheckin(inodeId, user?)- Release delegationcheckinAll()- Release all delegations
Mutation Operations
conditionalCreate(parentInodeId, name, childInodeId, attributes, user?)- Create file/directorysetImmutable(inodeId)- Mark subtree as immutablesetMutable(inodeId)- Mark subtree as mutablelistImmutableSubtrees()- List immutable roots
Types
All inode IDs and file offsets use JavaScript bigint for 64-bit support:
interface UnixUser {
uid: number;
gid: number;
}
interface InodeAttributes {
inodeId: bigint;
inodeType: 'File' | 'Directory' | 'Symlink' | ...;
size: bigint;
uid: number;
gid: number;
mode: number;
nlink: number;
ctimeMs: number;
atimeMs: number;
mtimeMs: number;
btimeMs: number;
rdev?: bigint;
symlinkTarget?: string;
}
interface DirectoryEntry {
name: string;
inodeId: bigint;
inodeType: string;
}Building
This package uses napi-rs for native bindings. To build from source:
cd rust-libs/archil-node
npm install
npm run buildLicense
Proprietary - Archil Inc.