diff --git a/.travis.yml b/.travis.yml index d52b4ec0b..d72f00fcf 100644 --- a/.travis.yml +++ b/.travis.yml @@ -3,9 +3,7 @@ language: node_js sudo: false node_js: - - "10" - "11.15" - - "latest" branches: only: @@ -14,9 +12,12 @@ branches: script: - npm run build - - npm test + - npm test -- --ci --coverage env: global: - APP_MOUNT_URI="/" - API_URI="/graphql/" + +after_success: + - codecov diff --git a/package-lock.json b/package-lock.json index c30cdf2d8..7fadf7fc7 100644 --- a/package-lock.json +++ b/package-lock.json @@ -4320,6 +4320,15 @@ "integrity": "sha512-4diPfzWbLEIElVG4AnqP+00SULlPzNuyJFNnmMrLgyaxG6tZXJ1sn7mjBu4fHrJE+Yp/jgylOweJn2xsLMFggQ==", "dev": true }, + "agent-base": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-4.3.0.tgz", + "integrity": "sha512-salcGninV0nPrwpGNn4VTXBb1SOuXQBiqbrNXoeizJsHrsL6ERFM2Ne3JUSBWRE6aeNJI2ROP/WEEIDUiDe3cg==", + "dev": true, + "requires": { + "es6-promisify": "^5.0.0" + } + }, "airbnb-js-shims": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/airbnb-js-shims/-/airbnb-js-shims-2.2.0.tgz", @@ -5248,6 +5257,12 @@ "sprintf-js": "~1.0.2" } }, + "argv": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/argv/-/argv-0.0.2.tgz", + "integrity": "sha1-7L0W+JSbFXGDcRsb2jNPN4QBhas=", + "dev": true + }, "arr-diff": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", @@ -9154,6 +9169,19 @@ "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=" }, + "codecov": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/codecov/-/codecov-3.5.0.tgz", + "integrity": "sha512-/OsWOfIHaQIr7aeZ4pY0UC1PZT6kimoKFOFYFNb6wxo3iw12nRrh+mNGH72rnXxNsq6SGfesVPizm/6Q3XqcFQ==", + "dev": true, + "requires": { + "argv": "^0.0.2", + "ignore-walk": "^3.0.1", + "js-yaml": "^3.13.1", + "teeny-request": "^3.11.3", + "urlgrey": "^0.4.4" + } + }, "coffeescript": { "version": "2.4.1", "resolved": "https://registry.npmjs.org/coffeescript/-/coffeescript-2.4.1.tgz", @@ -10917,6 +10945,21 @@ "integrity": "sha512-xi6hh6gsvDE0MaW4Vp1lgNEBpVcCXRWfPXj5egDvtgLz4L9MEvNwYEMdJH+JJinWkwa8c3c3o5HduV7dB/e1Hw==", "dev": true }, + "es6-promise": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz", + "integrity": "sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==", + "dev": true + }, + "es6-promisify": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/es6-promisify/-/es6-promisify-5.0.0.tgz", + "integrity": "sha1-UQnWLz5W6pZ8S2NQWu8IKRyKUgM=", + "dev": true, + "requires": { + "es6-promise": "^4.0.3" + } + }, "es6-shim": { "version": "0.35.5", "resolved": "https://registry.npmjs.org/es6-shim/-/es6-shim-0.35.5.tgz", @@ -14339,6 +14382,33 @@ "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=", "dev": true }, + "https-proxy-agent": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-2.2.2.tgz", + "integrity": "sha512-c8Ndjc9Bkpfx/vCJueCPy0jlP4ccCCSNDp8xwCZzPjKJUm+B+u9WX2x98Qx4n1PiMNTWo3D7KK5ifNV/yJyRzg==", + "dev": true, + "requires": { + "agent-base": "^4.3.0", + "debug": "^3.1.0" + }, + "dependencies": { + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + } + } + }, "hyperlinker": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/hyperlinker/-/hyperlinker-1.0.0.tgz", @@ -14402,6 +14472,15 @@ "integrity": "sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug==", "dev": true }, + "ignore-walk": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-3.0.1.tgz", + "integrity": "sha512-DTVlMx3IYPe0/JJcYP7Gxg7ttZZu3IInhuEhbchuqneY9wWe5Ojy2mXLBaQFUQmo0AW2r3qG7m1mg86js+gnlQ==", + "dev": true, + "requires": { + "minimatch": "^3.0.4" + } + }, "immer": { "version": "1.10.0", "resolved": "https://registry.npmjs.org/immer/-/immer-1.10.0.tgz", @@ -16192,6 +16271,16 @@ "verror": "1.10.0" } }, + "jss": { + "version": "9.8.7", + "resolved": "https://registry.npmjs.org/jss/-/jss-9.8.7.tgz", + "integrity": "sha512-awj3XRZYxbrmmrx9LUSj5pXSUfm12m8xzi/VKeqI1ZwWBtQ0kVPTs3vYs32t4rFw83CgFDukA8wKzOE9sMQnoQ==", + "requires": { + "is-in-browser": "^1.1.3", + "symbol-observable": "^1.1.0", + "warning": "^3.0.0" + } + }, "jss-camel-case": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/jss-camel-case/-/jss-camel-case-6.1.0.tgz", @@ -20621,11 +20710,6 @@ } } }, - "react-router-navigation-prompt": { - "version": "1.8.7", - "resolved": "https://registry.npmjs.org/react-router-navigation-prompt/-/react-router-navigation-prompt-1.8.7.tgz", - "integrity": "sha512-tIB1wga4bG7BmqQ/rwJLJRc6r8/RgrQSnr4EIax6OowT/n8uK7BWrDkhEoCoxhiTogoZmuxoxK9bIA3aJsdGHw==" - }, "react-side-effect": { "version": "1.1.5", "resolved": "https://registry.npmjs.org/react-side-effect/-/react-side-effect-1.1.5.tgz", @@ -22870,6 +22954,31 @@ "integrity": "sha512-dQRhbNQkRnaqauC7WqSJ21EEksgT0fYZX2lqXzGkpo8JNig9zGZTYoMGvyI2nWmXlE2VSVXVDu7wLVGu/mQEsg==", "dev": true }, + "teeny-request": { + "version": "3.11.3", + "resolved": "https://registry.npmjs.org/teeny-request/-/teeny-request-3.11.3.tgz", + "integrity": "sha512-CKncqSF7sH6p4rzCgkb/z/Pcos5efl0DmolzvlqRQUNcpRIruOhY9+T1FsIlyEbfWd7MsFpodROOwHYh2BaXzw==", + "dev": true, + "requires": { + "https-proxy-agent": "^2.2.1", + "node-fetch": "^2.2.0", + "uuid": "^3.3.2" + }, + "dependencies": { + "node-fetch": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.0.tgz", + "integrity": "sha512-8dG4H5ujfvFiqDmVu9fQ5bOHUC15JMjMY/Zumv26oOvvVJjM67KF8koCWIabKQ1GJIa9r2mMZscBq/TbdOcmNA==", + "dev": true + }, + "uuid": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz", + "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==", + "dev": true + } + } + }, "telejson": { "version": "2.2.2", "resolved": "https://registry.npmjs.org/telejson/-/telejson-2.2.2.tgz", @@ -24703,6 +24812,12 @@ "resolved": "https://registry.npmjs.org/url-to-options/-/url-to-options-1.0.1.tgz", "integrity": "sha1-FQWgOiiaSMvXpDTvuu7FBV9WM6k=" }, + "urlgrey": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/urlgrey/-/urlgrey-0.4.4.tgz", + "integrity": "sha1-iS/pWWCAXoVRnxzUOJ8stMu3ZS8=", + "dev": true + }, "urllite": { "version": "0.5.0", "resolved": "https://registry.npmjs.org/urllite/-/urllite-0.5.0.tgz", diff --git a/package.json b/package.json index 1ddc9ad52..93e383c61 100644 --- a/package.json +++ b/package.json @@ -60,7 +60,6 @@ "react-moment": "^0.7.9", "react-router": "^5.0.1", "react-router-dom": "^5.0.1", - "react-router-navigation-prompt": "^1.8.7", "react-sortable-hoc": "^0.6.8", "react-sortable-tree": "^2.6.2", "react-svg": "^2.2.11", @@ -82,29 +81,30 @@ "@storybook/react": "^5.1.9", "@testing-library/react-hooks": "^1.1.0", "@types/classnames": "^2.2.9", + "@types/draft-js": "^0.10.34", "@types/enzyme": "^3.10.2", "@types/fuzzaldrin": "^2.1.2", + "@types/i18next": "^8.4.6", + "@types/jest": "^23.3.14", "@types/lodash-es": "^4.17.3", "@types/moment-timezone": "^0.5.12", + "@types/react": "16.8.12", + "@types/react-dom": "^16.8.4", "@types/react-dropzone": "^4.2.2", "@types/react-helmet": "^5.0.8", "@types/react-infinite-scroller": "^1.2.1", + "@types/react-router-dom": "^4.3.4", "@types/react-sortable-hoc": "^0.6.5", "@types/react-sortable-tree": "^0.3.6", + "@types/react-test-renderer": "^16.8.2", "@types/storybook__addon-storyshots": "^3.4.9", + "@types/storybook__react": "^4.0.2", "@types/string-similarity": "^1.2.1", "@types/url-join": "^0.8.3", - "@types/draft-js": "^0.10.34", - "@types/i18next": "^8.4.6", - "@types/jest": "^23.3.14", - "@types/react": "16.8.12", - "@types/react-dom": "^16.8.4", - "@types/react-router-dom": "^4.3.4", - "@types/react-test-renderer": "^16.8.2", - "@types/storybook__react": "^4.0.2", "babel-core": "^7.0.0-bridge.0", "babel-jest": "^23.6.0", "babel-loader": "^8.0.6", + "codecov": "^3.5.0", "enzyme": "^3.10.0", "enzyme-adapter-react-16": "^1.14.0", "enzyme-to-json": "^3.3.5", @@ -165,7 +165,8 @@ ], "moduleNameMapper": { "@assets(.*)$": "/assets/$1", - "@saleor(.*)$": "/src/$1" + "@saleor(.*)$": "/src/$1", + "^lodash-es(.*)$": "lodash/$1" } }, "scripts": { diff --git a/tsconfig.json b/tsconfig.json index b6fe58c9d..0962d2367 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -9,8 +9,8 @@ "noUnusedLocals": true, "noUnusedParameters": true, "paths": { - "@assets/*": ["./assets/*"], - "@saleor/*": ["./src/*"] + "@assets/*": ["assets/*"], + "@saleor/*": ["src/*"] } }, "exclude": ["node_modules"] diff --git a/webpack.config.js b/webpack.config.js index 5ad21bb9e..80801ca36 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -24,6 +24,8 @@ const environmentPlugin = new webpack.EnvironmentPlugin([ "API_URI" ]); +const dashboardBuildPath = "build/dashboard/"; + module.exports = (env, argv) => { const devMode = argv.mode !== "production"; @@ -33,7 +35,7 @@ module.exports = (env, argv) => { if (!devMode) { const publicPath = process.env.STATIC_URL || "/static/"; output = { - path: resolve("build/dashboard/"), + path: resolve(dashboardBuildPath), filename: "[name].[chunkhash].js", chunkFilename: "[name].[chunkhash].js", publicPath @@ -41,7 +43,7 @@ module.exports = (env, argv) => { fileLoaderPath = "file-loader?name=[name].[hash].[ext]"; } else { output = { - path: resolve("build/dashboard/"), + path: resolve(dashboardBuildPath), filename: "[name].js", chunkFilename: "[name].js", publicPath: "/" @@ -51,7 +53,7 @@ module.exports = (env, argv) => { return { devServer: { - contentBase: path.join(__dirname, "build/dashboard/"), + contentBase: path.join(__dirname, dashboardBuildPath), compress: true, historyApiFallback: true, hot: true,