Packaging loom-lang-services
@athrio/loom-lang-services ships as source — no build of its own.
The manifest
The exports field is the package's surface: the LanguageService contract, the LanguageRegistry, the LanguageLoader that resolves a project's active services from the Loom store, the LoomStore that installs and holds them, the Runtime the host lends a loaded service, and the two built-in services, LoomLanguage for the Frame and ProseLanguage for the prose.
LoomLanguage wraps volar-service-typescript and ProseLanguage wraps volar-service-markdown — the two real dependencies. The other peers — @athrio/loom-ast for Loom's shared types, effect, @volar/language-service, typescript, and vscode-uri for decoding an embedded document's uri — are supplied by the host bundle.
{{ version = ${version} }} {{ effect = ${effect} }}
{
"name": "@athrio/loom-lang-services",
"version": "::[version]",
"description": "Loom's language services and the LanguageService contract they share.",
"license": "MIT",
"type": "module",
"exports": {
"./LanguageService": "./src/LanguageService.ts",
"./LanguageRegistry": "./src/LanguageRegistry.ts",
"./LanguageLoader": "./src/LanguageLoader.ts",
"./LoomStore": "./src/LoomStore.ts",
"./Runtime": "./src/Runtime.ts",
"./LoomLanguage": "./src/LoomLanguage.ts",
"./ProseLanguage": "./src/ProseLanguage.ts"
},
"dependencies": {
"volar-service-markdown": "^0.0.71",
"volar-service-typescript": "^0.0.71"
},
"peerDependencies": {
"@athrio/loom-ast": "workspace:*",
"@volar/language-service": "^2.4.28",
"effect": "::[effect]",
"typescript": "^6.0.3",
"vscode-uri": "^3.1.0"
},
"devDependencies": {
"@athrio/loom-ast": "workspace:*",
"@volar/language-service": "^2.4.28",
"effect": "::[effect]",
"typescript": "^6.0.3",
"vscode-uri": "^3.1.0"
}
}The TypeScript config
The TypeScript config extends the workspace base — strict mode, the Node and Bun types — and checks src. Like the package, it never ships.
{
"extends": "../../tsconfig.base.json",
"compilerOptions": {
"outDir": "out",
"rootDir": "src"
},
"include": ["src"]
}