{"bin":{"hydranium-cli":"bin/hydranium-cli.js"},"bugs":{"url":"https://github.com/eclipse-emfcloud/hydranium/issues"},"dist":{"shasum":"a88e02005e9a1f57c77762ee17709d851cb39595","tarball":"https://registry.npmjs.org/@hydranium/cli/-/cli-1.0.0-next.296.tgz","fileCount":308,"integrity":"sha512-f7r1Utpd95JHf72WjTRQbH3iTpt4LEEN69VpwuznlB4dPbohd8+xVb+aO5Ff/qJtXrBe7EHpLTYy+duosJNGkw==","signatures":[{"sig":"MEUCICVuUpL80i10+Cz6qa1qK9L8x15afbCTiO9/OucNKfcuAiEAjNmfNttgOO9clBrEI7s+G+YgsJbPkb80och9kMhT8WM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQD4KwB/PEsk2I1wlbwYb0bhf+iCcOXFKIjAnahbkXOq4AIgXqkkKpmS+t6AeegYXVyQgq/0bCiySOWo0D24A4UFZFI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@hydranium%2fcli@1.0.0-next.296","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1300047},"main":"lib/index.js","name":"@hydranium/cli","type":"module","types":"lib/index.d.ts","author":{"name":"Hydranium Team"},"engines":{"node":">=22.13"},"exports":{".":{"types":"./lib/index.d.ts","default":"./lib/index.js"},"./lib/cli.js":{"types":"./lib/cli.d.ts","default":"./lib/cli.js"}},"gitHead":"a789d5e91840cf154e5c7353d2da237d7ae18f78","license":"MIT","scripts":{"lint":"oxlint --format stylish --config ../../oxlint.config.cjs src test --max-warnings 0","test":"npm run typecheck:test && vitest run","build":"tsc -b","clean":"rimraf lib tsconfig.tsbuildinfo","watch":"tsc -b -w --preserveWatchOutput","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);}\"","typecheck:test":"tsc --noEmit -p tsconfig.test.json"},"//memlab":"@memlab/core and @memlab/heap-analysis are OPTIONAL PEER dependencies, not optionalDependencies, and the distinction is the whole point: npm installs optionalDependencies BY DEFAULT, both memlab packages pin puppeteer exactly, and puppeteer's postinstall downloads a Chrome binary — so every adopter of this CLI paid ~86 MB and a browser download for the one subcommand almost none of them run, and the download can fail and be walked past as a warning. An optional peer is not auto-installed, so `analyze-heap` documents `npm install @memlab/core @memlab/heap-analysis` as the opt-in and every other subcommand is unaffected. Taken pre-publish deliberately: after publish the install shape is what adopters already have.","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"4e8d41da-1e99-4dd6-9e7a-fdbdb1086cb8"}},"homepage":"https://github.com/eclipse-emfcloud/hydranium/tree/main/packages/cli","keywords":["cli","codegen","hydranium","langium","language-server","lsp"],"//exports":"Two keys, and the SHORT list is the point: `files` ships the whole compiled tree, so without a map every `lib/commands/*.js`, every internal helper and `lib/testing/echo-server.js` is deep-importable the moment this publishes, and semver then applies to all of it. `.` is the library barrel (the data-server subcommands an adopter calls as functions). `./lib/cli.js` is the BINARY ARTEFACT, and it is declared because a consumer that spawns the CLI resolves it BY SPECIFIER — `createRequire(import.meta.url).resolve('@hydranium/cli/lib/cli.js')` — to get the path npx would run; `bin` gives a shim on PATH, not a path, so dropping this key breaks that resolution and the failure surfaces as \"hydranium-cli is not built\", naming the wrong cause. `heap-analysis/` needs no key even though `files` ships it — `analyze-heap` reaches the analyzer through a `new URL(..., import.meta.url)` file URL, which `exports` does not gate, and the package's own tests reach it relatively. `./testing` is deliberately absent: `echo-server` is a spawnable stdio fixture, not a reusable export.","//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.","repository":{"url":"git+https://github.com/eclipse-emfcloud/hydranium.git","type":"git","directory":"packages/cli"},"_npmVersion":"11.15.0","description":"Build-time codegen tools + data-server subcommands for the hydranium framework.","directories":{},"maintainers":[{"name":"mfleck","email":"mfleck@eclipsesource.com"}],"sideEffects":["./lib/cli.js","./lib/commands/*-driver.js","./lib/testing/echo-server.js"],"_nodeVersion":"22.18.0","dependencies":{"ts-morph":"^25.0.0","commander":"^14.0.3","@clack/prompts":"~1.7.0"},"//sideEffects":"The listed modules RUN on load rather than exporting anything: `cli.js` is the `bin`, each `*-driver.js` is spawned as its own process and calls `main(process.argv)` at top level, and `echo-server.js` starts a server. Their whole purpose is the effect, so a bundler must never treat them as prunable. Everything else here is library code with no module-level state beyond `new URL(..., import.meta.url)` constants.","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"rimraf":"^5.0.0","vitest":"^4.0.0","langium":"4.3.1","inversify":"6.2.2","typescript":"^7.0.2","@types/node":"^22.0.0","langium-cli":"4.3.0","vscode-jsonrpc":"9.0.0","@hydranium/core":"1.0.0-next.296","reflect-metadata":"0.2.2","@hydranium/langium":"1.0.0-next.296","@eclipse-glsp/graph":"2.7.0","@hydranium/protocol":"1.0.0-next.296","@eclipse-glsp/server":"2.7.0","vscode-languageserver":"10.0.1","@hydranium/data-server":"1.0.0-next.296","@hydranium/glsp-server":"1.0.0-next.296","vscode-languageserver-protocol":"3.18.1"},"peerDependencies":{"@memlab/core":"^2.0.3","vscode-jsonrpc":"^9.0.0","@hydranium/core":"1.0.0-next.296","@hydranium/langium":"1.0.0-next.296","@hydranium/protocol":"1.0.0-next.296","@memlab/heap-analysis":"^2.0.3","@hydranium/data-server":"1.0.0-next.296"},"//devDependencies":"Every package an `init` scaffold declares, other than this one, is declared here, whether or not `src` uses it: the scaffold-compiles test compiles and runs scaffolds inside this package, so their imports and tools resolve through these declarations. `check:init-provenance` holds this list and its versions to the scaffold's manifest.","//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`.","peerDependenciesMeta":{"@memlab/core":{"optional":true},"@memlab/heap-analysis":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/cli_1.0.0-next.296_1791908852326_0.06064759717892265","host":"s3://npm-registry-packages-npm-production"},"_id":"@hydranium/cli@1.0.0-next.296","version":"1.0.0-next.296"}