{
  "name": "@juanpprieto/lexicon-client",
  "version": "1.0.3",
  "description": "TypeScript-first client for Lexicon DJ's local REST API with comprehensive type safety and unified control interface",
  "main": "dist/index.js",
  "module": "dist/index.mjs",
  "types": "dist/index.d.ts",
  "exports": {
    ".": {
      "types": "./dist/index.d.ts",
      "import": "./dist/index.mjs",
      "require": "./dist/index.js"
    }
  },
  "files": [
    "dist",
    "README.md",
    "SECURITY.md",
    "CONTRIBUTING.md",
    "llms.txt",
    "CLAUDE.md",
    "bin"
  ],
  "bin": {
    "copy-ai-docs": "bin/copy-ai-docs.js"
  },
  "engines": {
    "node": "^20.18.0 || ^22.0.0",
    "npm": ">=8.0.0"
  },
  "publishConfig": {
    "access": "public",
    "registry": "https://registry.npmjs.org"
  },
  "funding": {
    "type": "github",
    "url": "https://github.com/sponsors/juanpprieto"
  },
  "scripts": {
    "start": "node dist/index.js",
    "build": "npm run generate:types && tsup",
    "build:dev": "tsup --sourcemap --minify false",
    "dev": "tsup --watch",
    "clean": "rimraf dist coverage",
    "generate:types": "openapi-typescript https://www.lexicondj.com/developer/api-docs.yaml --output src/types/generated.ts",
    "test": "vitest",
    "test:unit": "vitest src/__tests__/units --run --reporter=verbose",
    "test:integration": "npm run lexicon:check && TEST_REAL_API=true vitest src/__tests__/integration --run --reporter=verbose",
    "test:integration:tracks": "npm run lexicon:check && TEST_REAL_API=true vitest src/__tests__/integration/tracks-integration.test.ts --run --reporter=verbose",
    "test:integration:playlists": "npm run lexicon:check && TEST_REAL_API=true vitest src/__tests__/integration/playlists-integration.test.ts --run --reporter=verbose",
    "test:integration:tags": "npm run lexicon:check && TEST_REAL_API=true vitest src/__tests__/integration/tags-integration.test.ts --run --reporter=verbose",
    "test:integration:control": "npm run lexicon:check && TEST_REAL_API=true vitest src/__tests__/integration/control-integration.test.ts --run --reporter=verbose",
    "test:integration:enhanced-player": "npm run lexicon:check && TEST_REAL_API=true vitest src/__tests__/integration/enhanced-player-control.test.ts --run --reporter=verbose",
    "test:integration:tag-categories": "npm run lexicon:check && TEST_REAL_API=true vitest src/__tests__/integration/tag-categories-validation.test.ts --run --reporter=verbose",
    "test:workflows": "vitest src/__tests__/integration/complete-workflows.test.ts --run --reporter=verbose",
    "test:coverage": "vitest --coverage",
    "test:watch": "vitest --watch",
    "lint": "eslint src --ext .ts,.tsx",
    "lint:fix": "eslint src --ext .ts,.tsx --fix",
    "format": "prettier --write 'src/**/*.{ts,tsx}' '*.{json,md}'",
    "format:check": "prettier --check 'src/**/*.{ts,tsx}' '*.{json,md}'",
    "typecheck": "tsc --noEmit",
    "validate": "npm run typecheck && npm run lint && npm run test:unit",
    "changeset": "changeset",
    "changeset:version": "changeset version",
    "changeset:publish": "changeset publish",
    "changeset:status": "changeset status",
    "release": "npm run validate && npm run build && changeset publish",
    "build:analyze": "npm run build && node scripts/analyze-build.js",
    "build:verify": "npm run build && node scripts/verify-build.js",
    "demo:react": "cd demo/react-vite && npm install && npm run demo",
    "demo:node": "cd demo/node-script && npm install && npm run demo",
    "demo:test": "npm pack && cd demo/node-script && npm install ../../*.tgz && npm run demo && cd ../react-vite && npm install ../../*.tgz && echo '✅ Both demos ready - run npm run demo to start React demo'",
    "lexicon:check": "./scripts/check-lexicon.sh",
    "prepublishOnly": "npm run clean && npm run validate && npm run build && npm run build:verify",
    "prepare": "husky"
  },
  "keywords": [
    "lexicon-dj",
    "dj-software",
    "music-api",
    "typescript-client",
    "api-client",
    "music-library",
    "playlist-management",
    "dj-automation",
    "music-metadata",
    "audio-control",
    "type-safe",
    "rest-api"
  ],
  "author": {
    "name": "Juan Pablo Prieto",
    "email": "jpprietobaez@gmail.com",
    "url": "https://github.com/juanpprieto"
  },
  "license": "MIT",
  "sideEffects": false,
  "dependencies": {
    "neverthrow": "^6.2.2",
    "p-queue": "^8.0.1",
    "pino": "^8.19.0",
    "qs": "^6.14.0",
    "ts-pattern": "^5.0.8",
    "undici": "^6.6.2",
    "zod": "^3.22.4"
  },
  "devDependencies": {
    "@changesets/changelog-github": "^0.5.1",
    "@changesets/cli": "^2.29.6",
    "@faker-js/faker": "^9.9.0",
    "@types/node": "^20.11.17",
    "@types/qs": "^6.14.0",
    "@typescript-eslint/eslint-plugin": "^8.57.1",
    "@typescript-eslint/parser": "^8.57.1",
    "@vitest/coverage-v8": "^3.2.4",
    "eslint": "^8.56.0",
    "eslint-config-prettier": "^9.1.0",
    "eslint-plugin-import": "^2.29.1",
    "husky": "^9.1.7",
    "lint-staged": "^15.2.2",
    "msw": "^2.10.5",
    "openapi-typescript": "^7.13.0",
    "picocolors": "^1.1.1",
    "prettier": "^3.2.5",
    "rimraf": "^5.0.5",
    "tsup": "^8.0.2",
    "typescript": "^5.3.3",
    "vitest": "^3.2.4"
  },
  "lint-staged": {
    "*.{ts,tsx}": [
      "eslint --fix",
      "prettier --write"
    ],
    "*.{json,md}": [
      "prettier --write"
    ]
  },
  "repository": {
    "type": "git",
    "url": "git+https://github.com/juanpprieto/lexicon-client.git",
    "directory": "."
  },
  "bugs": {
    "url": "https://github.com/juanpprieto/lexicon-client/issues"
  },
  "homepage": "https://github.com/juanpprieto/lexicon-client#readme"
}
