ifc-language-server/server/node_modules/vscode-jsonrpc/lib/common/messageWriter.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

60 lines
2.1 KiB
TypeScript

import RAL from './ral';
import { Message } from './messages';
import { Event } from './events';
import { ContentEncoder, ContentTypeEncoder } from './encoding';
/**
* Writes JSON-RPC messages to an underlying transport.
*/
export interface MessageWriter {
/**
* Raised whenever an error occurs while writing a message.
*/
readonly onError: Event<[Error, Message | undefined, number | undefined]>;
/**
* An event raised when the underlying transport has closed and writing is no longer possible.
*/
readonly onClose: Event<void>;
/**
* Sends a JSON-RPC message.
* @param msg The JSON-RPC message to be sent.
* @description Implementations should guarantee messages are transmitted in the same order that they are received by this method.
*/
write(msg: Message): Promise<void>;
/**
* Call when the connection using this message writer ends
* (e.g. MessageConnection.end() is called)
*/
end(): void;
/** Releases resources incurred from writing or raising events. Does NOT close the underlying transport, if any. */
dispose(): void;
}
export declare namespace MessageWriter {
function is(value: any): value is MessageWriter;
}
export declare abstract class AbstractMessageWriter {
private errorEmitter;
private closeEmitter;
constructor();
dispose(): void;
get onError(): Event<[Error, Message | undefined, number | undefined]>;
protected fireError(error: any, message?: Message, count?: number): void;
get onClose(): Event<void>;
protected fireClose(): void;
private asError;
}
export interface MessageWriterOptions {
charset?: RAL.MessageBufferEncoding;
contentEncoder?: ContentEncoder;
contentTypeEncoder?: ContentTypeEncoder;
}
export declare class WriteableStreamMessageWriter extends AbstractMessageWriter implements MessageWriter {
private writable;
private options;
private errorCount;
private writeSemaphore;
constructor(writable: RAL.WritableStream, options?: RAL.MessageBufferEncoding | MessageWriterOptions);
write(msg: Message): Promise<void>;
private doWrite;
private handleError;
end(): void;
}