Big News: Socket raises $60M Series C at a $1B valuation to secure software supply chains for AI-driven development.Announcement
Sign In

@isl-lang/isl-core

Package Overview
Dependencies
Maintainers
1
Versions
2
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@isl-lang/isl-core

ISL Core - Parser, Type Checker, Formatter, Linter, and Verification for the Intent Specification Language

latest
Source
npmnpm
Version
1.0.0
Version published
Maintainers
1
Created
Source

@isl-lang/isl-core

The "thin waist" API for the Intent Specification Language (ISL). This package provides the essential compiler flow for parsing, checking, formatting, linting, and verifying ISL specifications.

What's Included

Core APIs (Stable)

ModuleExportDescription
ParseparseISL()Parse ISL source code into an AST
Checkcheck()Type check and semantic analysis
Formatformat(), fmt()Pretty-print AST back to source
Lintlint()Style and best-practice checks
Compilecompile()Full compilation pipeline

Additional APIs (Stable)

ModuleExportDescription
ImportsresolveImports()Import resolution between ISL files
Verificationverification.*Verify implementations against specs

Experimental APIs

ModuleExportDescription
TestGentestgen.*Generate tests from specifications

Note: Experimental APIs may change in minor versions. Stable APIs follow semver.

Installation

npm install @isl-lang/isl-core
# or
pnpm add @isl-lang/isl-core

Quick Usage

Parse ISL Source

import { parseISL } from '@isl-lang/isl-core';

const source = `
domain MyDomain {
  entity User {
    id: UUID
    email: String
  }
}
`;

const result = parseISL(source);

if (result.errors.length > 0) {
  console.error('Parse errors:', result.errors);
} else {
  console.log('AST:', result.ast);
}

Full Compilation Pipeline

import { compile } from '@isl-lang/isl-core';

const result = compile(source, {
  check: { strict: true },
  lint: { rules: { 'naming/entity-pascal-case': true } },
});

console.log('Success:', result.success);
console.log('Diagnostics:', result.check?.diagnostics);
console.log('Lint messages:', result.lint?.messages);
console.log('Formatted:\n', result.formatted);

Type Checking Only

import { parseISL, check } from '@isl-lang/isl-core';

const { ast } = parseISL(source);
if (ast) {
  const checkResult = check(ast, { strict: true });
  
  for (const diag of checkResult.diagnostics) {
    console.log(`${diag.severity}: ${diag.message}`);
  }
}

Formatting

import { parseISL, format } from '@isl-lang/isl-core';

const { ast } = parseISL(source);
if (ast) {
  const formatted = format(ast, {
    indent: '  ',
    maxWidth: 80,
    sortDeclarations: true,
  });
  console.log(formatted);
}

Linting

import { parseISL, lint, getRules } from '@isl-lang/isl-core';

// See available rules
console.log(getRules());

const { ast } = parseISL(source);
if (ast) {
  const result = lint(ast, {
    rules: {
      'best-practice/require-description': true,
      'naming/field-camel-case': true,
    },
  });
  
  for (const msg of result.messages) {
    console.log(`[${msg.ruleId}] ${msg.message}`);
  }
}

Verification

import { verification } from '@isl-lang/isl-core';

const sourceCode = `
// @isl-bindings
// CreateUser.pre.1 -> guard at L15
// @end-isl-bindings

function createUser(input) {
  if (!input.email.includes('@')) {  // L15
    throw new Error('Invalid email');
  }
  // ...
}
`;

const result = verification.verify(sourceCode, {
  clauses: [
    { id: 'CreateUser.pre.1', type: 'precondition', expression: 'email.contains("@")' },
  ],
});

console.log(verification.formatVerificationSummary(result));

Test Generation (Experimental)

import { parseISL, testgen } from '@isl-lang/isl-core';

const { ast } = parseISL(source);
if (ast) {
  const suite = testgen.generateTests(ast, {
    framework: 'vitest',
    includeBoundary: true,
    includeErrors: true,
  });
  
  for (const test of suite.tests) {
    console.log(`${test.category}: ${test.name}`);
  }
}

Subpath Exports

For tree-shaking, you can import specific modules:

import { check } from '@isl-lang/isl-core/check';
import { format } from '@isl-lang/isl-core/fmt';
import { lint } from '@isl-lang/isl-core/lint';
import { resolveImports } from '@isl-lang/isl-core/imports';
import { verify } from '@isl-lang/isl-core/verification';
import { generateTests } from '@isl-lang/isl-core/testgen';

API Reference

parseISL(source: string, filename?: string): ParseResult

Parse ISL source code into an AST.

compile(source: string, options?): CompileResult

Run the full compilation pipeline (parse → check → lint → format).

check(ast: DomainDeclaration, options?): CheckResult

Type check and semantic analysis.

Options:

  • allowUndefinedTypes: Allow undefined type references
  • strict: Treat warnings as errors

format(ast: DomainDeclaration, options?): string

Format AST back to source code.

Options:

  • indent: Indentation string (default: 2 spaces)
  • maxWidth: Maximum line width (default: 80)
  • sortDeclarations: Sort declarations alphabetically

lint(ast: DomainDeclaration, options?): LintResult

Check for style and best-practice issues.

Options:

  • rules: Enable/disable specific rules
  • severities: Override rule severities

verification.verify(sourceCode: string, spec: SpecInfo, options?): VerificationResult

Verify implementation code against ISL specification.

testgen.generateTests(ast: DomainDeclaration, options?): TestSuite

Generate test cases from behavior specifications.

Version Information

import { VERSION, API_VERSION } from '@isl-lang/isl-core';

console.log(`Version: ${VERSION}`);  // "0.1.0"
console.log(`API Version: ${API_VERSION}`);  // 1

License

MIT

Keywords

isl

FAQs

Package last updated on 12 Feb 2026

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts