fix: resolve workspace integration blockers (#5)

This commit is contained in:
2026-07-29 10:01:17 +09:00
parent 3279ac099e
commit cadbd5fb60
37 changed files with 1817 additions and 73 deletions
+23 -3
View File
@@ -2,13 +2,30 @@
// runtime paths /draco/ and /basis/ resolve (version-matched to installed three).
// Also copies the web-ifc single-thread WASM to public/web-ifc/ for the IFC path.
// Runs automatically via `npm install` (postinstall). Safe to re-run.
import { cpSync, copyFileSync, existsSync, mkdirSync, rmSync } from 'node:fs';
import {
chmodSync,
cpSync,
copyFileSync,
existsSync,
mkdirSync,
readdirSync,
rmSync,
} from 'node:fs';
import { dirname, resolve } from 'node:path';
import { fileURLToPath } from 'node:url';
const __dirname = dirname(fileURLToPath(import.meta.url));
const root = resolve(__dirname, '..');
function normalizePublicModes(directory) {
chmodSync(directory, 0o755);
for (const entry of readdirSync(directory, { withFileTypes: true })) {
const path = resolve(directory, entry.name);
if (entry.isDirectory()) normalizePublicModes(path);
else if (entry.isFile()) chmodSync(path, 0o644);
}
}
const threeEntry = fileURLToPath(import.meta.resolve('three'));
const threeRoot = resolve(dirname(threeEntry), '..');
const libs = resolve(threeRoot, 'examples/jsm/libs');
@@ -30,6 +47,7 @@ for (const [src, dest] of targets) {
rmSync(dest, { force: true, recursive: true });
mkdirSync(dest, { recursive: true });
cpSync(src, dest, { recursive: true });
normalizePublicModes(dest);
console.log(`[copy-decoders] ${src} -> ${dest}`);
}
@@ -42,8 +60,10 @@ if (existsSync(ifcSrcDir)) {
for (const wasm of ['web-ifc.wasm', 'web-ifc-mt.wasm']) {
const src = resolve(ifcSrcDir, wasm);
if (!existsSync(src)) continue;
copyFileSync(src, resolve(ifcDest, wasm));
console.log(`[copy-decoders] ${src} -> ${resolve(ifcDest, wasm)}`);
const dest = resolve(ifcDest, wasm);
copyFileSync(src, dest);
chmodSync(dest, 0o644);
console.log(`[copy-decoders] ${src} -> ${dest}`);
}
} else {
console.warn('[copy-decoders] web-ifc not installed yet — skipping IFC wasm.');