{
  "name": "grist-core",
  "version": "1.2.0",
  "license": "Apache-2.0",
  "description": "Grist is the evolution of spreadsheets",
  "homepage": "https://github.com/gristlabs/grist-core",
  "repository": "git://github.com/gristlabs/grist-core.git",
  "scripts": {
    "start": "sandbox/watch.sh",
    "start:debug": "NODE_INSPECT=--inspect sandbox/watch.sh",
    "start:debug-brk": "NODE_INSPECT=--inspect-brk sandbox/watch.sh",
    "install:python": "buildtools/prepare_python.sh",
    "install:python2": "buildtools/prepare_python2.sh",
    "install:python3": "buildtools/prepare_python3.sh",
    "build:prod": "buildtools/build.sh",
    "start:prod": "sandbox/run.sh",
    "test": "GRIST_TEST_LOGIN=1 ./test/test_env.sh mocha ${DEBUG:+-b --no-exit} --slow 8000 $([ -z $DEBUG ] && echo --forbid-only) -g \"${GREP_TESTS}\" '_build/test/common/*.js' '_build/test/client/*.js' '_build/test/nbrowser/*.js' '_build/test/nbrowser_with_stubs/**/*.js' '_build/test/server/**/*.js' '_build/test/gen-server/**/*.js'",
    "test:nbrowser": "GRIST_TEST_LOGIN=1 TEST_SUITE=nbrowser TEST_SUITE_FOR_TIMINGS=nbrowser TIMINGS_FILE=test/timings/nbrowser.txt ./test/test_env.sh mocha ${DEBUG:+-b --no-exit} $([ -z $DEBUG ] && echo --forbid-only) -g \"${GREP_TESTS}\" --slow 8000 -R test/xunit-file '_build/test/nbrowser/**/*.js'",
    "test:stubs": "GRIST_TEST_LOGIN=1 ./test/test_env.sh mocha ${DEBUG:+-b --no-exit} $([ -z $DEBUG ] && echo --forbid-only) -g \"${GREP_TESTS}\" --slow 8000 -R test/xunit-file '_build/test/nbrowser_with_stubs/**/*.js'",
    "test:client": "./test/test_env.sh mocha ${DEBUG:+'-b'} '_build/test/client/**/*.js'",
    "test:common": "./test/test_env.sh mocha ${DEBUG:+'-b'} '_build/test/common/**/*.js'",
    "test:server": "TEST_SUITE=server TEST_SUITE_FOR_TIMINGS=server TIMINGS_FILE=test/timings/server.txt ./test/test_env.sh mocha ${DEBUG:+'-b'} -g \"${GREP_TESTS}\" -R test/xunit-file '_build/test/server/**/*.js' '_build/test/gen-server/**/*.js'",
    "test:smoke": "./test/test_env.sh mocha _build/test/nbrowser/Smoke.js",
    "test:docker": "./test/test_under_docker.sh",
    "test:python": "sandbox_venv3/bin/python sandbox/grist/runtests.py ${GREP_TESTS:+discover -p \"test*${GREP_TESTS}*.py\"}",
    "cli": "NODE_PATH=_build:_build/stubs:_build/ext node _build/app/server/companion.js",
    "lint": "eslint --cache --cache-strategy content .",
    "lint:fix": "eslint  --cache --cache-strategy=content --fix .",
    "lint:ci": "eslint --max-warnings=0 .",
    "generate:translation": "NODE_PATH=_build:_build/stubs:_build/ext node buildtools/generate_translation_keys.js",
    "generate:schema:ts": "buildtools/update_schema.sh"
  },
  "keywords": [
    "grist",
    "spreadsheet",
    "database"
  ],
  "author": {
    "name": "Grist Labs Inc.",
    "email": "info@getgrist.com"
  },
  "private": false,
  "devDependencies": {
    "@babel/core": "7.18.5",
    "@babel/eslint-parser": "7.18.2",
    "@types/accept-language-parser": "1.5.2",
    "@types/backbone": "1.3.43",
    "@types/chai": "4.1.7",
    "@types/chai-as-promised": "7.1.0",
    "@types/content-disposition": "0.5.2",
    "@types/diff-match-patch": "1.0.32",
    "@types/dompurify": "3.0.5",
    "@types/double-ended-queue": "2.1.0",
    "@types/express": "4.17.17",
    "@types/form-data": "2.2.1",
    "@types/fs-extra": "5.0.4",
    "@types/http-proxy": "1.17.9",
    "@types/i18next-fs-backend": "1.1.2",
    "@types/image-size": "0.0.29",
    "@types/js-yaml": "3.11.2",
    "@types/jsdom": "21.1.6",
    "@types/jsesc": "3.0.1",
    "@types/jsonwebtoken": "7.2.8",
    "@types/lodash": "4.14.117",
    "@types/lru-cache": "5.1.1",
    "@types/mime-types": "2.1.0",
    "@types/mocha": "10.0.1",
    "@types/moment-timezone": "0.5.9",
    "@types/mousetrap": "1.6.2",
    "@types/node": "18.11.9",
    "@types/node-fetch": "2.6.2",
    "@types/pidusage": "2.0.1",
    "@types/plotly.js": "2.12.1",
    "@types/proper-lockfile": "4.1.2",
    "@types/qrcode": "1.4.2",
    "@types/redlock": "3.0.2",
    "@types/saml2-js": "2.0.1",
    "@types/selenium-webdriver": "4.1.22",
    "@types/sinon": "17.0.3",
    "@types/sqlite3": "3.1.6",
    "@types/swagger-ui": "3.52.4",
    "@types/tmp": "0.0.33",
    "@types/uuid": "3.4.4",
    "@types/which": "2.0.1",
    "@types/ws": "^8",
    "@typescript-eslint/eslint-plugin": "5.29.0",
    "@typescript-eslint/parser": "5.29.0",
    "app-module-path": "2.2.0",
    "chai": "4.2.0",
    "chai-as-promised": "7.1.1",
    "chance": "1.0.16",
    "chokidar-cli": "3.0.0",
    "esbuild-loader": "2.19.0",
    "eslint": "8.18.0",
    "http-proxy": "1.18.1",
    "i18next-scanner": "4.4.0",
    "mocha": "10.2.0",
    "mocha-webdriver": "0.3.4",
    "moment-locales-webpack-plugin": "^1.2.0",
    "nock": "13.5.5",
    "nodemon": "^2.0.4",
    "otplib": "12.0.1",
    "proper-lockfile": "4.1.2",
    "sinon": "17.0.1",
    "source-map-loader": "^0.2.4",
    "tmp-promise": "1.0.5",
    "ts-interface-builder": "0.3.2",
    "typescript": "4.7.4",
    "webpack": "5.91.0",
    "webpack-cli": "4.10.0",
    "why-is-node-running": "2.0.3"
  },
  "dependencies": {
    "@googleapis/drive": "0.3.1",
    "@googleapis/oauth2": "0.2.0",
    "@gristlabs/connect-sqlite3": "0.9.11-grist.5",
    "@gristlabs/express-session": "1.17.0",
    "@gristlabs/grist-widget": "^0.0.5",
    "@gristlabs/moment-guess": "1.2.4-grist.1",
    "@gristlabs/pidusage": "2.0.17",
    "@gristlabs/sqlite3": "5.1.4-grist.8",
    "@popperjs/core": "2.3.3",
    "accept-language-parser": "1.5.0",
    "ace-builds": "1.23.3",
    "async-mutex": "0.2.4",
    "axios": "1.6.8",
    "backbone": "1.3.3",
    "bootstrap": "3.4.1",
    "bootstrap-datepicker": "1.9.0",
    "bowser": "2.7.0",
    "bullmq": "5.8.7",
    "collect-js-deps": "^0.1.1",
    "color-convert": "2.0.1",
    "commander": "9.3.0",
    "components-jqueryui": "1.12.1",
    "connect-redis": "3.4.0",
    "cookie": "0.5.0",
    "cookie-parser": "1.4.3",
    "csv": "6.3.8",
    "currency-symbol-map": "5.1.0",
    "diff-match-patch": "1.0.5",
    "dompurify": "3.0.6",
    "double-ended-queue": "2.1.0-0",
    "engine.io": "^6.5.4",
    "engine.io-client": "^6.5.3",
    "exceljs": "4.2.1",
    "express": "4.19.2",
    "express-rate-limit": "7.2.0",
    "file-type": "16.5.4",
    "fs-extra": "7.0.0",
    "grain-rpc": "0.1.7",
    "grainjs": "1.0.2",
    "handlebars": "4.7.7",
    "highlight.js": "10.7.3",
    "http-proxy-agent": "5.0.0",
    "https-proxy-agent": "5.0.1",
    "i18n-iso-countries": "6.1.0",
    "i18next": "21.9.1",
    "i18next-http-middleware": "3.3.2",
    "image-size": "0.6.3",
    "jquery": "3.5.0",
    "js-yaml": "3.14.1",
    "jsdom": "^23.0.0",
    "jsesc": "3.0.2",
    "jsonwebtoken": "9.0.2",
    "knockout": "3.5.0",
    "locale-currency": "0.0.2",
    "lodash": "4.17.21",
    "marked": "14.0.0",
    "marked-highlight": "2.1.4",
    "marked-linkify-it": "3.1.11",
    "minio": "8.0.0",
    "moment": "2.29.4",
    "moment-timezone": "0.5.35",
    "morgan": "1.9.1",
    "mousetrap": "1.6.2",
    "multiparty": "4.2.2",
    "node-abort-controller": "3.0.1",
    "node-fetch": "2.6.7",
    "openid-client": "5.6.1",
    "pg": "8.6.0",
    "piscina": "3.2.0",
    "plotly.js-basic-dist": "2.13.2",
    "popper-max-size-modifier": "0.2.0",
    "popweasel": "0.1.20",
    "prom-client": "14.2.0",
    "qrcode": "1.5.0",
    "randomcolor": "0.5.3",
    "redis": "3.1.1",
    "redlock": "3.1.2",
    "saml2-js": "4.0.2",
    "short-uuid": "3.1.1",
    "slugify": "1.6.6",
    "swagger-ui-dist": "5.11.0",
    "tmp": "0.0.33",
    "ts-interface-checker": "1.0.2",
    "typeorm": "0.3.17",
    "underscore": "1.12.1",
    "uuid": "3.3.2",
    "winston": "2.4.5",
    "ws": "8.17.1"
  },
  "resolutions": {
    "jquery": "3.5.0",
    "ts-interface-checker": "1.0.2",
    "@gristlabs/sqlite3": "5.1.4-grist.8"
  },
  "mocha": {
    "require": [
      "test/setupPaths",
      "source-map-support/register",
      "test/report-why-tests-hang",
      "test/init-mocha-webdriver",
      "test/split-tests",
      "test/chai-as-promised"
    ]
  }
}