sourcegraph/package.json
Felix Kling 8d8456fd91
search: Add search context support to experimental search input (#46417)
The current version of the search input prototype does not include a separate input element for the search context. Instead the search context is treated like any other filter, except we style it slightly differently (see video).

This diff does a couple of things:

- Adds support for value completion for the context: filter.
- Renders context: filters differently from other filters in the input.
- Refactors the whole suggestions implementation so that it will be easier to add new suggestion sources in the future.
- Introduces a custom version of the built-in placeholder extension that allows us to overwrite when/how the placeholder should be visible.

This diff also fixes an issue where we did not update the selected search context correctly when it wasn't present in a query.

I also had to update @codemirror/view and @codemirror/state to fix an issue with rendering decorations. This doesn't seem to have any effect on the current search input. Unfortunately it didn't fix all the issues (which I also point out in the video).

NOTE: Keep in mind that this is still a prototype and we are still verifying our approach. You might not agree with how search contexts work in this version, but that should not be the focus of the code review here.
2023-01-18 14:16:13 +01:00

499 lines
18 KiB
JSON

{
"private": true,
"description": "The Sourcegraph web app",
"license": "Apache-2.0",
"repository": {
"type": "git",
"url": "https://github.com/sourcegraph/sourcegraph"
},
"engines": {
"node": "^v16.18.1",
"pnpm": "^7.24.2"
},
"scripts": {
"deduplicate": "pnpm-deduplicate",
"format": "prettier '**/{*.{js?(on),ts?(x),graphql,md,scss},.*.js?(on)}' --list-different --config prettier.config.js --write",
"format:changed": "prettier $(git diff --diff-filter=d --name-only origin/main... && git ls-files --other --modified --exclude-standard | grep -E '\\.(js|json|ts|tsx|graphql|md|scss)$' | xargs) --write --list-different --config prettier.config.js",
"format:check": "prettier '**/{*.{js?(on),ts?(x),graphql,md,scss},.*.js?(on)}' --config prettier.config.js --check --write=false",
"format:tsconfig": "prettier --config prettier.config.js --write tsconfig.json 'client/*/tsconfig.json'",
"_lint:js": "DOCSITE_LIST=\"$(./dev/docsite.sh -config doc/docsite.json ls)\" NODE_OPTIONS=\"--max_old_space_size=16192\" eslint",
"lint:js:changed": "pnpm _lint:js $(git diff --diff-filter=d --name-only origin/main... | grep -E '\\.[tj]sx?$' | xargs)",
"lint:js:root": "pnpm run _lint:js --quiet '*.[tj]s?(x)'",
"lint:js:all": "DOCSITE_LIST=\"$(./dev/docsite.sh -config doc/docsite.json ls)\" dev/foreach-ts-project.sh pnpm run lint:js --quiet && pnpm lint:js:root",
"_lint:css": "stylelint --quiet",
"lint:css:changed": "pnpm _lint:css --allow-empty-input \"*.none\" $(git diff --diff-filter=d --name-only origin/main... | grep -E '.s?css$' | xargs)",
"lint:css:all": "pnpm _lint:css 'client/*/src/**/*.scss'",
"lint:graphql": "graphql-schema-linter",
"build-ts": "tsc -b tsconfig.all.json",
"build-web": "pnpm --filter @sourcegraph/web run build",
"watch-web": "pnpm --filter @sourcegraph/web run watch",
"generate": "gulp generate",
"watch-generate": "gulp watchGenerate",
"test": "jest --testPathIgnorePatterns end-to-end regression integration storybook \"/out/.*test.js\" \"/out/.*test.d.ts\"",
"_test-integration": "TS_NODE_PROJECT=client/web/src/integration/tsconfig.json mocha --parallel=${CI:-\"false\"} --retries=1 --jobs=2",
"test-integration": "pnpm _test-integration \"./client/web/src/integration/**/*.test.ts\"",
"test-integration:debug": "BROWSER=chrome KEEP_BROWSER=true DEVTOOLS=true DISABLE_APP_ASSETS_MOCKING=true WINDOW_WIDTH=1920 WINDOW_HEIGHT=1080 pnpm _test-integration --retries=0 --jobs=1",
"test-browser-integration": "pnpm --filter @sourcegraph/browser run test-integration",
"_cover-integration": "nyc --hook-require=false --silent pnpm _test-integration",
"cover-integration": "nyc --hook-require=false --silent pnpm test-integration",
"cover-browser-integration": "nyc --hook-require=false --silent pnpm --filter @sourcegraph/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/**/*.test.ts",
"cover-e2e": "nyc --hook-require=false --silent pnpm test-e2e",
"test-regression": "pnpm --filter @sourcegraph/web run test:regression",
"storybook": "pnpm --filter @sourcegraph/storybook run start",
"storybook:dll": "pnpm --filter @sourcegraph/storybook run start:dll",
"storybook:branded": "pnpm --filter @sourcegraph/branded run storybook",
"storybook:browser": "pnpm --filter @sourcegraph/browser run storybook",
"storybook:jetbrains": "pnpm --filter @sourcegraph/jetbrains run storybook",
"storybook:shared": "pnpm --filter @sourcegraph/shared run storybook",
"storybook:web": "pnpm --filter @sourcegraph/web run storybook",
"storybook:wildcard": "pnpm --filter @sourcegraph/wildcard run storybook",
"storybook:build": "pnpm --filter @sourcegraph/storybook run build",
"cover-storybook": "nyc --hook-require=false --silent pnpm jest client/storybook/src/coverage",
"release": "cd dev/release && pnpm run release",
"docsite:serve": "./dev/docsite.sh -config doc/docsite.json serve -http=localhost:5080",
"build-browser-extension": "pnpm --filter @sourcegraph/browser run build",
"optimize-svg-assets": "svgo --multipass --config=\"./svgo.config.js\"",
"build-vsce": "pnpm --filter @sourcegraph/vscode run build",
"watch-vsce": "pnpm --filter @sourcegraph/vscode run watch",
"postinstall": "set-project-references --save && pnpm run format:tsconfig",
"postuninstall": "set-project-references --save && pnpm run format:tsconfig"
},
"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"
]
},
"devDependencies": {
"@atlassian/aui": "^7.10.3",
"@axe-core/puppeteer": "^4.4.2",
"@babel/core": "^7.20.5",
"@babel/plugin-transform-typescript": "^7.20.2",
"@babel/preset-env": "^7.20.2",
"@babel/preset-react": "^7.18.6",
"@babel/preset-typescript": "^7.18.6",
"@babel/runtime": "^7.20.6",
"@bessonovs/set-project-references": "^0.0.10",
"@gql2ts/types": "^1.9.0",
"@graphql-codegen/cli": "^2.16.1",
"@graphql-codegen/typescript": "2.8.5",
"@graphql-codegen/typescript-apollo-client-helpers": "^2.2.6",
"@graphql-codegen/typescript-operations": "2.5.10",
"@istanbuljs/nyc-config-typescript": "^1.0.1",
"@jest/types": "^28.1.0",
"@lhci/cli": "0.8.1",
"@mermaid-js/mermaid-cli": "^8.13.10",
"@octokit/rest": "^16.36.0",
"@peculiar/webcrypto": "^1.1.7",
"@percy/cli": "^1.16.0",
"@percy/puppeteer": "^2.0.0",
"@pmmmwh/react-refresh-webpack-plugin": "^0.5.10",
"@pollyjs/adapter": "^5.0.0",
"@pollyjs/core": "^5.1.0",
"@pollyjs/persister-fs": "^5.0.0",
"@sentry/cli": "^1.74.4",
"@sentry/webpack-plugin": "^1.20.0",
"@slack/web-api": "^5.15.0",
"@sourcegraph/eslint-config": "0.32.0",
"@sourcegraph/eslint-plugin-sourcegraph": "^1.0.5",
"@sourcegraph/eslint-plugin-wildcard": "workspace:*",
"@sourcegraph/extension-api-stubs": "^1.6.1",
"@sourcegraph/prettierrc": "^3.0.3",
"@sourcegraph/stylelint-config": "^1.4.0",
"@sourcegraph/stylelint-plugin-sourcegraph": "^1.0.1",
"@sourcegraph/tsconfig": "^4.0.1",
"@statoscope/cli": "^5.24.0",
"@statoscope/webpack-plugin": "^5.24.0",
"@storybook/addon-a11y": "^6.5.14",
"@storybook/addon-actions": "^6.5.14",
"@storybook/addon-console": "^1.2.3",
"@storybook/addon-docs": "^6.5.14",
"@storybook/addon-links": "^6.5.14",
"@storybook/addon-storyshots": "^6.5.14",
"@storybook/addon-storyshots-puppeteer": "^6.5.14",
"@storybook/addon-storysource": "^6.5.14",
"@storybook/addon-toolbars": "^6.5.14",
"@storybook/addons": "^6.5.14",
"@storybook/api": "^6.5.14",
"@storybook/builder-webpack5": "^6.5.14",
"@storybook/client-api": "^6.5.14",
"@storybook/components": "^6.5.14",
"@storybook/core": "^6.5.14",
"@storybook/core-common": "^6.5.14",
"@storybook/core-events": "^6.5.14",
"@storybook/manager-webpack5": "^6.5.14",
"@storybook/react": "^6.5.14",
"@storybook/theming": "^6.5.14",
"@terminus-term/to-string-loader": "^1.1.7-beta.1",
"@testing-library/dom": "^8.13.0",
"@testing-library/jest-dom": "^5.16.4",
"@testing-library/react": "^13.4.0",
"@testing-library/react-hooks": "^8.0.0",
"@testing-library/user-event": "^13.5.0",
"@types/babel__core": "7.1.20",
"@types/bloomfilter": "0.0.0",
"@types/case-sensitive-paths-webpack-plugin": "2.1.6",
"@types/chrome": "0.0.127",
"@types/classnames": "2.2.10",
"@types/command-exists": "1.2.0",
"@types/compression": "1.7.2",
"@types/connect-history-api-fallback": "1.3.4",
"@types/d3-format": "2.0.0",
"@types/d3-scale": "^3.3.0",
"@types/d3-shape": "^1.3.1",
"@types/d3-time-format": "3.0.0",
"@types/d3-voronoi": "^1.1.9",
"@types/escape-html": "^1.0.1",
"@types/express": "4.17.11",
"@types/glob": "7.1.3",
"@types/got": "9.6.11",
"@types/gulp": "4.0.7",
"@types/highlight.js": "9.12.4",
"@types/history": "^4.7.11",
"@types/jest": "28.1.0",
"@types/js-cookie": "2.2.6",
"@types/js-yaml": "4.0.3",
"@types/jsdom": "12.2.4",
"@types/lodash": "4.14.167",
"@types/lru-cache": "^7.6.1",
"@types/marked": "4.0.3",
"@types/mime-types": "2.1.0",
"@types/minimatch": "^5.1.2",
"@types/mocha": "8.2.0",
"@types/mock-require": "^2.0.1",
"@types/mockdate": "2.0.0",
"@types/mz": "2.7.3",
"@types/node": "13.13.5",
"@types/node-fetch": "2.5.10",
"@types/pollyjs__adapter": "4.3.0",
"@types/pollyjs__core": "4.3.1",
"@types/pollyjs__persister-fs": "2.0.1",
"@types/prettier": "^2.7.2",
"@types/puppeteer": "^5.4.5",
"@types/react": "18.0.8",
"@types/react-calendar": "^3.5.2",
"@types/react-circular-progressbar": "1.0.2",
"@types/react-dom": "18.0.2",
"@types/react-grid-layout": "1.3.2",
"@types/react-resizable": "^3.0.2",
"@types/react-router": "^5.1.18",
"@types/react-router-dom": "^5.3.3",
"@types/recharts": "1.8.23",
"@types/resize-observer-browser": "0.1.4",
"@types/rimraf": "^3.0.2",
"@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-client": "1.4.33",
"@types/speed-measure-webpack-plugin": "1.3.4",
"@types/svgo": "2.6.0",
"@types/testing-library__jest-dom": "5.9.5",
"@types/uuid": "8.0.1",
"@types/vscode": "^1.63.1",
"@types/webpack-bundle-analyzer": "^4.6.0",
"@types/webpack-stats-plugin": "^0.3.2",
"@types/yauzl": "^2.9.2",
"@vscode/test-electron": "^2.1.3",
"abort-controller": "^3.0.0",
"autoprefixer": "^10.2.1",
"axe-core": "^4.4.1",
"babel-jest": "^28.1.0",
"babel-loader": "^9.1.0",
"babel-plugin-istanbul": "6.1.1",
"babel-plugin-lodash": "^3.3.4",
"babel-plugin-webpack-chunkname": "^1.2.0",
"browserslist": "^4.21.3",
"buffer": "^6.0.3",
"bundlesize2": "^0.0.31",
"chalk": "^4.1.0",
"chokidar-cli": "^2.1.0",
"chromatic": "^6.11.4",
"chrome-webstore-upload-cli": "^1.2.0",
"command-exists": "^1.2.9",
"compression": "^1.7.4",
"compression-webpack-plugin": "^10.0.0",
"connect-history-api-fallback": "^1.6.0",
"cross-env": "^7.0.2",
"css-loader": "^6.7.2",
"css-minimizer-webpack-plugin": "^4.2.2",
"enhanced-resolve": "^5.9.3",
"envalid": "^7.3.1",
"esbuild": "^0.16.10",
"eslint": "^8.13.0",
"eslint-plugin-monorepo": "^0.3.2",
"events": "^3.3.0",
"execa": "^5.0.0",
"expect": "^27.5.1",
"express": "^4.17.1",
"express-static-gzip": "^2.1.1",
"glob": "^7.1.6",
"google-auth-library": "5.7.0",
"googleapis": "^47.0.0",
"googleapis-common": "3.2.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.5.0",
"http-proxy-middleware": "^1.1.2",
"identity-obj-proxy": "^3.0.0",
"jest": "^28.1.0",
"jest-canvas-mock": "^2.3.0",
"jest-environment-jsdom": "^28.1.0",
"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",
"libhoney": "^3.1.1",
"license-checker": "^25.0.1",
"message-port-polyfill": "^0.2.0",
"mime-types": "^2.1.28",
"mini-css-extract-plugin": "^2.7.2",
"mocha": "^8.3.2",
"mock-require": "^3.0.3",
"mockdate": "^3.0.2",
"monaco-editor-webpack-plugin": "^3.1.0",
"mz": "^2.7.0",
"node-fetch": "^2.6.7",
"nyc": "^15.1.0",
"octokit": "^2.0.7",
"open": "^7.0.4",
"p-retry": "^4.2.0",
"p-timeout": "^4.1.0",
"pnpm-deduplicate": "^0.4.1",
"postcss": "^8.4.19",
"postcss-custom-media": "^8.0.0",
"postcss-focus-visible": "^5.0.0",
"postcss-loader": "^7.0.2",
"postcss-modules": "^6.0.0",
"prettier": "2.8.1",
"process": "^0.11.10",
"punycode": "2.1.1",
"puppeteer": "^13.5.1",
"react-refresh": "^0.10.0",
"regenerator-runtime": "^0.13.7",
"rimraf": "^3.0.2",
"sass": "^1.32.4",
"sass-loader": "^13.2.0",
"shelljs": "^0.8.4",
"signale": "^1.4.0",
"simmerjs": "^0.5.6",
"sinon": "^9.0.2",
"socket.io": "^4.5.2",
"socket.io-client": "^4.5.2",
"speed-measure-webpack-plugin": "^1.5.0",
"storybook-addon-designs": "^6.3.1",
"storybook-dark-mode": "^2.0.4",
"stream-browserify": "^3.0.0",
"string-width": "^4.2.0",
"style-loader": "^3.3.1",
"stylelint": "^14.3.0",
"svgo": "^2.7.0",
"term-size": "^2.2.0",
"terser-webpack-plugin": "^5.3.6",
"ts-loader": "^9.4.2",
"ts-node": "^10.7.0",
"typed-scss-modules": "^4.1.1",
"typescript": "^4.9.3",
"utc-version": "^2.0.2",
"vsce": "^2.7.0",
"webpack": "^5.75.0",
"webpack-bundle-analyzer": "^4.7.0",
"webpack-cli": "^5.0.1",
"webpack-dev-server": "^4.11.1",
"webpack-manifest-plugin": "^5.0.0",
"webpack-stats-plugin": "^1.1.1",
"wildcard-mock-link": "^2.0.1",
"worker-loader": "^3.0.8",
"yaml": "^2.2.1",
"yauzl": "^2.10.0"
},
"dependencies": {
"@apollo/client": "^3.5.0",
"@codemirror/autocomplete": "^6.1.0",
"@codemirror/commands": "^6.0.1",
"@codemirror/lang-json": "^6.0.0",
"@codemirror/lang-markdown": "^6.0.0",
"@codemirror/language": "^6.2.0",
"@codemirror/lint": "^6.0.0",
"@codemirror/search": "^6.0.1",
"@codemirror/state": "^6.2.0",
"@codemirror/view": "^6.7.2",
"@graphiql/react": "^0.10.0",
"@lezer/common": "^1.0.0",
"@lezer/highlight": "^1.0.0",
"@mdi/js": "7.1.96",
"@microsoft/fetch-event-source": "^2.0.1",
"@opentelemetry/api": "^1.1.0",
"@opentelemetry/context-zone": "^1.5.0",
"@opentelemetry/core": "1.5.0",
"@opentelemetry/exporter-trace-otlp-http": "^0.31.0",
"@opentelemetry/instrumentation": "^0.31.0",
"@opentelemetry/instrumentation-fetch": "^0.31.0",
"@opentelemetry/resources": "1.5.0",
"@opentelemetry/sdk-trace-base": "1.5.0",
"@opentelemetry/sdk-trace-web": "^1.5.0",
"@opentelemetry/semantic-conventions": "^1.5.0",
"@reach/accordion": "^0.16.1",
"@reach/auto-id": "^0.16.0",
"@reach/combobox": "^0.16.5",
"@reach/dialog": "^0.16.2",
"@reach/menu-button": "^0.16.2",
"@reach/tabs": "^0.16.4",
"@reach/visually-hidden": "^0.16.0",
"@react-aria/live-announcer": "^3.1.0",
"@sentry/browser": "^7.8.1",
"@sourcegraph/extension-api-classes": "^1.1.0",
"@sourcegraph/extension-api-types": "workspace:*",
"@storybook/addon-controls": "^6.5.14",
"@visx/annotation": "^2.10.0",
"@visx/axis": "^2.11.1",
"@visx/event": "2.6.0",
"@visx/glyph": "^2.10.0",
"@visx/grid": "^2.10.0",
"@visx/group": "^2.10.0",
"@visx/responsive": "^2.10.0",
"@visx/scale": "^2.2.2",
"@visx/shape": "^2.11.1",
"@visx/text": "2.10.0",
"@visx/voronoi": "^2.10.0",
"@vscode/codicons": "^0.0.29",
"@vscode/webview-ui-toolkit": "^0.9.0",
"agent-base": "6.0.2",
"ajv": "^8.6.3",
"ajv-formats": "^2.1.1",
"apollo3-cache-persist": "^0.12.1",
"bloomfilter": "^0.0.18",
"case-sensitive-paths-webpack-plugin": "^2.3.0",
"classnames": "^2.2.6",
"comlink": "^4.3.0",
"copy-to-clipboard": "^3.3.1",
"core-js": "^3.8.2",
"d3-format": "^2.0.0",
"d3-scale": "^3.3.0",
"d3-shape": "^1.2.0",
"d3-time-format": "^3.0.0",
"d3-voronoi": "^1.1.2",
"date-fns": "^2.16.1",
"delay": "^4.4.1",
"downshift": "^3.4.8",
"escape-html": "^1.0.3",
"eventsource": "1.1.1",
"fast-json-stable-stringify": "^2.0.0",
"focus-visible": "^5.2.0",
"fzf": "^0.5.1",
"got": "^11.5.2",
"graphiql": "^1.11.5",
"highlight.js": "^10.5.0",
"highlightjs-graphql": "^1.0.2",
"history": "4.5.1",
"http-proxy-agent": "^5.0.0",
"http-status-codes": "^2.1.4",
"https-browserify": "^1.0.0",
"https-proxy-agent": "^5.0.1",
"is-absolute-url": "^3.0.3",
"iterare": "^1.2.1",
"js-base64": "^3.7.2",
"js-cookie": "^2.2.1",
"js-yaml": "^4.1.0",
"jsonc-parser": "^3.0.0",
"linguist-languages": "^7.14.0",
"lodash": "^4.17.20",
"lru-cache": "^7.8.0",
"marked": "4.0.16",
"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",
"ordinal": "^1.0.3",
"original": "^1.0.0",
"path-browserify": "^1.0.1",
"postcss-inset": "^1.0.0",
"pretty-bytes": "^5.3.0",
"prop-types": "^15.7.2",
"react": "18.1.0",
"react-calendar": "^3.7.0",
"react-circular-progressbar": "^2.0.3",
"react-dom": "18.1.0",
"react-focus-lock": "^2.7.1",
"react-grid-layout": "1.3.4",
"react-resizable": "^3.0.4",
"react-router": "^5.2.0",
"react-router-dom": "^5.2.0",
"react-router-dom-v5-compat": "^6.3.0",
"react-spring": "^9.4.2",
"react-sticky-box": "1.0.2",
"react-visibility-sensor": "^5.1.1",
"recharts": "^1.8.5",
"regexpp": "^3.1.0",
"resize-observer-polyfill": "^1.5.1",
"rxjs": "^6.6.3",
"sanitize-html": "^2.0.0",
"semver": "^7.3.2",
"sourcegraph": "workspace:*",
"stream-http": "^3.2.0",
"string-score": "^1.0.1",
"tabbable": "^5.1.5",
"tagged-template-noop": "^2.1.1",
"ts-key-enum": "^2.0.7",
"tslib": "^2.1.0",
"url": "^0.11.0",
"use-callback-ref": "^1.2.5",
"use-debounce": "^8.0.1",
"use-deep-compare-effect": "^1.6.1",
"use-resize-observer": "^9.0.2",
"util": "^0.12.5",
"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"
},
"packageManager": "pnpm@7.24.2",
"resolutions": {
"@types/webpack": "5",
"history": "4.5.1",
"cssnano": "4.1.10",
"webpack": "5",
"tslib": "2.1.0",
"jsprim": "1.4.2"
}
}