{ "private": true, "description": "The Sourcegraph web app", "license": "Apache-2.0", "repository": { "type": "git", "url": "https://github.com/sourcegraph/sourcegraph" }, "engines": { "node": "^v16.7.0", "yarn": "^1.22.4" }, "scripts": { "prettier": "prettier '**/{*.{js?(on),ts?(x),graphql,md,scss},.*.js?(on)}' --write --list-different --config prettier.config.js", "prettier-check": "yarn -s run prettier --write=false --check --list-different=false --loglevel=warn", "all:eslint": "DOCSITE_LIST=\"$(./dev/docsite.sh -config doc/docsite.json ls)\" dev/foreach-ts-project.sh yarn -s run eslint --quiet", "all:stylelint": "yarn --cwd client/web run stylelint && yarn --cwd client/shared run stylelint && yarn --cwd client/branded run stylelint && yarn --cwd client/browser run stylelint && yarn --cwd client/wildcard run stylelint", "build-ts": "tsc -b tsconfig.all.json", "graphql-lint": "graphql-schema-linter", "build-web": "yarn workspace @sourcegraph/web run build", "watch-web": "yarn workspace @sourcegraph/web run watch", "generate": "gulp generate", "watch-generate": "gulp watchGenerate", "test": "jest --testPathIgnorePatterns end-to-end regression integration storybook /out/.*test.js", "test-integration:base": "TS_NODE_PROJECT=client/web/src/integration/tsconfig.json mocha --parallel=$CI --retries=1 --jobs=2", "test-integration": "yarn test-integration:base \"./client/web/src/integration/**/*.test.ts\"", "test-browser-integration": "yarn --cwd client/browser run test-integration", "cover-integration:base": "nyc --hook-require=false yarn test-integration:base", "cover-integration": "nyc --hook-require=false yarn test-integration", "cover-browser-integration": "nyc --hook-require=false yarn --cwd client/browser test-integration", "test-lighthouse": "SOURCEGRAPH_API_URL=https://sourcegraph.com lhci collect && lhci open", "test-e2e": "TS_NODE_PROJECT=client/web/src/end-to-end/tsconfig.json mocha ./client/web/src/end-to-end/end-to-end.test.ts", "cover-e2e": "nyc --hook-require=false --silent=true yarn test-e2e", "storybook": "yarn workspace @sourcegraph/storybook run start", "storybook:dll": "yarn workspace @sourcegraph/storybook run start:dll", "storybook:branded": "yarn workspace @sourcegraph/branded run storybook", "storybook:browser": "yarn workspace @sourcegraph/browser run storybook", "storybook:shared": "yarn workspace @sourcegraph/shared run storybook", "storybook:web": "yarn workspace @sourcegraph/web run storybook", "storybook:search-ui": "yarn workspace @sourcegraph/search-ui run storybook", "storybook:wildcard": "yarn workspace @sourcegraph/wildcard run storybook", "build-storybook": "yarn workspace @sourcegraph/storybook run build", "cover-storybook": "nyc --hook-require=false yarn jest client/storybook/src/coverage", "deduplicate": "yarn-deduplicate -s fewer", "release": "cd dev/release && yarn run release", "docsite:serve": "./dev/docsite.sh -config doc/docsite.json serve -http=localhost:5080", "build-browser-extension": "yarn --cwd client/browser run build", "install:sg": "dev/sg/install.sh", "optimize-svg-assets": "svgo --multipass --config=\"./svgo.config.js\"" }, "browserslist": [ "last 1 version", ">1%", "not dead", "not <0.25%", "last 1 Chrome versions", "last 3 Safari major versions", "not IE > 0" ], "nyc": { "extends": "@istanbuljs/nyc-config-typescript", "all": true, "extension": [ ".tsx", ".ts" ], "include": [ "client/*/src/**/*.ts?(x)" ], "exclude": [ "node_modules", "**/*.d.ts", "**/*.@(test|story).ts?(x)", "client/storybook", "client/shared/src/testing" ] }, "jscpd": { "gitignore": true, "ignore": [ "**/__snapshots__", "**/__fixtures__", "**/*.svg", "migrations", "browser/build", "ui", "**/assets" ] }, "workspaces": { "packages": [ "lib/codeintel/lsiftyped", "client/*", "client/sandboxes/*" ] }, "devDependencies": { "@atlassian/aui": "^7.10.1", "@babel/core": "^7.14.2", "@babel/plugin-proposal-decorators": "^7.14.2", "@babel/plugin-transform-typescript": "^7.13.0", "@babel/preset-env": "^7.14.2", "@babel/preset-typescript": "^7.13.0", "@babel/runtime": "^7.14.0", "@gql2ts/from-schema": "^1.10.1", "@gql2ts/language-typescript": "^1.9.0", "@gql2ts/types": "^1.9.0", "@graphql-codegen/cli": "^1.19.4", "@graphql-codegen/typescript": "1.17.9", "@graphql-codegen/typescript-apollo-client-helpers": "^1.1.9", "@graphql-codegen/typescript-operations": "1.17.8", "@istanbuljs/nyc-config-typescript": "^1.0.1", "@jest/types": "^27.5.1", "@lhci/cli": "0.8.1", "@mermaid-js/mermaid-cli": "^8.13.4", "@octokit/rest": "^16.36.0", "@peculiar/webcrypto": "^1.1.7", "@percy/cli": "^1.0.0-beta.68", "@percy/puppeteer": "^2.0.0", "@pmmmwh/react-refresh-webpack-plugin": "0.5.0-rc.1", "@pollyjs/adapter": "^5.0.0", "@pollyjs/core": "^5.1.0", "@pollyjs/persister-fs": "^5.0.0", "@slack/web-api": "^5.10.0", "@sourcegraph/eslint-config": "^0.27.0", "@sourcegraph/eslint-plugin-sourcegraph": "1.0.0", "@sourcegraph/eslint-plugin-wildcard": "1.0.0", "@sourcegraph/prettierrc": "^3.0.3", "@sourcegraph/stylelint-config": "^1.4.0", "@sourcegraph/tsconfig": "^4.0.1", "@statoscope/webpack-plugin": "^5.20.1", "@storybook/addon-a11y": "^6.3.12", "@storybook/addon-actions": "^6.3.12", "@storybook/addon-console": "^1.2.3", "@storybook/addon-knobs": "^6.3.1", "@storybook/addon-links": "^6.3.12", "@storybook/addon-storyshots": "^6.3.12", "@storybook/addon-storyshots-puppeteer": "^6.3.12", "@storybook/addon-toolbars": "^6.3.12", "@storybook/addons": "^6.3.12", "@storybook/api": "^6.3.12", "@storybook/builder-webpack5": "^6.3.12", "@storybook/client-api": "^6.3.12", "@storybook/components": "^6.3.12", "@storybook/core": "^6.3.12", "@storybook/core-events": "^6.3.12", "@storybook/manager-webpack5": "^6.3.12", "@storybook/react": "^6.3.12", "@storybook/theming": "^6.3.12", "@terminus-term/to-string-loader": "^1.1.7-beta.1", "@testing-library/dom": "^8.11.1", "@testing-library/jest-dom": "^5.11.9", "@testing-library/react": "^10.4.8", "@testing-library/react-hooks": "^3.4.1", "@testing-library/user-event": "^13.5.0", "@types/babel__core": "7.1.12", "@types/bloomfilter": "0.0.0", "@types/case-sensitive-paths-webpack-plugin": "2.1.5", "@types/chai": "4.2.14", "@types/chai-as-promised": "7.1.3", "@types/chrome": "0.0.127", "@types/classnames": "2.2.10", "@types/command-exists": "1.2.0", "@types/compression": "1.7.2", "@types/compression-webpack-plugin": "9.0.0", "@types/connect-history-api-fallback": "1.3.4", "@types/css-minimizer-webpack-plugin": "3.0.1", "@types/d3-axis": "1.0.12", "@types/d3-format": "2.0.0", "@types/d3-scale": "2.2.0", "@types/d3-selection": "1.4.1", "@types/d3-shape": "1.3.2", "@types/d3-time-format": "3.0.0", "@types/escape-html": "^1.0.1", "@types/expect": "24.3.0", "@types/express": "4.17.11", "@types/fancy-log": "1.3.1", "@types/glob": "7.1.3", "@types/got": "9.6.11", "@types/gulp": "4.0.7", "@types/highlight.js": "9.12.4", "@types/is-absolute-url": "3.0.0", "@types/jest": "27.4.0", "@types/js-cookie": "2.2.6", "@types/js-yaml": "4.0.3", "@types/jsdom": "12.2.4", "@types/lodash": "4.14.167", "@types/marked": "4.0.0", "@types/mime-types": "2.1.0", "@types/mini-css-extract-plugin": "2.0.1", "@types/mocha": "8.2.0", "@types/mockdate": "2.0.0", "@types/mz": "2.7.3", "@types/node": "13.13.5", "@types/node-fetch": "2.5.10", "@types/pollyjs__core": "4.3.1", "@types/pollyjs__persister-fs": "2.0.1", "@types/react": "17.0.0", "@types/react-circular-progressbar": "1.0.2", "@types/react-dom": "16.9.8", "@types/react-grid-layout": "1.3.0", "@types/react-router": "5.1.10", "@types/react-router-dom": "5.1.7", "@types/react-stripe-elements": "6.0.4", "@types/reactstrap": "8.4.2", "@types/recharts": "1.8.18", "@types/resize-observer-browser": "0.1.4", "@types/sanitize-html": "2.3.0", "@types/sass": "1.16.1", "@types/semver": "7.3.1", "@types/shelljs": "0.8.8", "@types/signale": "1.4.1", "@types/simmerjs": "0.5.1", "@types/sinon": "9.0.4", "@types/socket.io": "2.1.10", "@types/socket.io-client": "1.4.33", "@types/speed-measure-webpack-plugin": "1.3.4", "@types/terser-webpack-plugin": "5.0.4", "@types/testing-library__jest-dom": "5.9.5", "@types/textarea-caret": "3.0.0", "@types/uuid": "8.0.1", "@types/webpack-bundle-analyzer": "4.4.1", "@types/webpack-dev-server": "4.0.3", "@types/webpack-manifest-plugin": "3.0.5", "abort-controller": "^3.0.0", "autoprefixer": "^10.2.1", "babel-jest": "^25.5.1", "babel-loader": "^8.2.2", "babel-plugin-lodash": "^3.3.4", "babel-preset-react-app": "^10.0.0", "browserslist": "^4.17.4", "bundlesize2": "^0.0.31", "chai": "^4.2.0", "chai-as-promised": "^7.1.1", "chalk": "^4.1.0", "chokidar-cli": "^2.1.0", "chromatic": "^5.5.0", "chrome-webstore-upload-cli": "^1.2.0", "command-exists": "^1.2.9", "compression": "^1.7.4", "compression-webpack-plugin": "^9.0.0", "connect-history-api-fallback": "^1.6.0", "cross-env": "^7.0.2", "css-loader": "^5.2.6", "css-minimizer-webpack-plugin": "^3.0.2", "elm": "^0.19.1-3", "elm-webpack-loader": "^8.0.0", "esbuild": "^0.14.2", "eslint": "^7.17.0", "eslint-formatter-lsif": "^1.0.3", "eslint-plugin-monorepo": "^0.3.2", "execa": "^5.0.0", "express": "^4.17.1", "express-static-gzip": "^2.1.1", "fancy-log": "^1.3.3", "get-port": "^5.1.1", "glob": "^7.1.6", "google-protobuf": "3.17.3", "googleapis": "^47.0.0", "gql2ts": "^1.10.1", "graphql": "^15.4.0", "graphql-schema-linter": "^2.0.1", "gulp": "^4.0.2", "html-webpack-harddisk-plugin": "^2.0.0", "html-webpack-plugin": "^5.3.2", "http-proxy-middleware": "^1.1.2", "identity-obj-proxy": "^3.0.0", "jest": "^27.5.1", "jest-canvas-mock": "^2.3.0", "jest-environment-jsdom": "^27.5.1", "jest-fetch-mock": "^3.0.3", "jest-junit": "^13.0.0", "jest-mock-extended": "^2.0.2-beta2", "jsdom": "^16.7.0", "json-schema-ref-parser": "^9.0.6", "json-schema-to-typescript": "^10.1.3", "latest-version": "^5.1.0", "license-checker": "^25.0.1", "message-port-polyfill": "^0.2.0", "mime-types": "^2.1.28", "mini-css-extract-plugin": "^2.1.0", "mocha": "^8.3.2", "mockdate": "^3.0.2", "monaco-editor-webpack-plugin": "^3.1.0", "mz": "^2.7.0", "node-fetch": "^2.6.0", "nyc": "^15.1.0", "open": "^7.0.4", "p-retry": "^4.2.0", "p-timeout": "^4.1.0", "postcss": "^8.3.5", "postcss-custom-media": "^8.0.0", "postcss-focus-visible": "^5.0.0", "postcss-loader": "^6.1.1", "postcss-modules": "^4.2.2", "prettier": "^2.2.1", "process": "^0.11.10", "protoc-gen-ts": "0.8.1", "puppeteer": "12.0.1", "puppeteer-firefox": "^0.5.1", "react-refresh": "^0.10.0", "sass": "^1.32.4", "sass-loader": "^12.1.0", "shelljs": "^0.8.4", "signale": "^1.4.0", "simmerjs": "^0.5.6", "sinon": "^9.0.2", "socket.io": "^2.3.0", "socket.io-client": "^2.3.0", "speed-measure-webpack-plugin": "^1.5.0", "storybook-addon-designs": "^6.2.0", "storybook-dark-mode": "^1.0.8", "string-width": "^4.2.0", "style-loader": "^3.1.0", "stylelint": "^14.3.0", "svgo": "^2.7.0", "term-size": "^2.2.0", "terser-webpack-plugin": "^5.1.4", "thread-loader": "^3.0.4", "ts-loader": "^9.2.6", "ts-morph": "^8.1.0", "ts-node": "^9.1.1", "typed-scss-modules": "^4.1.1", "typescript": "^4.5.2", "utc-version": "^2.0.2", "web-ext": "^5.2.0", "webpack": "^5.45.1", "webpack-bundle-analyzer": "^4.4.2", "webpack-cli": "^4.7.2", "webpack-dev-server": "^4.0.0", "webpack-manifest-plugin": "^3.1.0", "wildcard-mock-link": "^2.0.1", "worker-loader": "^3.0.8", "yarn-deduplicate": "^3.1.0" }, "dependencies": { "@apollo/client": "3.4.7", "@codemirror/autocomplete": "^0.19.14", "@codemirror/highlight": "^0.19.7", "@codemirror/state": "^0.19.9", "@codemirror/text": "^0.19.6", "@codemirror/tooltip": "^0.19.16", "@codemirror/view": "^0.19.47", "@reach/accordion": "^0.16.1", "@reach/combobox": "^0.16.5", "@reach/dialog": "^0.16.2", "@reach/listbox": "^0.16.2", "@reach/menu-button": "^0.16.2", "@reach/tabs": "^0.16.4", "@reach/visually-hidden": "^0.16.0", "@sentry/browser": "^6.13.2", "@slimsag/react-shortcuts": "^1.2.1", "@sourcegraph/extension-api-classes": "^1.1.0", "@sqs/jsonc-parser": "^1.0.3", "@types/svgo": "2.6.0", "@types/vscode": "^1.63.1", "@visx/annotation": "^2.9.0", "@visx/axis": "^1.7.0", "@visx/glyph": "^1.7.0", "@visx/grid": "^1.7.0", "@visx/group": "^1.7.0", "@visx/mock-data": "^1.7.0", "@visx/pattern": "^1.7.0", "@visx/scale": "^1.7.0", "@visx/xychart": "^1.7.3", "ajv": "^8.6.3", "ajv-formats": "^2.1.1", "apollo3-cache-persist": "^0.12.1", "bloomfilter": "^0.0.18", "bootstrap": "^4.5.2", "classnames": "^2.2.6", "comlink": "^4.3.0", "copy-to-clipboard": "^3.3.1", "core-js": "^3.8.2", "cross-fetch": "^3.1.4", "d3-axis": "^1.0.12", "d3-format": "^2.0.0", "d3-scale": "^3.2.1", "d3-selection": "^1.4.1", "d3-shape": "^1.3.7", "d3-time-format": "^3.0.0", "date-fns": "^2.16.1", "delay": "^4.4.1", "downshift": "^3.4.8", "escape-html": "^1.0.3", "focus-visible": "^5.2.0", "fzy.js": "^0.4.1", "got": "^11.5.2", "graphiql": "^1.3.2", "highlight.js": "^10.5.0", "highlightjs-graphql": "^1.0.2", "http-status-codes": "^2.1.4", "is-absolute-url": "^3.0.3", "iterare": "^1.2.1", "js-cookie": "^2.2.1", "js-yaml": "^4.1.0", "linguist-languages": "^7.14.0", "lodash": "^4.17.20", "marked": "^4.0.0", "mdi-react": "^8.1.0", "minimatch": "^3.0.4", "monaco-editor": "^0.24.0", "monaco-yaml": "^3.2.1", "nice-ticks": "^1.0.1", "open-color": "^1.8.0", "path-browserify": "^1.0.1", "postcss-inset": "^1.0.0", "pretty-bytes": "^5.3.0", "prop-types": "^15.7.2", "react": "^16.14.0", "react-circular-progressbar": "^2.0.3", "react-dom": "^16.14.0", "react-dom-confetti": "^0.1.4", "react-elm-components": "^1.1.0", "react-focus-lock": "^2.7.1", "react-grid-layout": "1.3.0", "react-router": "^5.2.0", "react-router-dom": "^5.2.0", "react-scroll-manager": "^1.0.3", "react-select": "^5.2.2", "react-spring": "^9.4.2", "react-sticky-box": "^0.9.3", "react-stripe-elements": "^6.1.2", "react-visibility-sensor": "^5.1.1", "reactstrap": "^8.9.0", "recharts": "^1.8.5", "regexpp": "^3.1.0", "rxjs": "^6.6.3", "sanitize-html": "^2.0.0", "semver": "^7.3.2", "shepherd.js": "^8.3.1", "string-score": "^1.0.1", "tabbable": "^5.1.5", "tagged-template-noop": "^2.1.1", "textarea-caret": "^3.1.0", "ts-key-enum": "^2.0.7", "tslib": "^2.1.0", "use-callback-ref": "^1.2.5", "use-deep-compare-effect": "^1.6.1", "use-resize-observer": "^7.0.0", "utility-types": "^3.10.0", "uuid": "^8.3.0", "webext-domain-permission-toggle": "^1.0.1", "webextension-polyfill": "^0.6.0", "yaml-ast-parser": "^0.0.43", "zustand": "^3.6.9" }, "resolutions": { "history": "4.5.1", "cssnano": "4.1.10", "webpack": "5", "tslib": "2.1.0" } }