{
  "name": "@hydranium/data-server",
  "version": "1.0.0-next.328",
  "description": "Typed-RPC protocol head for the hydranium framework. Peer of @hydranium/core/lsp and @hydranium/glsp-server; built on @hydranium/core.",
  "keywords": [
    "data-server",
    "hydranium",
    "langium",
    "language-server",
    "lsp",
    "rpc"
  ],
  "homepage": "https://github.com/eclipse-emfcloud/hydranium/tree/main/packages/data-server",
  "bugs": {
    "url": "https://github.com/eclipse-emfcloud/hydranium/issues"
  },
  "license": "MIT",
  "author": {
    "name": "Hydranium Team"
  },
  "repository": {
    "type": "git",
    "url": "https://github.com/eclipse-emfcloud/hydranium.git",
    "directory": "packages/data-server"
  },
  "files": [
    "lib",
    "src",
    "!lib/**/*.tsbuildinfo"
  ],
  "type": "module",
  "sideEffects": false,
  "main": "lib/index.js",
  "browser": {
    "./lib/default-diagnostics.js": "./lib/default-diagnostics.browser.js"
  },
  "types": "lib/index.d.ts",
  "exports": {
    ".": {
      "types": "./lib/index.d.ts",
      "default": "./lib/index.js"
    },
    "./node": {
      "types": "./lib/node/index.d.ts",
      "default": "./lib/node/index.js"
    },
    "./browser": {
      "types": "./lib/browser/index.d.ts",
      "default": "./lib/browser/index.js"
    },
    "./messages": {
      "types": "./lib/messages/index.d.ts",
      "default": "./lib/messages/index.js"
    },
    "./testing": {
      "types": "./lib/testing/index.d.ts",
      "default": "./lib/testing/index.js"
    }
  },
  "publishConfig": {
    "access": "public"
  },
  "scripts": {
    "build": "tsc -b",
    "clean": "rimraf lib tsconfig.tsbuildinfo",
    "lint": "oxlint --format stylish --config ../../oxlint.config.cjs src test --max-warnings 0",
    "prepack": "node -e \"const m=require('./package.json'),fs=require('node:fs');const missing=[m.main,...Object.values(m.bin||{})].filter(entry=>entry&&!fs.existsSync(entry));if(missing.length){console.error('prepack '+m.name+': not built ('+missing.join(', ')+' missing). Run the build before packing: a files entry that matches nothing is skipped silently, so the tarball would ship src only.');process.exit(1);}\"",
    "test": "npm run typecheck:test && vitest run",
    "typecheck:test": "tsc --noEmit -p tsconfig.test.json",
    "watch": "tsc -b -w --preserveWatchOutput"
  },
  "devDependencies": {
    "@hydranium/core": "1.0.0-next.328",
    "@hydranium/langium": "1.0.0-next.328",
    "@hydranium/protocol": "1.0.0-next.328",
    "rimraf": "^5.0.0",
    "typescript": "^7.0.2",
    "vscode-jsonrpc": "9.0.0",
    "vscode-languageserver-textdocument": "^1.0.12"
  },
  "peerDependencies": {
    "@hydranium/core": "1.0.0-next.328",
    "@hydranium/langium": "1.0.0-next.328",
    "@hydranium/protocol": "1.0.0-next.328",
    "vscode-jsonrpc": "^9.0.0",
    "vscode-languageserver-textdocument": "^1.0.12"
  },
  "engines": {
    "node": ">=22.13"
  },
  "//browser": "Selects the diagnostics default per platform, the same mechanism @eclipse-glsp/server uses to swap its node build for its browser one. The Node module imports @hydranium/core/node; a browser bundler resolves the twin instead and therefore never follows that import, which is what keeps this package's `.` entry bundleable. Node ignores this field, so a Node host keeps the real implementation with no configuration. `check:neutral` is the proof it still applies — it bundles `.` for the browser and would fail on node:fs the moment the mapping stops matching.",
  "//peerDependencies": "`vscode-jsonrpc` takes a caret, so the framework shares the transport the LSP connection resolves, which an `init` scaffold pins: each `vscode-languageserver-protocol` release pins its transport exactly, so an exact peer would name a copy a fresh install rarely holds. The caret excludes 8.x, so a tree whose top holds GLSP's copy fails the peer with a named ERESOLVE warning, an error under `--strict-peer-deps`, rather than resolving silently. No peer reaches a NESTED copy, such as GLSP's or one the LSP packages nest. The wire compares message types and `ResponseError`s by copy identity, so the framework sends typed messages by method name and recognises errors with `isResponseError` rather than `instanceof`.",
  "//prepack": "The publish guard, a `prepack` rather than a `prepare`: `prepack` runs only when a tarball is made (`npm pack`, `npm publish`) and never on install, so it cannot break the install it has no business touching. What it defends against: `files` lists `lib`, `lib` is gitignored, and a `files` entry matching nothing is skipped SILENTLY — so `npm publish` from an unbuilt tree emits a tarball of `src` and nothing else, with no error."
}
