{
  "name": "freecodecamp",
  "version": "0.1.0",
  "repository": "freecodecamp/freecodecamp",
  "scripts": {
    "only-once": "npm run create-rev && echo '/****/' && echo 'Seeding Database' && echo '/****/' && node seed && echo '/****/' && echo 'Seeding Completed' && echo '/****/'",
    "create-rev": "node -e \"var fs = require('fs'); fs.access('./server/rev-manifest.json', function(err) { if (err) { console.log('\\n\\ncreating manifest\\n\\n'); return fs.writeFileSync('server/rev-manifest.json', '{}'); } console.log('\\n\\nrev-manifest present\\n\\n'); });\"",
    "build": "NODE_ENV=production gulp build -p",
    "start": "babel-node server/server.js",
    "prestart-production": "gulp build -p",
    "start-production": "node pm2Start",
    "lint": "npm run lint-js && npm run lint-json",
    "lint-challenges": "jsonlint-cli seed/challenges/**/*.json",
    "lint-server": "jsonlint-cli server/*.json",
    "lint-resources": "jsonlint-cli server/resources/*.json",
    "lint-utils": "jsonlint-cli server/utils/*.json",
    "prelint-js": "npm run create-rev",
    "lint-js": "eslint --ext=.js,.jsx gulpfile.js server/ common/ config/ client/",
    "lint-json": "npm run lint-server && npm run lint-challenges && npm run lint-resources && npm run lint-utils",
    "pretest": "npm run create-rev && npm run lint",
    "snyk-protect": "snyk protect",
    "prepublish": "npm run snyk-protect",
    "test-challenges": "babel-node seed/test-challenges.js | tap-spec",
    "test-js": "npm run test-js-client && npm run test-js-common && npm run test-js-server",
    "test-js-client": "tape -r babel-register \"client/**/*.test.js\" | tap-spec",
    "test-js-common": "tape -r babel-register \"common/**/*.test.js\" | tap-spec",
    "test-js-server": "tape -r babel-register \"server/**/*.test.js\" | tap-spec",
    "test": "npm run test-js && npm run test-challenges",
    "cover": "babel-node ./node_modules/.bin/babel-istanbul cover tape common/**/*.test.js",
    "coveralls": "npm run cover && istanbul-coveralls"
  },
  "license": "(BSD-3-Clause AND CC-BY-SA-4.0)",
  "dependencies": {
    "accepts": "^1.3.0",
    "babel-core": "^6.18.1",
    "babel-preset-es2015": "^6.3.13",
    "babel-preset-react": "^6.3.13",
    "babel-register": "^6.3.0",
    "body-parser": "^1.13.2",
    "bootstrap": "~3.3.7",
    "cal-heatmap": "~3.5.2",
    "chai": "~3.4.1",
    "classnames": "^2.1.2",
    "codemirror": "~5.15.2",
    "compression": "^1.6.0",
    "connect-mongo": "^1.3.2",
    "cookie-parser": "^1.4.0",
    "csurf": "^1.8.3",
    "d3": "~3.5.17",
    "debug": "^2.2.0",
    "dedent": "~0.7.0",
    "dotenv": "^4.0.0",
    "emmet-codemirror": "^1.2.5",
    "errorhandler": "^1.4.2",
    "es6-map": "~0.1.1",
    "express": "^4.13.3",
    "express-flash": "~0.0.2",
    "express-session": "^1.12.1",
    "express-state": "^1.2.0",
    "express-validator": "^3.0.0",
    "fetchr": "~0.5.12",
    "font-awesome": "~4.5.0",
    "frameguard": "^3.0.0",
    "googleapis": "16.1.0",
    "helmet": "^3.1.0",
    "helmet-csp": "^2.1.0",
    "history": "^3.2.1",
    "invariant": "^2.2.1",
    "jade": "^1.11.0",
    "jquery": "~3.1.1",
    "jshint": "~2.9.4",
    "jsonlint-cli": "^1.0.1",
    "lightbox2": "~2.8.2",
    "lodash": "^4.1.0",
    "loopback": "^2.22.0",
    "loopback-boot": "^2.13.0",
    "loopback-component-passport": "^2.0.0",
    "loopback-connector-mongodb": "1.17.0",
    "method-override": "^2.3.0",
    "moment": "^2.10.2",
    "moment-timezone": "^0.5.0",
    "mongodb": "^2.0.33",
    "morgan": "^1.6.1",
    "mousetrap": "~1.6.0",
    "node-emoji": "^1.4.1",
    "nodemailer": "^2.1.0",
    "nodemailer-ses-transport": "^1.3.0",
    "normalize-url": "^1.3.1",
    "normalizr": "2.2.1",
    "object.assign": "^4.0.3",
    "passport": "^0.2.1",
    "passport-facebook": "^2.0.0",
    "passport-github": "^1.0.0",
    "passport-google-oauth2": "~0.1.6",
    "passport-linkedin-oauth2": "^1.2.1",
    "passport-local": "^1.0.0",
    "passport-oauth": "^1.0.0",
    "passport-twitter": "^1.0.3",
    "pmx": "~0.6.2",
    "react": "~15.4.2",
    "react-addons-css-transition-group": "~15.4.2",
    "react-addons-shallow-compare": "~15.4.2",
    "react-bootstrap": "^0.30.5",
    "react-codemirror": "^0.3.0",
    "react-dom": "~15.4.2",
    "react-fontawesome": "^1.2.0",
    "react-images": "^0.5.1",
    "react-motion": "~0.4.2",
    "react-no-ssr": "^1.0.1",
    "react-notification": "https://github.com/BerkeleyTrue/react-notification#freecodecamp",
    "react-pure-render": "^1.0.2",
    "react-redux": "^4.0.6",
    "react-router": "^3.0.0",
    "react-router-bootstrap": "~0.23.1",
    "react-router-redux": "^4.0.7",
    "react-youtube": "^7.0.0",
    "redux": "^3.0.5",
    "redux-actions": "^2.0.2",
    "redux-create-types": "0.0.1",
    "redux-epic": "^0.2.0",
    "redux-form": "^5.2.3",
    "request": "^2.65.0",
    "reselect": "^3.0.0",
    "rx": "~4.0.8",
    "sanitize-html": "^1.11.1",
    "snyk": "^1.19.1",
    "store": "https://github.com/berkeleytrue/store.js.git#feature/noop-server",
    "uuid": "^3.0.1",
    "validator": "^6.0.0"
  },
  "devDependencies": {
    "adler32": "~0.1.7",
    "babel-cli": "^6.3.17",
    "babel-eslint": "^7.0.0",
    "babel-istanbul": "^0.12.1",
    "babel-loader": "^6.2.1",
    "babel-plugin-add-module-exports": "^0.2.1",
    "babel-preset-stage-0": "^6.3.13",
    "browser-sync": "^2.9.12",
    "chunk-manifest-webpack-plugin": "0.1.0",
    "del": "^2.2.0",
    "eslint": "^3.1.0",
    "eslint-plugin-import": "^2.0.1",
    "eslint-plugin-prefer-object-spread": "^1.1.0",
    "eslint-plugin-react": "^6.9.0",
    "gulp": "^3.9.0",
    "gulp-babel": "^6.1.1",
    "gulp-concat": "^2.6.0",
    "gulp-eslint": "^3.0.1",
    "gulp-if": "^2.0.0",
    "gulp-jsonlint": "^1.1.0",
    "gulp-less": "^3.0.3",
    "gulp-nodemon": "^2.0.3",
    "gulp-notify": "^3.0.0",
    "gulp-plumber": "^1.0.1",
    "gulp-reduce-file": "0.0.1",
    "gulp-rev": "^7.0.0",
    "gulp-sourcemaps": "^2.2.1",
    "gulp-tape": "0.0.9",
    "gulp-uglify": "^2.0.0",
    "gulp-util": "^3.0.6",
    "istanbul-coveralls": "^1.0.3",
    "json-loader": "~0.5.2",
    "less": "^2.5.1",
    "loopback-component-explorer": "^2.1.1",
    "merge-stream": "^1.0.0",
    "proxyquire": "^1.7.10",
    "react-hot-loader": "^1.3.0",
    "rev-del": "^1.0.5",
    "sinon": "^2.0.0",
    "sort-keys": "^1.1.1",
    "tap-spec": "^4.1.1",
    "tape": "^4.2.2",
    "webpack": "^1.9.12",
    "webpack-dev-middleware": "^1.8.3",
    "webpack-hot-middleware": "^2.12.2",
    "webpack-manifest-plugin": "^1.0.0",
    "webpack-stream": "^3.1.0",
    "yargs": "^7.0.1"
  },
  "snyk": true
}