@spec2ts/core
Version:
Core module for @spec2ts modules, includes codegen helpers and common parsing methods
90 lines (89 loc) • 4.54 kB
TypeScript
import * as ts from "typescript";
export declare function createTypeAliasDeclaration({ modifiers, name, typeParameters, type }: {
modifiers?: ts.Modifier[];
name: string | ts.Identifier;
typeParameters?: ts.TypeParameterDeclaration[];
type: ts.TypeNode;
}): ts.TypeAliasDeclaration;
export declare function createFunctionDeclaration(name: string | ts.Identifier | undefined, { modifiers, asteriskToken, typeParameters, type }: {
modifiers?: ts.Modifier[];
asteriskToken?: ts.AsteriskToken;
typeParameters?: ts.TypeParameterDeclaration[];
type?: ts.TypeNode;
}, parameters: ts.ParameterDeclaration[], body?: ts.Block): ts.FunctionDeclaration;
export declare function createInterfaceDeclaration({ modifiers, name, typeParameters, heritageClauses, members }: {
modifiers?: ts.Modifier[];
name: string | ts.Identifier;
typeParameters?: ts.TypeParameterDeclaration[];
heritageClauses?: ts.HeritageClause[];
members: readonly ts.TypeElement[];
}): ts.InterfaceDeclaration;
export declare function createClassDeclaration({ modifiers, name, typeParameters, heritageClauses, members }: {
modifiers?: ts.Modifier[];
name?: string | ts.Identifier;
typeParameters?: ts.TypeParameterDeclaration[];
heritageClauses?: ts.HeritageClause[];
members: ts.ClassElement[];
}): ts.ClassDeclaration;
export declare function createConstructor({ modifiers, parameters, body }: {
modifiers?: ts.Modifier[];
parameters: ts.ParameterDeclaration[];
body?: ts.Block;
}): ts.ConstructorDeclaration;
export declare function createMethod(name: string | ts.Identifier | ts.StringLiteral | ts.NumericLiteral | ts.ComputedPropertyName, { modifiers, asteriskToken, questionToken, typeParameters, type }?: {
modifiers?: ts.Modifier[];
asteriskToken?: ts.AsteriskToken;
questionToken?: ts.QuestionToken | boolean;
typeParameters?: ts.TypeParameterDeclaration[];
type?: ts.TypeNode;
}, parameters?: ts.ParameterDeclaration[], body?: ts.Block): ts.MethodDeclaration;
export declare function createParameter(name: string | ts.BindingName, { modifiers, dotDotDotToken, questionToken, type, initializer }: {
modifiers?: ts.Modifier[];
dotDotDotToken?: ts.DotDotDotToken;
questionToken?: ts.QuestionToken | boolean;
type?: ts.TypeNode;
initializer?: ts.Expression;
}): ts.ParameterDeclaration;
export declare function createPropertySignature({ modifiers, name, questionToken, type, }: {
modifiers?: ts.Modifier[];
name: ts.PropertyName | string;
questionToken?: ts.QuestionToken | boolean;
type?: ts.TypeNode;
}): ts.PropertySignature;
export declare function createPropertyAssignment(name: string, expression: ts.Expression): ts.PropertyAssignment | ts.ShorthandPropertyAssignment;
export declare function createIndexSignature(type: ts.TypeNode, { modifiers, indexName, indexType }?: {
indexName?: string;
indexType?: ts.TypeNode;
modifiers?: ts.Modifier[];
}): ts.IndexSignatureDeclaration;
export declare function createNamedImportDeclaration({ modifiers, bindings, isTypeOnly, moduleSpecifier }: {
modifiers?: ts.Modifier[];
bindings: Array<ts.Identifier | string | ImportSpecifier>;
isTypeOnly?: boolean;
moduleSpecifier: string | ts.Expression;
}): ts.ImportDeclaration;
export declare function createDefaultImportDeclaration({ modifiers, name, bindings, isTypeOnly, moduleSpecifier }: {
modifiers?: ts.Modifier[];
name: ts.Identifier | string;
bindings?: Array<ts.Identifier | string | ImportSpecifier>;
isTypeOnly?: boolean;
moduleSpecifier: string | ts.Expression;
}): ts.ImportDeclaration;
export declare function createNamespaceImportDeclaration({ modifiers, name, isTypeOnly, moduleSpecifier }: {
modifiers?: ts.Modifier[];
name: ts.Identifier | string;
isTypeOnly?: boolean;
moduleSpecifier: string | ts.Expression;
}): ts.ImportDeclaration;
export declare function createTypeOrInterfaceDeclaration({ modifiers, name, type }: {
modifiers?: ts.Modifier[];
name: string | ts.Identifier;
type: ts.TypeNode;
}): ts.InterfaceDeclaration | ts.TypeAliasDeclaration;
export declare function updateVariableDeclarationInitializer(declaration: ts.VariableDeclaration, initializer: ts.Expression): ts.VariableDeclaration;
export type ImportSpecifier = {
name: ts.Identifier | string;
propertyName: ts.Identifier | string;
type?: boolean;
};
export declare function createImportSpecifier(binding: ts.Identifier | string | ImportSpecifier): ts.ImportSpecifier;