{
  "name": "canvas-lms",
  "license": "AGPL-3.0",
  "version": "0.0.0",
  "engines": {
    "node": ">=20.0.0",
    "yarn": "^1.19.1"
  },
  "private": true,
  "workspaces": {
    "packages": [
      "gems/plugins/*",
      "packages/*",
      "ui/engine",
      "ui/shared/*"
    ]
  },
  "dependencies": {
    "@apollo/client": "3.12.4",
    "@craftjs/core": "0.2.11",
    "@hookform/resolvers": "^3.9.0",
    "@instructure.ai/aiinfo": "2.11.1",
    "@instructure/brandable_css": "^3.1.0",
    "@instructure/canvas-media": "*",
    "@instructure/debounce": "11.6.0",
    "@instructure/emotion": "11.6.0",
    "@instructure/media-capture": "12.0.0",
    "@instructure/outcomes-ui": "4.1.4",
    "@instructure/platform-alerts": "0.2.0",
    "@instructure/platform-error-boundary": "0.2.0",
    "@instructure/platform-generic-error-page": "1.0.0",
    "@instructure/platform-get-cookie": "0.2.0",
    "@instructure/platform-images": "0.2.0",
    "@instructure/platform-instui-bindings": "0.4.1",
    "@instructure/platform-learning-agent-launcher": "1.1.1",
    "@instructure/platform-institutional-tagging": "6.5.1",
    "@instructure/platform-loading-indicator": "0.2.0",
    "@instructure/platform-notebook": "0.5.0",
    "@instructure/platform-nutrition-facts": "0.2.0",
    "@instructure/platform-provider": "0.5.0",
    "@instructure/platform-query": "0.2.0",
    "@instructure/platform-study-assist": "0.12.1",
    "@instructure/platform-widget-dashboard": "4.0.0",
    "@instructure/platform-with-breakpoints": "^0.2.0",
    "@instructure/react-crop": "^5.0.1",
    "@instructure/reactour": "https://github.com/instructure/reactour#b908434fe544703e26bc67c67c4111252c401f92",
    "@instructure/ready": "*",
    "@instructure/studio-player": "1.10.0",
    "@instructure/ui-a11y-content": "11.6.0",
    "@instructure/ui-a11y-utils": "11.6.0",
    "@instructure/ui-alerts": "11.6.0",
    "@instructure/ui-avatar": "11.6.0",
    "@instructure/ui-badge": "11.6.0",
    "@instructure/ui-billboard": "11.6.0",
    "@instructure/ui-breadcrumb": "11.6.0",
    "@instructure/ui-buttons": "11.6.0",
    "@instructure/ui-calendar": "11.6.0",
    "@instructure/ui-checkbox": "11.6.0",
    "@instructure/ui-color-picker": "11.6.0",
    "@instructure/ui-date-input": "11.6.0",
    "@instructure/ui-date-time-input": "11.6.0",
    "@instructure/ui-decorator": "11.6.0",
    "@instructure/ui-dialog": "11.6.0",
    "@instructure/ui-drawer-layout": "11.6.0",
    "@instructure/ui-editable": "11.6.0",
    "@instructure/ui-file-drop": "11.6.0",
    "@instructure/ui-flex": "11.6.0",
    "@instructure/ui-focusable": "11.6.0",
    "@instructure/ui-form-field": "11.6.0",
    "@instructure/ui-grid": "11.6.0",
    "@instructure/ui-heading": "11.6.0",
    "@instructure/ui-i18n": "11.6.0",
    "@instructure/ui-icons": "11.6.0",
    "@instructure/ui-img": "11.6.0",
    "@instructure/ui-instructure": "11.6.0",
    "@instructure/ui-link": "11.6.0",
    "@instructure/ui-list": "11.6.0",
    "@instructure/ui-media-player": "12.0.0",
    "@instructure/ui-menu": "11.6.0",
    "@instructure/ui-metric": "11.6.0",
    "@instructure/ui-modal": "11.6.0",
    "@instructure/ui-motion": "11.6.0",
    "@instructure/ui-navigation": "11.6.0",
    "@instructure/ui-number-input": "11.6.0",
    "@instructure/ui-overlays": "11.6.0",
    "@instructure/ui-pagination": "11.6.0",
    "@instructure/ui-pill": "11.6.0",
    "@instructure/ui-portal": "11.6.0",
    "@instructure/ui-progress": "11.6.0",
    "@instructure/ui-radio-input": "11.6.0",
    "@instructure/ui-rating": "11.6.0",
    "@instructure/ui-react-utils": "11.6.0",
    "@instructure/ui-responsive": "11.6.0",
    "@instructure/ui-select": "11.6.0",
    "@instructure/ui-side-nav-bar": "11.6.0",
    "@instructure/ui-simple-select": "11.6.0",
    "@instructure/ui-spinner": "11.6.0",
    "@instructure/ui-svg-images": "11.6.0",
    "@instructure/ui-table": "11.6.0",
    "@instructure/ui-tabs": "11.6.0",
    "@instructure/ui-tag": "11.6.0",
    "@instructure/ui-text": "11.6.0",
    "@instructure/ui-text-area": "11.6.0",
    "@instructure/ui-text-input": "11.6.0",
    "@instructure/ui-themes": "11.6.0",
    "@instructure/ui-time-select": "11.6.0",
    "@instructure/ui-toggle-details": "11.6.0",
    "@instructure/ui-tooltip": "11.6.0",
    "@instructure/ui-top-nav-bar": "11.6.0",
    "@instructure/ui-tray": "11.6.0",
    "@instructure/ui-tree-browser": "11.6.0",
    "@instructure/ui-view": "11.6.0",
    "@instructure/uid": "11.6.0",
    "@instructure/updown": "^1.3",
    "@microsoft/immersive-reader-sdk": "^1.4.0",
    "@peculiar/asn1-schema": "^2.3.6",
    "@peculiar/x509": "^1.9.3",
    "@pendo/agent": "^2.278.0",
    "@popperjs/core": "^2.9.2",
    "@react-dnd/invariant": "^4.0.1",
    "@react-dnd/shallowequal": "^4.0.1",
    "@sentry/cli": "^2.21.5",
    "@sentry/react": "^7.81.0",
    "@swc/core": "^1.15",
    "@swc/jest": "^0.2.36",
    "@tanstack/react-pacer": "0.11.0",
    "@tanstack/react-query": "^5.74.4",
    "apollo-utilities": "^1.3.2",
    "apollo3-cache-persist": "^0.7.0",
    "axios": "^1.15.0",
    "axios-cache-adapter": "^2.7.0",
    "b-spline": "^2.0.2",
    "backbone": "1.1.1",
    "big.js": "^6.2.1",
    "browserslist": "^4.25.1",
    "canvas_offline_course_viewer": "https://github.com/instructure/canvas_offline_course_viewer.git#1.2.0",
    "chart.js": "^3.9.1",
    "chartjs-adapter-moment": "^1.0.0",
    "classnames": "2.5.1",
    "color-slicer": "0.8.0",
    "create-react-class": "^15.6.3",
    "crypto-js": "^4.2.0",
    "d3": "3.5.17",
    "emoji-mart": "^3.0.1",
    "es-abstract": "^1.24.1",
    "es-toolkit": "^1.42.0",
    "export-from-json": "^1.6.0",
    "final-form": "^4.20.2",
    "fullcalendar": "3.10.5",
    "graphiql": "3.2.2",
    "graphiql-explorer": "^0.4.2",
    "graphql": "^16",
    "graphql-request": "^7.1.2",
    "graphql-ws": "^6.0.4",
    "html2canvas": "^1.4.1",
    "i18n-js": "^3",
    "i18next": "^24.0.0",
    "immer": "^3",
    "immutability-helper": "^3",
    "immutable": "^3.8.3",
    "invariant": "^2.2.2",
    "is-valid-domain": "^0.0.11",
    "jquery-migrate": "3.4.1",
    "jquery.cookie": "^1.4.1",
    "jquery.elastic": "1.0.0",
    "jquery3": "npm:jquery@^3.7.1",
    "localforage": "^1.10.0",
    "md5": "^2.2.1",
    "mediaelement": "https://github.com/instructure/mediaelement.git#master",
    "mime": "^4.0.1",
    "minimatch": "^3.1.5",
    "moment": "^2.29.4",
    "moment-timezone": "^0.5.48",
    "nanoid": "3.3.8",
    "normalize-scroll-left": "^0.2",
    "p-queue": "9.1.0",
    "page": "^1.11",
    "parse-decimal-number": "1.0.0",
    "prop-types": "^15",
    "punycode2": "1.0.1",
    "qs": "6.15.0",
    "re-resizable": "6.9.16",
    "react": "^18",
    "react-beautiful-dnd": "^13.1.1",
    "react-chartjs-2": "^5.2.0",
    "react-confetti-explosion": "^2.1.2",
    "react-contenteditable": "^3.3.7",
    "react-dnd": "6.0",
    "react-dnd-html5-backend": "6.0",
    "react-dom": "^18",
    "react-final-form": "^6.5.3",
    "react-i18next": "^15.0.0",
    "react-hook-form": "^7.53.0",
    "react-identicons": "^1.2.5",
    "react-immutable-proptypes": "^2.1.0",
    "react-lazy-load": "^4.0.1",
    "react-modal": "^3",
    "react-moveable": "0.56.0",
    "react-popper": "^2.2.5",
    "react-redux": "^7",
    "react-router-dom": "^6.30.3",
    "react-slick": "^0.30.2",
    "react-tokeninput": "^2.5.0",
    "react-transition-group": "^1",
    "react-use": "17.6.0",
    "redux": "^4.0.1",
    "redux-actions": "^2.6.4",
    "redux-promise": "^0.6",
    "redux-saga": "^0.16.0",
    "redux-thunk": "^3.1.0",
    "reselect": "^4.0.0",
    "rspack-manifest-plugin": "^5.0.0",
    "slick-carousel": "^1.8.1",
    "spin.js": "2.3.2",
    "styled-components": ">= 4",
    "swc-loader": "^0.2.6",
    "swc-plugin-coverage-instrument": "^0.0.32",
    "swfobject": "^2.2.1",
    "tablesorter": "2.32.0",
    "timezone": "npm:@instructure/timezone@1.0.32",
    "tinycolor2": "^1.6.0",
    "twitter-text": "^3.1.0",
    "use-debounce": "^10",
    "use-media-set": "^1.1",
    "uuid": "3.4.0",
    "velocity-animate": "^1.5.0",
    "webpack-retry-chunk-load-plugin": "^3.1.1",
    "yarn-deduplicate": "^3.0.1",
    "zod": "^3.22.4",
    "zustand": "^4.5.5"
  },
  "devDependencies": {
    "@babel/cli": "^7.0.0",
    "@babel/core": "^7.0.0",
    "@babel/parser": "^7",
    "@babel/plugin-proposal-class-properties": "^7",
    "@babel/plugin-proposal-decorators": "^7.27.1",
    "@babel/plugin-proposal-optional-chaining": "^7",
    "@babel/plugin-transform-modules-commonjs": "^7",
    "@babel/plugin-transform-react-constant-elements": "^7",
    "@babel/plugin-transform-react-inline-elements": "^7",
    "@babel/plugin-transform-runtime": "^7",
    "@babel/preset-env": "^7",
    "@babel/preset-react": "^7",
    "@babel/preset-typescript": "^7",
    "@biomejs/biome": "2.2.4",
    "@eslint-community/eslint-plugin-eslint-comments": "^4.4.1",
    "@eslint/js": "^9.16.0",
    "@graphql-codegen/cli": "^5.0.6",
    "@graphql-codegen/schema-ast": "^4.1.0",
    "@graphql-tools/mock": "^9",
    "@graphql-tools/schema": "^9",
    "@instructure/browserslist-config-canvas-lms": ">=2",
    "@instructure/i18nliner": "^3",
    "@instructure/i18nliner-canvas": "^1.3",
    "@instructure/i18nliner-handlebars": "^2",
    "@instructure/i18nliner-runtime": "^1.0.2",
    "@module-federation/enhanced": "^0.14.3",
    "@parcel/watcher": "^2.5.1",
    "@rspack/cli": "^1.6.4",
    "@rspack/core": "^1.6.4",
    "@rspack/plugin-react-refresh": "^1.4",
    "@sheerun/mutationobserver-shim": "0.3.2",
    "@tanstack/query-persist-client-core": "^5.74.4",
    "@testing-library/dom": "^8",
    "@testing-library/jest-dom": "^5",
    "@testing-library/react": "^12",
    "@testing-library/react-hooks": "^8",
    "@testing-library/user-event": "^14",
    "@types/b-spline": "^2.0.4",
    "@types/big.js": "^6.2.2",
    "@types/jquery": "^3.5.6",
    "@types/jquery.cookie": "^1.4.32",
    "@types/jqueryui": "^1.12.16",
    "@types/qs": "6.15.0",
    "@types/react": "^18",
    "@types/react-beautiful-dnd": "^13.1.8",
    "@types/react-dnd": "2.0.36",
    "@types/react-dom": "^18",
    "@types/react-slick": "^0.23.13",
    "@types/tinycolor2": "^1.4.6",
    "@types/twitter-text": "^3.1.2",
    "@types/uuid": "^9.0.0",
    "@typescript/native-preview": "7.0.0-dev.20260423.1",
    "@vitest/coverage-v8": "^3.0.3",
    "@vitest/ui": "^3.0.3",
    "@yarnpkg/lockfile": "^1.0.2",
    "array-flat-polyfill": "^1.0.1",
    "axe-core": "~2.1.7",
    "axios-mock-adapter": "^2.1.0",
    "babel-jest": "^29.7.0",
    "babel-plugin-transform-react-remove-prop-types": "^0.4",
    "babel-plugin-typescript-to-proptypes": "^2.1.0",
    "chai-assert-change": "^2.0.0",
    "change-case": "3.0.1",
    "concurrently": "^7.2.0",
    "core-js": "^3.20.3",
    "core-js-builder": "^3",
    "coverage-istanbul-loader": "^3.0.5",
    "css-loader": "^3",
    "dependency-cruiser": "^16.9.0",
    "eslint": "^9.35",
    "eslint-plugin-import": "^2.31.0",
    "eslint-plugin-jest": "^28.9.0",
    "eslint-plugin-jsx-a11y": "^6.10.2",
    "eslint-plugin-notice": "^1.0.0",
    "eslint-plugin-promise": "^7.2.1",
    "eslint-plugin-react": "^7.37.2",
    "eslint-plugin-react-compiler": "^19.0.0-beta-27714ef-20250124",
    "eslint-plugin-react-hooks": "^5.1.0",
    "eslint-plugin-vitest-globals": "^1.5.0",
    "fast-check": "^4.3.0",
    "fast-glob": "^3.2.4",
    "fetch-mock": "9.11.0",
    "gglobby": "0.0.3",
    "glob": "^7",
    "globals": "^15.13.0",
    "gulp": "^4",
    "gulp-file": "^0.4",
    "gulp-filter": "^6",
    "gulp-insert": "^0.5",
    "gulp-load-plugins": "^2",
    "gulp-rename": "^2",
    "gulp-rev": "^9",
    "gulp-sourcemaps": "^2",
    "gulp-uglify": "^3",
    "handlebars": "1.3.0",
    "happy-dom": "^12.10.3",
    "istanbul-merge": "^1.1.1",
    "jest": "^29.7.0",
    "jest-canvas-mock": "^2",
    "jest-config": "^28",
    "jest-environment-jsdom": "^29.7.0",
    "jest-fixed-jsdom": "^0.0.9",
    "jest-junit": "^7",
    "jest-localstorage-mock": "^2",
    "jsdom": "25.0.1",
    "jsdom-global": "^3.0.2",
    "lint-staged": "^9",
    "merge-stream": "^2",
    "micromatch": "^4.0.4",
    "mkdirp": "^1.0.4",
    "mockdate": "^2.0.2",
    "moment-timezone-data-webpack-plugin": "^1.5.1",
    "msw": "^2.7",
    "nyc": "^13",
    "oxlint": "^1.62.0",
    "patch-package": "^8.0.0",
    "react-moment-proptypes": "^1.4.0",
    "react-refresh": "^0.17.0",
    "react-test-renderer": "^18",
    "redux-devtools-extension": "^2.13.2",
    "redux-logger": "^3.0.6",
    "sass-direction": "^1",
    "stream-browserify": "^3",
    "style-loader": "^0.23",
    "stylelint": "10.1.0",
    "through2": "^3",
    "timezone-mock": "^1.3.1",
    "tinymce": "^5",
    "ts-node": "^10.9.2",
    "typescript": "^6.0.2",
    "typescript-eslint": "^8.18.0",
    "vitest": "^3.0.3",
    "waait": "^1",
    "wrap-ansi": "^7.0.0",
    "wsrun": "^5",
    "xsslint": "instructure/xsslint#babel7"
  },
  "optionalDependencies": {},
  "browserslist": [
    "extends @instructure/browserslist-config-canvas-lms"
  ],
  "repository": "instructure/canvas-lms",
  "scripts": {
    "test": "vitest run --color",
    "test:coverage": "script/generate_js_coverage",
    "test:watch": "vitest watch --color",
    "test:build": "if [ \"$COVERAGE\" = \"1\" ]; then vitest run --color --coverage --shard=$CI_NODE_INDEX/$CI_NODE_TOTAL; else vitest run --color --shard=$CI_NODE_INDEX/$CI_NODE_TOTAL; fi",
    "test:packages": "wsrun --report -m -l -s -c test",
    "build": "yarn run graphql:codegen && yarn run build:css && yarn run build:packages && yarn run build:js",
    "build:watch": "concurrently --raw \"yarn build:css:watch\" \"yarn build:js:watch\" \"yarn graphql:codegen --watch\"",
    "build:css": "brandable_css",
    "build:css:compressed": "SASS_STYLE=compressed brandable_css",
    "build:css:watch": "brandable_css --watch",
    "build:js": "yarn run webpack-development",
    "build:js:watch": "yarn run webpack",
    "build:packages": "wsrun --fast-exit --exclude-missing --report -c build",
    "check": "yarn check:ts && yarn lint --quiet",
    "check:js": "tsgo --checkJs -p tsconfig.json",
    "generate:extensions": "node ui-build/webpack/generatePluginExtensions.js",
    "check:ts": "yarn generate:extensions && tsgo -p tsconfig.json",
    "check:ts:watch": "yarn generate:extensions && tsgo --watch -p tsconfig.json",
    "check:biome": "yarn biome ci --since=HEAD^ --changed",
    "graphql:codegen": "yarn graphql-codegen --config ui/codegen.ts",
    "serve": "gulp rev 1> /dev/null & NODE_ENV=development rspack serve",
    "lint:packages": "yarn lint:oxlint:packages",
    "lint:staged": "lint-staged",
    "lint:style": "stylelint './app/**/*.{css,scss}' './packages/**/*.{css,scss}'",
    "lint:xss": "node ./script/xsslint.js",
    "i18n:check": "node_modules/@instructure/i18nliner-canvas/bin/i18nliner check",
    "i18n:extract": "node_modules/@instructure/i18nliner-canvas/bin/i18nliner export --translationsFile config/locales/generated/en-js.json --indexFile config/locales/generated/en-js-index.json",
    "i18n:extract:i18next": "node scripts/extract-i18next-strings.js",
    "lint:oxlint": "oxlint --config oxlint.json ui/ ui-build/",
    "lint": "yarn lint:oxlint",
    "postinstall": "yarn dedupe-yarn; patch-package; rm -rf node_modules/@instructure/outcomes-ui/node_modules/@instructure; [ -f ./script/install_hooks ] && ./script/install_hooks || true",
    "webpack:analyze": "SKIP_SOURCEMAPS=1 WEBPACK_PEDANTIC=0 rspack --analyze",
    "webpack": "gulp rev 1> /dev/null & NODE_ENV=development rspack --watch=true & yarn graphql:codegen --watch",
    "webpack-development": "NODE_ENV=development rspack build",
    "webpack-production": "NODE_ENV=production rspack build",
    "jspec": "./spec/jspec.sh",
    "jspec-watch": "./spec/jspec.sh --watch",
    "a11y-report": "./spec/jspec.sh --a11y",
    "upgrade-and-dedupe": "rm -rf yarn.lock node_modules && yes 1 | yarn install --flat --production --ignore-scripts && git checkout package.json && yarn install && git add yarn.lock",
    "upgrade-instructure-ui": "script/upgrade-instructure-ui",
    "dedupe-yarn": "yarn yarn-deduplicate",
    "clean": "wsrun --serial --exclude-missing -c clean",
    "lint:oxlint:packages": "oxlint --config packages/canvas-rce/oxlint.json packages/canvas-rce/src/"
  },
  "resolutions": {
    "zod": "3.22.4",
    "punycode": "npm:punycode2@1.0.1",
    "@tanstack/query-core": "5.95.2",
    "@tanstack/query-persist-client-core": "5.95.2",
    "decode-uri-component": "0.2.2",
    "form-data": ">=4.0.4",
    "graphael": "https://github.com/instructure/graphael.git",
    "@instructure/canvas-theme": "11.6.0",
    "@instructure/debounce": "11.6.0",
    "@instructure/emotion": "11.6.0",
    "@instructure/ui-a11y-content": "11.6.0",
    "@instructure/ui-a11y-utils": "11.6.0",
    "@instructure/ui-alerts": "11.6.0",
    "@instructure/ui-avatar": "11.6.0",
    "@instructure/ui-badge": "11.6.0",
    "@instructure/ui-billboard": "11.6.0",
    "@instructure/ui-buttons": "11.6.0",
    "@instructure/ui-checkbox": "11.6.0",
    "@instructure/ui-color-picker": "11.6.0",
    "@instructure/ui-color-utils": "11.6.0",
    "@instructure/ui-dom-utils": "11.6.0",
    "@instructure/ui-drilldown": "11.6.0",
    "@instructure/ui-editable": "11.6.0",
    "@instructure/ui-file-drop": "11.6.0",
    "@instructure/ui-flex": "11.6.0",
    "@instructure/ui-focusable": "11.6.0",
    "@instructure/ui-form-field": "11.6.0",
    "@instructure/ui-grid": "11.6.0",
    "@instructure/ui-heading": "11.6.0",
    "@instructure/ui-icons": "11.6.0",
    "@instructure/ui-img": "11.6.0",
    "@instructure/ui-link": "11.6.0",
    "@instructure/ui-list": "11.6.0",
    "@instructure/ui-menu": "11.6.0",
    "@instructure/ui-metric": "11.6.0",
    "@instructure/ui-modal": "11.6.0",
    "@instructure/ui-motion": "11.6.0",
    "@instructure/ui-number-input": "11.6.0",
    "@instructure/ui-overlays": "11.6.0",
    "@instructure/ui-pagination": "11.6.0",
    "@instructure/ui-pill": "11.6.0",
    "@instructure/ui-popover": "11.6.0",
    "@instructure/ui-progress": "11.6.0",
    "@instructure/ui-radio-input": "11.6.0",
    "@instructure/ui-react-utils": "11.6.0",
    "@instructure/ui-responsive": "11.6.0",
    "@instructure/ui-select": "11.6.0",
    "@instructure/ui-simple-select": "11.6.0",
    "@instructure/ui-source-code-editor": "11.6.0",
    "@instructure/ui-spinner": "11.6.0",
    "@instructure/ui-svg-images": "11.6.0",
    "@instructure/ui-table": "11.6.0",
    "@instructure/ui-tabs": "11.6.0",
    "@instructure/ui-text": "11.6.0",
    "@instructure/ui-text-area": "11.6.0",
    "@instructure/ui-text-input": "11.6.0",
    "@instructure/ui-themes": "11.6.0",
    "@instructure/ui-toggle-details": "11.6.0",
    "@instructure/ui-tooltip": "11.6.0",
    "@instructure/ui-tray": "11.6.0",
    "@instructure/ui-tree-browser": "11.6.0",
    "@instructure/ui-range-input": "11.6.0",
    "@instructure/ui-media-player": "12.0.0",
    "@instructure/ui-truncate-text": "11.6.0",
    "@instructure/ui-utils": "11.6.0",
    "@instructure/ui-view": "11.6.0",
    "@instructure/uid": "11.6.0",
    "jsdom": "25.0.1",
    "webpack-dev-server/webpack-dev-middleware": "5.3.4",
    "@microsoft/immersive-reader-sdk/minimatch": "3.1.5"
  },
  "packageManager": "yarn@1.19.1+sha512.8019df6cbf6b618d391add1c8c986cfec8aa4171d89596a54e32b79d79f640edb4c5b90814fa1bf8b947e3830be3b19c478554f7fd9d61c93505614cd096afc7"
}
