Skip to content

Commit

Permalink
replace JSON.parse(JSON.stringify({})) with structuredClone({})
Browse files Browse the repository at this point in the history
  • Loading branch information
AmruthPillai committed May 10, 2024
1 parent c1a5811 commit a102f62
Show file tree
Hide file tree
Showing 8 changed files with 12 additions and 15 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -91,7 +91,7 @@ export const CustomFieldsSection = ({ className }: Props) => {

const onChangeCustomField = (field: ICustomField) => {
const index = customFields.findIndex((item) => item.id === field.id);
const newCustomFields = JSON.parse(JSON.stringify(customFields)) as ICustomField[];
const newCustomFields = structuredClone(customFields);
newCustomFields[index] = field;

setValue("basics.customFields", newCustomFields);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -163,15 +163,15 @@ export const LayoutSection = () => {
};

const onAddPage = () => {
const layoutCopy = JSON.parse(JSON.stringify(layout)) as string[][][];
const layoutCopy = structuredClone(layout);

layoutCopy.push([[], []]);

setValue("metadata.layout", layoutCopy);
};

const onRemovePage = (page: number) => {
const layoutCopy = JSON.parse(JSON.stringify(layout)) as string[][][];
const layoutCopy = structuredClone(layout);

layoutCopy[0][0].push(...layoutCopy[page][0]); // Main
layoutCopy[0][1].push(...layoutCopy[page][1]); // Sidebar
Expand All @@ -182,7 +182,7 @@ export const LayoutSection = () => {
};

const onResetLayout = () => {
const layoutCopy = JSON.parse(JSON.stringify(defaultMetadata.layout)) as string[][][];
const layoutCopy = structuredClone(defaultMetadata.layout);

// Loop through all pages and columns, and get any sections that start with "custom."
// These should be appended to the first page of the new layout.
Expand Down
6 changes: 3 additions & 3 deletions apps/client/src/stores/resume.ts
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ export const useResumeStore = create<ResumeStore>()(
state.resume.data = _set(state.resume.data, path, value);
}

void debouncedUpdateResume(JSON.parse(JSON.stringify(state.resume)));
void debouncedUpdateResume(structuredClone(state.resume));
});
},
addSection: () => {
Expand All @@ -51,7 +51,7 @@ export const useResumeStore = create<ResumeStore>()(
state.resume.data.metadata.layout[lastPageIndex][0].push(`custom.${section.id}`);
state.resume.data = _set(state.resume.data, `sections.custom.${section.id}`, section);

void debouncedUpdateResume(JSON.parse(JSON.stringify(state.resume)));
void debouncedUpdateResume(structuredClone(state.resume));
});
},
removeSection: (sectionId: SectionKey) => {
Expand All @@ -63,7 +63,7 @@ export const useResumeStore = create<ResumeStore>()(
// eslint-disable-next-line @typescript-eslint/no-dynamic-delete
delete state.resume.data.sections.custom[id];

void debouncedUpdateResume(JSON.parse(JSON.stringify(state.resume)));
void debouncedUpdateResume(structuredClone(state.resume));
});
}
},
Expand Down
3 changes: 1 addition & 2 deletions libs/parser/src/json-resume/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,6 @@ import {
defaultResumeData,
defaultSkill,
defaultVolunteer,
ResumeData,
} from "@reactive-resume/schema";
import { Json } from "@reactive-resume/utils";
import { Schema } from "zod";
Expand Down Expand Up @@ -58,7 +57,7 @@ export class JsonResumeParser implements Parser<Json, JsonResume> {
}

convert(data: JsonResume) {
const result = JSON.parse(JSON.stringify(defaultResumeData)) as ResumeData;
const result = structuredClone(defaultResumeData);

// Basics
result.basics.name = data.basics?.name ?? "";
Expand Down
3 changes: 1 addition & 2 deletions libs/parser/src/linkedin/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,6 @@ import {
defaultProject,
defaultResumeData,
defaultSkill,
ResumeData,
resumeDataSchema,
} from "@reactive-resume/schema";
import { extractUrl, Json, parseArrayLikeCSVEntry, parseCSV } from "@reactive-resume/utils";
Expand Down Expand Up @@ -58,7 +57,7 @@ export class LinkedInParser implements Parser<JSZip, LinkedIn> {
}

convert(data: LinkedIn) {
const result = JSON.parse(JSON.stringify(defaultResumeData)) as ResumeData;
const result = structuredClone(defaultResumeData);

// Profile
if (data.Profile && data.Profile.length > 0) {
Expand Down
3 changes: 1 addition & 2 deletions libs/parser/src/reactive-resume-v3/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,6 @@ import {
defaultResumeData,
defaultSkill,
defaultVolunteer,
ResumeData,
} from "@reactive-resume/schema";
import { isUrl, Json } from "@reactive-resume/utils";
import { Schema } from "zod";
Expand Down Expand Up @@ -60,7 +59,7 @@ export class ReactiveResumeV3Parser implements Parser<Json, ReactiveResumeV3> {
}

convert(data: ReactiveResumeV3) {
const result = JSON.parse(JSON.stringify(defaultResumeData)) as ResumeData;
const result = structuredClone(defaultResumeData);

// Basics
result.basics.name = data.basics.name ?? "";
Expand Down
2 changes: 1 addition & 1 deletion libs/utils/src/namespaces/array.ts
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ export const moveItemInLayout = (
): string[][][] => {
try {
// Create a deep copy of the layout to avoid mutating the original array
const newLayout = JSON.parse(JSON.stringify(layout)) as string[][][];
const newLayout = structuredClone(layout);

// Get the item from the current location
const item = newLayout[current.page][current.column][current.section];
Expand Down
2 changes: 1 addition & 1 deletion libs/utils/src/namespaces/tests/array.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -84,7 +84,7 @@ describe("moveItemInLayout", () => {
[["item1"], ["item2"]],
[["item3"], ["item4"]],
];
const layoutCopy = JSON.parse(JSON.stringify(layout));
const layoutCopy = structuredClone(layout);
const current = { page: 0, column: 1, section: 0 };
const target = { page: 1, column: 0, section: 1 };

Expand Down

0 comments on commit a102f62

Please sign in to comment.