brepjs 18.118.13 → 18.118.15

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.
Files changed (39) hide show
  1. package/dist/2d.cjs +4 -4
  2. package/dist/2d.js +4 -4
  3. package/dist/{blueprint-DF-Ig1SW.cjs → blueprint-CN536u9V.cjs} +8 -3
  4. package/dist/{blueprint-CJ7k25eW.js → blueprint-dqI319c7.js} +8 -3
  5. package/dist/{blueprintFns-CjvHOuIy.cjs → blueprintFns-CF-6WzuR.cjs} +2 -2
  6. package/dist/{blueprintFns-BKtVfo16.js → blueprintFns-Ci1QVESM.js} +2 -2
  7. package/dist/{blueprintSketcher-DRGumaWR.cjs → blueprintSketcher-CGnohIOe.cjs} +1 -1
  8. package/dist/{blueprintSketcher-BIUHqWo9.js → blueprintSketcher-CY9DgQqk.js} +1 -1
  9. package/dist/{boolean2D-Buf04D7l.js → boolean2D-CaAwVwCR.js} +2 -2
  10. package/dist/{boolean2D-5WdQm5Kb.cjs → boolean2D-DnBT9gQ5.cjs} +2 -2
  11. package/dist/brepjs.cjs +105 -64
  12. package/dist/brepjs.js +105 -64
  13. package/dist/{cameraFns-CiGOarQ4.cjs → cameraFns-Ckw5prda.cjs} +28 -12
  14. package/dist/{cameraFns-MViqtlSh.js → cameraFns-CythF7Ob.js} +30 -14
  15. package/dist/{drawFns-CWfBvGiY.js → drawFns-ChMP3Ysr.js} +15 -9
  16. package/dist/{drawFns-DZHPT-nb.cjs → drawFns-DkgFZ0pe.cjs} +15 -9
  17. package/dist/{importFns-Tgnymh7F.cjs → importFns-CvlUuJ59.cjs} +1 -1
  18. package/dist/{importFns-CzBtuX0j.js → importFns-TbwuxynG.js} +1 -1
  19. package/dist/io.cjs +1 -1
  20. package/dist/io.js +1 -1
  21. package/dist/{loftFns-DxJAP4Qv.js → loftFns-DdTfJpXF.js} +68 -42
  22. package/dist/{loftFns-Be0OZxYM.cjs → loftFns-Dp5LpTWq.cjs} +67 -41
  23. package/dist/operations.cjs +2 -2
  24. package/dist/operations.js +2 -2
  25. package/dist/projection.cjs +1 -1
  26. package/dist/projection.js +1 -1
  27. package/dist/sketching/compoundSketch.d.ts +9 -1
  28. package/dist/sketching/sketches.d.ts +7 -1
  29. package/dist/sketching.cjs +3 -3
  30. package/dist/sketching.js +3 -3
  31. package/dist/text.cjs +2 -2
  32. package/dist/text.js +2 -2
  33. package/dist/{textBlueprints-CFPE5_QI.js → textBlueprints-DQ8gY3Z1.js} +19 -5
  34. package/dist/{textBlueprints-DgTBXc6O.cjs → textBlueprints-LhCdarzc.cjs} +19 -5
  35. package/dist/{textMetrics-BH-izd6N.cjs → textMetrics-DAx0Uue6.cjs} +1 -1
  36. package/dist/{textMetrics-C2cwK7wU.js → textMetrics-janJT7Ie.js} +1 -1
  37. package/dist/{threadFns-B6SQd48K.cjs → threadFns-BTFqC3XF.cjs} +1 -1
  38. package/dist/{threadFns-G71HVwW7.js → threadFns-D8l2-Gek.js} +1 -1
  39. package/package.json +1 -1
package/dist/2d.cjs CHANGED
@@ -2,10 +2,10 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
2
  const require_shapeTypes = require("./shapeTypes-C4gRoPYX.cjs");
3
3
  const require_errors = require("./errors-CXJtc4I7.cjs");
4
4
  const require_topologyQueryFns = require("./topologyQueryFns-BzIV1jHw.cjs");
