angular-odata 0.95.0 → 0.99.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (81) hide show
  1. package/README.md +31 -25
  2. package/esm2020/lib/cache/cache.mjs +2 -2
  3. package/esm2020/lib/client.mjs +3 -3
  4. package/esm2020/lib/models/collection.mjs +53 -48
  5. package/esm2020/lib/models/model.mjs +33 -37
  6. package/esm2020/lib/models/options.mjs +35 -14
  7. package/esm2020/lib/module.mjs +4 -4
  8. package/esm2020/lib/resources/query/builder.mjs +2 -1
  9. package/esm2020/lib/resources/query/expressions/base.mjs +20 -0
  10. package/esm2020/lib/resources/query/expressions/compute.mjs +45 -0
  11. package/esm2020/lib/resources/query/expressions/expand.mjs +121 -0
  12. package/esm2020/lib/resources/query/expressions/filter.mjs +160 -0
  13. package/esm2020/lib/resources/query/expressions/index.mjs +7 -0
  14. package/esm2020/lib/resources/query/expressions/orderby.mjs +62 -0
  15. package/esm2020/lib/resources/query/expressions/search.mjs +125 -0
  16. package/esm2020/lib/resources/query/expressions/select.mjs +37 -0
  17. package/esm2020/lib/resources/query/expressions/syntax.mjs +404 -0
  18. package/esm2020/lib/resources/query/handlers.mjs +22 -20
  19. package/esm2020/lib/resources/query/options.mjs +34 -37
  20. package/esm2020/lib/resources/resource.mjs +6 -14
  21. package/esm2020/lib/resources/types/action.mjs +4 -1
  22. package/esm2020/lib/resources/types/batch.mjs +36 -10
  23. package/esm2020/lib/resources/types/count.mjs +4 -1
  24. package/esm2020/lib/resources/types/entity-set.mjs +4 -1
  25. package/esm2020/lib/resources/types/entity.mjs +6 -3
  26. package/esm2020/lib/resources/types/function.mjs +4 -1
  27. package/esm2020/lib/resources/types/media.mjs +4 -1
  28. package/esm2020/lib/resources/types/metadata.mjs +4 -1
  29. package/esm2020/lib/resources/types/navigation-property.mjs +4 -1
  30. package/esm2020/lib/resources/types/property.mjs +4 -1
  31. package/esm2020/lib/resources/types/reference.mjs +4 -1
  32. package/esm2020/lib/resources/types/singleton.mjs +4 -1
  33. package/esm2020/lib/resources/types/value.mjs +4 -1
  34. package/esm2020/lib/schema/element.mjs +12 -2
  35. package/esm2020/lib/schema/enum-type.mjs +9 -1
  36. package/esm2020/lib/schema/structured-type.mjs +11 -2
  37. package/esm2020/lib/services/entity-set.mjs +6 -6
  38. package/esm2020/lib/services/factory.mjs +3 -3
  39. package/esm2020/lib/types.mjs +2 -1
  40. package/esm2020/lib/utils/objects.mjs +5 -1
  41. package/fesm2015/angular-odata.mjs +751 -297
  42. package/fesm2015/angular-odata.mjs.map +1 -1
  43. package/fesm2020/angular-odata.mjs +750 -301
  44. package/fesm2020/angular-odata.mjs.map +1 -1
  45. package/lib/models/collection.d.ts +4 -2
  46. package/lib/models/model.d.ts +1 -1
  47. package/lib/models/options.d.ts +12 -10
  48. package/lib/resources/query/builder.d.ts +1 -0
  49. package/lib/resources/query/expressions/base.d.ts +20 -0
  50. package/lib/resources/query/expressions/compute.d.ts +27 -0
  51. package/lib/resources/query/expressions/expand.d.ts +68 -0
  52. package/lib/resources/query/expressions/filter.d.ts +59 -0
  53. package/lib/resources/query/expressions/index.d.ts +6 -0
  54. package/lib/resources/query/expressions/orderby.d.ts +39 -0
  55. package/lib/resources/query/expressions/search.d.ts +50 -0
  56. package/lib/resources/query/expressions/select.d.ts +22 -0
  57. package/lib/resources/query/{syntax.d.ts → expressions/syntax.d.ts} +21 -9
  58. package/lib/resources/query/handlers.d.ts +27 -12
  59. package/lib/resources/query/options.d.ts +10 -8
  60. package/lib/resources/resource.d.ts +2 -1
  61. package/lib/resources/types/action.d.ts +1 -0
  62. package/lib/resources/types/batch.d.ts +10 -0
  63. package/lib/resources/types/count.d.ts +1 -0
  64. package/lib/resources/types/entity-set.d.ts +1 -0
  65. package/lib/resources/types/entity.d.ts +1 -0
  66. package/lib/resources/types/function.d.ts +1 -0
  67. package/lib/resources/types/media.d.ts +1 -0
  68. package/lib/resources/types/metadata.d.ts +1 -0
  69. package/lib/resources/types/navigation-property.d.ts +1 -0
  70. package/lib/resources/types/property.d.ts +1 -0
  71. package/lib/resources/types/reference.d.ts +1 -0
  72. package/lib/resources/types/singleton.d.ts +1 -0
  73. package/lib/resources/types/value.d.ts +1 -0
  74. package/lib/schema/element.d.ts +7 -1
  75. package/lib/schema/enum-type.d.ts +6 -0
  76. package/lib/schema/structured-type.d.ts +7 -1
  77. package/lib/types.d.ts +1 -0
  78. package/package.json +1 -1
  79. package/esm2020/lib/resources/query/expressions.mjs +0 -207
  80. package/esm2020/lib/resources/query/syntax.mjs +0 -406
  81. package/lib/resources/query/expressions.d.ts +0 -63
