diff --git a/.flowconfig b/.flowconfig new file mode 100644 index 00000000..62f4cc32 --- /dev/null +++ b/.flowconfig @@ -0,0 +1,23 @@ +# https://flowtype.org/docs/advanced-configuration +[include] + +[ignore] +# Generate dirs. +/__dist/.* +/__obj/.* +/__test_cache/.* + +# + +[libs] + +[options] +module.system=node +module.system.node.resolve_dirname=node_modules + +munge_underscores=true + +suppress_comment= \\(.\\|\n\\)*\\$FlowFixMe + +[version] +^0.33.0 diff --git a/package.json b/package.json index ab178419..ab944038 100644 --- a/package.json +++ b/package.json @@ -22,7 +22,8 @@ "build_development": "cross-env NODE_ENV=development npm run build", "build": "gulp build", "test": "gulp test", - "gulp": "gulp" + "gulp": "gulp", + "flow": "flow" }, "keywords": [ "browser", @@ -77,8 +78,11 @@ "autoprefixer": "^6.5.0", "babel-cli": "^6.16.0", "babel-core": "^6.17.0", + "babel-eslint": "^7.0.0", "babel-loader": "^6.2.5", + "babel-plugin-syntax-flow": "^6.13.0", "babel-plugin-transform-es2015-modules-commonjs": "^6.16.0", + "babel-plugin-transform-flow-strip-types": "^6.14.0", "babel-plugin-transform-inline-environment-variables": "^6.8.0", "babel-plugin-transform-node-env-inline": "^6.8.0", "babel-plugin-transform-react-constant-elements": "^6.9.1", @@ -92,6 +96,7 @@ "eslint": "^3.7.0", "eslint-plugin-node": "^2.1.2", "eslint-plugin-react": "^6.3.0", + "flow-bin": "^0.33.0", "font-awesome": "^4.6.3", "glob": "^7.1.0", "gulp": "^3.9.1", diff --git a/src/server/.eslintrc.js b/src/server/.eslintrc.js index 046c9087..5d2d1f3b 100644 --- a/src/server/.eslintrc.js +++ b/src/server/.eslintrc.js @@ -29,13 +29,10 @@ // ESLint Configuration Files enables to include comments. // http://eslint.org/docs/configuring/#comments-in-configuration-files module.exports = { + 'parser': 'babel-eslint', 'parserOptions': { - 'ecmaVersion': 8, 'sourceType': 'module', - 'ecmaFeatures': { - 'jsx': true - }, }, 'settings': { diff --git a/src/server/models/Hostmask.js b/src/server/models/Hostmask.js index b34f6acb..daedfee8 100644 --- a/src/server/models/Hostmask.js +++ b/src/server/models/Hostmask.js @@ -23,13 +23,23 @@ * THE SOFTWARE. */ +// @flow + +type Args = { + nick: string, + username: string, + hostname: string, + string: string, +} + export class Hostmask { - /** - * @constructor - * @param {?} attr - */ - constructor(attr) { + nick: string; + username: string; + hostname: string; + string: string; + + constructor(attr: Args) { const data = Object.assign({ nick: '', username: '', diff --git a/tools/build/babelrc_for_server.js b/tools/build/babelrc_for_server.js index 2dea9765..a2b731db 100644 --- a/tools/build/babelrc_for_server.js +++ b/tools/build/babelrc_for_server.js @@ -20,6 +20,10 @@ module.exports = { // for React 'syntax-jsx', 'transform-react-jsx', + + // for flowtype + 'plugin-syntax-flow', + 'plugin-transform-flow-strip-types', ], 'env': {