tachyon-drive
    Preparing search index...

    tachyon-drive

    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

    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).

    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
    };
    const driver = new MemoryStorageDriver('MemoryStorageDriver', bufferSerializer, /* externalNotify = null, processor */);
    
    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);
    });
    async function doSomethingWithDriver(driver: IStorageDriver<Data>) {
    // await driver.store({test: 'test'});
    // await driver.hydrate();
    // await driver.clear();
    }