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;
});
};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;
});
};