You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
WebCAD/utils/copy_type.ts

149 lines
4.5 KiB

import { readFile, writeFile } from 'fs';
import * as path from 'path';
import { downLoadFile } from './utils';
//修正d.ts中类型定义出现错误的问题,临时修复,因为d.ts并不能完全快速的合并我们的类型修复PR.
// copyFolderRecursiveSync("./@types/", "./node_modules/");
function downloadTypes(downFiles: { moduleName: string; urlPath: string; files: string[]; })
{
let filePath = path.resolve("./node_modules/" + downFiles.moduleName) + "\\";
for (let file of downFiles.files)
{
try
{
downLoadFile(downFiles.urlPath + file, filePath + file);
console.log("成功", file);
}
catch (error)
{
console.log(file, error);
}
}
}
readFile("node_modules\\dxf-parser\\dist\\ParseHelpers.js", "utf-8", (err, str) =>
{
if (!str)
{
console.error("出错了,读不到文件:node_modules\\dxf-parser\\dist\\ParseHelpers.js");
return;
}
if (str.includes("case 210:")) return;
str = str.replace("case 330:", `
case 210:
entity.extrusionDirectionX = curr.value;
break;
case 220:
entity.extrusionDirectionY = curr.value;
break;
case 230:
entity.extrusionDirectionZ = curr.value;
break;
case 330:
`);
writeFile("node_modules\\dxf-parser\\dist\\ParseHelpers.js", str, err =>
{
if (err)
console.error("dxf parse写入失败");
else
console.log("dxf parse hack 成功");
});
});
readFile("node_modules\\@jscad\\modeling\\src\\maths\\constants.js", "utf-8", (err, str) =>
{
str = str.replaceAll("5", "3");
writeFile("node_modules\\@jscad\\modeling\\src\\maths\\constants.js", str, err =>
{
if (err)
console.error("csg写入失败");
else
console.log("csg hack 成功");
});
});
readFile("node_modules\\rollup-plugin-typescript\\dist\\rollup-plugin-typescript.cjs.js", "utf-8", (err, str) =>
{
if (str.includes("readFile: () => { }")) return;
str = str.replaceAll("var resolveHost = {", "var resolveHost = {\r\nreadFile: () => { },\r\n");
writeFile("node_modules\\rollup-plugin-typescript\\dist\\rollup-plugin-typescript.cjs.js", str, err =>
{
if (err)
console.error("hack rollup-plugin-typescript error");
else
console.log("hack rollup-plugin-typescript ok");
});
});
readFile("node_modules\\rollup-plugin-typescript\\dist\\rollup-plugin-typescript.es.js", "utf-8", (err, str) =>
{
if (str.includes("readFile: () => { }")) return;
str = str.replaceAll("var resolveHost = {", "var resolveHost = {\r\nreadFile: () => { },\r\n");
writeFile("node_modules\\rollup-plugin-typescript\\dist\\rollup-plugin-typescript.es.js", str, err =>
{
if (err)
console.error("hack rollup-plugin-typescript error");
else
console.log("hack rollup-plugin-typescript ok");
});
});
writeFile("node_modules\\@jscad\\modeling\\src\\operations\\modifiers\\retessellate.d.ts",
"import { Geom3 } from '../../geometries/types';\r\n\r\nexport default function retessellate(geometry: Geom3): Geom3;\r\n",
err =>
{
if (err)
console.error("retessellate.d.ts error");
else
console.log("retessellate.d.ts ok");
}
);
writeFile("node_modules/@jscad/modeling/src/operations/booleans/trees/splitPolygonByPlane.d.ts", `
import { Poly3 } from '../../../geometries/types';
import { Plane } from '../../../maths/types';
enum ResType
{
coplanar_front = 0,
coplanar_back = 1,
front = 2,
back = 3,
spanning = 4,
}
interface SplitRes
{
type: ResType,
front: Poly3,
back: Poly3;
}
// Returns object:
// .type:
// 0: coplanar-front
// 1: coplanar-back
// 2: front
// 3: back
// 4: spanning
// In case the polygon is spanning, returns:
// .front: a Polygon3 of the front part
// .back: a Polygon3 of the back part
declare function splitPolygonByPlane(plane: Plane, polygon: Poly3): SplitRes;
export default splitPolygonByPlane;`, err => { });
writeFile("node_modules/@jscad/modeling/src/operations/booleans/scission.d.ts", `
iimport { Geom2, Geom3 } from '../../geometries/types'
import RecursiveArray from '../../utils/recursiveArray'
export default scission
declare function scission(...geometries: RecursiveArray<Geom2>): Geom2
declare function scission(...geometries: RecursiveArray<Geom3>): Geom3`, err => { });