geospec 0.1.0-beta.9 → 0.4.1-next.322

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 (105) hide show
  1. package/README.md +34 -9
  2. package/agent/doctrine.md +2 -1
  3. package/agent/geospec-authoring/SKILL.md +3 -3
  4. package/agent/geospec-authoring/api-index.md +20 -92
  5. package/agent/geospec-authoring/api-types.md +85 -480
  6. package/agent/geospec-authoring/public-api-functions.md +21 -1
  7. package/agent/geospec-authoring/public-api-index.md +215 -319
  8. package/agent/geospec-authoring/public-api-types-2.md +480 -352
  9. package/agent/geospec-authoring/public-api-types-3.md +79 -215
  10. package/agent/geospec-authoring/public-api-types.md +334 -849
  11. package/agent/resources.js +12 -13
  12. package/agent/skills.json +2 -3
  13. package/dist/assertion-client/client.d.mts +14 -15
  14. package/dist/assertion-client/client.mjs +1 -1
  15. package/dist/cli/check.mjs +2 -0
  16. package/dist/cli/cli.d.mts +5 -5
  17. package/dist/cli/cli.mjs +20 -3
  18. package/dist/cli/node-host.d.mts +5 -4
  19. package/dist/cli/node-host.mjs +1 -1
  20. package/dist/cli/wire-value.mjs +1 -1
  21. package/dist/config/define-config.d.mts +2 -3
  22. package/dist/config/node/index.mjs +1 -1
  23. package/dist/config/node/load.d.mts +2 -3
  24. package/dist/config/node/load.mjs +1 -1
  25. package/dist/config/read-geospec-config.d.mts +10 -6
  26. package/dist/config/read-geospec-config.mjs +1 -1
  27. package/dist/config/types.d.mts +6 -7
  28. package/dist/create-geospec.d.mts +7 -6
  29. package/dist/engine/client.d.mts +15 -15
  30. package/dist/engine/client.mjs +1 -1
  31. package/dist/engine/matchers.d.mts +10 -11
  32. package/dist/engine/pmi.types.d.mts +11 -12
  33. package/dist/engine/protocol.d.mts +7 -8
  34. package/dist/engine/protocol.mjs +1 -1
  35. package/dist/geometry-unit.d.mts +2 -3
  36. package/dist/index.d.mts +2 -2
  37. package/dist/index.mjs +1 -1
  38. package/dist/mesh/index.d.mts +2 -2
  39. package/dist/mesh/types.d.mts +8 -505
  40. package/dist/model/errors.d.mts +2 -3
  41. package/dist/model/load-model.d.mts +3 -4
  42. package/dist/model/mesh-evidence-matchers.d.mts +2 -3
  43. package/dist/model/native-model-loader.d.mts +14 -17
  44. package/dist/model/native-model-loader.mjs +1 -1
  45. package/dist/model/node/command-exporter.d.mts +3 -4
  46. package/dist/model/node/command-exporter.mjs +1 -1
  47. package/dist/model/node/index.mjs +1 -1
  48. package/dist/model/region-scope.d.mts +3 -6
  49. package/dist/model/region-scope.mjs +1 -1
  50. package/dist/model/subject.d.mts +2 -5
  51. package/dist/model/subject.mjs +1 -1
  52. package/dist/model/types.d.mts +19 -20
  53. package/dist/runner/collector.d.mts +7 -8
  54. package/dist/runner/collector.mjs +3 -1
  55. package/dist/runner/discovery.d.mts +10 -11
  56. package/dist/runner/discovery.mjs +5 -1
  57. package/dist/runner/filter.d.mts +6 -7
  58. package/dist/runner/filter.mjs +3 -1
  59. package/dist/runner/index.d.mts +3 -1
  60. package/dist/runner/index.mjs +1 -1
  61. package/dist/runner/native/native-pool-grants.d.mts +2 -3
  62. package/dist/runner/native/native-serial-runner.d.mts +4 -7
  63. package/dist/runner/native/native-serial-runner.mjs +1 -1
  64. package/dist/runner/node/engine.d.mts +5 -6
  65. package/dist/runner/node/index.mjs +1 -1
  66. package/dist/runner/node/node-vm-filesystem.d.mts +4 -5
  67. package/dist/runner/node/node-vm-filesystem.mjs +1 -1
  68. package/dist/runner/node/pool-runner.d.mts +15 -6
  69. package/dist/runner/node/pool-runner.mjs +1 -1
  70. package/dist/runner/node/pool-worker-entry.d.mts +9 -6
  71. package/dist/runner/node/pool-worker-entry.mjs +1 -1
  72. package/dist/runner/pool/events.mjs +1 -1
  73. package/dist/runner/pool/pool-messages.d.mts +8 -9
  74. package/dist/runner/pool/pool.d.mts +4 -6
  75. package/dist/runner/pool/pool.mjs +1 -1
  76. package/dist/runner/pool/shard-timings.d.mts +3 -4
  77. package/dist/runner/pool/worker-host.d.mts +6 -5
  78. package/dist/runner/pool/worker-host.mjs +1 -1
  79. package/dist/runner/run-geospec-module.d.mts +2 -3
  80. package/dist/runner/run-geospec-module.mjs +2 -2
  81. package/dist/runner/timeout-codes.d.mts +6 -8
  82. package/dist/runner/types.d.mts +56 -53
  83. package/dist/runner/worker/no-matching-tests-issue.d.mts +3 -4
  84. package/dist/runner/worker/runner-types.d.mts +17 -16
  85. package/dist/runner/worker/serial-runner.mjs +1 -1
  86. package/dist/selector/types.d.mts +22 -23
  87. package/dist/step/types.d.mts +4 -119
  88. package/dist/support/filesystem-errors.mjs +1 -0
  89. package/dist/support/hash.mjs +1 -0
  90. package/dist/support/path.mjs +1 -0
  91. package/dist/support/sha256.mjs +1 -0
  92. package/dist/support/types.d.mts +38 -0
  93. package/dist/vitest/adapter.d.mts +5 -6
  94. package/dist/vitest/adapter.mjs +1 -1
  95. package/dist/vitest/index.d.mts +0 -1
  96. package/dist/vitest/index.mjs +1 -1
  97. package/dist/vitest/node/index.d.mts +2 -0
  98. package/dist/vitest/node/index.mjs +1 -0
  99. package/dist/vitest/node/setup-project.d.mts +60 -0
  100. package/dist/vitest/node/setup-project.mjs +1 -0
  101. package/dist/vm/plain-module-vm.d.mts +13 -0
  102. package/dist/vm/plain-module-vm.mjs +8 -0
  103. package/dist/vm/types.d.mts +142 -0
  104. package/package.json +17 -9
  105. package/agent/geospec-authoring/api-types-2.md +0 -85
