diff --git a/.gitignore b/.gitignore index 196ccadc..bef0b0f1 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ +out-tsc .metadata Thumbs.db Release diff --git a/jest.config.js b/jest.config.js index fc1b706a..aac016bd 100644 --- a/jest.config.js +++ b/jest.config.js @@ -3,6 +3,7 @@ module.exports = { coverageDirectory: "coverage", collectCoverage: true, coverageProvider: "v8", - setupFiles: ["jest-canvas-mock"], testEnvironment: "jsdom", + setupFiles: ["jest-canvas-mock"], + testEnvironment: "jsdom", setupFilesAfterEnv: ["./tests/setupTests.js"] }; diff --git a/package-lock.json b/package-lock.json index aa827d64..579df79e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -25,7 +25,7 @@ "prettier": "^2.8.8", "rollup": "^3.21.3", "rollup-plugin-postcss": "^4.0.2", - "typescript": "^5.0.4" + "typescript": "^5.1.6" } }, "node_modules/@75lb/deep-merge": { @@ -11479,16 +11479,16 @@ } }, "node_modules/typescript": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.0.4.tgz", - "integrity": "sha512-cW9T5W9xY37cc+jfEnaUvX91foxtHkza3Nw3wkoF4sSlKn0MONdkdEndig/qPBWXNkmplh3NzayQzCiHM4/hqw==", + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.1.6.tgz", + "integrity": "sha512-zaWCozRZ6DLEWAWFrVDz1H6FVXzUSfTy5FUMWsQlU8Ym5JP9eO4xkTIROFCQvhQf61z6O/G6ugw3SgAnvvm+HA==", "dev": true, "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" }, "engines": { - "node": ">=12.20" + "node": ">=14.17" } }, "node_modules/typical": { diff --git a/package.json b/package.json index b835ab89..a25293a5 100644 --- a/package.json +++ b/package.json @@ -12,12 +12,9 @@ "docs": "jsdoc -r ./src/ -c ./jsdoc.conf.json -d ./docs", "serve": "ws", "build": "rollup -c --bundleConfigAsCjs", - "webgl": "rollup -c --environment entry:webgl", - "core": "rollup -c --environment entry:core", "test": "jest --env=jsdom --runInBand --ci --coverage=false", "test_watch": "jest --env=jsdom --watch", "lint": "eslint -c ./.eslintrc.js src/og", - "generate_types": "rm -rf types; tsc src/**/*.js --declaration --allowJs --emitDeclarationOnly --outDir types", "compile_js_as_ts": "tsc src/og/index.js --AllowJs --checkJs --outDir dist/@openglobus/src/", "font": "node ./fonts/index.js" }, @@ -60,7 +57,7 @@ "prettier": "^2.8.8", "rollup": "^3.21.3", "rollup-plugin-postcss": "^4.0.2", - "typescript": "^5.0.4" + "typescript": "^5.1.6" }, "lint-staged": { "*.{js,ts}": [ diff --git a/src/og/LonLat.js b/src/og/LonLat.ts similarity index 81% rename from src/og/LonLat.js rename to src/og/LonLat.ts index 5d0c0ba1..89ae5995 100644 --- a/src/og/LonLat.js +++ b/src/og/LonLat.ts @@ -1,5 +1,6 @@ "use strict"; +//@ts-ignore import * as mercator from "./mercator.js"; const HALF_PI = Math.PI * 0.5; @@ -16,12 +17,12 @@ const INV_PI_BY_180_HALF_PI = INV_PI_BY_180 * HALF_PI; * @param {number} [height] - Height over the surface. */ export class LonLat { - /** - * @param {number} [lon] - Longitude. - * @param {number} [lat] - Latitude. - * @param {number} [height] - Height over the surface. - */ - constructor(lon = 0, lat = 0, height = 0) { + + public lon: number = 0; + public lat: number = 0; + public height: number = 0; + + constructor(lon: number = 0, lat: number = 0, height: number = 0) { /** * Longitude. * @public @@ -44,7 +45,7 @@ export class LonLat { this.height = height; } - isZero() { + public isZero(): boolean { return this.lon === 0.0 && this.lat === 0.0 && this.height === 0.0; } @@ -54,10 +55,10 @@ export class LonLat { * @param{Array.>} arr - Coordinates array data. (exactly 3 entries) * @return{Array.} the same coordinates array but each element is LonLat instance. */ - static join(arr) { - var res = []; + static join(arr: [number, number, number][]): LonLat[] { + let res = []; for (let i = 0; i < arr.length; i++) { - var ai = arr[i]; + let ai = arr[i]; res[i] = new LonLat(ai[0], ai[1], ai[2]); } return res; @@ -69,7 +70,7 @@ export class LonLat { * @param {Array.} arr - Coordiante array, where first is longitude, second is latitude and third is a height. (exactly 3 entries) * @returns {LonLat} - */ - static createFromArray(arr) { + static createFromArray(arr: [number, number, number]): LonLat { return new LonLat(arr[0], arr[1], arr[2]); } @@ -78,7 +79,7 @@ export class LonLat { * @param lonLat * @returns {number[]} */ - static toArray(lonLat) { + static toArray(lonLat: LonLat): [number, number, number] { return [lonLat.lon, lonLat.lat, lonLat.height] } @@ -86,8 +87,8 @@ export class LonLat { * Create array from lonlat * @returns {number[]} */ - toArray() { - return LonLat.toArray(this) + public toArray(): [number, number, number] { + return LonLat.toArray(this); } /** @@ -98,7 +99,7 @@ export class LonLat { * @param {number} [height] - Height. * @returns {LonLat} - */ - static forwardMercator(lon, lat, height) { + static forwardMercator(lon: number, lat: number, height: number): LonLat { return new LonLat( lon * mercator.POLE_BY_180, Math.log(Math.tan((90.0 + lat) * PI_BY_360)) * mercator.POLE_BY_PI, @@ -113,7 +114,7 @@ export class LonLat { * @param {LonLat} res - Output mercator coordinates * @returns {LonLat} - Output mercator coordinates */ - static forwardMercatorRes(lonLat, res) { + static forwardMercatorRes(lonLat: LonLat, res: LonLat): LonLat { res.lon = lonLat.lon * mercator.POLE_BY_180; res.lat = Math.log(Math.tan((90.0 + lonLat.lat) * PI_BY_360)) * mercator.POLE_BY_PI, res.height = lonLat.height; @@ -128,7 +129,7 @@ export class LonLat { * @param {number} [height] - Height. * @returns {LonLat} - */ - static inverseMercator(x, y, height = 0) { + static inverseMercator(x: number, y: number, height: number = 0): LonLat { return new LonLat( x * mercator.INV_POLE_BY_180, INV_PI_BY_360 * Math.atan(Math.exp(y * mercator.PI_BY_POLE)) - INV_PI_BY_180_HALF_PI, @@ -144,7 +145,7 @@ export class LonLat { * @param {number} [height] - Height. * @returns {LonLat} - */ - set(lon = 0, lat = 0, height = 0) { + public set(lon: number = 0, lat: number = 0, height: number = 0): LonLat { this.lon = lon; this.lat = lat; this.height = height; @@ -157,7 +158,7 @@ export class LonLat { * @param {LonLat} [lonLat] - Coordinates to copy. * @returns {LonLat} - */ - copy(lonLat) { + public copy(lonLat: LonLat): LonLat { this.lon = lonLat.lon; this.lat = lonLat.lat; this.height = lonLat.height; @@ -169,7 +170,7 @@ export class LonLat { * @public * @returns {LonLat} - */ - clone() { + public clone(): LonLat { return new LonLat(this.lon, this.lat, this.height); } @@ -178,12 +179,12 @@ export class LonLat { * @public * @returns {LonLat} - */ - forwardMercator() { + public forwardMercator(): LonLat { return LonLat.forwardMercator(this.lon, this.lat, this.height); } - forwardMercatorEPS01() { - var lat = this.lat; + public forwardMercatorEPS01(): LonLat { + let lat = this.lat; if (lat > 89.9) { lat = 89.9; } else if (lat < -89.9) { @@ -200,7 +201,7 @@ export class LonLat { * @public * @returns {LonLat} - */ - inverseMercator() { + public inverseMercator(): LonLat { return LonLat.inverseMercator(this.lon, this.lat, this.height); } @@ -210,7 +211,7 @@ export class LonLat { * @param {LonLat} b - Coordinate to compare with. * @returns {boolean} - */ - equal(b) { + public equal(b: LonLat): boolean { if (b.height) { return this.lon === b.lon && this.lat === b.lat && this.height === b.height; } else { diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 00000000..6e854afc --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,18 @@ +{ + "include" : [ + "./src/og/**/*" + ], + "exclude" : [ + "node_modules", + "dist" + ], + "compilerOptions": { + "target": "es2016", + "module": "commonjs", + "esModuleInterop": true, + "forceConsistentCasingInFileNames": true, + "strict": true, + "skipLibCheck": true, + "outDir": "out-tsc", + } +}