brepjs 18.113.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.
@@ -0,0 +1,247 @@
1
+ import { Z as getKernel, r as castShapeWithKnownType } from "./shapeTypes-Dpu6mD3m.js";
2
+ import { l as getOrCreateCache } from "./topologyQueryFns-BeKaWpNm.js";
3
+ import { n as HASH_CODE_MAX } from "./constants-ITRzCnCp.js";
4
+ //#region src/topology/adjacencyFns.ts
5
+ /**
6
+ * Topology adjacency queries — find related sub-shapes within a parent shape.
7
+ *
8
+ * Uses cached topology extraction and an edge→faces adjacency map
9
+ * (built once per parent shape and cached) to avoid redundant WASM calls.
10
+ */
11
+ function wrapAll(shapes, type) {
12
+ return shapes.map((s) => castShapeWithKnownType(s, type));
13
+ }
14
+ /**
15
+ * Iterate sub-shapes of `parentKernel` of the given `type`, deduplicate by
16
+ * hash+isSame, and return branded handles of type `T`.
17
+ *
18
+ * Used by edgesOfFace, wiresOfFace, and verticesOfEdge — all of which need
19
+ * the same deduplicated-children pattern on a raw KernelShape.
20
+ */
21
+ function deduplicatedSubShapes(parentKernel, type) {
22
+ const kernel = getKernel();
23
+ const items = kernel.iterShapes(parentKernel, type);
24
+ const results = [];
25
+ const seen = /* @__PURE__ */ new Map();
26
+ for (const item of items) {
27
+ const hash = kernel.hashCode(item, HASH_CODE_MAX);
28
+ const bucket = seen.get(hash);
29
+ if (!bucket) {
30
+ seen.set(hash, [item]);
31
+ results.push(item);
32
+ } else if (!bucket.some((r) => kernel.isSame(r, item))) {
33
+ bucket.push(item);
34
+ results.push(item);
35
+ }
36
+ }
37
+ return wrapAll(results, type);
38
+ }
39
+ /**
40
+ * Build or retrieve the cached edge→faces adjacency map for a parent shape.
41
+ * Maps edge hash codes to edge-face pairs, storing the edge alongside each
42
+ * face so facesOfEdge can verify via isSame without re-extracting face edges.
43
+ */
44
+ function getEdgeToFacesMap(parent) {
45
+ const cache = getOrCreateCache(parent);
46
+ if (cache.edgeToFaces) return cache.edgeToFaces;
47
+ const kernel = getKernel();
48
+ const edgeToFaces = /* @__PURE__ */ new Map();
49
+ const allFaces = kernel.iterShapes(parent.wrapped, "face");
50
+ for (const f of allFaces) {
51
+ const edges = kernel.iterShapes(f, "edge");
52
+ for (const e of edges) {
53
+ const hash = kernel.hashCode(e, HASH_CODE_MAX);
54
+ let bucket = edgeToFaces.get(hash);
55
+ if (!bucket) {
56
+ bucket = [];
57
+ edgeToFaces.set(hash, bucket);
58
+ }
59
+ if (!bucket.some((entry) => kernel.isSame(entry.edge, e) && kernel.isSame(entry.face, f))) bucket.push({
60
+ edge: e,
61
+ face: f
62
+ });
63
+ }
64
+ }
65
+ cache.edgeToFaces = edgeToFaces;
66
+ return edgeToFaces;
67
+ }
68
+ /**
69
+ * Build or retrieve the cached vertex→faces adjacency map for a parent shape —
70
+ * the vertex analogue of {@link getEdgeToFacesMap}.
71
+ */
72
+ function getVertexToFacesMap(parent) {
73
+ const cache = getOrCreateCache(parent);
74
+ if (cache.vertexToFaces) return cache.vertexToFaces;
75
+ const kernel = getKernel();
76
+ const vertexToFaces = /* @__PURE__ */ new Map();
77
+ for (const f of kernel.iterShapes(parent.wrapped, "face")) for (const v of kernel.iterShapes(f, "vertex")) {
78
+ const hash = kernel.hashCode(v, HASH_CODE_MAX);
79
+ let bucket = vertexToFaces.get(hash);
80
+ if (!bucket) {
81
+ bucket = [];
82
+ vertexToFaces.set(hash, bucket);
83
+ }
84
+ if (!bucket.some((entry) => kernel.isSame(entry.vertex, v) && kernel.isSame(entry.face, f))) bucket.push({
85
+ vertex: v,
86
+ face: f
87
+ });
88
+ }
89
+ cache.vertexToFaces = vertexToFaces;
90
+ return vertexToFaces;
91
+ }
92
+ /**
93
+ * Get all faces adjacent to a given edge within a parent shape.
94
+ *
95
+ * An edge typically borders exactly two faces in a solid, or one face
96
+ * if the edge is on a boundary.
97
+ *
98
+ * @param parent - The parent shape to search within.
99
+ * @param edge - The edge whose adjacent faces to find.
100
+ * @returns Array of unique faces containing the given edge.
101
+ */
102
+ function facesOfEdge(parent, edge) {
103
+ const kernel = getKernel();
104
+ const edgeToFaces = getEdgeToFacesMap(parent);
105
+ const hash = kernel.hashCode(edge.wrapped, HASH_CODE_MAX);
106
+ const bucket = edgeToFaces.get(hash) ?? [];
107
+ const results = [];
108
+ const seen = /* @__PURE__ */ new Map();
109
+ for (const entry of bucket) {
110
+ if (!kernel.isSame(entry.edge, edge.wrapped)) continue;
111
+ const fHash = kernel.hashCode(entry.face, HASH_CODE_MAX);
112
+ const fBucket = seen.get(fHash);
113
+ if (!fBucket) {
114
+ seen.set(fHash, [entry.face]);
115
+ results.push(entry.face);
116
+ } else if (!fBucket.some((r) => kernel.isSame(r, entry.face))) {
117
+ fBucket.push(entry.face);
118
+ results.push(entry.face);
119
+ }
120
+ }
121
+ return wrapAll(results, "face");
122
+ }
123
+ /**
124
+ * Get all faces meeting at a vertex (≥3 for a solid corner, fewer on a
125
+ * boundary), via the cached vertex→faces map. The vertex equivalent of
126
+ * {@link facesOfEdge}, with the same hash-bucket + isSame verification.
127
+ *
128
+ * @param parent - The parent shape to search within.
129
+ * @param vertex - The vertex whose adjacent faces to find.
130
+ */
131
+ function facesOfVertex(parent, vertex) {
132
+ const kernel = getKernel();
133
+ const vertexToFaces = getVertexToFacesMap(parent);
134
+ const hash = kernel.hashCode(vertex.wrapped, HASH_CODE_MAX);
135
+ const bucket = vertexToFaces.get(hash) ?? [];
136
+ const results = [];
137
+ const seen = /* @__PURE__ */ new Map();
138
+ for (const entry of bucket) {
139
+ if (!kernel.isSame(entry.vertex, vertex.wrapped)) continue;
140
+ const fHash = kernel.hashCode(entry.face, HASH_CODE_MAX);
141
+ const fBucket = seen.get(fHash);
142
+ if (!fBucket) {
143
+ seen.set(fHash, [entry.face]);
144
+ results.push(entry.face);
145
+ } else if (!fBucket.some((r) => kernel.isSame(r, entry.face))) {
146
+ fBucket.push(entry.face);
147
+ results.push(entry.face);
148
+ }
149
+ }
150
+ return wrapAll(results, "face");
151
+ }
152
+ /**
153
+ * Get all edges bounding a face.
154
+ *
155
+ * @param face - The face whose edges to enumerate.
156
+ * @returns Array of unique edges forming the face boundary.
157
+ */
158
+ function edgesOfFace(face) {
159
+ return deduplicatedSubShapes(face.wrapped, "edge");
160
+ }
161
+ /**
162
+ * Get all vertices of a face. The vertex equivalent of {@link edgesOfFace}.
163
+ *
164
+ * @param face - The face whose vertices to enumerate.
165
+ */
166
+ function verticesOfFace(face) {
167
+ return deduplicatedSubShapes(face.wrapped, "vertex");
168
+ }
169
+ /**
170
+ * Get all wires of a face (outer wire + inner hole wires).
171
+ * All wires bounding a face are closed by definition.
172
+ *
173
+ * @param face - The face whose wires to enumerate.
174
+ */
175
+ function wiresOfFace(face) {
176
+ return deduplicatedSubShapes(face.wrapped, "wire");
177
+ }
178
+ /**
179
+ * Get the start and end vertices of an edge.
180
+ *
181
+ * @param edge - The edge whose vertices to retrieve.
182
+ * @returns Array of 1-2 vertices (1 if degenerate/closed, 2 otherwise).
183
+ */
184
+ function verticesOfEdge(edge) {
185
+ return deduplicatedSubShapes(edge.wrapped, "vertex");
186
+ }
187
+ /**
188
+ * Get all faces that share at least one edge with the given face.
189
+ *
190
+ * The returned list does not include the input face itself.
191
+ * Uses the cached edge→faces adjacency map for the parent shape.
192
+ *
193
+ * @param parent - The parent shape to search within.
194
+ * @param face - The face whose neighbors to find.
195
+ * @returns Array of unique adjacent faces (excluding the input face).
196
+ */
197
+ function adjacentFaces(parent, face) {
198
+ const kernel = getKernel();
199
+ const edgeToFaces = getEdgeToFacesMap(parent);
200
+ const faceEdgeHandles = deduplicatedSubShapes(face.wrapped, "edge");
201
+ const neighborRaw = [];
202
+ const seen = /* @__PURE__ */ new Map();
203
+ for (const edgeHandle of faceEdgeHandles) {
204
+ const hash = kernel.hashCode(edgeHandle.wrapped, HASH_CODE_MAX);
205
+ const entries = edgeToFaces.get(hash) ?? [];
206
+ for (const entry of entries) {
207
+ if (kernel.isSame(entry.face, face.wrapped)) continue;
208
+ const fHash = kernel.hashCode(entry.face, HASH_CODE_MAX);
209
+ const bucket = seen.get(fHash);
210
+ if (!bucket) {
211
+ seen.set(fHash, [entry.face]);
212
+ neighborRaw.push(entry.face);
213
+ } else if (!bucket.some((r) => kernel.isSame(r, entry.face))) {
214
+ bucket.push(entry.face);
215
+ neighborRaw.push(entry.face);
216
+ }
217
+ }
218
+ }
219
+ return wrapAll(neighborRaw, "face");
220
+ }
221
+ /**
222
+ * Get all edges shared between two faces.
223
+ *
224
+ * @param face1 - The first face.
225
+ * @param face2 - The second face.
226
+ * @returns Array of edges present in both faces (via isSame comparison).
227
+ */
228
+ function sharedEdges(face1, face2) {
229
+ const kernel = getKernel();
230
+ const edges1 = kernel.iterShapes(face1.wrapped, "edge");
231
+ const edges2 = kernel.iterShapes(face2.wrapped, "edge");
232
+ const edge2Map = /* @__PURE__ */ new Map();
233
+ for (const e2 of edges2) {
234
+ const hash = kernel.hashCode(e2, HASH_CODE_MAX);
235
+ let bucket = edge2Map.get(hash);
236
+ if (!bucket) {
237
+ bucket = [];
238
+ edge2Map.set(hash, bucket);
239
+ }
240
+ bucket.push(e2);
241
+ }
242
+ const shared = [];
243
+ for (const e1 of edges1) if (edge2Map.get(kernel.hashCode(e1, 2147483647))?.some((e2) => kernel.isSame(e1, e2))) shared.push(e1);
244
+ return wrapAll(shared, "edge");
245
+ }
246
+ //#endregion
247
+ export { sharedEdges as a, wiresOfFace as c, facesOfVertex as i, edgesOfFace as n, verticesOfEdge as o, facesOfEdge as r, verticesOfFace as s, adjacentFaces as t };
@@ -0,0 +1,294 @@
1
+ const require_shapeTypes = require("./shapeTypes-BTTwjHy5.cjs");
2
+ const require_topologyQueryFns = require("./topologyQueryFns-CoXVHuN7.cjs");
3
+ const require_constants = require("./constants-BOVyEYGH.cjs");
4
+ //#region src/topology/adjacencyFns.ts
5
+ /**
6
+ * Topology adjacency queries — find related sub-shapes within a parent shape.
7
+ *
8
+ * Uses cached topology extraction and an edge→faces adjacency map
9
+ * (built once per parent shape and cached) to avoid redundant WASM calls.
10
+ */
11
+ function wrapAll(shapes, type) {
12
+ return shapes.map((s) => require_shapeTypes.castShapeWithKnownType(s, type));
13
+ }
14
+ /**
15
+ * Iterate sub-shapes of `parentKernel` of the given `type`, deduplicate by
16
+ * hash+isSame, and return branded handles of type `T`.
17
+ *
18
+ * Used by edgesOfFace, wiresOfFace, and verticesOfEdge — all of which need
19
+ * the same deduplicated-children pattern on a raw KernelShape.
20
+ */
21
+ function deduplicatedSubShapes(parentKernel, type) {
22
+ const kernel = require_shapeTypes.getKernel();
23
+ const items = kernel.iterShapes(parentKernel, type);
24
+ const results = [];
25
+ const seen = /* @__PURE__ */ new Map();
26
+ for (const item of items) {
27
+ const hash = kernel.hashCode(item, require_constants.HASH_CODE_MAX);
28
+ const bucket = seen.get(hash);
29
+ if (!bucket) {
30
+ seen.set(hash, [item]);
31
+ results.push(item);
32
+ } else if (!bucket.some((r) => kernel.isSame(r, item))) {
33
+ bucket.push(item);
34
+ results.push(item);
35
+ }
36
+ }
37
+ return wrapAll(results, type);
38
+ }
39
+ /**
40
+ * Build or retrieve the cached edge→faces adjacency map for a parent shape.
41
+ * Maps edge hash codes to edge-face pairs, storing the edge alongside each
42
+ * face so facesOfEdge can verify via isSame without re-extracting face edges.
43
+ */
44
+ function getEdgeToFacesMap(parent) {
45
+ const cache = require_topologyQueryFns.getOrCreateCache(parent);
46
+ if (cache.edgeToFaces) return cache.edgeToFaces;
47
+ const kernel = require_shapeTypes.getKernel();
48
+ const edgeToFaces = /* @__PURE__ */ new Map();
49
+ const allFaces = kernel.iterShapes(parent.wrapped, "face");
50
+ for (const f of allFaces) {
51
+ const edges = kernel.iterShapes(f, "edge");
52
+ for (const e of edges) {
53
+ const hash = kernel.hashCode(e, require_constants.HASH_CODE_MAX);
54
+ let bucket = edgeToFaces.get(hash);
55
+ if (!bucket) {
56
+ bucket = [];
57
+ edgeToFaces.set(hash, bucket);
58
+ }
59
+ if (!bucket.some((entry) => kernel.isSame(entry.edge, e) && kernel.isSame(entry.face, f))) bucket.push({
60
+ edge: e,
61
+ face: f
62
+ });
63
+ }
64
+ }
65
+ cache.edgeToFaces = edgeToFaces;
66
+ return edgeToFaces;
67
+ }
68
+ /**
69
+ * Build or retrieve the cached vertex→faces adjacency map for a parent shape —
70
+ * the vertex analogue of {@link getEdgeToFacesMap}.
71
+ */
72
+ function getVertexToFacesMap(parent) {
73
+ const cache = require_topologyQueryFns.getOrCreateCache(parent);
74
+ if (cache.vertexToFaces) return cache.vertexToFaces;
75
+ const kernel = require_shapeTypes.getKernel();
76
+ const vertexToFaces = /* @__PURE__ */ new Map();
77
+ for (const f of kernel.iterShapes(parent.wrapped, "face")) for (const v of kernel.iterShapes(f, "vertex")) {
78
+ const hash = kernel.hashCode(v, require_constants.HASH_CODE_MAX);
79
+ let bucket = vertexToFaces.get(hash);
80
+ if (!bucket) {
81
+ bucket = [];
82
+ vertexToFaces.set(hash, bucket);
83
+ }
84
+ if (!bucket.some((entry) => kernel.isSame(entry.vertex, v) && kernel.isSame(entry.face, f))) bucket.push({
85
+ vertex: v,
86
+ face: f
87
+ });
88
+ }
89
+ cache.vertexToFaces = vertexToFaces;
90
+ return vertexToFaces;
91
+ }
92
+ /**
93
+ * Get all faces adjacent to a given edge within a parent shape.
94
+ *
95
+ * An edge typically borders exactly two faces in a solid, or one face
96
+ * if the edge is on a boundary.
97
+ *
98
+ * @param parent - The parent shape to search within.
99
+ * @param edge - The edge whose adjacent faces to find.
100
+ * @returns Array of unique faces containing the given edge.
101
+ */
102
+ function facesOfEdge(parent, edge) {
103
+ const kernel = require_shapeTypes.getKernel();
104
+ const edgeToFaces = getEdgeToFacesMap(parent);
105
+ const hash = kernel.hashCode(edge.wrapped, require_constants.HASH_CODE_MAX);
106
+ const bucket = edgeToFaces.get(hash) ?? [];
107
+ const results = [];
108
+ const seen = /* @__PURE__ */ new Map();
109
+ for (const entry of bucket) {
110
+ if (!kernel.isSame(entry.edge, edge.wrapped)) continue;
111
+ const fHash = kernel.hashCode(entry.face, require_constants.HASH_CODE_MAX);
112
+ const fBucket = seen.get(fHash);
113
+ if (!fBucket) {
114
+ seen.set(fHash, [entry.face]);
115
+ results.push(entry.face);
116
+ } else if (!fBucket.some((r) => kernel.isSame(r, entry.face))) {
117
+ fBucket.push(entry.face);
118
+ results.push(entry.face);
119
+ }
120
+ }
121
+ return wrapAll(results, "face");
122
+ }
123
+ /**
124
+ * Get all faces meeting at a vertex (≥3 for a solid corner, fewer on a
125
+ * boundary), via the cached vertex→faces map. The vertex equivalent of
126
+ * {@link facesOfEdge}, with the same hash-bucket + isSame verification.
127
+ *
128
+ * @param parent - The parent shape to search within.
129
+ * @param vertex - The vertex whose adjacent faces to find.
130
+ */
131
+ function facesOfVertex(parent, vertex) {
132
+ const kernel = require_shapeTypes.getKernel();
133
+ const vertexToFaces = getVertexToFacesMap(parent);
134
+ const hash = kernel.hashCode(vertex.wrapped, require_constants.HASH_CODE_MAX);
135
+ const bucket = vertexToFaces.get(hash) ?? [];
136
+ const results = [];
137
+ const seen = /* @__PURE__ */ new Map();
138
+ for (const entry of bucket) {
139
+ if (!kernel.isSame(entry.vertex, vertex.wrapped)) continue;
140
+ const fHash = kernel.hashCode(entry.face, require_constants.HASH_CODE_MAX);
141
+ const fBucket = seen.get(fHash);
142
+ if (!fBucket) {
143
+ seen.set(fHash, [entry.face]);
144
+ results.push(entry.face);
145
+ } else if (!fBucket.some((r) => kernel.isSame(r, entry.face))) {
146
+ fBucket.push(entry.face);
147
+ results.push(entry.face);
148
+ }
149
+ }
150
+ return wrapAll(results, "face");
151
+ }
152
+ /**
153
+ * Get all edges bounding a face.
154
+ *
155
+ * @param face - The face whose edges to enumerate.
156
+ * @returns Array of unique edges forming the face boundary.
157
+ */
158
+ function edgesOfFace(face) {
159
+ return deduplicatedSubShapes(face.wrapped, "edge");
160
+ }
161
+ /**
162
+ * Get all vertices of a face. The vertex equivalent of {@link edgesOfFace}.
163
+ *
164
+ * @param face - The face whose vertices to enumerate.
165
+ */
166
+ function verticesOfFace(face) {
167
+ return deduplicatedSubShapes(face.wrapped, "vertex");
168
+ }
169
+ /**
170
+ * Get all wires of a face (outer wire + inner hole wires).
171
+ * All wires bounding a face are closed by definition.
172
+ *
173
+ * @param face - The face whose wires to enumerate.
174
+ */
175
+ function wiresOfFace(face) {
176
+ return deduplicatedSubShapes(face.wrapped, "wire");
177
+ }
178
+ /**
179
+ * Get the start and end vertices of an edge.
180
+ *
181
+ * @param edge - The edge whose vertices to retrieve.
182
+ * @returns Array of 1-2 vertices (1 if degenerate/closed, 2 otherwise).
183
+ */
184
+ function verticesOfEdge(edge) {
185
+ return deduplicatedSubShapes(edge.wrapped, "vertex");
186
+ }
187
+ /**
188
+ * Get all faces that share at least one edge with the given face.
189
+ *
190
+ * The returned list does not include the input face itself.
191
+ * Uses the cached edge→faces adjacency map for the parent shape.
192
+ *
193
+ * @param parent - The parent shape to search within.
194
+ * @param face - The face whose neighbors to find.
195
+ * @returns Array of unique adjacent faces (excluding the input face).
196
+ */
197
+ function adjacentFaces(parent, face) {
198
+ const kernel = require_shapeTypes.getKernel();
199
+ const edgeToFaces = getEdgeToFacesMap(parent);
200
+ const faceEdgeHandles = deduplicatedSubShapes(face.wrapped, "edge");
201
+ const neighborRaw = [];
202
+ const seen = /* @__PURE__ */ new Map();
203
+ for (const edgeHandle of faceEdgeHandles) {
204
+ const hash = kernel.hashCode(edgeHandle.wrapped, require_constants.HASH_CODE_MAX);
205
+ const entries = edgeToFaces.get(hash) ?? [];
206
+ for (const entry of entries) {
207
+ if (kernel.isSame(entry.face, face.wrapped)) continue;
208
+ const fHash = kernel.hashCode(entry.face, require_constants.HASH_CODE_MAX);
209
+ const bucket = seen.get(fHash);
210
+ if (!bucket) {
211
+ seen.set(fHash, [entry.face]);
212
+ neighborRaw.push(entry.face);
213
+ } else if (!bucket.some((r) => kernel.isSame(r, entry.face))) {
214
+ bucket.push(entry.face);
215
+ neighborRaw.push(entry.face);
216
+ }
217
+ }
218
+ }
219
+ return wrapAll(neighborRaw, "face");
220
+ }
221
+ /**
222
+ * Get all edges shared between two faces.
223
+ *
224
+ * @param face1 - The first face.
225
+ * @param face2 - The second face.
226
+ * @returns Array of edges present in both faces (via isSame comparison).
227
+ */
228
+ function sharedEdges(face1, face2) {
229
+ const kernel = require_shapeTypes.getKernel();
230
+ const edges1 = kernel.iterShapes(face1.wrapped, "edge");
231
+ const edges2 = kernel.iterShapes(face2.wrapped, "edge");
232
+ const edge2Map = /* @__PURE__ */ new Map();
233
+ for (const e2 of edges2) {
234
+ const hash = kernel.hashCode(e2, require_constants.HASH_CODE_MAX);
235
+ let bucket = edge2Map.get(hash);
236
+ if (!bucket) {
237
+ bucket = [];
238
+ edge2Map.set(hash, bucket);
239
+ }
240
+ bucket.push(e2);
241
+ }
242
+ const shared = [];
243
+ for (const e1 of edges1) if (edge2Map.get(kernel.hashCode(e1, 2147483647))?.some((e2) => kernel.isSame(e1, e2))) shared.push(e1);
244
+ return wrapAll(shared, "edge");
245
+ }
246
+ //#endregion
247
+ Object.defineProperty(exports, "adjacentFaces", {
248
+ enumerable: true,
249
+ get: function() {
250
+ return adjacentFaces;
251
+ }
252
+ });
253
+ Object.defineProperty(exports, "edgesOfFace", {
254
+ enumerable: true,
255
+ get: function() {
256
+ return edgesOfFace;
257
+ }
258
+ });
259
+ Object.defineProperty(exports, "facesOfEdge", {
260
+ enumerable: true,
261
+ get: function() {
262
+ return facesOfEdge;
263
+ }
264
+ });
265
+ Object.defineProperty(exports, "facesOfVertex", {
266
+ enumerable: true,
267
+ get: function() {
268
+ return facesOfVertex;
269
+ }
270
+ });
271
+ Object.defineProperty(exports, "sharedEdges", {
272
+ enumerable: true,
273
+ get: function() {
274
+ return sharedEdges;
275
+ }
276
+ });
277
+ Object.defineProperty(exports, "verticesOfEdge", {
278
+ enumerable: true,
279
+ get: function() {
280
+ return verticesOfEdge;
281
+ }
282
+ });
283
+ Object.defineProperty(exports, "verticesOfFace", {
284
+ enumerable: true,
285
+ get: function() {
286
+ return verticesOfFace;
287
+ }
288
+ });
289
+ Object.defineProperty(exports, "wiresOfFace", {
290
+ enumerable: true,
291
+ get: function() {
292
+ return wiresOfFace;
293
+ }
294
+ });