brepjs 18.112.0 → 18.114.0

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/dist/brepjs.cjs CHANGED
@@ -16,7 +16,7 @@ const require_meshFns = require("./meshFns-1hQSn1p2.cjs");
16
16
  const require_arrayAccess = require("./arrayAccess-e4H9cBfh.cjs");
17
17
  const require_surfaceBuilders = require("./surfaceBuilders-UyyfZy8w.cjs");
18
18
  const require_solidBuilders = require("./solidBuilders-DiUv_mD0.cjs");
19
- const require_healingFns = require("./healingFns-x1sHV-HO.cjs");
19
+ const require_healingFns = require("./healingFns-xLJ6Cp_O.cjs");
20
20
  const require_threadFns = require("./threadFns-C8bErjVC.cjs");
21
21
  const require_blueprintSketcher = require("./blueprintSketcher-RK-cH6ps.cjs");
22
22
  const require_helpers = require("./helpers-BSLPCflF.cjs");
@@ -29,7 +29,8 @@ const require_importFns = require("./importFns-CgMQIi0z.cjs");
29
29
  const require_loftFns = require("./loftFns-fpTmrIdd.cjs");
30
30
  const require_cameraFns = require("./cameraFns-uo1sZbBT.cjs");
31
31
  const require_textMetrics = require("./textMetrics-IC_IoI7l.cjs");
32
- const require_shapeRefFns = require("./shapeRefFns-CuepnFOm.cjs");
32
+ const require_adjacencyFns = require("./adjacencyFns-d8ZabkvX.cjs");
33
+ const require_refResolveFns = require("./refResolveFns-BK5NSDFd.cjs");
33
34
  const require_workerPool = require("./workerPool-D30NsiIW.cjs");
34
35
  const require_primitiveFns = require("./primitiveFns-DLIWtQWA.cjs");
35
36
  //#region src/topology/shapeBooleans.ts
@@ -1175,276 +1176,6 @@ function withKernelDir(v, fn) {
1175
1176
  }
1176
1177
  }
1177
1178
  //#endregion
