SourceLoom builds LoomPackaging loom-lang-services

Part VIII, Chapter 7

Part VIII, Chapter 7: Packaging loom-lang-services

Package: packages/loom-lang-services/

Language: JSON

Raw source

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} }}

JSON
{
  "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.

JSON
{
  "extends": "../../tsconfig.base.json",
  "compilerOptions": {
    "outDir": "out",
    "rootDir": "src"
  },
  "include": ["src"]
}
Loom