angular-odata 0.122.0 → 0.124.0

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 (163) hide show
  1. package/esm2022/lib/api.mjs +373 -0
  2. package/esm2022/lib/cache/cache.mjs +175 -0
  3. package/{esm2020 → esm2022}/lib/cache/storage.mjs +1 -1
  4. package/esm2022/lib/client.mjs +252 -0
  5. package/{esm2020 → esm2022}/lib/helper.mjs +1 -1
  6. package/{esm2020 → esm2022}/lib/loaders.mjs +1 -1
  7. package/esm2022/lib/models/collection.mjs +865 -0
  8. package/esm2022/lib/models/model.mjs +535 -0
  9. package/esm2022/lib/models/options.mjs +1117 -0
  10. package/{esm2020 → esm2022}/lib/module.mjs +5 -5
  11. package/esm2022/lib/resources/path/segments.mjs +124 -0
  12. package/esm2022/lib/resources/query/builder.mjs +624 -0
  13. package/esm2022/lib/resources/query/expressions/base.mjs +20 -0
  14. package/esm2022/lib/resources/query/expressions/compute.mjs +39 -0
  15. package/esm2022/lib/resources/query/expressions/count.mjs +99 -0
  16. package/esm2022/lib/resources/query/expressions/expand.mjs +125 -0
  17. package/esm2022/lib/resources/query/expressions/filter.mjs +161 -0
  18. package/esm2022/lib/resources/query/expressions/orderby.mjs +56 -0
  19. package/esm2022/lib/resources/query/expressions/search.mjs +122 -0
  20. package/esm2022/lib/resources/query/expressions/select.mjs +31 -0
  21. package/esm2022/lib/resources/query/expressions/syntax.mjs +444 -0
  22. package/{esm2020 → esm2022}/lib/resources/query/handlers.mjs +1 -1
  23. package/esm2022/lib/resources/query/options.mjs +115 -0
  24. package/{esm2020 → esm2022}/lib/resources/request.mjs +1 -1
  25. package/esm2022/lib/resources/resource.mjs +257 -0
  26. package/{esm2020 → esm2022}/lib/resources/responses/annotations.mjs +1 -1
  27. package/esm2022/lib/resources/responses/csdl/csdl-annotation.mjs +33 -0
  28. package/{esm2020 → esm2022}/lib/resources/responses/csdl/csdl-entity-container.mjs +1 -1
  29. package/{esm2020 → esm2022}/lib/resources/responses/csdl/csdl-entity-set.mjs +1 -1
  30. package/{esm2020 → esm2022}/lib/resources/responses/csdl/csdl-enum-type.mjs +1 -1
  31. package/{esm2020 → esm2022}/lib/resources/responses/csdl/csdl-function-action.mjs +1 -1
  32. package/{esm2020 → esm2022}/lib/resources/responses/csdl/csdl-navigation-property-binding.mjs +1 -1
  33. package/{esm2020 → esm2022}/lib/resources/responses/csdl/csdl-reference.mjs +1 -1
  34. package/{esm2020 → esm2022}/lib/resources/responses/csdl/csdl-schema.mjs +1 -1
  35. package/{esm2020 → esm2022}/lib/resources/responses/csdl/csdl-singleton.mjs +1 -1
  36. package/{esm2020 → esm2022}/lib/resources/responses/csdl/csdl-structural-property.mjs +1 -1
  37. package/{esm2020 → esm2022}/lib/resources/responses/csdl/csdl-structured-type.mjs +1 -1
  38. package/{esm2020 → esm2022}/lib/resources/responses/csdl/csdl-type-definition.mjs +1 -1
  39. package/esm2022/lib/resources/responses/metadata.mjs +547 -0
  40. package/{esm2020 → esm2022}/lib/resources/responses/response.mjs +1 -1
  41. package/{esm2020 → esm2022}/lib/resources/types/action.mjs +1 -1
  42. package/{esm2020 → esm2022}/lib/resources/types/batch.mjs +1 -1
  43. package/{esm2020 → esm2022}/lib/resources/types/count.mjs +1 -1
  44. package/{esm2020 → esm2022}/lib/resources/types/entity-set.mjs +1 -1
  45. package/{esm2020 → esm2022}/lib/resources/types/entity.mjs +1 -1
  46. package/{esm2020 → esm2022}/lib/resources/types/function.mjs +1 -1
  47. package/{esm2020 → esm2022}/lib/resources/types/media.mjs +1 -1
  48. package/{esm2020 → esm2022}/lib/resources/types/navigation-property.mjs +1 -1
  49. package/{esm2020 → esm2022}/lib/resources/types/property.mjs +1 -1
  50. package/{esm2020 → esm2022}/lib/resources/types/reference.mjs +1 -1
  51. package/{esm2020 → esm2022}/lib/resources/types/singleton.mjs +1 -1
  52. package/{esm2020 → esm2022}/lib/resources/types/value.mjs +1 -1
  53. package/{esm2020 → esm2022}/lib/schema/annotation.mjs +1 -1
  54. package/{esm2020 → esm2022}/lib/schema/callable.mjs +1 -1
  55. package/{esm2020 → esm2022}/lib/schema/element.mjs +1 -1
  56. package/{esm2020 → esm2022}/lib/schema/entity-container.mjs +1 -1
  57. package/{esm2020 → esm2022}/lib/schema/enum-type.mjs +1 -1
  58. package/{esm2020 → esm2022}/lib/schema/parsers/callable.mjs +1 -1
  59. package/esm2022/lib/schema/parsers/edm.mjs +99 -0
  60. package/{esm2020 → esm2022}/lib/schema/parsers/enum-type.mjs +2 -2
  61. package/esm2022/lib/schema/parsers/structured-type.mjs +502 -0
  62. package/{esm2020 → esm2022}/lib/schema/schema.mjs +1 -1
  63. package/esm2022/lib/schema/structured-type.mjs +207 -0
  64. package/esm2022/lib/services/base.mjs +29 -0
  65. package/{esm2020 → esm2022}/lib/services/entity-set.mjs +1 -1
  66. package/{esm2020 → esm2022}/lib/services/factory.mjs +4 -4
  67. package/{esm2020 → esm2022}/lib/services/singleton.mjs +1 -1
  68. package/{esm2020 → esm2022}/lib/settings.mjs +1 -1
  69. package/{esm2020 → esm2022}/lib/types.mjs +1 -1
  70. package/{esm2020 → esm2022}/lib/utils/arrays.mjs +1 -1
  71. package/{esm2020 → esm2022}/lib/utils/durations.mjs +1 -1
  72. package/esm2022/lib/utils/enums.mjs +61 -0
  73. package/{esm2020 → esm2022}/lib/utils/http.mjs +1 -1
  74. package/{esm2020 → esm2022}/lib/utils/objects.mjs +1 -1
  75. package/{esm2020 → esm2022}/lib/utils/odata.mjs +1 -1
  76. package/esm2022/lib/utils/types.mjs +136 -0
  77. package/{fesm2020 → fesm2022}/angular-odata.mjs +544 -373
  78. package/fesm2022/angular-odata.mjs.map +1 -0
  79. package/lib/helper.d.ts +1 -1
  80. package/lib/models/model.d.ts +4 -2
  81. package/lib/models/options.d.ts +7 -8
  82. package/lib/resources/path/segments.d.ts +15 -6
  83. package/lib/resources/query/builder.d.ts +21 -20
  84. package/lib/resources/query/expressions/base.d.ts +6 -4
  85. package/lib/resources/query/expressions/compute.d.ts +10 -8
  86. package/lib/resources/query/expressions/count.d.ts +14 -11
  87. package/lib/resources/query/expressions/expand.d.ts +23 -19
  88. package/lib/resources/query/expressions/filter.d.ts +22 -20
  89. package/lib/resources/query/expressions/orderby.d.ts +12 -9
  90. package/lib/resources/query/expressions/search.d.ts +12 -9
  91. package/lib/resources/query/expressions/select.d.ts +9 -7
  92. package/lib/resources/query/expressions/syntax.d.ts +75 -71
  93. package/lib/resources/query/handlers.d.ts +2 -2
  94. package/lib/resources/query/options.d.ts +15 -6
  95. package/lib/resources/resource.d.ts +2 -2
  96. package/lib/resources/responses/types.d.ts +3 -3
  97. package/lib/resources/types/options.d.ts +7 -7
  98. package/lib/schema/parsers/structured-type.d.ts +8 -5
  99. package/lib/schema/structured-type.d.ts +2 -1
  100. package/lib/types.d.ts +15 -15
  101. package/lib/utils/durations.d.ts +1 -1
  102. package/lib/utils/enums.d.ts +3 -0
  103. package/lib/utils/types.d.ts +1 -0
  104. package/package.json +9 -15
  105. package/esm2020/lib/api.mjs +0 -373
  106. package/esm2020/lib/cache/cache.mjs +0 -173
  107. package/esm2020/lib/client.mjs +0 -252
  108. package/esm2020/lib/models/collection.mjs +0 -861
  109. package/esm2020/lib/models/model.mjs +0 -507
  110. package/esm2020/lib/models/options.mjs +0 -1110
  111. package/esm2020/lib/resources/path/segments.mjs +0 -124
  112. package/esm2020/lib/resources/query/builder.mjs +0 -588
  113. package/esm2020/lib/resources/query/expressions/base.mjs +0 -20
  114. package/esm2020/lib/resources/query/expressions/compute.mjs +0 -39
  115. package/esm2020/lib/resources/query/expressions/count.mjs +0 -89
  116. package/esm2020/lib/resources/query/expressions/expand.mjs +0 -115
  117. package/esm2020/lib/resources/query/expressions/filter.mjs +0 -161
  118. package/esm2020/lib/resources/query/expressions/orderby.mjs +0 -56
  119. package/esm2020/lib/resources/query/expressions/search.mjs +0 -122
  120. package/esm2020/lib/resources/query/expressions/select.mjs +0 -31
  121. package/esm2020/lib/resources/query/expressions/syntax.mjs +0 -409
  122. package/esm2020/lib/resources/query/options.mjs +0 -115
  123. package/esm2020/lib/resources/resource.mjs +0 -251
  124. package/esm2020/lib/resources/responses/csdl/csdl-annotation.mjs +0 -33
  125. package/esm2020/lib/resources/responses/metadata.mjs +0 -547
  126. package/esm2020/lib/schema/parsers/edm.mjs +0 -104
  127. package/esm2020/lib/schema/parsers/structured-type.mjs +0 -490
  128. package/esm2020/lib/schema/structured-type.mjs +0 -202
  129. package/esm2020/lib/services/base.mjs +0 -29
  130. package/esm2020/lib/utils/enums.mjs +0 -45
  131. package/esm2020/lib/utils/types.mjs +0 -133
  132. package/fesm2015/angular-odata.mjs +0 -11811
  133. package/fesm2015/angular-odata.mjs.map +0 -1
  134. package/fesm2020/angular-odata.mjs.map +0 -1
  135. /package/{esm2020 → esm2022}/angular-odata.mjs +0 -0
  136. /package/{esm2020 → esm2022}/lib/cache/index.mjs +0 -0
  137. /package/{esm2020 → esm2022}/lib/cache/memory.mjs +0 -0
  138. /package/{esm2020 → esm2022}/lib/constants.mjs +0 -0
  139. /package/{esm2020 → esm2022}/lib/index.mjs +0 -0
  140. /package/{esm2020 → esm2022}/lib/models/index.mjs +0 -0
  141. /package/{esm2020 → esm2022}/lib/options.mjs +0 -0
  142. /package/{esm2020 → esm2022}/lib/resources/index.mjs +0 -0
  143. /package/{esm2020 → esm2022}/lib/resources/path/handlers.mjs +0 -0
  144. /package/{esm2020 → esm2022}/lib/resources/path/index.mjs +0 -0
  145. /package/{esm2020 → esm2022}/lib/resources/query/expressions/index.mjs +0 -0
  146. /package/{esm2020 → esm2022}/lib/resources/query/index.mjs +0 -0
  147. /package/{esm2020 → esm2022}/lib/resources/responses/index.mjs +0 -0
  148. /package/{esm2020 → esm2022}/lib/resources/responses/options.mjs +0 -0
  149. /package/{esm2020 → esm2022}/lib/resources/responses/types.mjs +0 -0
  150. /package/{esm2020 → esm2022}/lib/resources/types/index.mjs +0 -0
  151. /package/{esm2020 → esm2022}/lib/resources/types/metadata.mjs +0 -0
  152. /package/{esm2020 → esm2022}/lib/resources/types/options.mjs +0 -0
  153. /package/{esm2020 → esm2022}/lib/schema/entity-set.mjs +0 -0
  154. /package/{esm2020 → esm2022}/lib/schema/index.mjs +0 -0
  155. /package/{esm2020 → esm2022}/lib/schema/parsers/index.mjs +0 -0
  156. /package/{esm2020 → esm2022}/lib/services/entity.mjs +0 -0
  157. /package/{esm2020 → esm2022}/lib/services/index.mjs +0 -0
  158. /package/{esm2020 → esm2022}/lib/utils/arraybuffers.mjs +0 -0
  159. /package/{esm2020 → esm2022}/lib/utils/dates.mjs +0 -0
  160. /package/{esm2020 → esm2022}/lib/utils/index.mjs +0 -0
  161. /package/{esm2020 → esm2022}/lib/utils/strings.mjs +0 -0
  162. /package/{esm2020 → esm2022}/lib/utils/urls.mjs +0 -0
  163. /package/{esm2020 → esm2022}/public-api.mjs +0 -0
