Skip to content

Commit e25e54b

Browse files
committed
bugfix: Large LandXMLs in web worker
1 parent 4604335 commit e25e54b

File tree

3 files changed

+17
-4
lines changed

3 files changed

+17
-4
lines changed

.changeset/three-seahorses-provide.md

+5
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
"landxml": patch
3+
---
4+
5+
bugfix: Parsing large LandXMLs now correctly parses on web workers

src/easyWebWorkerMock.ts

+10-2
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,16 @@ import EasyWebWorker, { createEasyWebWorker } from "easy-web-worker";
55
const fakeCreateEasyWebWorker = (callback: (onMessage: any) => void) => ({
66
send: (payload: any) =>
77
new Promise(async (resolve, reject) => {
8-
const onMessage = (callback: ({ payload, resolve }: { payload: any; resolve: any }) => void) => {
9-
callback({ payload, resolve });
8+
const onMessage = (
9+
callback: ({ payload, resolve }: { payload: any; resolve: any; reject: (error: string) => void }) => void
10+
) => {
11+
callback({
12+
payload,
13+
resolve,
14+
reject: (e: any) => {
15+
console.error(e);
16+
},
17+
});
1018
};
1119
callback({ onMessage });
1220
}),

src/private/parse-xml.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -160,7 +160,7 @@ const parseXML = async (xmlString: string): Promise<ParsedSurface[]> =>
160160
}
161161

162162
if (Faces.length > 10000) {
163-
const sliceIndexes = [...Array(20).keys()].map((i) => Math.round((Faces.length / 20) * i));
163+
const sliceIndexes = [...Array(20).keys()].map((i) => Math.round(((faces.length - 1) / 20) * i));
164164
faceNeighbors = (
165165
(await Promise.all(
166166
sliceIndexes.map(
@@ -185,7 +185,7 @@ const parseXML = async (xmlString: string): Promise<ParsedSurface[]> =>
185185
faces,
186186
range: {
187187
start: 0,
188-
end: faces.length,
188+
end: faces.length - 1,
189189
},
190190
})) as [number, number, number][];
191191
}

0 commit comments

Comments
 (0)