UNPKG

angular-odata

Version:

Client side OData typescript library for Angular

1,412 lines (1,399 loc) 238 kB
import { Observable, Subject, Subscription } from 'rxjs'; import * as angular_odata from 'angular-odata'; import { HttpContext, HttpHeaders, HttpParams, HttpResponse, HttpResponseBase, HttpErrorResponse, HttpClient, HttpEvent } from '@angular/common/http'; import * as i0 from '@angular/core'; import { EventEmitter, Provider, InjectionToken, EnvironmentProviders, ModuleWithProviders } from '@angular/core'; import * as i1 from '@angular/common'; type ODataVersion = '2.0' | '3.0' | '4.0'; type FetchPolicy = 'cache-first' | 'cache-and-network' | 'network-only' | 'no-cache' | 'cache-only'; type ODataMetadataType = 'minimal' | 'full' | 'none'; type CacheCacheability = 'public' | 'private' | 'no-cache' | 'no-store'; declare enum PathSegment { batch = "batch", metadata = "metadata", entitySet = "entitySet", singleton = "singleton", type = "type", property = "property", navigationProperty = "navigationProperty", reference = "reference", value = "value", count = "count", function = "function", action = "action" } declare enum QueryOption { select = "select", expand = "expand", compute = "compute", apply = "apply", filter = "filter", search = "search", transform = "transform", orderBy = "orderBy", top = "top", skip = "skip", skiptoken = "skiptoken", format = "format", levels = "levels", count = "count" } declare enum EdmType { Guid = "Edm.Guid", Int16 = "Edm.Int16", String = "Edm.String", Boolean = "Edm.Boolean", Byte = "Edm.Byte", SByte = "Edm.SByte", Int32 = "Edm.Int32", Int64 = "Edm.Int64", Date = "Edm.Date", TimeOfDay = "Edm.TimeOfDay", DateTimeOffset = "Edm.DateTimeOffset", Duration = "Edm.Duration", Decimal = "Edm.Decimal", Double = "Edm.Double", Single = "Edm.Single", Binary = "Edm.Binary", Stream = "Edm.Stream", Geography = "Edm.Geography", GeographyPoint = "Edm.GeographyPoint", GeographyLineString = "Edm.GeographyLineString", GeographyPolygon = "Edm.GeographyPolygon", GeographyMultiPoint = "Edm.GeographyMultiPoint", GeographyMultiLineString = "Edm.GeographyMultiLineString", GeographyMultiPolygon = "Edm.GeographyMultiPolygon", GeographyCollection = "Edm.GeographyCollection", Geometry = "Edm.Geometry", GeometryPoint = "Edm.GeometryPoint", GeometryLineString = "Edm.GeometryLineString", GeometryPolygon = "Edm.GeometryPolygon", GeometryMultiPoint = "Edm.GeometryMultiPoint", GeometryMultiLineString = "Edm.GeometryMultiLineString", GeometryMultiPolygon = "Edm.GeometryMultiPolygon", GeometryCollection = "Edm.GeometryCollection" } declare enum JsonType { string = "string", number = "number", integer = "integer", object = "object", array = "array", boolean = "boolean", null = "null" } interface ParserOptions { version?: ODataVersion; exponentialDecimals?: boolean; metadata?: ODataMetadataType; ieee754Compatible?: boolean; streaming?: boolean; stringAsEnum?: boolean; deleteRefBy?: 'path' | 'id'; nonParenthesisForEmptyParameterFunction?: boolean; } interface ResponseOptions extends ParserOptions { cacheability?: CacheCacheability; maxAge?: number; } interface StructuredTypeFieldOptions extends ParserOptions { field: ODataStructuredTypeFieldConfig; } interface Parser<T> { deserialize(value: any, options?: ParserOptions | StructuredTypeFieldOptions): T | T[]; serialize(value: T, options?: ParserOptions | StructuredTypeFieldOptions): any; encode(value: T, options?: ParserOptions | StructuredTypeFieldOptions): any; } interface FieldParser<T> extends Parser<T> { nullable?: boolean; default?: any; maxLength?: number; precision?: number; scale?: number | 'variable'; } declare const NONE_PARSER: Parser<any>; interface ODataCache { put<T>(key: string, payload: T, ...opts: any[]): void; get<T>(key: string, ...opts: any[]): T | undefined; handleRequest(req: any, res$: Observable<any>): Observable<any>; flush(): void; } interface ODataApiConfigOptions { version?: ODataVersion; params?: { [param: string]: string | string[]; }; headers?: { [param: string]: string | string[]; }; withCredentials?: boolean; accept?: { exponentialDecimals?: boolean; metadata?: ODataMetadataType; ieee754Compatible?: boolean; streaming?: boolean; }; etag?: { ifMatch?: boolean; ifNoneMatch?: boolean; }; prefer?: { maxPageSize?: number; return?: 'representation' | 'minimal'; continueOnError?: boolean; includeAnnotations?: string; }; stripMetadata?: ODataMetadataType; fetchPolicy?: FetchPolicy; bodyQueryOptions?: QueryOption[]; stringAsEnum?: boolean; deleteRefBy?: 'path' | 'id'; nonParenthesisForEmptyParameterFunction?: boolean; jsonBatchFormat?: boolean; relativeUrls?: boolean; } type ODataApiConfig = { serviceRootUrl: string; metadataUrl?: string; name?: string; version?: ODataVersion; default?: boolean; creation?: Date; cache?: ODataCache; errorHandler?: (error: any, caught: Observable<any>) => Observable<never>; options?: ODataApiConfigOptions; parsers?: { [type: string]: Parser<any>; }; schemas?: ODataSchemaConfig[]; references?: ODataReferenceConfig[]; }; type ODataAnnotationConfig = { term: string; string?: string; bool?: boolean; int?: number; permissions?: string[]; properties?: string[]; }; type ODataReferenceConfig = { uri: string; includes?: string; annotations?: ODataAnnotationConfig[]; enums?: ODataEnumTypeConfig[]; entities?: ODataStructuredTypeConfig[]; callables?: ODataCallableConfig[]; containers?: ODataEntityContainerConfig[]; }; type ODataSchemaConfig = { namespace: string; alias?: string; annotations?: ODataAnnotationConfig[]; enums?: ODataEnumTypeConfig[]; entities?: ODataStructuredTypeConfig[]; callables?: ODataCallableConfig[]; containers?: ODataEntityContainerConfig[]; }; type ODataEntityContainerConfig = { name: string; annotations?: ODataAnnotationConfig[]; entitySets?: ODataEntitySetConfig[]; singletons?: ODataSingletonConfig[]; }; type ODataEnumTypeFieldConfig = { value: number; annotations?: ODataAnnotationConfig[]; }; type ODataEnumTypeConfig = { name: string; flags?: boolean; annotations?: ODataAnnotationConfig[]; members: { [name: string]: number; } | { [value: number]: string; }; fields: { [member: string]: ODataEnumTypeFieldConfig; }; }; type ODataStructuredTypeFieldConfig = { type: string; default?: any; maxLength?: number; key?: boolean; collection?: boolean; nullable?: boolean; navigation?: boolean; precision?: number; annotations?: ODataAnnotationConfig[]; scale?: number | 'variable'; referentials?: { property: string; referencedProperty: string; }[]; referential?: string; referenced?: string; }; type ODataStructuredTypeConfig = { name: string; base?: string; open?: boolean; model?: { new (...params: any[]): any; }; collection?: { new (...params: any[]): any; }; annotations?: ODataAnnotationConfig[]; keys?: { name: string; alias?: string; }[]; fields?: { [name: string]: ODataStructuredTypeFieldConfig; }; }; type ODataParameterConfig = { type: string; nullable?: boolean; collection?: boolean; }; type ODataCallableConfig = { name: string; entitySetPath?: string; bound?: boolean; composable?: boolean; parameters?: { [name: string]: ODataParameterConfig; }; return?: { type: string; collection?: boolean; }; }; type ODataEntitySetConfig = { name: string; entityType: string; service: { new (...params: any[]): any; }; annotations?: ODataAnnotationConfig[]; }; type ODataSingletonConfig = { name: string; type: string; service: { new (...params: any[]): any; }; annotations?: ODataAnnotationConfig[]; }; type LooseUnion<U> = U | (U extends string ? Record<never, never> & string : never); type ObjectValues<T> = T[keyof T]; type Unpacked<T> = NonNullable<T> extends (infer U)[] ? U : NonNullable<T>; type Select<T> = SelectType<T> | SelectType<T>[]; type SelectType<T> = LooseUnion<keyof T>; type Filter<T> = FilterType<T> | FilterType<T>[]; type FilterType<T> = string | Record<string | keyof T, any>; declare const StandardAggregateMethods: { readonly sum: "sum"; readonly min: "min"; readonly max: "max"; readonly average: "average"; readonly countdistinct: "countdistinct"; }; type StandardAggregateMethods = ObjectValues<typeof StandardAggregateMethods>; type AggregateType<T> = string | Record<string | keyof T, { with: StandardAggregateMethods; as: string; }>; type OrderBy<T> = OrderByType<T> | OrderByType<T>[]; type OrderByType<T> = LooseUnion<OrderByObject<T>>; type OrderByObject<T> = keyof T | [keyof T | string, 'asc' | 'desc'] | NestedOrderBy<T>; type NestedOrderBy<T> = { [P in keyof T]?: T[P] extends Array<infer E> ? OrderBy<E> : OrderBy<T[P]>; }; type Expand<T> = ExpandType<T> | ExpandType<T>[]; type ExpandType<T> = LooseUnion<ExpandObject<T>>; type ExpandObject<T> = keyof T | NestedExpandOptions<T>; type NestedExpandOptions<T> = { [P in keyof T]?: ExpandOptions<Unpacked<T[P]>>; }; type ExpandOptions<T> = { select?: Select<T>; filter?: Filter<T>; orderBy?: OrderBy<T>; top?: number; skip?: number; levels?: number | 'max'; count?: boolean | Filter<T>; expand?: Expand<T>; }; type Transform<T> = { aggregate?: AggregateType<T> | Array<AggregateType<T>>; filter?: Filter<T> | null; groupBy?: GroupByType<T>; }; type GroupByType<T> = { properties: Array<LooseUnion<keyof T>>; transform?: Transform<T>; }; declare const QueryCustomTypes: { readonly Raw: "Raw"; readonly Alias: "Alias"; readonly Duration: "Duration"; readonly Binary: "Binary"; }; type QueryCustomTypes = ObjectValues<typeof QueryCustomTypes>; type QueryCustomType = { type: QueryCustomTypes; value: any; name?: string; }; type Value = string | Date | number | boolean | QueryCustomType; declare const raw: (value: string) => QueryCustomType; declare const alias: (value: any, name?: string) => QueryCustomType; declare const duration: (value: string) => QueryCustomType; declare const binary: (value: string) => QueryCustomType; declare const isQueryCustomType: (value: any) => boolean; declare const isRawType: (value: any) => boolean; type QueryOptions<T> = ExpandOptions<T> & { search: string; apply: string; transform: Transform<T> | Transform<T>[]; compute: string; skip: number; skiptoken: string; key: string | number | Record<string | keyof T, any>; count: boolean | Filter<T>; action: string; func: string | { [functionName: string]: { [parameterName: string]: any; }; }; format: string; aliases: QueryCustomType[]; escape: boolean; }; declare const ITEM_ROOT = ""; declare function buildPathAndQuery<T>({ select, search, skiptoken, format, top, skip, filter, apply, transform, compute, orderBy, key, count, expand, action, func, aliases, escape, }?: Partial<QueryOptions<T>>): [string, { [name: string]: any; }]; declare function normalizeValue(value: Value, { aliases, escape }?: { aliases?: QueryCustomType[]; escape?: boolean; }): any; type Normalize = 'all' | 'right' | 'left' | 'none'; interface Renderable { render({ aliases, escape, prefix, parser, options, }: { aliases?: QueryCustomType[]; escape?: boolean; prefix?: string; parser?: Parser<any>; options?: ParserOptions; }): string; toJson(): any; clone(): any; resolve(parser: any): any; toString(): any; } declare const FieldFactory: <T extends object>(names?: (string | Renderable)[]) => any; declare const RenderableFactory: (value: any) => Renderable; declare function render(value: any, { aliases, normalize, escape, prefix, parser, options, }?: { aliases?: QueryCustomType[]; normalize?: boolean; escape?: boolean; prefix?: string; parser?: Parser<any>; options?: ParserOptions; }): string | number | boolean | null; declare function resolve(values: any, parser?: Parser<any>): any; declare function encode(values: any, parser?: Parser<any>, options?: ParserOptions): any; declare class Function<T> implements Renderable { protected name: string; protected values: any[]; protected normalize: Normalize; protected escape: boolean; constructor(name: string, values: any[], normalize: Normalize, escape?: boolean); get [Symbol.toStringTag](): string; toJson(): { $type: string; name: string; values: any[]; normalize: Normalize; }; static fromJson<T>(json: { [name: string]: any; }): Function<T>; render({ aliases, escape, prefix, parser, options, }: { aliases?: QueryCustomType[]; escape?: boolean; prefix?: string; parser?: Parser<T>; options?: ParserOptions; }): string; clone(): Function<T>; resolve(parser: any): any; } declare class StringAndCollectionFunctions<T> { concat(left: any, right: any, normalize?: Normalize): Function<T>; contains(left: any, right: any, normalize?: Normalize): Function<T>; endsWith(left: any, right: any, normalize?: Normalize): Function<T>; indexOf(left: any, right: any, normalize?: Normalize): Function<T>; length(left: any, normalize?: Normalize): Function<T>; startsWith(left: any, right: any, normalize?: Normalize): Function<T>; subString(left: any, right: number, length?: number, normalize?: Normalize): Function<T>; } declare class CollectionFunctions<T> { hasSubset(left: T, right: any, normalize?: Normalize): Function<T>; hasSubsequence(left: T, right: any, normalize?: Normalize): Function<T>; } declare class StringFunctions<T> { matchesPattern(left: any | string, pattern: string, normalize?: Normalize): Function<T>; toLower(left: any, normalize?: Normalize): Function<T>; toUpper(left: any, normalize?: Normalize): Function<T>; trim(left: any, normalize?: Normalize): Function<T>; } declare class DateAndTimeFunctions<T> { date(left: any, normalize?: Normalize): Function<T>; day(left: any, normalize?: Normalize): Function<T>; fractionalseconds(left: any, normalize?: Normalize): Function<T>; hour(left: any, normalize?: Normalize): Function<T>; maxdatetime(left: any, normalize?: Normalize): Function<T>; mindatetime(left: any, normalize?: Normalize): Function<T>; minute(left: any, normalize?: Normalize): Function<T>; month(left: any, normalize?: Normalize): Function<T>; now(): Function<T>; second(left: any, normalize?: Normalize): Function<T>; time(left: any, normalize?: Normalize): Function<T>; totaloffsetminutes(left: any, normalize?: Normalize): Function<T>; totalseconds(left: any, normalize?: Normalize): Function<T>; year(left: any, normalize?: Normalize): Function<T>; } declare class ArithmeticFunctions<T> { ceiling(left: T | string, normalize?: Normalize): Function<T>; floor(left: T | string, normalize?: Normalize): Function<T>; round(left: T | string, normalize?: Normalize): Function<T>; } declare class TypeFunctions<T> { cast<N>(left: T | string, type?: string): N; isof(left: T | string, type?: string): Type<T>; } declare class GeoFunctions<T> { geoDistance(left: T, right: string, normalize?: Normalize): Function<T>; geoIntersects(left: T, right: string, normalize?: Normalize): Function<T>; geoLength(left: T, normalize?: Normalize): Function<T>; } declare class ConditionalFunctions<T> { case(left: T | string, right: any, normalize?: Normalize): Function<T>; } declare class Operator<T> implements Renderable { protected op: string; protected values: any[]; protected normalize: Normalize; constructor(op: string, values: any[], normalize: Normalize); get [Symbol.toStringTag](): string; toJson(): { $type: string; op: string; values: any[]; normalize: Normalize; }; static fromJson<T>(json: { [name: string]: any; }): Operator<T>; render({ aliases, escape, prefix, parser, options, }: { aliases?: QueryCustomType[]; escape?: boolean; prefix?: string; parser?: Parser<T>; options?: ParserOptions; }): string; clone(): Operator<unknown>; resolve(parser: any): any; } declare class LogicalOperators<T> { eq(left: any, right: any, normalize?: Normalize): Operator<unknown>; ne(left: any, right: any, normalize?: Normalize): Operator<unknown>; gt(left: any, right: any, normalize?: Normalize): Operator<unknown>; ge(left: any, right: any, normalize?: Normalize): Operator<unknown>; lt(left: any, right: any, normalize?: Normalize): Operator<unknown>; le(left: any, right: any, normalize?: Normalize): Operator<unknown>; not(left: any, normalize?: Normalize): Operator<T>; has(left: any, right: any, normalize?: Normalize): Operator<unknown>; in(left: any, right: any, normalize?: Normalize): Operator<unknown>; } declare class ArithmeticOperators<T> { add(left: any, right: any, normalize?: Normalize): Operator<T>; sub(left: any, right: any, normalize?: Normalize): Operator<unknown>; mul(left: any, right: any, normalize?: Normalize): Operator<unknown>; div(left: any, right: any, normalize?: Normalize): Operator<unknown>; mod(left: any, right: any, normalize?: Normalize): Operator<unknown>; neg(value: any, normalize?: Normalize): Operator<unknown>; } declare class Grouping<T> implements Renderable { protected group: Renderable; constructor(group: Renderable); get [Symbol.toStringTag](): string; toJson(): { $type: string; group: any; }; static fromJson<T>(json: { [name: string]: any; }): Grouping<T>; render({ aliases, escape, prefix, parser, options, }: { aliases?: QueryCustomType[]; escape?: boolean; prefix?: string; parser?: Parser<T>; options?: ParserOptions; }): string; clone(): Grouping<unknown>; resolve(parser: any): any; } declare class GroupingOperators<T> { group(value: any): Grouping<T>; rollup(...values: any): Function<T>; } type AggregateMethod = 'sum' | 'min' | 'max' | 'average' | 'countdistinct'; declare class Aggregate<T> implements Renderable { protected value: Renderable; protected method: AggregateMethod; protected alias: string; constructor(value: Renderable, method: AggregateMethod, alias: string); get [Symbol.toStringTag](): string; toJson(): { $type: string; value: any; method: AggregateMethod; alias: string; }; static fromJson<T>(json: { [name: string]: any; }): Aggregate<T>; render({ aliases, escape, prefix, parser, options, }: { aliases?: QueryCustomType[]; escape?: boolean; prefix?: string; parser?: Parser<T>; options?: ParserOptions; }): string; clone(): Aggregate<unknown>; resolve(parser: any): any; } declare class GroupBy<T> implements Renderable { protected properties: Renderable[]; protected transformations?: Renderable | undefined; constructor(properties: Renderable[], transformations?: Renderable | undefined); get [Symbol.toStringTag](): string; toJson(): { $type: string; properties: any[]; transformations: any; }; static fromJson<T>(json: { [name: string]: any; }): GroupBy<T>; render({ aliases, escape, prefix, parser, options, }: { aliases?: QueryCustomType[]; escape?: boolean; prefix?: string; parser?: Parser<T>; options?: ParserOptions; }): string; clone(): GroupBy<unknown>; resolve(parser: any): any; } declare class Transformations<T> { aggregate(value: Renderable, method: AggregateMethod, alias: string): Aggregate<T>; groupby(properties: Renderable[], options?: Renderable): GroupBy<T>; topCount(value: number, field: Renderable, normalize?: Normalize): Function<T>; topSum(value: number, field: Renderable, normalize?: Normalize): Function<T>; topPercent(value: number, field: Renderable, normalize?: Normalize): Function<T>; bottomCount(value: number, field: Renderable, normalize?: Normalize): Function<T>; bottomSum(value: number, field: Renderable, normalize?: Normalize): Function<T>; bottomPercent(value: number, field: Renderable, normalize?: Normalize): Function<T>; identity(): Function<T>; search(value: any, normalize?: Normalize): Function<T>; filter(value: any, normalize?: Normalize): Function<T>; skip(value: number, normalize?: Normalize): Function<T>; top(value: number, normalize?: Normalize): Function<T>; orderby(value: any, normalize?: Normalize): Function<T>; } declare class Type<T> implements Renderable { protected name: string; protected type: string; protected value?: any | undefined; constructor(name: string, type: string, value?: any | undefined); get [Symbol.toStringTag](): string; toJson(): { $type: string; name: string; type: string; value: any; }; static fromJson<T>(json: { [name: string]: any; }): Type<T>; render({ aliases, escape, prefix, parser, options, }: { aliases?: QueryCustomType[]; escape?: boolean; prefix?: string; parser?: Parser<T>; options?: ParserOptions; }): string; clone(): Type<unknown>; resolve(parser: any): any; } declare class Lambda<T> implements Renderable { protected op: string; protected values: any[]; protected alias?: string | undefined; constructor(op: string, values: any[], alias?: string | undefined); get [Symbol.toStringTag](): string; toJson(): { $type: string; op: string; values: any[]; alias: string | undefined; }; static fromJson<T>(json: { [name: string]: any; }): Lambda<T>; render({ aliases, escape, prefix, parser, options, }: { aliases?: QueryCustomType[]; escape?: boolean; prefix?: string; parser?: Parser<T>; options?: ParserOptions; }): string; clone(): Lambda<unknown>; resolve(parser: any): any; } declare class LambdaOperators<T> { any(left: T, right: any, alias?: string): Lambda<unknown>; all(left: T, right: any, alias?: string): Lambda<unknown>; } declare class ODataOperators<T> { } interface ODataOperators<T> extends LogicalOperators<T>, ArithmeticOperators<T>, GroupingOperators<T>, LambdaOperators<T> { } declare const operators: ODataOperators<any>; declare class ODataFunctions<T> { } interface ODataFunctions<T> extends StringAndCollectionFunctions<T>, CollectionFunctions<T>, StringFunctions<T>, DateAndTimeFunctions<T>, ArithmeticFunctions<T>, TypeFunctions<T>, GeoFunctions<T>, ConditionalFunctions<T> { } declare const functions: ODataFunctions<any>; declare class ODataTransformations<T> { } interface ODataTransformations<T> extends Transformations<T> { } declare const transformations: ODataTransformations<any>; declare class ODataSyntax<T> { } interface ODataSyntax<T> extends ODataOperators<T>, ODataFunctions<T>, ODataTransformations<T> { } declare const syntax: ODataSyntax<any>; declare abstract class Expression<T> implements Renderable { protected _children: Renderable[]; constructor({ children, }?: { children?: Renderable[]; }); get [Symbol.toStringTag](): string; abstract render({ aliases, escape, prefix, parser, options, }: { aliases?: QueryCustomType[]; escape?: boolean; prefix?: string; parser?: Parser<T>; options?: ParserOptions; }): string; abstract clone(): Expression<T>; children(): Renderable[]; length(): number; toJson(): { $type: string; children: any[]; }; resolve(parser: any): any; toString(): string; } type ComputeExpressionBuilder<T> = { t: Required<T>; e: () => ComputeExpression<T>; }; declare class ComputeExpression<T> extends Expression<T> { protected names: string[]; constructor({ children, names, }?: { children?: Renderable[]; names?: string[]; }); get [Symbol.toStringTag](): string; static factory<T>(opts: (builder: ComputeExpressionBuilder<T>, current: ComputeExpression<T>) => ComputeExpression<T>, current?: ComputeExpression<T>): ComputeExpression<T>; toJson(): { $type: string; children: any[]; } & { names: string[]; }; static fromJson<T>(json: { [name: string]: any; }): ComputeExpression<T>; render({ aliases, escape, prefix, parser, options, }?: { aliases?: QueryCustomType[]; escape?: boolean; prefix?: string; parser?: Parser<T>; options?: ParserOptions; }): string; clone(): ComputeExpression<T>; private _add; field<T>(name: string, opts: (e: { o: ODataOperators<T>; f: ODataFunctions<T>; }) => Renderable): ComputeExpression<T>; } declare class CountField<T> implements Renderable { protected field: any; private values; constructor(field: any, values?: { [name: string]: any; }); get [Symbol.toStringTag](): string; toJson(): { field: any; }; render({ aliases, escape, prefix, parser, options, }: { aliases?: QueryCustomType[]; escape?: boolean; prefix?: string; parser?: Parser<T>; options?: ParserOptions; }): string; filter(opts: (builder: FilterExpressionBuilder<T>, current?: FilterExpression<T>) => FilterExpression<T>): any; clone(): CountField<T>; resolve(parser: any): any; private option; } type CountExpressionBuilder<T> = { t: Required<T>; e: () => CountExpression<T>; }; declare class CountExpression<T> extends Expression<T> { constructor({ children, }?: { children?: Renderable[]; }); get [Symbol.toStringTag](): string; static factory<T>(opts: (builder: CountExpressionBuilder<T>, current: CountExpression<T>) => CountExpression<T>, current?: CountExpression<T>): CountExpression<T>; private _add; toJson(): { $type: string; children: any[]; }; static fromJson<T>(json: { [name: string]: any; }): CountExpression<T>; render({ aliases, escape, prefix, parser, options, }?: { aliases?: QueryCustomType[]; escape?: boolean; prefix?: string; parser?: Parser<T>; options?: ParserOptions; }): string; clone(): CountExpression<T>; field<F>(field: F[], opts?: (e: { t: F; f: CountField<F>; }) => CountExpression<F>): CountExpression<F>; } type FilterConnector = 'and' | 'or'; type FilterExpressionBuilder<T> = { t: Required<T>; e: (connector?: FilterConnector) => FilterExpression<T>; o: ODataOperators<T>; f: ODataFunctions<T>; }; declare class FilterExpression<F> extends Expression<F> { private _connector; private _negated; constructor({ children, connector, negated, }?: { children?: Renderable[]; connector?: FilterConnector; negated?: boolean; }); get [Symbol.toStringTag](): string; static factory<T>(opts: (builder: FilterExpressionBuilder<T>, current: FilterExpression<T>) => FilterExpression<T>, current?: FilterExpression<T>): FilterExpression<T>; toJson(): { $type: string; children: any[]; } & { connector: FilterConnector; negated: boolean; }; static fromJson<T>(json: { [name: string]: any; }): FilterExpression<T>; connector(): FilterConnector; negated(): boolean; render({ aliases, escape, prefix, parser, options, }?: { aliases?: QueryCustomType[]; escape?: boolean; prefix?: string; parser?: Parser<any>; options?: ParserOptions; }): string; clone(): FilterExpression<F>; private _add; or(exp: FilterExpression<F>): FilterExpression<F>; and(exp: FilterExpression<F>): FilterExpression<F>; not(exp: FilterExpression<F>): FilterExpression<F>; eq(left: any, right: any, normalize?: Normalize): FilterExpression<F>; ne(left: any, right: any, normalize?: Normalize): FilterExpression<F>; gt(left: any, right: any, normalize?: Normalize): FilterExpression<F>; ge(left: any, right: any, normalize?: Normalize): FilterExpression<F>; lt(left: any, right: any, normalize?: Normalize): FilterExpression<F>; le(left: any, right: any, normalize?: Normalize): FilterExpression<F>; has(left: any, right: any, normalize?: Normalize): FilterExpression<F>; in(left: any, right: any, normalize?: Normalize): FilterExpression<F>; contains(left: any, right: any, normalize?: Normalize): FilterExpression<F>; startsWith(left: any, right: any, normalize?: Normalize): FilterExpression<F>; endsWith(left: any, right: any, normalize?: Normalize): FilterExpression<F>; any<N>(left: N[], opts?: (e: { e: (connector?: FilterConnector) => FilterExpression<N>; t: N; o: ODataOperators<N>; f: ODataFunctions<N>; }) => FilterExpression<N>, alias?: string): FilterExpression<F>; all<N>(left: N[], opts?: (e: { t: N; e: (connector?: FilterConnector) => FilterExpression<N>; o: ODataOperators<N>; f: ODataFunctions<N>; }) => FilterExpression<N>, alias?: string): FilterExpression<F>; count<N>(left: N[], opts?: (e: { t: N; f: CountField<N>; }) => CountExpression<N>): FilterExpression<F>; isof(type: string): FilterExpression<F>; isof(left: F, type: string): FilterExpression<F>; combine(exp: FilterExpression<F>, connector?: FilterConnector): FilterExpression<F>; } type SearchConnector = 'AND' | 'OR'; declare class SearchTerm implements Renderable { protected value: string; constructor(value: string); get [Symbol.toStringTag](): string; toJson(): { $type: string; value: string; }; render({ aliases, escape, prefix, parser, options, }: { aliases?: QueryCustomType[]; escape?: boolean; prefix?: string; parser?: Parser<any>; options?: ParserOptions; }): string; clone(): SearchTerm; resolve(parser: any): any; } type SearchExpressionBuilder<T> = { e: (connector?: SearchConnector) => SearchExpression<T>; }; declare class SearchExpression<T> extends Expression<T> { private _connector; private _negated; constructor({ children, connector, negated, }?: { children?: Renderable[]; connector?: SearchConnector; negated?: boolean; }); get [Symbol.toStringTag](): string; static factory<T>(opts: (builder: SearchExpressionBuilder<T>, current: SearchExpression<T>) => SearchExpression<T>, current?: SearchExpression<T>): SearchExpression<T>; private _add; render({ aliases, escape, prefix, parser, options, }?: { aliases?: QueryCustomType[]; escape?: boolean; prefix?: string; parser?: Parser<T>; options?: ParserOptions; }): string; clone(): SearchExpression<T>; toJson(): { $type: string; children: any[]; } & { connector: SearchConnector; negated: boolean; }; static fromJson<T>(json: { [name: string]: any; }): SearchExpression<T>; connector(): SearchConnector; negated(): boolean; or(exp: SearchExpression<T>): SearchExpression<T>; and(exp: SearchExpression<T>): SearchExpression<T>; not(exp: SearchExpression<T>): SearchExpression<T>; term(value: any): SearchExpression<T>; combine(expression: SearchExpression<T>, connector?: SearchConnector): SearchExpression<T>; } declare class GroupByTransformations<T> extends Expression<T> { protected methods: (AggregateMethod | string)[]; protected aliases: string[]; constructor({ children, methods, aliases, }?: { children?: Renderable[]; methods?: (AggregateMethod | string)[]; aliases?: string[]; }); get [Symbol.toStringTag](): string; toJson(): { $type: string; children: any[]; } & { methods: string[]; aliases: string[]; }; static fromJson<T>(json: { [name: string]: any; }): GroupByTransformations<T>; render({ aliases, escape, prefix, parser, options, }?: { aliases?: QueryCustomType[]; escape?: boolean; prefix?: string; parser?: Parser<T>; options?: ParserOptions; }): string; clone(): GroupByTransformations<T>; private _add; aggregate(value: any, method: AggregateMethod | string, alias: string): GroupByTransformations<T>; sum(value: any, alias: string): GroupByTransformations<T>; min(value: any, alias: string): GroupByTransformations<T>; max(value: any, alias: string): GroupByTransformations<T>; average(value: any, alias: string): GroupByTransformations<T>; countdistinct(value: any, alias: string): GroupByTransformations<T>; count(alias: string): GroupByTransformations<T>; } type ApplyExpressionBuilder<T> = { t: Required<T>; e: () => ApplyExpression<T>; }; declare class ApplyExpression<T> extends Expression<T> { constructor({ children, }?: { children?: Renderable[]; }); get [Symbol.toStringTag](): string; static factory<T>(opts: (builder: ApplyExpressionBuilder<T>, current: ApplyExpression<T>) => ApplyExpression<T>, current?: ApplyExpression<T>): ApplyExpression<T>; toJson(): { $type: string; children: any[]; }; static fromJson<T>(json: { [name: string]: any; }): ApplyExpression<T>; render({ aliases, escape, prefix, parser, options, }?: { aliases?: QueryCustomType[]; escape?: boolean; prefix?: string; parser?: Parser<T>; options?: ParserOptions; }): string; clone(): ApplyExpression<T>; private _add; aggregate(value: any, method: AggregateMethod, alias: string): ApplyExpression<T>; topCount(opts: (e: { o: ODataOperators<T>; f: ODataFunctions<T>; }) => Renderable): ApplyExpression<T>; topSum(opts: (e: { o: ODataOperators<T>; f: ODataFunctions<T>; }) => Renderable): ApplyExpression<T>; topPercent(opts: (e: { o: ODataOperators<T>; f: ODataFunctions<T>; }) => Renderable): ApplyExpression<T>; bottomCount(opts: (e: { o: ODataOperators<T>; f: ODataFunctions<T>; }) => Renderable): ApplyExpression<T>; bottomSum(opts: (e: { o: ODataOperators<T>; f: ODataFunctions<T>; }) => Renderable): ApplyExpression<T>; bottomPercent(opts: (e: { o: ODataOperators<T>; f: ODataFunctions<T>; }) => Renderable): ApplyExpression<T>; identity(opts: (e: { o: ODataOperators<T>; f: ODataFunctions<T>; }) => Renderable): ApplyExpression<T>; concat(opts: (e: { o: ODataOperators<T>; f: ODataFunctions<T>; }) => Renderable): ApplyExpression<T>; groupBy(props: (e: { rollup: (f: any) => any; }) => any | any[], opts?: (e: GroupByTransformations<T>) => GroupByTransformations<T>): ApplyExpression<T>; filter(opts: (e: { t: T; e: (connector?: FilterConnector) => FilterExpression<T>; o: ODataOperators<T>; f: ODataFunctions<T>; }) => FilterExpression<T>): ApplyExpression<T>; expand(opts: (e: { o: ODataOperators<T>; f: ODataFunctions<T>; }) => Renderable): ApplyExpression<T>; search(opts: (e: { t: T; e: (connector?: SearchConnector) => SearchExpression<T>; o: ODataOperators<T>; f: ODataFunctions<T>; }) => SearchExpression<T>): ApplyExpression<T>; compute(opts: (e: { o: ODataOperators<T>; f: ODataFunctions<T>; }) => Renderable): ApplyExpression<T>; } type OrderAttribute = 'asc' | 'desc'; declare class OrderByField implements Renderable { protected field: Renderable; protected order: OrderAttribute; constructor(field: Renderable, order: OrderAttribute); get [Symbol.toStringTag](): string; toJson(): { $type: string; field: any; order: OrderAttribute; }; render({ aliases, escape, prefix, parser, options, }: { aliases?: QueryCustomType[]; escape?: boolean; prefix?: string; parser?: Parser<any>; options?: ParserOptions; }): string; clone(): OrderByField; resolve(parser: any): any; } type OrderByExpressionBuilder<T> = { t: Required<T>; e: () => OrderByExpression<T>; }; declare class OrderByExpression<T> extends Expression<T> { constructor({ children, }?: { children?: Renderable[]; }); get [Symbol.toStringTag](): string; static factory<T>(opts: (builder: OrderByExpressionBuilder<T>, current: OrderByExpression<T>) => OrderByExpression<T>, current?: OrderByExpression<T>): OrderByExpression<T>; private _add; toJson(): { $type: string; children: any[]; }; static fromJson<T>(json: { [name: string]: any; }): OrderByExpression<T>; render({ aliases, escape, prefix, parser, options, }?: { aliases?: QueryCustomType[]; escape?: boolean; prefix?: string; parser?: Parser<T>; options?: ParserOptions; }): string; clone(): OrderByExpression<T>; ascending(field: any): OrderByExpression<T>; descending(field: any): OrderByExpression<T>; combine(expression: OrderByExpression<T>): OrderByExpression<T>; } type SelectExpressionBuilder<T> = { t: Required<T>; e: () => SelectExpression<T>; }; declare class SelectExpression<T> extends Expression<T> { constructor({ children, }?: { children?: Renderable[]; }); get [Symbol.toStringTag](): string; static factory<T>(opts: (builder: SelectExpressionBuilder<T>, current: SelectExpression<T>) => SelectExpression<T>, current?: SelectExpression<T>): SelectExpression<T>; toJson(): { $type: string; children: any[]; }; static fromJson<T>(json: { [name: string]: any; }): SelectExpression<T>; render({ aliases, escape, prefix, parser, options, }?: { aliases?: QueryCustomType[]; escape?: boolean; prefix?: string; parser?: Parser<T>; options?: ParserOptions; }): string; clone(): SelectExpression<T>; private _add; field(field: any): SelectExpression<T>; fields(...fields: any[]): SelectExpression<T>; combine(expression: SelectExpression<T>): SelectExpression<T>; } declare class ExpandField<T> implements Renderable { protected field: any; private values; constructor(field: any, values?: { [name: string]: any; }); get [Symbol.toStringTag](): string; toJson(): { field: any; }; render({ aliases, escape, prefix, parser, options, }: { aliases?: QueryCustomType[]; escape?: boolean; prefix?: string; parser?: Parser<T>; options?: ParserOptions; }): string; clone(): ExpandField<T>; resolve(parser: any): any; select(opts: (builder: SelectExpressionBuilder<T>, current: SelectExpression<T>) => SelectExpression<T>): SelectExpression<T>; expand(opts: (builder: ExpandExpressionBuilder<T>, current: ExpandExpression<T>) => ExpandExpression<T>): ExpandExpression<T>; filter(opts: (builder: FilterExpressionBuilder<T>, current: FilterExpression<T>) => FilterExpression<T>): FilterExpression<T>; search(opts: (builder: SearchExpressionBuilder<T>, current: SearchExpression<T>) => SearchExpression<T>): SearchExpression<T>; orderBy(opts: (builder: OrderByExpressionBuilder<T>, current: OrderByExpression<T>) => OrderByExpression<T>): OrderByExpression<T>; compute(opts: (builder: ComputeExpressionBuilder<T>, current: ComputeExpression<T>) => ComputeExpression<T>): ComputeExpression<T>; skip(n: number): number; top(n: number): number; levels(n: number | 'max'): number | "max"; count(): boolean; private option; } type ExpandExpressionBuilder<T> = { t: Required<T>; e: () => ExpandExpression<T>; }; declare class ExpandExpression<T> extends Expression<T> { constructor({ children, }?: { children?: Renderable[]; }); get [Symbol.toStringTag](): string; static factory<T>(opts: (builder: ExpandExpressionBuilder<T>, current: ExpandExpression<T>) => ExpandExpression<T>, current?: ExpandExpression<T>): ExpandExpression<T>; toJson(): { $type: string; children: any[]; }; static fromJson<T>(json: { [name: string]: any; }): ExpandExpression<T>; render({ aliases, escape, prefix, parser, options, }?: { aliases?: QueryCustomType[]; escape?: boolean; prefix?: string; parser?: Parser<T>; options?: ParserOptions; }): string; clone(): ExpandExpression<T>; private _add; field<F>(field: F, opts?: (e: ExpandField<Unpacked<F>>) => void): ExpandExpression<T>; combine(expression: ExpandExpression<T>): ExpandExpression<T>; } declare class ODataQueryOptionHandler<T> { private o; private n; constructor(o: Map<QueryOption, any>, n: QueryOption); /** * The name of the managed odata query option. */ get name(): QueryOption; /** * Converts the managed odata query option to a json object. * @returns {any} */ toJson(): any; /** * Returns a boolean indicating if the managed odata query option is empty. * @returns True if the managed odata query option is empty. */ empty(): boolean; /** * Get or Set the value of the managed odata query option. * @param v The value to set. * @returns */ value(v?: any): any; private assertArray; /** * Push value to the managed odata query option. * @param value Value to push */ push(value: any): void; /** * Remove value from the managed odata query option. * @param value Value to remove */ remove(value: any): void; /** * Return value at index of the managed odata query option. * @param index Index of the value * @returns The value */ at(index: number): any; some(predicate: (value: any) => boolean): boolean; every(predicate: (value: any) => boolean): boolean; find(predicate: (value: any) => boolean): any; private assertObject; /** * Set the value for path in the managed odata query option. * @param path Path for set the value * @param value Value to set */ set(path: string, value: any): void; /** * Get the value for path from the managed odata query option. * @param path The path from get the value * @param def Default if not found * @returns */ get(path: string, def?: any): any; /** * Unset the value for path in the managed odata query option. * @param path */ unset(path: string): void; /** * Test if the managed odata query option has the value. * @param path The path fot test if the value is set * @returns Boolean indicating if the value is set */ has(path: string): boolean; /** * Merge values from object into the managed odata query option. * @param values Object to merge * @returns */ assign(values: { [attr: string]: any; }): { [attr: string]: any; }; /** * Clear the managed odata query option. */ clear(): void; toString({ escape, parser }?: { escape?: boolean; parser?: Parser<T>; }): string; } declare class ODataQueryOptionsHandler<T> { protected options: ODataQueryOptions<T>; constructor(options: ODataQueryOptions<T>); /** * Create a raw odata value * @param value The value to raw * @returns The raw value */ raw(value: any): angular_odata.QueryCustomType; /** * Create a new odata alias parameter * @link https://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part2-url-conventions.html#sec_ParameterAliases * @param value The value of the alias * @param name The name of the alias * @returns The alias */ alias(value: any, name?: string): angular_odata.QueryCustomType; /** * Create a duration odata value * @param value The value to duration * @returns The duration value */ duration(value: any): angular_odata.QueryCustomType; /** * Create a binary odata value * @param value The value to binary * @returns The binary value */ binary(value: any): angular_odata.QueryCustomType; /** * Normalize the given value to a valid odata value * @param value The value to normalize * @returns The normalized value */ normalize(value: any): any; /** * Build and return a handler for modifying the $select option. * If opts is given then set te value as new value for $select. * @param opts Select<T> value or builder function for SelectExpression<T> */ select(opts: (builder: SelectExpressionBuilder<T>, current: SelectExpression<T>) => SelectExpression<T>): SelectExpression<T>; select(opts: Select<T>): ODataQueryOptionHandler<T>; select(): ODataQueryOptionHandler<T>; /** * Build and return a handler for modifying the $expand option. * If opts is given then set te value as new value for $expand. * @param opts Expand<T> value or builder function for ExpandExpression<T> */ expand(opts: (builder: ExpandExpressionBuilder<T>, current: ExpandExpression<T>) => ExpandExpression<T>): ExpandExpression<T>; expand(opts: Expand<T>): ODataQueryOptionHandler<T>; expand(): ODataQueryOptionHandler<T>; /** * Build and return a handler for modifying the $compute option. * If opts is given then set te value as new value for $compute. * @link https://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part2-url-conventions.html#sec_SystemQueryOptioncompute * @param opts string value or builder function for ComputeExpression<T> */ compute(opts: (builder: ComputeExpressionBuilder<T>, current: ComputeExpression<T>) => ComputeExpression<T>): ComputeExpression<T>; compute(opts: string): ODataQueryOptionHandler<T>; compute(): ODataQueryOptionHandler<T>; /** * Build and return a handler for modifying the $apply option. * If opts is given then set te value as new value for $compute. * @link http://docs.oasis-open.org/odata/odata-data-aggregation-ext/v4.0/cs02/odata-data-aggregation-ext-v4.0-cs02.html * @param opts string value or builder function for ApplyExpression<T> */ apply(opts: (builder: ApplyExpressionBuilder<T>, current: ApplyExpression<T>) => ApplyExpression<T>): ApplyExpression<T>; apply(opts: string): ODataQueryOptionHandler<T>; apply(): ODataQueryOptionHandler<T>; /** * Build and return a handler for modifying the $format option. * If opts is given then set te value as new value for $format. * @link https://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part2-url-conventions.html#sec_SystemQueryOptionformat * @param opts string value for format */ format(opts: string): ODataQueryOptionHandler<T>; format(): ODataQueryOptionHandler<T>; /** * Build and return a handler for modifying the $transform option. * If opts is given then set te value as new value for $transform. * @param opts string value for transform */ transform(opts: Transform<T>): ODataQueryOptionHandler<T>; transform(): ODataQueryOptionHandler<T>; /** * Build and return a handler for modifying the $search option. * If opts is given then set te value as new value for $search. * @param opts string value or builder function for SearchExpression<T> */ search(opts: (builder: SearchExpressionBuilder<T>, current: SearchExpression<T>) => SearchExpression<T>): SearchExpression<T>; search(opts: string): ODataQueryOptionHandler<T>; search(): ODataQueryOptionHandler<T>; /** * Build and return a handler for modifying the $filter option. * If opts is given then set te value as new value for $filter. * @param opts Filter<T> value or builder function for FilterExpression<T> */ filter(opts: (builder: FilterExpressionBuilder<T>, current: FilterExpression<T>) => FilterExpression<T>): FilterExpression<T>; filter(opts: Filter<T>): ODataQueryOptionHandler<T>; filter(): ODataQueryOptionHandler<T>; /** * Build and return a handler for modifying the $orderby option. * If opts is given then set te value as new value for $orderby. * @param opts OrderBy<T> value or builder function for OrderByExpression<T> */ orderBy(opts: (builder: OrderByExpressionBuilder<T>, current: OrderByExpression<T>) => OrderByExpression<T>): OrderByExpression<T>; orderBy(opts: OrderBy<T>): ODataQueryOptionHandler<T>; orderBy(): ODataQueryOptionHandler<T>; /** * Build and return a handler for modifying the $top option. * If op