pcb-scene3d-viewer 1.3.4 → 1.3.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -47,6 +47,11 @@ second quarter-turn when the imported assembly envelope proves that its depth
47
47
  and height axes are already exchanged. See the
48
48
  [1.3.3 release notes](docs/release-notes-v1.3.3.md).
49
49
 
50
+ Version 1.3.6 requires the matching OCCT 0.0.29 worker. Version 1.3.5 reports
51
+ OCCT worker resource failures to the current STEP load
52
+ and permits a later retry. See the
53
+ [1.3.5 release notes](docs/release-notes-v1.3.5.md).
54
+
50
55
  ## CircuitJSON 1.1 convergence
51
56
 
52
57
  Version 1.2.2 accepts the common document and prepared-context shapes returned
@@ -155,6 +160,8 @@ const controller = new PcbScene3dController(viewportNode, document)
155
160
 
156
161
  - [API](docs/api.md)
157
162
  - [CircuitJSON usage](docs/circuitjson.md)
163
+ - [1.3.5 release notes](docs/release-notes-v1.3.5.md)
164
+ - [1.3.6 release notes](docs/release-notes-v1.3.6.md)
158
165
  - [1.3.3 release notes](docs/release-notes-v1.3.3.md)
159
166
  - [1.3.2 release notes](docs/release-notes-v1.3.2.md)
160
167
  - [1.3.1 release notes](docs/release-notes-v1.3.1.md)
package/docs/api.md CHANGED
@@ -212,6 +212,9 @@ are unavailable, the viewer dynamically imports the ESM factory directly; it
212
212
  does not inject a classic script or depend on a global factory. Worker transfer
213
213
  uses a loader-owned byte snapshot, and rejected ESM initialization is evicted
214
214
  so callers retain their input and can retry transient failures.
215
+ Worker resource failures are returned to the loader as failed import results;
216
+ the loader rejects the affected request with the reported cause and can retry
217
+ the next load without an uncaught worker exception.
215
218
 
216
219
  Static `authHeaders` are sent only to the main model origin. A host that
217
220
  intentionally authorizes another origin can return headers from
@@ -0,0 +1,8 @@
1
+ # pcb-scene3d-viewer 1.3.5
2
+
3
+ The STEP loader now forwards a failed OCCT worker result with its resource
4
+ failure message instead of reporting only that the importer returned no meshes.
5
+ Failed loads are evicted from the model cache, so a later request can retry.
6
+
7
+ This release pairs with `@sunbox/occt-import-js` 0.0.29, which posts failures
8
+ as results rather than uncaught worker exceptions.
@@ -0,0 +1,7 @@
1
+ # pcb-scene3d-viewer 1.3.6
2
+
3
+ This release requires `@sunbox/occt-import-js` 0.0.29 so installs of the viewer
4
+ use the worker that returns resource failures to the STEP loader. It avoids a
5
+ nested copy of the earlier worker when the host app also uses 0.0.29.
6
+
7
+ The STEP loader behavior introduced in 1.3.5 is unchanged.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pcb-scene3d-viewer",
3
- "version": "1.3.4",
3
+ "version": "1.3.6",
4
4
  "description": "Reusable Three.js PCB 3D scene viewer for normalized ECAD and CircuitJSON scene descriptions",
5
5
  "keywords": [
6
6
  "pcb",
@@ -40,6 +40,8 @@
40
40
  "docs/release-notes-v1.3.1.md",
41
41
  "docs/release-notes-v1.3.2.md",
42
42
  "docs/release-notes-v1.3.3.md",
43
+ "docs/release-notes-v1.3.5.md",
44
+ "docs/release-notes-v1.3.6.md",
43
45
  "docs/model-format.md",
44
46
  "docs/testing.md",
45
47
  "spec",
@@ -60,7 +62,7 @@
60
62
  "check:format": "prettier --check ."
61
63
  },
62
64
  "dependencies": {
63
- "@sunbox/occt-import-js": "^0.0.28",
65
+ "@sunbox/occt-import-js": "^0.0.29",
64
66
  "circuitjson-toolkit": "^1.4.3",
65
67
  "earcut": "3.0.2",
66
68
  "fflate": "^0.8.2",
@@ -234,6 +234,17 @@ export class PcbScene3dStepLoader {
234
234
  #handleWorkerMessage(event) {
235
235
  const activeRequest = this.#activeWorkerRequest
236
236
  this.#activeWorkerRequest = null
237
+ if (event?.data?.success === false && event.data.error) {
238
+ activeRequest?.reject(
239
+ new Error(
240
+ String(
241
+ event.data.error.message ||
242
+ 'STEP importer worker failed.'
243
+ )
244
+ )
245
+ )
246
+ return
247
+ }
237
248
  activeRequest?.resolve(event?.data || {})
238
249
  }
239
250