1178
- //#region src/topology/shapeRef/roleLookup.ts
1179
- /** Euclidean distance between two points. */
1180
- function distance(a, b) {
1181
- const dx = a[0] - b[0];
1182
- const dy = a[1] - b[1];
1183
- const dz = a[2] - b[2];
1184
- return Math.sqrt(dx * dx + dy * dy + dz * dz);
1185
- }
1186
- /** The role whose tracked hashes include this face (reverse lookup). */
1187
- function roleOfFace(face, origin, roles) {
1188
- const originRoles = roles.get(origin);
1189
- if (!originRoles) return void 0;
1190
- const hash = require_shapeFns.getHashCode(face);
1191
- for (const [role, hashes] of originRoles) if (hashes.includes(hash)) return role;
1192
- }
1193
- /** Current faces a role resolves to — its tracked successors present in `shape`. */
1194
- function facesForRole(shape, origin, role, roles) {
1195
- const hashes = roles.get(origin)?.get(role);
1196
- if (hashes === void 0 || hashes.length === 0) return [];
1197
- return require_topologyQueryFns.getFaces(shape).filter((f) => hashes.includes(require_shapeFns.getHashCode(f)));
1198
- }
1199
- //#endregion
1200
- //#region src/topology/shapeRef/edgeRefFns.ts
1201
- /** Midpoint of an edge's endpoint vertices (a closed edge collapses to one). */
1202
- function endpointMidpoint(verts) {
1203
- if (verts.length === 0) return void 0;
1204
- let x = 0;
1205
- let y = 0;
1206
- let z = 0;
1207
- for (const v of verts) {
1208
- const p = require_topologyQueryFns.vertexPosition(v);
1209
- x += p[0];
1210
- y += p[1];
1211
- z += p[2];
1212
- }
1213
- const n = verts.length;
1214
- return [
1215
- x / n,
1216
- y / n,
1217
- z / n
1218
- ];
1219
- }
1220
- function captureEdgeHint(edge) {
1221
- const lengthResult = require_measureFns.measureLength(edge);
1222
- return {
1223
- entityType: "edge",
1224
- length: lengthResult.ok ? lengthResult.value : void 0,
1225
- midpoint: endpointMidpoint(require_healingFns.verticesOfEdge(edge))
1226
- };
1227
- }
1228
- function dedupeEdges(edges) {
1229
- const seen = /* @__PURE__ */ new Set();
1230
- const out = [];
1231
- for (const e of edges) {
1232
- const h = require_shapeFns.getHashCode(e);
1233
- if (!seen.has(h)) {
1234
- seen.add(h);
1235
- out.push(e);
1236
- }
1237
- }
1238
- return out;
1239
- }
1240
- /** Hint scores closer than this are treated as indistinguishable (→ ambiguous). */
1241
- var HINT_MARGIN$1 = 1e-6;
1242
- /**
1243
- * Pick the candidate edge closest to the hint (length + endpoint midpoint).
1244
- * Returns undefined when it genuinely can't discriminate — the hint carries no
1245
- * signal, or the two best candidates score within {@link HINT_MARGIN} — so the
1246
- * caller can report `ambiguous` rather than committing to an arbitrary edge.
1247
- */
1248
- function bestByHint(candidates, hint) {
1249
- if (hint.length === void 0 && hint.midpoint === void 0) return void 0;
1250
- let best;
1251
- let bestScore = Infinity;
1252
- let secondScore = Infinity;
1253
- for (const edge of candidates) {
1254
- let score = 0;
1255
- if (hint.length !== void 0) {
1256
- const len = require_measureFns.measureLength(edge);
1257
- if (len.ok) score += Math.abs(len.value - hint.length);
1258
- }
1259
- if (hint.midpoint !== void 0) {
1260
- const mid = endpointMidpoint(require_healingFns.verticesOfEdge(edge));
1261
- if (mid !== void 0) score += distance(hint.midpoint, mid);
1262
- }
1263
- if (score < bestScore) {
1264
- secondScore = bestScore;
1265
- bestScore = score;
1266
- best = edge;
1267
- } else if (score < secondScore) secondScore = score;
1268
- }
1269
- if (best === void 0 || secondScore - bestScore < HINT_MARGIN$1) return void 0;
1270
- return best;
1271
- }
1272
- /**
1273
- * Capture a lineage-based reference to `edge`: its two adjacent faces' roles
1274
- * plus a geometric hint. Returns undefined when the edge doesn't bound two faces
1275
- * (a boundary/degenerate edge) or when either bounding face has no role yet.
1276
- */
1277
- function createEdgeRef(origin, edge, shape, roles) {
1278
- const [faceA, faceB] = require_healingFns.facesOfEdge(shape, edge);
1279
- if (faceA === void 0 || faceB === void 0) return void 0;
1280
- const roleA = roleOfFace(faceA, origin, roles);
1281
- const roleB = roleOfFace(faceB, origin, roles);
1282
- if (roleA === void 0 || roleB === void 0) return void 0;
1283
- return {
1284
- origin,
1285
- faceRoles: [roleA, roleB],
1286
- hint: captureEdgeHint(edge)
1287
- };
1288
- }
1289
- /**
1290
- * Resolve an EdgeRef in `shape`: resolve its two face-roles to current faces,
1291
- * then return the edge they share. One shared edge → exact; several (the two
1292
- * faces meet along more than one edge) → disambiguate by hint; none, or a
1293
- * missing bounding face → broken.
1294
- */
1295
- function resolveEdgeRef(ref, roles, shape) {
1296
- const [roleA, roleB] = ref.faceRoles;
1297
- const facesA = facesForRole(shape, ref.origin, roleA, roles);
1298
- const facesB = facesForRole(shape, ref.origin, roleB, roles);
1299
- if (facesA.length === 0 || facesB.length === 0) return {
1300
- ref,
1301
- reason: "not-found"
1302
- };
1303
- const candidates = [];
1304
- for (const a of facesA) for (const b of facesB) candidates.push(...require_healingFns.sharedEdges(a, b));
1305
- const unique = dedupeEdges(candidates);
1306
- if (unique.length === 1) {
1307
- const [only] = unique;
1308
- if (only !== void 0) return {
1309
- edge: only,
1310
- confidence: "exact"
1311
- };
1312
- }
1313
- if (unique.length > 1) {
1314
- const best = bestByHint(unique, ref.hint);
1315
- if (best !== void 0) return {
1316
- edge: best,
1317
- confidence: "geometric-fallback"
1318
- };
1319
- return {
1320
- ref,
1321
- reason: "ambiguous",
1322
- candidates: unique
1323
- };
1324
- }
1325
- return {
1326
- ref,
1327
- reason: "not-found"
1328
- };
1329
- }
1330
- //#endregion
1331
- //#region src/topology/shapeRef/vertexRefFns.ts
1332
- /** A corner needs at least this many faces to pin a unique point. */
1333
- var MIN_VERTEX_FACES = 3;
1334
- /** Hint distances closer than this are indistinguishable (→ ambiguous). */
1335
- var HINT_MARGIN = 1e-6;
1336
- /** Hashes of all vertices across `faces`, recording one handle per hash. */
1337
- function vertexHashes(faces, handles) {
1338
- const hashes = /* @__PURE__ */ new Set();
1339
- for (const f of faces) for (const v of require_healingFns.verticesOfFace(f)) {
1340
- const h = require_shapeFns.getHashCode(v);
1341
- hashes.add(h);
1342
- if (!handles.has(h)) handles.set(h, v);
1343
- }
1344
- return hashes;
1345
- }
1346
- function intersect$2(a, b) {
1347
- const out = /* @__PURE__ */ new Set();
1348
- for (const h of a) if (b.has(h)) out.add(h);
1349
- return out;
1350
- }
1351
- /** Vertices present in (a face of) every face-set — the shared corner(s). */
1352
- function commonVertices(faceSets) {
1353
- const handles = /* @__PURE__ */ new Map();
1354
- let common;
1355
- for (const faces of faceSets) {
1356
- const hashes = vertexHashes(faces, handles);
1357
- common = common === void 0 ? hashes : intersect$2(common, hashes);
1358
- }
1359
- if (common === void 0) return [];
1360
- const result = [];
1361
- for (const h of common) {
1362
- const v = handles.get(h);
1363
- if (v !== void 0) result.push(v);
1364
- }
1365
- return result;
1366
- }
1367
- /** Nearest candidate to the hint position; undefined if no signal or a tie. */
1368
- function nearestToHint(vertices, hint) {
1369
- if (hint.position === void 0) return void 0;
1370
- let best;
1371
- let bestDist = Infinity;
1372
- let secondDist = Infinity;
1373
- for (const v of vertices) {
1374
- const d = distance(require_topologyQueryFns.vertexPosition(v), hint.position);
1375
- if (d < bestDist) {
1376
- secondDist = bestDist;
1377
- bestDist = d;
1378
- best = v;
1379
- } else if (d < secondDist) secondDist = d;
1380
- }
1381
- if (best === void 0 || secondDist - bestDist < HINT_MARGIN) return void 0;
1382
- return best;
1383
- }
1384
- /**
1385
- * Capture a lineage-based reference to `vertex`: the roles of the ≥3 faces
1386
- * meeting at it, plus a position hint. Returns undefined when fewer than three
1387
- * named faces meet there (a 2-face "vertex" is ambiguous — an edge has two).
1388
- */
1389
- function createVertexRef(origin, vertex, shape, roles) {
1390
- const faces = require_healingFns.facesOfVertex(shape, vertex);
1391
- if (faces.length < MIN_VERTEX_FACES) return void 0;
1392
- const roleSet = /* @__PURE__ */ new Set();
1393
- for (const f of faces) {
1394
- const role = roleOfFace(f, origin, roles);
1395
- if (role !== void 0) roleSet.add(role);
1396
- }
1397
- if (roleSet.size < MIN_VERTEX_FACES) return void 0;
1398
- return {
1399
- origin,
1400
- faceRoles: [...roleSet].sort(),
1401
- hint: {
1402
- entityType: "vertex",
1403
- position: require_topologyQueryFns.vertexPosition(vertex)
1404
- }
1405
- };
1406
- }
1407
- /**
1408
- * Resolve a VertexRef in `shape`: gather the current faces of each role, then
1409
- * return the vertex common to all of them. One common vertex → exact; several →
1410
- * disambiguate by hint position; none, or a missing role → broken.
1411
- */
1412
- function resolveVertexRef(ref, roles, shape) {
1413
- const faceSets = [];
1414
- for (const role of ref.faceRoles) {
1415
- const faces = facesForRole(shape, ref.origin, role, roles);
1416
- if (faces.length === 0) return {
1417
- ref,
1418
- reason: "not-found"
1419
- };
1420
- faceSets.push(faces);
1421
- }
1422
- const common = commonVertices(faceSets);
1423
- if (common.length === 1) {
1424
- const [only] = common;
1425
- if (only !== void 0) return {
1426
- vertex: only,
1427
- confidence: "exact"
1428
- };
1429
- }
1430
- if (common.length > 1) {
1431
- const best = nearestToHint(common, ref.hint);
1432
- if (best !== void 0) return {
1433
- vertex: best,
1434
- confidence: "geometric-fallback"
1435
- };
1436
- return {
1437
- ref,
1438
- reason: "ambiguous",
1439
- candidates: common
1440
- };
1441
- }
1442
- return {
1443
- ref,
1444
- reason: "not-found"
1445
- };
1446
- }
1447
- //#endregion
1448
1179
  //#region src/topology/surfaceFns.ts
