mirror of
https://github.com/AmruthPillai/Reactive-Resume.git
synced 2025-11-17 02:01:29 +10:00
refactor(v4.0.0-alpha): beginning of a new era
This commit is contained in:
42
libs/parser/src/reactive-resume/index.ts
Normal file
42
libs/parser/src/reactive-resume/index.ts
Normal file
@ -0,0 +1,42 @@
|
||||
import { ResumeData, resumeDataSchema } from "@reactive-resume/schema";
|
||||
import { Json } from "@reactive-resume/utils";
|
||||
import { Schema } from "zod";
|
||||
|
||||
import { Parser } from "../interfaces/parser";
|
||||
|
||||
export class ReactiveResumeParser implements Parser<Json, ResumeData> {
|
||||
schema: Schema;
|
||||
|
||||
constructor() {
|
||||
this.schema = resumeDataSchema;
|
||||
}
|
||||
|
||||
readFile(file: File): Promise<Json> {
|
||||
return new Promise((resolve, reject) => {
|
||||
const reader = new FileReader();
|
||||
|
||||
reader.onload = () => {
|
||||
try {
|
||||
const result = JSON.parse(reader.result as string) as Json;
|
||||
resolve(result);
|
||||
} catch (error) {
|
||||
reject(new Error("Failed to parse JSON"));
|
||||
}
|
||||
};
|
||||
|
||||
reader.onerror = () => {
|
||||
reject(new Error("Failed to read the file"));
|
||||
};
|
||||
|
||||
reader.readAsText(file);
|
||||
});
|
||||
}
|
||||
|
||||
validate(data: Json) {
|
||||
return this.schema.parse(data) as ResumeData;
|
||||
}
|
||||
|
||||
convert(data: ResumeData) {
|
||||
return data;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user