@danielsimonjr/sciengjs 0.6.0 → 0.7.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 +1 -1
- package/THIRD_PARTY_NOTICES.md +9 -5
- package/assets/licenses/MIT-three.txt +21 -0
- package/assets/three.BufferGeometryUtils.js +1523 -0
- package/assets/three.GLTFLoader.js +5006 -0
- package/assets/three.OrbitControls.js +1985 -0
- package/assets/three.SkeletonUtils.js +496 -0
- package/assets/three.core.js +61162 -0
- package/assets/three.module.js +19537 -0
- package/dist/browser/pinned.d.ts +23 -0
- package/dist/browser/pinned.js +18 -0
- package/dist/browser/pinned.js.map +1 -1
- package/dist/browser/render.d.ts +6 -0
- package/dist/browser/render.js +10 -1
- package/dist/browser/render.js.map +1 -1
- package/dist/mesh/backend-glb.d.ts +25 -0
- package/dist/mesh/backend-glb.js +74 -0
- package/dist/mesh/backend-glb.js.map +1 -0
- package/dist/mesh/backend-html.d.ts +6 -0
- package/dist/mesh/backend-html.js +12 -0
- package/dist/mesh/backend-html.js.map +1 -0
- package/dist/mesh/backend-png.d.ts +6 -0
- package/dist/mesh/backend-png.js +35 -0
- package/dist/mesh/backend-png.js.map +1 -0
- package/dist/mesh/glb.d.ts +9 -0
- package/dist/mesh/glb.js +163 -0
- package/dist/mesh/glb.js.map +1 -0
- package/dist/mesh/index.d.ts +5 -0
- package/dist/mesh/index.js +5 -0
- package/dist/mesh/index.js.map +1 -0
- package/dist/mesh/pinned-three.d.ts +6 -0
- package/dist/mesh/pinned-three.js +21 -0
- package/dist/mesh/pinned-three.js.map +1 -0
- package/dist/mesh/read.d.ts +27 -0
- package/dist/mesh/read.js +56 -0
- package/dist/mesh/read.js.map +1 -0
- package/dist/mesh/viewer-script.d.ts +6 -0
- package/dist/mesh/viewer-script.js +207 -0
- package/dist/mesh/viewer-script.js.map +1 -0
- package/dist/mesh/viewer.d.ts +14 -0
- package/dist/mesh/viewer.js +39 -0
- package/dist/mesh/viewer.js.map +1 -0
- package/dist/registry.js +9 -0
- package/dist/registry.js.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +8 -2
package/dist/browser/pinned.d.ts
CHANGED
|
@@ -22,3 +22,26 @@ export declare const PLOTLY_SHA256 = "fde93964a7511bfa54c5745c49b5d0e41715cbde0c
|
|
|
22
22
|
export declare const PLOTLY_SRI = "sha256-/ek5ZKdRG/pUxXRcSbXQ5BcVy94Mxevq4/mgLeA5bK4=";
|
|
23
23
|
/** The address that a plot page names for the pinned Plotly build. */
|
|
24
24
|
export declare const PLOTLY_CDN_URL = "https://cdn.jsdelivr.net/npm/plotly.js-dist-min@4.2.0/plotly.min.js";
|
|
25
|
+
/** The pinned Three.js version. It equals the exact devDependency three of the repository. */
|
|
26
|
+
export declare const THREE_VERSION = "0.187.0";
|
|
27
|
+
/** The CDN folder of the pinned Three.js package. Every module URL starts with it. */
|
|
28
|
+
export declare const THREE_CDN_BASE = "https://cdn.jsdelivr.net/npm/three@0.187.0/";
|
|
29
|
+
/** One pinned Three.js module: its URL, its file in the assets folder, its MIME type and its hashes. */
|
|
30
|
+
export interface ThreeModule {
|
|
31
|
+
/** The path inside the package, for example build/three.module.js. */
|
|
32
|
+
path: string;
|
|
33
|
+
url: string;
|
|
34
|
+
file: string;
|
|
35
|
+
mime: string;
|
|
36
|
+
/** The SHA-256 in hex. The client refuses a local copy with other bytes. */
|
|
37
|
+
sha256: string;
|
|
38
|
+
/** The Subresource Integrity value. The browser refuses other bytes. */
|
|
39
|
+
sri: string;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* The modules that the viewer page loads. The GLTFLoader imports the two utility modules by relative path, and
|
|
43
|
+
* three.module.js imports three.core.js by relative path, so six files are pinned.
|
|
44
|
+
*/
|
|
45
|
+
export declare const THREE_MODULES: readonly ThreeModule[];
|
|
46
|
+
/** The URL of the three module. The import map of the viewer page maps the bare name three to it. */
|
|
47
|
+
export declare const THREE_MAIN_URL: string;
|
package/dist/browser/pinned.js
CHANGED
|
@@ -18,4 +18,22 @@ export const PLOTLY_SHA256 = "fde93964a7511bfa54c5745c49b5d0e41715cbde0cc5ebeae3
|
|
|
18
18
|
export const PLOTLY_SRI = "sha256-/ek5ZKdRG/pUxXRcSbXQ5BcVy94Mxevq4/mgLeA5bK4=";
|
|
19
19
|
/** The address that a plot page names for the pinned Plotly build. */
|
|
20
20
|
export const PLOTLY_CDN_URL = `https://cdn.jsdelivr.net/npm/plotly.js-dist-min@${PLOTLY_VERSION}/plotly.min.js`;
|
|
21
|
+
/** The pinned Three.js version. It equals the exact devDependency three of the repository. */
|
|
22
|
+
export const THREE_VERSION = "0.187.0";
|
|
23
|
+
/** The CDN folder of the pinned Three.js package. Every module URL starts with it. */
|
|
24
|
+
export const THREE_CDN_BASE = `https://cdn.jsdelivr.net/npm/three@${THREE_VERSION}/`;
|
|
25
|
+
/**
|
|
26
|
+
* The modules that the viewer page loads. The GLTFLoader imports the two utility modules by relative path, and
|
|
27
|
+
* three.module.js imports three.core.js by relative path, so six files are pinned.
|
|
28
|
+
*/
|
|
29
|
+
export const THREE_MODULES = [
|
|
30
|
+
{ path: "build/three.module.js", url: `${THREE_CDN_BASE}build/three.module.js`, file: "three.module.js", mime: "text/javascript", sha256: "104f56145899722094556490d787aae0617cc2fc3382f31df02d724ea1aee341", sri: "sha256-EE9WFFiZciCUVWSQ14eq4GF8wvwzgvMd8C1yTqGu40E=" },
|
|
31
|
+
{ path: "build/three.core.js", url: `${THREE_CDN_BASE}build/three.core.js`, file: "three.core.js", mime: "text/javascript", sha256: "613e370f76638fdef83926642bf256dc9615684922de1ce1f63a8583e5d78578", sri: "sha256-YT43D3Zjj974OSZkK/JW3JYVaEki3hzh9jqFg+XXhXg=" },
|
|
32
|
+
{ path: "examples/jsm/controls/OrbitControls.js", url: `${THREE_CDN_BASE}examples/jsm/controls/OrbitControls.js`, file: "three.OrbitControls.js", mime: "text/javascript", sha256: "e7fca2fe9e7670a828af9b28084669a5909445b7f36f1f26cee9bf8f2961c32c", sri: "sha256-5/yi/p52cKgor5soCEZppZCURbfzbx8mzum/jylhwyw=" },
|
|
33
|
+
{ path: "examples/jsm/loaders/GLTFLoader.js", url: `${THREE_CDN_BASE}examples/jsm/loaders/GLTFLoader.js`, file: "three.GLTFLoader.js", mime: "text/javascript", sha256: "532ac726e120039acbcd6cf54328c57acbf7b438176afaa6951257126d11bff1", sri: "sha256-UyrHJuEgA5rLzWz1QyjFesv3tDgXavqmlRJXEm0Rv/E=" },
|
|
34
|
+
{ path: "examples/jsm/utils/BufferGeometryUtils.js", url: `${THREE_CDN_BASE}examples/jsm/utils/BufferGeometryUtils.js`, file: "three.BufferGeometryUtils.js", mime: "text/javascript", sha256: "7bda2a8ba836b2bcf67cb938d4b9e1bb5d1b1bc616817103ed858c0b58296ce7", sri: "sha256-e9oqi6g2srz2fLk41Lnhu10bG8YWgXED7YWMC1gpbOc=" },
|
|
35
|
+
{ path: "examples/jsm/utils/SkeletonUtils.js", url: `${THREE_CDN_BASE}examples/jsm/utils/SkeletonUtils.js`, file: "three.SkeletonUtils.js", mime: "text/javascript", sha256: "b1632a703206c3d830de9fcbe515696770d04b71a15ee6b50afa6d2c3298c86f", sri: "sha256-sWMqcDIGw9gw3p/L5RVpZ3DQS3GhXua1CvptLDKYyG8=" },
|
|
36
|
+
];
|
|
37
|
+
/** The URL of the three module. The import map of the viewer page maps the bare name three to it. */
|
|
38
|
+
export const THREE_MAIN_URL = THREE_MODULES[0].url;
|
|
21
39
|
//# sourceMappingURL=pinned.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pinned.js","sourceRoot":"","sources":["../../src/browser/pinned.ts"],"names":[],"mappings":"AAAA,uFAAuF;AACvF,MAAM,CAAC,MAAM,eAAe,GAAG,SAAS,CAAC;AACzC,iGAAiG;AACjG,MAAM,CAAC,MAAM,cAAc,GAAG,kEAAkE,CAAC;AACjG,gGAAgG;AAChG,MAAM,CAAC,MAAM,YAAY,GAAG,gBAAgB,CAAC;AAC7C,gHAAgH;AAChH,MAAM,CAAC,MAAM,eAAe,GAAG,wCAAwC,eAAe,sBAAsB,CAAC;AAS7G,+FAA+F;AAC/F,MAAM,CAAC,MAAM,aAAa,GAA2B;IACnD,EAAE,GAAG,EAAE,eAAe,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,wBAAwB,EAAE;CAC7E,CAAC;AAEF,yGAAyG;AACzG,MAAM,CAAC,MAAM,cAAc,GAAG,OAAO,CAAC;AACtC,sDAAsD;AACtD,MAAM,CAAC,MAAM,aAAa,GAAG,kEAAkE,CAAC;AAChG,mGAAmG;AACnG,MAAM,CAAC,MAAM,UAAU,GAAG,qDAAqD,CAAC;AAChF,sEAAsE;AACtE,MAAM,CAAC,MAAM,cAAc,GAAG,mDAAmD,cAAc,gBAAgB,CAAC"}
|
|
1
|
+
{"version":3,"file":"pinned.js","sourceRoot":"","sources":["../../src/browser/pinned.ts"],"names":[],"mappings":"AAAA,uFAAuF;AACvF,MAAM,CAAC,MAAM,eAAe,GAAG,SAAS,CAAC;AACzC,iGAAiG;AACjG,MAAM,CAAC,MAAM,cAAc,GAAG,kEAAkE,CAAC;AACjG,gGAAgG;AAChG,MAAM,CAAC,MAAM,YAAY,GAAG,gBAAgB,CAAC;AAC7C,gHAAgH;AAChH,MAAM,CAAC,MAAM,eAAe,GAAG,wCAAwC,eAAe,sBAAsB,CAAC;AAS7G,+FAA+F;AAC/F,MAAM,CAAC,MAAM,aAAa,GAA2B;IACnD,EAAE,GAAG,EAAE,eAAe,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,wBAAwB,EAAE;CAC7E,CAAC;AAEF,yGAAyG;AACzG,MAAM,CAAC,MAAM,cAAc,GAAG,OAAO,CAAC;AACtC,sDAAsD;AACtD,MAAM,CAAC,MAAM,aAAa,GAAG,kEAAkE,CAAC;AAChG,mGAAmG;AACnG,MAAM,CAAC,MAAM,UAAU,GAAG,qDAAqD,CAAC;AAChF,sEAAsE;AACtE,MAAM,CAAC,MAAM,cAAc,GAAG,mDAAmD,cAAc,gBAAgB,CAAC;AAEhH,8FAA8F;AAC9F,MAAM,CAAC,MAAM,aAAa,GAAG,SAAS,CAAC;AACvC,sFAAsF;AACtF,MAAM,CAAC,MAAM,cAAc,GAAG,sCAAsC,aAAa,GAAG,CAAC;AAerF;;;GAGG;AACH,MAAM,CAAC,MAAM,aAAa,GAA2B;IACnD,EAAE,IAAI,EAAE,uBAAuB,EAAE,GAAG,EAAE,GAAG,cAAc,uBAAuB,EAAE,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE,iBAAiB,EAAE,MAAM,EAAE,kEAAkE,EAAE,GAAG,EAAE,qDAAqD,EAAE;IAC1Q,EAAE,IAAI,EAAE,qBAAqB,EAAE,GAAG,EAAE,GAAG,cAAc,qBAAqB,EAAE,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE,iBAAiB,EAAE,MAAM,EAAE,kEAAkE,EAAE,GAAG,EAAE,qDAAqD,EAAE;IACpQ,EAAE,IAAI,EAAE,wCAAwC,EAAE,GAAG,EAAE,GAAG,cAAc,wCAAwC,EAAE,IAAI,EAAE,wBAAwB,EAAE,IAAI,EAAE,iBAAiB,EAAE,MAAM,EAAE,kEAAkE,EAAE,GAAG,EAAE,qDAAqD,EAAE;IACnT,EAAE,IAAI,EAAE,oCAAoC,EAAE,GAAG,EAAE,GAAG,cAAc,oCAAoC,EAAE,IAAI,EAAE,qBAAqB,EAAE,IAAI,EAAE,iBAAiB,EAAE,MAAM,EAAE,kEAAkE,EAAE,GAAG,EAAE,qDAAqD,EAAE;IACxS,EAAE,IAAI,EAAE,2CAA2C,EAAE,GAAG,EAAE,GAAG,cAAc,2CAA2C,EAAE,IAAI,EAAE,8BAA8B,EAAE,IAAI,EAAE,iBAAiB,EAAE,MAAM,EAAE,kEAAkE,EAAE,GAAG,EAAE,qDAAqD,EAAE;IAC/T,EAAE,IAAI,EAAE,qCAAqC,EAAE,GAAG,EAAE,GAAG,cAAc,qCAAqC,EAAE,IAAI,EAAE,wBAAwB,EAAE,IAAI,EAAE,iBAAiB,EAAE,MAAM,EAAE,kEAAkE,EAAE,GAAG,EAAE,qDAAqD,EAAE;CAC9S,CAAC;AAEF,qGAAqG;AACrG,MAAM,CAAC,MAAM,cAAc,GAAG,aAAa,CAAC,CAAC,CAAE,CAAC,GAAG,CAAC"}
|
package/dist/browser/render.d.ts
CHANGED
|
@@ -23,6 +23,12 @@ interface HtmlPageBase {
|
|
|
23
23
|
* that reports ok false rejects with E_INPUT. A png or pdf then draws the diagram in the element sciengjs-diagram.
|
|
24
24
|
*/
|
|
25
25
|
awaitDone?: boolean;
|
|
26
|
+
/**
|
|
27
|
+
* The page sets window.__sciengDone, as with awaitDone, but the capture is a plain screenshot of the viewport and
|
|
28
|
+
* the report holds no svg. A viewer page of WebGL uses it. A page that reports ok false rejects with E_INTERNAL
|
|
29
|
+
* when internal is true, else with E_INPUT.
|
|
30
|
+
*/
|
|
31
|
+
awaitReady?: boolean;
|
|
26
32
|
}
|
|
27
33
|
/** One page to draw. A png has a size and a device scale. A pdf has neither. An svg needs awaitDone. */
|
|
28
34
|
export type HtmlPageRequest = (HtmlPageBase & {
|
package/dist/browser/render.js
CHANGED
|
@@ -157,7 +157,11 @@ class Interceptor {
|
|
|
157
157
|
.send("Fetch.fulfillRequest", {
|
|
158
158
|
requestId: paused.requestId,
|
|
159
159
|
responseCode: 200,
|
|
160
|
-
|
|
160
|
+
// A module script and a script with integrity are cross-origin requests, so the reply allows any origin.
|
|
161
|
+
responseHeaders: [
|
|
162
|
+
{ name: "Content-Type", value: asset.mime },
|
|
163
|
+
{ name: "Access-Control-Allow-Origin", value: "*" },
|
|
164
|
+
],
|
|
161
165
|
body: Buffer.from(asset.bytes).toString("base64"),
|
|
162
166
|
}, sessionId)
|
|
163
167
|
.catch(this.record);
|
|
@@ -222,6 +226,11 @@ async function capture(cdp, req) {
|
|
|
222
226
|
});
|
|
223
227
|
}
|
|
224
228
|
let bytes;
|
|
229
|
+
if (req.awaitReady === true) {
|
|
230
|
+
const done = await awaitDoneReport(cdp, s);
|
|
231
|
+
if (!done.ok)
|
|
232
|
+
throw new RenderError(done.internal === true ? "E_INTERNAL" : "E_INPUT", done.message);
|
|
233
|
+
}
|
|
225
234
|
if (req.awaitDone === true) {
|
|
226
235
|
const done = await awaitDoneReport(cdp, s);
|
|
227
236
|
// A page that cannot run the pinned build is a fault of the engine, not of the source.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"render.js","sourceRoot":"","sources":["../../src/browser/render.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"render.js","sourceRoot":"","sources":["../../src/browser/render.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import type { BackendOutput, WorkerJob } from "../worker/protocol.ts";
|
|
2
|
+
import { readCad, type CadFormat, type CadMesh, type LinearUnit } from "./read.ts";
|
|
3
|
+
/**
|
|
4
|
+
* The number of copies of the geometry that a glb render holds at its peak: the typed arrays of the
|
|
5
|
+
* reader result, the arrays of the writer, the BIN chunk, and the output file.
|
|
6
|
+
*/
|
|
7
|
+
export declare const GLB_COPIES = 4;
|
|
8
|
+
/** Estimates the peak memory of the glb output of the meshes, in bytes, with all copies. */
|
|
9
|
+
export declare function estimateGlbBytes(meshes: CadMesh[]): number;
|
|
10
|
+
/**
|
|
11
|
+
* Checks the options of a glb render. STEP and IGES take linearUnit. BREP takes no option.
|
|
12
|
+
* An unknown key or an unknown unit rejects with E_INPUT.
|
|
13
|
+
*/
|
|
14
|
+
export declare function readMeshOptions(format: CadFormat, options: Record<string, unknown>): {
|
|
15
|
+
linearUnit: LinearUnit;
|
|
16
|
+
};
|
|
17
|
+
/** The reader of a glb render. A test gives a fake reader. */
|
|
18
|
+
export interface GlbDeps {
|
|
19
|
+
readCad: typeof readCad;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Renders a STEP, IGES or BREP file to glTF binary. The worker calls this function.
|
|
23
|
+
* An output over maxMemoryMb rejects with E_LIMIT before the writer starts.
|
|
24
|
+
*/
|
|
25
|
+
export declare function render(request: WorkerJob["request"], deps?: GlbDeps): Promise<BackendOutput>;
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import { RenderError } from "../errors.js";
|
|
2
|
+
import { writeGlb } from "./glb.js";
|
|
3
|
+
import { readCad } from "./read.js";
|
|
4
|
+
/** The linear units that the STEP and IGES readers accept. Each value has one definition, here. */
|
|
5
|
+
const LINEAR_UNITS = ["millimeter", "meter"];
|
|
6
|
+
/** The default linear unit of the STEP and IGES readers. */
|
|
7
|
+
const DEFAULT_LINEAR_UNIT = "millimeter";
|
|
8
|
+
/**
|
|
9
|
+
* The number of copies of the geometry that a glb render holds at its peak: the typed arrays of the
|
|
10
|
+
* reader result, the arrays of the writer, the BIN chunk, and the output file.
|
|
11
|
+
*/
|
|
12
|
+
export const GLB_COPIES = 4;
|
|
13
|
+
/** The largest glb file: the header holds the file length as a 32-bit unsigned integer. */
|
|
14
|
+
const MAX_GLB_BYTES = 0xffffffff;
|
|
15
|
+
/** The bytes of one copy of the geometry: positions, normals and indices, four bytes per value. */
|
|
16
|
+
function geometryBytes(meshes) {
|
|
17
|
+
return meshes.reduce((n, m) => n + 4 * (m.positions.length + (m.normals?.length ?? 0) + m.indices.length), 0);
|
|
18
|
+
}
|
|
19
|
+
/** Estimates the peak memory of the glb output of the meshes, in bytes, with all copies. */
|
|
20
|
+
export function estimateGlbBytes(meshes) {
|
|
21
|
+
return geometryBytes(meshes) * GLB_COPIES;
|
|
22
|
+
}
|
|
23
|
+
/** Rejects with E_LIMIT when the glb output of the meshes needs more than maxMemoryMb, or more than a glb file can hold. */
|
|
24
|
+
function checkGlbLimit(meshes, maxMemoryMb) {
|
|
25
|
+
const limitBytes = maxMemoryMb * 1048576;
|
|
26
|
+
const needed = estimateGlbBytes(meshes);
|
|
27
|
+
if (needed > limitBytes) {
|
|
28
|
+
throw new RenderError("E_LIMIT", "the glb output needs " + needed + " bytes; the limit is " + limitBytes + " bytes");
|
|
29
|
+
}
|
|
30
|
+
const single = geometryBytes(meshes);
|
|
31
|
+
if (single > MAX_GLB_BYTES) {
|
|
32
|
+
throw new RenderError("E_LIMIT", "the glb geometry has " + single + " bytes; a glb file holds at most " + MAX_GLB_BYTES + " bytes");
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
/** The input formats of this backend. */
|
|
36
|
+
const FORMATS = ["step", "iges", "brep"];
|
|
37
|
+
/**
|
|
38
|
+
* Checks the options of a glb render. STEP and IGES take linearUnit. BREP takes no option.
|
|
39
|
+
* An unknown key or an unknown unit rejects with E_INPUT.
|
|
40
|
+
*/
|
|
41
|
+
export function readMeshOptions(format, options) {
|
|
42
|
+
for (const key of Object.keys(options)) {
|
|
43
|
+
if (format === "brep" || key !== "linearUnit") {
|
|
44
|
+
throw new RenderError("E_INPUT", `${format} to glb takes no option ${key}`);
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
const unit = options.linearUnit ?? DEFAULT_LINEAR_UNIT;
|
|
48
|
+
if (!LINEAR_UNITS.includes(unit)) {
|
|
49
|
+
throw new RenderError("E_INPUT", "option linearUnit must be millimeter or meter");
|
|
50
|
+
}
|
|
51
|
+
return { linearUnit: unit };
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
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.
|
|
56
|
+
*/
|
|
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
|
+
}
|
|
62
|
+
if (!(request.source instanceof Uint8Array)) {
|
|
63
|
+
throw new RenderError("E_INPUT", `${format} takes bytes, not text`);
|
|
64
|
+
}
|
|
65
|
+
const { linearUnit } = readMeshOptions(format, request.options);
|
|
66
|
+
const meshes = await deps.readCad(format, request.source, linearUnit);
|
|
67
|
+
const triangles = meshes.reduce((n, m) => n + m.indices.length / 3, 0);
|
|
68
|
+
if (triangles === 0) {
|
|
69
|
+
throw new RenderError("E_INPUT", `the ${format} file holds no triangles`);
|
|
70
|
+
}
|
|
71
|
+
checkGlbLimit(meshes, request.settings.maxMemoryMb);
|
|
72
|
+
return { bytes: writeGlb(meshes) };
|
|
73
|
+
}
|
|
74
|
+
//# sourceMappingURL=backend-glb.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"backend-glb.js","sourceRoot":"","sources":["../../src/mesh/backend-glb.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { BackendOutput, WorkerJob } from "../worker/protocol.ts";
|
|
2
|
+
/**
|
|
3
|
+
* Renders a STEP, IGES or BREP file to html: one page with a Three.js viewer that embeds the glb. The page names the
|
|
4
|
+
* pinned Three.js URLs. The options are the options of the glb render. The worker calls this function.
|
|
5
|
+
*/
|
|
6
|
+
export declare function render(request: WorkerJob["request"]): Promise<BackendOutput>;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { render as renderGlb } from "./backend-glb.js";
|
|
2
|
+
import { viewerPageHtml } from "./viewer.js";
|
|
3
|
+
/**
|
|
4
|
+
* Renders a STEP, IGES or BREP file to html: one page with a Three.js viewer that embeds the glb. The page names the
|
|
5
|
+
* pinned Three.js URLs. The options are the options of the glb render. The worker calls this function.
|
|
6
|
+
*/
|
|
7
|
+
export async function render(request) {
|
|
8
|
+
const glb = await renderGlb(request);
|
|
9
|
+
const html = viewerPageHtml(glb.bytes, { title: `${request.type} model`, controls: true });
|
|
10
|
+
return { bytes: new TextEncoder().encode(html), warnings: glb.warnings };
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=backend-html.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"backend-html.js","sourceRoot":"","sources":["../../src/mesh/backend-html.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,IAAI,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAE7C;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,MAAM,CAAC,OAA6B;IACxD,MAAM,GAAG,GAAG,MAAM,SAAS,CAAC,OAAO,CAAC,CAAC;IACrC,MAAM,IAAI,GAAG,cAAc,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,GAAG,OAAO,CAAC,IAAI,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;IAC3F,OAAO,EAAE,KAAK,EAAE,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,GAAG,CAAC,QAAQ,EAAE,CAAC;AAC3E,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { BackendOutput, WorkerJob } from "../worker/protocol.ts";
|
|
2
|
+
/**
|
|
3
|
+
* Renders a STEP, IGES or BREP file to png: the viewer page in the headless browser. The client fulfils the pinned
|
|
4
|
+
* Three.js URLs from the assets folder, so no request leaves the process. The worker calls this function.
|
|
5
|
+
*/
|
|
6
|
+
export declare function render(request: WorkerJob["request"]): Promise<BackendOutput>;
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { blockedWarnings, browserPathOf, parsePngOptions } from "../browser/input.js";
|
|
2
|
+
import { renderHtmlPage } from "../browser/render.js";
|
|
3
|
+
import { render as renderGlb } from "./backend-glb.js";
|
|
4
|
+
import { pinnedThree } from "./pinned-three.js";
|
|
5
|
+
import { viewerPageHtml } from "./viewer.js";
|
|
6
|
+
/** The options that the png render reads itself. The glb render reads the others. */
|
|
7
|
+
const PNG_KEYS = ["width", "height", "scale"];
|
|
8
|
+
/**
|
|
9
|
+
* Renders a STEP, IGES or BREP file to png: the viewer page in the headless browser. The client fulfils the pinned
|
|
10
|
+
* Three.js URLs from the assets folder, so no request leaves the process. The worker calls this function.
|
|
11
|
+
*/
|
|
12
|
+
export async function render(request) {
|
|
13
|
+
const pngOptions = {};
|
|
14
|
+
const meshOptions = {};
|
|
15
|
+
for (const [key, value] of Object.entries(request.options)) {
|
|
16
|
+
(PNG_KEYS.includes(key) ? pngOptions : meshOptions)[key] = value;
|
|
17
|
+
}
|
|
18
|
+
const size = parsePngOptions(pngOptions);
|
|
19
|
+
const browser = browserPathOf(request.settings.browser);
|
|
20
|
+
const glb = await renderGlb({ ...request, options: meshOptions });
|
|
21
|
+
const pinned = pinnedThree(request.settings.assetsUrl);
|
|
22
|
+
const out = await renderHtmlPage({
|
|
23
|
+
html: viewerPageHtml(glb.bytes, { title: `${request.type} model`, controls: false }),
|
|
24
|
+
format: "png",
|
|
25
|
+
width: size.width,
|
|
26
|
+
height: size.height,
|
|
27
|
+
scale: size.scale,
|
|
28
|
+
browser,
|
|
29
|
+
timeoutMs: request.settings.timeoutMs,
|
|
30
|
+
pinned,
|
|
31
|
+
awaitReady: true,
|
|
32
|
+
});
|
|
33
|
+
return { bytes: out.bytes, warnings: [...(glb.warnings ?? []), ...blockedWarnings(out.blocked)] };
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=backend-png.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"backend-png.js","sourceRoot":"","sources":["../../src/mesh/backend-png.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtF,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAEtD,OAAO,EAAE,MAAM,IAAI,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAE7C,qFAAqF;AACrF,MAAM,QAAQ,GAAG,CAAC,OAAO,EAAE,QAAQ,EAAE,OAAO,CAAU,CAAC;AAEvD;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,MAAM,CAAC,OAA6B;IACxD,MAAM,UAAU,GAA4B,EAAE,CAAC;IAC/C,MAAM,WAAW,GAA4B,EAAE,CAAC;IAChD,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;QAC3D,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAgC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;IAChG,CAAC;IACD,MAAM,IAAI,GAAG,eAAe,CAAC,UAAU,CAAC,CAAC;IACzC,MAAM,OAAO,GAAG,aAAa,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;IACxD,MAAM,GAAG,GAAG,MAAM,SAAS,CAAC,EAAE,GAAG,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC,CAAC;IAClE,MAAM,MAAM,GAAG,WAAW,CAAC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;IACvD,MAAM,GAAG,GAAG,MAAM,cAAc,CAAC;QAC/B,IAAI,EAAE,cAAc,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,GAAG,OAAO,CAAC,IAAI,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;QACpF,MAAM,EAAE,KAAK;QACb,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,OAAO;QACP,SAAS,EAAE,OAAO,CAAC,QAAQ,CAAC,SAAS;QACrC,MAAM;QACN,UAAU,EAAE,IAAI;KACjB,CAAC,CAAC;IACH,OAAO,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,QAAQ,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,IAAI,EAAE,CAAC,EAAE,GAAG,eAAe,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC;AACpG,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { CadMesh } from "./read.ts";
|
|
2
|
+
/**
|
|
3
|
+
* Writes meshes as one glTF 2.0 binary file. Each mesh is one glTF mesh. Its triangles are grouped
|
|
4
|
+
* by face colour, and each colour is one primitive with one material. Faces without a colour use a
|
|
5
|
+
* default grey material. The positions and the normals are shared by the primitives of one mesh.
|
|
6
|
+
* A mesh without triangles is left out. Input with no triangle at all rejects with E_INPUT, because a
|
|
7
|
+
* glTF buffer cannot have zero bytes.
|
|
8
|
+
*/
|
|
9
|
+
export declare function writeGlb(meshes: CadMesh[]): Uint8Array;
|
package/dist/mesh/glb.js
ADDED
|
@@ -0,0 +1,163 @@
|
|
|
1
|
+
import { RenderError } from "../errors.js";
|
|
2
|
+
const MAGIC = 0x46546c67; // "glTF"
|
|
3
|
+
const VERSION = 2;
|
|
4
|
+
const CHUNK_JSON = 0x4e4f534a; // "JSON"
|
|
5
|
+
const CHUNK_BIN = 0x004e4942; // "BIN" and a zero byte
|
|
6
|
+
const COMPONENT_UINT32 = 5125;
|
|
7
|
+
const COMPONENT_FLOAT32 = 5126;
|
|
8
|
+
const MODE_TRIANGLES = 4;
|
|
9
|
+
const DEFAULT_COLOUR = [0.8, 0.8, 0.8];
|
|
10
|
+
/** Maps each triangle of a mesh to the key of its material: a colour, or "default". */
|
|
11
|
+
function triangleGroups(mesh) {
|
|
12
|
+
const triangles = mesh.indices.length / 3;
|
|
13
|
+
const keyOf = new Array(triangles).fill("default");
|
|
14
|
+
for (const face of mesh.faces) {
|
|
15
|
+
if (face.color === null)
|
|
16
|
+
continue;
|
|
17
|
+
const key = face.color.join(",");
|
|
18
|
+
for (let t = face.first; t <= face.last && t < triangles; t++)
|
|
19
|
+
keyOf[t] = key;
|
|
20
|
+
}
|
|
21
|
+
const groups = new Map();
|
|
22
|
+
for (let t = 0; t < triangles; t++) {
|
|
23
|
+
const key = keyOf[t];
|
|
24
|
+
const list = groups.get(key);
|
|
25
|
+
if (list === undefined)
|
|
26
|
+
groups.set(key, [t]);
|
|
27
|
+
else
|
|
28
|
+
list.push(t);
|
|
29
|
+
}
|
|
30
|
+
return groups;
|
|
31
|
+
}
|
|
32
|
+
/** Packs a typed array as the bytes of one buffer view. */
|
|
33
|
+
function bytesOf(array) {
|
|
34
|
+
return new Uint8Array(array.buffer, array.byteOffset, array.byteLength);
|
|
35
|
+
}
|
|
36
|
+
/** Pads a byte array with the given byte to a multiple of four bytes. */
|
|
37
|
+
function pad4(bytes, fill) {
|
|
38
|
+
const padded = (bytes.byteLength + 3) & ~3;
|
|
39
|
+
if (padded === bytes.byteLength)
|
|
40
|
+
return bytes;
|
|
41
|
+
const out = new Uint8Array(padded).fill(fill);
|
|
42
|
+
out.set(bytes);
|
|
43
|
+
return out;
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Writes meshes as one glTF 2.0 binary file. Each mesh is one glTF mesh. Its triangles are grouped
|
|
47
|
+
* by face colour, and each colour is one primitive with one material. Faces without a colour use a
|
|
48
|
+
* default grey material. The positions and the normals are shared by the primitives of one mesh.
|
|
49
|
+
* A mesh without triangles is left out. Input with no triangle at all rejects with E_INPUT, because a
|
|
50
|
+
* glTF buffer cannot have zero bytes.
|
|
51
|
+
*/
|
|
52
|
+
export function writeGlb(meshes) {
|
|
53
|
+
const materials = [];
|
|
54
|
+
const materialIndex = new Map();
|
|
55
|
+
const materialOf = (key) => {
|
|
56
|
+
let index = materialIndex.get(key);
|
|
57
|
+
if (index === undefined) {
|
|
58
|
+
index = materials.length;
|
|
59
|
+
const colour = key === "default" ? DEFAULT_COLOUR : key.split(",").map(Number);
|
|
60
|
+
materials.push({ name: key === "default" ? "default" : `face ${key}`, colour });
|
|
61
|
+
materialIndex.set(key, index);
|
|
62
|
+
}
|
|
63
|
+
return index;
|
|
64
|
+
};
|
|
65
|
+
const accessors = [];
|
|
66
|
+
const addAccessor = (accessor) => {
|
|
67
|
+
accessors.push(accessor);
|
|
68
|
+
return accessors.length - 1;
|
|
69
|
+
};
|
|
70
|
+
const gltfMeshes = [];
|
|
71
|
+
const nodes = [];
|
|
72
|
+
for (const mesh of meshes) {
|
|
73
|
+
// A mesh with no triangle gets no accessor, so that the file holds no unused accessor.
|
|
74
|
+
const groups = triangleGroups(mesh);
|
|
75
|
+
if (groups.size === 0)
|
|
76
|
+
continue;
|
|
77
|
+
const positions = Float32Array.from(mesh.positions);
|
|
78
|
+
const vertexCount = positions.length / 3;
|
|
79
|
+
const min = [Infinity, Infinity, Infinity];
|
|
80
|
+
const max = [-Infinity, -Infinity, -Infinity];
|
|
81
|
+
for (let i = 0; i < positions.length; i++) {
|
|
82
|
+
const k = i % 3;
|
|
83
|
+
min[k] = Math.min(min[k], positions[i]);
|
|
84
|
+
max[k] = Math.max(max[k], positions[i]);
|
|
85
|
+
}
|
|
86
|
+
const attributes = {
|
|
87
|
+
POSITION: addAccessor({ bytes: bytesOf(positions), componentType: COMPONENT_FLOAT32, type: "VEC3", count: vertexCount, min, max }),
|
|
88
|
+
};
|
|
89
|
+
if (mesh.normals !== undefined) {
|
|
90
|
+
const normals = Float32Array.from(mesh.normals);
|
|
91
|
+
attributes.NORMAL = addAccessor({ bytes: bytesOf(normals), componentType: COMPONENT_FLOAT32, type: "VEC3", count: normals.length / 3 });
|
|
92
|
+
}
|
|
93
|
+
const primitives = [];
|
|
94
|
+
for (const [key, triangles] of groups) {
|
|
95
|
+
const indices = new Uint32Array(triangles.length * 3);
|
|
96
|
+
triangles.forEach((t, n) => {
|
|
97
|
+
indices[n * 3] = mesh.indices[t * 3];
|
|
98
|
+
indices[n * 3 + 1] = mesh.indices[t * 3 + 1];
|
|
99
|
+
indices[n * 3 + 2] = mesh.indices[t * 3 + 2];
|
|
100
|
+
});
|
|
101
|
+
const indexAccessor = addAccessor({ bytes: bytesOf(indices), componentType: COMPONENT_UINT32, type: "SCALAR", count: indices.length });
|
|
102
|
+
primitives.push({ attributes, indices: indexAccessor, material: materialOf(key), mode: MODE_TRIANGLES });
|
|
103
|
+
}
|
|
104
|
+
nodes.push({ mesh: gltfMeshes.length, name: mesh.name });
|
|
105
|
+
gltfMeshes.push({ name: mesh.name, primitives });
|
|
106
|
+
}
|
|
107
|
+
if (gltfMeshes.length === 0) {
|
|
108
|
+
throw new RenderError("E_INPUT", "the meshes hold no triangles");
|
|
109
|
+
}
|
|
110
|
+
// Lay out the buffer: one buffer view per accessor, each on a four-byte boundary.
|
|
111
|
+
const views = [];
|
|
112
|
+
const chunks = [];
|
|
113
|
+
let total = 0;
|
|
114
|
+
for (const accessor of accessors) {
|
|
115
|
+
chunks.push(accessor.bytes);
|
|
116
|
+
views.push({ byteOffset: total, byteLength: accessor.bytes.byteLength });
|
|
117
|
+
total += accessor.bytes.byteLength;
|
|
118
|
+
}
|
|
119
|
+
const bin = new Uint8Array(total);
|
|
120
|
+
let cursor = 0;
|
|
121
|
+
for (const chunk of chunks) {
|
|
122
|
+
bin.set(chunk, cursor);
|
|
123
|
+
cursor += chunk.byteLength;
|
|
124
|
+
}
|
|
125
|
+
const json = {
|
|
126
|
+
asset: { version: "2.0", generator: "sciengjs" },
|
|
127
|
+
scene: 0,
|
|
128
|
+
scenes: [{ nodes: nodes.map((_, i) => i) }],
|
|
129
|
+
nodes,
|
|
130
|
+
meshes: gltfMeshes,
|
|
131
|
+
materials: materials.map((m) => ({
|
|
132
|
+
name: m.name,
|
|
133
|
+
pbrMetallicRoughness: { baseColorFactor: [...m.colour, 1], metallicFactor: 0, roughnessFactor: 1 },
|
|
134
|
+
})),
|
|
135
|
+
accessors: accessors.map((a, i) => ({
|
|
136
|
+
bufferView: i,
|
|
137
|
+
byteOffset: 0,
|
|
138
|
+
componentType: a.componentType,
|
|
139
|
+
count: a.count,
|
|
140
|
+
type: a.type,
|
|
141
|
+
...(a.min !== undefined ? { min: a.min, max: a.max } : {}),
|
|
142
|
+
})),
|
|
143
|
+
bufferViews: views.map((v) => ({ buffer: 0, byteOffset: v.byteOffset, byteLength: v.byteLength })),
|
|
144
|
+
buffers: [{ byteLength: total }],
|
|
145
|
+
};
|
|
146
|
+
const jsonBytes = pad4(new TextEncoder().encode(JSON.stringify(json)), 0x20);
|
|
147
|
+
const binBytes = pad4(bin, 0);
|
|
148
|
+
const length = 12 + 8 + jsonBytes.byteLength + 8 + binBytes.byteLength;
|
|
149
|
+
const out = new Uint8Array(length);
|
|
150
|
+
const view = new DataView(out.buffer);
|
|
151
|
+
view.setUint32(0, MAGIC, true);
|
|
152
|
+
view.setUint32(4, VERSION, true);
|
|
153
|
+
view.setUint32(8, length, true);
|
|
154
|
+
view.setUint32(12, jsonBytes.byteLength, true);
|
|
155
|
+
view.setUint32(16, CHUNK_JSON, true);
|
|
156
|
+
out.set(jsonBytes, 20);
|
|
157
|
+
const binHeader = 20 + jsonBytes.byteLength;
|
|
158
|
+
view.setUint32(binHeader, binBytes.byteLength, true);
|
|
159
|
+
view.setUint32(binHeader + 4, CHUNK_BIN, true);
|
|
160
|
+
out.set(binBytes, binHeader + 8);
|
|
161
|
+
return out;
|
|
162
|
+
}
|
|
163
|
+
//# sourceMappingURL=glb.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"glb.js","sourceRoot":"","sources":["../../src/mesh/glb.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/** The mesh stage: STEP, IGES and BREP through occt-import-js, and the glTF binary writer. */
|
|
2
|
+
export { readCad } from "./read.ts";
|
|
3
|
+
export type { CadFormat, CadFace, CadMesh, LinearUnit } from "./read.ts";
|
|
4
|
+
export { writeGlb } from "./glb.ts";
|
|
5
|
+
export { readMeshOptions } from "./backend-glb.ts";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/mesh/index.ts"],"names":[],"mappings":"AAAA,8FAA8F;AAC9F,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AACpC,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { PinnedBytes } from "../browser/render.ts";
|
|
2
|
+
/**
|
|
3
|
+
* Reads the pinned Three.js files from the assets folder and checks the SHA-256 of each. A missing file rejects with
|
|
4
|
+
* E_STAGE_MISSING. A file with other bytes rejects with E_INTEGRITY, so a changed copy never runs in a page.
|
|
5
|
+
*/
|
|
6
|
+
export declare function pinnedThree(assetsUrl: string): ReadonlyMap<string, PinnedBytes>;
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { createHash } from "node:crypto";
|
|
2
|
+
import { THREE_MODULES } from "../browser/pinned.js";
|
|
3
|
+
import { readAsset } from "../assets.js";
|
|
4
|
+
import { RenderError } from "../errors.js";
|
|
5
|
+
/**
|
|
6
|
+
* Reads the pinned Three.js files from the assets folder and checks the SHA-256 of each. A missing file rejects with
|
|
7
|
+
* E_STAGE_MISSING. A file with other bytes rejects with E_INTEGRITY, so a changed copy never runs in a page.
|
|
8
|
+
*/
|
|
9
|
+
export function pinnedThree(assetsUrl) {
|
|
10
|
+
const map = new Map();
|
|
11
|
+
for (const m of THREE_MODULES) {
|
|
12
|
+
const bytes = readAsset(assetsUrl, m.file);
|
|
13
|
+
const hash = createHash("sha256").update(bytes).digest("hex");
|
|
14
|
+
if (hash !== m.sha256) {
|
|
15
|
+
throw new RenderError("E_INTEGRITY", `${m.file} has the SHA-256 ${hash}, not the pinned ${m.sha256}`);
|
|
16
|
+
}
|
|
17
|
+
map.set(m.url, { bytes, mime: m.mime });
|
|
18
|
+
}
|
|
19
|
+
return map;
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=pinned-three.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pinned-three.js","sourceRoot":"","sources":["../../src/mesh/pinned-three.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAErD,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAE3C;;;GAGG;AACH,MAAM,UAAU,WAAW,CAAC,SAAiB;IAC3C,MAAM,GAAG,GAAG,IAAI,GAAG,EAAuB,CAAC;IAC3C,KAAK,MAAM,CAAC,IAAI,aAAa,EAAE,CAAC;QAC9B,MAAM,KAAK,GAAG,SAAS,CAAC,SAAS,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;QAC3C,MAAM,IAAI,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC9D,IAAI,IAAI,KAAK,CAAC,CAAC,MAAM,EAAE,CAAC;YACtB,MAAM,IAAI,WAAW,CAAC,aAAa,EAAE,GAAG,CAAC,CAAC,IAAI,oBAAoB,IAAI,oBAAoB,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;QACxG,CAAC;QACD,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;IAC1C,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC"}
|