5
- const require_blueprintSketcher = require("./blueprintSketcher-DRGumaWR.cjs");
6
- const require_blueprint = require("./blueprint-DF-Ig1SW.cjs");
7
- const require_boolean2D = require("./boolean2D-5WdQm5Kb.cjs");
8
- const require_blueprintFns = require("./blueprintFns-CjvHOuIy.cjs");
5
+ const require_blueprintSketcher = require("./blueprintSketcher-CGnohIOe.cjs");
6
+ const require_blueprint = require("./blueprint-CN536u9V.cjs");
7
+ const require_boolean2D = require("./boolean2D-DnBT9gQ5.cjs");
8
+ const require_blueprintFns = require("./blueprintFns-CF-6WzuR.cjs");
9
9
  //#region src/core/curve2dHandle.ts
10
10
  /**
11
11
  * Wrap a raw kernel 2D curve handle with brand + disposal tracking.
package/dist/2d.js CHANGED
@@ -1,10 +1,10 @@
1
1
  import { G as createKernelHandle, rt as getKernel2D, s as createEdge } from "./shapeTypes-BalkiKtK.js";
2
2
  import { A as ok, b as err, d as validationError, t as BrepErrorCode } from "./errors-DNWJsfVU.js";
3
3
  import { w as kernelCallRaw } from "./topologyQueryFns-vDjZw1k2.js";
4
- import { a as Blueprints, i as CompoundBlueprint, r as organiseBlueprints } from "./blueprintSketcher-BIUHqWo9.js";
5
- import { _ as Curve2D, t as Blueprint, y as BoundingBox2d } from "./blueprint-CJ7k25eW.js";
6
- import { a as fuseBlueprints, c as roundedRectangleBlueprint, i as cutBlueprints, n as fuse2D, o as intersectBlueprints, r as intersect2D, s as polysidesBlueprint, t as cut2D } from "./boolean2D-Buf04D7l.js";
7
- import { S as reverseCurve, _ as curve2dIsOnCurve, a as isInside2D, b as curve2dSplitAt, c as scale2D, d as stretch2D, f as toSVGPathD, g as curve2dFirstPoint, h as curve2dDistanceFrom, i as getOrientation2D, l as sketchOnFace2D, m as curve2dBoundingBox, o as mirror2D, p as translate2D, r as getBounds2D, s as rotate2D, t as createBlueprint, u as sketchOnPlane2D, v as curve2dLastPoint, x as curve2dTangentAt, y as curve2dParameter } from "./blueprintFns-BKtVfo16.js";
4
+ import { a as Blueprints, i as CompoundBlueprint, r as organiseBlueprints } from "./blueprintSketcher-CY9DgQqk.js";
5
+ import { _ as Curve2D, t as Blueprint, y as BoundingBox2d } from "./blueprint-dqI319c7.js";
6
+ import { a as fuseBlueprints, c as roundedRectangleBlueprint, i as cutBlueprints, n as fuse2D, o as intersectBlueprints, r as intersect2D, s as polysidesBlueprint, t as cut2D } from "./boolean2D-CaAwVwCR.js";
7
+ import { S as reverseCurve, _ as curve2dIsOnCurve, a as isInside2D, b as curve2dSplitAt, c as scale2D, d as stretch2D, f as toSVGPathD, g as curve2dFirstPoint, h as curve2dDistanceFrom, i as getOrientation2D, l as sketchOnFace2D, m as curve2dBoundingBox, o as mirror2D, p as translate2D, r as getBounds2D, s as rotate2D, t as createBlueprint, u as sketchOnPlane2D, v as curve2dLastPoint, x as curve2dTangentAt, y as curve2dParameter } from "./blueprintFns-Ci1QVESM.js";
8
8
  //#region src/core/curve2dHandle.ts
9
9
  /**
10
10
  * Wrap a raw kernel 2D curve handle with brand + disposal tracking.
@@ -853,8 +853,11 @@ var Blueprint = class Blueprint {
853
853
  */
