Skip to content

Commit 0b6b35a

Browse files
Extract options + ts-expect-error
1 parent d77e9e7 commit 0b6b35a

File tree

9 files changed

+89
-57
lines changed

9 files changed

+89
-57
lines changed

etc/api.report.api.md

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -230,7 +230,7 @@ export interface AsyncIterArgs<
230230
R extends boolean = false,
231231
A extends Augments = never,
232232
S extends NullabilityAdherence = NullabilityAdherence.Default,
233-
Z extends OrderByType<Q, K> = {}
233+
Z extends OrderByOptions<Q, K> = {}
234234
> extends SelectArg<Q, K, R, S>, OrderByArg<Q, Z, PropertyKeys<Q>> {
235235
// (undocumented)
236236
$__UNSTABLE_useOldInterfaceApis?: boolean;
@@ -501,7 +501,7 @@ export interface FetchPageArgs<
501501
R extends boolean = false,
502502
A extends Augments = never,
503503
S extends NullabilityAdherence = NullabilityAdherence.Default,
504-
Z extends OrderByType<Q, K> = {}
504+
Z extends OrderByOptions<Q, K> = {}
505505
> extends AsyncIterArgs<Q, K, R, A, S, Z> {
506506
// (undocumented)
507507
$nextPageToken?: string;
@@ -510,15 +510,16 @@ export interface FetchPageArgs<
510510
}
511511

512512
// Warning: (ae-forgotten-export) The symbol "ExtractOptions" needs to be exported by the entry point index.d.ts
513+
// Warning: (ae-forgotten-export) The symbol "ExtractOrderByOptions" needs to be exported by the entry point index.d.ts
513514
//
514515
// @public
515516
export type FetchPageResult<
516517
Q extends ObjectOrInterfaceDefinition,
517518
L extends PropertyKeys<Q>,
518519
R extends boolean,
519520
S extends NullabilityAdherence,
520-
Z extends OrderByType<Q, L> = {}
521-
> = PageResult<PropertyKeys<Q> extends L ? Osdk.Instance<Q, ExtractOptions<R, S>, PropertyKeys<Q>, {}, Z> : Osdk.Instance<Q, ExtractOptions<R, S>, L, {}, Z>>;
521+
Z extends OrderByOptions<Q, L> = {}
522+
> = PageResult<PropertyKeys<Q> extends L ? Osdk.Instance<Q, ExtractOptions<R, S>, PropertyKeys<Q>, {}, ExtractOrderByOptions<Z extends "relevance" ? true : false>> : Osdk.Instance<Q, ExtractOptions<R, S>, L, {}, ExtractOrderByOptions<Z extends "relevance" ? true : false>>>;
522523

523524
// @public (undocumented)
524525
export type FilteredPropertyKeys<
@@ -830,7 +831,7 @@ export interface OntologyMetadata<_NEVER_USED_KEPT_FOR_BACKCOMPAT = any> {
830831
}
831832

832833
// @public (undocumented)
833-
export type OrderByType<
834+
export type OrderByOptions<
834835
Q extends ObjectOrInterfaceDefinition,
835836
L extends PropertyKeys<Q> = PropertyKeys<Q>
836837
> = { [K in L]? : "asc" | "desc" } | "relevance";
@@ -856,14 +857,14 @@ export namespace Osdk {
856857
OPTIONS extends never | "$rid" = never,
857858
P extends PropertyKeys<Q> = PropertyKeys<Q>,
858859
R extends Record<string, SimplePropertyDef> = {},
859-
Z extends OrderByType<Q, P> = {}
860+
ORDER_BY_OPTIONS extends never | "$score" = never
860861
> = OsdkBase<Q> & Pick<CompileTimeMetadata<Q>["props"], GetPropsKeys<Q, P, [R] extends [{}] ? false : true>> & ([R] extends [never] ? {} : { [A in keyof R] : SimplePropertyDef.ToRuntimeProperty<R[A]> }) & {
861862
readonly $link: Q extends {
862863
linksType?: any
863864
} ? Q["linksType"] : Q extends ObjectTypeDefinition ? OsdkObjectLinksObject<Q> : never
864865
readonly $as: <NEW_Q extends ValidToFrom<Q>>(type: NEW_Q | string) => Osdk.Instance<NEW_Q, OPTIONS, ConvertProps<Q, NEW_Q, P>>
865866
readonly $clone: <NEW_PROPS extends PropertyKeys<Q>>(updatedObject?: Osdk.Instance<Q, any, NEW_PROPS> | { [K in NEW_PROPS]? : CompileTimeMetadata<Q>["props"][K] }) => Osdk.Instance<Q, OPTIONS, P | NEW_PROPS>
866-
} & (Z extends "relevance" ? {
867+
} & (IsNever<ORDER_BY_OPTIONS> extends true ? {} : IsAny<ORDER_BY_OPTIONS> extends true ? {} : "$score" extends ORDER_BY_OPTIONS ? {
867868
readonly $score: number
868869
} : {}) & (IsNever<OPTIONS> extends true ? {} : IsAny<OPTIONS> extends true ? {} : "$rid" extends OPTIONS ? {
869870
readonly $rid: string
@@ -1139,8 +1140,8 @@ export type SingleOsdkResult<
11391140
R extends boolean,
11401141
S extends NullabilityAdherence,
11411142
RDPs extends Record<string, SimplePropertyDef> = {},
1142-
Z extends OrderByType<Q, L> = {}
1143-
> = Osdk.Instance<Q, ExtractOptions<R, S>, PropertyKeys<Q> extends L ? PropertyKeys<Q> : PropertyKeys<Q> & L, { [K in Extract<keyof RDPs, L>] : RDPs[K] }, Z>;
1143+
Z extends OrderByOptions<Q, L> = {}
1144+
> = Osdk.Instance<Q, ExtractOptions<R, S>, PropertyKeys<Q> extends L ? PropertyKeys<Q> : PropertyKeys<Q> & L, { [K in Extract<keyof RDPs, L>] : RDPs[K] }, ExtractOrderByOptions<Z extends "relevance" ? true : false>>;
11441145

11451146
// Warning: (ae-forgotten-export) The symbol "AggregationKeyDataType" needs to be exported by the entry point index.d.ts
11461147
//

packages/api/src/OsdkObjectFrom.ts

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -18,10 +18,7 @@ import type {
1818
DefaultToFalse,
1919
OsdkObjectLinksObject,
2020
} from "./definitions/LinkDefinitions.js";
21-
import type {
22-
NullabilityAdherence,
23-
OrderByType,
24-
} from "./object/FetchPageArgs.js";
21+
import type { NullabilityAdherence } from "./object/FetchPageArgs.js";
2522
import type { UnionIfTrue } from "./object/FetchPageResult.js";
2623
import type { InterfaceDefinition } from "./ontology/InterfaceDefinition.js";
2724
import type {
@@ -191,7 +188,7 @@ export namespace Osdk {
191188
OPTIONS extends never | "$rid" = never,
192189
P extends PropertyKeys<Q> = PropertyKeys<Q>,
193190
R extends Record<string, SimplePropertyDef> = {},
194-
Z extends OrderByType<Q, P> = {},
191+
ORDER_BY_OPTIONS extends never | "$score" = never,
195192
> =
196193
& OsdkBase<Q>
197194
& Pick<
@@ -224,7 +221,10 @@ export namespace Osdk {
224221
},
225222
) => Osdk.Instance<Q, OPTIONS, P | NEW_PROPS>;
226223
}
227-
& (Z extends "relevance" ? { readonly $score: number } : {})
224+
& (IsNever<ORDER_BY_OPTIONS> extends true ? {}
225+
: IsAny<ORDER_BY_OPTIONS> extends true ? {}
226+
: "$score" extends ORDER_BY_OPTIONS ? { readonly $score: number }
227+
: {})
228228
// We are hiding the $rid field if it wasn't requested as we want to discourage its use
229229
& (IsNever<OPTIONS> extends true ? {}
230230
: IsAny<OPTIONS> extends true ? {}
@@ -260,3 +260,8 @@ export type ExtractOptions<
260260
R extends boolean,
261261
S extends NullabilityAdherence = NullabilityAdherence.Default,
262262
> = ExtractRidOption<R>;
263+
264+
export type ExtractOrderByOptions<R extends boolean> = // comment for readability
265+
IsNever<R> extends true ? never
266+
: DefaultToFalse<R> extends false ? never
267+
: "$score";

packages/api/src/index.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ export type {
6565
Augments,
6666
FetchPageArgs,
6767
NullabilityAdherence,
68-
OrderByType,
68+
OrderByOptions,
6969
SelectArg,
7070
SelectArgToKeys,
7171
} from "./object/FetchPageArgs.js";

packages/api/src/object/FetchPageArgs.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ export interface SelectArg<
3535
$includeRid?: R;
3636
}
3737

38-
export type OrderByType<
38+
export type OrderByOptions<
3939
Q extends ObjectOrInterfaceDefinition,
4040
L extends PropertyKeys<Q> = PropertyKeys<Q>,
4141
> =
@@ -46,7 +46,7 @@ export type OrderByType<
4646

4747
export interface OrderByArg<
4848
Q extends ObjectOrInterfaceDefinition,
49-
Z extends OrderByType<Q, L>,
49+
Z extends OrderByOptions<Q, L>,
5050
L extends PropertyKeys<Q> = PropertyKeys<Q>,
5151
> {
5252
$orderBy?: Z;
@@ -65,7 +65,7 @@ export interface FetchPageArgs<
6565
R extends boolean = false,
6666
A extends Augments = never,
6767
S extends NullabilityAdherence = NullabilityAdherence.Default,
68-
Z extends OrderByType<Q, K> = {},
68+
Z extends OrderByOptions<Q, K> = {},
6969
> extends AsyncIterArgs<Q, K, R, A, S, Z> {
7070
$nextPageToken?: string;
7171
$pageSize?: number;
@@ -77,7 +77,7 @@ export interface AsyncIterArgs<
7777
R extends boolean = false,
7878
A extends Augments = never,
7979
S extends NullabilityAdherence = NullabilityAdherence.Default,
80-
Z extends OrderByType<Q, K> = {},
80+
Z extends OrderByOptions<Q, K> = {},
8181
> extends SelectArg<Q, K, R, S>, OrderByArg<Q, Z, PropertyKeys<Q>> {
8282
$__UNSTABLE_useOldInterfaceApis?: boolean;
8383
}

packages/api/src/object/FetchPageResult.ts

Lines changed: 24 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -19,9 +19,14 @@ import type {
1919
PropertyKeys,
2020
} from "../ontology/ObjectOrInterface.js";
2121
import type { SimplePropertyDef } from "../ontology/SimplePropertyDef.js";
22-
import type { ExtractOptions, IsNever, Osdk } from "../OsdkObjectFrom.js";
22+
import type {
23+
ExtractOptions,
24+
ExtractOrderByOptions,
25+
IsNever,
26+
Osdk,
27+
} from "../OsdkObjectFrom.js";
2328
import type { PageResult } from "../PageResult.js";
24-
import type { NullabilityAdherence, OrderByType } from "./FetchPageArgs.js";
29+
import type { NullabilityAdherence, OrderByOptions } from "./FetchPageArgs.js";
2530

2631
/** exposed for a test */
2732
export type RespectNullability<S extends NullabilityAdherence> = S extends false
@@ -51,11 +56,22 @@ export type FetchPageResult<
5156
L extends PropertyKeys<Q>,
5257
R extends boolean,
5358
S extends NullabilityAdherence,
54-
Z extends OrderByType<Q, L> = {},
59+
Z extends OrderByOptions<Q, L> = {},
5560
> = PageResult<
56-
PropertyKeys<Q> extends L
57-
? Osdk.Instance<Q, ExtractOptions<R, S>, PropertyKeys<Q>, {}, Z>
58-
: Osdk.Instance<Q, ExtractOptions<R, S>, L, {}, Z>
61+
PropertyKeys<Q> extends L ? Osdk.Instance<
62+
Q,
63+
ExtractOptions<R, S>,
64+
PropertyKeys<Q>,
65+
{},
66+
ExtractOrderByOptions<Z extends "relevance" ? true : false>
67+
>
68+
: Osdk.Instance<
69+
Q,
70+
ExtractOptions<R, S>,
71+
L,
72+
{},
73+
ExtractOrderByOptions<Z extends "relevance" ? true : false>
74+
>
5975
>;
6076

6177
/**
@@ -67,13 +83,13 @@ export type SingleOsdkResult<
6783
R extends boolean,
6884
S extends NullabilityAdherence,
6985
RDPs extends Record<string, SimplePropertyDef> = {},
70-
Z extends OrderByType<Q, L> = {},
86+
Z extends OrderByOptions<Q, L> = {},
7187
> = Osdk.Instance<
7288
Q,
7389
ExtractOptions<R, S>,
7490
PropertyKeys<Q> extends L ? PropertyKeys<Q> : PropertyKeys<Q> & L,
7591
{ [K in Extract<keyof RDPs, L>]: RDPs[K] },
76-
Z
92+
ExtractOrderByOptions<Z extends "relevance" ? true : false>
7793
>;
7894

7995
export type IsAny<T> = unknown extends T

packages/api/src/objectSet/ObjectSet.ts

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ import type {
2424
Augments,
2525
FetchPageArgs,
2626
NullabilityAdherence,
27-
OrderByType,
27+
OrderByOptions,
2828
SelectArg,
2929
} from "../object/FetchPageArgs.js";
3030
import type { Result } from "../object/Result.js";
@@ -41,7 +41,11 @@ import type {
4141
} from "../ontology/ObjectTypeDefinition.js";
4242
import type { SimplePropertyDef } from "../ontology/SimplePropertyDef.js";
4343
import type { PrimaryKeyType } from "../OsdkBase.js";
44-
import type { ExtractOptions, Osdk } from "../OsdkObjectFrom.js";
44+
import type {
45+
ExtractOptions,
46+
ExtractOrderByOptions,
47+
Osdk,
48+
} from "../OsdkObjectFrom.js";
4549
import type { PageResult } from "../PageResult.js";
4650
import type { LinkedType, LinkNames } from "../util/LinkUtils.js";
4751
import type { BaseObjectSet } from "./BaseObjectSet.js";
@@ -91,7 +95,7 @@ interface FetchPage<
9195
R extends boolean,
9296
const A extends Augments,
9397
S extends NullabilityAdherence = NullabilityAdherence.Default,
94-
Z extends OrderByType<Q, L> = {},
98+
Z extends OrderByOptions<Q, L> = {},
9599
>(
96100
args?: FetchPageArgs<Q, L, R, A, S, Z>,
97101
) => Promise<
@@ -101,7 +105,7 @@ interface FetchPage<
101105
ExtractOptions<R, S>,
102106
PropertyKeys<Q> extends L ? PropertyKeys<Q> : PropertyKeys<Q> & L,
103107
{ [K in Extract<keyof RDPs, L>]: RDPs[K] },
104-
Z
108+
ExtractOrderByOptions<Z extends "relevance" ? true : false>
105109
>
106110
>
107111
>;
@@ -125,7 +129,7 @@ interface FetchPage<
125129
R extends boolean,
126130
const A extends Augments,
127131
S extends NullabilityAdherence = NullabilityAdherence.Default,
128-
Z extends OrderByType<Q, L> = {},
132+
Z extends OrderByOptions<Q, L> = {},
129133
>(
130134
args?: FetchPageArgs<Q, L, R, A, S, Z>,
131135
) => Promise<
@@ -136,7 +140,7 @@ interface FetchPage<
136140
ExtractOptions<R, S>,
137141
PropertyKeys<Q> extends L ? PropertyKeys<Q> : PropertyKeys<Q> & L,
138142
{ [K in Extract<keyof RDPs, L>]: RDPs[K] },
139-
Z
143+
ExtractOrderByOptions<Z extends "relevance" ? true : false>
140144
>
141145
>
142146
>
@@ -180,7 +184,7 @@ interface AsyncIter<
180184
R extends boolean,
181185
const A extends Augments,
182186
S extends NullabilityAdherence = NullabilityAdherence.Default,
183-
Z extends OrderByType<Q, L> = {},
187+
Z extends OrderByOptions<Q, L> = {},
184188
>(
185189
args?: AsyncIterArgs<Q, L, R, A, S, Z>,
186190
) => AsyncIterableIterator<
@@ -189,7 +193,7 @@ interface AsyncIter<
189193
ExtractOptions<R, S>,
190194
PropertyKeys<Q> extends L ? PropertyKeys<Q> : PropertyKeys<Q> & L,
191195
{ [K in Extract<keyof RDPs, L>]: RDPs[K] },
192-
Z
196+
ExtractOrderByOptions<Z extends "relevance" ? true : false>
193197
>
194198
>;
195199
}

packages/client/src/object/fetchPage.ts

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ import type {
2323
NullabilityAdherence,
2424
ObjectOrInterfaceDefinition,
2525
ObjectTypeDefinition,
26-
OrderByType,
26+
OrderByOptions,
2727
PropertyKeys,
2828
Result,
2929
} from "@osdk/api";
@@ -95,7 +95,7 @@ async function fetchInterfacePage<
9595
L extends PropertyKeys<Q>,
9696
R extends boolean,
9797
S extends NullabilityAdherence,
98-
Z extends OrderByType<Q, L>,
98+
Z extends OrderByOptions<Q, L>,
9999
>(
100100
client: MinimalClient,
101101
interfaceType: Q,
@@ -160,7 +160,7 @@ export async function fetchPageInternal<
160160
R extends boolean,
161161
A extends Augments,
162162
S extends NullabilityAdherence,
163-
Z extends OrderByType<Q, L>,
163+
Z extends OrderByOptions<Q, L>,
164164
>(
165165
client: MinimalClient,
166166
objectType: Q,
@@ -191,7 +191,7 @@ export async function fetchPageWithErrorsInternal<
191191
R extends boolean,
192192
A extends Augments,
193193
S extends NullabilityAdherence,
194-
Z extends OrderByType<Q, L>,
194+
Z extends OrderByOptions<Q, L>,
195195
>(
196196
client: MinimalClient,
197197
objectType: Q,
@@ -222,7 +222,7 @@ export async function fetchPage<
222222
L extends PropertyKeys<Q>,
223223
R extends boolean,
224224
S extends NullabilityAdherence,
225-
Z extends OrderByType<Q, L>,
225+
Z extends OrderByOptions<Q, L>,
226226
>(
227227
client: MinimalClient,
228228
objectType: Q,
@@ -238,7 +238,7 @@ export async function fetchPageWithErrors<
238238
L extends PropertyKeys<Q>,
239239
R extends boolean,
240240
S extends NullabilityAdherence,
241-
Z extends OrderByType<Q, L>,
241+
Z extends OrderByOptions<Q, L>,
242242
>(
243243
client: MinimalClient,
244244
objectType: Q,
@@ -255,7 +255,7 @@ function applyFetchArgs<
255255
pageSize?: PageSize;
256256
},
257257
>(
258-
args: FetchPageArgs<any, any, any, any, any, OrderByType<any, any>>,
258+
args: FetchPageArgs<any, any, any, any, any, OrderByOptions<any, any>>,
259259
body: X,
260260
): X {
261261
if (args?.$nextPageToken) {
@@ -287,7 +287,7 @@ export async function fetchObjectPage<
287287
L extends PropertyKeys<Q>,
288288
R extends boolean,
289289
S extends NullabilityAdherence,
290-
Z extends OrderByType<Q, L>,
290+
Z extends OrderByOptions<Q, L>,
291291
>(
292292
client: MinimalClient,
293293
objectType: Q,

0 commit comments

Comments
 (0)