{"_id":"@duza11/riot-v3-language-server","_rev":"3-6c17f518191e2b0717865548a9bdb092","name":"@duza11/riot-v3-language-server","dist-tags":{"latest":"1.0.1"},"versions":{"0.0.0":{"name":"@duza11/riot-v3-language-server","version":"0.0.0","keywords":["oidc","trusted-publishing","setup"],"_id":"@duza11/riot-v3-language-server@0.0.0","maintainers":[{"name":"duza11","email":"318.abcdothe.ds@gmail.com"}],"dist":{"shasum":"9b053f2a3b5e2306f88a71011b9a8c5e21969142","tarball":"https://registry.npmjs.org/@duza11/riot-v3-language-server/-/riot-v3-language-server-0.0.0.tgz","fileCount":2,"integrity":"sha512-XhnWOFWanKPCZ/L4C6v2TCyA56CbcbJBT0uXHAThOErbOoSn8vku7CnXAxJtahGlFTdiKNKqDLTl8MpbHGgKBw==","signatures":[{"sig":"MEYCIQCmT46Tm3KuSZxfpLOLR5fW5RlvCUVa7dX1oPB5WrKfpAIhAPBwuWlpMkhvfz6V4tO7rgpWdOav7AHB3E+dIsMZmsYL","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2087},"_npmUser":{"name":"duza11","email":"318.abcdothe.ds@gmail.com"},"_npmVersion":"11.16.0","description":"OIDC trusted publishing setup package for @duza11/riot-v3-language-server","directories":{},"_nodeVersion":"26.3.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/riot-v3-language-server_0.0.0_1784200477008_0.6352351562004344","host":"s3://npm-registry-packages-npm-production"}},"1.0.0":{"name":"@duza11/riot-v3-language-server","version":"1.0.0","keywords":["riot","riotjs","riot.js","riot-v3","tag","language-server","lsp","volar"],"author":{"name":"duza11"},"license":"MIT","_id":"@duza11/riot-v3-language-server@1.0.0","maintainers":[{"name":"duza11","email":"318.abcdothe.ds@gmail.com"}],"homepage":"https://github.com/duza11/riot-v3-language-server/tree/master/packages/language-server#readme","bugs":{"url":"https://github.com/duza11/riot-v3-language-server/issues"},"bin":{"riot-v3-language-server":"bin/riot-v3-language-server.js"},"dist":{"shasum":"e2f7b8e3468a067190422f524909b29da47ed369","tarball":"https://registry.npmjs.org/@duza11/riot-v3-language-server/-/riot-v3-language-server-1.0.0.tgz","fileCount":5,"integrity":"sha512-GeIrfBNDLVWD8XCe5EmgunsEbwBLmpRvjKXNl5sUW7UaWQqxkmFRXe0xznXQvd+KRF+F94sLpMqf4oCKqmPtLw==","signatures":[{"sig":"MEUCIBk1CkorMFpn8SAZpc7RY+29DbKppcisHXvfWRTeoU0wAiEA00nygh24sFglEIqJyboPnHg1otObmrNrHbNvWbcZ6tE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@duza11%2friot-v3-language-server@1.0.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":6011843},"main":"./dist/index.js","_from":"file:/home/runner/work/riot-v3-language-server/riot-v3-language-server/release-artifacts/duza11-riot-v3-language-server-1.0.0.tgz","engines":{"node":">=24"},"scripts":{"build":"node scripts/build -- --minify","watch":"pnpm run build -- --watch"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","approver":{"name":"duza11","email":"318.abcdothe.ds@gmail.com"},"trustedPublisher":{"id":"github","oidcConfigId":"oidc:56cd3c8a-0086-4a45-a1bb-d22326ba67c8"}},"_resolved":"/home/runner/work/riot-v3-language-server/riot-v3-language-server/release-artifacts/duza11-riot-v3-language-server-1.0.0.tgz","_integrity":"sha512-GeIrfBNDLVWD8XCe5EmgunsEbwBLmpRvjKXNl5sUW7UaWQqxkmFRXe0xznXQvd+KRF+F94sLpMqf4oCKqmPtLw==","repository":{"url":"git+https://github.com/duza11/riot-v3-language-server.git","type":"git","directory":"packages/language-server"},"_npmVersion":"11.18.0","description":"Language server for Riot.js v3 single-file components","directories":{},"_nodeVersion":"24.20.0","dependencies":{"typescript":"^6.0.3","vscode-uri":"^3.2.0","@volar/typescript":"~2.4.28","volar-service-css":"^0.0.71","volar-service-html":"^0.0.71","volar-service-emmet":"^0.0.71","@volar/language-core":"~2.4.28","@volar/language-server":"~2.4.28","volar-service-typescript":"^0.0.71","vscode-html-languageservice":"^5.6.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"esbuild":"0.28.2"},"_npmOperationalInternal":{"tmp":"tmp/riot-v3-language-server_1.0.0_1789135226753_0.14890318269876124","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"_id":"@duza11/riot-v3-language-server@1.0.1","bin":{"riot-v3-language-server":"bin/riot-v3-language-server.js"},"bugs":{"url":"https://github.com/duza11/riot-v3-language-server/issues"},"dist":{"shasum":"fdcef7c550a89a97bedffe6aa0a3459ae61267ef","tarball":"https://registry.npmjs.org/@duza11/riot-v3-language-server/-/riot-v3-language-server-1.0.1.tgz","integrity":"sha512-Hx5cT4A4lxZ6fibl4J2bbjiw2tp87it1g0YYY6nUrq6yM8/QdvwOP9g9MFEqUTwW+plFt5U+kIsLiK37AnqdYw==","fileCount":5,"unpackedSize":6012106,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@duza11%2friot-v3-language-server@1.0.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQCo0Czdg5OXPBTSpcbdlsQFwUCdweEjxcAPfCwxqmcblwIgJdz20FH2NakcHemJ5M1zXiB4asGvLBEDxbIXTfhq0Qg="}]},"main":"./dist/index.js","name":"@duza11/riot-v3-language-server","_from":"file:/home/runner/work/riot-v3-language-server/riot-v3-language-server/release-artifacts/duza11-riot-v3-language-server-1.0.1.tgz","author":{"name":"duza11"},"engines":{"node":">=24"},"license":"MIT","scripts":{"build":"node scripts/build -- --minify","watch":"pnpm run build -- --watch"},"version":"1.0.1","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:56cd3c8a-0086-4a45-a1bb-d22326ba67c8"},"approver":{"name":"duza11","email":"318.abcdothe.ds@gmail.com"}},"homepage":"https://github.com/duza11/riot-v3-language-server/tree/master/packages/language-server#readme","keywords":["riot","riotjs","riot.js","riot-v3","tag","language-server","lsp","volar"],"_resolved":"/home/runner/work/riot-v3-language-server/riot-v3-language-server/release-artifacts/duza11-riot-v3-language-server-1.0.1.tgz","_integrity":"sha512-Hx5cT4A4lxZ6fibl4J2bbjiw2tp87it1g0YYY6nUrq6yM8/QdvwOP9g9MFEqUTwW+plFt5U+kIsLiK37AnqdYw==","repository":{"url":"git+https://github.com/duza11/riot-v3-language-server.git","type":"git","directory":"packages/language-server"},"_npmVersion":"11.18.0","description":"Language server for Riot.js v3 single-file components","directories":{},"maintainers":[{"name":"duza11","email":"318.abcdothe.ds@gmail.com"}],"_nodeVersion":"24.21.0","dependencies":{"typescript":"^6.0.3","vscode-uri":"^3.2.0","@volar/typescript":"~2.4.28","volar-service-css":"^0.0.71","volar-service-html":"^0.0.71","volar-service-emmet":"^0.0.71","@volar/language-core":"~2.4.28","@volar/language-server":"~2.4.28","volar-service-typescript":"^0.0.71","vscode-html-languageservice":"^5.6.2"},"publishConfig":{"access":"public"},"devDependencies":{"esbuild":"0.28.2"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/riot-v3-language-server_1.0.1_1790602089320_0.5911455139452679"},"_hasShrinkwrap":false}},"time":{"created":"2026-07-16T11:14:36.805Z","modified":"2026-09-28T13:28:09.719Z","0.0.0":"2026-07-16T11:14:37.135Z","1.0.0":"2026-09-11T14:00:26.913Z","1.0.1":"2026-09-28T13:28:09.474Z"},"bugs":{"url":"https://github.com/duza11/riot-v3-language-server/issues"},"author":{"name":"duza11"},"license":"MIT","homepage":"https://github.com/duza11/riot-v3-language-server/tree/master/packages/language-server#readme","keywords":["riot","riotjs","riot.js","riot-v3","tag","language-server","lsp","volar"],"repository":{"url":"git+https://github.com/duza11/riot-v3-language-server.git","type":"git","directory":"packages/language-server"},"description":"Language server for Riot.js v3 single-file components","maintainers":[{"name":"duza11","email":"318.abcdothe.ds@gmail.com"}],"readme":"# @duza11/riot-v3-language-server\n\nA standalone language server for Riot.js v3 single-file components.\n\nThe server is built on Volar and targets Riot.js v3 `.tag` files. It can be used by editors that support the Language Server Protocol, including Neovim, Helix, Zed, and other LSP clients.\n\n## Installation\n\nInstall the package with your preferred package manager:\n\n```sh\nnpm install -g @duza11/riot-v3-language-server\n```\n\nOr run it from this repository:\n\n```sh\npnpm --filter @duza11/riot-v3-language-server build\npnpm --filter @duza11/riot-v3-language-server exec riot-v3-language-server\n```\n\nWith Nix:\n\n```sh\nnix build github:duza11/riot-v3-language-server\n./result/bin/riot-v3-language-server\n```\n\n## Command\n\n```sh\nriot-v3-language-server\n```\n\nThe server communicates over stdio.\n\n## TypeScript SDK\n\nVolar requires a TypeScript SDK. This language server resolves it in the following order:\n\n1. `initializationOptions.typescript.tsdk`\n2. the bundled TypeScript SDK\n\nRiot.js projects do not need to install TypeScript locally unless they want the language server to use a project-specific TypeScript version.\n\n## Configuration\n\nRiot-specific initialization options are disabled by default:\n\n| Option under `initializationOptions.riotV3` | Default | Description |\n| --- | --- | --- |\n| `allowDynamicPropertiesFromAnyAssignments` | `false` | Allows dynamic child properties through inferred objects and arrays when the property also receives an inferred `any` value. |\n| `reportUnusedComponentMembers` | `false` | Reports component fields and methods that are not read within the same component. |\n\n```lua\ninit_options = {\n  riotV3 = {\n    allowDynamicPropertiesFromAnyAssignments = true,\n    reportUnusedComponentMembers = true,\n  },\n}\n```\n\nRestart the language server after changing initialization options.\n\n### Option behavior\n\n`allowDynamicPropertiesFromAnyAssignments` propagates dynamic access through inferred nested objects and array elements, including static index and computed property assignments. Known child properties keep their inferred types. A `null` or `undefined` initializer is preserved as a nullable dynamic object, so optional chaining may still be required. Properties without an inferred `any` assignment, primitive properties, and root or nested properties with explicit JSDoc types remain strict.\n\n`reportUnusedComponentMembers` emits TypeScript-compatible 6133 hints for unused Riot component fields and methods. The analysis is intentionally component-local: references from another component or file, including dynamic runtime access, do not mark a member as used. Keep the option disabled when the project relies heavily on those patterns.\n\n### Embedded languages\n\nThe JavaScript, TypeScript, HTML, CSS, SCSS, Less, and Emmet services read their standard configuration sections through `workspace/configuration` when the LSP client supports it. These settings are provided by the embedded language services and are not Riot-specific options.\n\n## Neovim Example\n\nUsing Neovim's built-in LSP client:\n\n```lua\nvim.api.nvim_create_autocmd({ \"BufRead\", \"BufNewFile\" }, {\n  pattern = \"*.tag\",\n  callback = function()\n    vim.bo.filetype = \"riot_v3\"\n  end,\n})\n\nvim.lsp.config(\"riot_v3\", {\n  cmd = { \"riot-v3-language-server\", \"--stdio\" },\n  filetypes = { \"riot_v3\" },\n  root_markers = { \"package.json\", \".git\" },\n  init_options = {\n    typescript = {\n      -- Optional. When omitted, the bundled TypeScript SDK is used.\n      -- tsdk = \"/path/to/node_modules/typescript/lib\",\n    },\n    riotV3 = {\n      -- Optional. Defaults to false.\n      -- allowDynamicPropertiesFromAnyAssignments = true,\n      -- reportUnusedComponentMembers = true,\n    },\n  },\n})\n\nvim.lsp.enable(\"riot_v3\")\n```\n\nIf your LSP client starts servers without `--stdio`, use:\n\n```lua\ncmd = { \"riot-v3-language-server\" }\n```\n\n## VS Code\n\nVS Code users should usually install the `Riot.js v3 Language Features` extension instead of configuring this package directly.\n\n## Supported Files\n\nThis server targets Riot.js v3 `.tag` files.\n","readmeFilename":"README.md"}