package/lib/helper.d.ts CHANGED
@@ -2,7 +2,7 @@ import { ODataMetadataType } from './types';
2
2
  export declare const COLLECTION: RegExp;
3
3
  export declare const PROPERTY: RegExp;
4
4
  export declare const EXPAND: RegExp;
5
- export declare type ODataContext = {
5
+ export type ODataContext = {
6
6
  serviceRootUrl?: string;
7
7
  metadataUrl?: string;
8
8
  entitySet?: string;
@@ -4,6 +4,7 @@ import { EntityKey, ODataActionOptions, ODataEntityAnnotations, ODataEntityResou
4
4
  import { ODataStructuredType } from '../schema';
5
5
  import { ODataCollection } from './collection';
6
6
  import { ModelOptions, ODataModelEvent, ODataModelField, ODataModelOptions, ODataModelAttribute } from './options';
7
+ import { ParserOptions } from '../types';
7
8
  export declare class ODataModel<T> {
8
9
  static options: ModelOptions;
9
10
  static meta: ODataModelOptions<any>;
@@ -24,7 +25,7 @@ export declare class ODataModel<T> {
24
25
  resource: ODataResource<T> | null;
25
26
  }[];
26
27
  _attributes: Map<string, ODataModelAttribute<any>>;
27
- _annotations: ODataEntityAnnotations<T> | null;
28
+ _annotations: ODataEntityAnnotations<T>;
28
29
  _reset: boolean;
29
30
  _reparent: boolean;
30
31
  _silent: boolean;
@@ -148,6 +149,7 @@ export declare class ODataModel<T> {
148
149
  hasChanged({ include_navigation, }?: {
149
150
  include_navigation?: boolean;
150
151
  }): boolean;
152
+ encode<E>(name: keyof T, options?: ParserOptions): any;
151
153
  isNew(): boolean;
152
154
  withResource<R>(resource: any, ctx: (model: this) => R): R;
153
155
  /**
@@ -163,8 +165,8 @@ export declare class ODataModel<T> {
163
165
  getValue<P>(name: keyof T | string, options?: ODataOptions): Observable<P | ODataModel<P> | ODataCollection<P, ODataModel<P>> | null>;
164
166
  setReference<N>(name: keyof T | string, model: ODataModel<N> | ODataCollection<N, ODataModel<N>> | null, options?: ODataOptions): Observable<this>;
165
167
  getReference<P>(name: keyof T | string): ODataModel<P> | ODataCollection<P, ODataModel<P>> | null;
166
- equals(other: ODataModel<T>): boolean;
167
168
  get [Symbol.toStringTag](): string;
169
+ equals(other: ODataModel<T>): boolean;
168
170
  collection(): ODataCollection<T, ODataModel<T>> | undefined;
169
171
  next(): ODataModel<T> | undefined;
170
172
  prev(): ODataModel<T> | undefined;
@@ -62,13 +62,11 @@ export declare enum ODataModelState {
62
62
  Removed = 1,
63
63
  Unchanged = 2
64
64
  }
65
- export declare type ModelOptions = {
65
+ export type ModelOptions = {
66
66
  cid?: string;
67
- fields: {
68
- [name: string]: ModelFieldOptions;
69
- };
67
+ fields: Map<string, ModelFieldOptions>;
70
68
  };
71
- export declare type ModelFieldOptions = {
69
+ export type ModelFieldOptions = {
72
70
  field?: string;
73
71
  parser?: ODataStructuredTypeFieldParser<any>;
74
72
  default?: any;
@@ -86,7 +84,7 @@ export declare function Model({ cid }?: {
86
84
  export declare function ModelField({ name, ...options }?: {
87
85
  name?: string;
88
86
  } & ModelFieldOptions): (target: any, key: string) => void;
89
- export declare type ODataModelFieldOptions<F> = ModelFieldOptions & {
87
+ export type ODataModelFieldOptions<F> = ModelFieldOptions & {
90
88
  name: string;
91
89
  field: string;
92
90
  parser: ODataStructuredTypeFieldParser<F>;
@@ -175,7 +173,7 @@ export declare class ODataModelAttribute<T> {
175
173
  private link;
176
174
  private unlink;
177
175
  }
178
- export declare type ODataModelEntry<T, M extends ODataModel<T>> = {
176
+ export type ODataModelEntry<T, M extends ODataModel<T>> = {
179
177
  state: ODataModelState;
180
178
  model: M;
181
179
  key?: EntityKey<T> | {
@@ -187,7 +185,6 @@ export declare class ODataModelOptions<T> {
187
185
  name: string;
188
186
  cid: string;
189
187
  base?: string;
190
- open?: boolean;
191
188
  private _fields;
192
189
  schema: ODataStructuredType<T>;
193
190
  entitySet?: ODataEntitySet;
@@ -202,6 +199,8 @@ export declare class ODataModelOptions<T> {
202
199
  alias?: boolean;
203
200
  }): string;
204
201
  isOpenType(): boolean;
202
+ isEntityType(): boolean;
203
+ isComplexType(): boolean;
205
204
  isTypeOf(type: string): boolean;
206
205
  isModelFor(entity: T | {
207
206
  [name: string]: any;
@@ -1,7 +1,7 @@
1
- import { PathSegment } from '../../types';
1
+ import { Parser, PathSegment } from '../../types';
2
2
  import { EntityKey } from '../resource';
3
3
  import { SegmentHandler } from './handlers';
4
- export declare type ODataSegment = {
4
+ export type ODataSegment = {
5
5
  name: PathSegment;
6
6
  path: string;
7
7
  type?: string;
@@ -11,14 +11,23 @@ export declare type ODataSegment = {
11
11
  export declare class ODataPathSegments {
12
12
  private _segments;
13
13
  constructor(segments?: ODataSegment[]);
14
- pathAndParams(escape?: boolean): [string, {
15
- [name: string]: any;
16
- }];
14
+ pathAndParams({ escape, parser, }?: {
15
+ escape?: boolean;
16
+ parser?: Parser<any>;
17
+ }): [
18
+ string,
19
+ {
20
+ [name: string]: any;
21
+ }
22
+ ];
17
23
  types({ key }?: {
18
24
  key?: boolean;
19
25
  }): string[];
20
26
  keys(values?: (EntityKey<any> | undefined)[]): (EntityKey<any> | undefined)[];
21
- toString(): string;
27
+ toString({ escape, parser, }?: {
28
+ escape?: boolean;
29
+ parser?: Parser<any>;
30
+ }): string;
22
31
  toJSON(): any[];
23
32
  clone(): ODataPathSegments;
24
33
  find(predicate: (segment: ODataSegment) => boolean): ODataSegment | undefined;
@@ -1,8 +1,8 @@
1
- export declare type Unpacked<T> = T extends (infer U)[] ? U : T;
2
- export declare type Select<T> = SelectType<T> | SelectType<T>[];
3
- export declare type SelectType<T> = string | keyof T;
4
- export declare type Filter<T> = FilterType | FilterType[];
5
- export declare type FilterType = string | {
1
+ export type Unpacked<T> = T extends (infer U)[] ? U : T;
2
+ export type Select<T> = SelectType<T> | SelectType<T>[];
3
+ export type SelectType<T> = string | keyof T;
4
+ export type Filter<T> = FilterType | FilterType[];
5
+ export type FilterType = string | {
6
6
  [name: string]: any;
7
7
  };
8
8
  export declare enum StandardAggregateMethods {
@@ -12,25 +12,25 @@ export declare enum StandardAggregateMethods {
12
12
  average = "average",
13
13
  countdistinct = "countdistinct"
14
14
  }
15
- export declare type Aggregate = string | {
15
+ export type Aggregate = string | {
16
16
  [propertyName: string]: {
17
17
  with: StandardAggregateMethods;
18
18
  as: string;
19
19
  };
20
20
  };
21
- export declare type OrderBy<T> = OrderByType<T> | OrderByType<T>[];
22
- export declare type OrderByType<T> = string | OrderByObject<T>;
23
- export declare type OrderByObject<T> = keyof T | [keyof T | string, 'asc' | 'desc'] | NestedOrderBy<T>;
24
- export declare type NestedOrderBy<T> = {
21
+ export type OrderBy<T> = OrderByType<T> | OrderByType<T>[];
22
+ export type OrderByType<T> = string | OrderByObject<T>;
23
+ export type OrderByObject<T> = keyof T | [keyof T | string, 'asc' | 'desc'] | NestedOrderBy<T>;
24
+ export type NestedOrderBy<T> = {
25
25
  [P in keyof T]?: T[P] extends Array<infer E> ? OrderBy<E> : OrderBy<T[P]>;
26
26
  };
27
- export declare type Expand<T> = ExpandType<T> | ExpandType<T>[];
28
- export declare type ExpandType<T> = string | ExpandObject<T>;
29
- export declare type ExpandObject<T> = keyof T | NestedExpandOptions<T>;
30
- export declare type NestedExpandOptions<T> = {
27
+ export type Expand<T> = ExpandType<T> | ExpandType<T>[];
28
+ export type ExpandType<T> = string | ExpandObject<T>;
29
+ export type ExpandObject<T> = keyof T | NestedExpandOptions<T>;
30
+ export type NestedExpandOptions<T> = {
31
31
  [P in keyof T]?: ExpandOptions<Unpacked<T[P]>>;
32
32
  };
33
- export declare type ExpandOptions<T> = {
33
+ export type ExpandOptions<T> = {
34
34
  select?: Select<T>;
35
35
  filter?: Filter<T>;
36
36
  orderBy?: OrderBy<T>;
@@ -40,12 +40,12 @@ export declare type ExpandOptions<T> = {
40
40
  count?: boolean | Filter<T>;
41
41
  expand?: Expand<T>;
42
42
  };
43
- export declare type Transform<T> = {
43
+ export type Transform<T> = {
44
44
  aggregate?: Aggregate | Array<Aggregate>;
45
45
  filter?: Filter<T>;
46
46
  groupBy?: GroupBy<T>;
47
47
  };
48
- export declare type GroupBy<T> = {
48
+ export type GroupBy<T> = {
49
49
  properties: Array<keyof T>;
50
50
  transform?: Transform<T>;
51
51
  };
@@ -55,18 +55,19 @@ export declare enum QueryCustomTypes {
55
55
  Duration = 2,
56
56
  Binary = 3
57
57
  }
58
- export declare type QueryCustomType = {
58
+ export type QueryCustomType = {
59
59
  type: QueryCustomTypes;
60
60
  value: any;
61
61
  name?: string;
62
62
  };
63
- export declare type Value = string | Date | number | boolean | QueryCustomType;
63
+ export type Value = string | Date | number | boolean | QueryCustomType;
64
64
  export declare const raw: (value: string) => QueryCustomType;
65
65
  export declare const alias: (value: any, name?: string) => QueryCustomType;
66
66
  export declare const duration: (value: string) => QueryCustomType;
67
67
  export declare const binary: (value: string) => QueryCustomType;
68
68
  export declare const isQueryCustomType: (value: any) => boolean;
69
- export declare type QueryOptions<T> = ExpandOptions<T> & {
69
+ export declare const isRawType: (value: any) => boolean;
70
+ export type QueryOptions<T> = ExpandOptions<T> & {
70
71
  search: string;
71
72
  transform: {
72
73
  [name: string]: any;
@@ -1,3 +1,4 @@
1
+ import { Parser } from '../../../types';
1
2
  import type { QueryCustomType } from '../builder';
2
3
  import { Renderable } from './syntax';
3
4
  export declare abstract class Expression<T> implements Renderable {
@@ -6,10 +7,11 @@ export declare abstract class Expression<T> implements Renderable {
6
7
  children?: Renderable[];
7
8
  });
8
9
  get [Symbol.toStringTag](): string;
9
- abstract render({ aliases, escape, prefix, }: {
10
- aliases?: QueryCustomType[] | undefined;
11
- escape?: boolean | undefined;
12
- prefix?: string | undefined;
10
+ abstract render({ aliases, escape, prefix, parser, }: {
11
+ aliases?: QueryCustomType[];
12
+ escape?: boolean;
13
+ prefix?: string;
14
+ parser?: Parser<T>;
13
15
  }): string;
14
16
  abstract clone(): Expression<T>;
15
17
  children(): Renderable[];
@@ -1,7 +1,8 @@
1
+ import { Parser } from '../../../types';
1
2
  import type { QueryCustomType } from '../builder';
2
3
  import { Expression } from './base';
3
4
  import { ODataFunctions, ODataOperators, Renderable } from './syntax';
4
- export declare type ComputeExpressionBuilder<T> = {
5
+ export type ComputeExpressionBuilder<T> = {
5
6
  t: Required<Readonly<T>>;
6
7
  e: () => ComputeExpression<T>;
7
8
  };
@@ -11,15 +12,16 @@ export declare class ComputeExpression<T> extends Expression<T> {
11
12
  children?: Renderable[];
12
13
  names?: string[];
13
14
  });
14
- static compute<T extends object>(opts: (builder: ComputeExpressionBuilder<T>, current?: ComputeExpression<T>) => ComputeExpression<T>, current?: ComputeExpression<T>): ComputeExpression<T>;
15
- render({ aliases, escape, prefix, }?: {
16
- aliases?: QueryCustomType[] | undefined;
17
- escape?: boolean | undefined;
18
- prefix?: string | undefined;
15
+ static compute<T>(opts: (builder: ComputeExpressionBuilder<T>, current?: ComputeExpression<T>) => ComputeExpression<T>, current?: ComputeExpression<T>): ComputeExpression<T>;
16
+ render({ aliases, escape, prefix, parser, }?: {
17
+ aliases?: QueryCustomType[];
18
+ escape?: boolean;
19
+ prefix?: string;
20
+ parser?: Parser<T>;
19
21
  }): string;
20
- clone(): ComputeExpression<unknown>;
22
+ clone(): ComputeExpression<T>;
21
23
  private _add;
22
- field<T extends object>(name: string, opts: (e: {
24
+ field<T>(name: string, opts: (e: {
23
25
  o: ODataOperators<T>;
24
26
  f: ODataFunctions<T>;
25
27
  }) => Renderable): ComputeExpression<T>;
@@ -1,8 +1,9 @@
1
+ import { Parser } from '../../../types';
1
2
  import type { QueryCustomType } from '../builder';
2
3
  import { Expression } from './base';
3
4
  import { FilterExpression, FilterExpressionBuilder } from './filter';
4
5
  import { Renderable } from './syntax';
5
- export declare class CountField<T extends object> implements Renderable {
6
+ export declare class CountField<T> implements Renderable {
6
7
  protected field: any;
7
8
  private values;
8
9
  constructor(field: any, values?: {
@@ -12,16 +13,17 @@ export declare class CountField<T extends object> implements Renderable {
12
13
  toJSON(): {
13
14
  field: any;
14
15
  };
15
- render({ aliases, escape, prefix, }: {
16
+ render({ aliases, escape, prefix, parser, }: {
16
17
  aliases?: QueryCustomType[];
17
18
  escape?: boolean;
18
19
  prefix?: string;
20
+ parser?: Parser<T>;
19
21
  }): string;
20
22
  filter(opts: (builder: FilterExpressionBuilder<T>, current?: FilterExpression<T>) => FilterExpression<T>): any;
21
- clone(): CountField<object>;
23
+ clone(): CountField<T>;
22
24
  private option;
23
25
  }
24
- export declare type CountExpressionBuilder<T> = {
26
+ export type CountExpressionBuilder<T> = {
25
27
  t: Readonly<Required<T>>;
26
28
  e: () => CountExpression<T>;
27
29
  };
@@ -29,15 +31,16 @@ export declare class CountExpression<T> extends Expression<T> {
29
31
  constructor({ children, }?: {
30
32
  children?: Renderable[];
31
33
  });
32
- static count<T extends object>(opts: (builder: CountExpressionBuilder<T>, current?: CountExpression<T>) => CountExpression<T>, current?: CountExpression<T>): CountExpression<T>;
34
+ static count<T>(opts: (builder: CountExpressionBuilder<T>, current?: CountExpression<T>) => CountExpression<T>, current?: CountExpression<T>): CountExpression<T>;
33
35
  private _add;
34
- render({ aliases, escape, prefix, }?: {
35
- aliases?: QueryCustomType[] | undefined;
36
- escape?: boolean | undefined;
37
- prefix?: string | undefined;
36
+ render({ aliases, escape, prefix, parser, }?: {
37
+ aliases?: QueryCustomType[];
38
+ escape?: boolean;
39
+ prefix?: string;
40
+ parser?: Parser<T>;
38
41
  }): string;
39
- clone(): CountExpression<unknown>;
40
- field<F extends Object>(field: F[], opts?: (e: {
42
+ clone(): CountExpression<T>;
43
+ field<F>(field: F[], opts?: (e: {
41
44
  t: F;
42
45
  f: CountField<F>;
43
46
  }) => CountExpression<F>): CountExpression<F>;
@@ -1,4 +1,5 @@
1
- import type { QueryCustomType } from '../builder';
1
+ import { Parser } from '../../../types';
2
+ import type { QueryCustomType, Unpacked } from '../builder';
2
3
  import { Expression } from './base';
3
4
  import { FilterExpression, FilterExpressionBuilder } from './filter';
4
5
  import { OrderByExpression, OrderByExpressionBuilder } from './orderby';
@@ -15,23 +16,25 @@ export declare class ExpandField<T> implements Renderable {
15
16
  toJSON(): {
16
17
  field: any;
17
18
  };
18
- render({ aliases, escape, prefix, }: {
19
+ render({ aliases, escape, prefix, parser, }: {
19
20
  aliases?: QueryCustomType[];
20
21
  escape?: boolean;
21
22
  prefix?: string;
23
+ parser?: Parser<T>;
22
24
  }): string;
23
- clone(): ExpandField<unknown>;
24
- select<T extends object>(opts: (builder: SelectExpressionBuilder<T>, current?: SelectExpression<T>) => SelectExpression<T>): SelectExpression<T>;
25
- expand<T extends object>(opts: (builder: ExpandExpressionBuilder<T>, current?: ExpandExpression<T>) => ExpandExpression<T>): any;
26
- filter<T extends object>(opts: (builder: FilterExpressionBuilder<T>, current?: FilterExpression<T>) => FilterExpression<T>): any;
27
- search<T extends object>(opts: (builder: SearchExpressionBuilder<T>) => SearchExpression<T>): any;
28
- orderBy<T extends object>(opts: (builder: OrderByExpressionBuilder<T>, current?: OrderByExpression<T>) => OrderByExpression<T>): any;
29
- skip(n: number): any;
30
- top(n: number): any;
31
- levels(n: number | 'max'): any;
25
+ clone(): ExpandField<T>;
26
+ select<T>(opts: (builder: SelectExpressionBuilder<T>, current?: SelectExpression<T>) => SelectExpression<T>): SelectExpression<T>;
27
+ expand<T>(opts: (builder: ExpandExpressionBuilder<T>, current?: ExpandExpression<T>) => ExpandExpression<T>): ExpandExpression<T>;
28
+ filter<T>(opts: (builder: FilterExpressionBuilder<T>, current?: FilterExpression<T>) => FilterExpression<T>): FilterExpression<T>;
29
+ search<T>(opts: (builder: SearchExpressionBuilder<T>) => SearchExpression<T>): SearchExpression<T>;
30
+ orderBy<T>(opts: (builder: OrderByExpressionBuilder<T>, current?: OrderByExpression<T>) => OrderByExpression<T>): OrderByExpression<T>;
31
+ skip(n: number): number;
32
+ top(n: number): number;
33
+ levels(n: number | 'max'): number | "max";
34
+ count(): boolean;
32
35
  private option;
33
36
  }
34
- export declare type ExpandExpressionBuilder<T> = {
37
+ export type ExpandExpressionBuilder<T> = {
35
38
  t: Readonly<Required<T>>;
36
39
  e: () => ExpandExpression<T>;
37
40
  };
@@ -39,13 +42,14 @@ export declare class ExpandExpression<T> extends Expression<T> {
39
42
  constructor({ children, }?: {
40
43
  children?: Renderable[];
41
44
  });
42
- static expand<T extends object>(opts: (builder: ExpandExpressionBuilder<T>, current?: ExpandExpression<T>) => ExpandExpression<T>, current?: ExpandExpression<T>): ExpandExpression<T>;
43
- render({ aliases, escape, prefix, }?: {
44
- aliases?: QueryCustomType[] | undefined;
45
- escape?: boolean | undefined;
46
- prefix?: string | undefined;
45
+ static expand<T>(opts: (builder: ExpandExpressionBuilder<T>, current?: ExpandExpression<T>) => ExpandExpression<T>, current?: ExpandExpression<T>): ExpandExpression<T>;
46
+ render({ aliases, escape, prefix, parser, }?: {
47
+ aliases?: QueryCustomType[];
48
+ escape?: boolean;
49
+ prefix?: string;
50
+ parser?: Parser<T>;
47
51
  }): string;
48
- clone(): ExpandExpression<unknown>;
52
+ clone(): ExpandExpression<T>;
49
53
  private _add;
50
- field<F>(field: F, opts?: (e: ExpandField<F>) => void): ExpandExpression<F>;
54
+ field<F>(field: F, opts?: (e: ExpandField<Unpacked<F>>) => void): ExpandExpression<T>;
51
55
  }
@@ -1,9 +1,10 @@
1
+ import { Parser } from '../../../types';
1
2
  import type { QueryCustomType } from '../builder';
2
3
  import { Expression } from './base';
3
4
  import { CountExpression, CountField } from './count';
4
- import { ODataFunctions, ODataOperators, Renderable } from './syntax';
5
- export declare type FilterConnector = 'and' | 'or';
6
- export declare type FilterExpressionBuilder<T> = {
5
+ import { Normalize, ODataFunctions, ODataOperators, Renderable } from './syntax';
6
+ export type FilterConnector = 'and' | 'or';
7
+ export type FilterExpressionBuilder<T> = {
7
8
  t: Readonly<Required<T>>;
8
9
  e: (connector?: FilterConnector) => FilterExpression<T>;
9
10
  o: ODataOperators<T>;
@@ -17,7 +18,7 @@ export declare class FilterExpression<F> extends Expression<F> {
17
18
  connector?: FilterConnector;
18
19
  negated?: boolean;
19
20
  });
20
- static filter<T extends object>(opts: (builder: FilterExpressionBuilder<T>, current?: FilterExpression<T>) => FilterExpression<T>, current?: FilterExpression<T>): FilterExpression<T>;
21
+ static filter<T>(opts: (builder: FilterExpressionBuilder<T>, current?: FilterExpression<T>) => FilterExpression<T>, current?: FilterExpression<T>): FilterExpression<T>;
21
22
  toJSON(): {
22
23
  children: any[];
23
24
  connector: FilterConnector;
@@ -25,36 +26,37 @@ export declare class FilterExpression<F> extends Expression<F> {
25
26
  };
26
27
  connector(): FilterConnector;
27
28
  negated(): boolean;
28
- render({ aliases, escape, prefix, }?: {
29
+ render({ aliases, escape, prefix, parser, }?: {
29
30
  aliases?: QueryCustomType[];
30
31
  escape?: boolean;
31
32
  prefix?: string;
33
+ parser?: Parser<any>;
32
34
  }): string;
33
- clone(): FilterExpression<unknown>;
35
+ clone(): FilterExpression<F>;
34
36
  private _add;
35
37
  or(exp: FilterExpression<F>): FilterExpression<F>;
36
38
  and(exp: FilterExpression<F>): FilterExpression<F>;
37
39
  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: {
40
+ eq(left: any, right: any, normalize?: Normalize): FilterExpression<F>;
41
+ ne(left: any, right: any, normalize?: Normalize): FilterExpression<F>;
42
+ gt(left: any, right: any, normalize?: Normalize): FilterExpression<F>;
43
+ ge(left: any, right: any, normalize?: Normalize): FilterExpression<F>;
44
+ lt(left: any, right: any, normalize?: Normalize): FilterExpression<F>;
45
+ le(left: any, right: any, normalize?: Normalize): FilterExpression<F>;
46
+ has(left: any, right: any, normalize?: Normalize): FilterExpression<F>;
47
+ in(left: any, right: any, normalize?: Normalize): FilterExpression<F>;
48
+ contains(left: any, right: any, normalize?: Normalize): FilterExpression<F>;
49
+ startsWith(left: any, right: any, normalize?: Normalize): FilterExpression<F>;
50
+ endsWith(left: any, right: any, normalize?: Normalize): FilterExpression<F>;
51
+ any<N>(left: N[], opts?: (e: {
50
52
  e: (connector?: FilterConnector) => FilterExpression<N>;
51
53
  t: N;
52
54
  }) => FilterExpression<N>, alias?: string): FilterExpression<F>;
53
- all<N extends object>(left: N[], opts: (e: {
55
+ all<N>(left: N[], opts: (e: {
54
56
  t: N;
55
57
  e: (connector?: FilterConnector) => FilterExpression<N>;
56
58
  }) => FilterExpression<N>, alias?: string): FilterExpression<F>;
57
- count<N extends object>(left: N[], opts?: (e: {
59
+ count<N>(left: N[], opts?: (e: {
58
60
  t: N;
59
61
  f: CountField<N>;
60
62
  }) => CountExpression<N>): FilterExpression<F>;
@@ -1,3 +1,4 @@
1
+ import { Parser } from '../../../types';
1
2
  import type { QueryCustomType } from '../builder';
2
3
  import { Expression } from './base';
3
4
  import { Renderable } from './syntax';
@@ -8,16 +9,17 @@ export declare class OrderByField implements Renderable {
8
9
  get [Symbol.toStringTag](): string;
9
10
  toJSON(): {
10
11
  field: any;
11
- order: "desc" | "asc";
12
+ order: "asc" | "desc";
12
13
  };
13
- render({ aliases, escape, prefix, }: {
14
+ render({ aliases, escape, prefix, parser, }: {
14
15
  aliases?: QueryCustomType[];
15
16
  escape?: boolean;
16
17
  prefix?: string;
18
+ parser?: Parser<any>;
17
19
  }): string;
18
20
  clone(): OrderByField;
19
21
  }
20
- export declare type OrderByExpressionBuilder<T> = {
22
+ export type OrderByExpressionBuilder<T> = {
21
23
  t: Readonly<Required<T>>;
22
24
  e: () => OrderByExpression<T>;
23
25
  };
@@ -25,14 +27,15 @@ export declare class OrderByExpression<T> extends Expression<T> {
25
27
  constructor({ children, }?: {
26
28
  children?: Renderable[];
27
29
  });
28
- static orderBy<T extends object>(opts: (builder: OrderByExpressionBuilder<T>, current?: OrderByExpression<T>) => OrderByExpression<T>, current?: OrderByExpression<T>): OrderByExpression<T>;
30
+ static orderBy<T>(opts: (builder: OrderByExpressionBuilder<T>, current?: OrderByExpression<T>) => OrderByExpression<T>, current?: OrderByExpression<T>): OrderByExpression<T>;
29
31
  private _add;
30
- render({ aliases, escape, prefix, }?: {
31
- aliases?: QueryCustomType[] | undefined;
32
- escape?: boolean | undefined;
33
- prefix?: string | undefined;
32
+ render({ aliases, escape, prefix, parser, }?: {
33
+ aliases?: QueryCustomType[];
34
+ escape?: boolean;
35
+ prefix?: string;
36
+ parser?: Parser<T>;
34
37
  }): string;
35
- clone(): OrderByExpression<unknown>;
38
+ clone(): OrderByExpression<T>;
36
39
  ascending(field: any): OrderByExpression<T>;
37
40
  descending(field: any): OrderByExpression<T>;
38
41
  }
@@ -1,7 +1,8 @@
1
+ import { Parser } from '../../../types';
1
2
  import type { QueryCustomType } from '../builder';
2
3
  import { Expression } from './base';
3
4
  import { Renderable } from './syntax';
4
- export declare type SearchConnector = 'AND' | 'OR';
5
+ export type SearchConnector = 'AND' | 'OR';
5
6
  export declare class SearchTerm implements Renderable {
6
7
  protected value: string;
7
8
  constructor(value: string);
@@ -10,14 +11,15 @@ export declare class SearchTerm implements Renderable {
10
11
  $type: string;
11
12
  value: string;
12
13
  };
13
- render({ aliases, escape, prefix, }: {
14
+ render({ aliases, escape, prefix, parser, }: {
14
15
  aliases?: QueryCustomType[];
15
16
  escape?: boolean;
16
17
  prefix?: string;
18
+ parser?: Parser<any>;
17
19
  }): string;
18
20
  clone(): SearchTerm;
19
21
  }
20
- export declare type SearchExpressionBuilder<T> = {
22
+ export type SearchExpressionBuilder<T> = {
21
23
  e: (connector?: SearchConnector) => SearchExpression<T>;
22
24
  };
23
25
  export declare class SearchExpression<T> extends Expression<T> {
@@ -28,14 +30,15 @@ export declare class SearchExpression<T> extends Expression<T> {
28
30
  connector?: SearchConnector;
29
31
  negated?: boolean;
30
32
  });
31
- static search<T extends object>(opts: (builder: SearchExpressionBuilder<T>, current?: SearchExpression<T>) => SearchExpression<T>, current?: SearchExpression<T>): SearchExpression<T>;
33
+ static search<T>(opts: (builder: SearchExpressionBuilder<T>, current?: SearchExpression<T>) => SearchExpression<T>, current?: SearchExpression<T>): SearchExpression<T>;
32
34
  private _add;
33
- render({ aliases, escape, prefix, }?: {
34
- aliases?: QueryCustomType[] | undefined;
35
- escape?: boolean | undefined;
36
- prefix?: string | undefined;
35
+ render({ aliases, escape, prefix, parser, }?: {
36
+ aliases?: QueryCustomType[];
37
+ escape?: boolean;
38
+ prefix?: string;
39
+ parser?: Parser<T>;
37
40
  }): string;
38
- clone(): SearchExpression<unknown>;
41
+ clone(): SearchExpression<T>;
39
42
  toJSON(): {
40
43
  children: any[];
41
44
  connector: SearchConnector;
@@ -1,7 +1,8 @@
1
+ import { Parser } from '../../../types';
1
2
  import type { QueryCustomType } from '../builder';
2
3
  import { Expression } from './base';
3
4
  import { Renderable } from './syntax';
4
- export declare type SelectExpressionBuilder<T> = {
5
+ export type SelectExpressionBuilder<T> = {
5
6
  t: Readonly<Required<T>>;
6
7
  e: () => SelectExpression<T>;
7
8
  };
@@ -9,13 +10,14 @@ export declare class SelectExpression<T> extends Expression<T> {
9
10
  constructor({ children, }?: {
10
11
  children?: Renderable[];
11
12
  });
12
- static select<T extends object>(opts: (builder: SelectExpressionBuilder<T>, current?: SelectExpression<T>) => SelectExpression<T>, current?: SelectExpression<T>): SelectExpression<T>;
13
- render({ aliases, escape, prefix, }?: {
14
- aliases?: QueryCustomType[] | undefined;
15
- escape?: boolean | undefined;
16
- prefix?: string | undefined;
13
+ static select<T>(opts: (builder: SelectExpressionBuilder<T>, current?: SelectExpression<T>) => SelectExpression<T>, current?: SelectExpression<T>): SelectExpression<T>;
14
+ render({ aliases, escape, prefix, parser, }?: {
15
+ aliases?: QueryCustomType[];
16
+ escape?: boolean;
17
+ prefix?: string;
18
+ parser?: Parser<T>;
17
19
  }): string;
18
- clone(): SelectExpression<unknown>;
20
+ clone(): SelectExpression<T>;
19
21
  private _add;
20
22
  field(field: any): SelectExpression<T>;
21
23
  }