{
  "name": "service-dal",
  "version": "1.45.0-alpha.0",
  "description": "Service aim to de-attach PlutoTV infrastructure from pluto-main DB and provide flexibility by utilising the inf-lib-dal library",
  "author": "pkalmykov@pluto.tv",
  "main": "index.js",
  "engines": {
    "node": ">=22.11.0"
  },
  "git": {
    "hash": "%GITHUB_SHA%",
    "ref": "%GITHUB_REF%",
    "url": "%GITHUB_REPOSITORY%"
  },
  "scripts": {
    "install:all": "npm i && cd nodejs-client && npm i",
    "start": "node index.js",
    "sealights:scan": "slnodejs scan --tokenfile ./sealights/sltoken.txt --buildsessionidfile ./sealights/buildSessionId --workspacepath '.' --scm none --es6Modules",
    "sealights:start-listener": "slnodejs start --tokenfile ./sealights/sltoken.txt --buildsessionidfile ./sealights/buildSessionId --teststage 'Unit Tests'",
    "sealights:stop-listener": "slnodejs end --tokenfile ./sealights/sltoken.txt --buildsessionidfile ./sealights/buildSessionId",
    "sealights:upload-coverage": "slnodejs nycReport --tokenfile ./sealights/sltoken.txt --buildsessionidfile ./sealights/buildSessionId --report ./coverage/coverage-final.json",
    "sealights:upload-unit": "slnodejs uploadReports --tokenfile ./sealights/sltoken.txt --buildsessionidfile ./sealights/buildSessionId --reportFile ./jest-junit/junit.xml",
    "test:sealights": "npm run sealights:scan && npm run sealights:start-listener && npm run test && npm run sealights:upload-coverage && npm run sealights:upload-unit && npm run sealights:stop-listener",
    "pretest": "npm run lint && npm run client:generate && npm run client:nodejs:install",
    "test": "NODE_OPTIONS=--max_old_space_size=12000 jest --logHeapUsage --forceExit --maxWorkers=2",
    "lint": "eslint . && echo '✅ No ESLint issues found!' || echo '⚠️ ESLint found issues!'",
    "prepush": "npm run docker:build && npm run docker:test",
    "docker:login:devOps": "aws ecr get-login-password --profile devops-ecr-role --region us-east-1 | docker login --username AWS --password-stdin 972525491246.dkr.ecr.us-east-1.amazonaws.com",
    "docker:login:root": "aws ecr get-login-password --profile ecr-role --region us-east-1 | docker login --username AWS --password-stdin 157385605725.dkr.ecr.us-east-1.amazonaws.com",
    "docker:build": "npm run lint && DOCKER_BUILDKIT=1 docker build -t plutotv/${npm_package_name} --progress=plain --secret id=npmrc,src=$HOME/.npmrc --build-arg Sealights_API_Key=${Sealights_API_Key} --build-arg GITHUB_REF=$(git branch | grep \\\\* | cut -d ' ' -f2) --build-arg GITHUB_REPOSITORY=$(git config --get remote.origin.url) --build-arg GITHUB_SHA=$(git rev-parse HEAD) .",
    "docker:start": "docker compose -f docker-compose.dev.yml up -d ${npm_package_name}",
    "docker:stop": "docker compose -f docker-compose.dev.yml down",
    "docker:dev:mongodb": "docker compose -f docker-compose.dev.yml up -d mongodb",
    "docker:test:mongodb": "docker compose -f docker-compose.test.yml up -d mongodb",
    "docker:test": "docker compose -f docker-compose.test.yml run ${npm_package_name} test",
    "docker:test:sealights": "docker compose -p ${npm_package_name}-test -f docker-compose.dev.yml -f docker-compose.test.yml run --rm ${npm_package_name} test:sealights",
    "docker:tail": "docker container logs ${npm_package_name}-${npm_package_name}-1 -f",
    "client:nodejs:install": "cd nodejs-client && npm i",
    "client:nodejs:publish": "cd nodejs-client && npm run publish-check",
    "client:generate": "./generate-clients.sh",
    "client:nodejs:generate": "./generate-clients.sh nodejs",
    "client:golang:generate": "./generate-clients.sh golang",
    "client:java:generate": "./generate-clients.sh java",
    "prepare": "husky"
  },
  "repository": {
    "type": "git",
    "url": "git+https://github.com/Pluto-tv/service-dal.git"
  },
  "dependencies": {
    "@grpc/grpc-js": "^1.7.3",
    "@grpc/proto-loader": "^0.8.0",
    "@hapi/hapi": "^21.4.3",
    "@opentelemetry/api": "^1.9.0",
    "@pluto-tv/inf-lib-mongoose": "^2.0.0",
    "@pluto-tv/inf-lib-schemas": "^5.7.0",
    "@pluto-tv/lib-observability-js": "^4.6.1",
    "connection-string-parser": "^1.0.4",
    "csv-reader": "^1.0.12",
    "grpc-js-health-check": "^1.0.2",
    "grpc-server-reflection": "^0.1.5",
    "grpc-tools": "^1.13.0",
    "iso-language-codes": "^2.0.0",
    "jest": "^30.0.5",
    "jest-environment-node": "^30.1.2",
    "jest-junit": "^16.0.0",
    "jsonschema": "^1.5.0",
    "lodash": "^4.17.21",
    "moment": "^2.30.1",
    "package-lock": "^1.0.5",
    "proto-parser": "0.0.9",
    "server-destroy": "^1.0.1",
    "slnodejs": "^6.1.1086",
    "underscore": "^1.13.7"
  },
  "devDependencies": {
    "@eslint/eslintrc": "^3.3.0",
    "@eslint/js": "^9.34.0",
    "@pluto-tv/eslint-config-plutotv": "^3.0.3",
    "deepcopy": "^2.1.0",
    "eslint": "^9.35.0",
    "eslint-config-prettier": "^10.1.8",
    "eslint-plugin-jest": "^29.0.1",
    "eslint-plugin-unicorn": "^61.0.2",
    "faker": "^6.6.6",
    "globals": "^16.3.0",
    "husky": "^9.1.7",
    "lint-staged": "^16.1.5",
    "prettier": "^3.6.2",
    "recursive-diff": "^1.0.9"
  },
  "jest": {
    "workerIdleMemoryLimit": "512MB",
    "verbose": true,
    "collectCoverage": true,
    "bail": true,
    "coverageThreshold": {
      "global": {
        "branches": 80,
        "functions": 90,
        "lines": 90,
        "statements": 90
      }
    },
    "roots": [
      "<rootDir>/test/",
      "<rootDir>/nodejs-client/test/",
      "<rootDir>/lib/test/"
    ],
    "testTimeout": 100000,
    "coveragePathIgnorePatterns": [
      "/node_modules/",
      "/lib/node_modules/",
      "/lib/test/",
      "/test/",
      "/nodejs-client/test/",
      "/nodejs-client/index.js",
      "/nodejs-client/node_modules/",
      "/nodejs-client/services/"
    ],
    "globalSetup": "./test/setup.js",
    "reporters": [
      "default",
      "jest-junit"
    ],
    "coverageReporters": [
      "json",
      "lcov",
      "clover"
    ]
  },
  "jest-junit": {
    "outputDirectory": "./jest-junit/",
    "outputName": "junit.xml"
  },
  "lint-staged": {
    "*.{js,jsx}": [
      "prettier --write",
      "eslint --fix --format stylish --config ./eslint.config.mjs"
    ]
  }
}