package/README.md CHANGED
@@ -9,7 +9,7 @@ registry, and host integration. It executes no geometry on its own: every claim
9
9
  is evaluated by the compiled
10
10
  [`geospec-engine`](https://github.com/taucad/geospec/tree/main/packages/geospec-engine) core that
11
11
  the host passes to the runner. Tau's desktop/browser composition and the
12
- [`geospec` CLI](../geospec-engine/README.md) supply that engine. Authored tests
12
+ [`geospec` CLI](#runner-configuration) supply that engine. Authored tests
13
13
  do not import or select an engine, and nothing registers one globally.
14
14
 
15
15
  The following is a `*.geospec.ts` module for the CLI or Tau `test_model`:
@@ -85,6 +85,15 @@ geospec run . --config ci.geospec.config.ts
85
85
  geospec run . --json
86
86
  ```
87
87
 
88
+ **Spec imports.** The CLI bundles each spec with native esbuild over the
89
+ project: a spec may import project files and the GeoSpec builtins (`geospec`,
90
+ `geospec/model`, `geospec/config`). An npm package or URL import refuses with
91
+ `BUNDLER_FAILED` and a message naming the specifier; nothing is fetched or
92
+ installed. A host that resolves packages passes its own module VM as
93
+ `createModuleVm` (`CreateModuleVm` in `geospec/runner`; for a Node pool,
94
+ `moduleVmModule`). Tau's hosts inject Tau's esbuild VM this way. A browser host
95
+ has no default VM and must inject one.
96
+
88
97
  | Flag | Meaning |
89
98
  | --------------------------------------- | --------------------------------------------------------------------------------------------------------- |
90
99
  | `--file <path>` | GeoSpec file or directory root; repeatable. Empty input discovers from the project root. |
@@ -101,6 +110,24 @@ A flag replaces the config field of the same name. **The exit code is the
101
110
  verdict.** `0` only when the run succeeded; any failure, any run-level issue,
102
111
  and an empty selection are all `1`.
103
112
 
113
+ ### Checking a file with no spec
114
+
115
+ `geospec check` runs one bundled validity spec on a STEP or GLB file, so a
116
+ first use needs no `*.geospec.ts`. It takes the same runner, engine and report
117
+ as `geospec run`; the file's folder is the project root.
118
+
119
+ ```bash
120
+ geospec check bracket.step
121
+ geospec check assembly.glb --components 3 --json
122
+ ```
123
+
124
+ Each claim is its own test: no error diagnostics, closed edge incidence
125
+ (`toBeWatertight`) and a bounding box with positive size on every axis, plus
126
+ mesh integrity for a GLB or a valid BRep with closed shells for a STEP file.
127
+ `--components <n>` adds an exact connected-component count. A claim the engine
128
+ cannot decide is reported as inconclusive, never as a pass, and the exit code is
129
+ the verdict.
130
+
104
131
  To embed the pool, use `createGeoSpecNodePoolRunner` from `geospec/runner/node`;
105
132
  each worker owns one engine and its own exporters, and live subjects never
106
133
  cross worker boundaries. To run serially in this process, pass an engine from
@@ -179,7 +206,7 @@ matches the exact retained primitive label, including any ordinal suffix.
179
206
  Inspect that label and preserve cardinality instead of guessing an occurrence
180
207
  path. Mesh input does not invent assembly ancestry or analytic faces; missing
181
208
  measure, probe or ordering evidence refuses, even through query negation.
182
- The STEP Body index currently exposes per-occurrence solid aggregates, so do
209
+ The STEP Body index exposes per-occurrence solid aggregates, so do
183
210
  not assume its Body count maps one-to-one to mesh material roots.
184
211
 
185
212
  Whole-Body contact requires no interior overlap and boundary separation within
@@ -194,9 +221,9 @@ import { loadModel } from 'geospec/model';
194
221
  const subject = await loadModel({ file: 'part.step', format: 'step' });
195
222
  ```
196
223
 
197
- For CAD source, `loadModel({ file: 'main.ts', format: 'step' })` asks the host to export STEP. The configured compiled engine admits the exact returned bytes through its OCCT binding. Export and source provenance do not by themselves certify a geometric requirement.
224
+ For CAD source, `loadModel({ file: 'main.ts', format: 'step' })` asks the host to export STEP. The configured compiled engine admits the exact returned bytes through its OCCT binding. Export and source provenance do not by themselves establish a geometric requirement.
198
225
 
199
- Measurement matchers currently support mesh evidence and prefer exact BRep evidence when it is present:
226
+ Measurement matchers support mesh evidence and prefer exact BRep evidence when it is present:
200
227
 
201
228
  ```ts
202
229
  expectGeo(subject).toHaveSurfaceArea({ value: 12_345, tolerance: 1 });
@@ -229,21 +256,19 @@ expectGeo(subject).toHaveVoidContinuity({
229
256
  These are requirement examples, not a claim that every admitted model supports
230
257
  them. `toHaveVoidContinuity` requires the declared path, material and isolation
231
258
  proposition to be proved in a qualified domain. A sampled cross-section cannot
232
- certify a continuous minimum: the general sampled profile refuses a requested
259
+ establish a continuous minimum: the general sampled profile refuses a requested
233
260
  `minCrossSection`. Restricted nominal analytic domains have separate premises;
234
261
  general mesh lumen, wall and motion qualification remains incomplete.
235
262
 
236
263
  Likewise, watertight edge incidence does not prove manifold validity, a Boolean
237
- fuse or material connectivity. Bounds and playback cannot certify contact,
264
+ fuse or material connectivity. Bounds and playback cannot establish contact,
238
265
  clearance, containment or sealing. Preserve intended geometry and tolerances;
239
266
  report unavailable evidence instead of replacing the requirement with a proxy.
240
267
 
241
268
  The [canonical API index](agent/geospec-authoring/api-index.md) describes
242
269
  ordinary authoring. The separate
243
270
  [complete public API index](agent/geospec-authoring/public-api-index.md)
244
- retains host and framework contracts. A low-level
245
- `GeometrySubject` input is not interchangeable with the opaque subject returned
246
- by canonical `loadModel`.
271
+ retains host and framework contracts.
247
272
 
248
273
  When a geometry assertion needs a parameter variant, pass that variant directly to `loadModel`. Omitting `parameters` exercises the defaults authored by the model:
249
274
 
package/agent/doctrine.md CHANGED
@@ -22,7 +22,7 @@ describe('main geometry', () => {
22
22
  });
23
23
  ```
24
24
 
25
- Specs are always TypeScript or JavaScript, whatever the model's kernel: `loadModel({ file })` evaluates `main.ts`, `main.tsx`, `main.py`, `main.scad`, `main.kcl` or `main.cs` through Tau's runtime. `test_model` discovers `*.geospec.ts` and `*.geospec.js` only.
25
+ Specs are always TypeScript or JavaScript, whatever the model's kernel: `loadModel({ file })` evaluates `main.ts`, `main.tsx`, `main.py`, `main.scad`, `main.kcl` or `main.cs` through the exporter the host or the project's `geospec.config.ts` supplies. On Tau projects that is Tau's runtime, configured in `tau.config.ts`; never set GeoSpec exporters there. `test_model` discovers `*.geospec.ts` and `*.geospec.js` only.
26
26
 
27
27
  Every matcher takes one expectation object:
28
28
 
@@ -36,6 +36,7 @@ Every matcher takes one expectation object:
36
36
  - `loadModel({ file, workUnitLimit })` sets the default claim budget for that subject, and `expectGeo(model, { workUnitLimit })` overrides it for one chain. The budget is a positive integer no greater than 512000000. A `MATCHER_TIMEOUT` refusal reports `details.limit` and, when measured, `details.used`; its `test_model` row (category `work-budget`) names in `limit.retry` the one `workUnitLimit` that can decide the claim, or `null` at the host maximum. Never treat the refusal as a pass.
37
37
  - `loadModel({ file, region: { min: [x, y, z], max: [x, y, z] } })` makes a separate claim about one millimetre box, never a stand-in for a whole-model claim. The kernel crops before export (PicoVoxel trims Voxels parts), and other kernels, STEP loads and unconfirmed crops refuse with a typed diagnostic. A cropped subject answers only bounding box, volume, surface area, mass and center of mass of its region, and its assertions record the region. Every other matcher on it refuses with `GEOSPEC_REGION_WHOLE_MODEL_CLAIM`. Name the region in the test, and keep whole-model claims on whole-model loads.
38
38
  - A host or engine limit leaves a claim undecided, never false: `test_model` reports it as inconclusive with category `analysis-limit`, `resource-limit` or `work-budget` and a typed `limit` naming the limit and its numbers. Keep the model as designed: never coarsen, shrink or crop it to fit. Only a `work-budget` row's `limit.retry` is a retry, and `testTimeout` only answers a `timeout` row; report every other limit row as not decided at this capacity.
39
+ - An unknown or mistyped expectation field refuses only that claim, with `GEOSPEC_INVALID_EXPECTATION` naming `details.field`; its `test_model` row is inconclusive, category `invalid-expectation`. Fix the expectation and keep the assertion.
39
40
  - `toHaveCenterOfMass({ point, tolerance })` takes an exact point. Per-axis ranges such as `{ y: { greaterThan: 1 } }` are refused.
40
41
 
41
42
  ## Ceilings
@@ -29,7 +29,7 @@ describe('main geometry', () => {
29
29
  });
30
30
  ```
31
31
 
32
- Specs are always TypeScript or JavaScript, whatever the model's kernel: `loadModel({ file })` evaluates `main.ts`, `main.tsx`, `main.py`, `main.scad`, `main.kcl` or `main.cs` through Tau's runtime. `test_model` discovers `*.geospec.ts` and `*.geospec.js` only.
32
+ Specs are always TypeScript or JavaScript, whatever the model's kernel: `loadModel({ file })` evaluates `main.ts`, `main.tsx`, `main.py`, `main.scad`, `main.kcl` or `main.cs` through the exporter the host or the project's `geospec.config.ts` supplies. On Tau projects that is Tau's runtime, configured in `tau.config.ts`; never set GeoSpec exporters there. `test_model` discovers `*.geospec.ts` and `*.geospec.js` only.
33
33
 
34
34
  Every matcher takes one expectation object:
35
35
 
@@ -43,6 +43,7 @@ Every matcher takes one expectation object:
43
43
  - `loadModel({ file, workUnitLimit })` sets the default claim budget for that subject, and `expectGeo(model, { workUnitLimit })` overrides it for one chain. The budget is a positive integer no greater than 512000000. A `MATCHER_TIMEOUT` refusal reports `details.limit` and, when measured, `details.used`; its `test_model` row (category `work-budget`) names in `limit.retry` the one `workUnitLimit` that can decide the claim, or `null` at the host maximum. Never treat the refusal as a pass.
44
44
  - `loadModel({ file, region: { min: [x, y, z], max: [x, y, z] } })` makes a separate claim about one millimetre box, never a stand-in for a whole-model claim. The kernel crops before export (PicoVoxel trims Voxels parts), and other kernels, STEP loads and unconfirmed crops refuse with a typed diagnostic. A cropped subject answers only bounding box, volume, surface area, mass and center of mass of its region, and its assertions record the region. Every other matcher on it refuses with `GEOSPEC_REGION_WHOLE_MODEL_CLAIM`. Name the region in the test, and keep whole-model claims on whole-model loads.
45
45
  - A host or engine limit leaves a claim undecided, never false: `test_model` reports it as inconclusive with category `analysis-limit`, `resource-limit` or `work-budget` and a typed `limit` naming the limit and its numbers. Keep the model as designed: never coarsen, shrink or crop it to fit. Only a `work-budget` row's `limit.retry` is a retry, and `testTimeout` only answers a `timeout` row; report every other limit row as not decided at this capacity.
46
+ - An unknown or mistyped expectation field refuses only that claim, with `GEOSPEC_INVALID_EXPECTATION` naming `details.field`; its `test_model` row is inconclusive, category `invalid-expectation`. Fix the expectation and keep the assertion.
46
47
  - `toHaveCenterOfMass({ point, tolerance })` takes an exact point. Per-axis ranges such as `{ y: { greaterThan: 1 } }` are refused.
47
48
 
48
49
  ## Ceilings
@@ -485,12 +486,11 @@ LoadModelSourceOptions: {
485
486
 
486
487
  ## API reference
487
488
 
488
- To read any other signature, find its name in `api-index.md`, which lists all 368 symbols by file with the lines that hold each, and read that range of the named file.
489
+ To read any other signature, find its name in `api-index.md`, which lists all 299 symbols by file with the lines that hold each, and read that range of the named file.
489
490
 
490
491
  - `api-functions.md` — Functions
491
492
  - `api-constants.md` — Constants
492
493
  - `api-types.md` — Types
493
- - `api-types-2.md` — Types (2)
494
494
  - `api-classes.md` — Classes
495
495
 
496
496
  Read ranges, not whole files. Never copy a reference into a source file.
@@ -1,6 +1,6 @@
1
1
  # geospec API index
2
2
 
3
- geospec 0.1.0-beta.9 · 368 symbols · extracted by TypeScript 5.9.3.
3
+ geospec 0.4.0 · 299 symbols · extracted by TypeScript 5.9.3.
4
4
 
5
5
  Every symbol appears here exactly once. The heading above each block names the file with its signature, and each top-level symbol names the lines of that file which hold its declaration and members: read only that range.
6
6
 
@@ -37,7 +37,7 @@ GeoSpecAssertion (type) [lines 16-66] [9 members] — Geometry assertion collect
37
37
  GeoSpecAssertion.report (property) — Exact compiled assertion report, including core-owned bytes and polarity
38
38
  GeoSpecAssertion.loadId (property) — The host load which admitted this assertion's subject
39
39
  GeoSpecAssertion.region (property) — The crop this assertion's subject was loaded with
40
- GeoSpecAssertion.durationMs (property) — Wall-clock cost of matcher evaluation in milliseconds (R1
40
+ GeoSpecAssertion.durationMs (property) — Wall-clock cost of matcher evaluation in milliseconds (budgeted matchers only)
41
41
  GeoSpecAssemblyOccurrenceExpectation (type) [lines 68-91] [3 members] — Assembly occurrence rule accepted by `expectGeo(...).toHaveAssemblyOccurrences(...)`
42
42
  GeoSpecAssemblyOccurrenceExpectation.name (property)
43
43
  GeoSpecAssemblyOccurrenceExpectation.count (property)
@@ -203,85 +203,16 @@ GeoSpecVoidWaypoint (type) [lines 818-821] — One void-continuity waypoint
203
203
  GeoSpecVolumeExpectation (type) [lines 823-831] [2 members] — Volume expectation accepted by `expectGeo(...).toHaveVolume(...)`
204
204
  GeoSpecVolumeExpectation.value (property)
205
205
  GeoSpecVolumeExpectation.tolerance (property)
206
- BrepEvidence (type) [lines 833-1058] [11 members] — Basic exact or topology-derived BRep evidence consumed by early feature…
207
- BrepEvidence.validity (property)
208
- BrepEvidence.topologyCounts (property)
209
- BrepEvidence.boundingBox (property)
210
- BrepEvidence.massProperties (property)
211
- BrepEvidence.planarFaces (property)
212
- BrepEvidence.cylindricalFaces (property)
213
- BrepEvidence.circularHoles (property)
214
- BrepEvidence.circularHolePatterns (property)
215
- BrepEvidence.chamferFeatures (property)
216
- BrepEvidence.filletFeatures (property)
217
- BrepEvidence.minimumWallThickness (property)
218
- GeometryFileFormat (type) [lines 1060-1061] — Geometry file formats understood by GeoSpec provenance
219
- GeometryCapability (type) [lines 1063-1081] [2 members] — Capability exposed by a loaded subject
220
- GeometryCapability.kind (property)
221
- GeometryCapability.feature (property)
222
- GeometryDiagnostic (type) [lines 1083-1111] [6 members] — Diagnostic emitted by GeoSpec loaders, analyzers, and matchers
206
+ GeometryDiagnostic (type) [lines 833-861] [6 members] — Diagnostic emitted by GeoSpec loaders, analyzers, and matchers
223
207
  GeometryDiagnostic.code (property)
224
208
  GeometryDiagnostic.severity (property)
225
209
  GeometryDiagnostic.message (property)
226
210
  GeometryDiagnostic.suggestion (property)
227
211
  GeometryDiagnostic.spatial (property)
228
212
  GeometryDiagnostic.details (property)
229
- GeometryProvenance (type) [lines 1113-1133] [6 members] — Provenance recorded by GeoSpec loaders
230
- GeometryProvenance.source (property)
231
- GeometryProvenance.unit (property)
232
- GeometryProvenance.loader (property)
233
- GeometryProvenance.contentHash (property)
234
- GeometryProvenance.parameters (property)
235
- GeometryProvenance.exportIntent (property)
236
- GeometrySource (type) [lines 1135-1152] [5 members] — Source metadata for a loaded geometry subject
237
- GeometrySource.kind (property)
238
- GeometrySource.format (property)
239
- GeometrySource.path (property)
240
- GeometrySource.name (property)
241
- GeometrySource.byteLength (property)
242
- GeometrySubject (type) [lines 1154-1183] [8 members] — Canonical P0 object under test for GeoSpec
243
- GeometrySubject.kind (property)
244
- GeometrySubject.subjectId (property) — Opaque engine-owned identifier used by every protocol claim
245
- GeometrySubject.mesh (property)
246
- GeometrySubject.brep (property)
247
- GeometrySubject.step (property)
248
- GeometrySubject.provenance (property)
249
- GeometrySubject.capabilities (property)
250
- GeometrySubject.diagnostics (property)
251
- GeometrySubjectMeshEvidence (type) [lines 1185-1193] [2 members] — Wire-safe mesh summary carried by an opaque geometry subject
252
- GeometrySubjectMeshEvidence.format (property)
253
- GeometrySubjectMeshEvidence.stats (property)
254
- MeshEvidence (type) [lines 1195-1203] [2 members] — Mesh evidence loaded from geometry bytes or buffers
255
- MeshEvidence.format (property)
256
- MeshEvidence.stats (property)
257
- MeshFileFormat (type) [lines 1205-1206] — Geometry file formats supported by the P0 mesh loader
258
- MeshQualityStats (type) [lines 1208-1261] [8 members] — Triangle quality and scalar mesh metrics used by P0 GeoSpec…
259
- MeshQualityStats.triangleCount (property)
260
- MeshQualityStats.nonFiniteVertices (property)
261
- MeshQualityStats.degenerateTriangles (property)
262
- MeshQualityStats.duplicateFaces (property)
263
- MeshQualityStats.triangles (property)
264
- MeshQualityStats.surfaceArea (property)
265
- MeshQualityStats.signedVolume (property)
266
- MeshQualityStats.centerOfMass (property)
267
- MeshTriangle (type) [lines 1263-1286] [7 members] — One triangle from mesh evidence, in geometry document coordinates
268
- MeshTriangle.primitive (property)
269
- MeshTriangle.triangleIndex (property)
270
- MeshTriangle.a (property)
271
- MeshTriangle.b (property)
272
- MeshTriangle.c (property)
273
- MeshTriangle.center (property)
274
- MeshTriangle.area (property)
275
- StepEvidence (type) [lines 1288-1338] [6 members] — STEP/XDE evidence extracted while loading a STEP subject
276
- StepEvidence.schema (property)
277
- StepEvidence.unit (property)
278
- StepEvidence.productStructure (property)
279
- StepEvidence.readStrategy (property)
280
- StepEvidence.capabilities (property)
281
- StepEvidence.xde (property) — Structured AP242 XDE read result (occurrences, subshape names, datum placements)
282
- Vec3 (type) [lines 1340-1341] — Numeric 3D vector
283
- GeoSpecVec3 (type) [lines 1343-1344] — Numeric 3D vector
284
- CreateModelLoaderOptions (type) [lines 1346-1393] [9 members] — Defaults accepted by {@link import ('./load-model.js').createModelLoader}
213
+ Vec3 (type) [lines 863-864] — Numeric 3D vector
214
+ GeoSpecVec3 (type) [lines 866-867] — Numeric 3D vector
215
+ CreateModelLoaderOptions (type) [lines 869-916] [9 members] — Defaults accepted by {@link import ('./load-model.js').createModelLoader}
285
216
  CreateModelLoaderOptions.engine (property) — Initialized compiled engine supplied by the host, never selected by…
286
217
  CreateModelLoaderOptions.readSource (property) — Rooted host reader for direct filesystem or URL sources
287
218
  CreateModelLoaderOptions.format (property) — Geometry format to export when an individual call does not…
@@ -291,16 +222,16 @@ CreateModelLoaderOptions (type) [lines 1346-1393] [9 members] — Defaults accep
291
222
  CreateModelLoaderOptions.mesh (property) — Whether STEP loading should also produce mesh evidence
292
223
  CreateModelLoaderOptions.meshLinearTolerance (property) — Linear tolerance used while meshing exact BRep evidence
293
224
  CreateModelLoaderOptions.meshAngularToleranceDegrees (property) — Angular tolerance in degrees used while meshing exact BRep evidence
294
- GeoSpecExporterCapabilities (type) [lines 1395-1417] [4 members] — What a {@link GeoSpecModelExporter} declares it can do
225
+ GeoSpecExporterCapabilities (type) [lines 918-940] [4 members] — What a {@link GeoSpecModelExporter} declares it can do
295
226
  GeoSpecExporterCapabilities.formats (property) — The formats `export` produces
296
227
  GeoSpecExporterCapabilities.parameters (property) — Accepts `parameters`
297
228
  GeoSpecExporterCapabilities.region (property) — Crops to `region` (an axis-aligned millimetre box) before export
298
229
  GeoSpecExporterCapabilities.inlineSources (property) — Accepts `inline` sources, which back `loadModel({ code })`
299
- GeoSpecExportFormat (type) [lines 1419-1420] — Formats a {@link GeoSpecModelExporter} may produce from a source-kind file
300
- GeoSpecLoadRegion (type) [lines 1422-1430] [2 members] — Axis-aligned crop box in canonical Z-up millimetres
230
+ GeoSpecExportFormat (type) [lines 942-943] — Formats a {@link GeoSpecModelExporter} may produce from a source-kind file
231
+ GeoSpecLoadRegion (type) [lines 945-953] [2 members] — Axis-aligned crop box in canonical Z-up millimetres
301
232
  GeoSpecLoadRegion.min (property)
302
233
  GeoSpecLoadRegion.max (property)
303
- GeoSpecModelArtifact (type) [lines 1432-1475] [7 members] — The bytes an exporter returns, in the canonical Z-up millimetre…
234
+ GeoSpecModelArtifact (type) [lines 955-998] [7 members] — The bytes an exporter returns, in the canonical Z-up millimetre…
304
235
  GeoSpecModelArtifact.bytes (property)
305
236
  GeoSpecModelArtifact.format (property)
306
237
  GeoSpecModelArtifact.sourceUnit (property) — Unit of raw GLB coordinates
@@ -308,14 +239,14 @@ GeoSpecModelArtifact (type) [lines 1432-1475] [7 members] — The bytes an expor
308
239
  GeoSpecModelArtifact.consumedSources (property) — Every source file the export read, as a path from…
309
240
  GeoSpecModelArtifact.diagnostics (property) — Notices from a successful export, admitted with the subject so…
310
241
  GeoSpecModelArtifact.exportOptions (property) — The export options the exporter applied, recorded in the load…
311
- GeoSpecModelExporter (type) [lines 1477-1511] [6 members] — Turns a source-kind model file into GLB or STEP bytes…
242
+ GeoSpecModelExporter (type) [lines 1000-1034] [6 members] — Turns a source-kind model file into GLB or STEP bytes…
312
243
  GeoSpecModelExporter.id (property)
313
244
  GeoSpecModelExporter.extensions (property)
314
245
  GeoSpecModelExporter.capabilities (property)
315
246
  GeoSpecModelExporter.export (method)
316
247
  GeoSpecModelExporter.revision (method) — The sources an export of `file` would read now, without…
317
248
  GeoSpecModelExporter.close (method) — Releases what the exporter created for one scope
318
- GeoSpecModelExportRequest (type) [lines 1513-1557] [8 members] — One export request
249
+ GeoSpecModelExportRequest (type) [lines 1036-1080] [8 members] — One export request
319
250
  GeoSpecModelExportRequest.file (property) — Entry file, as a path from the project root
320
251
  GeoSpecModelExportRequest.projectPath (property) — Absolute project root the exporter resolves `file` and its imports…
321
252
  GeoSpecModelExportRequest.format (property)
@@ -324,12 +255,12 @@ GeoSpecModelExportRequest (type) [lines 1513-1557] [8 members] — One export re
324
255
  GeoSpecModelExportRequest.region (property) — Millimetre crop box
325
256
  GeoSpecModelExportRequest.inline (property) — Source text keyed by project-relative path
326
257
  GeoSpecModelExportRequest.signal (property)
327
- GeoSpecModelFormat (type) [lines 1559-1560] — Geometry formats accepted by {@link import ('./load-model.js').loadModel}
328
- GeoSpecModelLoader (type) [lines 1562-1563] — Function shape used by GeoSpec runners to provide model loading…
329
- ManagedGeoSpecModelLoader (type) [lines 1565-1571] [1 members] — A configured loader whose admissions can be released with its…
258
+ GeoSpecModelFormat (type) [lines 1082-1083] — Geometry formats accepted by {@link import ('./load-model.js').loadModel}
259
+ GeoSpecModelLoader (type) [lines 1085-1086] — Function shape used by GeoSpec runners to provide model loading…
260
+ ManagedGeoSpecModelLoader (type) [lines 1088-1094] [1 members] — A configured loader whose admissions can be released with its…
330
261
  ManagedGeoSpecModelLoader.dispose (method)
331
- GeoSpecConsumedSources (type) [lines 1573-1577] — The source files one export read, each with its SHA-256…
332
- LoadModelCodeOptions (type) [lines 1579-1651] [12 members] — Inline code-CAD model load options
262
+ GeoSpecConsumedSources (type) [lines 1096-1100] — The source files one export read, each with its SHA-256…
263
+ LoadModelCodeOptions (type) [lines 1102-1174] [12 members] — Inline code-CAD model load options
333
264
  LoadModelCodeOptions.code (property) — Source files keyed by project-relative path
334
265
  LoadModelCodeOptions.file (property) — Entry path to render from {@link code }
335
266
  LoadModelCodeOptions.rootDir (property) — Not accepted
@@ -342,7 +273,7 @@ LoadModelCodeOptions (type) [lines 1579-1651] [12 members] — Inline code-CAD m
342
273
  LoadModelCodeOptions.meshAngularToleranceDegrees (property) — Angular tolerance in degrees used while meshing exact BRep evidence
343
274
  LoadModelCodeOptions.workUnitLimit (property) — Default work-unit budget for every claim on this subject
344
275
  LoadModelCodeOptions.region (property) — Axis-aligned millimetre box the exporter crops the model to before…
345
- LoadModelFileOptions (type) [lines 1653-1727] [11 members] — Filesystem-backed model load options
276
+ LoadModelFileOptions (type) [lines 1176-1250] [11 members] — Filesystem-backed model load options
346
277
  LoadModelFileOptions.file (property) — Model file to render, as a path from the project…
347
278
  LoadModelFileOptions.rootDir (property) — Project-relative folder `file` resolves in, for a suite that loads…
348
279
  LoadModelFileOptions.projectPath (property) — Absolute project root passed to the exporter
@@ -354,7 +285,7 @@ LoadModelFileOptions (type) [lines 1653-1727] [11 members] — Filesystem-backed
354
285
  LoadModelFileOptions.meshAngularToleranceDegrees (property) — Angular tolerance in degrees used while meshing exact BRep evidence
355
286
  LoadModelFileOptions.workUnitLimit (property) — Default work-unit budget for every claim on this subject
356
287
  LoadModelFileOptions.region (property) — Axis-aligned millimetre box the exporter crops the model to before…
357
- LoadModelOptions (type) [lines 1729-1754] [8 members] — Options accepted by {@link import ('./load-model.js').loadModel}
288
+ LoadModelOptions (type) [lines 1252-1277] [8 members] — Options accepted by {@link import ('./load-model.js').loadModel}
358
289
  LoadModelOptions.rootDir (property) — Project-relative folder `file` resolves in, for a suite that loads…
359
290
  LoadModelOptions.format (property) — Geometry format to export
360
291
  LoadModelOptions.parameters (property) — Explicit parameters passed to the exporter
@@ -363,10 +294,7 @@ LoadModelOptions (type) [lines 1729-1754] [8 members] — Options accepted by {@
363
294
  LoadModelOptions.meshLinearTolerance (property) — Linear tolerance used while meshing exact BRep evidence
364
295
  LoadModelOptions.meshAngularToleranceDegrees (property) — Angular tolerance in degrees used while meshing exact BRep evidence
365
296
  LoadModelOptions.workUnitLimit (property) — Default work-unit budget for every claim on this subject
366
-
367
- ## Types (2) — `api-types-2.md`
368
-
369
- LoadModelSourceOptions (type) [lines 5-85] [13 members] — Direct geometry-source model load options
297
+ LoadModelSourceOptions (type) [lines 1279-1359] [13 members] — Direct geometry-source model load options
370
298
  LoadModelSourceOptions.source (property) — Geometry bytes, path, browser file/blob, or in-memory mesh buffer
371
299
  LoadModelSourceOptions.resources (property) — Named external resources consumed alongside the direct geometry bytes
372
300
  LoadModelSourceOptions.rootDir (property) — Project-relative folder a path `source` and each resource path resolve…