@odata2ts/odata2ts
Version:
Flexible generator to produce various TypeScript artefacts (from simple model interfaces to complete odata clients) from OData metadata files
133 lines (132 loc) • 3.19 kB
TypeScript
import { ValueConverterImport } from "@odata2ts/converter-runtime";
import { Modes } from "../OptionModel.js";
export declare enum ODataVersion {
V2 = "2.0",
V4 = "4.0"
}
export declare const enum DataTypes {
PrimitiveType = "PrimitiveType",
EnumType = "EnumType",
ComplexType = "ComplexType",
ModelType = "ModelType"
}
export declare const enum OperationTypes {
Function = "Function",
Action = "Action"
}
export interface PropertyModel {
odataName: string;
name: string;
odataType: string;
fqType: string;
type: string;
typeModule?: string;
qObject?: string;
qPath: string;
qParam?: string;
required: boolean;
isCollection: boolean;
dataType: DataTypes;
converters?: Array<ValueConverterImport>;
managed?: boolean;
}
export type ModelType = EntityType | ComplexType | EnumType;
export interface EntityType extends ComplexType {
id: {
fqName: string;
modelName: string;
qName: string;
};
generateId: boolean;
keyNames: Array<string>;
keys: Array<PropertyModel>;
getKeyUnion(): string;
}
export interface ComplexType {
dataType: DataTypes;
fqName: string;
odataName: string;
name: string;
modelName: string;
editableName: string;
qName: string;
qBaseName?: string;
serviceName: string;
serviceCollectionName: string;
folderPath: string;
props: Array<PropertyModel>;
baseProps: Array<PropertyModel>;
baseClasses: Array<string>;
finalBaseClass: string | undefined;
abstract: boolean;
open: boolean;
genMode: Modes;
subtypes: Set<string>;
}
export interface EnumType {
dataType: DataTypes;
odataName: string;
fqName: string;
name: string;
modelName: string;
folderPath: string;
members: Array<{
name: string;
value: number;
}>;
}
export interface OperationType {
fqName: string;
odataName: string;
name: string;
qName: string;
paramsModelName: string;
type: OperationTypes;
parameters: Array<PropertyModel>;
returnType?: ReturnTypeModel;
usePost?: boolean;
overrides?: Array<Array<PropertyModel>>;
}
export interface ReturnTypeModel extends PropertyModel {
}
export type EntityContainerModel = {
entitySets: {
[name: string]: EntitySetType;
};
singletons: {
[name: string]: SingletonType;
};
functions: {
[name: string]: FunctionImportType;
};
actions: {
[name: string]: ActionImportType;
};
};
export interface SingletonType {
fqName: string;
odataName: string;
name: string;
entityType: EntityType;
navPropBinding?: Array<NavPropBindingType>;
}
export interface EntitySetType {
fqName: string;
odataName: string;
name: string;
entityType: EntityType;
navPropBinding?: Array<NavPropBindingType>;
}
export interface NavPropBindingType {
path: string;
target: string;
}
export interface ActionImportType {
fqName: string;
odataName: string;
name: string;
operation: string;
}
export interface FunctionImportType extends ActionImportType {
entitySet: string;
}