@danielsimonjr/sciengjs 0.7.1 → 0.9.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 +61 -4
- package/THIRD_PARTY_NOTICES.md +5 -0
- package/dist/config.d.ts +4 -0
- package/dist/config.js +9 -1
- package/dist/config.js.map +1 -1
- package/dist/core.js +2 -0
- package/dist/core.js.map +1 -1
- package/dist/errors.d.ts +2 -0
- package/dist/errors.js +4 -0
- package/dist/errors.js.map +1 -1
- package/dist/graph/backend-pdf.js +3 -2
- package/dist/graph/backend-pdf.js.map +1 -1
- package/dist/graph/backend-png.js +3 -2
- package/dist/graph/backend-png.js.map +1 -1
- package/dist/graph/backend-svg.js +3 -2
- package/dist/graph/backend-svg.js.map +1 -1
- package/dist/graph/dot.d.ts +0 -2
- package/dist/graph/dot.js +0 -4
- package/dist/graph/dot.js.map +1 -1
- package/dist/graph/text.d.ts +12 -0
- package/dist/graph/text.js +21 -0
- package/dist/graph/text.js.map +1 -0
- package/dist/mermaid/backend-pdf.js +2 -1
- package/dist/mermaid/backend-pdf.js.map +1 -1
- package/dist/mermaid/backend-png.js +2 -1
- package/dist/mermaid/backend-png.js.map +1 -1
- package/dist/mermaid/backend-svg.js +2 -1
- package/dist/mermaid/backend-svg.js.map +1 -1
- package/dist/mermaid/class.js +3 -7
- package/dist/mermaid/class.js.map +1 -1
- package/dist/mermaid/common.d.ts +0 -10
- package/dist/mermaid/common.js +2 -16
- package/dist/mermaid/common.js.map +1 -1
- package/dist/mermaid/sequence-layout.js +1 -1
- package/dist/mermaid/sequence-layout.js.map +1 -1
- package/dist/mermaid/sequence.js +2 -1
- package/dist/mermaid/sequence.js.map +1 -1
- package/dist/mermaid/state.js +3 -1
- package/dist/mermaid/state.js.map +1 -1
- package/dist/mesh/backend-glb.d.ts +11 -3
- package/dist/mesh/backend-glb.js +36 -11
- package/dist/mesh/backend-glb.js.map +1 -1
- package/dist/mesh/backend-stl.d.ts +7 -0
- package/dist/mesh/backend-stl.js +19 -0
- package/dist/mesh/backend-stl.js.map +1 -0
- package/dist/mesh/cad-build.d.ts +69 -0
- package/dist/mesh/cad-build.js +195 -0
- package/dist/mesh/cad-build.js.map +1 -0
- package/dist/mesh/cad-builder.d.ts +56 -0
- package/dist/mesh/cad-builder.js +78 -0
- package/dist/mesh/cad-builder.js.map +1 -0
- package/dist/mesh/cad-document.d.ts +140 -0
- package/dist/mesh/cad-document.js +300 -0
- package/dist/mesh/cad-document.js.map +1 -0
- package/dist/mesh/index.d.ts +7 -1
- package/dist/mesh/index.js +5 -1
- package/dist/mesh/index.js.map +1 -1
- package/dist/mesh/stl.d.ts +10 -0
- package/dist/mesh/stl.js +49 -0
- package/dist/mesh/stl.js.map +1 -0
- package/dist/registry.js +7 -0
- package/dist/registry.js.map +1 -1
- package/dist/sysml/backend-pdf.d.ts +3 -0
- package/dist/sysml/backend-pdf.js +10 -0
- package/dist/sysml/backend-pdf.js.map +1 -0
- package/dist/sysml/backend-png.d.ts +6 -0
- package/dist/sysml/backend-png.js +19 -0
- package/dist/sysml/backend-png.js.map +1 -0
- package/dist/sysml/backend-svg.d.ts +3 -0
- package/dist/sysml/backend-svg.js +8 -0
- package/dist/sysml/backend-svg.js.map +1 -0
- package/dist/sysml/index.d.ts +8 -0
- package/dist/sysml/index.js +9 -0
- package/dist/sysml/index.js.map +1 -0
- package/dist/sysml/parse.d.ts +99 -0
- package/dist/sysml/parse.js +480 -0
- package/dist/sysml/parse.js.map +1 -0
- package/dist/sysml/render.d.ts +7 -0
- package/dist/sysml/render.js +11 -0
- package/dist/sysml/render.js.map +1 -0
- package/dist/sysml/tokens.d.ts +14 -0
- package/dist/sysml/tokens.js +93 -0
- package/dist/sysml/tokens.js.map +1 -0
- package/dist/sysml/views.d.ts +16 -0
- package/dist/sysml/views.js +156 -0
- package/dist/sysml/views.js.map +1 -0
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/dist/worker/protocol.d.ts +4 -0
- package/package.json +106 -101
package/dist/mesh/stl.js
ADDED
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
/** The bytes of the STL header. */
|
|
2
|
+
const HEADER_BYTES = 80;
|
|
3
|
+
/** The bytes of one facet: a normal, three vertices (12 floats) and an attribute word. */
|
|
4
|
+
const FACET_BYTES = 50;
|
|
5
|
+
/** The text of the STL header. A binary STL header must not start with "solid". */
|
|
6
|
+
const HEADER_TEXT = "binary STL from sciengjs";
|
|
7
|
+
/** The number of facets of the meshes. */
|
|
8
|
+
export function stlFacetCount(meshes) {
|
|
9
|
+
return meshes.reduce((n, m) => n + m.indices.length / 3, 0);
|
|
10
|
+
}
|
|
11
|
+
/** The size of the binary STL file of the meshes, in bytes. */
|
|
12
|
+
export function stlByteLength(meshes) {
|
|
13
|
+
return HEADER_BYTES + 4 + FACET_BYTES * stlFacetCount(meshes);
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Writes the meshes as one binary STL file, little-endian. Each facet normal comes from the vertices of the facet
|
|
17
|
+
* (right-hand rule). STL holds no colour and no name, so the writer drops them.
|
|
18
|
+
*/
|
|
19
|
+
export function writeStl(meshes) {
|
|
20
|
+
const bytes = new Uint8Array(stlByteLength(meshes));
|
|
21
|
+
const view = new DataView(bytes.buffer);
|
|
22
|
+
bytes.set(new TextEncoder().encode(HEADER_TEXT));
|
|
23
|
+
view.setUint32(HEADER_BYTES, stlFacetCount(meshes), true);
|
|
24
|
+
let at = HEADER_BYTES + 4;
|
|
25
|
+
for (const mesh of meshes) {
|
|
26
|
+
const p = mesh.positions;
|
|
27
|
+
for (let t = 0; t < mesh.indices.length; t += 3) {
|
|
28
|
+
const [a, b, c] = [mesh.indices[t] * 3, mesh.indices[t + 1] * 3, mesh.indices[t + 2] * 3];
|
|
29
|
+
const u = [p[b] - p[a], p[b + 1] - p[a + 1], p[b + 2] - p[a + 2]];
|
|
30
|
+
const v = [p[c] - p[a], p[c + 1] - p[a + 1], p[c + 2] - p[a + 2]];
|
|
31
|
+
const n = [u[1] * v[2] - u[2] * v[1], u[2] * v[0] - u[0] * v[2], u[0] * v[1] - u[1] * v[0]];
|
|
32
|
+
const length = Math.hypot(n[0], n[1], n[2]) || 1;
|
|
33
|
+
for (const value of [n[0] / length, n[1] / length, n[2] / length]) {
|
|
34
|
+
view.setFloat32(at, value, true);
|
|
35
|
+
at += 4;
|
|
36
|
+
}
|
|
37
|
+
for (const vertex of [a, b, c]) {
|
|
38
|
+
for (let k = 0; k < 3; k++) {
|
|
39
|
+
view.setFloat32(at, p[vertex + k], true);
|
|
40
|
+
at += 4;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
view.setUint16(at, 0, true);
|
|
44
|
+
at += 2;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
return bytes;
|
|
48
|
+
}
|
|
49
|
+
//# sourceMappingURL=stl.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stl.js","sourceRoot":"","sources":["../../src/mesh/stl.ts"],"names":[],"mappings":"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"}
|
package/dist/registry.js
CHANGED
|
@@ -31,6 +31,13 @@ export const DEFAULT_REGISTRY = {
|
|
|
31
31
|
"step:png": { backend: "mesh/occt+viewer+browser/chromium", moduleUrl: backendUrl("mesh/backend-png") },
|
|
32
32
|
"iges:png": { backend: "mesh/occt+viewer+browser/chromium", moduleUrl: backendUrl("mesh/backend-png") },
|
|
33
33
|
"brep:png": { backend: "mesh/occt+viewer+browser/chromium", moduleUrl: backendUrl("mesh/backend-png") },
|
|
34
|
+
"cad:glb": { backend: "mesh/manifold+glb", moduleUrl: backendUrl("mesh/backend-glb") },
|
|
35
|
+
"cad:stl": { backend: "mesh/manifold+stl", moduleUrl: backendUrl("mesh/backend-stl") },
|
|
36
|
+
"cad:html": { backend: "mesh/manifold+viewer", moduleUrl: backendUrl("mesh/backend-html") },
|
|
37
|
+
"cad:png": { backend: "mesh/manifold+viewer+browser/chromium", moduleUrl: backendUrl("mesh/backend-png") },
|
|
38
|
+
"sysml:svg": { backend: "sysml/graph", moduleUrl: backendUrl("sysml/backend-svg") },
|
|
39
|
+
"sysml:png": { backend: "sysml/graph+raster/resvg", moduleUrl: backendUrl("sysml/backend-png") },
|
|
40
|
+
"sysml:pdf": { backend: "sysml/graph+browser/chromium", moduleUrl: backendUrl("sysml/backend-pdf") },
|
|
34
41
|
};
|
|
35
42
|
/** Builds the registry key of a pair. */
|
|
36
43
|
export function registryKey(type, format) {
|
package/dist/registry.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAazC,iHAAiH;AACjH,SAAS,UAAU,CAAC,IAAY;IAC9B,MAAM,SAAS,GAAG,OAAO,CAAC,aAAa,CAAC,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IAC1D,OAAO,IAAI,GAAG,CAAC,KAAK,IAAI,GAAG,SAAS,EAAE,EAAE,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;AAChE,CAAC;AAED,kCAAkC;AAClC,MAAM,CAAC,MAAM,gBAAgB,GAAa;IACxC,SAAS,EAAE,EAAE,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,UAAU,CAAC,mBAAmB,CAAC,EAAE;IAC/E,SAAS,EAAE,EAAE,OAAO,EAAE,wBAAwB,EAAE,SAAS,EAAE,UAAU,CAAC,mBAAmB,CAAC,EAAE;IAC5F,UAAU,EAAE,EAAE,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,UAAU,CAAC,kBAAkB,CAAC,EAAE;IAClF,UAAU,EAAE,EAAE,OAAO,EAAE,2BAA2B,EAAE,SAAS,EAAE,UAAU,CAAC,kBAAkB,CAAC,EAAE;IAC/F,UAAU,EAAE,EAAE,OAAO,EAAE,+BAA+B,EAAE,SAAS,EAAE,UAAU,CAAC,kBAAkB,CAAC,EAAE;IACnG,UAAU,EAAE,EAAE,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,CAAC,kBAAkB,CAAC,EAAE;IAC9E,UAAU,EAAE,EAAE,OAAO,EAAE,uBAAuB,EAAE,SAAS,EAAE,UAAU,CAAC,kBAAkB,CAAC,EAAE;IAC3F,WAAW,EAAE,EAAE,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,UAAU,CAAC,mBAAmB,CAAC,EAAE;IACnF,aAAa,EAAE,EAAE,OAAO,EAAE,gBAAgB,EAAE,SAAS,EAAE,UAAU,CAAC,qBAAqB,CAAC,EAAE;IAC1F,aAAa,EAAE,EAAE,OAAO,EAAE,6BAA6B,EAAE,SAAS,EAAE,UAAU,CAAC,qBAAqB,CAAC,EAAE;IACvG,SAAS,EAAE,EAAE,OAAO,EAAE,4BAA4B,EAAE,SAAS,EAAE,UAAU,CAAC,mBAAmB,CAAC,EAAE;IAChG,aAAa,EAAE,EAAE,OAAO,EAAE,0BAA0B,EAAE,SAAS,EAAE,UAAU,CAAC,qBAAqB,CAAC,EAAE;IACpG,UAAU,EAAE,EAAE,OAAO,EAAE,kBAAkB,EAAE,SAAS,EAAE,UAAU,CAAC,qBAAqB,CAAC,EAAE;IACzF,UAAU,EAAE,EAAE,OAAO,EAAE,kBAAkB,EAAE,SAAS,EAAE,UAAU,CAAC,qBAAqB,CAAC,EAAE;IACzF,SAAS,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,UAAU,CAAC,iBAAiB,CAAC,EAAE;IAC3E,UAAU,EAAE,EAAE,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,UAAU,CAAC,kBAAkB,CAAC,EAAE;IACnF,UAAU,EAAE,EAAE,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,UAAU,CAAC,kBAAkB,CAAC,EAAE;IACnF,UAAU,EAAE,EAAE,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,UAAU,CAAC,kBAAkB,CAAC,EAAE;IACnF,WAAW,EAAE,EAAE,OAAO,EAAE,kBAAkB,EAAE,SAAS,EAAE,UAAU,CAAC,mBAAmB,CAAC,EAAE;IACxF,WAAW,EAAE,EAAE,OAAO,EAAE,kBAAkB,EAAE,SAAS,EAAE,UAAU,CAAC,mBAAmB,CAAC,EAAE;IACxF,WAAW,EAAE,EAAE,OAAO,EAAE,kBAAkB,EAAE,SAAS,EAAE,UAAU,CAAC,mBAAmB,CAAC,EAAE;IACxF,UAAU,EAAE,EAAE,OAAO,EAAE,mCAAmC,EAAE,SAAS,EAAE,UAAU,CAAC,kBAAkB,CAAC,EAAE;IACvG,UAAU,EAAE,EAAE,OAAO,EAAE,mCAAmC,EAAE,SAAS,EAAE,UAAU,CAAC,kBAAkB,CAAC,EAAE;IACvG,UAAU,EAAE,EAAE,OAAO,EAAE,mCAAmC,EAAE,SAAS,EAAE,UAAU,CAAC,kBAAkB,CAAC,EAAE;
|
|
1
|
+
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { drawSvgToPdf } from "../mermaid/browser.js";
|
|
2
|
+
import { sourceText } from "../graph/text.js";
|
|
3
|
+
import { renderSysmlSvg } from "./render.js";
|
|
4
|
+
/** Renders one SysML source to pdf: the SVG of the view, then the pdf of that SVG in the browser stage. */
|
|
5
|
+
export async function render(request) {
|
|
6
|
+
const svg = await renderSysmlSvg(sourceText(request.source), request.options);
|
|
7
|
+
const draw = await drawSvgToPdf(svg.svg, request.settings);
|
|
8
|
+
return { bytes: draw.bytes, warnings: [...svg.warnings, ...draw.warnings] };
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=backend-pdf.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"backend-pdf.js","sourceRoot":"","sources":["../../src/sysml/backend-pdf.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9C,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAE7C,2GAA2G;AAC3G,MAAM,CAAC,KAAK,UAAU,MAAM,CAAC,OAA6B;IACxD,MAAM,GAAG,GAAG,MAAM,cAAc,CAAC,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;IAC9E,MAAM,IAAI,GAAG,MAAM,YAAY,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC3D,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,QAAQ,EAAE,CAAC,GAAG,GAAG,CAAC,QAAQ,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;AAC9E,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { BackendOutput, WorkerJob } from "../worker/protocol.ts";
|
|
2
|
+
/**
|
|
3
|
+
* Renders one SysML source to PNG: the SVG of the view, then the raster stage. The option scale multiplies the pixel
|
|
4
|
+
* size. The worker calls this function for the sysml:png pair.
|
|
5
|
+
*/
|
|
6
|
+
export declare function render(request: WorkerJob["request"]): Promise<BackendOutput>;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { MAX_SCALE } from "../browser/input.js";
|
|
2
|
+
import { RenderError } from "../errors.js";
|
|
3
|
+
import { readScale, svgDocumentToPng } from "../graph/backend-png.js";
|
|
4
|
+
import { sourceText } from "../graph/text.js";
|
|
5
|
+
import { renderSysmlSvg } from "./render.js";
|
|
6
|
+
/**
|
|
7
|
+
* Renders one SysML source to PNG: the SVG of the view, then the raster stage. The option scale multiplies the pixel
|
|
8
|
+
* size. The worker calls this function for the sysml:png pair.
|
|
9
|
+
*/
|
|
10
|
+
export async function render(request) {
|
|
11
|
+
const { scale: _scale, ...rest } = request.options;
|
|
12
|
+
const scale = readScale(request.options);
|
|
13
|
+
if (scale > MAX_SCALE)
|
|
14
|
+
throw new RenderError("E_INPUT", `option scale must not be more than ${MAX_SCALE}`);
|
|
15
|
+
const svg = await renderSysmlSvg(sourceText(request.source), rest);
|
|
16
|
+
const png = await svgDocumentToPng(svg.svg, request, scale);
|
|
17
|
+
return { bytes: png.bytes, warnings: [...svg.warnings, ...(png.warnings ?? [])] };
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=backend-png.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"backend-png.js","sourceRoot":"","sources":["../../src/sysml/backend-png.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAChD,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AACtE,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9C,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAE7C;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,MAAM,CAAC,OAA6B;IACxD,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC;IACnD,MAAM,KAAK,GAAG,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IACzC,IAAI,KAAK,GAAG,SAAS;QAAE,MAAM,IAAI,WAAW,CAAC,SAAS,EAAE,sCAAsC,SAAS,EAAE,CAAC,CAAC;IAC3G,MAAM,GAAG,GAAG,MAAM,cAAc,CAAC,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,CAAC;IACnE,MAAM,GAAG,GAAG,MAAM,gBAAgB,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;IAC5D,OAAO,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,QAAQ,EAAE,CAAC,GAAG,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAC,GAAG,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;AACpF,CAAC"}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import type { BackendOutput, WorkerJob } from "../worker/protocol.ts";
|
|
2
|
+
/** Renders one SysML source to SVG through the graph stage. The worker calls this function for the sysml:svg pair. */
|
|
3
|
+
export declare function render(request: WorkerJob["request"]): Promise<BackendOutput>;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { sourceText } from "../graph/text.js";
|
|
2
|
+
import { renderSysmlSvg } from "./render.js";
|
|
3
|
+
/** Renders one SysML source to SVG through the graph stage. The worker calls this function for the sysml:svg pair. */
|
|
4
|
+
export async function render(request) {
|
|
5
|
+
const result = await renderSysmlSvg(sourceText(request.source), request.options);
|
|
6
|
+
return { bytes: new TextEncoder().encode(result.svg), warnings: result.warnings };
|
|
7
|
+
}
|
|
8
|
+
//# sourceMappingURL=backend-svg.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"backend-svg.js","sourceRoot":"","sources":["../../src/sysml/backend-svg.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAE7C,sHAAsH;AACtH,MAAM,CAAC,KAAK,UAAU,MAAM,CAAC,OAA6B;IACxD,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;IACjF,OAAO,EAAE,KAAK,EAAE,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC;AACpF,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The public surface of the SysML stage. The surface holds the tokenizer, the parser of the design subset, the option reader,
|
|
3
|
+
* the views to DOT and the SVG render.
|
|
4
|
+
*/
|
|
5
|
+
export { tokenize, type Token, type TokenKind } from "./tokens.ts";
|
|
6
|
+
export { parseSysml, baseChain, type SysmlModel, type PartDef, type PlainDef, type PartUsage, type PortUsage, type Attribute, type Connection, type End, type Requirement, type RequirementDef, type Satisfy, } from "./parse.ts";
|
|
7
|
+
export { readSysmlOptions, sysmlToDot, type SysmlOptions, type SysmlView } from "./views.ts";
|
|
8
|
+
export { renderSysmlSvg, type SysmlSvg } from "./render.ts";
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The public surface of the SysML stage. The surface holds the tokenizer, the parser of the design subset, the option reader,
|
|
3
|
+
* the views to DOT and the SVG render.
|
|
4
|
+
*/
|
|
5
|
+
export { tokenize } from "./tokens.js";
|
|
6
|
+
export { parseSysml, baseChain, } from "./parse.js";
|
|
7
|
+
export { readSysmlOptions, sysmlToDot } from "./views.js";
|
|
8
|
+
export { renderSysmlSvg } from "./render.js";
|
|
9
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/sysml/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,QAAQ,EAA8B,MAAM,aAAa,CAAC;AACnE,OAAO,EACL,UAAU,EACV,SAAS,GAYV,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,gBAAgB,EAAE,UAAU,EAAqC,MAAM,YAAY,CAAC;AAC7F,OAAO,EAAE,cAAc,EAAiB,MAAM,aAAa,CAAC"}
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
/** An attribute: its name, its type name, its literal value as written, and its line. */
|
|
2
|
+
export interface Attribute {
|
|
3
|
+
name: string;
|
|
4
|
+
type: string | undefined;
|
|
5
|
+
value: string | undefined;
|
|
6
|
+
line: number;
|
|
7
|
+
}
|
|
8
|
+
/** A part usage inside a part def. */
|
|
9
|
+
export interface PartUsage {
|
|
10
|
+
name: string;
|
|
11
|
+
type: string;
|
|
12
|
+
multiplicity: string | undefined;
|
|
13
|
+
line: number;
|
|
14
|
+
}
|
|
15
|
+
/** A port usage inside a part def. */
|
|
16
|
+
export interface PortUsage {
|
|
17
|
+
name: string;
|
|
18
|
+
type: string;
|
|
19
|
+
line: number;
|
|
20
|
+
}
|
|
21
|
+
/** One end of a connection: a port of a part usage, or a port of the enclosing definition when `part` is undefined. */
|
|
22
|
+
export interface End {
|
|
23
|
+
part: string | undefined;
|
|
24
|
+
port: string;
|
|
25
|
+
}
|
|
26
|
+
/** A `connect` statement, or an `interface` usage when `name` and `def` are set. */
|
|
27
|
+
export interface Connection {
|
|
28
|
+
name: string | undefined;
|
|
29
|
+
def: string | undefined;
|
|
30
|
+
from: End;
|
|
31
|
+
to: End;
|
|
32
|
+
line: number;
|
|
33
|
+
}
|
|
34
|
+
/** A part def with its members. */
|
|
35
|
+
export interface PartDef {
|
|
36
|
+
name: string;
|
|
37
|
+
base: string | undefined;
|
|
38
|
+
attributes: Attribute[];
|
|
39
|
+
parts: PartUsage[];
|
|
40
|
+
ports: PortUsage[];
|
|
41
|
+
connections: Connection[];
|
|
42
|
+
line: number;
|
|
43
|
+
}
|
|
44
|
+
/** A port def or an interface def. */
|
|
45
|
+
export interface PlainDef {
|
|
46
|
+
name: string;
|
|
47
|
+
attributes: Attribute[];
|
|
48
|
+
line: number;
|
|
49
|
+
}
|
|
50
|
+
/** A requirement usage. The address is `name` at the top level and `Owner.name` inside a requirement. */
|
|
51
|
+
export interface Requirement {
|
|
52
|
+
name: string;
|
|
53
|
+
address: string;
|
|
54
|
+
def: string | undefined;
|
|
55
|
+
attributes: Attribute[];
|
|
56
|
+
children: Requirement[];
|
|
57
|
+
line: number;
|
|
58
|
+
}
|
|
59
|
+
/** A requirement def. */
|
|
60
|
+
export interface RequirementDef {
|
|
61
|
+
name: string;
|
|
62
|
+
base: string | undefined;
|
|
63
|
+
attributes: Attribute[];
|
|
64
|
+
children: Requirement[];
|
|
65
|
+
line: number;
|
|
66
|
+
}
|
|
67
|
+
/** A `satisfy` relation. The path is a part def name or `Def.part`, after resolution. */
|
|
68
|
+
export interface Satisfy {
|
|
69
|
+
requirement: string;
|
|
70
|
+
path: string;
|
|
71
|
+
line: number;
|
|
72
|
+
}
|
|
73
|
+
/** A parsed SysML source and the warnings of lenient mode. */
|
|
74
|
+
export interface SysmlModel {
|
|
75
|
+
partDefs: PartDef[];
|
|
76
|
+
portDefs: PlainDef[];
|
|
77
|
+
interfaceDefs: PlainDef[];
|
|
78
|
+
requirementDefs: RequirementDef[];
|
|
79
|
+
requirements: Requirement[];
|
|
80
|
+
satisfies: Satisfy[];
|
|
81
|
+
warnings: string[];
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Parses a source of the SysML subset of the design. A construct outside the subset rejects with E_INPUT and the line.
|
|
85
|
+
* With lenient, the parser skips a statement with an unknown keyword and records a warning. The names resolve after
|
|
86
|
+
* the parser reads the whole source.
|
|
87
|
+
*/
|
|
88
|
+
export declare function parseSysml(source: string, lenient: boolean): SysmlModel;
|
|
89
|
+
/** A definition that can name a base with `:>`. */
|
|
90
|
+
export interface Specializable {
|
|
91
|
+
name: string;
|
|
92
|
+
base: string | undefined;
|
|
93
|
+
line: number;
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* The chain of a definition and its bases, the definition first. The chain stops at a base that names no definition
|
|
97
|
+
* of the list. The chain also stops at a base that is already in the chain, so a cycle cannot loop.
|
|
98
|
+
*/
|
|
99
|
+
export declare function baseChain<T extends Specializable>(defs: readonly T[], def: T): T[];
|