{ "name": "docs.github.com", "private": true, "repository": "https://github.com/github/docs", "license": "(MIT AND CC-BY-4.0)", "author": { "name": "GitHub", "email": "opensource+docs@github.com", "url": "https://github.com/github/docs" }, "type": "module", "exports": "./src/frame/server.ts", "scripts": { "add-content-type": "tsx src/content-render/scripts/add-content-type.ts", "ai-tools": "tsx src/ai-tools/scripts/ai-tools.ts", "all-documents": "tsx src/content-render/scripts/all-documents/cli.ts", "analyze-text": "tsx src/search/scripts/analyze-text.ts", "analyze-comment": "tsx src/events/scripts/analyze-comment-cli.ts", "build": "next build --webpack", "check-content-type": "tsx src/workflows/check-content-type.ts", "check-github-github-links": "tsx src/links/scripts/check-github-github-links.ts", "clone-early-access": "./src/early-access/scripts/clone-locally", "clone-translations": "./src/languages/scripts/clone-translations.sh", "content-changes-table-comment": "tsx src/workflows/content-changes-table-comment.ts", "copy-fixture-data": "tsx src/tests/scripts/copy-fixture-data.ts", "count-translation-corruptions": "cross-env NODE_OPTIONS=--max-old-space-size=8192 tsx src/languages/scripts/count-translation-corruptions.ts", "create-early-access-branch": "./src/early-access/scripts/create-branch", "create-enterprise-issue": "tsx src/ghes-releases/scripts/create-enterprise-issue.ts", "cta-builder": "tsx src/content-render/scripts/cta-builder.ts", "debug": "cross-env NODE_ENV=development ENABLED_LANGUAGES=en nodemon --inspect src/frame/server.ts", "delete-orphan-translation-files": "tsx src/workflows/delete-orphan-translation-files.ts", "docsaudit": "tsx src/metrics/scripts/docsaudit.ts", "docstat": "tsx --disable-warning=DEP0190 src/metrics/scripts/docstat.ts", "deleted-assets-pr-comment": "tsx src/assets/scripts/deleted-assets-pr-comment.ts", "deleted-features-pr-comment": "tsx src/data-directory/scripts/deleted-features-pr-comment.ts", "deprecate-ghes": "tsx src/ghes-releases/scripts/deprecate/index.ts", "deprecate-ghes-archive": "cross-env NODE_OPTIONS=--max-old-space-size=16384 tsx src/ghes-releases/scripts/deprecate/archive-version.ts", "dev": "cross-env npm start", "dev-toc": "tsx src/dev-toc/generate.ts", "enable-automerge": "tsx src/workflows/enable-automerge.ts", "find-orphaned-assets": "tsx src/assets/scripts/find-orphaned-assets.ts", "find-orphaned-features": "tsx src/data-directory/scripts/find-orphaned-features/index.ts", "find-past-built-pr": "tsx src/workflows/find-past-built-pr.ts", "find-unused-variables": "tsx src/content-linter/scripts/find-unsed-variables.ts", "fixture-dev": "cross-env ROOT=src/fixtures/fixtures npm start", "fixture-dev-debug": "cross-env NODE_ENV=development ROOT=src/fixtures/fixtures nodemon --inspect src/frame/server.ts", "fixture-test": "cross-env ROOT=src/fixtures/fixtures sh -c 'npm test -- ${1:-src/fixtures/tests}' --", "fr-add-docs-reviewers-requests": "tsx src/workflows/fr-add-docs-reviewers-requests.ts", "general-search-scrape": "tsx src/search/scripts/scrape/scrape-cli.ts", "general-search-scrape-server": "cross-env NODE_ENV=production PORT=4002 MINIMAL_RENDER=true CHANGELOG_DISABLED=true tsx src/frame/server.ts", "ghes-release-scrape-with-server": "cross-env GHES_RELEASE=1 start-server-and-test general-search-scrape-server 4002 general-search-scrape", "general-search-scrape-with-server": "cross-env NODE_OPTIONS='--max_old_space_size=8192' start-server-and-test general-search-scrape-server 4002 general-search-scrape", "index-ai-search-autocomplete": "tsx src/search/scripts/index/index-cli ai-search-autocomplete", "index-general-search": "tsx src/search/scripts/index/index-cli general-search", "index-test-fixtures": "./src/search/scripts/index-test-fixtures.sh", "labeler": "tsx .github/actions/labeler/labeler.ts", "lint": "eslint '**/*.{ts,tsx}'", "lint-content": "tsx src/content-linter/scripts/lint-content.ts", "lint-translation": "vitest src/content-linter/tests/lint-files.ts", "liquid-markdown-tables": "tsx src/tools/scripts/liquid-markdown-tables/index.ts", "generate-article-api-docs": "tsx src/article-api/scripts/generate-api-docs.ts", "generate-code-scanning-query-list": "tsx src/codeql-queries/scripts/generate-code-scanning-query-list.ts", "generate-code-quality-query-list": "tsx src/codeql-queries/scripts/generate-code-quality-query-list.ts", "generate-content-linter-docs": "tsx src/content-linter/scripts/generate-docs.ts", "move-content": "tsx src/content-render/scripts/move-content.ts", "openapi-docs": "tsx src/rest/docs.ts", "playwright-test": "playwright test --config src/fixtures/playwright.config.ts --project=\"Google Chrome\"", "lint-report": "tsx src/content-linter/scripts/lint-report.ts", "precompute-pageinfo": "tsx src/article-api/scripts/precompute-pageinfo.ts", "prepare": "husky src/workflows/husky", "prettier": "prettier -w \"**/*.{ts,tsx,scss,yml,yaml}\"", "prettier-check": "prettier -c \"**/*.{ts,tsx,scss,yml,yaml}\"", "prevent-pushes-to-main": "tsx src/workflows/prevent-pushes-to-main.ts", "purge-fastly-edge-cache": "tsx src/workflows/purge-fastly-edge-cache.ts", "purge-fastly-edge-cache-per-language": "tsx src/languages/scripts/purge-fastly-edge-cache-per-language.ts", "readability-report": "tsx src/workflows/experimental/readability-report.ts", "ready-for-docs-review": "tsx src/workflows/ready-for-docs-review.ts", "release-banner": "tsx src/ghes-releases/scripts/release-banner.ts", "repo-sync": "./src/workflows/local-repo-sync.sh", "reusables": "tsx src/content-render/scripts/reusables-cli.ts", "resolve-liquid": "tsx src/content-render/scripts/resolve-liquid.ts", "rendered-content-link-checker": "tsx src/links/scripts/rendered-content-link-checker.ts", "rendered-content-link-checker-cli": "tsx src/links/scripts/rendered-content-link-checker-cli.ts", "rest-dev": "tsx src/rest/scripts/update-files.ts", "show-action-deps": "echo 'Action Dependencies:' && rg '^[\\s|-]*(uses:.*)$' .github -I -N --no-heading -r '$1$2' | sort | uniq | cut -c 7-", "start": "cross-env NODE_ENV=development ENABLED_LANGUAGES=en nodemon src/frame/server.ts", "start-all-languages": "cross-env NODE_ENV=development tsx src/frame/server.ts", "start-for-playwright": "cross-env ROOT=src/fixtures/fixtures TRANSLATIONS_FIXTURE_ROOT=src/fixtures/fixtures/translations ENABLED_LANGUAGES=en,ja NODE_ENV=test tsx src/frame/server.ts", "symlink-from-local-repo": "tsx src/early-access/scripts/symlink-from-local-repo.ts", "sync-audit-log": "tsx src/audit-logs/scripts/sync.ts", "sync-codeql-cli": "tsx src/codeql-cli/scripts/sync.ts", "sync-graphql": "tsx src/graphql/scripts/sync.ts", "sync-rest": "tsx src/rest/scripts/update-files.ts", "sync-secret-scanning": "tsx src/secret-scanning/scripts/sync.ts", "sync-webhooks": "npx tsx src/rest/scripts/update-files.ts -o webhooks", "test": "vitest", "test-moved-content": "tsx src/content-render/scripts/test-moved-content.ts", "tsc": "tsc --noEmit", "unallowed-contributions": "tsx src/workflows/unallowed-contributions.ts", "update-data-and-image-paths": "tsx src/early-access/scripts/update-data-and-image-paths.ts", "update-enterprise-dates": "tsx src/ghes-releases/scripts/update-enterprise-dates.ts", "update-filepaths": "tsx src/content-render/scripts/update-filepaths.ts", "update-internal-links": "tsx src/links/scripts/update-internal-links.ts", "validate-asset-images": "tsx src/assets/scripts/validate-asset-images.ts", "validate-github-github-docs-urls": "tsx src/links/scripts/validate-github-github-docs-urls/index.ts", "warmup-remotejson": "tsx src/archives/scripts/warmup-remotejson.ts", "what-docs-early-access-branch": "tsx src/early-access/scripts/what-docs-early-access-branch.ts", "writers": "tsx src/workflows/writers-help-metadata.ts" }, "lint-staged": { "*.{ts,tsx}": "eslint --cache --fix", "*.{scss,ts,tsx,yml,yaml}": "prettier --write", "{content,data}/**/*.md": "npm run lint-content -- --precommit --paths" }, "nodemonConfig": { "ext": "ts,json,yml,md,html,scss", "exec": "tsx --import ./src/observability/lib/handle-package-not-found.ts", "ignore": [ "assets", "script", "tests", "content", "translations", "data/reusables", "data/variables", "data/glossaries", "data/product-examples", "data/learning-tracks", "rest-api-description", "semmle-code" ] }, "prettier": { "overrides": [ { "files": [ "**/*.{yml,yaml}" ], "options": { "singleQuote": true } }, { "files": [ "**/*.{ts,tsx}" ], "options": { "printWidth": 100, "semi": false, "singleQuote": true } } ] }, "dependencies": { "@elastic/elasticsearch": "8.13.1", "@github/failbot": "0.8.3", "@gr2m/gray-matter": "4.0.3-with-pr-137", "@horizon-rs/language-guesser": "0.1.1", "@octokit/plugin-retry": "8.0.1", "@octokit/request-error": "7.0.0", "@primer/behaviors": "^1.7.2", "@primer/css": "^21.3.1", "@primer/live-region-element": "^0.7.2", "@primer/octicons": "^19.19.0", "@primer/octicons-react": "^19.14.0", "@primer/react": "^38.0.0", "accept-language-parser": "^1.5.0", "ajv": "^8.17.1", "ajv-errors": "^3.0.0", "ajv-formats": "^3.0.1", "azure-kusto-data": "^7.0.0", "bottleneck": "2.19.5", "boxen": "8.0.1", "cheerio": "^1.0.0-rc.12", "cheerio-to-text": "0.2.4", "classnames": "^2.5.1", "clsx": "^2.1.1", "connect-timeout": "1.9.1", "cookie-parser": "^1.4.7", "cuss": "2.2.0", "dayjs": "^1.11.13", "dereference-json-schema": "^0.2.1", "dotenv": "^17.0.1", "escape-string-regexp": "5.0.0", "express": "^5.2.0", "fastest-levenshtein": "1.0.16", "file-type": "21.0.0", "flat": "^6.0.1", "github-slugger": "^2.0.0", "glob": "11.1.0", "hast-util-from-parse5": "^8.0.3", "hast-util-to-string": "^3.0.1", "hastscript": "^9.0.1", "helmet": "^8.0.0", "highlight.js": "^11.11.1", "highlightjs-curl": "^1.3.0", "hot-shots": "^11.1.0", "html-entities": "^2.5.6", "http-proxy-middleware": "^3.0.5", "imurmurhash": "^0.1.4", "is-svg": "6.0.0", "javascript-stringify": "^2.1.0", "js-cookie": "^3.0.5", "js-yaml": "^4.1.1", "liquidjs": "^10.16.7", "lodash": "^4.17.21", "lodash-es": "^4.17.21", "lowdb": "7.0.1", "lowlight": "^3.3.0", "markdownlint-rule-helpers": "^0.25.0", "mdast-util-from-markdown": "^2.0.2", "mdast-util-to-hast": "^13.2.1", "mdast-util-to-markdown": "2.1.2", "mdast-util-to-string": "^4.0.0", "next": "^16.0.10", "ora": "^9.0.0", "parse5": "7.1.2", "quick-lru": "7.0.1", "react": "^18.3.1", "react-dom": "^18.3.1", "react-markdown": "^10.1.0", "rehype-highlight": "^7.0.2", "rehype-raw": "^7.0.0", "rehype-slug": "^6.0.0", "rehype-stringify": "^10.0.1", "remark-gemoji-to-emoji": "^1.1.0", "remark-gfm": "^4.0.1", "remark-parse": "^11.0.0", "remark-rehype": "^11.1.2", "remark-remove-comments": "^1.0.1", "remark-stringify": "^11.0.0", "rss-parser": "^3.13.0", "scroll-anchoring": "^0.1.0", "semver": "^7.6.3", "sharp": "0.33.5", "slash": "^5.1.0", "strip-ansi": "7.1.0", "styled-components": "^5.3.11", "swr": "^2.2.5", "tcp-port-used": "1.0.2", "tsx": "^4.19.4", "unified": "^11.0.5", "unist-util-find": "^3.0.0", "unist-util-visit": "^5.0.0", "url-template": "^3.1.1", "walk-sync": "^4.0.1" }, "devDependencies": { "@actions/core": "^2.0.0", "@actions/github": "^6.0.0", "@axe-core/playwright": "^4.10.1", "@eslint/js": "^9.33.0", "@github/markdownlint-github": "^0.6.3", "@graphql-inspector/core": "^7.0.3", "@graphql-tools/load": "^8.0.19", "@octokit/rest": "22.0.0", "@playwright/test": "^1.56", "@types/accept-language-parser": "1.5.7", "@types/cheerio": "^0.22.35", "@types/connect-timeout": "1.9.0", "@types/cookie": "0.6.0", "@types/cookie-parser": "1.4.8", "@types/eslint-plugin-jsx-a11y": "^6.10.1", "@types/event-to-promise": "^0.7.5", "@types/express": "^5.0.3", "@types/imurmurhash": "^0.1.4", "@types/js-cookie": "^3.0.6", "@types/js-yaml": "^4.0.9", "@types/lodash": "^4.17.16", "@types/lodash-es": "4.17.12", "@types/mdast": "^4.0.4", "@types/react": "18.3.20", "@types/react-dom": "^18.3.6", "@types/semver": "^7.5.8", "@types/styled-components": "^5.1.34", "@types/tcp-port-used": "1.0.4", "@types/website-scraper": "^1.2.10", "@typescript-eslint/eslint-plugin": "^8.33.1", "@typescript-eslint/parser": "^8.33.1", "chalk": "^5.0.1", "change-case": "^5.4.4", "commander": "^14.0.0", "cross-env": "^10.0.0", "csp-parse": "0.0.2", "csv-parse": "6.1.0", "eslint": "^9.33.0", "eslint-config-prettier": "^10.1.8", "eslint-import-resolver-typescript": "^4.4.2", "eslint-plugin-escompat": "^3.11.4", "eslint-plugin-eslint-comments": "^3.2.0", "eslint-plugin-filenames": "^1.3.2", "eslint-plugin-github": "^6.0.0", "eslint-plugin-i18n-text": "^1.0.1", "eslint-plugin-import": "^2.32.0", "eslint-plugin-jsx-a11y": "^6.10.2", "eslint-plugin-no-only-tests": "^3.3.0", "eslint-plugin-prettier": "^5.5.4", "eslint-plugin-primer-react": "^8.0.0", "event-to-promise": "^0.8.0", "globals": "^16.3.0", "graphql": "^16.9.0", "http-status-code": "^2.1.0", "husky": "^9.1.7", "jiti": "^2.6.1", "json-schema-merge-allof": "^0.8.1", "lint-staged": "^16.0.0", "markdownlint": "^0.34.0", "markdownlint-rule-search-replace": "^1.2.0", "mkdirp": "^3.0.1", "mockdate": "^3.0.5", "nock": "^14.0.4", "nodemon": "3.1.10", "patch-package": "^8.0.1", "prettier": "^3.3.3", "rimraf": "^6.0.1", "robots-parser": "^3.0.1", "sass": "^1.77.8", "start-server-and-test": "^2.0.11", "typescript": "^5.8.3", "unist-util-remove": "^4.0.0", "unist-util-visit-parents": "6.0.1", "vitest": "^4.0.4", "website-scraper": "^5.3.1" }, "overrides": { "esbuild": "^0.25" }, "optionalDependencies": { "esm": "^3.2.25" }, "engines": { "node": "^22 || ^24" }, "cacheDirectories": [ "node_modules", ".next/cache" ] }