@ballistix.digital/odata-query-builder 0.6.0 → 0.7.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.
@@ -1,10 +1,10 @@
1
1
  /**
2
- * What a nested `$expand` may carry: `$filter`, `$select` and a further
3
- * `$expand`, and nothing else.
2
+ * What a nested `$expand` may carry: `$filter`, `$select`, a further
3
+ * `$expand`, `$top` and `$skip`, and nothing else.
4
4
  *
5
- * `$orderby`, `$top`, `$skip`, `$count` and `$levels` inside `$expand` are
6
- * still an `UnsupportedFeatureError` from the server, so they are absent from
7
- * this type — a 400 stays a red squiggle.
5
+ * `$orderby`, `$count` and `$levels` inside `$expand` are an
6
+ * `UnsupportedFeatureError` from the server, so they are absent from this
7
+ * type — a 400 stays a red squiggle.
8
8
  *
9
9
  * FILTERED EXPANSIONS
10
10
  * -------------------
@@ -28,4 +28,14 @@ export interface ExpandChain<T> {
28
28
  * written relative to it, not to the root. Repeated calls AND together.
29
29
  */
30
30
  filter(build: (scope: Scope<T>, operators: Operators) => Predicate): ExpandChain<T>;
31
+ /**
32
+ * `$expand=rel($top=…)`. The server applies it per parent row; it needs
33
+ * @ballistix.digital/typeorm-extensions 3.13.0.
34
+ */
35
+ top(count: number): ExpandChain<T>;
36
+ /**
37
+ * `$expand=rel($skip=…)`. The server applies it per parent row; it needs
38
+ * @ballistix.digital/typeorm-extensions 3.13.0.
39
+ */
40
+ skip(count: number): ExpandChain<T>;
31
41
  }
@@ -14,9 +14,9 @@
14
14
  * `Chain<T>`, `ItemChain<T>` and `ExpandChain<T>` are three interfaces over
15
15
  * this one class. Only the type that a factory returns differs. `Chain<T>`
16
16
  * has every member. `ItemChain<T>` has `select`, `expand`, `toQueryString()`
17
- * and `toParams()`. `ExpandChain<T>` has `select`, `expand` and `filter`, the
18
- * three options that the server accepts inside `$expand`. At runtime, every
19
- * instance has every member.
17
+ * and `toParams()`. `ExpandChain<T>` has `select`, `expand`, `filter`, `top`
18
+ * and `skip`, the options that the server accepts inside `$expand`. At
19
+ * runtime, every instance has every member.
20
20
  */
21
21
  import type { Chain, QueryParams } from '../domain/chain/chain.model';
22
22
  import type { ItemChain } from '../domain/chain/itemChain.model';
@@ -16,6 +16,10 @@ const nestedParts = (queryState) => {
16
16
  parts.push(`$select=${queryState.select.join(',')}`);
17
17
  if (queryState.expand.length)
18
18
  parts.push(`$expand=${expandList(queryState)}`);
19
+ if (queryState.top !== undefined)
20
+ parts.push(`$top=${queryState.top}`);
21
+ if (queryState.skip !== undefined)
22
+ parts.push(`$skip=${queryState.skip}`);
19
23
  return parts;
20
24
  };
21
25
  /** `a($select=x),b` — a relation with no options of its own prints bare. */
@@ -1 +1 @@
1
- {"version":3,"file":"queryParts.util.js","sourceRoot":"","sources":["../../../../../src/module/query/util/emit/queryParts.util.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"queryParts.util.js","sourceRoot":"","sources":["../../../../../src/module/query/util/emit/queryParts.util.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ballistix.digital/odata-query-builder",
3
- "version": "0.6.0",
3
+ "version": "0.7.0",
4
4
  "description": "Typed, fluent OData v4 query-string builder for the dialect @ballistix.digital/typeorm-extensions serves.",
5
5
  "license": "MIT",
6
6
  "repository": {