@rank-lang/compiler
v0.3.1
Published
Rank compiler library workspace package
Downloads
761
Readme
@rank-lang/compiler
Core compiler library for Rank. This package backs the CLI, the server runtime, the LSP server, and the browser playground surface.
Install
npm install @rank-lang/compilerEntrypoints
@rank-lang/compiler
The main entrypoint re-exports the compiler's Node-facing modules, including:
- diagnostics formatting and exception helpers
- JSON, YAML, TOML, and compatible emitters
- parsing, AST, and source-file utilities
- type checking and name-resolution helpers
- project and module loading
- evaluation and value inspection
- testing helpers and LSP query helpers
Typical Node usage loads a project module graph, checks diagnostics, evaluates pub main, and emits the resulting value:
import {
emitYamlValue,
evaluatePureEntrypoint,
formatDiagnostics,
loadProjectModuleGraphAsync,
} from "@rank-lang/compiler";
const moduleGraph = await loadProjectModuleGraphAsync("/abs/path/src/main.rank");
if (moduleGraph.diagnostics.length > 0) {
throw new Error(formatDiagnostics(moduleGraph.diagnostics));
}
const evaluation = evaluatePureEntrypoint(moduleGraph);
if (evaluation.diagnostics.length > 0 || !evaluation.value) {
throw new Error(formatDiagnostics(evaluation.diagnostics));
}
const emitted = emitYamlValue(evaluation.value, moduleGraph.entryModulePath);
console.log(emitted.output);@rank-lang/compiler/browser
The browser entrypoint exports compileBrowser(project, options?), a single-call helper for compiling an in-memory source tree:
import { compileBrowser } from "@rank-lang/compiler/browser";
const result = compileBrowser(
{
entryPath: "/src/main.rank",
sourceRoot: "/src",
files: {
"/src/main.rank": "pub main = || { message: `hello` }",
},
},
{ format: "json" },
);
console.log(result.output);Browser compilation only supports root:: source imports and std:: modules. Manifest-backed package and provider namespaces are intentionally rejected in this mode.
Development
npm run build -w @rank-lang/compiler
npm run test -w @rank-lang/compiler
npm run typecheck -w @rank-lang/compilerPublishing
Build the package first, then publish from the workspace root:
npm run build -w @rank-lang/compiler
npm publish -w @rank-lang/compiler