854
854
  sketchOnPlane(inputPlane, origin) {
855
855
  const plane = inputPlane && typeof inputPlane !== "string" ? { ...inputPlane } : require_planeOps.makePlane(inputPlane, origin);
856
+ const edges = curvesAsEdgesOnPlane(this.curves, plane);
857
+ const wire = assembleWire(edges);
858
+ for (const e of edges) e[Symbol.dispose]();
856
859
  return {
857
- wire: assembleWire(curvesAsEdgesOnPlane(this.curves, plane)),
860
+ wire,
858
861
  defaultOrigin: plane.origin,
859
862
  defaultDirection: plane.zDir
860
863
  };
@@ -868,10 +871,12 @@ var Blueprint = class Blueprint {
868
871
  */
869
872
  sketchOnFace(face, scaleMode) {
870
873
  const kernel = require_shapeTypes.getKernel();
871
- const wire = assembleWire(require_errors.unwrap(curvesAsEdgesOnFace(this.curves, face, scaleMode)));
874
+ const edges = require_errors.unwrap(curvesAsEdgesOnFace(this.curves, face, scaleMode));
875
+ const wire = assembleWire(edges);
876
+ for (const e of edges) e[Symbol.dispose]();
872
877
  kernel.buildCurves3d(wire.wrapped);
873
878
  const fixedWire = kernel.fixWireOnFace(wire.wrapped, face.wrapped, 1e-9);
874
- wire.delete();
879
+ wire[Symbol.dispose]();
875
880
  return {
876
881
  wire: require_shapeTypes.createWire(fixedWire),
877
882
  baseFace: face
@@ -852,8 +852,11 @@ var Blueprint = class Blueprint {
852
852
  */
853
853
  sketchOnPlane(inputPlane, origin) {
854
854
  const plane = inputPlane && typeof inputPlane !== "string" ? { ...inputPlane } : makePlane(inputPlane, origin);
855
+ const edges = curvesAsEdgesOnPlane(this.curves, plane);
856
+ const wire = assembleWire(edges);
857
+ for (const e of edges) e[Symbol.dispose]();
855
858
  return {
856
- wire: assembleWire(curvesAsEdgesOnPlane(this.curves, plane)),
859
+ wire,
857
860
  defaultOrigin: plane.origin,
858
861
  defaultDirection: plane.zDir
859
862
  };
@@ -867,10 +870,12 @@ var Blueprint = class Blueprint {
867
870
  */
868
871
  sketchOnFace(face, scaleMode) {
869
872
  const kernel = getKernel();
870
- const wire = assembleWire(unwrap(curvesAsEdgesOnFace(this.curves, face, scaleMode)));
873
+ const edges = unwrap(curvesAsEdgesOnFace(this.curves, face, scaleMode));
874
+ const wire = assembleWire(edges);
875
+ for (const e of edges) e[Symbol.dispose]();
871
876
  kernel.buildCurves3d(wire.wrapped);
872
877
  const fixedWire = kernel.fixWireOnFace(wire.wrapped, face.wrapped, 1e-9);
873
- wire.delete();
878
+ wire[Symbol.dispose]();
874
879
  return {
875
880
  wire: createWire(fixedWire),
876
881
  baseFace: face
@@ -1,6 +1,6 @@
1
1
  const require_errors = require("./errors-CXJtc4I7.cjs");
2
- const require_blueprintSketcher = require("./blueprintSketcher-DRGumaWR.cjs");
3
- const require_blueprint = require("./blueprint-DF-Ig1SW.cjs");
2
+ const require_blueprintSketcher = require("./blueprintSketcher-CGnohIOe.cjs");
3
+ const require_blueprint = require("./blueprint-CN536u9V.cjs");
4
4
  //#region src/2d/lib/curve2dFns.ts
5
5
  /**
6
6
  * Return a reversed copy of the curve (non-mutating).
@@ -1,6 +1,6 @@
1
1
  import { A as ok, b as err, d as validationError, t as BrepErrorCode } from "./errors-DNWJsfVU.js";
2
- import { i as CompoundBlueprint } from "./blueprintSketcher-BIUHqWo9.js";
3
- import { t as Blueprint } from "./blueprint-CJ7k25eW.js";
2
+ import { i as CompoundBlueprint } from "./blueprintSketcher-CY9DgQqk.js";
3
+ import { t as Blueprint } from "./blueprint-dqI319c7.js";
4
4
  //#region src/2d/lib/curve2dFns.ts
5
5
  /**
6
6
  * Return a reversed copy of the curve (non-mutating).
@@ -4,7 +4,7 @@ const require_errors = require("./errors-CXJtc4I7.cjs");
4
4
  const require_constants = require("./constants-BOVyEYGH.cjs");
5
5
  const require_arrayAccess = require("./arrayAccess-e4H9cBfh.cjs");
6
6
  const require_helpers = require("./helpers-D0be4TzF.cjs");
7
- const require_blueprint = require("./blueprint-DF-Ig1SW.cjs");
7
+ const require_blueprint = require("./blueprint-CN536u9V.cjs");
8
8
  //#region node_modules/flatqueue/index.js
9
9
  /**
10
10
  * @typedef {Float64ArrayConstructor | Float32ArrayConstructor |
@@ -4,7 +4,7 @@ import { A as ok, R as unwrap, T as isOk, b as err, h as bug, n as computationEr
4
4
  import { r as RAD2DEG, t as DEG2RAD } from "./constants-ITRzCnCp.js";
5
5
  import { t as firstOrThrow } from "./arrayAccess-DrUGPADn.js";
6
6
  import { _ as samePoint, b as subtract2d, d as cartesianToPolar, f as crossProduct2d, g as rotate2d, h as polarToCartesian, l as add2d, m as polarAngle2d, o as normalize2d, p as distance2d, v as scalarMultiply2d } from "./helpers-zVYq0h_A.js";
7
- import { _ as Curve2D, c as make2dCircle, f as make2dSegmentCurve, h as approximateAsBSpline, m as make2dThreePointArc, n as asSVG, o as make2dArcFromCenter, p as make2dTangentArc, r as viewbox, s as make2dBezierCurve, t as Blueprint, u as make2dEllipseArc, x as isPoint2D, y as BoundingBox2d } from "./blueprint-CJ7k25eW.js";
7
+ import { _ as Curve2D, c as make2dCircle, f as make2dSegmentCurve, h as approximateAsBSpline, m as make2dThreePointArc, n as asSVG, o as make2dArcFromCenter, p as make2dTangentArc, r as viewbox, s as make2dBezierCurve, t as Blueprint, u as make2dEllipseArc, x as isPoint2D, y as BoundingBox2d } from "./blueprint-dqI319c7.js";
8
8
  //#region node_modules/flatqueue/index.js
9
9
  /**
10
10
  * @typedef {Float64ArrayConstructor | Float32ArrayConstructor |
@@ -2,9 +2,9 @@ import { n as wasmIndex } from "./vec3-Dpha8d5k.js";
2
2
  import { R as unwrap, h as bug, s as safeIndex } from "./errors-DNWJsfVU.js";
3
3
  import { r as lastOrThrow } from "./arrayAccess-DrUGPADn.js";
4
4
  import { v as zip } from "./surfaceBuilders-HAF4Xtow.js";
5
- import { a as Blueprints, i as CompoundBlueprint, l as intersectCurves, r as organiseBlueprints, t as BlueprintSketcher, u as Flatbush } from "./blueprintSketcher-BIUHqWo9.js";
5
+ import { a as Blueprints, i as CompoundBlueprint, l as intersectCurves, r as organiseBlueprints, t as BlueprintSketcher, u as Flatbush } from "./blueprintSketcher-CY9DgQqk.js";
6
6
  import { _ as samePoint$1, b as subtract2d, f as crossProduct2d, s as PRECISION_INTERSECTION } from "./helpers-zVYq0h_A.js";
7
- import { b as removeDuplicatePoints, f as make2dSegmentCurve, t as Blueprint } from "./blueprint-CJ7k25eW.js";
7
+ import { b as removeDuplicatePoints, f as make2dSegmentCurve, t as Blueprint } from "./blueprint-dqI319c7.js";
8
8
  //#region src/2d/blueprints/cannedBlueprints.ts
9
9
  /**
10
10
  * Create a regular polygon blueprint inscribed in a circle of the given radius.
@@ -2,9 +2,9 @@ const require_vec3 = require("./vec3-CFwOI0ZI.cjs");
2
2
  const require_errors = require("./errors-CXJtc4I7.cjs");
3
3
  const require_arrayAccess = require("./arrayAccess-e4H9cBfh.cjs");
4
4
  const require_surfaceBuilders = require("./surfaceBuilders-DWHDogVL.cjs");
5
- const require_blueprintSketcher = require("./blueprintSketcher-DRGumaWR.cjs");
5
+ const require_blueprintSketcher = require("./blueprintSketcher-CGnohIOe.cjs");
6
6
  const require_helpers = require("./helpers-D0be4TzF.cjs");
7
- const require_blueprint = require("./blueprint-DF-Ig1SW.cjs");
7
+ const require_blueprint = require("./blueprint-CN536u9V.cjs");
8
8
  //#region src/2d/blueprints/cannedBlueprints.ts
9
9
  /**
10
10
  * Create a regular polygon blueprint inscribed in a circle of the given radius.
package/dist/brepjs.cjs CHANGED
@@ -1,5 +1,5 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
- const require_textBlueprints = require("./textBlueprints-DgTBXc6O.cjs");
2
+ const require_textBlueprints = require("./textBlueprints-LhCdarzc.cjs");
3
3
  const require_shapeTypes = require("./shapeTypes-C4gRoPYX.cjs");
4
4
  const require_occtWasmAdapter = require("./occtWasmAdapter-CWX5KCl8.cjs");
5
5
  const require_vec3 = require("./vec3-CFwOI0ZI.cjs");
@@ -17,18 +17,18 @@ const require_arrayAccess = require("./arrayAccess-e4H9cBfh.cjs");
17
17
  const require_surfaceBuilders = require("./surfaceBuilders-DWHDogVL.cjs");
18
18
  const require_solidBuilders = require("./solidBuilders-CHzmSo67.cjs");
19
19
  const require_healingFns = require("./healingFns-BZ-TOacm.cjs");
20
- const require_threadFns = require("./threadFns-B6SQd48K.cjs");
21
- const require_blueprintSketcher = require("./blueprintSketcher-DRGumaWR.cjs");
20
+ const require_threadFns = require("./threadFns-BTFqC3XF.cjs");
21
+ const require_blueprintSketcher = require("./blueprintSketcher-CGnohIOe.cjs");
22
22
  const require_helpers = require("./helpers-D0be4TzF.cjs");
23
- const require_drawFns = require("./drawFns-DZHPT-nb.cjs");
23
+ const require_drawFns = require("./drawFns-DkgFZ0pe.cjs");
24
24
  const require_measureFns = require("./measureFns-cK6MSs6B.cjs");
25
25
  const require_cornerFinder = require("./cornerFinder-Bss_mZV9.cjs");
26
- const require_boolean2D = require("./boolean2D-5WdQm5Kb.cjs");
27
- const require_blueprintFns = require("./blueprintFns-CjvHOuIy.cjs");
28
- const require_importFns = require("./importFns-Tgnymh7F.cjs");
29
- const require_loftFns = require("./loftFns-Be0OZxYM.cjs");
30
- const require_cameraFns = require("./cameraFns-CiGOarQ4.cjs");
31
- const require_textMetrics = require("./textMetrics-BH-izd6N.cjs");
26
+ const require_boolean2D = require("./boolean2D-DnBT9gQ5.cjs");
27
+ const require_blueprintFns = require("./blueprintFns-CF-6WzuR.cjs");
28
+ const require_importFns = require("./importFns-CvlUuJ59.cjs");
29
+ const require_loftFns = require("./loftFns-Dp5LpTWq.cjs");
30
+ const require_cameraFns = require("./cameraFns-Ckw5prda.cjs");
31
+ const require_textMetrics = require("./textMetrics-DAx0Uue6.cjs");
32
32
  const require_adjacencyFns = require("./adjacencyFns-BdxIbZtR.cjs");
33
33
  const require_refResolveFns = require("./refResolveFns-BLM5XlZR.cjs");
34
34
  const require_workerPool = require("./workerPool-D30NsiIW.cjs");
@@ -241,8 +241,8 @@ function repairMesh(mesh, opts, id) {
241
241
  if (require_errors.isErr(engine)) return engine;
242
242
  try {
243
243
  try {
244
- var _usingCtx$7 = require_shapeTypes._usingCtx();
245
- const repaired = _usingCtx$7.u(engine.value.repair_mesh(mesh.vertices, mesh.triangles, resolution, padding));
244
+ var _usingCtx$8 = require_shapeTypes._usingCtx();
245
+ const repaired = _usingCtx$8.u(engine.value.repair_mesh(mesh.vertices, mesh.triangles, resolution, padding));
246
246
  const vertexCount = repaired.positions.length / 3;
247
247
  return require_errors.ok({
248
248
  vertices: repaired.positions,
@@ -256,9 +256,9 @@ function repairMesh(mesh, opts, id) {
256
256
  }]
257
257
  });
258
258
  } catch (_) {
259
- _usingCtx$7.e = _;
259
+ _usingCtx$8.e = _;
260
260
  } finally {
261
- _usingCtx$7.d();
261
+ _usingCtx$8.d();
262
262
  }
263
263
  } catch (cause) {
264
264
  return require_errors.err(require_errors.computationError("VOXEL_REPAIR_FAILED", cause instanceof Error ? cause.message : "voxel repair failed (grid too large?).", cause));
@@ -337,12 +337,12 @@ function offsetMesh(mesh, distance, opts, id) {
337
337
  if (require_errors.isErr(engine)) return engine;
338
338
  try {
339
339
  try {
340
- var _usingCtx$6 = require_shapeTypes._usingCtx();
341
- return meshFromResult(_usingCtx$6.u(engine.value.offset_mesh(mesh.vertices, mesh.triangles, distance, params.value.resolution, params.value.padding)));
340
+ var _usingCtx$7 = require_shapeTypes._usingCtx();
341
+ return meshFromResult(_usingCtx$7.u(engine.value.offset_mesh(mesh.vertices, mesh.triangles, distance, params.value.resolution, params.value.padding)));
342
342
  } catch (_) {
343
- _usingCtx$6.e = _;
343
+ _usingCtx$7.e = _;
344
344
  } finally {
345
- _usingCtx$6.d();
345
+ _usingCtx$7.d();
346
346
  }
347
347
  } catch (cause) {
348
348
  return require_errors.err(require_errors.computationError("VOXEL_OFFSET_FAILED", cause instanceof Error ? cause.message : "voxel offset failed (grid too large?).", cause));
@@ -467,9 +467,9 @@ function resolveGridParams$1(opts) {
467
467
  */
468
468
  function meshFromField(field) {
469
469
  try {
470
- var _usingCtx$5 = require_shapeTypes._usingCtx();
470
+ var _usingCtx$6 = require_shapeTypes._usingCtx();
471
471
  const rawResult = field.contour();
472
- const { positions, normals, indices } = _usingCtx$5.u({
472
+ const { positions, normals, indices } = _usingCtx$6.u({
473
473
  value: rawResult,
474
474
  [Symbol.dispose]() {
475
475
  rawResult.free();
@@ -489,9 +489,9 @@ function meshFromField(field) {
489
489
  }]
490
490
  });
491
491
  } catch (_) {
492
- _usingCtx$5.e = _;
492
+ _usingCtx$6.e = _;
493
493
  } finally {
494
- _usingCtx$5.d();
494
+ _usingCtx$6.d();
495
495
  }
496
496
  }
497
497
  function fieldDeletable(raw) {
@@ -1056,12 +1056,12 @@ function latticeInfill(mesh, opts, id) {
1056
1056
  const { tag, period, thickness, resolution, padding } = resolved.value;
1057
1057
  try {
1058
1058
  try {
1059
- var _usingCtx$4 = require_shapeTypes._usingCtx();
1060
- return require_errors.ok(toMesh(_usingCtx$4.u(engine.value.lattice_infill(mesh.vertices, mesh.triangles, resolution, padding, tag, period, thickness))));
1059
+ var _usingCtx$5 = require_shapeTypes._usingCtx();
1060
+ return require_errors.ok(toMesh(_usingCtx$5.u(engine.value.lattice_infill(mesh.vertices, mesh.triangles, resolution, padding, tag, period, thickness))));
1061
1061
  } catch (_) {
1062
- _usingCtx$4.e = _;
1062
+ _usingCtx$5.e = _;
1063
1063
  } finally {
1064
- _usingCtx$4.d();
1064
+ _usingCtx$5.d();
1065
1065
  }
1066
1066
  } catch (cause) {
1067
1067
  return require_errors.err(require_errors.computationError("LATTICE_INFILL_FAILED", cause instanceof Error ? cause.message : "lattice infill failed (grid too large?).", cause));
@@ -3741,10 +3741,20 @@ function resolveTargetFace(shape, faceSpec) {
3741
3741
  }
3742
3742
  return require_errors.ok(faceSpec);
3743
3743
  }
3744
- /** Convert a DrawingLike or Wire to a ClosedWire & PlanarWire (profiles are always closed and planar). */
3744
+ /**
3745
+ * Convert a DrawingLike or Wire to a ClosedWire & PlanarWire (profiles are always
3746
+ * closed and planar). `owned` is true when we materialised a fresh sketch wire
3747
+ * (the caller must dispose it); false when the caller's own Wire is passed through.
3748
+ */
3745
3749
  function toWire(profile) {
3746
- if ("sketchOnPlane" in profile && typeof profile.sketchOnPlane === "function") return profile.sketchOnPlane("XY").wire;
3747
- return profile;
3750
+ if ("sketchOnPlane" in profile && typeof profile.sketchOnPlane === "function") return {
3751
+ wire: profile.sketchOnPlane("XY").wire,
3752
+ owned: true
3753
+ };
3754
+ return {
3755
+ wire: profile,
3756
+ owned: false
3757
+ };
3748
3758
  }
3749
3759
  /**
3750
3760
  * Drill a hole through a 3D shape.
@@ -3847,19 +3857,31 @@ function drill(shape, options) {
3847
3857
  * inward by the specified depth, then subtracted from the shape.
3848
3858
  */
3849
3859
  function pocket(shape, options) {
3850
- const s = resolve(shape);
3851
- const { profile, depth } = options;
3852
- if (depth <= 0) return require_errors.err(require_errors.validationError("POCKET_INVALID_DEPTH", "Pocket depth must be positive"));
3853
- const targetResult = resolveTargetFace(s, options.face);
3854
- if (require_errors.isErr(targetResult)) return targetResult;
3855
- const targetFace = targetResult.value;
3856
- const normal = require_faceFns.normalAt(targetFace);
3857
- const center = require_faceFns.faceCenter(targetFace);
3858
- const faceResult = require_surfaceBuilders.makeFace(toWire(profile));
3859
- if (require_errors.isErr(faceResult)) return faceResult;
3860
- const toolResult = require_loftFns.extrude(require_shapeFns.translate(faceResult.value, center), require_vecOps.vecScale(require_vecOps.vecNormalize(normal), -depth));
3861
- if (require_errors.isErr(toolResult)) return toolResult;
3862
- return require_solidBuilders.cut(s, toolResult.value, { unsafe: true });
3860
+ try {
3861
+ var _usingCtx$4 = require_shapeTypes._usingCtx();
3862
+ const s = resolve(shape);
3863
+ const { profile, depth } = options;
3864
+ if (depth <= 0) return require_errors.err(require_errors.validationError("POCKET_INVALID_DEPTH", "Pocket depth must be positive"));
3865
+ const targetResult = resolveTargetFace(s, options.face);
3866
+ if (require_errors.isErr(targetResult)) return targetResult;
3867
+ const targetFace = targetResult.value;
3868
+ const normal = require_faceFns.normalAt(targetFace);
3869
+ const center = require_faceFns.faceCenter(targetFace);
3870
+ const scope = _usingCtx$4.u(new require_shapeTypes.DisposalScope());
3871
+ const { wire: w, owned } = toWire(profile);
3872
+ if (owned) scope.register(w);
3873
+ const faceResult = require_surfaceBuilders.makeFace(w);
3874
+ if (require_errors.isErr(faceResult)) return faceResult;
3875
+ scope.register(faceResult.value);
3876
+ const toolResult = require_loftFns.extrude(scope.register(require_shapeFns.translate(faceResult.value, center)), require_vecOps.vecScale(require_vecOps.vecNormalize(normal), -depth));
3877
+ if (require_errors.isErr(toolResult)) return toolResult;
3878
+ scope.register(toolResult.value);
3879
+ return require_solidBuilders.cut(s, toolResult.value, { unsafe: true });
3880
+ } catch (_) {
3881
+ _usingCtx$4.e = _;
3882
+ } finally {
3883
+ _usingCtx$4.d();
3884
+ }
3863
3885
  }
3864
3886
  /**
3865
3887
  * Add a boss (2D profile extruded outward) onto a shape.
@@ -3868,19 +3890,31 @@ function pocket(shape, options) {
3868
3890
  * outward by the specified height, then fused with the shape.
3869
3891
  */
3870
3892
  function boss(shape, options) {
3871
- const s = resolve(shape);
3872
- const { profile, height } = options;
3873
- if (height <= 0) return require_errors.err(require_errors.validationError("BOSS_INVALID_HEIGHT", "Boss height must be positive"));
3874
- const targetResult = resolveTargetFace(s, options.face);
3875
- if (require_errors.isErr(targetResult)) return targetResult;
3876
- const targetFace = targetResult.value;
3877
- const normal = require_faceFns.normalAt(targetFace);
3878
- const center = require_faceFns.faceCenter(targetFace);
3879
- const faceResult = require_surfaceBuilders.makeFace(toWire(profile));
3880
- if (require_errors.isErr(faceResult)) return faceResult;
3881
- const toolResult = require_loftFns.extrude(require_shapeFns.translate(faceResult.value, center), require_vecOps.vecScale(require_vecOps.vecNormalize(normal), height));
3882
- if (require_errors.isErr(toolResult)) return toolResult;
3883
- return require_solidBuilders.fuse(s, toolResult.value, { unsafe: true });
3893
+ try {
3894
+ var _usingCtx3 = require_shapeTypes._usingCtx();
3895
+ const s = resolve(shape);
3896
+ const { profile, height } = options;
3897
+ if (height <= 0) return require_errors.err(require_errors.validationError("BOSS_INVALID_HEIGHT", "Boss height must be positive"));
3898
+ const targetResult = resolveTargetFace(s, options.face);
3899
+ if (require_errors.isErr(targetResult)) return targetResult;
3900
+ const targetFace = targetResult.value;
3901
+ const normal = require_faceFns.normalAt(targetFace);
3902
+ const center = require_faceFns.faceCenter(targetFace);
3903
+ const scope = _usingCtx3.u(new require_shapeTypes.DisposalScope());
3904
+ const { wire: w, owned } = toWire(profile);
3905
+ if (owned) scope.register(w);
3906
+ const faceResult = require_surfaceBuilders.makeFace(w);
3907
+ if (require_errors.isErr(faceResult)) return faceResult;
3908
+ scope.register(faceResult.value);
3909
+ const toolResult = require_loftFns.extrude(scope.register(require_shapeFns.translate(faceResult.value, center)), require_vecOps.vecScale(require_vecOps.vecNormalize(normal), height));
3910
+ if (require_errors.isErr(toolResult)) return toolResult;
3911
+ scope.register(toolResult.value);
3912
+ return require_solidBuilders.fuse(s, toolResult.value, { unsafe: true });
3913
+ } catch (_) {
3914
+ _usingCtx3.e = _;
3915
+ } finally {
3916
+ _usingCtx3.d();
3917
+ }
3884
3918
  }
3885
3919
  /**
3886
3920
  * Mirror a shape and fuse it with the original.
@@ -3888,15 +3922,22 @@ function boss(shape, options) {
3888
3922
  * Common pattern: model half a part, then mirror-join for symmetry.
3889
3923
  */
3890
3924
  function mirrorJoin(shape, options) {
3891
- const s = resolve(shape);
3892
- const normal = options?.normal ?? [
3893
- 1,
3894
- 0,
3895
- 0
3896
- ];
3897
- const planeOrigin = options?.at;
3898
- if (require_vecOps.vecIsZero(normal)) return require_errors.err(require_errors.validationError("MIRROR_ZERO_NORMAL", "Mirror plane normal cannot be zero"));
3899
- return require_solidBuilders.fuse(s, require_shapeFns.mirror(s, normal, planeOrigin), { unsafe: true });
3925
+ try {
3926
+ var _usingCtx4 = require_shapeTypes._usingCtx();
3927
+ const s = resolve(shape);
3928
+ const normal = options?.normal ?? [
3929
+ 1,
3930
+ 0,
3931
+ 0
3932
+ ];
3933
+ const planeOrigin = options?.at;
3934
+ if (require_vecOps.vecIsZero(normal)) return require_errors.err(require_errors.validationError("MIRROR_ZERO_NORMAL", "Mirror plane normal cannot be zero"));
3935
+ return require_solidBuilders.fuse(s, _usingCtx4.u(require_shapeFns.mirror(s, normal, planeOrigin)), { unsafe: true });
3936
+ } catch (_) {
3937
+ _usingCtx4.e = _;
3938
+ } finally {
3939
+ _usingCtx4.d();
3940
+ }
3900
3941
  }
3901
3942
  /**
3902
3943
  * Create a rectangular (2D grid) pattern of a shape.