UNPKG

@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
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; }