tachyon-drive
v0.10.2
Published
Extendable typescript/javascript storage driver implementation
Downloads
176
Readme
tachyon-drive
tachyon-drive is an extendable TypeScript (JavaScript) storage driver implementation that provides a simple interface for storing and retrieving data using a specified storage mechanism. It includes a built-in memory storage driver, as well as support for other storage drivers such as file storage and Azure Blob Storage module
Idea behind the Tachyon-Drive
Tachyon-Drive to be solid basic building block for more complex operations which requires storing data to some storage. As example, storing Map of verified user JWT token payloads to storage which is shared with multiple backends for cache and validation purposes (and gets store updates via onUpdate callback from driver).
Detailed API Documentation.
Usage examples
const dataSchema = zod.object({
test: zod.string(),
});
type Data = zod.infer<typeof dataSchema>;
// example serializer for Data to Buffer with optional validation
const bufferSerializer: IPersistSerializer<Data, Buffer> = {
serialize: (data: Data) => Buffer.from(JSON.stringify(data)),
deserialize: (buffer: Buffer) => JSON.parse(buffer.toString()),
validator: (data: Data) => dataSchema.safeParse(data).success, // optional deserialization validation
};
Initialize simple JSON to buffer storage driver
const driver = new MemoryStorageDriver('MemoryStorageDriver', bufferSerializer, /* externalNotify = null, processor */);
Driver usage
await driver.init(); // initialize driver early
await driver.store({test: 'test'}); // store to the file
const data = await driver.hydrate(); // restore from file
await driver.clear(); // clear storage
driver.onUpdate((data: Data) => {
// listen for updates (if implemeting driver supports this)
console.log('data updated', data);
});
// listen driver state changes
driver.onHydrate((state: boolean) => {
console.log('data hydrate state change', state);
});
driver.onStore((state: boolean) => {
console.log('data store state change', state);
});
how to use generic driver type on function calls
async function doSomethingWithDriver(driver: IStorageDriver<Data>) {
// await driver.store({test: 'test'});
// await driver.hydrate();
// await driver.clear();
}
Other implementing drivers
- FileStorageDriver for nodejs + NodeJS AES cryption processor
- AzureBlobStorageDriver for Azure Blob Storage
- MemcachedStorageDriver for Memcached
- AwsS3StorageDriver for S3 compatible storage
- RedisStorageDriver for Redis storage