diff --git a/.eslintrc.json b/.eslintrc.json index b6e63966..30fca962 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -27,7 +27,7 @@ "no-console": "off", "no-extra-boolean-cast": "off", "prefer-const": "off", - "no-var": "off", + "no-var": "error", "no-empty": "off", "no-fallthrough": "off", "@typescript-eslint/no-explicit-any": "off", diff --git a/externals.d.ts b/externals.d.ts index 8153f14c..be0b030f 100644 --- a/externals.d.ts +++ b/externals.d.ts @@ -3,9 +3,9 @@ declare module '*.less' { export = resource; } -declare var verb: any; -declare var FS: any; -declare var __CAD_APP: any; -declare var __DEBUG__: any; -declare var Module: any; +declare const verb: any; +declare const FS: any; +declare const __CAD_APP: any; +declare const __DEBUG__: any; +declare const Module: any; diff --git a/modules/engine/impl/wasm/externals.d.ts b/modules/engine/impl/wasm/externals.d.ts index 9149310a..49cb4089 100644 --- a/modules/engine/impl/wasm/externals.d.ts +++ b/modules/engine/impl/wasm/externals.d.ts @@ -1,6 +1,6 @@ /* eslint @typescript-eslint/ban-types: 0 */ -declare var Module: { +declare let Module: { _SPI_box: Function; _SPI_torus: Function; _SPI_sphere: Function; diff --git a/modules/geom/euclidean.ts b/modules/geom/euclidean.ts index e800ca27..acd0f43e 100644 --- a/modules/geom/euclidean.ts +++ b/modules/geom/euclidean.ts @@ -8,17 +8,17 @@ import {IDENTITY_BASIS3} from "math/basis"; import Vector from "math/vector"; export function circleFromPoints(p1, p2, p3) { - var center = new Vector(); - var offset = p2.x * p2.x + p2.y * p2.y; - var bc = (p1.x * p1.x + p1.y * p1.y - offset) / 2.0; - var cd = (offset - p3.x * p3.x - p3.y * p3.y) / 2.0; - var det = (p1.x - p2.x) * (p2.y - p3.y) - (p2.x - p3.x) * (p1.y - p2.y); + let center = new Vector(); + let offset = p2.x * p2.x + p2.y * p2.y; + let bc = (p1.x * p1.x + p1.y * p1.y - offset) / 2.0; + let cd = (offset - p3.x * p3.x - p3.y * p3.y) / 2.0; + let det = (p1.x - p2.x) * (p2.y - p3.y) - (p2.x - p3.x) * (p1.y - p2.y); if (Math.abs(det) < 1e-6) { return null; } - var idet = 1 / det; + let idet = 1 / det; center.x = (bc * (p2.y - p3.y) - cd * (p1.y - p2.y)) * idet; center.y = (cd * (p1.x - p2.x) - bc * (p2.x - p3.x)) * idet; @@ -67,21 +67,21 @@ export function polygonOffsetByDelta(polygon, delta) { } export function isPointInsidePolygon(inPt, inPolygon) { - var EPSILON = TIGHT_TOLERANCE; + let EPSILON = TIGHT_TOLERANCE; - var polyLen = inPolygon.length; + let polyLen = inPolygon.length; // inPt on polygon contour => immediate success or // toggling of inside/outside at every single! intersection point of an edge // with the horizontal line through inPt, left of inPt // not counting lowerY endpoints of edges and whole edges on that line - var inside = false; - for (var p = polyLen - 1, q = 0; q < polyLen; p = q++) { - var edgeLowPt = inPolygon[p]; - var edgeHighPt = inPolygon[q]; + let inside = false; + for (let p = polyLen - 1, q = 0; q < polyLen; p = q++) { + let edgeLowPt = inPolygon[p]; + let edgeHighPt = inPolygon[q]; - var edgeDx = edgeHighPt.x - edgeLowPt.x; - var edgeDy = edgeHighPt.y - edgeLowPt.y; + let edgeDx = edgeHighPt.x - edgeLowPt.x; + let edgeDy = edgeHighPt.y - edgeLowPt.y; if (Math.abs(edgeDy) > EPSILON) { // not parallel if (edgeDy < 0) { @@ -96,7 +96,7 @@ export function isPointInsidePolygon(inPt, inPolygon) { if (inPt.x == edgeLowPt.x) return true; // inPt is on contour ? // continue; // no intersection or edgeLowPt => doesn't count !!! } else { - var perpEdge = edgeDy * (inPt.x - edgeLowPt.x) - edgeDx * (inPt.y - edgeLowPt.y); + let perpEdge = edgeDy * (inPt.x - edgeLowPt.x) - edgeDx * (inPt.y - edgeLowPt.y); if (perpEdge == 0) return true; // inPt is on contour ? if (perpEdge < 0) continue; inside = !inside; // true intersection left of inPt @@ -114,9 +114,9 @@ export function isPointInsidePolygon(inPt, inPolygon) { } export function area(contour) { - var n = contour.length; - var a = 0.0; - for (var p = n - 1, q = 0; q < n; p = q++) { + let n = contour.length; + let a = 0.0; + for (let p = n - 1, q = 0; q < n; p = q++) { a += contour[p].x * contour[q].y - contour[q].x * contour[p].y; } return a * 0.5; @@ -205,8 +205,8 @@ export function lineLineIntersection(p1, p2, v1, v2) { export function ConvexHull2D(points) { function removeMiddle(a, b, c) { - var cross = (a.x - b.x) * (c.y - b.y) - (a.y - b.y) * (c.x - b.x); - var dot = (a.x - b.x) * (c.x - b.x) + (a.y - b.y) * (c.y - b.y); + let cross = (a.x - b.x) * (c.y - b.y) - (a.y - b.y) * (c.x - b.x); + let dot = (a.x - b.x) * (c.x - b.x) + (a.y - b.y) * (c.y - b.y); return cross < 0 || cross == 0 && dot <= 0; } diff --git a/modules/math/distance.ts b/modules/math/distance.ts index 60ff5d69..cfbb9609 100644 --- a/modules/math/distance.ts +++ b/modules/math/distance.ts @@ -3,8 +3,8 @@ export function distanceAB(a, b) { } export function distance(x1, y1, x2, y2) { - var dx = x1 - x2; - var dy = y1 - y2; + let dx = x1 - x2; + let dy = y1 - y2; return Math.sqrt(dx * dx + dy * dy); } @@ -25,9 +25,9 @@ export function distanceSquaredANegB3(a, b) { } export function distanceSquared3(x1, y1, z1, x2, y2, z2) { - var dx = x1 - x2; - var dy = y1 - y2; - var dz = z1 - z2; + let dx = x1 - x2; + let dy = y1 - y2; + let dz = z1 - z2; return dx * dx + dy * dy + dz * dz; } diff --git a/modules/math/matrix.ts b/modules/math/matrix.ts index e9b5e232..13fc62e4 100644 --- a/modules/math/matrix.ts +++ b/modules/math/matrix.ts @@ -38,7 +38,7 @@ export class Matrix3x4 { }; setBasis(basis: [Vector, Vector, Vector]): Matrix3x4 { - var b = basis; + let b = basis; this.mxx = b[0].x; this.mxy = b[1].x; this.mxz = b[2].x; @@ -254,7 +254,7 @@ export class Matrix3x4 { __invert(out: Matrix3x4): Matrix3x4 { - var det = + let det = this.mxx * (this.myy * this.mzz - this.mzy * this.myz) + this.mxy * (this.myz * this.mzx - this.mzz * this.myx) + this.mxz * (this.myx * this.mzy - this.mzx * this.myy); @@ -263,22 +263,22 @@ export class Matrix3x4 { return null; } - var cxx = this.myy * this.mzz - this.myz * this.mzy; - var cyx = -this.myx * this.mzz + this.myz * this.mzx; - var czx = this.myx * this.mzy - this.myy * this.mzx; - var cxt = -this.mxy * (this.myz * this.tz - this.mzz * this.ty) + let cxx = this.myy * this.mzz - this.myz * this.mzy; + let cyx = -this.myx * this.mzz + this.myz * this.mzx; + let czx = this.myx * this.mzy - this.myy * this.mzx; + let cxt = -this.mxy * (this.myz * this.tz - this.mzz * this.ty) - this.mxz * (this.ty * this.mzy - this.tz * this.myy) - this.tx * (this.myy * this.mzz - this.mzy * this.myz); - var cxy = -this.mxy * this.mzz + this.mxz * this.mzy; - var cyy = this.mxx * this.mzz - this.mxz * this.mzx; - var czy = -this.mxx * this.mzy + this.mxy * this.mzx; - var cyt = this.mxx * (this.myz * this.tz - this.mzz * this.ty) + let cxy = -this.mxy * this.mzz + this.mxz * this.mzy; + let cyy = this.mxx * this.mzz - this.mxz * this.mzx; + let czy = -this.mxx * this.mzy + this.mxy * this.mzx; + let cyt = this.mxx * (this.myz * this.tz - this.mzz * this.ty) + this.mxz * (this.ty * this.mzx - this.tz * this.myx) + this.tx * (this.myx * this.mzz - this.mzx * this.myz); - var cxz = this.mxy * this.myz - this.mxz * this.myy; - var cyz = -this.mxx * this.myz + this.mxz * this.myx; - var czz = this.mxx * this.myy - this.mxy * this.myx; - var czt = -this.mxx * (this.myy * this.tz - this.mzy * this.ty) + let cxz = this.mxy * this.myz - this.mxz * this.myy; + let cyz = -this.mxx * this.myz + this.mxz * this.myx; + let czz = this.mxx * this.myy - this.mxy * this.myx; + let czt = -this.mxx * (this.myy * this.tz - this.mzy * this.ty) - this.mxy * (this.ty * this.mzx - this.tz * this.myx) - this.tx * (this.myx * this.mzy - this.mzx * this.myy); @@ -298,20 +298,20 @@ export class Matrix3x4 { }; combine(transform: Matrix3x4, out?: Matrix3x4): Matrix3x4 { - var txx = transform.mxx; - var txy = transform.mxy; - var txz = transform.mxz; - var ttx = transform.tx; - var tyx = transform.myx; - var tyy = transform.myy; - var tyz = transform.myz; - var tty = transform.ty; - var tzx = transform.mzx; - var tzy = transform.mzy; - var tzz = transform.mzz; - var ttz = transform.tz; + let txx = transform.mxx; + let txy = transform.mxy; + let txz = transform.mxz; + let ttx = transform.tx; + let tyx = transform.myx; + let tyy = transform.myy; + let tyz = transform.myz; + let tty = transform.ty; + let tzx = transform.mzx; + let tzy = transform.mzy; + let tzz = transform.mzz; + let ttz = transform.tz; - var m = out || new Matrix3x4(); + let m = out || new Matrix3x4(); m.mxx = (this.mxx * txx + this.mxy * tyx + this.mxz * tzx); m.mxy = (this.mxx * txy + this.mxy * tyy + this.mxz * tzy); m.mxz = (this.mxx * txz + this.mxy * tyz + this.mxz * tzz); @@ -329,20 +329,20 @@ export class Matrix3x4 { }; combine3x3(transform: Matrix3x4, out?: Matrix3x4): Matrix3x4 { - var txx = transform.mxx; - var txy = transform.mxy; - var txz = transform.mxz; + let txx = transform.mxx; + let txy = transform.mxy; + let txz = transform.mxz; - var tyx = transform.myx; - var tyy = transform.myy; - var tyz = transform.myz; + let tyx = transform.myx; + let tyy = transform.myy; + let tyz = transform.myz; - var tzx = transform.mzx; - var tzy = transform.mzy; - var tzz = transform.mzz; + let tzx = transform.mzx; + let tzy = transform.mzy; + let tzz = transform.mzz; - var m = out || new Matrix3x4(); + let m = out || new Matrix3x4(); m.mxx = (this.mxx * txx + this.mxy * tyx + this.mxz * tzx); m.mxy = (this.mxx * txy + this.mxy * tyy + this.mxz * tzy); m.mxz = (this.mxx * txz + this.mxy * tyz + this.mxz * tzz); @@ -444,8 +444,8 @@ export class Matrix3x4 { } static rotationMatrix(cos: number, sin: number, axis: Vector, pivot: Vector, matrix?: Matrix3x4): Matrix3x4 { - var axisX, axisY, axisZ; - var m = matrix || new Matrix3x4(); + let axisX, axisY, axisZ; + let m = matrix || new Matrix3x4(); if (axis === AXIS.X || axis === AXIS.Y || axis === AXIS.Z) { axisX = axis.x; @@ -453,7 +453,7 @@ export class Matrix3x4 { axisZ = axis.z; } else { // normalize - var mag = axis.length(); + let mag = axis.length(); if (mag == 0.0) { return m; @@ -464,9 +464,9 @@ export class Matrix3x4 { } } - var px = pivot.x; - var py = pivot.y; - var pz = pivot.z; + let px = pivot.x; + let py = pivot.y; + let pz = pivot.z; m.mxx = cos + axisX * axisX * (1 - cos); m.mxy = axisX * axisY * (1 - cos) - axisZ * sin; diff --git a/web/app/sketcher/io.ts b/web/app/sketcher/io.ts index a455680b..ef262606 100644 --- a/web/app/sketcher/io.ts +++ b/web/app/sketcher/io.ts @@ -244,8 +244,8 @@ export class IO { } cleanUpData() { - for (var l = 0; l < this.viewer.layers.length; ++l) { - var layer = this.viewer.layers[l]; + for (let l = 0; l < this.viewer.layers.length; ++l) { + let layer = this.viewer.layers[l]; if (layer.objects.length !== 0) { layer.objects = []; } @@ -342,12 +342,12 @@ export class IO { }; getLayersToExport() { - var ws = this.getWorkspaceToExport(); - var toExport = []; - for (var t = 0; t < ws.length; ++t) { - var layers = ws[t]; - for (var l = 0; l < layers.length; ++l) { - var layer = layers[l]; + let ws = this.getWorkspaceToExport(); + let toExport = []; + for (let t = 0; t < ws.length; ++t) { + let layers = ws[t]; + for (let l = 0; l < layers.length; ++l) { + let layer = layers[l]; toExport.push(layer) } } @@ -461,10 +461,10 @@ export class IO { function _format(str, args) { if (args.length == 0) return str; - var i = 0; + let i = 0; return str.replace(/\$/g, function () { if (args === undefined || args[i] === undefined) throw "format arguments mismatch"; - var val = args[i]; + let val = args[i]; if (typeof val === 'number') val = val.toPrecision(); i++; return val; @@ -473,8 +473,8 @@ function _format(str, args) { /** @constructor */ function PrettyColors() { - var colors = ["#000000", "#00008B", "#006400", "#8B0000", "#FF8C00", "#E9967A"]; - var colIdx = 0; + let colors = ["#000000", "#00008B", "#006400", "#8B0000", "#FF8C00", "#E9967A"]; + let colIdx = 0; this.next = function () { return colors[colIdx++ % colors.length]; } @@ -500,13 +500,13 @@ function TextBuilder() { /** @constructor */ function BBox() { - var bbox = [Number.MAX_VALUE, Number.MAX_VALUE, - Number.MAX_VALUE, - Number.MAX_VALUE]; + let bbox = [Number.MAX_VALUE, Number.MAX_VALUE, - Number.MAX_VALUE, - Number.MAX_VALUE]; - var T = SketchTypes; + let T = SketchTypes; this.checkLayers = function (layers) { - for (var l = 0; l < layers.length; ++l) - for (var i = 0; i < layers[l].objects.length; ++i) + for (let l = 0; l < layers.length; ++l) + for (let i = 0; i < layers[l].objects.length; ++i) this.check(layers[l].objects[i]); }; diff --git a/web/app/sketcher/shapes/arc.ts b/web/app/sketcher/shapes/arc.ts index 33886815..2d5df7a9 100644 --- a/web/app/sketcher/shapes/arc.ts +++ b/web/app/sketcher/shapes/arc.ts @@ -129,21 +129,21 @@ export class Arc extends SketchObject { } isPointInsideSector(x, y) { - var ca = new Vector(this.a.x - this.c.x, this.a.y - this.c.y); - var cb = new Vector(this.b.x - this.c.x, this.b.y - this.c.y); - var ct = new Vector(x - this.c.x, y - this.c.y); + let ca = new Vector(this.a.x - this.c.x, this.a.y - this.c.y); + let cb = new Vector(this.b.x - this.c.x, this.b.y - this.c.y); + let ct = new Vector(x - this.c.x, y - this.c.y); ca._normalize(); cb._normalize(); ct._normalize(); - var cosAB = ca.dot(cb); - var cosAT = ca.dot(ct); + let cosAB = ca.dot(cb); + let cosAT = ca.dot(ct); - var isInside = cosAT >= cosAB; - var abInverse = ca.cross(cb).z < 0; - var atInverse = ca.cross(ct).z < 0; + let isInside = cosAT >= cosAB; + let abInverse = ca.cross(cb).z < 0; + let atInverse = ca.cross(ct).z < 0; - var result; + let result; if (abInverse) { result = !atInverse || !isInside; } else { @@ -154,7 +154,7 @@ export class Arc extends SketchObject { normalDistance(aim) { - var isInsideSector = this.isPointInsideSector(aim.x, aim.y); + let isInsideSector = this.isPointInsideSector(aim.x, aim.y); if (isInsideSector) { return Math.abs(distance(aim.x, aim.y, this.c.x, this.c.y) - this.radiusForDrawing()); } else { diff --git a/web/app/sketcher/viewer2d.ts b/web/app/sketcher/viewer2d.ts index 68f399ab..69f1f1cc 100644 --- a/web/app/sketcher/viewer2d.ts +++ b/web/app/sketcher/viewer2d.ts @@ -163,7 +163,7 @@ export class Viewer { }; addSegment(x1, y1, x2, y2, layer) { - var line = new Segment(x1, y1, x2, y2); + const line = new Segment(x1, y1, x2, y2); layer.add(line); return line; }; @@ -186,15 +186,15 @@ export class Viewer { buffer /= this.scale / this.retinaPxielRatio; buffer *= 0.5; - var pickResult = []; - var aim = new Vector(x, y); + const pickResult = []; + const aim = new Vector(x, y); - var heroIdx = 0; - var unreachable = buffer * 2; - var heroLength = unreachable; // unreachable + let heroIdx = 0; + const unreachable = buffer * 2; + let heroLength = unreachable; // unreachable function isFiltered(o) { - for (var i = 0; i < filter.length; ++i) { + for (let i = 0; i < filter.length; ++i) { if (filter[i] === o) return true; } return false; @@ -202,10 +202,10 @@ export class Viewer { for (let layers of this._workspace) { for (let i = 0; i < layers.length; i++) { - var objs = layers[i].objects; - for (var j = 0; j < objs.length; j++) { - var l = unreachable + 1; - var before = pickResult.length; + let objs = layers[i].objects; + for (let j = 0; j < objs.length; j++) { + let l = unreachable + 1; + let before = pickResult.length; objs[j].accept((o) => { if (!o.visible) return true; if (onlyPoints && !isEndPoint(o)) { @@ -218,7 +218,7 @@ export class Viewer { } return true; }); - var hit = before - pickResult.length != 0; + let hit = before - pickResult.length != 0; if (hit) { if (!deep && pickResult.length != 0) return pickResult; if (l >= 0 && l < heroLength) { @@ -230,7 +230,7 @@ export class Viewer { } } if (pickResult.length > 0) { - var _f = pickResult[0]; + let _f = pickResult[0]; pickResult[0] = pickResult[heroIdx]; pickResult[heroIdx] = _f; } @@ -431,7 +431,7 @@ export class Viewer { } findLayerByName(name) { - for (var i = 0; i < this.layers.length; i++) { + for (let i = 0; i < this.layers.length; i++) { if (this.layers[i].name == name) { return this.layers[i]; } @@ -440,7 +440,7 @@ export class Viewer { }; findById(id) { - var result = null; + let result = null; this.accept(function (o) { if (o.id === id) { result = o;