diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml new file mode 100644 index 0000000000..c66944451a --- /dev/null +++ b/.github/workflows/codeql-analysis.yml @@ -0,0 +1,54 @@ +name: "CodeQL" + +on: + push: + branches: [candidate, master] + pull_request: + # The branches below must be a subset of the branches above + branches: [candidate] + schedule: + - cron: '0 3 * * 3' + +jobs: + analyse: + name: Analyse + runs-on: ubuntu-latest + + steps: + - name: Checkout repository + uses: actions/checkout@v2 + with: + # We must fetch at least the immediate parents so that if this is + # a pull request then we can checkout the head. + fetch-depth: 2 + + # If this run was triggered by a pull request event, then checkout + # the head of the pull request instead of the merge commit. + - run: git checkout HEAD^2 + if: ${{ github.event_name == 'pull_request' }} + + # Initializes the CodeQL tools for scanning. + - name: Initialize CodeQL + uses: github/codeql-action/init@v1 + # Override language selection by uncommenting this and choosing your languages + # with: + # languages: go, javascript, csharp, python, cpp, java + + # Autobuild attempts to build any compiled languages (C/C++, C#, or Java). + # If this step fails, then you should remove it and run the build manually (see below) + - name: Autobuild + uses: github/codeql-action/autobuild@v1 + + # âšī¸ Command-line programs to run using the OS shell. + # đ https://git.io/JvXDl + + # âī¸ If the Autobuild fails above, remove it and uncomment the following three lines + # and modify them (or add more) to build your code if your project + # uses a compiled language + + #- run: | + # make bootstrap + # make release + + - name: Perform CodeQL Analysis + uses: github/codeql-action/analyze@v1 diff --git a/.github/workflows/shiftleft-analysis.yml b/.github/workflows/shiftleft-analysis.yml new file mode 100644 index 0000000000..831315f1ab --- /dev/null +++ b/.github/workflows/shiftleft-analysis.yml @@ -0,0 +1,36 @@ +# This workflow integrates ShiftLeft Scan with GitHub's code scanning feature +# ShiftLeft Scan is a free open-source security tool for modern DevOps teams +# Visit https://slscan.io/en/latest/integrations/code-scan for help +name: ShiftLeft Scan + +# This section configures the trigger for the workflow. Feel free to customize depending on your convention +on: push + +jobs: + Scan-Build: + # Scan runs on ubuntu, mac and windows + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v1 + # Instructions + # 1. Setup JDK, Node.js, Python etc depending on your project type + # 2. Compile or build the project before invoking scan + # Example: mvn compile, or npm install or pip install goes here + # 3. Invoke ShiftLeft Scan with the github token. Leave the workspace empty to use relative url + + - name: Perform ShiftLeft Scan + uses: ShiftLeftSecurity/scan-action@master + env: + WORKSPACE: "" + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + SCAN_AUTO_BUILD: true + with: + output: reports + # Scan auto-detects the languages in your project. To override uncomment the below variable and set the type + # type: credscan,java + # type: python + + - name: Upload report + uses: github/codeql-action/upload-sarif@v1 + with: + sarif_file: reports diff --git a/anet.yml b/anet.yml index 5d1774242c..4e5ad0f072 100644 --- a/anet.yml +++ b/anet.yml @@ -225,35 +225,20 @@ dictionary: componentClass: textarea style: height: 400px - assessment: - customFields: - issues: - type: special_field - label: Top 3 issues - placeholder: Enter the top 3 issues - widget: richTextEditor - style: - height: 300px - validations: - - type: required - params: [You must provide the top 3 issues] - status: - type: enum - label: Project status - helpText: Select an assessement status for objective - choices: - GREEN: - label: Green - color: '#c2ffb3' - AMBER: - label: Amber - color: '#ffe396' - RED: - label: Red - color: '#ff8279' - validations: - - type: required - params: [You must provide the assessment status] + assessments: + - recurrence: semiannualy + questions: + issues: + type: special_field + label: Top 3 issues + placeholder: Enter the top 3 issues + widget: richTextEditor + style: + height: 300px + validations: + - type: required + params: [You must provide the top 3 issues] + subLevel: shortLabel: Effort shortName: @@ -266,19 +251,48 @@ dictionary: componentClass: textarea style: height: 400px - assessment: - customFields: - issues: - type: special_field - label: Top 3 issues - placeholder: Enter the top 3 issues - widget: richTextEditor - style: - height: 300px - validations: - - type: required - params: [You must provide the top 3 issues] - + assessments: + - recurrence: monthly + questions: + issues: + type: special_field + label: Top 3 issues + placeholder: Enter the top 3 issues + widget: richTextEditor + style: + height: 300px + validations: + - type: required + params: [You must provide the top 3 issues] + status: + type: enum + label: Project status + helpText: Select an assessment status for objective + choices: + GREEN: + label: Green + color: '#c2ffb3' + AMBER: + label: Amber + color: '#ffe396' + RED: + label: Red + color: '#ff8279' + validations: + - type: required + params: [You must provide the assessment status] + - recurrence: weekly + questions: + issues: + type: special_field + label: Top 3 issues + placeholder: Enter the top 3 issues + widget: richTextEditor + style: + height: 300px + validations: + - type: required + params: [You must provide the top 3 issues] customFieldRef1: label: Parent task placeholder: Start typing to search for a higher level task @@ -304,13 +318,49 @@ dictionary: label: Responsible positions placeholder: Search for a position... customFields: - assessmentDefinition: - type: text - label: Assessment definition - placeholder: JSON that defines the effort (you need to know what you are doing) - componentClass: textarea - style: - height: 200px + assessments: + type: array_of_objects + label: Assessments definition + addButtonLabel: Add an assessment + objectLabel: Assessment + objectFields: + recurrence: + type: enum + label: Recurrence + helpText: Select a recurrence for this periodic assessment + choices: + once: + label: once + daily: + label: daily + weekly: + label: weekly + biweekly: + label: biweekly + semimonthly: + label: semimonthly + monthly: + label: monthly + quarterly: + label: quarterly + semiannualy: + label: semiannualy + relatedObjectType: + type: enum + label: Related object type + helpText: object type context in which the assessment will be made + choices: + report: + label: Report + null: + label: None + questions: + type: text + label: Questions + placeholder: JSON that defines the assessment (you need to know what you are doing) + componentClass: textarea + style: + height: 200px report: intent: Engagement purpose @@ -372,6 +422,10 @@ dictionary: - color: lightGray endValue: 10 label: advanced advanced advanced advanced + trainingDate: + type: date + label: Training date + visibleWhen: $[?(@.multipleButtons && @.multipleButtons.indexOf('train') != -1)] systemProcess: type: enum label: System / process @@ -649,6 +703,64 @@ dictionary: - value: "3" label: three color: '#ff8279' + assessments: + - recurrence: quarterly + questions: + test1: + type: enum + label: Test question 1 + choices: + "1": + label: one + color: '#c2ffb3' + "2": + label: two + color: '#ffe396' + "3": + label: three + color: '#ff8279' + test2: + type: enum + label: Test question 2 + choices: + "3": + label: three + color: '#ff8279' + "4": + label: four + color: '#ffe396' + "5": + label: five + color: '#c2ffb3' + test3: + type: enum + label: Test question 3 + choices: + "1": + label: one + color: '#c2ffb3' + "2": + label: two + color: '#ff8279' + "3": + label: three + color: '#ff8279' + - recurrence: once + relatedObjectType: report + questions: + question1: + type: enum + label: Attendee involvement + choices: + "1": + label: low + color: '#c2ffb3' + "2": + label: medium + color: '#ffe396' + "3": + label: high + color: '#ff8279' position: name: Afghan Tashkil @@ -728,3 +840,6 @@ dictionary: - label: decisives data: /data/dashboards/decisives.json type: decisives + - label: process board + type: board + data: /data/dashboards/process.json diff --git a/build.gradle b/build.gradle index a4eed07f7f..2a98a14296 100644 --- a/build.gradle +++ b/build.gradle @@ -1,8 +1,8 @@ plugins { id "org.kordamp.markdown.convert" version "1.2.0" - id "com.bmuschko.docker-remote-api" version "6.4.0" + id "com.bmuschko.docker-remote-api" version "6.6.1" id "com.github.node-gradle.node" version "2.2.4" - id "com.diffplug.gradle.spotless" version "4.4.0" + id "com.diffplug.spotless" version "5.1.1" } apply plugin: 'java' @@ -60,11 +60,11 @@ repositories { // In this section you declare the dependencies for your production and test code dependencies { // The production code uses the SLF4J logging API at compile time - implementation 'io.dropwizard:dropwizard-core:2.0.10' - implementation 'io.dropwizard:dropwizard-jdbi3:2.0.10' - implementation 'io.dropwizard:dropwizard-migrations:2.0.10' - implementation 'io.dropwizard:dropwizard-auth:2.0.10' - implementation 'io.dropwizard:dropwizard-views-freemarker:2.0.10' + implementation 'io.dropwizard:dropwizard-core:2.0.12' + implementation 'io.dropwizard:dropwizard-jdbi3:2.0.12' + implementation 'io.dropwizard:dropwizard-migrations:2.0.12' + implementation 'io.dropwizard:dropwizard-auth:2.0.12' + implementation 'io.dropwizard:dropwizard-views-freemarker:2.0.12' implementation 'io.dropwizard-bundles:dropwizard-configurable-assets-bundle:1.3.5' implementation 'ru.vyarus.guicey:guicey-jdbi3:5.1.0-2' @@ -72,9 +72,9 @@ dependencies { implementation 'commons-collections:commons-collections:3.2.2' // Supported databases: - implementation 'com.microsoft.sqlserver:mssql-jdbc:8.2.2.jre8' + implementation 'com.microsoft.sqlserver:mssql-jdbc:8.4.0.jre8' implementation 'org.postgresql:postgresql:42.2.14' // If using postgresql - implementation 'org.liquibase:liquibase-core:3.10.0' + implementation 'org.liquibase:liquibase-core:4.0.0' // For caching domain users (used in every request in the AuthenticationFilter) implementation 'org.ehcache:ehcache:3.8.1' @@ -88,12 +88,13 @@ dependencies { implementation 'com.github.waffle:waffle-jna:1.9.1' implementation 'com.graphql-java:java-dataloader:2.2.3' implementation 'io.leangen.graphql:spqr:0.10.1' - implementation 'com.googlecode.owasp-java-html-sanitizer:owasp-java-html-sanitizer:20200615.1' + implementation 'com.googlecode.owasp-java-html-sanitizer:owasp-java-html-sanitizer:20200713.1' + implementation 'com.mikesamuel:json-sanitizer:1.2.1' // Used for converting GraphQL request output to XML: implementation 'com.github.javadev:underscore-lodash:1.26' // For JSON schema validation - implementation 'com.networknt:json-schema-validator:1.0.41' + implementation 'com.networknt:json-schema-validator:1.0.42' // used for writing Excel documents implementation 'org.apache.poi:poi:4.1.2' @@ -105,8 +106,8 @@ dependencies { // For fast and simple image scaling implementation 'net.coobird:thumbnailator:0.4.11' - testImplementation 'io.dropwizard:dropwizard-testing:2.0.10' - testImplementation 'io.dropwizard:dropwizard-client:2.0.10' + testImplementation 'io.dropwizard:dropwizard-testing:2.0.12' + testImplementation 'io.dropwizard:dropwizard-client:2.0.12' testImplementation 'org.apache.commons:commons-io:1.3.2' testImplementation 'org.assertj:assertj-core:3.16.1' @@ -429,7 +430,8 @@ task dbMaintenance(dependsOn: 'compileJava', type: JavaExec) { args cmdline } -classes.dependsOn buildClient +jar.dependsOn buildClient +run.dependsOn buildClient //Configure the Java Checkstyle settings. Run with ./gradlew check checkstyle { diff --git a/client/config/wdio.config.js b/client/config/wdio.config.js index 9d39b8f341..029fd8e718 100644 --- a/client/config/wdio.config.js +++ b/client/config/wdio.config.js @@ -100,9 +100,7 @@ const config = { // // A key-value store of headers to be added to every selenium request. Values must be strings. Type: Object // Default: None - headers: { - Authorization: "Basic ZXJpbjplcmlu" - }, + // headers: {}, // // Default timeout for all waitFor* commands. waitforTimeout: 10000, diff --git a/client/config/webpack.client.dev.js b/client/config/webpack.client.dev.js index a1f89da7fc..76bc92b8e3 100644 --- a/client/config/webpack.client.dev.js +++ b/client/config/webpack.client.dev.js @@ -4,7 +4,7 @@ const HtmlWebpackPlugin = require("html-webpack-plugin") const common = require("./webpack.common.js") const paths = require("./paths") -module.exports = merge(common.clientConfig, { +module.exports = merge.merge(common.clientConfig, { resolve: { modules: [paths.appSrc, "node_modules", "platform/web-dev"] }, diff --git a/client/config/webpack.client.prod.js b/client/config/webpack.client.prod.js index cb1482c5e5..c4e2b540b3 100644 --- a/client/config/webpack.client.prod.js +++ b/client/config/webpack.client.prod.js @@ -7,7 +7,7 @@ const { CleanWebpackPlugin } = require("clean-webpack-plugin") const paths = require("./paths") const common = require("./webpack.common.js") -const clientConfig = merge(common.clientConfig, { +const clientConfig = merge.merge(common.clientConfig, { bail: true, devtool: "source-map", resolve: { diff --git a/client/config/webpack.common.js b/client/config/webpack.common.js index fc9514f785..ec96cc42cb 100644 --- a/client/config/webpack.common.js +++ b/client/config/webpack.common.js @@ -80,7 +80,7 @@ const commonConfig = { } module.exports = { - clientConfig: merge(commonConfig, { + clientConfig: merge.merge(commonConfig, { target: "web", entry: { anet: [require.resolve("./polyfills"), "./src/index.js"] @@ -115,7 +115,7 @@ module.exports = { ] }), - simConfig: merge(commonConfig, { + simConfig: merge.merge(commonConfig, { resolve: { modules: [paths.appSrc, "node_modules", "platform/node"] }, diff --git a/client/config/webpack.sim.dev.js b/client/config/webpack.sim.dev.js index 96a4023bea..ff0d1732b1 100644 --- a/client/config/webpack.sim.dev.js +++ b/client/config/webpack.sim.dev.js @@ -3,7 +3,7 @@ const webpack = require("webpack") const common = require("./webpack.common.js") const paths = require("./paths") -module.exports = merge(common.simConfig, { +module.exports = merge.merge(common.simConfig, { devtool: "eval-source-map", output: { pathinfo: true, diff --git a/client/package.json b/client/package.json index 44c33a7454..8664cc7ff2 100644 --- a/client/package.json +++ b/client/package.json @@ -4,66 +4,66 @@ "private": true, "homepage": "/assets/client", "devDependencies": { - "@babel/core": "7.10.3", - "@babel/plugin-proposal-class-properties": "7.10.1", - "@babel/plugin-proposal-decorators": "7.10.3", - "@babel/plugin-proposal-do-expressions": "7.10.1", - "@babel/plugin-proposal-export-default-from": "7.10.1", - "@babel/plugin-proposal-export-namespace-from": "7.10.1", - "@babel/plugin-proposal-function-sent": "7.10.1", - "@babel/plugin-proposal-json-strings": "7.10.1", - "@babel/plugin-proposal-logical-assignment-operators": "7.10.3", - "@babel/plugin-proposal-nullish-coalescing-operator": "7.10.1", - "@babel/plugin-proposal-numeric-separator": "7.10.1", - "@babel/plugin-proposal-optional-chaining": "7.10.3", - "@babel/plugin-proposal-pipeline-operator": "7.10.1", - "@babel/plugin-proposal-throw-expressions": "7.10.1", + "@babel/core": "7.11.1", + "@babel/eslint-parser": "7.11.0", + "@babel/plugin-proposal-class-properties": "7.10.4", + "@babel/plugin-proposal-decorators": "7.10.5", + "@babel/plugin-proposal-do-expressions": "7.10.4", + "@babel/plugin-proposal-export-default-from": "7.10.4", + "@babel/plugin-proposal-export-namespace-from": "7.10.4", + "@babel/plugin-proposal-function-sent": "7.10.4", + "@babel/plugin-proposal-json-strings": "7.10.4", + "@babel/plugin-proposal-logical-assignment-operators": "7.11.0", + "@babel/plugin-proposal-nullish-coalescing-operator": "7.10.4", + "@babel/plugin-proposal-numeric-separator": "7.10.4", + "@babel/plugin-proposal-optional-chaining": "7.11.0", + "@babel/plugin-proposal-pipeline-operator": "7.10.5", + "@babel/plugin-proposal-throw-expressions": "7.10.4", "@babel/plugin-syntax-dynamic-import": "7.8.3", - "@babel/plugin-syntax-import-meta": "7.10.1", - "@babel/plugin-transform-proto-to-assign": "7.10.1", - "@babel/preset-react": "7.10.1", - "@babel/register": "7.10.3", - "@babel/runtime": "7.10.3", + "@babel/plugin-syntax-import-meta": "7.10.4", + "@babel/plugin-transform-proto-to-assign": "7.10.5", + "@babel/preset-react": "7.10.4", + "@babel/register": "7.10.5", + "@babel/runtime": "7.11.2", "@storybook/addon-actions": "5.3.19", "@storybook/react": "5.3.19", "@wdio/browserstack-service": "6.1.15", - "@wdio/cli": "6.1.22", - "@wdio/local-runner": "6.1.22", - "@wdio/mocha-framework": "6.1.19", - "@wdio/spec-reporter": "6.1.14", - "@wdio/sync": "6.1.14", + "@wdio/cli": "6.3.6", + "@wdio/local-runner": "6.3.6", + "@wdio/mocha-framework": "6.3.6", + "@wdio/spec-reporter": "6.3.6", + "@wdio/sync": "6.3.6", "aigle": "1.14.1", - "autoprefixer": "9.8.4", - "ava": "3.9.0", - "babel-eslint": "10.1.0", - "babel-jest": "26.1.0", + "autoprefixer": "9.8.6", + "ava": "3.11.1", + "babel-jest": "26.2.2", "babel-loader": "8.1.0", "babel-preset-react-app": "9.1.2", "cache-loader": "4.1.0", "chai": "4.2.0", "chalk": "4.1.0", - "chromedriver": "83.0.0", + "chromedriver": "84.0.1", "clean-webpack-plugin": "3.0.0", "colors": "1.4.0", "config": "3.3.1", - "copy-webpack-plugin": "6.0.2", - "countries-list": "2.5.4", + "copy-webpack-plugin": "6.0.3", + "countries-list": "2.5.6", "cross-fetch": "3.0.5", "cross-spawn": "7.0.3", - "css-loader": "3.6.0", + "css-loader": "4.2.0", "dotenv": "8.2.0", - "eslint": "7.3.1", + "eslint": "7.6.0", "eslint-config-react-app": "5.2.1", "eslint-config-standard": "14.1.1", "eslint-config-standard-react": "9.2.0", "eslint-loader": "4.0.2", - "eslint-plugin-flowtype": "5.1.3", + "eslint-plugin-flowtype": "5.2.0", "eslint-plugin-import": "2.22.0", "eslint-plugin-jsx-a11y": "6.3.1", "eslint-plugin-node": "11.1.0", "eslint-plugin-promise": "4.2.1", - "eslint-plugin-react": "7.20.0", - "eslint-plugin-react-hooks": "4.0.4", + "eslint-plugin-react": "7.20.5", + "eslint-plugin-react-hooks": "4.0.8", "eslint-plugin-standard": "4.0.1", "faker": "https://github.com/Marak/faker.js.git", "file-loader": "6.0.0", @@ -74,7 +74,7 @@ "html-webpack-plugin": "4.3.0", "i18n-iso-countries": "6.0.0", "ignore-loader": "0.1.2", - "jest": "26.1.0", + "jest": "26.2.2", "js-yaml": "3.14.0", "json-loader": "0.5.7", "moment-timezone": "0.5.31", @@ -86,29 +86,35 @@ "style-loader": "1.2.1", "thread-loader": "2.1.3", "wdio-chromedriver-service": "6.0.3", - "webdriverio": "6.1.22", - "webpack": "4.43.0", + "webdriverio": "6.3.6", + "webpack": "4.44.1", "webpack-cli": "3.3.12", "webpack-dev-server": "3.11.0", - "webpack-merge": "4.2.2", + "webpack-merge": "5.1.1", "xhr2": "0.2.0" }, "dependencies": { - "@apollo/react-hooks": "3.1.5", - "@blueprintjs/core": "3.29.0", - "@blueprintjs/datetime": "3.18.3", + "@apollo/client": "3.1.2", + "@blueprintjs/core": "3.30.1", + "@blueprintjs/datetime": "3.18.5", + "@emotion/core": "10.0.28", + "@emotion/styled": "10.0.27", "@fullcalendar/core": "4.4.2", "@fullcalendar/daygrid": "4.4.2", "@fullcalendar/interaction": "4.4.2", "@fullcalendar/list": "4.4.2", "@fullcalendar/react": "4.4.2", "@fullcalendar/timegrid": "4.4.2", - "apollo-boost": "0.4.9", + "@projectstorm/react-diagrams-core": "6.2.0", + "@projectstorm/react-diagrams-defaults": "6.2.0", + "@projectstorm/react-diagrams-routing": "6.2.0", "bootstrap": "3.4.1", "change-case": "4.1.1", "classnames": "2.2.6", + "closest": "0.0.1", "core-js": "3.6.5", "d3": "5.16.0", + "dagre": "0.8.5", "draft-convert": "2.1.10", "draft-js": "0.10.5", "draft-js-buttons": "2.0.2", @@ -116,9 +122,9 @@ "draftail": "1.3.0", "email-addresses": "3.1.0", "file-saver": "2.0.2", - "formik": "2.1.4", + "formik": "2.1.5", "graphiql": "1.0.3", - "graphql": "15.1.0", + "graphql": "15.3.0", "hopscotch": "0.3.1", "html-react-parser": "0.13.0", "jsonpath-plus": "4.0.0", @@ -128,9 +134,13 @@ "leaflet-gesture-handling": "1.1.8", "leaflet.markercluster": "1.4.1", "locale-compare-polyfill": "0.0.2", - "lodash": "4.17.15", + "lodash": "4.17.19", + "mathjs": "7.1.0", "milsymbol": "2.0.0", + "ml-matrix": "6.5.1", "moment": "2.27.0", + "pathfinding": "0.4.18", + "paths-js": "0.4.11", "pluralize": "8.0.0", "prop-types": "15.7.2", "react": "16.13.1", @@ -139,34 +149,36 @@ "react-confirm-bootstrap": "5.3.1", "react-container-dimensions": "1.4.1", "react-dom": "16.13.1", + "react-moment-proptypes": "1.7.0", "react-mosaic-component": "3.2.0", "react-notification-badge": "1.5.1", - "react-redux": "7.2.0", - "react-redux-loading-bar": "4.6.0", + "react-redux": "7.2.1", + "react-redux-loading-bar": "5.0.0", "react-router-bootstrap": "0.25.0", "react-router-dom": "5.2.0", - "react-scroll": "1.7.16", + "react-scroll": "1.8.0", "react-svg-text": "0.1.2", "react-tag-input": "6.4.3", - "react-toastify": "6.0.6", - "react-tooltip": "4.2.7", + "react-toastify": "6.0.8", + "react-tooltip": "4.2.8", "react-ultimate-pagination": "1.2.0", "react-use-dimensions": "1.2.1", "redux": "4.0.5", "redux-persist": "6.0.0", - "use-debounce": "3.4.2", - "yup": "0.29.1" + "resize-observer-polyfill": "1.5.1", + "use-debounce": "3.4.3", + "yup": "0.29.3" }, "scripts": { "build": "NODE_ENV=production webpack --mode production --config config/webpack.client.prod.js", "start": "export SERVER_URL=${SERVER_URL:-'http://localhost:8080'} DEV_PORT=${DEV_PORT:-3000} ; NODE_ENV=development webpack-dev-server --mode development --open --config config/webpack.client.dev.js", - "lint": "eslint '*.js' 'config/**/*.js' 'platform/**/*.js' 'scripts/**/*.js' 'src/**/*.js' 'stories/**/*.js' 'tests/**/*.js'", - "lint-fix": "prettier --write '*.js' 'config/**/*.js' 'platform/**/*.js' 'scripts/**/*.js' 'src/**/*.js' 'stories/**/*.js' 'tests/**/*.js' && eslint --fix '*.js' 'config/**/*.js' 'platform/**/*.js' 'scripts/**/*.js' 'src/**/*.js' 'stories/**/*.js' 'tests/**/*.js'", + "lint": "NODE_ENV=development eslint '*.js' 'config/**/*.js' 'platform/**/*.js' 'scripts/**/*.js' 'src/**/*.js' 'stories/**/*.js' 'tests/**/*.js'", + "lint-fix": "prettier --write '*.js' 'config/**/*.js' 'platform/**/*.js' 'scripts/**/*.js' 'src/**/*.js' 'stories/**/*.js' 'tests/**/*.js' && NODE_ENV=development eslint --fix '*.js' 'config/**/*.js' 'platform/**/*.js' 'scripts/**/*.js' 'src/**/*.js' 'stories/**/*.js' 'tests/**/*.js'", "test": "echo 'Run \"test-all\" to execute all client-side tests, or pick a specific test target: \"test-jest\", \"test-wdio\", \"test-wdio-ie\", \"test-e2e\".' ; exit 1", "test-all": "yarn run test-jest && yarn run test-wdio && yarn run test-wdio-ie && yarn run test-e2e", "test-e2e": "export SERVER_URL=${SERVER_URL:-'http://localhost:8180'} ; NODE_ENV=test node $(npm bin)/ava --config ava.config.js", - "test-wdio": "export SERVER_URL=${SERVER_URL:-'http://localhost:8180'} ; wdio --baseUrl ${SERVER_URL} ./config/wdio.config.js", - "test-jest": "export ANET_CONFIG=../anet.yml ; jest --testPathPattern='tests/(actions|reducers)'", + "test-wdio": "export SERVER_URL=${SERVER_URL:-'http://localhost:8180'} ; NODE_ENV=test wdio --baseUrl ${SERVER_URL} ./config/wdio.config.js", + "test-jest": "export ANET_CONFIG=../anet.yml ; NODE_ENV=test jest --testPathPattern='tests/(actions|reducers)'", "test-wdio-ie": "export SERVER_URL=${SERVER_URL:-'http://localhost:8180'} ; NODE_ENV=test node ./tests/util/wdio.ie.js", "storybook": "start-storybook -p 9001 -c .storybook", "sim": "export ANET_CONFIG=../anet.yml SERVER_URL=${SERVER_URL:-'http://localhost:8080'} ; NODE_ENV=development webpack --mode development --config config/webpack.sim.dev.js && node build/anet.sim.dev.js" @@ -246,7 +258,7 @@ "globals": { "browser": "readonly" }, - "parser": "babel-eslint", + "parser": "@babel/eslint-parser", "plugins": [ "flowtype", "import", diff --git a/client/public/index.hbs b/client/public/index.hbs index 01db6e1af2..76c2483901 100644 --- a/client/public/index.hbs +++ b/client/public/index.hbs @@ -23,20 +23,9 @@
-