1449
1180
  /**
1450
1181
  * Surface creation functions — generate faces from height-map grids.
@@ -7077,7 +6808,7 @@ exports.addHoles = require_primitiveFns.addHoles;
7077
6808
  exports.addJoint = require_threadFns.addJoint;
7078
6809
  exports.addMate = addMate;
7079
6810
  exports.addStep = require_threadFns.addStep;
7080
- exports.adjacentFaces = require_healingFns.adjacentFaces;
6811
+ exports.adjacentFaces = require_adjacencyFns.adjacentFaces;
7081
6812
  exports.all = require_errors.all;
7082
6813
  exports.andThen = require_errors.andThen;
7083
6814
  exports.applyGlue = applyGlue;
@@ -7086,7 +6817,7 @@ exports.approximateCurve = require_curveFns.approximateCurve;
7086
6817
  exports.as2D = require_shapeTypes.as2D;
7087
6818
  exports.as3D = require_shapeTypes.as3D;
7088
6819
  exports.asTopo = require_faceFns.asTopo;
7089
- exports.assignRoles = require_shapeRefFns.assignRoles;
6820
+ exports.assignRoles = require_refResolveFns.assignRoles;
7090
6821
  exports.autoHeal = require_healingFns.autoHeal;
7091
6822
  exports.bezier = require_primitiveFns.bezier;
7092
6823
  exports.blueprintToDXF = require_importFns.blueprintToDXF;
@@ -7103,7 +6834,7 @@ exports.bsplineApprox = require_primitiveFns.bsplineApprox;
7103
6834
  exports.bug = require_errors.bug;
7104
6835
  exports.cameraFromPlane = require_cameraFns.cameraFromPlane;
7105
6836
  exports.cameraLookAt = require_cameraFns.cameraLookAt;
7106
- exports.captureHint = require_shapeRefFns.captureHint;
6837
+ exports.captureHint = require_refResolveFns.captureHint;
7107
6838
  exports.cast = require_faceFns.cast;
7108
6839
  exports.castShape = require_shapeTypes.castShape;
7109
6840
  exports.castShape3D = require_shapeTypes.castShape3D;
@@ -7148,9 +6879,10 @@ exports.createBlueprint = require_blueprintFns.createBlueprint;
7148
6879
  exports.createCamera = require_cameraFns.createCamera;
7149
6880
  exports.createCompound = require_shapeTypes.createCompound;
7150
6881
  exports.createCompoundBlueprint = require_blueprintFns.createCompoundBlueprint;
6882
+ exports.createDerivedFaceRef = require_refResolveFns.createDerivedFaceRef;
7151
6883
  exports.createDistanceQuery = require_measureFns.createDistanceQuery;
7152
6884
  exports.createEdge = require_shapeTypes.createEdge;
7153
- exports.createEdgeRef = createEdgeRef;
6885
+ exports.createEdgeRef = require_refResolveFns.createEdgeRef;
7154
6886
  exports.createFace = require_shapeTypes.createFace;
7155
6887
  exports.createHandle = require_shapeTypes.createHandle;
7156
6888
  exports.createHistory = require_threadFns.createHistory;
@@ -7159,13 +6891,13 @@ exports.createMeshCache = require_meshFns.createMeshCache;
7159
6891
  exports.createNamedPlane = require_planeOps.createNamedPlane;
7160
6892
  exports.createOperationRegistry = require_workerPool.createOperationRegistry;
7161
6893
  exports.createPlane = require_planeOps.createPlane;
7162
- exports.createRef = require_shapeRefFns.createRef;
6894
+ exports.createRef = require_refResolveFns.createRef;
7163
6895
  exports.createRegistry = require_threadFns.createRegistry;
7164
6896
  exports.createShell = require_shapeTypes.createShell;
7165
6897
  exports.createSolid = require_shapeTypes.createSolid;
7166
6898
  exports.createTaskQueue = require_workerPool.createTaskQueue;
7167
6899
  exports.createVertex = require_shapeTypes.createVertex;
7168
- exports.createVertexRef = createVertexRef;
6900
+ exports.createVertexRef = require_refResolveFns.createVertexRef;
7169
6901
  exports.createWire = require_shapeTypes.createWire;
7170
6902
  exports.createWorkerClient = require_workerPool.createWorkerClient;
7171
6903
  exports.createWorkerHandler = require_workerPool.createWorkerHandler;
@@ -7202,7 +6934,7 @@ exports.cutBlueprints = require_boolean2D.cutBlueprints;
7202
6934
  exports.cutWithEvolution = require_healingFns.cutWithEvolution;
7203
6935
  exports.cylinder = require_primitiveFns.cylinder;
7204
6936
  exports.cylindricalJoint = require_threadFns.cylindricalJoint;
7205
- exports.defaultScorer = require_shapeRefFns.defaultScorer;
6937
+ exports.defaultScorer = require_refResolveFns.defaultScorer;
7206
6938
  exports.dequeueTask = require_workerPool.dequeueTask;
7207
6939
  exports.describe = describe;
7208
6940
  exports.deserializeDrawing = require_drawFns.deserializeDrawing;
@@ -7231,7 +6963,7 @@ exports.drawingIntersect = require_drawFns.drawingIntersect;
7231
6963
  exports.drawingToSketchOnPlane = require_drawFns.drawingToSketchOnPlane;
7232
6964
  exports.drill = drill;
7233
6965
  exports.edgeFinder = require_helpers.edgeFinder;
7234
- exports.edgesOfFace = require_healingFns.edgesOfFace;
6966
+ exports.edgesOfFace = require_adjacencyFns.edgesOfFace;
7235
6967
  exports.ellipse = require_primitiveFns.ellipse;
7236
6968
  exports.ellipseArc = require_primitiveFns.ellipseArc;
7237
6969
  exports.ellipsoid = require_primitiveFns.ellipsoid;
@@ -7256,8 +6988,8 @@ exports.faceCenter = require_faceFns.faceCenter;
7256
6988
  exports.faceFinder = require_helpers.faceFinder;
7257
6989
  exports.faceGeomType = require_faceFns.faceGeomType;
7258
6990
  exports.faceOrientation = require_faceFns.faceOrientation;
7259
- exports.facesOfEdge = require_healingFns.facesOfEdge;
7260
- exports.facesOfVertex = require_healingFns.facesOfVertex;
6991
+ exports.facesOfEdge = require_adjacencyFns.facesOfEdge;
6992
+ exports.facesOfVertex = require_adjacencyFns.facesOfVertex;
7261
6993
  exports.fieldBoolean = fieldBoolean;
7262
6994
  exports.fieldContour = fieldContour;
7263
6995
  exports.fieldOffset = fieldOffset;
@@ -7370,17 +7102,21 @@ exports.isChamferRadius = isChamferRadius;
7370
7102
  exports.isClosedWire = require_shapeTypes.isClosedWire;
7371
7103
  exports.isCompSolid = require_faceFns.isCompSolid;
7372
7104
  exports.isCompound = require_shapeTypes.isCompound;
7105
+ exports.isDerivedFaceRef = require_refResolveFns.isDerivedFaceRef;
7373
7106
  exports.isDisposeRequest = require_workerPool.isDisposeRequest;
7374
7107
  exports.isEdge = require_shapeTypes.isEdge;
7108
+ exports.isEdgeRef = require_refResolveFns.isEdgeRef;
7375
7109
  exports.isEmpty = isEmpty;
7376
7110
  exports.isEqualShape = require_shapeFns.isEqualShape;
7377
7111
  exports.isErr = require_errors.isErr;
7378
7112
  exports.isErrorResponse = require_workerPool.isErrorResponse;
7379
7113
  exports.isFace = require_shapeTypes.isFace;
7114
+ exports.isFaceRef = require_refResolveFns.isFaceRef;
7380
7115
  exports.isFilletRadius = isFilletRadius;
7381
7116
  exports.isInitRequest = require_workerPool.isInitRequest;
7382
7117
  exports.isInside2D = require_blueprintFns.isInside2D;
7383
7118
  exports.isInstanced = isInstanced;
7119
+ exports.isLineageRef = require_refResolveFns.isLineageRef;
7384
7120
  exports.isLive = require_shapeTypes.isLive;
7385
7121
  exports.isManifoldShell = require_shapeTypes.isManifoldShell;
7386
7122
  exports.isNumber = isNumber;
@@ -7400,6 +7136,7 @@ exports.isSuccessResponse = require_workerPool.isSuccessResponse;
7400
7136
  exports.isValid = isValid;
7401
7137
  exports.isValidSolid = require_shapeTypes.isValidSolid;
7402
7138
  exports.isVertex = require_shapeTypes.isVertex;
7139
+ exports.isVertexRef = require_refResolveFns.isVertexRef;
7403
7140
  exports.isWire = require_shapeTypes.isWire;
7404
7141
  exports.iterCompSolids = require_topologyQueryFns.iterCompSolids;
7405
7142
  exports.iterEdges = require_topologyQueryFns.iterEdges;
@@ -7539,11 +7276,15 @@ exports.resetPerformanceStats = require_shapeTypes.resetPerformanceStats;
7539
7276
  exports.resize = require_shapeFns.resize;
7540
7277
  exports.resolve = resolve;
7541
7278
  exports.resolve3D = resolve3D;
7279
+ exports.resolveDerivedFaceRef = require_refResolveFns.resolveDerivedFaceRef;
7542
7280
  exports.resolveDirection = require_types.resolveDirection;
7543
- exports.resolveEdgeRef = resolveEdgeRef;
7281
+ exports.resolveEdgeRef = require_refResolveFns.resolveEdgeRef;
7282
+ exports.resolveLineageRef = require_refResolveFns.resolveLineageRef;
7544
7283
  exports.resolvePlane = require_planeOps.resolvePlane;
7545
- exports.resolveRef = require_shapeRefFns.resolveRef;
7546
- exports.resolveVertexRef = resolveVertexRef;
7284
+ exports.resolveRef = require_refResolveFns.resolveRef;
7285
+ exports.resolveRefIn = require_refResolveFns.resolveRefIn;
7286
+ exports.resolveRefParams = require_refResolveFns.resolveRefParams;
7287
+ exports.resolveVertexRef = require_refResolveFns.resolveVertexRef;
7547
7288
  exports.reverseCurve = require_blueprintFns.reverseCurve;
7548
7289
  exports.revoluteJoint = require_threadFns.revoluteJoint;
7549
7290
  exports.revolve = revolve;
@@ -7582,7 +7323,7 @@ exports.sewShells = require_primitiveFns.sewShells;
7582
7323
  exports.shape = shape;
7583
7324
  exports.shapeToMeshInput = shapeToMeshInput;
7584
7325
  exports.shapeType = require_faceFns.shapeType;
7585
- exports.sharedEdges = require_healingFns.sharedEdges;
7326
+ exports.sharedEdges = require_adjacencyFns.sharedEdges;
7586
7327
  exports.shell = shell;
7587
7328
  exports.shellMesh = shellMesh;
7588
7329
  exports.shellShape = shellShape;
@@ -7666,7 +7407,7 @@ exports.unwrapErr = require_errors.unwrapErr;
7666
7407
  exports.unwrapOr = require_errors.unwrapOr;
7667
7408
  exports.unwrapOrElse = require_errors.unwrapOrElse;
7668
7409
  exports.updateNode = require_threadFns.updateNode;
7669
- exports.updateRoles = require_shapeRefFns.updateRoles;
7410
+ exports.updateRoles = require_refResolveFns.updateRoles;
7670
7411
  exports.uvBounds = require_faceFns.uvBounds;
7671
7412
  exports.uvCoordinates = require_faceFns.uvCoordinates;
7672
7413
  exports.validSolid = require_shapeTypes.validSolid;
@@ -7692,8 +7433,8 @@ exports.vecSub = require_vecOps.vecSub;
7692
7433
  exports.vertex = require_primitiveFns.vertex;
7693
7434
  exports.vertexFinder = vertexFinder;
7694
7435
  exports.vertexPosition = require_topologyQueryFns.vertexPosition;
7695
- exports.verticesOfEdge = require_healingFns.verticesOfEdge;
7696
- exports.verticesOfFace = require_healingFns.verticesOfFace;
7436
+ exports.verticesOfEdge = require_adjacencyFns.verticesOfEdge;
7437
+ exports.verticesOfFace = require_adjacencyFns.verticesOfFace;
7697
7438
  exports.voxelBoolean = voxelBoolean;
7698
7439
  exports.voxelBooleanField = voxelBooleanField;
7699
7440
  exports.voxelBooleanFieldShapes = voxelBooleanFieldShapes;
@@ -7705,7 +7446,7 @@ exports.windingNumbers = windingNumbers;
7705
7446
  exports.wire = require_primitiveFns.wire;
7706
7447
  exports.wireFinder = require_helpers.wireFinder;
7707
7448
  exports.wireLoop = require_primitiveFns.wireLoop;
7708
- exports.wiresOfFace = require_healingFns.wiresOfFace;
7449
+ exports.wiresOfFace = require_adjacencyFns.wiresOfFace;
7709
7450
  exports.withKernel = require_shapeTypes.withKernel;
7710
7451
  exports.withKernelDir = withKernelDir;
7711
7452
  exports.withKernelPnt = withKernelPnt;