Begin refactoring to TypeScript

This commit is contained in:
Matthew Oslan
2019-05-09 00:55:37 -04:00
parent 39a58a9f91
commit 6acb40eed1
6 changed files with 135 additions and 4 deletions

2
.gitignore vendored
View File

@@ -4,6 +4,8 @@ node_modules
coverage/* coverage/*
npm-debug.log npm-debug.log
.vscode .vscode
.idea
js
# Elastic Beanstalk Files # Elastic Beanstalk Files
.elasticbeanstalk/* .elasticbeanstalk/*

107
package-lock.json generated
View File

@@ -26,6 +26,107 @@
"@turf/helpers": "6.x" "@turf/helpers": "6.x"
} }
}, },
"@types/body-parser": {
"version": "1.17.0",
"resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.17.0.tgz",
"integrity": "sha512-a2+YeUjPkztKJu5aIF2yArYFQQp8d51wZ7DavSHjFuY1mqVgidGyzEQ41JIVNy82fXj8yPgy2vJmfIywgESW6w==",
"dev": true,
"requires": {
"@types/connect": "*",
"@types/node": "*"
}
},
"@types/connect": {
"version": "3.4.32",
"resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.32.tgz",
"integrity": "sha512-4r8qa0quOvh7lGD0pre62CAb1oni1OO6ecJLGCezTmhQ8Fz50Arx9RUszryR8KlgK6avuSXvviL6yWyViQABOg==",
"dev": true,
"requires": {
"@types/node": "*"
}
},
"@types/cors": {
"version": "2.8.5",
"resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.5.tgz",
"integrity": "sha512-GmK8AKu8i+s+EChK/uZ5IbrXPcPaQKWaNSGevDT/7o3gFObwSUQwqb1jMqxuo+YPvj0ckGzINI+EO7EHcmJjKg==",
"dev": true,
"requires": {
"@types/express": "*"
}
},
"@types/dotenv": {
"version": "6.1.1",
"resolved": "https://registry.npmjs.org/@types/dotenv/-/dotenv-6.1.1.tgz",
"integrity": "sha512-ftQl3DtBvqHl9L16tpqqzA4YzCSXZfi7g8cQceTz5rOlYtk/IZbFjAv3mLOQlNIgOaylCQWQoBdDQHPgEBJPHg==",
"dev": true,
"requires": {
"@types/node": "*"
}
},
"@types/express": {
"version": "4.16.1",
"resolved": "https://registry.npmjs.org/@types/express/-/express-4.16.1.tgz",
"integrity": "sha512-V0clmJow23WeyblmACoxbHBu2JKlE5TiIme6Lem14FnPW9gsttyHtk6wq7njcdIWH1njAaFgR8gW09lgY98gQg==",
"dev": true,
"requires": {
"@types/body-parser": "*",
"@types/express-serve-static-core": "*",
"@types/serve-static": "*"
}
},
"@types/express-serve-static-core": {
"version": "4.16.4",
"resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.16.4.tgz",
"integrity": "sha512-x/8h6FHm14rPWnW2HP5likD/rsqJ3t/77OWx2PLxym0hXbeBWQmcPyHmwX+CtCQpjIfgrUdEoDFcLPwPZWiqzQ==",
"dev": true,
"requires": {
"@types/node": "*",
"@types/range-parser": "*"
}
},
"@types/mime": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/@types/mime/-/mime-2.0.1.tgz",
"integrity": "sha512-FwI9gX75FgVBJ7ywgnq/P7tw+/o1GUbtP0KzbtusLigAOgIgNISRK0ZPl4qertvXSIE8YbsVJueQ90cDt9YYyw==",
"dev": true
},
"@types/moment-timezone": {
"version": "0.5.12",
"resolved": "https://registry.npmjs.org/@types/moment-timezone/-/moment-timezone-0.5.12.tgz",
"integrity": "sha512-hnHH2+Efg2vExr/dSz+IX860nSiyk9Sk4pJF2EmS11lRpMcNXeB4KBW5xcgw2QPsb9amTXdsVNEe5IoJXiT0uw==",
"dev": true,
"requires": {
"moment": ">=2.14.0"
}
},
"@types/node": {
"version": "10.14.6",
"resolved": "https://registry.npmjs.org/@types/node/-/node-10.14.6.tgz",
"integrity": "sha512-Fvm24+u85lGmV4hT5G++aht2C5I4Z4dYlWZIh62FAfFO/TfzXtPpoLI6I7AuBWkIFqZCnhFOoTT7RjjaIL5Fjg==",
"dev": true
},
"@types/range-parser": {
"version": "1.2.3",
"resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.3.tgz",
"integrity": "sha512-ewFXqrQHlFsgc09MK5jP5iR7vumV/BYayNC6PgJO2LPe8vrnNFyjQjSppfEngITi0qvfKtzFvgKymGheFM9UOA==",
"dev": true
},
"@types/serve-static": {
"version": "1.13.2",
"resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.13.2.tgz",
"integrity": "sha512-/BZ4QRLpH/bNYgZgwhKEh+5AsboDBcUdlBYgzoLX0fpj3Y2gp6EApyOlM3bK53wQS/OE1SrdSYBAbux2D1528Q==",
"dev": true,
"requires": {
"@types/express-serve-static-core": "*",
"@types/mime": "*"
}
},
"@types/suncalc": {
"version": "1.8.0",
"resolved": "https://registry.npmjs.org/@types/suncalc/-/suncalc-1.8.0.tgz",
"integrity": "sha512-1Bx7KgoCLP8LuKaY9whWiX0Y8JMEB9gmZHNJigainwFuv3gEkZvTx0AGNvnA5nSu1daQcJDKScm9tNpW/ZjpjA==",
"dev": true
},
"abbrev": { "abbrev": {
"version": "1.1.1", "version": "1.1.1",
"resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz",
@@ -5755,6 +5856,12 @@
"resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz",
"integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=" "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c="
}, },
"typescript": {
"version": "3.4.5",
"resolved": "https://registry.npmjs.org/typescript/-/typescript-3.4.5.tgz",
"integrity": "sha512-YycBxUb49UUhdNMU5aJ7z5Ej2XGmaIBL0x34vZ82fn3hGvD+bgrMrVDpatgz2f7YxUMJxMkbWxJZeAvDxVe7Vw==",
"dev": true
},
"underscore.string": { "underscore.string": {
"version": "3.3.5", "version": "3.3.5",
"resolved": "https://registry.npmjs.org/underscore.string/-/underscore.string-3.3.5.tgz", "resolved": "https://registry.npmjs.org/underscore.string/-/underscore.string-3.3.5.tgz",

View File

@@ -5,7 +5,8 @@
"repository": "https://github.com/OpenSprinkler/Weather-Weather", "repository": "https://github.com/OpenSprinkler/Weather-Weather",
"scripts": { "scripts": {
"test": "mocha --exit test", "test": "mocha --exit test",
"start": "node server" "start": "node js/server",
"compile": "tsc"
}, },
"dependencies": { "dependencies": {
"cors": "^2.8.5", "cors": "^2.8.5",
@@ -17,11 +18,18 @@
"suncalc": "^1.8.0" "suncalc": "^1.8.0"
}, },
"devDependencies": { "devDependencies": {
"@types/cors": "^2.8.5",
"@types/dotenv": "^6.1.1",
"@types/express": "^4.16.1",
"@types/moment-timezone": "^0.5.12",
"@types/node": "^10.14.6",
"@types/suncalc": "^1.8.0",
"chai": "^4.2.0", "chai": "^4.2.0",
"grunt-contrib-jshint": "^1.1.0", "grunt-contrib-jshint": "^1.1.0",
"hippie": "^0.5.2", "hippie": "^0.5.2",
"istanbul": "^0.4.5", "istanbul": "^0.4.5",
"mocha": "^5.2.0", "mocha": "^5.2.0",
"nock": "^9.6.1" "nock": "^9.6.1",
"typescript": "^3.4.5"
} }
} }

4
routes/weather.js → routes/weather.ts Executable file → Normal file
View File

@@ -192,7 +192,7 @@ function calculateWeatherScale( adjustmentMethod, adjustmentOptions, weather ) {
} }
// Apply all of the weather modifying factors and clamp the result between 0 and 200%. // Apply all of the weather modifying factors and clamp the result between 0 and 200%.
return parseInt( Math.min( Math.max( 0, 100 + humidityFactor + tempFactor + precipFactor ), 200 ) ); return Math.floor( Math.min( Math.max( 0, 100 + humidityFactor + tempFactor + precipFactor ), 200 ) );
} }
return -1; return -1;
@@ -305,7 +305,7 @@ exports.getWateringData = function( req, res ) {
var data = { var data = {
scale: scale, scale: scale,
rd: rainDelay, rd: rainDelay,
tz: getTimezone( weather.timezone ), tz: getTimezone( weather.timezone, undefined ),
sunrise: weather.sunrise, sunrise: weather.sunrise,
sunset: weather.sunset, sunset: weather.sunset,
eip: ipToInt( remoteAddress ), eip: ipToInt( remoteAddress ),

0
server.js → server.ts Executable file → Normal file
View File

14
tsconfig.json Normal file
View File

@@ -0,0 +1,14 @@
{
"compilerOptions": {
"target": "es6",
"noImplicitReturns": true,
"noEmitOnError": true,
"outDir": "js/",
"sourceMap": true,
"skipLibCheck": true
},
"include": [
"server.ts",
"routes/**/*"
]
}