ifc-language-server/server/node_modules/vscode-jsonrpc/lib/common/encoding.d.ts
Ryan Schultz 8afacf268a Implemented a working Language Server Protocol (LSP) for IFC files with:
- Hover provider showing entity information and type
- Go-to-definition (F12) for entity references
- Basic IFC file validation (ISO-10303-21 header check)
- Entity parsing with regex-based detection
- Proper CommonJS module system (avoiding ES module issues)

This replaces the broken baseline from ifc-developer-tools which had:
- Non-functional ES module configuration
- Circular dependency issues
- Parser crashes
- Non-working PositionVisitor

Built on Microsoft's LSP example template for a clean, maintainable foundation.

Next: Add hierarchical entity dependency tree in hover tooltip."
2025-12-07 10:20:07 -06:00

52 lines
1.9 KiB
TypeScript

import type RAL from './ral';
import { Message } from './messages';
export interface FunctionContentEncoder {
name: string;
encode(input: Uint8Array): Promise<Uint8Array>;
}
export interface StreamContentEncoder {
name: string;
create(): RAL.WritableStream;
}
export type ContentEncoder = FunctionContentEncoder | (FunctionContentEncoder & StreamContentEncoder);
export interface FunctionContentDecoder {
name: string;
decode(buffer: Uint8Array): Promise<Uint8Array>;
}
export interface StreamContentDecoder {
name: string;
create(): RAL.WritableStream;
}
export type ContentDecoder = FunctionContentDecoder | (FunctionContentDecoder & StreamContentDecoder);
export interface ContentTypeEncoderOptions {
charset: RAL.MessageBufferEncoding;
}
export interface FunctionContentTypeEncoder {
name: string;
encode(msg: Message, options: ContentTypeEncoderOptions): Promise<Uint8Array>;
}
export interface StreamContentTypeEncoder {
name: string;
create(options: ContentTypeEncoderOptions): RAL.WritableStream;
}
export type ContentTypeEncoder = FunctionContentTypeEncoder | (FunctionContentTypeEncoder & StreamContentTypeEncoder);
export interface ContentTypeDecoderOptions {
charset: RAL.MessageBufferEncoding;
}
export interface FunctionContentTypeDecoder {
name: string;
decode(buffer: Uint8Array, options: ContentTypeDecoderOptions): Promise<Message>;
}
export interface StreamContentTypeDecoder {
name: string;
create(options: ContentTypeDecoderOptions): RAL.WritableStream;
}
export type ContentTypeDecoder = FunctionContentTypeDecoder | (FunctionContentTypeDecoder & StreamContentTypeDecoder);
interface Named {
name: string;
}
export declare namespace Encodings {
function getEncodingHeaderValue(encodings: Named[]): string | undefined;
function parseEncodingHeaderValue(value: string): string[];
}
export {};