Asymmetrik/node-rest-starter

View on GitHub
package.json

Summary

Maintainability
Test Coverage
{
  "name": "node-rest-starter",
  "description": "Starter for a REST API using Node and Express.js",
  "version": "0.0.0",
  "private": true,
  "repository": {
    "type": "git",
    "url": "https://github.com:Asymmetrik/node-rest-starter.git"
  },
  "engines": {
    "node": ">=18.19.1",
    "npm": ">=10.2.4",
    "yarn": ">=1.5.1"
  },
  "scripts": {
    "init": "npm ci && npm run init:env:dev",
    "init:mongo": "npm run init && npm run init:mongo:up",
    "init:env:dev": "cp config/env/development.template.js config/development.js",
    "init:mongo:up": "docker compose -p node-rest-starter -f dev/mongo.yml up -d",
    "init:mongo:express": "docker compose -p node-rest-starter -f dev/mongo-express.yml up -d",
    "init:mongo:down": "docker compose -p node-rest-starter -f dev/mongo.yml down",
    "clean": "rm -rf dist",
    "start": "nodemon ./src/server.ts --exec 'npm run lint && node --inspect -r @swc-node/register'",
    "start:dev": "export NODE_ENV=development && npm run start",
    "start:prod": "cd dist && node ./src/server.js",
    "test": "NODE_ENV=test ALLOW_CONFIG_MUTATIONS=true nodemon -r @swc-node/register src/test.ts",
    "test:build": "cd dist && node -r @swc-node/register src/test.ts",
    "test:ci": "NODE_ENV=test ALLOW_CONFIG_MUTATIONS=true nyc --reporter=lcov --reporter=text-summary node -r @swc-node/register src/test.ts --ci",
    "test:gitlab": "NODE_ENV=testgitlab ALLOW_CONFIG_MUTATIONS=true nyc --reporter=lcov --reporter=text-summary node -r @swc-node/register src/test.ts --ci",
    "test:debug": "NODE_ENV=test ALLOW_CONFIG_MUTATIONS=true nodemon src/test.ts --exec 'node -r @swc-node/register --inspect-brk=:9339'",
    "build": "npm run lint",
    "build:prod": "npm run lint && npm run clean && npm run compile:prod && npm run link:prod",
    "compile:prod": "swc src --config-file .prod.swcrc -d dist --copy-files",
    "link:prod": "ln -s ../config ./dist/config && ln -s ../node_modules ./dist/node_modules && ln -s ../package.json ./dist/package.json && ln -s ../package-lock.json ./dist/package-lock.json",
    "lint": "npm run lint:eslint",
    "lint:fix": "npm run lint:eslint:fix",
    "lint:eslint": "eslint \"./**/*.{js,ts}\"",
    "lint:eslint:fix": "eslint \"./**/*.{js,ts}\" --fix",
    "tsc:check": "tsc --project tsconfig.json --noEmit",
    "tsc:watch": "tsc --watch --noEmit",
    "prepare": "husky"
  },
  "nyc": {
    "include": "src",
    "exclude": [
      "**/*.spec.js",
      "**/*.spec.ts",
      "src/test.ts"
    ]
  },
  "dependencies": {
    "agenda": "^4.3.0",
    "async": "^3.2.5",
    "compression": "1.7",
    "config": "^3.3.11",
    "connect-mongo": "^5.1.0",
    "cors": "^2.8.5",
    "csv-stringify": "4.0",
    "express": "4.19",
    "express-actuator": "^1.8.4",
    "express-async-errors": "^3.1.1",
    "express-json-validator-middleware": "^3.0.1",
    "express-session": "^1.18.0",
    "glob": "10.3.10",
    "handlebars": "^4.7.7",
    "helmet": "^7.1.0",
    "http-status-codes": "^2.3.0",
    "jsonpath": "^1.1.1",
    "lodash": "4.17.21",
    "luxon": "^1.28.1",
    "method-override": "3.0",
    "migrate-mongo": "^11.0.0",
    "mongoose": "^8.4.4",
    "mongoose-unique-validator": "^5.0.1",
    "morgan": "1.9",
    "multipipe": "^4.0.0",
    "nodemailer": "6.9.9",
    "passport": "0.6.0",
    "passport-local": "1.0.0",
    "path": "0.12",
    "platform": "1.3",
    "socket.io": "^4.6.2",
    "socketio-sticky-session": "0.4",
    "swagger-jsdoc": "^6.2.8",
    "swagger-ui-express": "^5.0.1",
    "through2": "^4.0.2",
    "typescript": "^5.4.5",
    "uuid": "^10.0.0",
    "winston": "^3.13.0",
    "winston-daily-rotate-file": "^5.0.0",
    "yargs": "^17.7.2"
  },
  "devDependencies": {
    "@swc-node/register": "^1.9.2",
    "@swc/cli": "^0.3.12",
    "@swc/core": "^1.6.3",
    "@trivago/prettier-plugin-sort-imports": "^4.3.0",
    "@types/compression": "^1.7.5",
    "@types/config": "^3.3.4",
    "@types/express": "4.16",
    "@types/express-actuator": "^1.8.3",
    "@types/express-session": "^1.18.0",
    "@types/jsonpath": "^0.2.0",
    "@types/lodash": "^4.14.176",
    "@types/luxon": "^1.27.1",
    "@types/method-override": "^0.0.35",
    "@types/migrate-mongo": "^10.0.4",
    "@types/mocha": "^8.2.1",
    "@types/morgan": "^1.9.9",
    "@types/multipipe": "^3.0.5",
    "@types/passport": "1.0.10",
    "@types/q": "1.5",
    "@types/swagger-jsdoc": "^6.0.4",
    "@types/swagger-ui-express": "^4.1.6",
    "@types/through2": "^2.0.36",
    "@types/uuid": "^9.0.8",
    "@types/yargs": "^17.0.10",
    "@typescript-eslint/eslint-plugin": "^7.13.1",
    "@typescript-eslint/parser": "^7.13.1",
    "eslint": "^8.45.0",
    "eslint-config-prettier": "^8.9.0",
    "eslint-import-resolver-typescript": "^3.5.5",
    "eslint-plugin-deprecation": "^1.5.0",
    "eslint-plugin-import": "^2.27.5",
    "eslint-plugin-jsdoc": "^46.4.5",
    "eslint-plugin-prettier": "^5.0.0",
    "husky": "^9.0.11",
    "lint-staged": "^15.2.2",
    "mocha": "^10.4.0",
    "nodemon": "^3.1.4",
    "nyc": "^17.0.0",
    "prettier": "^3.0.0",
    "should": "^13.2.3",
    "sinon": "^18.0.0",
    "swagger-parser": "^10.0.3"
  },
  "lint-staged": {
    "*.{js,ts}": "eslint --fix"
  }
}