@danielsimonjr/sciengjs 0.7.0 → 0.8.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/README.md CHANGED
@@ -10,7 +10,7 @@ sciengjs turns diagram source into images on your own machine. It sends no sourc
10
10
 
11
11
  ## What this release does
12
12
 
13
- Release 0.7.0 holds eight input types. They are **Graphviz DOT**, **Mermaid** (every diagram type) and **LaTeX math** (to SVG, PNG and PDF). They also include **Plotly plots** (to SVG, PNG and HTML) and **HTML** (to PNG, PDF and Markdown). The CAD files **STEP**, **IGES** and **BREP** go to GLB, to a viewer page in HTML, and to PNG. The browser stage draws the Mermaid types other than class, state and sequence, and every PDF.
13
+ Release 0.8.0 holds nine input types. They are **Graphviz DOT**, **Mermaid** (every diagram type) and **LaTeX math** (to SVG, PNG and PDF). They also include **Plotly plots** (to SVG, PNG and HTML) and **HTML** (to PNG, PDF and Markdown). The CAD files **STEP**, **IGES** and **BREP** go to GLB, to a viewer page in HTML, and to PNG. A **CAD document** (a CSG model in JSON) goes to GLB, STL, HTML and PNG. The browser stage draws the Mermaid types other than class, state and sequence, and every PDF.
14
14
 
15
15
  | Input | Output | Engine |
16
16
  |---|---|---|
