0.10.1 • Published 9 months ago

tachyon-drive v0.10.1

Weekly downloads
-
License
MIT
Repository
github
Last release
9 months ago

tachyon-drive

TypeScript npm version Maintainability Test Coverage github action

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

0.9.3

10 months ago

0.10.1

9 months ago

0.10.0

9 months ago

0.9.0

10 months ago

0.9.2

10 months ago

0.9.1

10 months ago

0.8.0

1 year ago

0.7.0

1 year ago

0.5.0

1 year ago

0.6.0

1 year ago

0.5.1

1 year ago

0.3.5

1 year ago

0.3.4

2 years ago

0.1.0

2 years ago

0.3.0

2 years ago

0.2.1

2 years ago

0.1.2

2 years ago

0.2.0

2 years ago

0.1.1

2 years ago

0.3.2

2 years ago

0.2.3

2 years ago

0.1.4

2 years ago

0.3.1

2 years ago

0.2.2

2 years ago

0.1.3

2 years ago

0.3.3

2 years ago

0.2.4

2 years ago

0.1.5

2 years ago

0.0.8

2 years ago

0.0.7

2 years ago

0.0.6

2 years ago

0.0.5

2 years ago

0.0.4

2 years ago

0.0.3

2 years ago

0.0.2

2 years ago

0.0.1

2 years ago