@typespec/http-server-csharp
Version:
TypeSpec service code generator for c-sharp
114 lines • 7.59 kB
TypeScript
import { AssetEmitter, Declaration, EmitterOutput, Scope } from "@typespec/asset-emitter";
import { IntrinsicScalarName, IntrinsicType, Model, ModelProperty, NumericLiteral, Program, Scalar, Type, Union, Value } from "@typespec/compiler";
import { HttpOperation, HttpOperationParameter, HttpOperationResponse, HttpStatusCodesEntry } from "@typespec/http";
import { HttpRequestParameterKind } from "@typespec/http/experimental/typekit";
import { Attribute, CSharpOperationParameter, CSharpType, CSharpValue, NameCasingType } from "./interfaces.js";
import { CSharpServiceEmitterOptions } from "./lib.js";
export declare function getCSharpTypeForScalar(program: Program, scalar: Scalar): CSharpType;
export declare const UnknownType: CSharpType;
export declare const RecordType: CSharpType;
export declare function getCSharpType(program: Program, type: Type, namespace?: string): {
type: CSharpType;
value?: CSharpValue;
} | undefined;
export declare function resolveReferenceFromScopes(targetDeclaration: Declaration<string>, declarationScopes: Scope<string>[], referenceScopes: Scope<string>[]): string | undefined;
export declare function coalesceTypes(program: Program, types: Type[], namespace?: string): {
type: CSharpType;
value?: CSharpValue;
};
export declare function getKnownType(program: Program, type: Type): CSharpType | undefined;
export declare function getCSharpTypeForIntrinsic(program: Program, type: IntrinsicType): {
type: CSharpType;
value?: CSharpValue;
} | undefined;
export type ExtendedIntrinsicScalarName = IntrinsicScalarName | "unixTimestamp32";
export declare function getCSharpTypeForStdScalars(program: Program, scalar: Scalar & {
name: ExtendedIntrinsicScalarName;
}): CSharpType;
export declare function isValueType(program: Program, type: Type): boolean;
export declare function formatComment(text: string, lineLength?: number, lineEnd?: string): string;
export declare function getCSharpIdentifier(name: string, context?: NameCasingType, checkReserved?: boolean): string;
export declare function ensureCSharpIdentifier(program: Program, target: Type, name: string, context?: NameCasingType): string;
export declare function getModelAttributes(program: Program, entity: Type, cSharpName?: string): Attribute[];
export declare function getModelDeclarationName(program: Program, model: Model, defaultSuffix: string): string;
export declare function getModelInstantiationName(program: Program, model: Model, name: string): string;
export declare class ModelInfo {
visited: Model[];
getAllProperties(program: Program, model: Model): ModelProperty[] | undefined;
filterAllProperties(program: Program, model: Model, filter: (p: ModelProperty) => boolean): ModelProperty | undefined;
}
export declare function getPropertySource(program: Program, property: ModelProperty): Model | undefined;
export declare function getSourceModel(program: Program, model: Model): Model | undefined;
export declare class HttpMetadata {
resolveLogicalResponseType(program: Program, response: HttpOperationResponse): Type;
}
export declare function getOperationAttributes(program: Program, entity: Type): Attribute[];
export declare function transformInvalidIdentifier(name: string): string;
export declare function getOperationVerbDecorator(operation: HttpOperation): string;
export declare function hasNonMetadataProperties(program: Program, model: Model): boolean;
export declare function ensureCleanDirectory(program: Program, targetPath: string): Promise<void>;
export declare function isValidCSharpIdentifier(identifier: string, isNamespace?: boolean): boolean;
export declare function replaceCSharpReservedWord(identifier: string, context?: NameCasingType): string;
export declare function getValidChar(target: string, position: number): string;
export declare function getCSharpStatusCode(entry: HttpStatusCodesEntry): string | undefined;
export declare function isEmptyResponseModel(program: Program, model: Type): boolean;
export declare function isContentTypeHeader(program: Program, parameter: ModelProperty): boolean;
export declare function isValidParameter(program: Program, parameter: ModelProperty): boolean;
/** Determine whether the given parameter is http metadata */
export declare function isHttpMetadata(program: Program, property: ModelProperty): boolean;
export declare function getBusinessLogicCallParameters(parameters: CSharpOperationParameter[]): EmitterOutput<string>;
export declare function getBusinessLogicDeclParameters(parameters: CSharpOperationParameter[]): EmitterOutput<string>;
export declare function getHttpDeclParameters(parameters: CSharpOperationParameter[]): EmitterOutput<string>;
export declare function getBusinessLogicCallParameter(param: CSharpOperationParameter): EmitterOutput<string>;
export declare function getBusinessLogicSignatureParameter(param: CSharpOperationParameter): EmitterOutput<string>;
export declare function getHttpSignatureParameter(param: CSharpOperationParameter): EmitterOutput<string>;
export declare function getHttpParameterDecorator(parameter: CSharpOperationParameter): EmitterOutput<string>;
export declare function getParameterKind(parameter: HttpOperationParameter): HttpRequestParameterKind;
export declare function canHaveDefault(program: Program, type: Type): boolean;
export interface EmittedTypeInfo {
typeReference: EmitterOutput<string>;
nullableType: boolean;
defaultValue?: string | boolean;
}
export declare class CSharpOperationHelpers {
#private;
constructor(inEmitter: AssetEmitter<string, CSharpServiceEmitterOptions>);
emitter: AssetEmitter<string, CSharpServiceEmitterOptions>;
getResponse(program: Program, operation: HttpOperation): CSharpType;
getParameters(program: Program, operation: HttpOperation): CSharpOperationParameter[];
getDefaultValue(program: Program, tsType: Type, defaultValue: Value | undefined): string | number | undefined;
getTypeInfo(program: Program, tsType: Type, modelProperty?: ModelProperty): EmittedTypeInfo;
getUnionInfo(program: Program, union: Union): EmittedTypeInfo;
}
export declare function getExplicitBodyParameters(program: Program, httpOperation: HttpOperation): CSharpOperationParameter[] | undefined;
export declare function findNumericType(type: NumericLiteral): [string, string];
export declare function isStringEnumType(program: Program, union: Union): boolean;
export declare function coalesceUnionTypes(program: Program, union: Union): CSharpType;
export declare function getNonNullableTsType(union: Union): {
type: Type;
nullable: boolean;
} | undefined;
export declare function coalesceTsTypes(program: Program, types: Type[]): [CSharpType, boolean];
export declare function isRecord(type: Type): boolean;
export declare function getFreePort(minPort: number, maxPort: number, tries?: number): Promise<number>;
export interface OpenApiConfig {
emitted: boolean;
outputDir?: string;
fileName?: any;
options?: Record<string, unknown> & {
"emitter-output-dir"?: string;
};
}
export declare function getOpenApiConfig(program: Program): Promise<OpenApiConfig>;
export declare function getStatusCode(program: Program, model: Model): {
name: string;
value: string;
requiresConstructorArgument: boolean;
} | {
value: string | number;
name?: undefined;
requiresConstructorArgument?: undefined;
} | undefined;
export declare function isByteType(type: Type): boolean;
export declare function getImports(scope?: Scope<string>, visited?: Set<Scope<string>>): string[];
//# sourceMappingURL=utils.d.ts.map