@@ -21,13 +21,15 @@ Release 0.7.0 holds eight input types. They are **Graphviz DOT**, **Mermaid** (e
21
21
  | Mermaid (all other types) | SVG, PNG, PDF | The pinned Mermaid 11.17.2 build in the browser stage. The engine serves the build from the package. |
22
22
  | DOT, Mermaid | PDF | The SVG, printed by the browser stage |
23
23
  | HTML | PNG, PDF | The browser stage |
24
+ | STEP, IGES, BREP | GLB, HTML, PNG | OpenCascade, compiled to WASM (`occt-import-js`); a Three.js viewer page |
25
+ | CAD document | GLB, STL, HTML, PNG | The engine's own reader; the solid operations through `manifold-3d` (WASM) |
24
26
 
25
27
  - **No network.** The DOT and Mermaid paths make no network request. The browser stage starts Chrome or Chromium from `SCIENG_BROWSER` with a new profile. Its flags stop every connection out of the host. The client refuses every request except the page and the pinned Mermaid build. CI checks the browser process tree on Linux, macOS and Windows.
26
28
  - **Unsafe attributes are removed.** The engine removes each `image` and `stylesheet` attribute before the layout and gives a warning for each one. A DOT file cannot make the engine or a browser fetch a file or a URL. A `URL` attribute stays as a link in the SVG.
27
29
  - **The same text on every machine.** PNG text uses the bundled Liberation Serif font, not the fonts of the host. The engine gives a warning when the drawing asks for bold, italic or a character that the font does not have.
28
30
  - **Limits.** Each render has a time limit, a source size limit and a heap limit. A PNG has a pixel limit of 1024 MB.
29
31
  - **Typed errors.** A failed render rejects with a `RenderError` that has a code. The engine never falls back to another format.
30
- - **Two runtime dependencies**, both pinned: `@viz-js/viz` and `@resvg/resvg-wasm`. No native module and no Python.
32
+ - **Pinned runtime dependencies** only: `@viz-js/viz`, `@resvg/resvg-wasm`, `@mathjax/src`, `parse5`, `occt-import-js` and `manifold-3d`. No native module and no Python.
31
33
 
32
34
  Each later release adds one input type. The [Roadmap](#roadmap) lists them.
33
35
 
@@ -119,6 +121,8 @@ Each render takes an optional configuration as its second argument. An environme
119
121
  | `rasterFont` | `SCIENG_RASTER_FONT` | the bundled Liberation Serif |
120
122
  | `assetsUrl` | `SCIENG_ASSETS_URL` | the `assets/` folder of the package, which holds the font and `index_bg.wasm`. A `file:` URL with a host other than `localhost` rejects with `E_CONFIG`. |
121
123
  | `allowNetwork` | `SCIENG_ALLOW_NETWORK` | `tex-bundles` (the DOT path makes no request) |
124
+ | `maxCadNodes` | `SCIENG_MAX_CAD_NODES` | 10000 |
125
+ | `maxCadFacets` | `SCIENG_MAX_CAD_FACETS` | 2000000 |
122
126
 
123
127
  `SCIENG_CONFIG` names a JSON configuration file. `loadConfig` returns the resolved configuration.
124
128
 
@@ -271,6 +275,36 @@ const { figure } = bode({ num: [10], den: [1, 1, 0] });
271
275
  const { bytes } = await render({ type: "plot", source: JSON.stringify(figure), format: "html" }, {});
272
276
  ```
273
277
 
278
+ ## CAD
279
+
280
+ A CAD document is a CSG model in JSON. The engine reads the document as data. The engine runs no code from the document. The node types are:
281
+
282
+ - the primitives `cube`, `cylinder`, `sphere` and `polyhedron`;
283
+ - the 2D profiles `rectangle`, `circle` and `polygon`, only as the child of `extrude` or `revolve`;
284
+ - the operations `union`, `difference` and `intersection`;
285
+ - the transforms `translate`, `rotate`, `scale` and `mirror`.
286
+
287
+ Each node can have a `name` and a `color`.
288
+
289
+ The builder functions of the `./mesh` subpath write the same document from a TypeScript program:
290
+
291
+ ```js
292
+ import { cad } from "@danielsimonjr/sciengjs/mesh";
293
+ import { render } from "@danielsimonjr/sciengjs";
294
+
295
+ const plate = cad.difference([
296
+ cad.cube([40, 20, 4], { color: [0.7, 0.7, 0.7] }),
297
+ cad.translate([10, 10, -1], cad.cylinder(6, 3, { color: [0.2, 0.4, 1] })),
298
+ ]);
299
+ const source = JSON.stringify(cad.cadDocument(plate, { segments: 48 }));
300
+ const { bytes } = await render({ type: "cad", source, format: "stl" }, {});
301
+ ```
302
+
303
+ - The faces keep the colour of the primitive that made them. The cut face of a `difference` has the colour of the cutter.
304
+ - STL holds no colour and no name. A coloured model gives a warning in STL.
305
+ - A document with more than `maxCadNodes` nodes rejects with `E_LIMIT` before the solid operations start. A model with more than `maxCadFacets` facets also rejects with `E_LIMIT`.
306
+ - A bad value rejects with `E_INPUT`. The message gives the JSON path, for example `model.children[1].radius`.
307
+
274
308
  ## Roadmap
275
309
 
276
310
  The [build plan](docs/superpowers/plans/2026-11-01-scieng-engine-build.md) gives the order of the increments. Each increment adds one input type, its tests and one release. The [design](docs/superpowers/specs/2026-11-01-scieng-engine-design.md) gives the API, the stages, the security controls and the licence of each engine.
@@ -283,7 +317,8 @@ The [build plan](docs/superpowers/plans/2026-11-01-scieng-engine-build.md) gives
283
317
  | TikZ, circuitikz, LaTeX | tex (an own WASM build of `tex.web`) | trial builds pass |
284
318
  | Plots | plot | svg, png and html: released in 0.5.0; pdf is not planned |
285
319
  | SysML v2 | sysml | planned |
286
- | STEP, IGES, BREP | mesh (OpenCascade WASM) | trial build passes |
320
+ | STEP, IGES, BREP | mesh (OpenCascade WASM) | glb, html and png: released in 0.7.0 |
321
+ | CAD documents | mesh (`manifold-3d`) | glb, stl, html and png: built |
287
322
  | HTML to PNG, PDF and Markdown | html, browser | PNG and PDF: released in 0.3.0; Markdown: released in 0.6.0 |
288
323
 
289
324
  ## Use from an agent
@@ -15,6 +15,7 @@ Version: each row gives the version that the engine pins.
15
15
  | tex | The own WASM build of `tex.web` with `etex.ch` (trials T5 and T6) | The "tex" stage of the design gives the licence of each input | not yet a dependency |
16
16
  | tex | TeX packages (bundles) | LPPL or public domain only. Each package keeps its own licence | not yet a dependency |
17
17
  | mesh | `occt-import-js` 0.0.23 (OpenCascade compiled to WASM) | LGPL-2.1 | a dependency |
18
+ | mesh | `manifold-3d` 3.2.1 (Manifold compiled to WASM) | Apache-2.0 | a dependency |
18
19
  | mesh | `manifold-3d` | Apache-2.0 | not yet a dependency |
19
20
  | mesh (viewer page) | `three` 0.187.0 (six pinned module files, copied into the assets folder at build) | MIT | a devDependency. The browser stage serves the copies to pages |
20
21
  | browser | `mermaid` 11.17.2 (the pinned build `dist/mermaid.min.js`, copied into the assets folder at build) | MIT | a devDependency. The browser stage serves the copy to pages |
@@ -84,6 +85,10 @@ The MIT licence applies to `three` 0.187.0. The package is a devDependency. The
84
85
 
85
86
  `occt-import-js` 0.0.23 is licensed under the GNU Lesser General Public License 2.1. The WASM file stays a separate, unmodified file. The mesh stage reads STEP, IGES and BREP files through this package. The licence text is in the installed package at `node_modules/occt-import-js/LICENSE.md`.
86
87
 
88
+ ### Manifold (Apache-2.0)
89
+
90
+ `manifold-3d` 3.2.1 is licensed under the Apache License 2.0. The package ships no NOTICE file. The WASM file stays a separate, unmodified file. The mesh stage runs the solid operations of CAD documents through this package. The licence text is in the installed package at `node_modules/manifold-3d/LICENSE`.
91
+
87
92
  ### resvg (MPL-2.0)
88
93
 
89
94
  The Mozilla Public License 2.0 applies to `@resvg/resvg-wasm`. The WASM file stays a separate, unmodified file. The source code is in the repository https://github.com/yisibl/resvg-js, which builds the npm package. The licence text is in `assets/licenses/MPL-2.0.txt`.
package/dist/config.d.ts CHANGED
@@ -18,6 +18,10 @@ export interface SciengConfig {
18
18
  imageTimeoutMs: number;
19
19
  /** The size limit of the body of one remote image, in bytes. */
20
20
  maxImageBytes: number;
21
+ /** The node limit of one CAD document. */
22
+ maxCadNodes: number;
23
+ /** The facet (triangle) limit of one CAD model. */
24
+ maxCadFacets: number;
21
25
  }
22
26
  /** The inputs of the loader. A caller injects them in a test. */
23
27
  export interface ConfigDeps {
package/dist/config.js CHANGED
@@ -19,6 +19,8 @@ const ENV = {
19
19
  rasterFont: "SCIENG_RASTER_FONT",
20
20
  imageTimeoutMs: "SCIENG_IMAGE_TIMEOUT_MS",
21
21
  maxImageBytes: "SCIENG_MAX_IMAGE_BYTES",
22
+ maxCadNodes: "SCIENG_MAX_CAD_NODES",
23
+ maxCadFacets: "SCIENG_MAX_CAD_FACETS",
22
24
  };
23
25
  const RELEASE_URL_BASE = "https://github.com/danielsimonjr/sciengjs/releases/download";
24
26
  const NETWORK_POLICIES = ["none", "tex-bundles", "tex-bundles,images"];
@@ -61,6 +63,8 @@ function defaults(engineVersion) {
61
63
  assetsUrl: DEFAULT_ASSETS_URL,
62
64
  imageTimeoutMs: 15000,
63
65
  maxImageBytes: 10485760,
66
+ maxCadNodes: 10000,
67
+ maxCadFacets: 2000000,
64
68
  };
65
69
  }
66
70
  function defaultConfigPath(d) {
@@ -85,6 +89,8 @@ function checkValue(key, value, source) {
85
89
  case "maxMemoryMb":
86
90
  case "imageTimeoutMs":
87
91
  case "maxImageBytes":
92
+ case "maxCadNodes":
93
+ case "maxCadFacets":
88
94
  if (typeof value !== "number" || !Number.isInteger(value) || value <= 0) {
89
95
  return fail("must be a positive integer");
90
96
  }
@@ -98,7 +104,7 @@ function checkValue(key, value, source) {
98
104
  return checkAssetsUrl(value, `${source}: ${key}`);
99
105
  }
100
106
  }
101
- const NUMBER_KEYS = ["timeoutMs", "maxSourceBytes", "maxMemoryMb", "imageTimeoutMs", "maxImageBytes"];
107
+ const NUMBER_KEYS = ["timeoutMs", "maxSourceBytes", "maxMemoryMb", "imageTimeoutMs", "maxImageBytes", "maxCadNodes", "maxCadFacets"];
102
108
  /** Converts an environment text to a value of the key. Numbers must be whole and positive. */
103
109
  function fromEnvText(key, text, envName) {
104
110
  if (NUMBER_KEYS.includes(key)) {
@@ -121,6 +127,8 @@ const ENV_KEYS = {
121
127
  rasterFont: ENV.rasterFont,
122
128
  imageTimeoutMs: ENV.imageTimeoutMs,
123
129
  maxImageBytes: ENV.maxImageBytes,
130
+ maxCadNodes: ENV.maxCadNodes,
131
+ maxCadFacets: ENV.maxCadFacets,
124
132
  };
125
133
  /** Reads the config file. A missing file is fine only at the default path. */
126
134
  async function readConfigFile(filePath, explicit, d) {
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
package/dist/core.js CHANGED
@@ -65,6 +65,8 @@ export async function renderWithRegistry(req, options, registry, configDeps) {
65
65
  timeoutMs: cfg.timeoutMs,
66
66
  allowNetwork: cfg.allowNetwork,
67
67
  imageTimeoutMs: cfg.imageTimeoutMs,
68
+ maxCadNodes: cfg.maxCadNodes,
69
+ maxCadFacets: cfg.maxCadFacets,
68
70
  maxImageBytes: cfg.maxImageBytes,
69
71
  },
70
72
  },
package/dist/core.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"core.js","sourceRoot":"","sources":["../src/core.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"core.js","sourceRoot":"","sources":["../src/core.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -2,7 +2,7 @@ import type { SciengConfig } from "./config.ts";
2
2
  import type { Capability, RenderRequest, RenderResult } from "./types.ts";
3
3
  export { RenderError, RENDER_ERROR_CODES, type RenderErrorCode } from "./errors.ts";
4
4
  export { loadConfig, type SciengConfig, type NetworkPolicy } from "./config.ts";
5
- export { INPUT_TYPES, OUTPUT_FORMATS, type InputType, type OutputFormat, type RenderOptions, type RenderRequest, type RenderResult, type RenderAsset, type Capability, } from "./types.ts";
5
+ export { INPUT_TYPES, BINARY_INPUT_TYPES, OUTPUT_FORMATS, type InputType, type OutputFormat, type RenderOptions, type RenderRequest, type RenderResult, type RenderAsset, type Capability, } from "./types.ts";
6
6
  /** Renders one source to the requested format. Rejects with a RenderError. Never falls back to another format. */
7
7
  export declare function render(req: RenderRequest, config?: Partial<SciengConfig>): Promise<RenderResult>;
8
8
  /** Reports each supported pair, its stage and whether that stage is ready on this machine. */
package/dist/index.js CHANGED
@@ -2,7 +2,7 @@ import { capabilitiesWithRegistry, renderWithRegistry } from "./core.js";
2
2
  import { DEFAULT_REGISTRY } from "./registry.js";
3
3
  export { RenderError, RENDER_ERROR_CODES } from "./errors.js";
4
4
  export { loadConfig } from "./config.js";
5
- export { INPUT_TYPES, OUTPUT_FORMATS, } from "./types.js";
5
+ export { INPUT_TYPES, BINARY_INPUT_TYPES, OUTPUT_FORMATS, } from "./types.js";
6
6
  /** Renders one source to the requested format. Rejects with a RenderError. Never falls back to another format. */
7
7
  export function render(req, config) {
8
8
  return renderWithRegistry(req, config ?? {}, DEFAULT_REGISTRY);
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AACzE,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAIjD,OAAO,EAAE,WAAW,EAAE,kBAAkB,EAAwB,MAAM,aAAa,CAAC;AACpF,OAAO,EAAE,UAAU,EAAyC,MAAM,aAAa,CAAC;AAChF,OAAO,EACL,WAAW,EACX,cAAc,GAQf,MAAM,YAAY,CAAC;AAEpB,kHAAkH;AAClH,MAAM,UAAU,MAAM,CAAC,GAAkB,EAAE,MAA8B;IACvE,OAAO,kBAAkB,CAAC,GAAG,EAAE,MAAM,IAAI,EAAE,EAAE,gBAAgB,CAAC,CAAC;AACjE,CAAC;AAED,8FAA8F;AAC9F,MAAM,UAAU,YAAY,CAAC,MAA8B;IACzD,OAAO,wBAAwB,CAAC,MAAM,IAAI,EAAE,EAAE,gBAAgB,CAAC,CAAC;AAClE,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AACzE,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAIjD,OAAO,EAAE,WAAW,EAAE,kBAAkB,EAAwB,MAAM,aAAa,CAAC;AACpF,OAAO,EAAE,UAAU,EAAyC,MAAM,aAAa,CAAC;AAChF,OAAO,EACL,WAAW,EACX,kBAAkB,EAClB,cAAc,GAQf,MAAM,YAAY,CAAC;AAEpB,kHAAkH;AAClH,MAAM,UAAU,MAAM,CAAC,GAAkB,EAAE,MAA8B;IACvE,OAAO,kBAAkB,CAAC,GAAG,EAAE,MAAM,IAAI,EAAE,EAAE,gBAAgB,CAAC,CAAC;AACjE,CAAC;AAED,8FAA8F;AAC9F,MAAM,UAAU,YAAY,CAAC,MAA8B;IACzD,OAAO,wBAAwB,CAAC,MAAM,IAAI,EAAE,EAAE,gBAAgB,CAAC,CAAC;AAClE,CAAC"}
@@ -1,4 +1,5 @@
1
1
  import type { BackendOutput, WorkerJob } from "../worker/protocol.ts";
2
+ import { buildCad } from "./cad-build.ts";
2
3
  import { readCad, type CadFormat, type CadMesh, type LinearUnit } from "./read.ts";
3
4
  /**
4
5
  * The number of copies of the geometry that a glb render holds at its peak: the typed arrays of the
@@ -14,12 +15,19 @@ export declare function estimateGlbBytes(meshes: CadMesh[]): number;
14
15
  export declare function readMeshOptions(format: CadFormat, options: Record<string, unknown>): {
15
16
  linearUnit: LinearUnit;
16
17
  };
17
- /** The reader of a glb render. A test gives a fake reader. */
18
+ /** The readers of a mesh render. A test gives a fake reader. */
18
19
  export interface GlbDeps {
19
20
  readCad: typeof readCad;
21
+ buildCad: typeof buildCad;
20
22
  }
21
23
  /**
22
- * Renders a STEP, IGES or BREP file to glTF binary. The worker calls this function.
24
+ * Reads the meshes of a mesh render. A CAD document is JSON text, checked against the node and facet limits and
25
+ * built through manifold-3d. A CAD render takes no option. STEP, IGES and BREP are bytes, read through occt-import-js.
26
+ * A source with no triangles rejects with E_INPUT.
27
+ */
28
+ export declare function readMeshes(request: WorkerJob["request"], deps?: Partial<GlbDeps>): Promise<CadMesh[]>;
29
+ /**
30
+ * Renders a CAD document, or a STEP, IGES or BREP file, to glTF binary. The worker calls this function.
23
31
  * An output over maxMemoryMb rejects with E_LIMIT before the writer starts.
24
32
  */
25
- export declare function render(request: WorkerJob["request"], deps?: GlbDeps): Promise<BackendOutput>;
33
+ export declare function render(request: WorkerJob["request"], deps?: Partial<GlbDeps>): Promise<BackendOutput>;
@@ -1,5 +1,7 @@
1
1
  import { RenderError } from "../errors.js";
2
2
  import { writeGlb } from "./glb.js";
3
+ import { buildCad } from "./cad-build.js";
4
+ import { parseCadDocument } from "./cad-document.js";
3
5
  import { readCad } from "./read.js";
4
6
  /** The linear units that the STEP and IGES readers accept. Each value has one definition, here. */
5
7
  const LINEAR_UNITS = ["millimeter", "meter"];
@@ -50,24 +52,47 @@ export function readMeshOptions(format, options) {
50
52
  }
51
53
  return { linearUnit: unit };
52
54
  }
55
+ const DEFAULT_DEPS = { readCad, buildCad };
53
56
  /**
54
- * Renders a STEP, IGES or BREP file to glTF binary. The worker calls this function.
55
- * An output over maxMemoryMb rejects with E_LIMIT before the writer starts.
57
+ * Reads the meshes of a mesh render. A CAD document is JSON text, checked against the node and facet limits and
58
+ * built through manifold-3d. A CAD render takes no option. STEP, IGES and BREP are bytes, read through occt-import-js.
59
+ * A source with no triangles rejects with E_INPUT.
56
60
  */
57
- export async function render(request, deps = { readCad }) {
58
- const format = request.type;
59
- if (!FORMATS.includes(format)) {
60
- throw new RenderError("E_INPUT", `${request.type} is not a mesh input`);
61
+ export async function readMeshes(request, deps = {}) {
62
+ const d = { ...DEFAULT_DEPS, ...deps };
63
+ let meshes;
64
+ if (request.type === "cad") {
65
+ if (typeof request.source !== "string")
66
+ throw new RenderError("E_INPUT", "cad takes JSON text, not bytes");
67
+ for (const key of Object.keys(request.options))
68
+ throw new RenderError("E_INPUT", `cad takes no option ${key}`);
69
+ const { maxCadNodes, maxCadFacets } = request.settings;
70
+ const checked = parseCadDocument(request.source, { maxNodes: maxCadNodes, maxFacets: maxCadFacets });
71
+ meshes = [(await d.buildCad(checked.document, maxCadFacets)).mesh];
61
72
  }
62
- if (!(request.source instanceof Uint8Array)) {
63
- throw new RenderError("E_INPUT", `${format} takes bytes, not text`);
73
+ else {
74
+ const format = request.type;
75
+ if (!FORMATS.includes(format)) {
76
+ throw new RenderError("E_INPUT", `${request.type} is not a mesh input`);
77
+ }
78
+ if (!(request.source instanceof Uint8Array)) {
79
+ throw new RenderError("E_INPUT", `${format} takes bytes, not text`);
80
+ }
81
+ const { linearUnit } = readMeshOptions(format, request.options);
82
+ meshes = await d.readCad(format, request.source, linearUnit);
64
83
  }
65
- const { linearUnit } = readMeshOptions(format, request.options);
66
- const meshes = await deps.readCad(format, request.source, linearUnit);
67
84
  const triangles = meshes.reduce((n, m) => n + m.indices.length / 3, 0);
68
85
  if (triangles === 0) {
69
- throw new RenderError("E_INPUT", `the ${format} file holds no triangles`);
86
+ throw new RenderError("E_INPUT", `the ${request.type} source holds no triangles`);
70
87
  }
88
+ return meshes;
89
+ }
90
+ /**
91
+ * Renders a CAD document, or a STEP, IGES or BREP file, to glTF binary. The worker calls this function.
92
+ * An output over maxMemoryMb rejects with E_LIMIT before the writer starts.
93
+ */
94
+ export async function render(request, deps = {}) {
95
+ const meshes = await readMeshes(request, deps);
71
96
  checkGlbLimit(meshes, request.settings.maxMemoryMb);
72
97
  return { bytes: writeGlb(meshes) };
73
98
  }
@@ -1 +1 @@
1
- {"version":3,"file":"backend-glb.js","sourceRoot":"","sources":["../../src/mesh/backend-glb.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"backend-glb.js","sourceRoot":"","sources":["../../src/mesh/backend-glb.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import type { BackendOutput, WorkerJob } from "../worker/protocol.ts";
2
+ /**
3
+ * Renders a CAD document to a binary STL file. The worker calls this function. STL holds no colour and no name,
4
+ * so the render warns when the model has a colour. An output over maxMemoryMb rejects with E_LIMIT before the
5
+ * writer starts.
6
+ */
7
+ export declare function render(request: WorkerJob["request"]): Promise<BackendOutput>;
@@ -0,0 +1,19 @@
1
+ import { RenderError } from "../errors.js";
2
+ import { readMeshes } from "./backend-glb.js";
3
+ import { stlByteLength, writeStl } from "./stl.js";
4
+ /**
5
+ * Renders a CAD document to a binary STL file. The worker calls this function. STL holds no colour and no name,
6
+ * so the render warns when the model has a colour. An output over maxMemoryMb rejects with E_LIMIT before the
7
+ * writer starts.
8
+ */
9
+ export async function render(request) {
10
+ const meshes = await readMeshes(request);
11
+ const needed = stlByteLength(meshes);
12
+ const limitBytes = request.settings.maxMemoryMb * 1048576;
13
+ if (needed > limitBytes) {
14
+ throw new RenderError("E_LIMIT", "the stl output needs " + needed + " bytes; the limit is " + limitBytes + " bytes");
15
+ }
16
+ const colored = meshes.some((m) => m.faces.some((f) => f.color !== null));
17
+ return { bytes: writeStl(meshes), warnings: colored ? ["stl holds no colour; the colours of the model are dropped"] : undefined };
18
+ }
19
+ //# sourceMappingURL=backend-stl.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"backend-stl.js","sourceRoot":"","sources":["../../src/mesh/backend-stl.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAE3C,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAEnD;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,MAAM,CAAC,OAA6B;IACxD,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,OAAO,CAAC,CAAC;IACzC,MAAM,MAAM,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC;IACrC,MAAM,UAAU,GAAG,OAAO,CAAC,QAAQ,CAAC,WAAW,GAAG,OAAO,CAAC;IAC1D,IAAI,MAAM,GAAG,UAAU,EAAE,CAAC;QACxB,MAAM,IAAI,WAAW,CAAC,SAAS,EAAE,uBAAuB,GAAG,MAAM,GAAG,uBAAuB,GAAG,UAAU,GAAG,QAAQ,CAAC,CAAC;IACvH,CAAC;IACD,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC;IAC1E,OAAO,EAAE,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,2DAA2D,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC;AACpI,CAAC"}
@@ -0,0 +1,69 @@
1
+ import type { CadDocument } from "./cad-document.ts";
2
+ import type { CadMesh } from "./read.ts";
3
+ /** The parts of the manifold-3d module that the build uses. */
4
+ interface ManifoldModule {
5
+ Manifold: ManifoldStatic;
6
+ CrossSection: CrossSectionStatic;
7
+ setup(): void;
8
+ }
9
+ interface Solid {
10
+ translate(v: number[]): Solid;
11
+ rotate(v: number[]): Solid;
12
+ scale(v: number[] | number): Solid;
13
+ mirror(v: number[]): Solid;
14
+ asOriginal(): Solid;
15
+ originalID(): number;
16
+ calculateNormals(normalIdx: number, minSharpAngle: number): Solid;
17
+ getMesh(normalIdx?: number): ManifoldMesh;
18
+ numTri(): number;
19
+ volume(): number;
20
+ status(): string;
21
+ delete(): void;
22
+ }
23
+ interface Profile {
24
+ extrude(height: number, divisions: number, twist: number, scaleTop: number[], center: boolean): Solid;
25
+ revolve(segments: number, degrees: number): Solid;
26
+ delete(): void;
27
+ }
28
+ interface ManifoldStatic {
29
+ cube(size: number[] | number, center: boolean): Solid;
30
+ cylinder(height: number, radiusLow: number, radiusHigh: number, segments: number, center: boolean): Solid;
31
+ sphere(radius: number, segments: number): Solid;
32
+ ofMesh(mesh: unknown): Solid;
33
+ union(list: Solid[]): Solid;
34
+ difference(list: Solid[]): Solid;
35
+ intersection(list: Solid[]): Solid;
36
+ }
37
+ interface CrossSectionStatic {
38
+ square(size: number[] | number, center: boolean): Profile;
39
+ circle(radius: number, segments: number): Profile;
40
+ ofPolygons(contours: number[][][]): Profile;
41
+ }
42
+ interface ManifoldMesh {
43
+ numProp: number;
44
+ vertProperties: Float32Array;
45
+ triVerts: Uint32Array;
46
+ runIndex?: Uint32Array;
47
+ runOriginalID?: Uint32Array;
48
+ }
49
+ /** The constructor of a manifold-3d Mesh. */
50
+ type MeshCtor = new (options: {
51
+ numProp: number;
52
+ vertProperties: Float32Array;
53
+ triVerts: Uint32Array;
54
+ }) => unknown;
55
+ /** Loads the WASM module once. A failed load clears the cache so that a later build tries again. */
56
+ export declare function loadManifold(): Promise<ManifoldModule & {
57
+ Mesh: MeshCtor;
58
+ }>;
59
+ /** The result of a build: the mesh for the writers, and the volume of the solid. */
60
+ export interface CadBuildResult {
61
+ mesh: CadMesh;
62
+ volume: number;
63
+ }
64
+ /**
65
+ * Builds the solid of a checked document and returns one mesh with flat normals at sharp edges.
66
+ * The faces carry the colours of the primitives. A result over maxFacets rejects with E_LIMIT.
67
+ */
68
+ export declare function buildCad(document: CadDocument, maxFacets: number): Promise<CadBuildResult>;
69
+ export {};