@@ -110,8 +110,10 @@ export declare class ODataCollection<T, M extends ODataModel<T>> implements Iter
110
110
  [Symbol.iterator](): {
111
111
  next(): IteratorResult<M>;
112
112
  };
113
- filter(predicate: (m: M, index: number) => boolean): M[];
114
- find(predicate: (m: M, index: number) => boolean): M | undefined;
113
+ filter(predicate: (value: M, index: number, array: M[]) => unknown, thisArg?: any): M[];
114
+ map<U>(callbackfn: (value: M, index: number, array: M[]) => U, thisArg?: any): U[];
115
+ find(predicate: (value: M, index: number, obj: M[]) => unknown, thisArg?: any): M | undefined;
116
+ reduce<U>(callbackfn: (previousValue: U, currentValue: M, currentIndex: number, array: M[]) => U, initialValue: U): U;
115
117
  first(): M | undefined;
116
118
  last(): M | undefined;
117
119
  next(model: M): M | undefined;
@@ -45,7 +45,7 @@ export declare class ODataModel<T> {
45
45
  resource(): ODataEntityResource<T> | ODataNavigationPropertyResource<T> | ODataPropertyResource<T> | ODataSingletonResource<T>;
46
46
  navigationProperty<N>(name: keyof T | string): ODataNavigationPropertyResource<N>;
47
47
  property<N>(name: string): ODataPropertyResource<N>;
48
- attach(resource: ODataEntityResource<T> | ODataNavigationPropertyResource<T> | ODataPropertyResource<T> | ODataSingletonResource<T>): void;
48
+ attach<R>(resource: ODataEntityResource<R> | ODataNavigationPropertyResource<R> | ODataPropertyResource<R> | ODataSingletonResource<R>): void;
49
49
  schema(): ODataStructuredType<T>;
50
50
  annots(): ODataEntityAnnotations;
51
51
  key({ field_mapping, resolve, }?: {
@@ -7,13 +7,6 @@ import type { ODataModel } from './model';
7
7
  export declare type ODataModelEventType = 'change' | 'reset' | 'update' | 'destroy' | 'add' | 'remove' | 'invalid' | 'request' | 'sync' | 'attach';
8
8
  export declare class ODataModelEvent<T> {
9
9
  name: ODataModelEventType;
10
- bubbling: boolean;
11
- model?: ODataModel<T>;
12
- collection?: ODataCollection<T, ODataModel<T>>;
13
- chain: [
14
- ODataModel<any> | ODataCollection<any, ODataModel<any>>,
15
- string | number | null
16
- ][];
17
10
  value?: any;
18
11
  previous?: any;
19
12
  options?: any;
@@ -25,10 +18,19 @@ export declare class ODataModelEvent<T> {
25
18
  value?: any;
26
19
  options?: any;
27
20
  });
21
+ bubbling: boolean;
28
22
  stopPropagation(): void;
23
+ chain: [
24
+ ODataModel<any> | ODataCollection<any, ODataModel<any>>,
25
+ string | number | null
26
+ ][];
29
27
  push(model: ODataModel<any> | ODataCollection<any, ODataModel<any>>, track: string | number): void;
30
28
  visited(model: ODataModel<any> | ODataCollection<any, ODataModel<any>>): boolean;
31
29
  get path(): string;
30
+ model?: ODataModel<T>;
31
+ get currentModel(): ODataModel<any> | undefined;
32
+ collection?: ODataCollection<T, ODataModel<T>>;
33
+ get currentCollection(): ODataCollection<any, ODataModel<any>> | undefined;
32
34
  }
33
35
  export declare const BUBBLING: string[];
34
36
  export declare const INCLUDE_SHALLOW: {
@@ -170,13 +172,13 @@ export declare class ODataModelOptions<T> {
170
172
  include_parents?: boolean;
171
173
  include_navigation?: boolean;
172
174
  }): ODataModelField<any>[];
173
- field<F>(name: keyof T | string): ODataModelField<any>;
174
- attach(self: ODataModel<T>, resource: ODataEntityResource<T> | ODataNavigationPropertyResource<T> | ODataPropertyResource<T> | ODataSingletonResource<T>): void;
175
+ field<F>(name: keyof T | string): ODataModelField<F>;
176
+ attach<R>(self: ODataModel<T>, resource: ODataEntityResource<R> | ODataNavigationPropertyResource<R> | ODataPropertyResource<R> | ODataSingletonResource<R>): void;
175
177
  static chain(child: ODataModel<any> | ODataCollection<any, ODataModel<any>>): [
176
178
  ODataModel<any> | ODataCollection<any, ODataModel<any>>,
177
179
  ODataModelField<any> | null
178
180
  ][];
179
- static resource<T>(child: ODataModel<T> | ODataCollection<T, ODataModel<T>>): ODataResource<T> | ODataResource<T>;
181
+ static resource<T>(child: ODataModel<T> | ODataCollection<T, ODataModel<T>>): ODataResource<T>;
180
182
  collectionResourceFactory(query?: ODataQueryOptions<T>): ODataEntitySetResource<T> | ODataNavigationPropertyResource<T> | ODataPropertyResource<T> | undefined;
181
183
  modelResourceFactory(query?: ODataQueryOptions<T>): ODataEntityResource<T> | ODataNavigationPropertyResource<T> | ODataPropertyResource<T> | ODataSingletonResource<T> | undefined;
182
184
  entityResource(self: ODataModel<T>): ODataResource<T>;
@@ -32,6 +32,7 @@ export declare type ExpandOptions<T> = {
32
32
  filter?: Filter<T>;
33
33
  orderBy?: OrderBy<T>;
34
34
  top?: number;
35
+ skip?: number;
35
36
  levels?: number | 'max';
36
37
  count?: boolean | Filter<T>;
37
38
  expand?: Expand<T>;
@@ -0,0 +1,20 @@
1
+ import type { QueryCustomType } from '../builder';
2
+ import { Renderable } from './syntax';
3
+ export declare abstract class Expression<T> implements Renderable {
4
+ protected _children: Renderable[];
5
+ constructor({ children, }?: {
6
+ children?: Renderable[];
7
+ });
8
+ get [Symbol.toStringTag](): string;
9
+ abstract render({ aliases, escape, prefix, }: {
10
+ aliases?: QueryCustomType[] | undefined;
11
+ escape?: boolean | undefined;
12
+ prefix?: string | undefined;
13
+ }): string;
14
+ abstract clone(): Expression<T>;
15
+ children(): Renderable[];
16
+ length(): number;
17
+ toJSON(): {
18
+ children: any[];
19
+ };
20
+ }
@@ -0,0 +1,27 @@
1
+ import type { QueryCustomType } from '../builder';
2
+ import { Expression } from './base';
3
+ import { ODataFunctions, ODataOperators, Renderable } from './syntax';
4
+ export declare class ComputeExpression<T> extends Expression<T> {
5
+ names: string[];
6
+ constructor({ children, names, }?: {
7
+ children?: Renderable[];
8
+ names?: string[];
9
+ });
10
+ static e<T>(): ComputeExpression<T>;
11
+ static s<T extends object>(): T;
12
+ static compute<T extends object>(opts: (builder: {
13
+ s: T;
14
+ e: () => ComputeExpression<T>;
15
+ }, current?: ComputeExpression<T>) => ComputeExpression<T>, current?: ComputeExpression<T>): ComputeExpression<T>;
16
+ render({ aliases, escape, prefix, }?: {
17
+ aliases?: QueryCustomType[] | undefined;
18
+ escape?: boolean | undefined;
19
+ prefix?: string | undefined;
20
+ }): string;
21
+ clone(): ComputeExpression<unknown>;
22
+ private _add;
23
+ field<T extends object>(name: string, opts: (e: {
24
+ o: ODataOperators<T>;
25
+ f: ODataFunctions<T>;
26
+ }) => Renderable): ComputeExpression<T>;
27
+ }
@@ -0,0 +1,68 @@
1
+ import type { QueryCustomType } from '../builder';
2
+ import { Expression } from './base';
3
+ import { FilterConnector, FilterExpression } from './filter';
4
+ import { OrderByExpression } from './orderby';
5
+ import { SearchConnector, SearchExpression } from './search';
6
+ import { SelectExpression } from './select';
7
+ import { ODataFunctions, ODataOperators, Renderable } from './syntax';
8
+ export declare class ExpandField<T> implements Renderable {
9
+ protected field: any;
10
+ private values;
11
+ constructor(field: any, values?: {
12
+ [name: string]: any;
13
+ });
14
+ get [Symbol.toStringTag](): string;
15
+ toJSON(): {
16
+ field: any;
17
+ };
18
+ render({ aliases, escape, prefix, }: {
19
+ aliases?: QueryCustomType[];
20
+ escape?: boolean;
21
+ prefix?: string;
22
+ }): string;
23
+ clone(): ExpandField<unknown>;
24
+ select<T extends object>(opts: (builder: {
25
+ s: T;
26
+ e: () => SelectExpression<T>;
27
+ }, current?: SelectExpression<T>) => SelectExpression<T>): SelectExpression<T>;
28
+ expand<T extends object>(opts: (builder: {
29
+ s: T;
30
+ e: () => ExpandExpression<T>;
31
+ }, current?: ExpandExpression<T>) => ExpandExpression<T>): any;
32
+ filter<T extends object>(opts: (builder: {
33
+ s: T;
34
+ e: (connector?: FilterConnector) => FilterExpression<T>;
35
+ o: ODataOperators<T>;
36
+ f: ODataFunctions<T>;
37
+ }, current?: FilterExpression<T>) => FilterExpression<T>): any;
38
+ search<T extends object>(opts: (builder: {
39
+ e: (connector?: SearchConnector) => SearchExpression<T>;
40
+ }) => SearchExpression<T>): any;
41
+ orderBy<T extends object>(opts: (builder: {
42
+ s: T;
43
+ e: () => OrderByExpression<T>;
44
+ }, current?: OrderByExpression<T>) => OrderByExpression<T>): any;
45
+ skip(n: number): any;
46
+ top(n: number): any;
47
+ levels(n: number | 'max'): any;
48
+ private option;
49
+ }
50
+ export declare class ExpandExpression<T> extends Expression<T> {
51
+ constructor({ children, }?: {
52
+ children?: Renderable[];
53
+ });
54
+ static e<T>(): ExpandExpression<T>;
55
+ static s<T extends object>(): T;
56
+ static expand<T extends object>(opts: (builder: {
57
+ s: T;
58
+ e: () => ExpandExpression<T>;
59
+ }, current?: ExpandExpression<T>) => ExpandExpression<T>, current?: ExpandExpression<T>): ExpandExpression<T>;
60
+ render({ aliases, escape, prefix, }?: {
61
+ aliases?: QueryCustomType[] | undefined;
62
+ escape?: boolean | undefined;
63
+ prefix?: string | undefined;
64
+ }): string;
65
+ clone(): ExpandExpression<unknown>;
66
+ private _add;
67
+ field<F>(field: F, opts?: (e: ExpandField<F>) => void): ExpandExpression<F>;
68
+ }
@@ -0,0 +1,59 @@
1
+ import type { QueryCustomType } from '../builder';
2
+ import { Expression } from './base';
3
+ import { ODataFunctions, ODataOperators, Renderable } from './syntax';
4
+ export declare type FilterConnector = 'and' | 'or';
5
+ export declare class FilterExpression<F> extends Expression<F> {
6
+ private _connector;
7
+ private _negated;
8
+ constructor({ children, connector, negated, }?: {
9
+ children?: Renderable[];
10
+ connector?: FilterConnector;
11
+ negated?: boolean;
12
+ });
13
+ static s<T extends object>(): T;
14
+ static e<T>(connector?: FilterConnector): FilterExpression<T>;
15
+ static filter<T extends object>(opts: (builder: {
16
+ s: T;
17
+ e: (connector?: FilterConnector) => FilterExpression<T>;
18
+ o: ODataOperators<T>;
19
+ f: ODataFunctions<T>;
20
+ }, current?: FilterExpression<T>) => FilterExpression<T>, current?: FilterExpression<T>): FilterExpression<T>;
21
+ toJSON(): {
22
+ children: any[];
23
+ connector: FilterConnector;
24
+ negated: boolean;
25
+ };
26
+ connector(): FilterConnector;
27
+ negated(): boolean;
28
+ render({ aliases, escape, prefix, }?: {
29
+ aliases?: QueryCustomType[];
30
+ escape?: boolean;
31
+ prefix?: string;
32
+ }): string;
33
+ clone(): FilterExpression<unknown>;
34
+ private _add;
35
+ or(exp: FilterExpression<F>): FilterExpression<F>;
36
+ and(exp: FilterExpression<F>): FilterExpression<F>;
37
+ not(exp: FilterExpression<F>): FilterExpression<F>;
38
+ eq(left: any, right: any, normalize?: boolean): FilterExpression<F>;
39
+ ne(left: any, right: any, normalize?: boolean): FilterExpression<F>;
40
+ gt(left: any, right: any, normalize?: boolean): FilterExpression<F>;
41
+ ge(left: any, right: any, normalize?: boolean): FilterExpression<F>;
42
+ lt(left: any, right: any, normalize?: boolean): FilterExpression<F>;
43
+ le(left: any, right: any, normalize?: boolean): FilterExpression<F>;
44
+ has(left: any, right: any, normalize?: boolean): FilterExpression<F>;
45
+ in(left: any, right: any, normalize?: boolean): FilterExpression<F>;
46
+ contains(left: any, right: any, normalize?: boolean): FilterExpression<F>;
47
+ startsWith(left: any, right: any, normalize?: boolean): FilterExpression<F>;
48
+ endsWith(left: any, right: any, normalize?: boolean): FilterExpression<F>;
49
+ any<N extends object>(left: N[], opts: (e: {
50
+ s: N;
51
+ e: (connector?: FilterConnector) => FilterExpression<N>;
52
+ }) => FilterExpression<N>, alias?: string): FilterExpression<F>;
53
+ all<N extends object>(left: N[], opts: (e: {
54
+ s: N;
55
+ e: (connector?: FilterConnector) => FilterExpression<N>;
56
+ }) => FilterExpression<N>, alias?: string): FilterExpression<F>;
57
+ isof(type: string): FilterExpression<F>;
58
+ isof(left: F, type: string): FilterExpression<F>;
59
+ }
@@ -0,0 +1,6 @@
1
+ export * from './base';
2
+ export * from './compute';
3
+ export * from './filter';
4
+ export * from './orderby';
5
+ export * from './search';
6
+ export * from './syntax';
@@ -0,0 +1,39 @@
1
+ import type { QueryCustomType } from '../builder';
2
+ import { Expression } from './base';
3
+ import { Renderable } from './syntax';
4
+ export declare class OrderByField implements Renderable {
5
+ protected field: Renderable;
6
+ protected order: 'asc' | 'desc';
7
+ constructor(field: Renderable, order: 'asc' | 'desc');
8
+ get [Symbol.toStringTag](): string;
9
+ toJSON(): {
10
+ field: any;
11
+ order: "desc" | "asc";
12
+ };
13
+ render({ aliases, escape, prefix, }: {
14
+ aliases?: QueryCustomType[];
15
+ escape?: boolean;
16
+ prefix?: string;
17
+ }): string;
18
+ clone(): OrderByField;
19
+ }
20
+ export declare class OrderByExpression<T> extends Expression<T> {
21
+ constructor({ children, }?: {
22
+ children?: Renderable[];
23
+ });
24
+ static e<T>(): OrderByExpression<T>;
25
+ static s<T extends object>(): T;
26
+ static orderBy<T extends object>(opts: (builder: {
27
+ s: T;
28
+ e: () => OrderByExpression<T>;
29
+ }, current?: OrderByExpression<T>) => OrderByExpression<T>, current?: OrderByExpression<T>): OrderByExpression<T>;
30
+ private _add;
31
+ render({ aliases, escape, prefix, }?: {
32
+ aliases?: QueryCustomType[] | undefined;
33
+ escape?: boolean | undefined;
34
+ prefix?: string | undefined;
35
+ }): string;
36
+ clone(): OrderByExpression<unknown>;
37
+ ascending(field: any): OrderByExpression<T>;
38
+ descending(field: any): OrderByExpression<T>;
39
+ }
@@ -0,0 +1,50 @@
1
+ import type { QueryCustomType } from '../builder';
2
+ import { Expression } from './base';
3
+ import { Renderable } from './syntax';
4
+ export declare type SearchConnector = 'AND' | 'OR';
5
+ export declare class SearchTerm implements Renderable {
6
+ protected value: string;
7
+ constructor(value: string);
8
+ get [Symbol.toStringTag](): string;
9
+ toJSON(): {
10
+ $type: string;
11
+ value: string;
12
+ };
13
+ render({ aliases, escape, prefix, }: {
14
+ aliases?: QueryCustomType[];
15
+ escape?: boolean;
16
+ prefix?: string;
17
+ }): string;
18
+ clone(): SearchTerm;
19
+ }
20
+ export declare class SearchExpression<T> extends Expression<T> {
21
+ private _connector;
22
+ private _negated;
23
+ constructor({ children, connector, negated, }?: {
24
+ children?: Renderable[];
25
+ connector?: SearchConnector;
26
+ negated?: boolean;
27
+ });
28
+ static e<T>(connector?: SearchConnector): SearchExpression<T>;
29
+ static search<T extends object>(opts: (builder: {
30
+ e: (connector?: SearchConnector) => SearchExpression<T>;
31
+ }, current?: SearchExpression<T>) => SearchExpression<T>, current?: SearchExpression<T>): SearchExpression<T>;
32
+ private _add;
33
+ render({ aliases, escape, prefix, }?: {
34
+ aliases?: QueryCustomType[] | undefined;
35
+ escape?: boolean | undefined;
36
+ prefix?: string | undefined;
37
+ }): string;
38
+ clone(): SearchExpression<unknown>;
39
+ toJSON(): {
40
+ children: any[];
41
+ connector: SearchConnector;
42
+ negated: boolean;
43
+ };
44
+ connector(): SearchConnector;
45
+ negated(): boolean;
46
+ or(exp: SearchExpression<T>): SearchExpression<T>;
47
+ and(exp: SearchExpression<T>): SearchExpression<T>;
48
+ not(exp: SearchExpression<T>): SearchExpression<T>;
49
+ term(value: any): SearchExpression<T>;
50
+ }
@@ -0,0 +1,22 @@
1
+ import type { QueryCustomType } from '../builder';
2
+ import { Expression } from './base';
3
+ import { Renderable } from './syntax';
4
+ export declare class SelectExpression<T> extends Expression<T> {
5
+ constructor({ children, }?: {
6
+ children?: Renderable[];
7
+ });
8
+ static e<T>(): SelectExpression<T>;
9
+ static s<T extends object>(): T;
10
+ static select<T extends object>(builder: (b: {
11
+ s: T;
12
+ e: () => SelectExpression<T>;
13
+ }, c?: SelectExpression<T>) => SelectExpression<T>, current?: SelectExpression<T>): SelectExpression<T>;
14
+ render({ aliases, escape, prefix, }?: {
15
+ aliases?: QueryCustomType[] | undefined;
16
+ escape?: boolean | undefined;
17
+ prefix?: string | undefined;
18
+ }): string;
19
+ clone(): SelectExpression<unknown>;
20
+ private _add;
21
+ field(field: any): SelectExpression<T>;
22
+ }
@@ -1,4 +1,4 @@
1
- import type { QueryCustomType } from './builder';
1
+ import type { QueryCustomType } from '../builder';
2
2
  export interface Renderable {
3
3
  render({ aliases, escape, prefix, }: {
4
4
  aliases?: QueryCustomType[];
@@ -7,14 +7,21 @@ export interface Renderable {
7
7
  }): string;
8
8
  toString(): string;
9
9
  toJSON(): any;
10
+ clone(): any;
10
11
  }
11
- export declare type Funcs<T> = (x: ODataSyntax<T>) => Function<T> | Operator<T> | Grouping<T>;
12
12
  export declare class Field<T extends object> implements ProxyHandler<T> {
13
13
  name: string;
14
14
  constructor(name?: string);
15
- static factory<T extends object>(): T;
16
- get(target: T, p: string | symbol): any;
17
- }
15
+ static factory<T extends object>(name?: string): T;
16
+ get(target: T, key: string | symbol): any;
17
+ has(target: T, key: string): any;
18
+ }
19
+ export declare function render(value: any, { aliases, normalize, escape, prefix, }?: {
20
+ aliases?: QueryCustomType[];
21
+ normalize?: boolean;
22
+ escape?: boolean;
23
+ prefix?: string;
24
+ }): string | number | boolean | null;
18
25
  export declare class Function<T> implements Renderable {
19
26
  protected name: string;
20
27
  protected values: any[];
@@ -23,6 +30,7 @@ export declare class Function<T> implements Renderable {
23
30
  constructor(name: string, values: any[], normalize?: boolean, escape?: boolean);
24
31
  get [Symbol.toStringTag](): string;
25
32
  toJSON(): {
33
+ $type: string;
26
34
  name: string;
27
35
  values: any[];
28
36
  normalize: boolean;
@@ -32,6 +40,7 @@ export declare class Function<T> implements Renderable {
32
40
  escape?: boolean;
33
41
  prefix?: string;
34
42
  }): string;
43
+ clone(): Function<T>;
35
44
  }
36
45
  export declare class StringAndCollectionFunctions<T> {
37
46
  concat(field: any, value: any, normalize?: boolean): Function<T>;
@@ -92,6 +101,7 @@ export declare class Operator<T> implements Renderable {
92
101
  constructor(op: string, values: any[], normalize?: boolean);
93
102
  get [Symbol.toStringTag](): string;
94
103
  toJSON(): {
104
+ $type: string;
95
105
  op: string;
96
106
  values: any[];
97
107
  normalize: boolean;
@@ -101,6 +111,7 @@ export declare class Operator<T> implements Renderable {
101
111
  escape?: boolean;
102
112
  prefix?: string;
103
113
  }): string;
114
+ clone(): Operator<unknown>;
104
115
  }
105
116
  export declare class LogicalOperators<T> {
106
117
  eq(left: any, right: any, normalize?: boolean): Operator<unknown>;
@@ -126,6 +137,7 @@ export declare class Grouping<T> implements Renderable {
126
137
  constructor(group: Renderable);
127
138
  get [Symbol.toStringTag](): string;
128
139
  toJSON(): {
140
+ $type: string;
129
141
  group: any;
130
142
  };
131
143
  render({ aliases, escape, prefix, }: {
@@ -133,9 +145,7 @@ export declare class Grouping<T> implements Renderable {
133
145
  escape?: boolean;
134
146
  prefix?: string;
135
147
  }): string;
136
- }
137
- export declare class GroupingOperators<T> {
138
- grouping(value: any): Grouping<unknown>;
148
+ clone(): Grouping<unknown>;
139
149
  }
140
150
  export declare class Lambda<T> implements Renderable {
141
151
  protected op: string;
@@ -144,6 +154,7 @@ export declare class Lambda<T> implements Renderable {
144
154
  constructor(op: string, values: any[], alias?: string | undefined);
145
155
  get [Symbol.toStringTag](): string;
146
156
  toJSON(): {
157
+ $type: string;
147
158
  op: string;
148
159
  values: any[];
149
160
  alias: string | undefined;
@@ -153,6 +164,7 @@ export declare class Lambda<T> implements Renderable {
153
164
  escape?: boolean;
154
165
  prefix?: string;
155
166
  }): string;
167
+ clone(): Lambda<unknown>;
156
168
  }
157
169
  export declare class LambdaOperators<T> {
158
170
  any(field: T, value: any, alias?: string): Lambda<unknown>;
@@ -160,7 +172,7 @@ export declare class LambdaOperators<T> {
160
172
  }
161
173
  export declare class ODataOperators<T> {
162
174
  }
163
- export interface ODataOperators<T> extends LogicalOperators<T>, ArithmeticOperators<T>, GroupingOperators<T>, LambdaOperators<T> {
175
+ export interface ODataOperators<T> extends LogicalOperators<T>, ArithmeticOperators<T>, LambdaOperators<T> {
164
176
  }
165
177
  export declare const operators: ODataOperators<any>;
166
178
  export declare class ODataFunctions<T> {
@@ -1,8 +1,9 @@
1
1
  import { QueryOptionNames } from '../../types';
2
2
  import { Expand, Filter, OrderBy, Select, Transform } from './builder';
3
- import { Connector, Expression } from './expressions';
3
+ import { ComputeExpression, FilterConnector, FilterExpression, OrderByExpression, SearchConnector, SearchExpression, ODataFunctions, ODataOperators } from './expressions';
4
+ import { ExpandExpression } from './expressions/expand';
5
+ import { SelectExpression } from './expressions/select';
4
6
  import type { ODataQueryArguments, ODataQueryOptions } from './options';
5
- import { ODataFunctions, ODataOperators } from './syntax';
6
7
  export declare class ODataQueryOptionHandler<T> {
7
8
  private o;
8
9
  private n;
@@ -38,16 +39,27 @@ export declare class ODataQueryOptionsHandler<T> {
38
39
  * @returns The alias
39
40
  */
40
41
  alias(value: any, name?: string): import("./builder").QueryCustomType;
42
+ select(opts: (builder: {
43
+ s: T;
44
+ e: () => SelectExpression<T>;
45
+ }, current?: SelectExpression<T>) => SelectExpression<T>): SelectExpression<T>;
41
46
  select(opts: Select<T>): ODataQueryOptionHandler<T>;
42
47
  select(): ODataQueryOptionHandler<T>;
48
+ expand(opts: (builder: {
49
+ s: T;
50
+ e: () => ExpandExpression<T>;
51
+ }, current?: ExpandExpression<T>) => ExpandExpression<T>): ExpandExpression<T>;
43
52
  expand(opts: Expand<T>): ODataQueryOptionHandler<T>;
44
53
  expand(): ODataQueryOptionHandler<T>;
45
54
  /**
46
55
  * @link https://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part2-url-conventions.html#sec_SystemQueryOptioncompute
47
56
  */
48
- compute(opts: (e: {
49
- e: Expression<T>;
50
- }) => Expression<T>): Expression<T>;
57
+ compute(opts: (builder: {
58
+ s: T;
59
+ e: () => ComputeExpression<T>;
60
+ o: ODataOperators<T>;
61
+ f: ODataFunctions<T>;
62
+ }, current?: ComputeExpression<T>) => ComputeExpression<T>): ComputeExpression<T>;
51
63
  compute(opts: string): ODataQueryOptionHandler<T>;
52
64
  compute(): ODataQueryOptionHandler<T>;
53
65
  /**
@@ -57,20 +69,23 @@ export declare class ODataQueryOptionsHandler<T> {
57
69
  format(): ODataQueryOptionHandler<T>;
58
70
  transform(opts: Transform<T>): ODataQueryOptionHandler<T>;
59
71
  transform(): ODataQueryOptionHandler<T>;
72
+ search(opts: (builder: {
73
+ e: (connector: SearchConnector) => SearchExpression<T>;
74
+ }, current?: SearchExpression<T>) => SearchExpression<T>): SearchExpression<T>;
60
75
  search(opts: string): ODataQueryOptionHandler<T>;
61
76
  search(): ODataQueryOptionHandler<T>;
62
- filter(opts: (e: {
77
+ filter(opts: (builder: {
63
78
  s: T;
64
- e: (connector?: Connector) => Expression<T>;
79
+ e: (connector?: FilterConnector) => FilterExpression<T>;
65
80
  o: ODataOperators<T>;
66
81
  f: ODataFunctions<T>;
67
- }) => Expression<T>): Expression<T>;
82
+ }, current?: FilterExpression<T>) => FilterExpression<T>): FilterExpression<T>;
68
83
  filter(opts: Filter<T>): ODataQueryOptionHandler<T>;
69
84
  filter(): ODataQueryOptionHandler<T>;
70
- orderBy(opts: (e: {
71
- e: () => Expression<T>;
72
- not: (e: Expression<T>) => Expression<T>;
73
- }) => Expression<T>): Expression<T>;
85
+ orderBy(opts: (builder: {
86
+ s: T;
87
+ e: () => OrderByExpression<T>;
88
+ }, current?: OrderByExpression<T>) => OrderByExpression<T>): OrderByExpression<T>;
74
89
  orderBy(opts: OrderBy<T>): ODataQueryOptionHandler<T>;
75
90
  orderBy(): ODataQueryOptionHandler<T>;
76
91
  top(opts: number): ODataQueryOptionHandler<T>;
@@ -1,22 +1,24 @@
1
1
  import { QueryOptionNames } from '../../types';
2
2
  import { Expand, Filter, OrderBy, Select, Transform } from './builder';
3
- import { Expression } from './expressions';
3
+ import { Expression, FilterExpression, OrderByExpression, SearchExpression } from './expressions';
4
+ import { ExpandExpression } from './expressions/expand';
5
+ import { SelectExpression } from './expressions/select';
4
6
  import { ODataQueryOptionHandler } from './handlers';
5
7
  export declare type ODataQueryArguments<T> = {
6
- [QueryOptionNames.select]?: Select<T>;
7
- [QueryOptionNames.filter]?: Filter<T>;
8
- [QueryOptionNames.search]?: string;
8
+ [QueryOptionNames.select]?: Select<T> | SelectExpression<T>;
9
+ [QueryOptionNames.filter]?: Filter<T> | FilterExpression<T>;
10
+ [QueryOptionNames.search]?: string | SearchExpression<T>;
9
11
  [QueryOptionNames.compute]?: string;
10
12
  [QueryOptionNames.transform]?: Transform<T>;
11
- [QueryOptionNames.orderBy]?: OrderBy<T>;
13
+ [QueryOptionNames.orderBy]?: OrderBy<T> | OrderByExpression<T>;
12
14
  [QueryOptionNames.top]?: number;
13
15
  [QueryOptionNames.skip]?: number;
14
16
  [QueryOptionNames.skiptoken]?: string;
15
- [QueryOptionNames.expand]?: Expand<T>;
17
+ [QueryOptionNames.expand]?: Expand<T> | ExpandExpression<T>;
16
18
  [QueryOptionNames.format]?: string;
17
19
  };
18
20
  export declare class ODataQueryOptions<T> {
19
- options: {
21
+ values: {
20
22
  [name: string]: any;
21
23
  };
22
24
  constructor(options?: {
@@ -29,7 +31,7 @@ export declare class ODataQueryOptions<T> {
29
31
  toJSON(): {};
30
32
  toQueryArguments(): ODataQueryArguments<T>;
31
33
  clone<O>(): ODataQueryOptions<O>;
32
- expression(name: QueryOptionNames, exp: Expression<T>): Expression<T>;
34
+ expression(name: QueryOptionNames, exp?: Expression<T>): any;
33
35
  option<O>(name: QueryOptionNames, opts?: O): ODataQueryOptionHandler<O>;
34
36
  has(name: QueryOptionNames): boolean;
35
37
  remove(...names: QueryOptionNames[]): void;
@@ -51,13 +51,14 @@ export declare class ODataResource<T> {
51
51
  reset?: boolean;
52
52
  }): C;
53
53
  isSubtypeOf(other: ODataResource<any>): boolean;
54
+ isSupertypeOf(other: ODataResource<any>): boolean;
54
55
  isEqualTo(other: ODataResource<any>, test?: 'path' | 'params'): boolean;
55
56
  pathAndParams(escape?: boolean): [string, {
56
57
  [name: string]: any;
57
58
  }];
58
59
  endpointUrl(params?: boolean): string;
59
60
  toString(): string;
60
- clone<R extends ODataResource<T>>(): R;
61
+ clone(): ODataResource<T>;
61
62
  deserialize(value: any, options?: OptionsHelper): any;
62
63
  serialize(value: any, options?: OptionsHelper): any;
63
64
  encode(value: any, options?: OptionsHelper): any;
@@ -15,6 +15,7 @@ export declare class ODataActionResource<P, R> extends ODataResource<R> {
15
15
  query?: ODataQueryOptions<R>;
16
16
  }): ODataActionResource<P, R>;
17
17
  static fromResource<P, R>(resource: ODataResource<any>, path: string): ODataActionResource<P, R>;
18
+ clone(): ODataActionResource<P, R>;
18
19
  returnType(): string | undefined;
19
20
  protected post(params: P | null, options?: ODataEntityOptions & ODataEntitiesOptions & ODataPropertyOptions): Observable<any>;
20
21
  /**
@@ -25,6 +25,16 @@ export declare class ODataBatchResource extends ODataResource<any> {
25
25
  private _requests;
26
26
  requests(): ODataRequest<any>[];
27
27
  static factory(api: ODataApi): ODataBatchResource;
28
+ clone(): ODataBatchResource;
29
+ private storeRequester;
30
+ private restoreRequester;
31
+ /**
32
+ * Add to batch request
33
+ * @param ctx The context for the request
34
+ * @returns The result of execute the context
35
+ */
36
+ add<R>(ctx: (batch: this) => Observable<R>): Observable<R>;
37
+ send(options?: ODataOptions): void;
28
38
  /**
29
39
  * Execute the batch request
30
40
  * @param ctx The context for the request
@@ -9,6 +9,7 @@ export declare class ODataCountResource<T> extends ODataResource<T> {
9
9
  segments: ODataPathSegments;
10
10
  query?: ODataQueryOptions<T>;
11
11
  }): ODataCountResource<T>;
12
+ clone(): ODataCountResource<T>;
12
13
  protected get(options?: ODataOptions): Observable<number>;
13
14
  /**
14
15
  * Fetch the count of the set.