iTechGuides is reader-supported. When you buy through links on our site, we may earn an affiliate commission. As an Amazon Associate I earn from qualifying purchases. Learn more
To use Lioran S3 from TypeScript, install its pre-alpha Node.js driver, point it at a running instance, verify the connection, and then create a bucket to upload and retrieve objects. The documented setup requires Node.js 18 or newer, TypeScript 5 or newer, and valid credentials. Lioran S3 is currently a self-hosted, single-node pre-alpha product—not a drop-in AWS S3 API replacement—so test carefully and expect APIs or operational details to change.
What you need before installing
- Node.js 18 or newer and TypeScript 5 or newer.
- A running Lioran S3 instance, plus a username and password or an access key and secret key.
- A deployment address reachable from the Node.js application.
The setup guide installs the package with the prealpha npm tag, but does not state which exact version that tag resolves to. Pin a specific tested version for repeatable deployments, and verify the version you install rather than assuming the tag stays fixed. The guide’s caution is apt: “This is pre-alpha infrastructure. Pin versions and test carefully.” Lioran S3 documentation.
Install the driver and TypeScript tooling
In a new project directory, initialize npm, install the driver, add the TypeScript development tools, and create a TypeScript configuration:
Do these 3 things before closing this tab:
1Fix the driver behind crashes, sound loss and screen glitches2Repair Windows errors before they cause bigger problems3Scan for outdated or missing drivers - takes under a minutenpm init -y
npm install @liorans3/driver@prealpha
npm install -D typescript tsx @types/node
npx tsc --init
The tsx package provides a convenient way to run TypeScript during development. Keep the package version that you have tested in your project’s dependency lockfile.
#1 Best Overall
- USB-C 2-in-1 storage OTG: The Lexar JumpDrive Dual Drive D40E features USB Type-A and Type-C connectors in a slim, portable form factor for easy device compatibility
- Transfer speeds up to 100MB/s: Based on internal testing, performance may vary depending upon the host device, interface, and usage conditions. 1MB=1,000,000 bytes
- Plug and Play: Widely compatible with USB Type-C smartphones, tablets, laptops, Macs, and traditional Type-A devices, no software installation required. The 360° swivel design allows for easy switching between connectors without the hassle of losing a cap
- Durable & Compact: The Lexar D40E USB memory stick features a metal enclosure, withstands temperatures from 0° to 50° C (32°F to 122°F), and is lightweight at 26g with dimensions of 70.4 x 16.9 x 11.7mm
- Security & Warranty: Securely protects files using an advanced security software solution with 256-bit AES encryption. Backed by a Lexar 3-year limited warranty
Configure the connection without exposing credentials
Set the connection string in your environment rather than committing a password or key to source control. The guide’s local example is:
LIORAN_S3_URI=bastion://admin:YOUR_PASSWORD@127.0.0.1:27118
Replace the placeholder with the credentials and address for your instance. Treat the value as a secret: do not commit it or print it in logs. The driver documentation also describes structured username/password and access-key/secret-key configuration if you do not want to use a connection string.
Rank #2
- 2 in 1: USB C + USB 3.0, 32GB usb c flash drive has dual ports, usb 3.0 port is applied to all devices which have usb 3.0 interface and usb c port is widely used in all Android smartphones with OTG function
- High Speed USB 3.0: Read speed up to 90 MB/s, Write speed up to 30 MB/s, the speed of USB 3.0 interface is faster than USB 2.0, save time to wait, increases work productivity. Note: Speed will be limited if you use the USB key in the USB 2.0 interface
- Large Compatibility: The USB 3.0 Connector is compatible with USB 3.0 & USB 2.0 backward USB 1.1 devices, such as Laptop, Desktop, Car Audio, Tablet, TV, Speakers, Projector. USB-C port is compatible with all Android Smartphones
- Expand Storage: Good performance in storing, transferring and sharing digital data with families, friends, colleagues, customers. It can expand the capacity of smartphone, you can watch movies or share pictures when you go on vacation with your family
- Note: Make sure your smartphone is equipped with OTG function and need to open OTG function in Settings when you plug memory stick, then you can transfer easily data bewteen different devices
For local or private addresses, the guide says the driver normally uses HTTP and the native Bastion port. Public domains can resolve to HTTPS, but the storage process itself does not terminate TLS. For a public deployment, place it behind a TLS-terminating reverse proxy such as Caddy or Nginx; do not assume the application process provides public HTTPS by itself. Lioran S3 overview.
Connect and check that the instance is healthy
Read the connection string from the environment, construct a BastionClient, and call health() before attempting storage operations. The returned health information includes the service name and version.
Rank #3
- USB-C 2-in-1 storage OTG: The Lexar JumpDrive Dual Drive D40E features USB Type-A and Type-C connectors in a slim, portable form factor for easy device compatibility
- Transfer speeds up to 100MB/s: Based on internal testing, performance may vary depending upon the host device, interface, and usage conditions. 1MB=1,000,000 bytes
- Plug and Play: Widely compatible with USB Type-C smartphones, tablets, laptops, Macs, and traditional Type-A devices, no software installation required. The 360° swivel design allows for easy switching between connectors without the hassle of losing a cap
- Durable & Compact: The Lexar D40E USB memory stick features a metal enclosure, withstands temperatures from 0° to 50° C (32°F to 122°F), and is lightweight at 26g with dimensions of 70.4 x 16.9 x 11.7mm
- Security & Warranty: Securely protects files using an advanced security software solution with 256-bit AES encryption. Backed by a Lexar 3-year limited warranty
import { BastionClient } from "@liorans3/driver";
const uri = process.env.LIORAN_S3_URI;
if (!uri) {
throw new Error("Set LIORAN_S3_URI before starting the application");
}
const client = new BastionClient(uri);
const health = await client.health();
console.log(`Connected to ${health.service} ${health.version}`);
If the check fails, first confirm that the instance is running and reachable from this process, then check the address and credentials. Avoid logging the URI while troubleshooting.
Create a bucket, upload an object, and read it back
The documented flow creates a bucket through client.buckets.create(), gets a bucket handle with client.bucket(name), and uses that handle for object operations. This example uploads text, retrieves it, and prints the result:
Rank #4
- 2-in-1 Dual Design: Features both USB-C and USB-A connectors, making it compatible with phones, tablets, MacBooks, PCs, and laptops-no adapter needed
- Wide Compatibility: Works seamlessly with USB A and USB C devices, ensuring reliable file transfers across smartphones, computers, and more
- Ample Storage Options: Available in 16GB/32GB/64GB/128GB providing plenty of space for photos, videos, music, and documents
- Portable & Lightweight: Compact and durable design for travel, school, or daily use-take your files anywhere
- Plug-and-Play Convenience: No software or drivers required; simply insert into USB-C or USB-A ports and start transferring files instantly
await client.buckets.create("demo");
const bucket = client.bucket("demo");
const uploaded = await bucket.put(
"notes/hello.txt",
"Hello from TypeScript",
{ contentType: "text/plain" }
);
console.log({ key: uploaded.key, size: uploaded.size, sha256: uploaded.sha256 });
const object = await bucket.get("notes/hello.txt");
console.log(await object.text());
The upload result exposes the object key, its size in bytes, and its SHA-256 value. For JSON, serialize the value before uploading and set an appropriate content type; on retrieval, use object.json<T>() to parse it as a typed value.
The Tool Desk
Outbyte Driver Updater FREEFix the driver behind crashes, sound loss and screen glitchesFind Drivers →Outbyte PC Repair FREEClear out junk files and repair common Windows errorsFree Scan →Choose the right object operation
| Need | Driver method | What it does |
|---|---|---|
| Upload text or serialized data | bucket.put(key, value, { contentType }) |
Stores an object and returns its key, size in bytes, and SHA-256. |
| Upload a large file | bucket.put(key, readStream, { contentType }) |
Accepts a Node.js read stream so the whole file need not be loaded into memory. |
| Download and read text | bucket.get(key), then object.text() |
Retrieves an object and exposes its text. |
| Download and parse JSON | bucket.get(key), then object.json<T>() |
Parses the retrieved object as a typed JSON value. |
| Write a retrieved object to disk | object.writeToFile(path) |
Writes the retrieved object to a local file. |
| Inspect metadata without downloading | bucket.head(key) |
Returns metadata such as content type, content length, ETag, and SHA-256. |
| Remove an object | bucket.delete(key) |
Deletes the object at the supplied key. |
| List matching objects | bucket.listPage({ prefix, limit }) or bucket.list({ prefix }) |
listPage returns one page and pagination metadata; list paginates through results. |
Handle failures and avoid leaking secrets
The driver documents structured errors for authentication, connection, not-found, quota, and general Bastion failures. Catch and handle those categories in the application where appropriate—for example, distinguish an invalid credential from a missing object rather than treating every failure as a retryable network problem. Keep credentials and full connection strings out of error logs.
Best Value
- USB-C STORAGE ON THE GO: This sleek drive is supported by Samsung NAND flash and is incredibly compact to fit in the palm of your hand; Count on reliable performance and fast transfer speeds while staying compact
- PERFORMANCE WITH SPEED: No need to choose between performance and reliability; Experience a fast, powerful flash drive that transfers 4GB files in just 11 seconds with up to 400MB/s USB 3.2 Gen 1 read speeds and is backward compatible with USB 3.0/2.0
- MODERN MEETS ICONIC: The ultra-sleek USB-C drive looks as good as it performs; Featuring a reversible plug, the Type-C inserts into your devices seamlessly every time; Transfer large files with style and ease
- ALWAYS CONNECTED: USB-C is compatible across devices, including laptops, tablets, phones and cameras, with enough space for 63,730 photos or maximum 12 hours of 4K video; With up to 256GB of storage space, this pocket-sized thumb drive comes in handy wherever you go
- TOUGH & TRUSTED: Files stay secure, no matter the terrain; Samsung's flash memory technology makes the Type-C a trustworthy drive to store your valuable data; It's waterproof, shock-proof, magnet-proof, temperature-proof, and X-ray-proof body, plus it's backed by a 5-year limited warranty
Know the current product boundaries
Lioran S3 V1 is described as pre-alpha, self-hosted, and single-node. Its current release is not a drop-in AWS S3 API compatibility layer. AWS S3 compatibility, lifecycle rules, webhooks, finer-grained policies, clustering, and replication are identified as roadmap items, not available capabilities in the overview. Lioran S3 overview.
The overview also labels its media subsystem experimental. It lists video transcoding and HLS generation, along with image resizing and conversion, and says those features require ffmpeg and ffprobe on the host. Treat media processing separately from the core object-storage workflow.
The product overview warns that pre-alpha APIs, storage formats, protocol details, SDK behavior, and operational assumptions may change. The available documentation does not establish the current exact release behind the npm tag, maintenance cadence, or support commitments; check the package and project documentation when making deployment decisions.
Quick Recap
Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.

