Handling Errors and Returning Data with Effect in TypeScript

Hard to write effectful code man .. ngl for the first time

import { Effect , Data} from "effect";

class ResumeParseArrayBufferError extends Data.TaggedError("ResumeParseArrayBufferError")<{
    message: string;
}>{}

class ResumeParseError extends Data.TaggedError("ResumeParseError")<{
    message: string;
}>{}


const FetchResumeDetails = (resumePath: string) => { 

    return Effect.promise(async () => { 
        const pdf = require("pdf-parse");
        const dataBuffer = Effect.tryPromise({ 
            try: async () => { 
                const dataBuffer = await Bun.file(resumePath).arrayBuffer();
                return dataBuffer as unknown as Buffer;
            },
            catch: (error) => { 




                return new ResumeParseArrayBufferError({
                    message: error instanceof Error ? error.message : "Unknown error",
                });
            }
        })



        const data = dataBuffer.pipe(
            Effect.catchTags({
                ResumeParseArrayBufferError: (error) => {
                    return Effect.fail(error);
                },
            }), 
// Want to get Array buffer here and suceed with it so final value of data is a string :) 
            
        )

        return data;
    });
};
Was this page helpful?