{
  "name": "pipelines-frontend",
  "version": "0.1.0",
  "private": true,
  "dependencies": {
    "@craco/craco": "^6.2.0",
    "@material-ui/core": "^3.9.1",
    "@material-ui/icons": "^3.0.1",
    "@types/lodash.groupby": "^4.6.6",
    "@types/pako": "^1.0.3",
    "brace": "^0.11.1",
    "d3": "^5.7.0",
    "d3-dsv": "^1.0.10",
    "dagre": "^0.8.2",
    "google-protobuf": "^3.11.2",
    "grpc-web": "^1.2.1",
    "http-proxy-middleware": "^0.19.0",
    "immer": "^9.0.6",
    "js-yaml": "^3.14.1",
    "lodash": "^4.17.21",
    "lodash.debounce": "^4.0.8",
    "lodash.flatten": "^4.4.0",
    "lodash.groupby": "^4.6.0",
    "lodash.isfunction": "^3.0.9",
    "markdown-to-jsx": "^6.10.3",
    "pako": "^2.0.4",
    "portable-fetch": "^3.0.0",
    "proto3-json-serializer": "^0.1.6",
    "protobufjs": "~6.11.2",
    "re-resizable": "^4.9.0",
    "react": "^16.12.0",
    "react-ace": "^7.0.2",
    "react-dom": "^16.12.0",
    "react-dropzone": "^5.1.0",
    "react-flow-renderer": "^9.6.3",
    "react-query": "^3.16.0",
    "react-router-dom": "^4.3.1",
    "react-svg-line-chart": "^2.0.2",
    "react-textarea-autosize": "^8.3.3",
    "react-virtualized": "^9.20.1",
    "react-vis": "^1.11.2",
    "request": "^2.88.2",
    "runtypes": "^6.3.0",
    "ts-proto": "^1.95.0",
    "typestyle": "^2.0.4"
  },
  "scripts": {
    "analyze-bundle": "node analyze_bundle.js",
    "apis": "npm run apis:experiment && npm run apis:job && npm run apis:pipeline && npm run apis:run && npm run apis:filter && npm run apis:visualization && npm run apis:auth",
    "apis:experiment": "java -jar swagger-codegen-cli.jar generate -i ../backend/api/swagger/experiment.swagger.json -l typescript-fetch -o ./src/apis/experiment -c ./swagger-config.json",
    "apis:job": "java -jar swagger-codegen-cli.jar generate -i ../backend/api/swagger/job.swagger.json -l typescript-fetch -o ./src/apis/job -c ./swagger-config.json",
    "apis:pipeline": "java -jar swagger-codegen-cli.jar generate -i ../backend/api/swagger/pipeline.swagger.json -l typescript-fetch -o ./src/apis/pipeline -c ./swagger-config.json",
    "apis:run": "java -jar swagger-codegen-cli.jar generate -i ../backend/api/swagger/run.swagger.json -l typescript-fetch -o ./src/apis/run -c ./swagger-config.json",
    "apis:filter": "java -jar swagger-codegen-cli.jar generate -i ../backend/api/swagger/filter.swagger.json -l typescript-fetch -o ./src/apis/filter -c ./swagger-config.json",
    "apis:visualization": "java -jar swagger-codegen-cli.jar generate -i ../backend/api/swagger/visualization.swagger.json -l typescript-fetch -o ./src/apis/visualization -c ./swagger-config.json",
    "apis:auth": "java -jar swagger-codegen-cli.jar generate -i ../backend/api/swagger/auth.swagger.json -l typescript-fetch -o ./server/src/generated/apis/auth -c ./swagger-config.json",
    "build:tailwind": "npx tailwindcss build -i src/tailwind.css -o src/build/tailwind.output.css",
    "prestart": "npm run build:tailwind",
    "prebuild": "npm run build:tailwind",
    "build": "npm run lint && EXTEND_ESLINT=true react-scripts build",
    "build:protos": "cd .. && node frontend/scripts/gen_grpc_web_protos.js",
    "build:replace": "node scripts/replace_protos.js",
    "build:pipeline-spec": "bash ./scripts/pipelinespec.sh",
    "docker": "COMMIT_HASH=`git rev-parse HEAD`; docker build -q -t ml-pipelines-frontend:${COMMIT_HASH} --build-arg COMMIT_HASH=${COMMIT_HASH} --build-arg DATE=\"`date -u`\" -f Dockerfile ..",
    "eject": "react-scripts eject",
    "format": "prettier --write './**/*.{ts,tsx}'",
    "format:check": "prettier --check './**/*.{ts,tsx}' || node ./scripts/check-format-error-info.js",
    "gen-licenses": "node gen_licenses . && node gen_licenses server && rm dependency-licenses.txt && rm server/dependency-licenses.txt",
    "java": "java -version",
    "lint": "eslint --ext js,ts,tsx src --max-warnings=0",
    "mock:api": "ts-node-dev -O '{\"module\": \"commonjs\"}' --project mock-backend/tsconfig.json -r tsconfig-paths/register mock-backend/mock-api-server.ts 3001",
    "mock:server": "node server/dist/server.js build",
    "mock:server:inspect": "node inspect server/dist/server.js build",
    "postinstall": "cd ./server && npm ci && cd ../mock-backend && npm ci",
    "start:proxy": "./scripts/start-proxy.sh",
    "start:proxy-and-server": "./scripts/start-proxy-and-server.sh",
    "start:proxy-and-server-inspect": "./scripts/start-proxy-and-server.sh --inspect",
    "start": "EXTEND_ESLINT=true react-scripts start",
    "sync-backend-sample-config": "node scripts/sync-backend-sample-config.js",
    "pretest": "npm run build:tailwind",
    "test": "LC_ALL=\"en_US.UTF-8\" react-scripts test --env=jsdom",
    "test:server:coverage": "cd ./server && npm test -- --coverage && cd ..",
    "test:coverage": "npm test -- --coverage && npm run test:server:coverage",
    "test:ci": "export CI=true && npm run format:check && npm run lint && npm run test:coverage",
    "test:ci:prow": "npm set unsafe-perm true && npm ci && npm run test:ci && ./scripts/report-coveralls.sh",
    "storybook": "start-storybook -p 6006 -s public",
    "build:storybook": "build-storybook -s public"
  },
  "devDependencies": {
    "@google-cloud/storage": "^4.1.3",
    "@storybook/addon-actions": "^6.3.6",
    "@storybook/addon-essentials": "^6.3.6",
    "@storybook/addon-links": "^6.3.6",
    "@storybook/node-logger": "^6.3.6",
    "@storybook/preset-create-react-app": "^3.2.0",
    "@storybook/react": "^6.3.6",
    "@testing-library/dom": "^8.6.0",
    "@testing-library/react": "^11.2.6",
    "@testing-library/user-event": "^13.2.1",
    "@types/d3": "^5.0.0",
    "@types/d3-dsv": "^1.0.33",
    "@types/dagre": "^0.7.40",
    "@types/enzyme": "^3.10.3",
    "@types/enzyme-adapter-react-16": "^1.0.5",
    "@types/express": "^4.16.0",
    "@types/google-protobuf": "^3.7.2",
    "@types/http-proxy-middleware": "^0.17.5",
    "@types/jest": "^27.5.1",
    "@types/js-yaml": "^3.12.3",
    "@types/lodash": ">=4.14.117",
    "@types/markdown-to-jsx": "^6.9.0",
    "@types/node": "^10.17.60",
    "@types/prettier": "^1.19.0",
    "@types/react": "^16.9.22",
    "@types/react-dom": "^16.9.5",
    "@types/react-router-dom": "^4.3.1",
    "@types/react-test-renderer": "^16.0.2",
    "@types/react-virtualized": "^9.18.7",
    "autoprefixer": "^10.4.1",
    "browserslist": "4.16.5",
    "coveralls": "^3.0.2",
    "enzyme": "^3.10.0",
    "enzyme-adapter-react-16": "^1.15.1",
    "enzyme-to-json": "^3.3.4",
    "fs": "0.0.1-security",
    "jest-environment-jsdom-sixteen": "^2.0.0",
    "postcss": "^8.4.5",
    "prettier": "1.19.1",
    "react-router-test-context": "^0.1.0",
    "react-scripts": "^5.0.0",
    "react-test-renderer": "^16.5.2",
    "snapshot-diff": "^0.6.1",
    "swagger-ts-client": "^0.9.6",
    "tailwindcss": "^3.0.11",
    "ts-node": "^7.0.1",
    "ts-node-dev": "^1.1.8",
    "tsconfig-paths": "^3.10.1",
    "tslint-config-prettier": "^1.18.0",
    "typescript": "^3.8.3",
    "webpack-bundle-analyzer": "^3.6.1",
    "yaml": "^2.0.0"
  },
  "homepage": "./",
  "jest": {
    "collectCoverageFrom": [
      "src/**/*.{ts,tsx}",
      "!src/**/*.d.ts",
      "!src/apis/**/*.ts",
      "!src/icons/*.tsx",
      "!src/third_party/*",
      "!src/index.tsx",
      "!src/CSSReset.tsx"
    ],
    "globalSetup": "./global-setup.js",
    "snapshotSerializers": [
      "./src/__serializers__/mock-function",
      "snapshot-diff/serializer.js",
      "enzyme-to-json/serializer"
    ]
  },
  "proxy": "http://localhost:3001",
  "browserslist": {
    "production": [
      ">0.2%",
      "not dead",
      "not op_mini all"
    ],
    "development": [
      "last 1 chrome version",
      "last 1 firefox version",
      "last 1 safari version"
    ]
  },
  "eslintConfig": {
    "overrides": [
      {
        "files": [
          "**/*.stories.*"
        ],
        "rules": {
          "import/no-anonymous-default-export": "off"
        }
      }
    ]
  }
}
