@osdk/api 2.7.1 → 2.8.0-beta.10

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 (35) hide show
  1. package/CHANGELOG.md +11 -48
  2. package/build/browser/OsdkObjectFrom.js.map +1 -1
  3. package/build/browser/derivedProperties/DerivedProperty.js.map +1 -1
  4. package/build/browser/index.js.map +1 -1
  5. package/build/browser/object/FetchPageArgs.js.map +1 -1
  6. package/build/browser/object/PropertySecurity.js +2 -0
  7. package/build/browser/object/PropertySecurity.js.map +1 -0
  8. package/build/browser/objectSet/ObjectSet.js.map +1 -1
  9. package/build/browser/objectSet/ObjectSet.test.js +22 -0
  10. package/build/browser/objectSet/ObjectSet.test.js.map +1 -1
  11. package/build/cjs/{ObjectSet-CADY0fcl.d.cts → ObjectSet-CqVqDXKn.d.cts} +102 -18
  12. package/build/cjs/index.d.cts +2 -2
  13. package/build/cjs/public/unstable.d.cts +2 -2
  14. package/build/esm/OsdkObjectFrom.js.map +1 -1
  15. package/build/esm/derivedProperties/DerivedProperty.js.map +1 -1
  16. package/build/esm/index.js.map +1 -1
  17. package/build/esm/object/FetchPageArgs.js.map +1 -1
  18. package/build/esm/object/PropertySecurity.js +2 -0
  19. package/build/esm/object/PropertySecurity.js.map +1 -0
  20. package/build/esm/objectSet/ObjectSet.js.map +1 -1
  21. package/build/esm/objectSet/ObjectSet.test.js +22 -0
  22. package/build/esm/objectSet/ObjectSet.test.js.map +1 -1
  23. package/build/types/OsdkObjectFrom.d.ts +17 -8
  24. package/build/types/OsdkObjectFrom.d.ts.map +1 -1
  25. package/build/types/derivedProperties/DerivedProperty.d.ts +10 -1
  26. package/build/types/derivedProperties/DerivedProperty.d.ts.map +1 -1
  27. package/build/types/index.d.ts +2 -0
  28. package/build/types/index.d.ts.map +1 -1
  29. package/build/types/object/FetchPageArgs.d.ts +9 -5
  30. package/build/types/object/FetchPageArgs.d.ts.map +1 -1
  31. package/build/types/object/PropertySecurity.d.ts +61 -0
  32. package/build/types/object/PropertySecurity.d.ts.map +1 -0
  33. package/build/types/objectSet/ObjectSet.d.ts +16 -11
  34. package/build/types/objectSet/ObjectSet.d.ts.map +1 -1
  35. package/package.json +3 -3
@@ -1 +1 @@
1
- {"version":3,"file":"ObjectSet.js","names":[],"sources":["ObjectSet.ts"],"sourcesContent":["/*\n * Copyright 2023 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport type { AggregateOpts } from \"../aggregate/AggregateOpts.js\";\nimport type { AggregateOptsThatErrorsAndDisallowsOrderingWithMultipleGroupBy } from \"../aggregate/AggregateOptsThatErrors.js\";\nimport type { AggregationsResults } from \"../aggregate/AggregationsResults.js\";\nimport type { WhereClause } from \"../aggregate/WhereClause.js\";\nimport type { DerivedProperty } from \"../derivedProperties/DerivedProperty.js\";\nimport type {\n AsyncIterArgs,\n Augments,\n FetchPageArgs,\n NullabilityAdherence,\n ObjectSetArgs,\n SelectArg,\n} from \"../object/FetchPageArgs.js\";\nimport type { Result } from \"../object/Result.js\";\nimport type { InterfaceDefinition } from \"../ontology/InterfaceDefinition.js\";\nimport type {\n DerivedObjectOrInterfaceDefinition,\n ObjectOrInterfaceDefinition,\n PropertyKeys,\n} from \"../ontology/ObjectOrInterface.js\";\nimport type {\n CompileTimeMetadata,\n ObjectTypeDefinition,\n} from \"../ontology/ObjectTypeDefinition.js\";\nimport type { SimplePropertyDef } from \"../ontology/SimplePropertyDef.js\";\nimport type { PrimaryKeyType } from \"../OsdkBase.js\";\nimport type {\n ExtractAllPropertiesOption,\n ExtractOptions,\n ExtractRidOption,\n MaybeScore,\n Osdk,\n} from \"../OsdkObjectFrom.js\";\nimport type { PageResult } from \"../PageResult.js\";\nimport type { LinkedType, LinkNames } from \"../util/LinkUtils.js\";\nimport type { BaseObjectSet } from \"./BaseObjectSet.js\";\nimport type {\n LinkTypeApiNamesFor,\n MinimalDirectedObjectLinkInstance,\n} from \"./ObjectSetLinks.js\";\nimport type { ObjectSetSubscription } from \"./ObjectSetListener.js\";\n\ntype MergeObjectSet<\n Q extends ObjectOrInterfaceDefinition,\n D extends Record<string, SimplePropertyDef> = {},\n> = DerivedObjectOrInterfaceDefinition.WithDerivedProperties<Q, D>;\n\ntype ExtractRdp<\n D extends\n | BaseObjectSet<any>\n | Record<string, SimplePropertyDef>,\n> = [D] extends [never] ? {}\n : D extends BaseObjectSet<any> ? {}\n : D extends Record<string, SimplePropertyDef> ? D\n : {};\n\ntype MaybeSimplifyPropertyKeys<\n Q extends ObjectOrInterfaceDefinition,\n L extends PropertyKeys<Q>,\n> = PropertyKeys<Q> extends L ? PropertyKeys<Q> : L & PropertyKeys<Q>;\n\ntype SubSelectKeysHelper<\n Q extends ObjectOrInterfaceDefinition,\n L extends string,\n> = [L] extends [never] ? PropertyKeys<Q>\n : PropertyKeys<Q> extends L ? PropertyKeys<Q>\n : L & PropertyKeys<Q>;\n\ntype SubSelectKeys<\n Q extends ObjectOrInterfaceDefinition,\n X extends SelectArg<Q, PropertyKeys<Q>, any, any> = never,\n> = SubSelectKeysHelper<Q, Extract$Select<X>>;\n\ntype NOOP<T> = T extends (...args: any[]) => any ? T\n : T extends abstract new(...args: any[]) => any ? T\n : { [K in keyof T]: T[K] };\n\ntype SubSelectRDPsHelper<\n X extends ValidFetchPageArgs<any, any, any> | ValidAsyncIterArgs<any, any>,\n DEFAULT extends string,\n> = [X] extends [never] ? DEFAULT\n : (X[\"$select\"] & string[])[number] & DEFAULT;\n\ntype SubSelectRDPs<\n RDPs extends Record<string, SimplePropertyDef>,\n X extends ValidFetchPageArgs<any, RDPs, any> | ValidAsyncIterArgs<any, RDPs>,\n> = [RDPs] extends [never] ? never\n : NOOP<{ [K in SubSelectRDPsHelper<X, string & keyof RDPs>]: RDPs[K] }>;\n\nexport interface MinimalObjectSet<\n Q extends ObjectOrInterfaceDefinition,\n RDPs extends Record<string, SimplePropertyDef> = {},\n ORDER_BY_OPTIONS extends ObjectSetArgs.OrderByOptions<PropertyKeys<Q>> = {},\n> extends\n BaseObjectSet<Q>,\n FetchPage<Q, RDPs>,\n AsyncIter<Q, RDPs, ORDER_BY_OPTIONS>,\n Where<Q, RDPs>,\n AsyncIterLinks<Q>\n{\n}\n\nexport type ExtractOptions2<\n X extends FetchPageArgs<any, any, any, any, any, any, any>,\n> = [X] extends [never] ? never\n :\n | ExtractRidOption<X[\"$includeRid\"] extends true ? true : false>\n | ExtractAllPropertiesOption<\n X[\"$includeAllBaseObjectProperties\"] extends true ? true : false\n >;\n\ntype Extract$Select<X extends FetchPageArgs<any, any>> = NonNullable<\n X[\"$select\"]\n>[number];\n\ninterface FetchPage<\n Q extends ObjectOrInterfaceDefinition,\n RDPs extends Record<string, SimplePropertyDef> = {},\n> {\n readonly fetchPage: FetchPageSignature<Q, RDPs>;\n readonly fetchPageWithErrors: FetchPageWithErrorsSignature<Q, RDPs>;\n}\n\ntype ValidFetchPageArgs<\n Q extends ObjectOrInterfaceDefinition,\n RDPs extends Record<string, SimplePropertyDef>,\n ORDER_BY_OPTIONS extends ObjectSetArgs.OrderByOptions<PropertyKeys<Q>>,\n> = ObjectSetArgs.FetchPage<\n Q,\n PropertyKeys<Q>,\n boolean,\n string & keyof RDPs,\n ORDER_BY_OPTIONS\n>;\n\ntype ValidAsyncIterArgs<\n Q extends ObjectOrInterfaceDefinition,\n RDPs extends Record<string, SimplePropertyDef>,\n> =\n | ObjectSetArgs.AsyncIter<\n Q,\n PropertyKeys<Q>,\n false,\n string & keyof RDPs\n >\n | AsyncIterArgs<\n Q,\n never,\n any,\n any,\n any,\n true,\n string & keyof RDPs\n >;\n\ninterface FetchPageSignature<\n Q extends ObjectOrInterfaceDefinition,\n RDPs extends Record<string, SimplePropertyDef> = {},\n> {\n /**\n * Gets a page of objects of this type, with a result wrapper\n * @param args - Args to specify next page token and page size, if applicable\n * @example\n * const myObjs = await objectSet.fetchPage({\n $pageSize: 10,\n $nextPageToken: \"nextPage\"\n });\n const myObjsResult = myObjs.data;\n\n * @returns a page of objects\n */\n <\n L extends PropertyKeys<Q> | (string & keyof RDPs),\n R extends boolean,\n const A extends Augments,\n S extends NullabilityAdherence = NullabilityAdherence.Default,\n T extends boolean = false,\n ORDER_BY_OPTIONS extends ObjectSetArgs.OrderByOptions<L> = {},\n >(\n args?: FetchPageArgs<Q, L, R, A, S, T, never, ORDER_BY_OPTIONS>,\n ): Promise<\n PageResult<\n MaybeScore<\n Osdk.Instance<\n Q,\n ExtractOptions<R, S, T>,\n NoInfer<SubSelectKeys<Q, NonNullable<typeof args>>>,\n SubSelectRDPs<RDPs, NonNullable<typeof args>>\n >,\n ORDER_BY_OPTIONS\n >\n >\n >;\n}\n\ninterface NearestNeighbors<Q extends ObjectOrInterfaceDefinition> {\n /**\n * Finds the nearest neighbors for a given text or vector within the object set.\n *\n * @param query - Queries support either a vector matching the embedding model defined on the property, or text that is\n automatically embedded.\n * @param numNeighbors - The number of objects to return. If the number of documents in the objectType is less than the provided\n value, all objects will be returned. This value is limited to 1 &le; numNeighbors &ge; 500.\n * @param property - The property key with a defined embedding model to search over.\n *\n * @returns An object set containing the `numNeighbors` nearest neighbors. To return the objects ordered by relevance and each\n * objects associated score, specify \"relevance\" in the orderBy.\n */\n\n readonly nearestNeighbors: (\n query: string | number[],\n numNeighbors: number,\n property: PropertyKeys.Filtered<Q, \"vector\">,\n ) => this;\n}\n\ninterface FetchPageWithErrorsSignature<\n Q extends ObjectOrInterfaceDefinition,\n RDPs extends Record<string, SimplePropertyDef> = {},\n> {\n /**\n * Gets a page of objects of this type, with a result wrapper\n * @param args - Args to specify next page token and page size, if applicable\n * @example\n * const myObjs = await objectSet.fetchPage({\n $pageSize: 10,\n $nextPageToken: \"nextPage\"\n });\n\n if(isOk(myObjs)){\n const myObjsResult = myObjs.value.data;\n }\n * @returns a page of objects, wrapped in a result wrapper\n */\n <\n L extends PropertyKeys<Q> | (string & keyof RDPs),\n R extends boolean,\n const A extends Augments,\n S extends NullabilityAdherence = NullabilityAdherence.Default,\n T extends boolean = false,\n ORDER_BY_OPTIONS extends ObjectSetArgs.OrderByOptions<L> = {},\n >(\n args?: FetchPageArgs<Q, L, R, A, S, T, never, ORDER_BY_OPTIONS>,\n ): Promise<\n Result<\n PageResult<\n MaybeScore<\n Osdk.Instance<\n Q,\n ExtractOptions<R, S, T>,\n NoInfer<SubSelectKeys<Q, NonNullable<typeof args>>>,\n SubSelectRDPs<RDPs, NonNullable<typeof args>>\n >,\n ORDER_BY_OPTIONS\n >\n >\n >\n >;\n}\n\n// TODO MOVE THIS\ninterface Where<\n Q extends ObjectOrInterfaceDefinition,\n RDPs extends Record<string, SimplePropertyDef> = {},\n> {\n /**\n * Allows you to filter an object set with a given clause\n * @param clause - Takes a filter clause\n * @example\n * await client(Office).where({\n meetingRooms: { $contains: \"Grand Central\" },\n meetingRoomCapacities: { $contains: 30 },\n});\n* @returns an objectSet\n */\n readonly where: (\n clause: WhereClause<MergeObjectSet<Q, RDPs>>,\n ) => this;\n}\n\ninterface AsyncIterSignature<\n Q extends ObjectOrInterfaceDefinition,\n RDPs extends Record<string, SimplePropertyDef> = {},\n ORDER_BY_OPTIONS extends ObjectSetArgs.OrderByOptions<PropertyKeys<Q>> = {},\n> {\n /**\n * Returns an async iterator to load all objects of this type\n * @example\n * for await (const obj of myObjectSet.asyncIter()){\n * // Handle obj\n * }\n * @returns an async iterator to load all objects\n */\n <X extends ValidAsyncIterArgs<Q, RDPs> = never>(\n args?: X,\n ): AsyncIterableIterator<\n Osdk.Instance<\n Q,\n ExtractOptions2<X>,\n SubSelectKeys<Q, X>,\n SubSelectRDPs<RDPs, X>\n >\n >;\n\n /**\n * Returns an async iterator to load all objects of this type\n * @example\n * for await (const obj of myObjectSet.asyncIter()){\n * // Handle obj\n * }\n * @returns an async iterator to load all objects\n */\n <\n L extends PropertyKeys<Q> | (string & keyof RDPs),\n R extends boolean,\n const A extends Augments,\n S extends NullabilityAdherence = NullabilityAdherence.Default,\n T extends boolean = false,\n ORDER_BY_OPTIONS extends ObjectSetArgs.OrderByOptions<PropertyKeys<Q>> = {},\n >(\n args?: AsyncIterArgs<Q, L, R, A, S, T, never, ORDER_BY_OPTIONS>,\n ): AsyncIterableIterator<\n MaybeScore<\n Osdk.Instance<\n Q,\n ExtractOptions<R, S, T>,\n NoInfer<SubSelectKeys<Q, NonNullable<typeof args>>>,\n SubSelectRDPs<RDPs, NonNullable<typeof args>>\n >,\n ORDER_BY_OPTIONS\n >\n >;\n}\n\ninterface AsyncIter<\n Q extends ObjectOrInterfaceDefinition,\n RDPs extends Record<string, SimplePropertyDef> = {},\n ORDER_BY_OPTIONS extends ObjectSetArgs.OrderByOptions<PropertyKeys<Q>> = {},\n> {\n asyncIter: AsyncIterSignature<Q, RDPs, ORDER_BY_OPTIONS>;\n}\n\ninterface WithProperties<\n Q extends ObjectOrInterfaceDefinition = any,\n RDPs extends Record<string, SimplePropertyDef> = {},\n> {\n readonly withProperties: <\n NEW extends Record<string, SimplePropertyDef>,\n >(\n clause: { [K in keyof NEW]: DerivedProperty.Creator<Q, NEW[K]> },\n ) => ObjectSet<\n Q,\n {\n [NN in keyof NEW | keyof RDPs]: NN extends keyof NEW ? NEW[NN]\n : NN extends keyof RDPs ? RDPs[NN]\n : never;\n }\n >;\n}\n\nexport interface ObjectSet<\n Q extends ObjectOrInterfaceDefinition = any,\n // Generated code has what is basically ObjectSet<Q> set in here\n // but we never used it so I am repurposing it for RDP\n UNUSED_OR_RDP extends\n | BaseObjectSet<Q>\n | Record<string, SimplePropertyDef> = never,\n> extends\n ObjectSetCleanedTypes<\n Q,\n ExtractRdp<UNUSED_OR_RDP>,\n MergeObjectSet<Q, ExtractRdp<UNUSED_OR_RDP>>\n >\n{\n}\n\n// Q is the merged type here! Not renaming to keep diff small. Rename in follow up\ninterface Aggregate<\n Q extends ObjectOrInterfaceDefinition,\n> {\n /**\n * Aggregate on a field in an object type\n * @param req - an aggregation request where you can select fields and choose how to aggregate, e.g., max, min, avg, and also choose\n * whether or not you order your results. You can also specify a groupBy field to group your aggregations\n * @example\n * const testAggregateCountWithGroups = await client(BoundariesUsState)\n .aggregate({\n $select: {\n $count: \"unordered\",\n \"latitude:max\": \"unordered\",\n \"latitude:min\": \"unordered\",\n \"latitude:avg\": \"unordered\",\n },\n $groupBy: {\n usState: \"exact\",\n longitude: {\n $fixedWidth: 10,\n },\n },\n });\n\n * @returns aggregation results, sorted in the groups based on the groupBy clause (if applicable)\n */\n readonly aggregate: <AO extends AggregateOpts<Q>>(\n req: AggregateOptsThatErrorsAndDisallowsOrderingWithMultipleGroupBy<Q, AO>,\n ) => Promise<AggregationsResults<Q, AO>>;\n}\n\n// Q is the merged type here! Not renaming to keep diff small. Rename in follow up\ninterface SetArithmetic<\n Q extends ObjectOrInterfaceDefinition,\n> {\n /**\n * Unions object sets together\n * @param objectSets - objectSets you want to union with\n * @example\n * const unionObjectSet = complexFilteredEmployeeObjectSet.union(\n simpleFilteredEmployeeObjectSet,\n );\n * @returns the unioned object set\n */\n readonly union: (\n ...objectSets: ReadonlyArray<CompileTimeMetadata<Q>[\"objectSet\"]>\n ) => this;\n\n /**\n * Computes the intersection of object sets\n * @param objectSets - objectSets you want to intersect with\n * @example\n * const intersectedObjectSet = complexFilteredEmployeeObjectSet.intersect(\n simpleFilteredEmployeeObjectSet,\n );\n * @returns the intersected object set\n */\n readonly intersect: (\n ...objectSets: ReadonlyArray<CompileTimeMetadata<Q>[\"objectSet\"]>\n ) => this;\n\n /**\n * Computes the subtraction of object sets\n * @param objectSets - objectSets you want to subtract from\n * @example\n * const subtractObjectSet = complexFilteredEmployeeObjectSet.subtract(\n simpleFilteredEmployeeObjectSet,\n );\n * @returns the subtract object set\n */\n readonly subtract: (\n ...objectSets: ReadonlyArray<CompileTimeMetadata<Q>[\"objectSet\"]>\n ) => this;\n}\n\n// Q is the merged type here! Not renaming to keep diff small. Rename in follow up\ninterface PivotTo<\n Q extends ObjectOrInterfaceDefinition,\n> {\n /**\n * Pivots the object set over to all its linked objects of the specified type\n * @param type - The linked object type you want to pivot to\n * @returns an object set of the specified linked type\n */\n readonly pivotTo: <L extends LinkNames<Q>>(\n type: L,\n ) => ObjectSet<LinkedType<Q, L>>;\n}\n\ninterface FetchOneSignature<\n Q extends ObjectTypeDefinition,\n RDPs extends Record<string, SimplePropertyDef>,\n> {\n /**\n * Fetches one object with the specified primary key, without a result wrapper\n */\n <\n const L extends PropertyKeys<Q> | (string & keyof RDPs),\n const R extends boolean,\n const S extends false | \"throw\" = NullabilityAdherence.Default,\n >(\n primaryKey: PrimaryKeyType<Q>,\n options?: SelectArg<Q, L, R, S>,\n ): Promise<\n Osdk.Instance<\n Q,\n ExtractOptions<R, S>,\n NoInfer<SubSelectKeys<Q, { $select: Array<L> }>>,\n SubSelectRDPs<RDPs, { $select: Array<L> }>\n >\n >;\n}\n\ninterface FetchOneWithErrorsSignature<\n Q extends ObjectTypeDefinition,\n RDPs extends Record<string, SimplePropertyDef>,\n> {\n /**\n * Fetches one object with the specified primary key, with a result wrapper\n */\n <\n const L extends PropertyKeys<Q> | (string & keyof RDPs),\n const R extends boolean,\n const S extends false | \"throw\" = NullabilityAdherence.Default,\n >(\n primaryKey: PrimaryKeyType<Q>,\n options?: SelectArg<Q, L, R, S>,\n ): Promise<\n Result<\n Osdk.Instance<\n Q,\n ExtractOptions<R, S>,\n NoInfer<SubSelectKeys<Q, { $select: Array<L> }>>,\n SubSelectRDPs<RDPs, { $select: Array<L> }>\n >\n >\n >;\n}\n\ninterface FetchOne<\n Q extends ObjectOrInterfaceDefinition,\n RDPs extends Record<string, SimplePropertyDef>,\n> {\n fetchOne: Q extends ObjectTypeDefinition ? FetchOneSignature<Q, RDPs> : never;\n fetchOneWithErrors: Q extends ObjectTypeDefinition\n ? FetchOneWithErrorsSignature<Q, RDPs>\n : never;\n}\n\n// Q is the merged type here! Not renaming to keep diff small. Rename in follow up\ninterface Subscribe<\n Q extends ObjectOrInterfaceDefinition,\n> {\n /**\n * Request updates when the objects in an object set are added, updated, or removed.\n * @param listener - The handlers to be executed during the lifecycle of the subscription.\n * @param opts - Options to modify what properties are returned on subscription updates.\n * @returns an object containing a function to unsubscribe.\n */\n readonly subscribe: <\n const P extends PropertyKeys<Q>,\n const R extends boolean = false,\n >(\n listener: ObjectSetSubscription.Listener<Q, P, R>,\n opts?: ObjectSetSubscription.Options<Q, P, R>,\n ) => { unsubscribe: () => void };\n}\n\ninterface NarrowToType<Q extends ObjectOrInterfaceDefinition> {\n /**\n * Casts the object set to the specified object type or interface type.\n * Any downstream object set operations (e.g. where, fetchPage, aggregate) will be\n * performed on the specified type. Objects from the original object set that do not\n * implement the specified interface or match the specified object set will be filtered out.\n * @param type - The object type you want to cast to.\n * @returns an object set of the specified type.\n */\n readonly narrowToType: <\n CONVERT_TO extends RestrictToImplementingObjectTypes<Q>,\n >(\n type: CONVERT_TO,\n ) => ObjectSet<CONVERT_TO>;\n}\n\ntype RestrictToImplementingObjectTypes<T extends ObjectOrInterfaceDefinition> =\n T extends ObjectTypeDefinition ? ExtractImplementedInterfaces<T>\n : T extends InterfaceDefinition ? ExtractImplementingTypes<T>\n : never;\n\ntype ExtractImplementedInterfaces<T extends ObjectTypeDefinition> =\n CompileTimeMetadata<T> extends { implements: ReadonlyArray<infer API_NAME> }\n ? API_NAME extends string ? InterfaceDefinition & { apiName: API_NAME }\n : never\n : never;\n\ntype ExtractImplementingTypes<T extends InterfaceDefinition> =\n CompileTimeMetadata<T> extends\n { implementedBy: ReadonlyArray<infer API_NAME extends string> }\n ? (ObjectTypeDefinition & { apiName: API_NAME }) | InterfaceDefinition\n : InterfaceDefinition;\n\ninterface AsyncIterLinks<Q extends ObjectOrInterfaceDefinition> {\n /**\n * Batch load links on an object set. This is an experimental method that may change while in beta.\n * Use this method in conjunction with `.asyncIter()` and `.pivotTo(...).asyncIter()` to build an\n * object graph in memory.\n *\n * Please keep these limitations in mind:\n * - Links returned may be stale. For example, primary keys returned by this endpoint may not exist anymore.\n * - The backend API fetches pages of *n* objects at a time. If, for any page of *n* objects, there are more\n * than 100,000 links present, results are limited to 100,000 links and should be considered partial.\n * - This method does not support OSv1 links and will throw an exception if links provided are backed by OSv1.\n * - This method currently does not support interface links, but support will be added in the near future.\n */\n readonly experimental_asyncIterLinks: <\n LINK_TYPE_API_NAME extends LinkTypeApiNamesFor<Q>,\n >(\n links: LINK_TYPE_API_NAME[],\n ) => AsyncIterableIterator<\n MinimalDirectedObjectLinkInstance<Q, LINK_TYPE_API_NAME>\n >;\n}\n\ninterface ObjectSetCleanedTypes<\n Q extends ObjectOrInterfaceDefinition,\n D extends Record<string, SimplePropertyDef>,\n MERGED extends ObjectOrInterfaceDefinition & Q,\n ORDER_BY_OPTIONS extends ObjectSetArgs.OrderByOptions<PropertyKeys<Q>> = {},\n> extends\n MinimalObjectSet<Q, D, ORDER_BY_OPTIONS>,\n WithProperties<Q, D>,\n Aggregate<MERGED>,\n SetArithmetic<MERGED>,\n PivotTo<Q>,\n FetchOne<Q, D>,\n Subscribe<MERGED>,\n NearestNeighbors<Q>,\n NarrowToType<Q>\n{\n}\n"],"mappings":"","ignoreList":[]}
1
+ {"version":3,"file":"ObjectSet.js","names":[],"sources":["ObjectSet.ts"],"sourcesContent":["/*\n * Copyright 2023 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport type { AggregateOpts } from \"../aggregate/AggregateOpts.js\";\nimport type { AggregateOptsThatErrorsAndDisallowsOrderingWithMultipleGroupBy } from \"../aggregate/AggregateOptsThatErrors.js\";\nimport type { AggregationsResults } from \"../aggregate/AggregationsResults.js\";\nimport type { WhereClause } from \"../aggregate/WhereClause.js\";\nimport type { DerivedProperty } from \"../derivedProperties/DerivedProperty.js\";\nimport type {\n AsyncIterArgs,\n Augments,\n FetchPageArgs,\n NullabilityAdherence,\n ObjectSetArgs,\n SelectArg,\n} from \"../object/FetchPageArgs.js\";\nimport type { Result } from \"../object/Result.js\";\nimport type { InterfaceDefinition } from \"../ontology/InterfaceDefinition.js\";\nimport type {\n DerivedObjectOrInterfaceDefinition,\n ObjectOrInterfaceDefinition,\n PropertyKeys,\n} from \"../ontology/ObjectOrInterface.js\";\nimport type {\n CompileTimeMetadata,\n ObjectTypeDefinition,\n} from \"../ontology/ObjectTypeDefinition.js\";\nimport type { SimplePropertyDef } from \"../ontology/SimplePropertyDef.js\";\nimport type { PrimaryKeyType } from \"../OsdkBase.js\";\nimport type {\n ExtractAllPropertiesOption,\n ExtractOptions,\n ExtractRidOption,\n MaybeScore,\n Osdk,\n} from \"../OsdkObjectFrom.js\";\nimport type { PageResult } from \"../PageResult.js\";\nimport type { LinkedType, LinkNames } from \"../util/LinkUtils.js\";\nimport type { BaseObjectSet } from \"./BaseObjectSet.js\";\nimport type {\n LinkTypeApiNamesFor,\n MinimalDirectedObjectLinkInstance,\n} from \"./ObjectSetLinks.js\";\nimport type { ObjectSetSubscription } from \"./ObjectSetListener.js\";\n\ntype MergeObjectSet<\n Q extends ObjectOrInterfaceDefinition,\n D extends Record<string, SimplePropertyDef> = {},\n> = DerivedObjectOrInterfaceDefinition.WithDerivedProperties<Q, D>;\n\ntype ExtractRdp<\n D extends\n | BaseObjectSet<any>\n | Record<string, SimplePropertyDef>,\n> = [D] extends [never] ? {}\n : D extends BaseObjectSet<any> ? {}\n : D extends Record<string, SimplePropertyDef> ? D\n : {};\n\ntype MaybeSimplifyPropertyKeys<\n Q extends ObjectOrInterfaceDefinition,\n L extends PropertyKeys<Q>,\n> = PropertyKeys<Q> extends L ? PropertyKeys<Q> : L & PropertyKeys<Q>;\n\ntype SubSelectKeysHelper<\n Q extends ObjectOrInterfaceDefinition,\n L extends string,\n> = [L] extends [never] ? PropertyKeys<Q>\n : PropertyKeys<Q> extends L ? PropertyKeys<Q>\n : L & PropertyKeys<Q>;\n\ntype SubSelectKeys<\n Q extends ObjectOrInterfaceDefinition,\n X extends SelectArg<Q, PropertyKeys<Q>, any, any, any, any> = never,\n> = SubSelectKeysHelper<Q, Extract$Select<X>>;\n\ntype NOOP<T> = T extends (...args: any[]) => any ? T\n : T extends abstract new(...args: any[]) => any ? T\n : { [K in keyof T]: T[K] };\n\ntype SubSelectRDPsHelper<\n X extends ValidFetchPageArgs<any, any, any> | ValidAsyncIterArgs<any, any>,\n DEFAULT extends string,\n> = [X] extends [never] ? DEFAULT\n : (X[\"$select\"] & string[])[number] & DEFAULT;\n\ntype SubSelectRDPs<\n RDPs extends Record<string, SimplePropertyDef>,\n X extends ValidFetchPageArgs<any, RDPs, any> | ValidAsyncIterArgs<any, RDPs>,\n> = [RDPs] extends [never] ? never\n : NOOP<{ [K in SubSelectRDPsHelper<X, string & keyof RDPs>]: RDPs[K] }>;\n\nexport interface MinimalObjectSet<\n Q extends ObjectOrInterfaceDefinition,\n RDPs extends Record<string, SimplePropertyDef> = {},\n ORDER_BY_OPTIONS extends ObjectSetArgs.OrderByOptions<PropertyKeys<Q>> = {},\n> extends\n BaseObjectSet<Q>,\n FetchPage<Q, RDPs>,\n AsyncIter<Q, RDPs, ORDER_BY_OPTIONS>,\n Where<Q, RDPs>,\n AsyncIterLinks<Q>\n{\n}\n\nexport type ExtractOptions2<\n X extends FetchPageArgs<any, any, any, any, any, any, any>,\n> = [X] extends [never] ? never\n :\n | ExtractRidOption<X[\"$includeRid\"] extends true ? true : false>\n | ExtractAllPropertiesOption<\n X[\"$includeAllBaseObjectProperties\"] extends true ? true : false\n >;\n\ntype Extract$Select<X extends FetchPageArgs<any, any>> = NonNullable<\n X[\"$select\"]\n>[number];\n\ninterface FetchPage<\n Q extends ObjectOrInterfaceDefinition,\n RDPs extends Record<string, SimplePropertyDef> = {},\n> {\n readonly fetchPage: FetchPageSignature<Q, RDPs>;\n readonly fetchPageWithErrors: FetchPageWithErrorsSignature<Q, RDPs>;\n}\n\ntype ValidFetchPageArgs<\n Q extends ObjectOrInterfaceDefinition,\n RDPs extends Record<string, SimplePropertyDef>,\n ORDER_BY_OPTIONS extends ObjectSetArgs.OrderByOptions<PropertyKeys<Q>>,\n> = ObjectSetArgs.FetchPage<\n Q,\n PropertyKeys<Q>,\n boolean,\n string & keyof RDPs,\n ORDER_BY_OPTIONS\n>;\n\ntype ValidAsyncIterArgs<\n Q extends ObjectOrInterfaceDefinition,\n RDPs extends Record<string, SimplePropertyDef>,\n> =\n | ObjectSetArgs.AsyncIter<\n Q,\n PropertyKeys<Q>,\n false,\n string & keyof RDPs\n >\n | AsyncIterArgs<\n Q,\n never,\n any,\n any,\n any,\n true,\n string & keyof RDPs\n >;\n\ninterface FetchPageSignature<\n Q extends ObjectOrInterfaceDefinition,\n RDPs extends Record<string, SimplePropertyDef> = {},\n> {\n /**\n * Gets a page of objects of this type, with a result wrapper\n * @param args - Args to specify next page token and page size, if applicable\n * @example\n * const myObjs = await objectSet.fetchPage({\n $pageSize: 10,\n $nextPageToken: \"nextPage\"\n });\n const myObjsResult = myObjs.data;\n\n * @returns a page of objects\n */\n <\n L extends PropertyKeys<Q> | (string & keyof RDPs),\n R extends boolean,\n const A extends Augments,\n S extends NullabilityAdherence = NullabilityAdherence.Default,\n T extends boolean = false,\n ORDER_BY_OPTIONS extends ObjectSetArgs.OrderByOptions<L> = {},\n PROPERTY_SECURITIES extends boolean = false,\n >(\n args?: FetchPageArgs<\n Q,\n L,\n R,\n A,\n S,\n T,\n never,\n ORDER_BY_OPTIONS,\n PROPERTY_SECURITIES\n >,\n ): Promise<\n PageResult<\n MaybeScore<\n Osdk.Instance<\n Q,\n ExtractOptions<R, S, T, PROPERTY_SECURITIES>,\n NoInfer<SubSelectKeys<Q, NonNullable<typeof args>>>,\n SubSelectRDPs<RDPs, NonNullable<typeof args>>\n >,\n ORDER_BY_OPTIONS\n >\n >\n >;\n}\n\ninterface NearestNeighbors<Q extends ObjectOrInterfaceDefinition> {\n /**\n * Finds the nearest neighbors for a given text or vector within the object set.\n *\n * @param query - Queries support either a vector matching the embedding model defined on the property, or text that is\n automatically embedded.\n * @param numNeighbors - The number of objects to return. If the number of documents in the objectType is less than the provided\n value, all objects will be returned. This value is limited to 1 &le; numNeighbors &ge; 500.\n * @param property - The property key with a defined embedding model to search over.\n *\n * @returns An object set containing the `numNeighbors` nearest neighbors. To return the objects ordered by relevance and each\n * objects associated score, specify \"relevance\" in the orderBy.\n */\n\n readonly nearestNeighbors: (\n query: string | number[],\n numNeighbors: number,\n property: PropertyKeys.Filtered<Q, \"vector\">,\n ) => this;\n}\n\ninterface FetchPageWithErrorsSignature<\n Q extends ObjectOrInterfaceDefinition,\n RDPs extends Record<string, SimplePropertyDef> = {},\n PROPERTY_SECURITIES extends boolean = false,\n> {\n /**\n * Gets a page of objects of this type, with a result wrapper\n * @param args - Args to specify next page token and page size, if applicable\n * @example\n * const myObjs = await objectSet.fetchPage({\n $pageSize: 10,\n $nextPageToken: \"nextPage\"\n });\n\n if(isOk(myObjs)){\n const myObjsResult = myObjs.value.data;\n }\n * @returns a page of objects, wrapped in a result wrapper\n */\n <\n L extends PropertyKeys<Q> | (string & keyof RDPs),\n R extends boolean,\n const A extends Augments,\n S extends NullabilityAdherence = NullabilityAdherence.Default,\n T extends boolean = false,\n ORDER_BY_OPTIONS extends ObjectSetArgs.OrderByOptions<L> = {},\n >(\n args?: FetchPageArgs<\n Q,\n L,\n R,\n A,\n S,\n T,\n never,\n ORDER_BY_OPTIONS,\n PROPERTY_SECURITIES\n >,\n ): Promise<\n Result<\n PageResult<\n MaybeScore<\n Osdk.Instance<\n Q,\n ExtractOptions<R, S, T, PROPERTY_SECURITIES>,\n NoInfer<SubSelectKeys<Q, NonNullable<typeof args>>>,\n SubSelectRDPs<RDPs, NonNullable<typeof args>>\n >,\n ORDER_BY_OPTIONS\n >\n >\n >\n >;\n}\n\n// TODO MOVE THIS\ninterface Where<\n Q extends ObjectOrInterfaceDefinition,\n RDPs extends Record<string, SimplePropertyDef> = {},\n> {\n /**\n * Allows you to filter an object set with a given clause\n * @param clause - Takes a filter clause\n * @example\n * await client(Office).where({\n meetingRooms: { $contains: \"Grand Central\" },\n meetingRoomCapacities: { $contains: 30 },\n});\n* @returns an objectSet\n */\n readonly where: (\n clause: WhereClause<MergeObjectSet<Q, RDPs>>,\n ) => this;\n}\n\ninterface AsyncIterSignature<\n Q extends ObjectOrInterfaceDefinition,\n RDPs extends Record<string, SimplePropertyDef> = {},\n ORDER_BY_OPTIONS extends ObjectSetArgs.OrderByOptions<PropertyKeys<Q>> = {},\n PROPERTY_SECURITIES extends boolean = false,\n> {\n /**\n * Returns an async iterator to load all objects of this type\n * @example\n * for await (const obj of myObjectSet.asyncIter()){\n * // Handle obj\n * }\n * @returns an async iterator to load all objects\n */\n <X extends ValidAsyncIterArgs<Q, RDPs> = never>(\n args?: X,\n ): AsyncIterableIterator<\n Osdk.Instance<\n Q,\n ExtractOptions2<X>,\n SubSelectKeys<Q, X>,\n SubSelectRDPs<RDPs, X>\n >\n >;\n\n /**\n * Returns an async iterator to load all objects of this type\n * @example\n * for await (const obj of myObjectSet.asyncIter()){\n * // Handle obj\n * }\n * @returns an async iterator to load all objects\n */\n <\n L extends PropertyKeys<Q> | (string & keyof RDPs),\n R extends boolean,\n const A extends Augments,\n S extends NullabilityAdherence = NullabilityAdherence.Default,\n T extends boolean = false,\n ORDER_BY_OPTIONS extends ObjectSetArgs.OrderByOptions<PropertyKeys<Q>> = {},\n >(\n args?: AsyncIterArgs<\n Q,\n L,\n R,\n A,\n S,\n T,\n never,\n ORDER_BY_OPTIONS,\n PROPERTY_SECURITIES\n >,\n ): AsyncIterableIterator<\n MaybeScore<\n Osdk.Instance<\n Q,\n ExtractOptions<R, S, T, PROPERTY_SECURITIES>,\n NoInfer<SubSelectKeys<Q, NonNullable<typeof args>>>,\n SubSelectRDPs<RDPs, NonNullable<typeof args>>\n >,\n ORDER_BY_OPTIONS\n >\n >;\n}\n\ninterface AsyncIter<\n Q extends ObjectOrInterfaceDefinition,\n RDPs extends Record<string, SimplePropertyDef> = {},\n ORDER_BY_OPTIONS extends ObjectSetArgs.OrderByOptions<PropertyKeys<Q>> = {},\n> {\n asyncIter: AsyncIterSignature<Q, RDPs, ORDER_BY_OPTIONS>;\n}\n\ninterface WithProperties<\n Q extends ObjectOrInterfaceDefinition = any,\n RDPs extends Record<string, SimplePropertyDef> = {},\n> {\n readonly withProperties: <\n NEW extends Record<string, SimplePropertyDef>,\n >(\n clause: { [K in keyof NEW]: DerivedProperty.Creator<Q, NEW[K]> },\n ) => ObjectSet<\n Q,\n {\n [NN in keyof NEW | keyof RDPs]: NN extends keyof NEW ? NEW[NN]\n : NN extends keyof RDPs ? RDPs[NN]\n : never;\n }\n >;\n}\n\nexport interface ObjectSet<\n Q extends ObjectOrInterfaceDefinition = any,\n // Generated code has what is basically ObjectSet<Q> set in here\n // but we never used it so I am repurposing it for RDP\n UNUSED_OR_RDP extends\n | BaseObjectSet<Q>\n | Record<string, SimplePropertyDef> = never,\n> extends\n ObjectSetCleanedTypes<\n Q,\n ExtractRdp<UNUSED_OR_RDP>,\n MergeObjectSet<Q, ExtractRdp<UNUSED_OR_RDP>>\n >\n{\n}\n\n// Q is the merged type here! Not renaming to keep diff small. Rename in follow up\ninterface Aggregate<\n Q extends ObjectOrInterfaceDefinition,\n> {\n /**\n * Aggregate on a field in an object type\n * @param req - an aggregation request where you can select fields and choose how to aggregate, e.g., max, min, avg, and also choose\n * whether or not you order your results. You can also specify a groupBy field to group your aggregations\n * @example\n * const testAggregateCountWithGroups = await client(BoundariesUsState)\n .aggregate({\n $select: {\n $count: \"unordered\",\n \"latitude:max\": \"unordered\",\n \"latitude:min\": \"unordered\",\n \"latitude:avg\": \"unordered\",\n },\n $groupBy: {\n usState: \"exact\",\n longitude: {\n $fixedWidth: 10,\n },\n },\n });\n\n * @returns aggregation results, sorted in the groups based on the groupBy clause (if applicable)\n */\n readonly aggregate: <AO extends AggregateOpts<Q>>(\n req: AggregateOptsThatErrorsAndDisallowsOrderingWithMultipleGroupBy<Q, AO>,\n ) => Promise<AggregationsResults<Q, AO>>;\n}\n\n// Q is the merged type here! Not renaming to keep diff small. Rename in follow up\ninterface SetArithmetic<\n Q extends ObjectOrInterfaceDefinition,\n> {\n /**\n * Unions object sets together\n * @param objectSets - objectSets you want to union with\n * @example\n * const unionObjectSet = complexFilteredEmployeeObjectSet.union(\n simpleFilteredEmployeeObjectSet,\n );\n * @returns the unioned object set\n */\n readonly union: (\n ...objectSets: ReadonlyArray<CompileTimeMetadata<Q>[\"objectSet\"]>\n ) => this;\n\n /**\n * Computes the intersection of object sets\n * @param objectSets - objectSets you want to intersect with\n * @example\n * const intersectedObjectSet = complexFilteredEmployeeObjectSet.intersect(\n simpleFilteredEmployeeObjectSet,\n );\n * @returns the intersected object set\n */\n readonly intersect: (\n ...objectSets: ReadonlyArray<CompileTimeMetadata<Q>[\"objectSet\"]>\n ) => this;\n\n /**\n * Computes the subtraction of object sets\n * @param objectSets - objectSets you want to subtract from\n * @example\n * const subtractObjectSet = complexFilteredEmployeeObjectSet.subtract(\n simpleFilteredEmployeeObjectSet,\n );\n * @returns the subtract object set\n */\n readonly subtract: (\n ...objectSets: ReadonlyArray<CompileTimeMetadata<Q>[\"objectSet\"]>\n ) => this;\n}\n\n// Q is the merged type here! Not renaming to keep diff small. Rename in follow up\ninterface PivotTo<\n Q extends ObjectOrInterfaceDefinition,\n> {\n /**\n * Pivots the object set over to all its linked objects of the specified type\n * @param type - The linked object type you want to pivot to\n * @returns an object set of the specified linked type\n */\n readonly pivotTo: <L extends LinkNames<Q>>(\n type: L,\n ) => ObjectSet<LinkedType<Q, L>>;\n}\n\ninterface FetchOneSignature<\n Q extends ObjectTypeDefinition,\n RDPs extends Record<string, SimplePropertyDef>,\n> {\n /**\n * Fetches one object with the specified primary key, without a result wrapper\n */\n <\n const L extends PropertyKeys<Q> | (string & keyof RDPs),\n const R extends boolean,\n const S extends false | \"throw\" = NullabilityAdherence.Default,\n PROPERTY_SECURITIES extends boolean = false,\n >(\n primaryKey: PrimaryKeyType<Q>,\n options?: SelectArg<Q, L, R, S, never, PROPERTY_SECURITIES>,\n ): Promise<\n Osdk.Instance<\n Q,\n ExtractOptions<R, S, false, PROPERTY_SECURITIES>,\n NoInfer<SubSelectKeys<Q, { $select: Array<L> }>>,\n SubSelectRDPs<RDPs, { $select: Array<L> }>\n >\n >;\n}\n\ninterface FetchOneWithErrorsSignature<\n Q extends ObjectTypeDefinition,\n RDPs extends Record<string, SimplePropertyDef>,\n> {\n /**\n * Fetches one object with the specified primary key, with a result wrapper\n */\n <\n const L extends PropertyKeys<Q> | (string & keyof RDPs),\n const R extends boolean,\n const S extends false | \"throw\" = NullabilityAdherence.Default,\n PROPERTY_SECURITIES extends boolean = false,\n >(\n primaryKey: PrimaryKeyType<Q>,\n options?: SelectArg<Q, L, R, S, never, PROPERTY_SECURITIES>,\n ): Promise<\n Result<\n Osdk.Instance<\n Q,\n ExtractOptions<R, S, false, PROPERTY_SECURITIES>,\n NoInfer<SubSelectKeys<Q, { $select: Array<L> }>>,\n SubSelectRDPs<RDPs, { $select: Array<L> }>\n >\n >\n >;\n}\n\ninterface FetchOne<\n Q extends ObjectOrInterfaceDefinition,\n RDPs extends Record<string, SimplePropertyDef>,\n> {\n fetchOne: Q extends ObjectTypeDefinition ? FetchOneSignature<Q, RDPs> : never;\n fetchOneWithErrors: Q extends ObjectTypeDefinition\n ? FetchOneWithErrorsSignature<Q, RDPs>\n : never;\n}\n\n// Q is the merged type here! Not renaming to keep diff small. Rename in follow up\ninterface Subscribe<\n Q extends ObjectOrInterfaceDefinition,\n> {\n /**\n * Request updates when the objects in an object set are added, updated, or removed.\n * @param listener - The handlers to be executed during the lifecycle of the subscription.\n * @param opts - Options to modify what properties are returned on subscription updates.\n * @returns an object containing a function to unsubscribe.\n */\n readonly subscribe: <\n const P extends PropertyKeys<Q>,\n const R extends boolean = false,\n >(\n listener: ObjectSetSubscription.Listener<Q, P, R>,\n opts?: ObjectSetSubscription.Options<Q, P, R>,\n ) => { unsubscribe: () => void };\n}\n\ninterface NarrowToType<Q extends ObjectOrInterfaceDefinition> {\n /**\n * Casts the object set to the specified object type or interface type.\n * Any downstream object set operations (e.g. where, fetchPage, aggregate) will be\n * performed on the specified type. Objects from the original object set that do not\n * implement the specified interface or match the specified object set will be filtered out.\n * @param type - The object type you want to cast to.\n * @returns an object set of the specified type.\n */\n readonly narrowToType: <\n CONVERT_TO extends RestrictToImplementingObjectTypes<Q>,\n >(\n type: CONVERT_TO,\n ) => ObjectSet<CONVERT_TO>;\n}\n\ntype RestrictToImplementingObjectTypes<T extends ObjectOrInterfaceDefinition> =\n T extends ObjectTypeDefinition ? ExtractImplementedInterfaces<T>\n : T extends InterfaceDefinition ? ExtractImplementingTypes<T>\n : never;\n\ntype ExtractImplementedInterfaces<T extends ObjectTypeDefinition> =\n CompileTimeMetadata<T> extends { implements: ReadonlyArray<infer API_NAME> }\n ? API_NAME extends string ? InterfaceDefinition & { apiName: API_NAME }\n : never\n : never;\n\ntype ExtractImplementingTypes<T extends InterfaceDefinition> =\n CompileTimeMetadata<T> extends\n { implementedBy: ReadonlyArray<infer API_NAME extends string> }\n ? (ObjectTypeDefinition & { apiName: API_NAME }) | InterfaceDefinition\n : InterfaceDefinition;\n\ninterface AsyncIterLinks<Q extends ObjectOrInterfaceDefinition> {\n /**\n * Batch load links on an object set. This is an experimental method that may change while in beta.\n * Use this method in conjunction with `.asyncIter()` and `.pivotTo(...).asyncIter()` to build an\n * object graph in memory.\n *\n * Please keep these limitations in mind:\n * - Links returned may be stale. For example, primary keys returned by this endpoint may not exist anymore.\n * - The backend API fetches pages of *n* objects at a time. If, for any page of *n* objects, there are more\n * than 100,000 links present, results are limited to 100,000 links and should be considered partial.\n * - This method does not support OSv1 links and will throw an exception if links provided are backed by OSv1.\n * - This method currently does not support interface links, but support will be added in the near future.\n */\n readonly experimental_asyncIterLinks: <\n LINK_TYPE_API_NAME extends LinkTypeApiNamesFor<Q>,\n >(\n links: LINK_TYPE_API_NAME[],\n ) => AsyncIterableIterator<\n MinimalDirectedObjectLinkInstance<Q, LINK_TYPE_API_NAME>\n >;\n}\n\ninterface ObjectSetCleanedTypes<\n Q extends ObjectOrInterfaceDefinition,\n D extends Record<string, SimplePropertyDef>,\n MERGED extends ObjectOrInterfaceDefinition & Q,\n ORDER_BY_OPTIONS extends ObjectSetArgs.OrderByOptions<PropertyKeys<Q>> = {},\n> extends\n MinimalObjectSet<Q, D, ORDER_BY_OPTIONS>,\n WithProperties<Q, D>,\n Aggregate<MERGED>,\n SetArithmetic<MERGED>,\n PivotTo<Q>,\n FetchOne<Q, D>,\n Subscribe<MERGED>,\n NearestNeighbors<Q>,\n NarrowToType<Q>\n{\n}\n"],"mappings":"","ignoreList":[]}
@@ -503,6 +503,17 @@ describe("ObjectSet", () => {
503
503
  }
504
504
  });
505
505
  });
506
+ it("allows adding literals via base.constant", () => {
507
+ fauxObjectSet.withProperties({
508
+ "myProp1": base => {
509
+ const plus = base.pivotTo("lead").selectProperty("employeeId").add(base.constant.double(1));
510
+ expectTypeOf(plus).toEqualTypeOf();
511
+ const intPlusIntReturnsInt = base.pivotTo("lead").selectProperty("employeeId").add(base.constant.integer(1));
512
+ expectTypeOf(intPlusIntReturnsInt).toEqualTypeOf();
513
+ return plus;
514
+ }
515
+ });
516
+ });
506
517
  it("allows correctly typed nested property definitions", () => {
507
518
  fauxObjectSet.withProperties({
508
519
  "myProp1": base => {
@@ -548,6 +559,17 @@ describe("ObjectSet", () => {
548
559
  }
549
560
  });
550
561
  });
562
+ it("allows adding literals via base.constant", () => {
563
+ fauxObjectSet.withProperties({
564
+ "myProp1": base => {
565
+ const dateAndDateReturnDate = base.pivotTo("lead").selectProperty("dateOfJoining").min(base.constant.datetime("2025-01-01T00:00:00Z"));
566
+ expectTypeOf(dateAndDateReturnDate).toEqualTypeOf();
567
+ const dateAndTimeReturnTime = base.pivotTo("lead").selectProperty("dateOfJoining").min(base.constant.timestamp("2025-01-01T00:00:00Z"));
568
+ expectTypeOf(dateAndTimeReturnTime).toEqualTypeOf();
569
+ return dateAndTimeReturnTime;
570
+ }
571
+ });
572
+ });
551
573
  it("allows correctly typed nested property definitions", () => {
552
574
  fauxObjectSet.withProperties({
553
575
  "myProp1": base => {
@@ -1 +1 @@
1
- {"version":3,"file":"ObjectSet.test.js","names":["describe","expectTypeOf","it","test","vi","EmployeeApiTest","FooInterfaceApiTest","asyncIterateLinkOnce","obj","$apiName","undefined","$primaryKey","Promise","resolve","source","target","linkTypeApiName","createMockObjectSet","fauxObject","fauxResults","fauxObjectSet","$link","peeps","$objectSetInternals","def","data","where","fn","withProperties","fetchPage","fetchPageWithErrors","value","fetchOne","asyncIter","aggregate","pivotTo","nearestNeighbors","experimental_asyncIterLinks","toEqualTypeOf","fetchPageResult","class","$includeAllBaseObjectProperties","asyncIterResult","$select","x","$includeRid","subselect","withA","base","selectProperty","withFamily","withMom","withParents","todo","withAggregations","whereResults","aggTestObjectSet","result","maxHasSameType","minHasSameType","approximateDistinctNumberNoUndefined","exactDistinctNumberNoUndefined","countNumberNoUndefined","sumNumber","avgNumber","branded","selectedInteger","add","subtract","multiply","divide","abs","negate","max","min","extractPart","maxAggregation","collectList","plus","intAndLong","intAndDouble","longAndDouble","longAndLong","intAndInt","intLongDoubleChain","shortAndIntReturnsInt","shortAndFloatReturnsDouble","nested","selectedDatetime","nearestNeighborsObjectSet","employees","vectorQuery","Array","from","length","$orderBy","nearestNeighborsObjectSetWithErrors","knn","not","toHaveProperty","objectSet","narrowToType","type","apiName","linkType","toBeString","toBeNumber"],"sources":["ObjectSet.test.ts"],"sourcesContent":["/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { describe, expectTypeOf, it, test, vi } from \"vitest\";\n\nimport type {\n DerivedProperty,\n NullabilityAdherence,\n ObjectIdentifiers,\n ObjectOrInterfaceDefinition,\n ObjectSet as $ObjectSet,\n Osdk,\n PageResult,\n PropertyKeys,\n} from \"../index.js\";\nimport type { DerivedObjectOrInterfaceDefinition } from \"../ontology/ObjectOrInterface.js\";\nimport { EmployeeApiTest } from \"../test/EmployeeApiTest.js\";\nimport { FooInterfaceApiTest } from \"../test/FooInterfaceApiTest.js\";\n\nasync function* asyncIterateLinkOnce() {\n const obj = { $apiName: undefined, $primaryKey: undefined };\n yield Promise.resolve({\n source: obj,\n target: obj,\n linkTypeApiName: undefined,\n });\n}\n\nexport function createMockObjectSet<\n Q extends ObjectOrInterfaceDefinition,\n>(): $ObjectSet<Q, never> {\n let fauxObject: Osdk.Instance<Q>,\n fauxResults: any,\n fauxObjectSet: $ObjectSet<Q>;\n\n // eslint-disable-next-line prefer-const\n fauxObject = {\n $link: {\n peeps: {\n $objectSetInternals: {\n def: {},\n },\n },\n },\n } as Osdk.Instance<Q>;\n\n fauxResults = {\n data: [fauxObject],\n };\n\n fauxObjectSet = {\n where: vi.fn(() => {\n return fauxObjectSet;\n }),\n withProperties: vi.fn(() => {\n return fauxObjectSet;\n }),\n fetchPage: vi.fn(() => Promise.resolve(fauxResults)),\n fetchPageWithErrors: vi.fn(() => Promise.resolve({ value: fauxResults })),\n fetchOne: vi.fn(() => fauxObject),\n asyncIter: vi.fn(() => {\n return {};\n }),\n aggregate: vi.fn(() => {\n return {};\n }),\n pivotTo: vi.fn(() => {\n return fauxObjectSet;\n }),\n nearestNeighbors: vi.fn(() => {\n return fauxObjectSet;\n }),\n experimental_asyncIterLinks: vi.fn(asyncIterateLinkOnce),\n } as any as $ObjectSet<Q>;\n\n return fauxObjectSet;\n}\n\ndescribe(\"ObjectSet\", () => {\n const fauxObjectSet = createMockObjectSet<EmployeeApiTest>();\n\n const interfaceObjectSet = createMockObjectSet<FooInterfaceApiTest>();\n\n describe(\"normal\", () => {\n test(\"select none\", async () => {\n const result = await fauxObjectSet.fetchPage();\n expectTypeOf<typeof result.data[0]>().toEqualTypeOf<\n Osdk.Instance<EmployeeApiTest, never, PropertyKeys<EmployeeApiTest>>\n >();\n\n // Do it again but be explicit about the params to be sure\n // we don't break them\n const result2 = await fauxObjectSet.fetchPage<\n PropertyKeys<EmployeeApiTest>,\n false,\n never,\n NullabilityAdherence.Default,\n false\n >();\n });\n\n test(\"select one\", async () => {\n const result = await fauxObjectSet.fetchPage({ \"$select\": [\"fullName\"] });\n expectTypeOf<typeof result.data[0]>().toEqualTypeOf<\n Osdk.Instance<EmployeeApiTest, never, \"fullName\">\n >();\n });\n });\n\n describe(\"includeAllBaseObjectProperties\", () => {\n it(\"has the right types if you pass true\", async () => {\n const fetchPageResult = await fauxObjectSet\n .where({ class: \"idk\" })\n .fetchPage({ $includeAllBaseObjectProperties: true });\n\n expectTypeOf(fetchPageResult).toEqualTypeOf<\n PageResult<\n Osdk.Instance<EmployeeApiTest, \"$allBaseProperties\">\n >\n >();\n\n const asyncIterResult = fauxObjectSet\n .where({ class: \"idk\" })\n .asyncIter({ $includeAllBaseObjectProperties: true });\n\n expectTypeOf(asyncIterResult).toEqualTypeOf<\n AsyncIterableIterator<\n Osdk.Instance<EmployeeApiTest, \"$allBaseProperties\">\n >\n >();\n });\n\n it(\"does not let you pass partial $select and true\", async () => {\n const fetchPageResult = await fauxObjectSet\n .where({ class: \"idk\" })\n .fetchPage({\n // @ts-expect-error\n $includeAllBaseObjectProperties: true,\n $select: [\"attachment\"],\n });\n\n const asyncIterResult = fauxObjectSet\n .where({ class: \"idk\" })\n .asyncIter({\n // @ts-expect-error\n $includeAllBaseObjectProperties: true,\n $select: [\"attachment\"],\n });\n });\n\n it(\"does let you pass full select options and false\", async () => {\n const fetchPageResult = await fauxObjectSet\n .where({ class: \"idk\" })\n .fetchPage({\n $includeAllBaseObjectProperties: true,\n\n // this select list is intended to represent all properties on `EmployeeApiTest`,\n // so if you get an error here later and you added properties to that object,\n // be sure to add them here too.\n $select: [\n \"attachment\",\n \"class\",\n \"employeeId\",\n \"fullName\",\n \"geopoint\",\n \"geotimeSeriesReference\",\n \"isActive\",\n \"mediaReference\",\n \"timeseries\",\n \"dateOfJoining\",\n \"hourlyRate\",\n \"yearsOfExperience\",\n \"rank\",\n \"performanceScore\",\n \"mediaReference\",\n \"lastUpdated\",\n \"skillSet\",\n \"skillSetEmbedding\",\n ],\n });\n\n const asyncIterResult = await fauxObjectSet\n .where({ class: \"idk\" })\n .fetchPage({\n $includeAllBaseObjectProperties: true,\n\n // this select list is intended to represent all properties on `EmployeeApiTest`,\n // so if you get an error here later and you added properties to that object,\n // be sure to add them here too.\n $select: [\n \"attachment\",\n \"class\",\n \"employeeId\",\n \"fullName\",\n \"geopoint\",\n \"geotimeSeriesReference\",\n \"isActive\",\n \"mediaReference\",\n \"timeseries\",\n \"dateOfJoining\",\n \"hourlyRate\",\n \"yearsOfExperience\",\n \"rank\",\n \"performanceScore\",\n \"mediaReference\",\n \"lastUpdated\",\n \"skillSet\",\n \"skillSetEmbedding\",\n ],\n });\n });\n });\n\n test(\"includeRid\", async () => {\n const x = await fauxObjectSet\n .where({ class: \"idk\" })\n .fetchPage({ $includeRid: true });\n\n expectTypeOf(x).toEqualTypeOf<\n PageResult<\n Osdk.Instance<EmployeeApiTest, \"$rid\">\n >\n >();\n });\n\n test(\"pivotTo\", async () => {\n const noArgs = await fauxObjectSet.pivotTo(\"peeps\").fetchPage({});\n const subselect = await fauxObjectSet.pivotTo(\"peeps\").fetchPage({\n $select: [\"employeeId\", \"class\"],\n });\n\n expectTypeOf(subselect).toEqualTypeOf<\n PageResult<\n Osdk.Instance<EmployeeApiTest, never, \"employeeId\" | \"class\">\n >\n >();\n });\n\n describe(\".withProperties\", () => {\n test(\"single property\", async () => {\n const withA = fauxObjectSet.withProperties({\n \"a\": (base) => {\n return base.pivotTo(\"lead\").aggregate(\"class:exactDistinct\");\n },\n });\n\n const isWithAAssignable: $ObjectSet<EmployeeApiTest, {}> = withA;\n\n expectTypeOf(withA).toEqualTypeOf<\n $ObjectSet<EmployeeApiTest, {\n a: \"integer\";\n }>\n >();\n\n const withAResults = await withA.fetchPage();\n\n expectTypeOf<typeof withAResults[\"data\"][0]>().toEqualTypeOf<\n Osdk.Instance<EmployeeApiTest, never, PropertyKeys<EmployeeApiTest>, {\n a: \"integer\";\n }>\n >();\n\n expectTypeOf<typeof withAResults[\"data\"][0][\"a\"]>()\n .toEqualTypeOf<number>();\n });\n\n it(\"can be sub-selected\", () => {\n const objectWithUndefinedRdp = fauxObjectSet.withProperties({\n \"derivedPropertyName\": (base) =>\n base.pivotTo(\"lead\").selectProperty(\"employeeId\"),\n }).fetchOne(3, {\n $select: [\"derivedPropertyName\"],\n });\n });\n\n test(\"multiple properties\", async () => {\n const withFamily = fauxObjectSet.withProperties({\n \"mom\": (base) => base.pivotTo(\"lead\").aggregate(\"$count\"),\n \"dad\": (base) => base.pivotTo(\"lead\").selectProperty(\"fullName\"),\n \"sister\": (base) => base.pivotTo(\"lead\").aggregate(\"class:collectList\"),\n });\n expectTypeOf(withFamily).toEqualTypeOf<\n $ObjectSet<EmployeeApiTest, {\n mom: \"integer\";\n dad: \"string\" | undefined;\n sister: \"string\"[] | undefined;\n }>\n >();\n\n const withFamilyResults = await withFamily.fetchPage();\n\n expectTypeOf<typeof withFamilyResults[\"data\"][0]>().toEqualTypeOf<\n Osdk.Instance<EmployeeApiTest, never, PropertyKeys<EmployeeApiTest>, {\n mom: \"integer\";\n dad: \"string\" | undefined;\n sister: \"string\"[] | undefined;\n }>\n >();\n\n expectTypeOf<typeof withFamilyResults[\"data\"][0][\"mom\"]>()\n .toEqualTypeOf<number>();\n expectTypeOf<typeof withFamilyResults[\"data\"][0][\"dad\"]>()\n .toEqualTypeOf<string | undefined>();\n expectTypeOf<typeof withFamilyResults[\"data\"][0][\"sister\"]>()\n .toEqualTypeOf<string[] | undefined>();\n });\n\n describe(\"called in succession\", () => {\n test(\"independently\", () => {\n const withMom = fauxObjectSet.withProperties({\n \"mom\": (base) => base.pivotTo(\"lead\").aggregate(\"$count\"),\n });\n\n const withParents = withMom.withProperties({\n \"dad\": (base) => base.pivotTo(\"lead\").selectProperty(\"fullName\"),\n });\n\n expectTypeOf(withParents).toEqualTypeOf<\n $ObjectSet<EmployeeApiTest, {\n mom: \"integer\";\n dad: \"string\" | undefined;\n }>\n >();\n });\n\n test.todo(\"with calculated properties\");\n });\n\n describe(\"nullability\", () => {\n it(\"count, exactDistinct, and approximateDistinct aren't nullable\", async () => {\n const withFamily = fauxObjectSet.withProperties({\n \"mom\": (base) => base.pivotTo(\"lead\").aggregate(\"$count\"),\n \"dad\": (base) =>\n base.pivotTo(\"lead\").aggregate(\"class:exactDistinct\"),\n \"sis\": (base) =>\n base.pivotTo(\"lead\").aggregate(\"class:approximateDistinct\"),\n });\n\n const withFamilyResults = await withFamily.fetchPage();\n\n expectTypeOf<typeof withFamilyResults[\"data\"][0]>().toEqualTypeOf<\n Osdk.Instance<EmployeeApiTest, never, PropertyKeys<EmployeeApiTest>, {\n mom: \"integer\";\n dad: \"integer\";\n sis: \"integer\";\n }>\n >();\n });\n\n it(\n \"collectSet, collectList, selectProperty, and numeric aggregations are nullable\",\n async () => {\n const withAggregations = fauxObjectSet.withProperties({\n \"collectSet\": (base) =>\n base.pivotTo(\"lead\").aggregate(\"class:collectSet\"),\n \"select\": (base) => base.pivotTo(\"lead\").selectProperty(\"fullName\"),\n \"collectList\": (base) =>\n base.pivotTo(\"lead\").aggregate(\"class:collectList\"),\n \"min\": (base) => base.pivotTo(\"lead\").aggregate(\"employeeId:max\"),\n \"max\": (base) => base.pivotTo(\"lead\").aggregate(\"employeeId:min\"),\n \"sum\": (base) => base.pivotTo(\"lead\").aggregate(\"employeeId:sum\"),\n \"avg\": (base) => base.pivotTo(\"lead\").aggregate(\"employeeId:avg\"),\n \"approximatePercentile\": (base) =>\n base.pivotTo(\"lead\").aggregate(\n \"employeeId:approximatePercentile\",\n ),\n });\n\n const withAggregationResults = await withAggregations.fetchPage();\n\n expectTypeOf<typeof withAggregationResults[\"data\"][0]>()\n .toEqualTypeOf<\n Osdk.Instance<\n EmployeeApiTest,\n never,\n PropertyKeys<EmployeeApiTest>,\n {\n collectSet: \"string\"[] | undefined;\n select: \"string\" | undefined;\n collectList: \"string\"[] | undefined;\n min: \"double\" | undefined;\n max: \"double\" | undefined;\n sum: \"double\" | undefined;\n avg: \"double\" | undefined;\n approximatePercentile: \"double\" | undefined;\n }\n >\n >();\n },\n );\n });\n\n describe(\"fetch functions return correct Osdk.Instance\", () => {\n const withFamily = fauxObjectSet.withProperties({\n \"mom\": (base) => base.pivotTo(\"lead\").aggregate(\"$count\"),\n \"dad\": (base) => base.pivotTo(\"lead\").selectProperty(\"fullName\"),\n \"sister\": (base) => base.pivotTo(\"lead\").aggregate(\"class:collectList\"),\n });\n\n it(\"works with .where\", async () => {\n const where = withFamily.where({ \"mom\": 1 });\n const whereResults = await where.fetchPage();\n\n // Checks that if you did an `await where.fetchPage()` that you can then\n // pass/assign it to something explicit.\n const _assignPreviouslyInferredPages: PageResult<\n Osdk.Instance<\n EmployeeApiTest,\n never,\n PropertyKeys<EmployeeApiTest>,\n {\n mom: \"integer\";\n dad: \"string\" | undefined;\n sister: \"string\"[] | undefined;\n }\n >\n > = whereResults;\n\n // Checks that if you did an `await where.fetchPage()` that you can then\n // pass/assign it to something explicit.\n const _assignPreviouslyInferredInstance: Osdk.Instance<\n EmployeeApiTest,\n never,\n PropertyKeys<EmployeeApiTest>,\n {\n mom: \"integer\";\n dad: \"string\" | undefined;\n sister: \"string\"[] | undefined;\n }\n > = whereResults.data[0];\n\n const q = whereResults.data[0].$link.peeps.$objectSetInternals.def;\n\n // same as above but with expectTypeOf\n expectTypeOf<typeof where>().toEqualTypeOf<typeof withFamily>();\n expectTypeOf<typeof whereResults[\"data\"][0]>()\n .toEqualTypeOf<\n Osdk.Instance<\n EmployeeApiTest,\n never,\n PropertyKeys<EmployeeApiTest>,\n {\n mom: \"integer\";\n dad: \"string\" | undefined;\n sister: \"string\"[] | undefined;\n }\n >\n >();\n\n // Checks that when you directly assign, it infers correctly.\n // Sometimes an explicit assignment can affect how typescript infers\n // types.\n const shouldBeAssignablePage: PageResult<\n Osdk.Instance<\n EmployeeApiTest,\n never,\n PropertyKeys<EmployeeApiTest>,\n {\n mom: \"integer\";\n dad: \"string\" | undefined;\n sister: \"string\"[] | undefined;\n }\n >\n > = await where.fetchPage();\n\n const _shouldBeAssignableSingle: Osdk.Instance<\n EmployeeApiTest,\n never,\n PropertyKeys<EmployeeApiTest>,\n {\n mom: \"integer\";\n dad: \"string\" | undefined;\n sister: \"string\"[] | undefined;\n }\n > = await withFamily.fetchOne(1);\n await withFamily.fetchOne(1);\n });\n\n it(\"works with .async\", () => {\n const asyncIter = withFamily.asyncIter();\n expectTypeOf<typeof asyncIter>().toEqualTypeOf<\n AsyncIterableIterator<\n Osdk.Instance<\n EmployeeApiTest,\n never,\n PropertyKeys<EmployeeApiTest>,\n {\n mom: \"integer\";\n dad: \"string\" | undefined;\n sister: \"string\"[] | undefined;\n }\n >\n >\n >();\n });\n\n it(\"Works with no select\", async () => {\n const withFamilyResults = await withFamily.fetchPage();\n\n expectTypeOf<typeof withFamilyResults[\"data\"][0]>()\n .toEqualTypeOf<\n Osdk.Instance<\n EmployeeApiTest,\n never,\n PropertyKeys<EmployeeApiTest>,\n {\n mom: \"integer\";\n dad: \"string\" | undefined;\n sister: \"string\"[] | undefined;\n }\n >\n >();\n });\n\n it(\"Works with selecting all RDPs\", async () => {\n const withFamilyResults = await withFamily.fetchPage({\n $select: [\"mom\", \"dad\", \"sister\"],\n });\n\n expectTypeOf<typeof withFamilyResults[\"data\"][0]>()\n .toEqualTypeOf<\n Osdk.Instance<EmployeeApiTest, never, never, {\n mom: \"integer\";\n dad: \"string\" | undefined;\n sister: \"string\"[] | undefined;\n }>\n >();\n\n expectTypeOf<typeof withFamilyResults[\"data\"][0][\"mom\"]>()\n .toEqualTypeOf<number>();\n });\n\n it(\"Works with selecting some RDPs\", async () => {\n const withFamilyResults = await withFamily.fetchPage({\n $select: [\"mom\"],\n });\n\n expectTypeOf<typeof withFamilyResults[\"data\"][0]>()\n .toEqualTypeOf<\n Osdk.Instance<EmployeeApiTest, never, never, {\n mom: \"integer\";\n }>\n >();\n });\n\n it(\"Works with selecting all non-RDP's\", async () => {\n const withFamilyResults = await withFamily.fetchPage({\n $select: [\n \"employeeId\",\n \"fullName\",\n \"class\",\n \"attachment\",\n \"geopoint\",\n \"timeseries\",\n \"mediaReference\",\n \"geotimeSeriesReference\",\n \"isActive\",\n \"yearsOfExperience\",\n \"rank\",\n \"performanceScore\",\n \"hourlyRate\",\n \"dateOfJoining\",\n \"lastUpdated\",\n \"skillSet\",\n \"skillSetEmbedding\",\n ],\n });\n\n expectTypeOf<typeof withFamilyResults[\"data\"][0]>()\n .toEqualTypeOf<\n Osdk.Instance<\n EmployeeApiTest,\n never,\n PropertyKeys<EmployeeApiTest>,\n {}\n >\n >();\n expectTypeOf<typeof withFamilyResults[\"data\"][0][\"class\"]>()\n .toEqualTypeOf<\n string | undefined\n >();\n });\n\n it(\"Works with selecting some non-RDP's\", async () => {\n const withFamilyResults = await withFamily.fetchPage({\n $select: [\"class\"],\n });\n\n expectTypeOf<typeof withFamilyResults[\"data\"][0]>()\n .toEqualTypeOf<\n Osdk.Instance<EmployeeApiTest, never, \"class\", {}>\n >();\n });\n\n it(\"Works with selecting a mix\", async () => {\n const withFamilyResults = await withFamily.fetchPage({\n $select: [\"class\", \"mom\"],\n });\n\n expectTypeOf<typeof withFamilyResults[\"data\"][0]>()\n .toEqualTypeOf<\n Osdk.Instance<\n EmployeeApiTest,\n never,\n \"class\",\n { mom: \"integer\" }\n >\n >();\n });\n });\n\n it(\"allows extracting the type\", () => {\n const objectSet = fauxObjectSet.withProperties({\n \"mom\": (base) => base.pivotTo(\"lead\").aggregate(\"$count\"),\n });\n\n type ObjectSetType = typeof objectSet;\n\n expectTypeOf<ObjectSetType>().toEqualTypeOf<\n $ObjectSet<EmployeeApiTest, {\n mom: \"integer\";\n }>\n >();\n\n const objectSet2 = fauxObjectSet.withProperties({\n \"mom\": (base) => base.pivotTo(\"lead\").aggregate(\"$count\"),\n }) satisfies ObjectSetType;\n });\n\n it(\"Defining the Type\", () => {\n type ObjectSetType = $ObjectSet<\n EmployeeApiTest,\n {\n mom: \"integer\";\n }\n >;\n\n fauxObjectSet.withProperties({\n \"mom\": (base) => base.pivotTo(\"lead\").aggregate(\"$count\"),\n }) satisfies ObjectSetType;\n });\n\n it(\"has correct aggregation keys\", () => {\n fauxObjectSet.withProperties({\n \"integer\": (base) => base.pivotTo(\"lead\").aggregate(\"$count\"),\n \"integerNumericAgg\": (base) =>\n base.pivotTo(\"lead\").aggregate(\"employeeId:sum\"),\n \"string\": (base) => base.pivotTo(\"lead\").aggregate(\"class:collectList\"),\n \"stringDoesNotHaveNumericAgg\": (base) =>\n // @ts-expect-error\n base.pivotTo(\"lead\").aggregate(\"class:sum\"),\n \"isActive\": (base) =>\n base.pivotTo(\"lead\").aggregate(\"isActive:approximateDistinct\"),\n \"attachment\": (base) =>\n base.pivotTo(\"lead\").aggregate(\"attachment:collectList\"),\n \"geopoint\": (base) =>\n base.pivotTo(\"lead\").aggregate(\"geopoint:collectList\"),\n \"numericTimeseries\": (base) =>\n // @ts-expect-error\n base.pivotTo(\"lead\").aggregate(\"timeseries:sum\"),\n \"numericTimeseriesExactDistinct\": (base) =>\n base.pivotTo(\"lead\").aggregate(\"timeseries:exactDistinct\"),\n \"mediaReference\": (base) =>\n // @ts-expect-error\n base.pivotTo(\"lead\").aggregate(\"mediaReference:avg\"),\n \"mediaReferenceExactDistinct\": (base) =>\n base.pivotTo(\"lead\").aggregate(\"mediaReference:exactDistinct\"),\n \"geotimeSeriesReference\": (base) =>\n // @ts-expect-error\n base.pivotTo(\"lead\").aggregate(\"geotimeSeriesReference:sum\"),\n \"geotimeSeriesReferenceExactDistinct\": (base) =>\n base.pivotTo(\"lead\").aggregate(\n \"geotimeSeriesReference:exactDistinct\",\n ),\n \"lastUpdated\": (base) => {\n base.pivotTo(\"lead\").aggregate(\"lastUpdated:approximateDistinct\");\n base.pivotTo(\"lead\").aggregate(\"lastUpdated:exactDistinct\");\n base.pivotTo(\"lead\").aggregate(\"lastUpdated:max\");\n base.pivotTo(\"lead\").aggregate(\"lastUpdated:min\");\n base.pivotTo(\"lead\").aggregate(\"lastUpdated:collectList\");\n return base.pivotTo(\"lead\").aggregate(\"lastUpdated:collectSet\");\n },\n \"dateOfJoining\": (base) => {\n base.pivotTo(\"lead\").aggregate(\"dateOfJoining:approximateDistinct\");\n base.pivotTo(\"lead\").aggregate(\"dateOfJoining:exactDistinct\");\n base.pivotTo(\"lead\").aggregate(\"dateOfJoining:max\");\n base.pivotTo(\"lead\").aggregate(\"dateOfJoining:min\");\n base.pivotTo(\"lead\").aggregate(\"dateOfJoining:collectList\");\n return base.pivotTo(\"lead\").aggregate(\"dateOfJoining:collectSet\");\n },\n });\n });\n\n it(\"has correct aggregation return types\", async () => {\n const aggTestObjectSet = fauxObjectSet.withProperties({\n \"maxHasSameType\": (base) =>\n base.pivotTo(\"lead\").aggregate(\"dateOfJoining:max\"),\n \"minHasSameType\": (base) =>\n base.pivotTo(\"lead\").aggregate(\"dateOfJoining:min\"),\n \"approximateDistinctNumberNoUndefined\": (base) =>\n base.pivotTo(\"lead\").aggregate(\"employeeId:approximateDistinct\"),\n \"exactDistinctNumberNoUndefined\": (base) =>\n base.pivotTo(\"lead\").aggregate(\"employeeId:exactDistinct\"),\n \"countNumberNoUndefined\": (base) =>\n base.pivotTo(\"lead\").aggregate(\"$count\"),\n \"sumNumber\": (base) => base.pivotTo(\"lead\").aggregate(\"employeeId:sum\"),\n \"avgNumber\": (base) => base.pivotTo(\"lead\").aggregate(\"employeeId:avg\"),\n }).fetchPage();\n\n const result = (await aggTestObjectSet).data[0];\n expectTypeOf((await aggTestObjectSet).data[0]).toEqualTypeOf<\n Osdk.Instance<EmployeeApiTest, never, PropertyKeys<EmployeeApiTest>, {\n maxHasSameType: \"datetime\" | undefined;\n minHasSameType: \"datetime\" | undefined;\n avgNumber: \"double\" | undefined;\n approximateDistinctNumberNoUndefined: \"integer\";\n exactDistinctNumberNoUndefined: \"integer\";\n countNumberNoUndefined: \"integer\";\n sumNumber: \"double\" | undefined;\n }>\n >();\n\n expectTypeOf(result.maxHasSameType).toEqualTypeOf<string | undefined>();\n expectTypeOf(result.minHasSameType).toEqualTypeOf<string | undefined>();\n expectTypeOf(result.approximateDistinctNumberNoUndefined).toEqualTypeOf<\n number\n >();\n expectTypeOf(result.exactDistinctNumberNoUndefined).toEqualTypeOf<\n number\n >();\n expectTypeOf(result.countNumberNoUndefined).toEqualTypeOf<number>();\n expectTypeOf(result.sumNumber).toEqualTypeOf<number | undefined>();\n expectTypeOf(result.avgNumber).toEqualTypeOf<number | undefined>();\n });\n\n it(\"Merged object type is equivalent to original\", () => {\n const a = {} as EmployeeApiTest;\n let b = {} as DerivedObjectOrInterfaceDefinition.WithDerivedProperties<\n EmployeeApiTest,\n {}\n >;\n\n b = a; // should be assignable. testing explicitly due to break in 2.2 release.\n\n expectTypeOf<\n EmployeeApiTest\n >().branded.toEqualTypeOf<\n DerivedObjectOrInterfaceDefinition.WithDerivedProperties<\n EmployeeApiTest,\n {}\n >\n >();\n });\n });\n describe(\"aggregate\", () => {\n it(\"has correct aggregation keys\", () => {\n void fauxObjectSet.aggregate({\n \"$select\": {\n \"lastUpdated:max\": \"asc\",\n \"lastUpdated:min\": \"desc\",\n \"lastUpdated:approximateDistinct\": \"asc\",\n \"lastUpdated:exactDistinct\": \"desc\",\n \"dateOfJoining:max\": \"desc\",\n \"dateOfJoining:min\": \"asc\",\n \"dateOfJoining:approximateDistinct\": \"asc\",\n \"dateOfJoining:exactDistinct\": \"desc\",\n },\n });\n });\n });\n describe(\"expressions\", () => {\n \"Test all property types\";\n describe(\"numeric expressions\", () => {\n it(\"provides correct methods off of selected numeric derived property definitions\", () => {\n const objectSet = fauxObjectSet.withProperties({\n \"myProp1\": (base) => {\n const selectedInteger = base.pivotTo(\"lead\").selectProperty(\n \"employeeId\",\n );\n\n expectTypeOf(selectedInteger).toEqualTypeOf<\n DerivedProperty.NumericPropertyDefinition<\n \"integer\" | undefined,\n EmployeeApiTest\n >\n >;\n\n selectedInteger.add(1);\n selectedInteger.subtract(1);\n selectedInteger.multiply(1);\n selectedInteger.divide(1);\n selectedInteger.abs();\n selectedInteger.negate();\n selectedInteger.max(1);\n selectedInteger.min(1);\n\n // @ts-expect-error\n selectedInteger.extractPart(\"1\");\n\n expectTypeOf(\n base.pivotTo(\"lead\").selectProperty(\n \"performanceScore\",\n ),\n ).toEqualTypeOf<\n DerivedProperty.NumericPropertyDefinition<\n \"double\" | undefined,\n EmployeeApiTest\n >\n >();\n expectTypeOf(\n base.pivotTo(\"lead\").selectProperty(\n \"rank\",\n ),\n ).toEqualTypeOf<\n DerivedProperty.NumericPropertyDefinition<\n \"short\" | undefined,\n EmployeeApiTest\n >\n >();\n expectTypeOf(\n base.pivotTo(\"lead\").selectProperty(\n \"yearsOfExperience\",\n ),\n ).toEqualTypeOf<\n DerivedProperty.NumericPropertyDefinition<\n \"long\" | undefined,\n EmployeeApiTest\n >\n >();\n expectTypeOf(\n base.pivotTo(\"lead\").selectProperty(\n \"hourlyRate\",\n ),\n ).toEqualTypeOf<\n DerivedProperty.NumericPropertyDefinition<\n \"float\" | undefined,\n EmployeeApiTest\n >\n >();\n\n return selectedInteger;\n },\n });\n });\n\n it(\"provides correct methods off of selection definitions\", () => {\n const objectSet = fauxObjectSet.withProperties({\n \"myProp1\": (base) => {\n const selectedInteger = base.pivotTo(\"lead\").selectProperty(\n \"employeeId\",\n );\n\n expectTypeOf(selectedInteger).toEqualTypeOf<\n DerivedProperty.NumericPropertyDefinition<\n \"integer\" | undefined,\n EmployeeApiTest\n >\n >;\n\n selectedInteger.add(1);\n selectedInteger.subtract(1);\n selectedInteger.multiply(1);\n selectedInteger.divide(1);\n selectedInteger.abs();\n selectedInteger.negate();\n selectedInteger.max(1);\n selectedInteger.min(1);\n\n // @ts-expect-error\n selectedInteger.extractPart(\"1\");\n\n expectTypeOf(\n base.pivotTo(\"lead\").selectProperty(\n \"performanceScore\",\n ),\n ).toEqualTypeOf<\n DerivedProperty.NumericPropertyDefinition<\n \"double\" | undefined,\n EmployeeApiTest\n >\n >();\n expectTypeOf(\n base.pivotTo(\"lead\").selectProperty(\n \"rank\",\n ),\n ).toEqualTypeOf<\n DerivedProperty.NumericPropertyDefinition<\n \"short\" | undefined,\n EmployeeApiTest\n >\n >();\n expectTypeOf(\n base.pivotTo(\"lead\").selectProperty(\n \"yearsOfExperience\",\n ),\n ).toEqualTypeOf<\n DerivedProperty.NumericPropertyDefinition<\n \"long\" | undefined,\n EmployeeApiTest\n >\n >();\n expectTypeOf(\n base.pivotTo(\"lead\").selectProperty(\n \"hourlyRate\",\n ),\n ).toEqualTypeOf<\n DerivedProperty.NumericPropertyDefinition<\n \"float\" | undefined,\n EmployeeApiTest\n >\n >();\n\n return selectedInteger;\n },\n });\n });\n\n it(\"provides correct methods off of aggregated properties\", () => {\n const objectSet = fauxObjectSet.withProperties({\n \"myProp1\": (base) => {\n const maxAggregation = base.pivotTo(\"lead\").aggregate(\n \"employeeId:max\",\n );\n\n expectTypeOf(maxAggregation).toEqualTypeOf<\n DerivedProperty.NumericPropertyDefinition<\n \"integer\" | undefined,\n EmployeeApiTest\n >\n >;\n\n maxAggregation.add(1);\n maxAggregation.subtract(1);\n maxAggregation.multiply(1);\n maxAggregation.divide(1);\n maxAggregation.abs();\n maxAggregation.negate();\n maxAggregation.max(1);\n maxAggregation.min(1);\n\n expectTypeOf(\n base.pivotTo(\"peeps\").aggregate(\"employeeId:sum\"),\n ).toEqualTypeOf<\n DerivedProperty.NumericPropertyDefinition<\n \"double\" | undefined,\n EmployeeApiTest\n >\n >();\n\n expectTypeOf(\n base.pivotTo(\"peeps\").aggregate(\"employeeId:avg\"),\n ).toEqualTypeOf<\n DerivedProperty.NumericPropertyDefinition<\n \"double\" | undefined,\n EmployeeApiTest\n >\n >();\n\n expectTypeOf(\n base.pivotTo(\"peeps\").aggregate(\"employeeId:min\"),\n ).toEqualTypeOf<\n DerivedProperty.NumericPropertyDefinition<\n \"integer\" | undefined,\n EmployeeApiTest\n >\n >();\n\n const collectList = base.pivotTo(\"peeps\").aggregate(\n \"employeeId:collectList\",\n );\n expectTypeOf(\n collectList,\n ).toEqualTypeOf<\n DerivedProperty.Definition<\n \"integer\"[] | undefined,\n EmployeeApiTest\n >\n >();\n\n // @ts-expect-error\n collectList.plus(1);\n\n expectTypeOf(\n base.pivotTo(\"peeps\").aggregate(\n \"employeeId:collectList\",\n ),\n ).toEqualTypeOf<\n DerivedProperty.Definition<\n \"integer\"[] | undefined,\n EmployeeApiTest\n >\n >();\n\n return maxAggregation;\n },\n });\n });\n\n it(\"correctly coerces numeric types\", () => {\n const objectSet = fauxObjectSet.withProperties({\n \"myProp1\": (base) => {\n const intAndLong = base.pivotTo(\"lead\").selectProperty(\"employeeId\")\n .add(base.selectProperty(\"yearsOfExperience\")).add(\n base.selectProperty(\"employeeId\"),\n );\n expectTypeOf(intAndLong).toEqualTypeOf<\n DerivedProperty.NumericPropertyDefinition<\"long\", EmployeeApiTest>\n >();\n\n const intAndDouble = base.pivotTo(\"lead\").selectProperty(\n \"employeeId\",\n )\n .add(base.selectProperty(\"performanceScore\")).add(\n base.selectProperty(\"employeeId\"),\n );\n expectTypeOf(intAndDouble).toEqualTypeOf<\n DerivedProperty.NumericPropertyDefinition<\n \"double\",\n EmployeeApiTest\n >\n >();\n\n const longAndDouble = base.pivotTo(\"lead\").selectProperty(\n \"yearsOfExperience\",\n )\n .add(base.selectProperty(\"performanceScore\")).add(\n base.selectProperty(\"yearsOfExperience\"),\n );\n expectTypeOf(longAndDouble).toEqualTypeOf<\n DerivedProperty.NumericPropertyDefinition<\n \"double\",\n EmployeeApiTest\n >\n >();\n\n const longAndLong = base.pivotTo(\"lead\").selectProperty(\n \"yearsOfExperience\",\n )\n .add(base.selectProperty(\"yearsOfExperience\"));\n expectTypeOf(longAndLong).toEqualTypeOf<\n DerivedProperty.NumericPropertyDefinition<\"long\", EmployeeApiTest>\n >();\n\n const intAndInt = base.pivotTo(\"lead\").selectProperty(\"employeeId\")\n .add(base.selectProperty(\"employeeId\"));\n expectTypeOf(intAndInt).toEqualTypeOf<\n DerivedProperty.NumericPropertyDefinition<\n \"integer\",\n EmployeeApiTest\n >\n >();\n\n const intLongDoubleChain = base.pivotTo(\"lead\").selectProperty(\n \"employeeId\",\n ).add(base.selectProperty(\"yearsOfExperience\")).add(\n base.selectProperty(\"employeeId\"),\n ).add(\n base.selectProperty(\"performanceScore\"),\n ).add(base.selectProperty(\"employeeId\"));\n expectTypeOf(intLongDoubleChain).toEqualTypeOf<\n DerivedProperty.NumericPropertyDefinition<\n \"double\",\n EmployeeApiTest\n >\n >();\n\n const shortAndIntReturnsInt = base.pivotTo(\"lead\").selectProperty(\n \"rank\",\n ).add(base.selectProperty(\"employeeId\"));\n expectTypeOf(shortAndIntReturnsInt).toEqualTypeOf<\n DerivedProperty.NumericPropertyDefinition<\n \"integer\",\n EmployeeApiTest\n >\n >();\n\n const shortAndFloatReturnsDouble = base.pivotTo(\"lead\")\n .selectProperty(\n \"rank\",\n ).add(base.selectProperty(\"hourlyRate\"));\n expectTypeOf(shortAndFloatReturnsDouble).toEqualTypeOf<\n DerivedProperty.NumericPropertyDefinition<\n \"double\",\n EmployeeApiTest\n >\n >();\n\n return intLongDoubleChain;\n },\n });\n });\n\n it(\"allows adding number literals as a double\", () => {\n const objectSet = fauxObjectSet.withProperties({\n \"myProp1\": (base) => {\n const plus = base.pivotTo(\"lead\").selectProperty(\"employeeId\")\n .add(1);\n expectTypeOf(plus).toEqualTypeOf<\n DerivedProperty.NumericPropertyDefinition<\n \"double\",\n EmployeeApiTest\n >\n >();\n\n return plus;\n },\n });\n });\n\n it(\"allows correctly typed nested property definitions\", () => {\n const objectSet = fauxObjectSet.withProperties({\n \"myProp1\": (base) => {\n const nested = base.pivotTo(\"lead\").selectProperty(\"employeeId\")\n .add(\n base.pivotTo(\"peeps\").aggregate(\"employeeId:sum\"),\n );\n expectTypeOf(nested).toEqualTypeOf<\n DerivedProperty.NumericPropertyDefinition<\n \"double\",\n EmployeeApiTest\n >\n >();\n\n return nested;\n },\n });\n });\n\n it(\"allows correctly types property keys off the linked OT\", () => {\n const objectSet = fauxObjectSet.withProperties({\n \"myProp1\": (base) => {\n const nested = base.pivotTo(\"lead\").selectProperty(\"employeeId\")\n .add(\n base.selectProperty(\"performanceScore\"),\n );\n expectTypeOf(nested).toEqualTypeOf<\n DerivedProperty.NumericPropertyDefinition<\n \"double\",\n EmployeeApiTest\n >\n >();\n\n return nested;\n },\n });\n });\n\n // it(\"allows correctly types property keys off the base OT\", () => {});\n });\n describe(\"datetime expressions\", () => {\n it(\"provides correct methods off of datetime selections\", () => {\n const objectSet = fauxObjectSet.withProperties({\n \"myProp1\": (base) => {\n const selectedDatetime = base.pivotTo(\"lead\").selectProperty(\n \"dateOfJoining\",\n );\n\n expectTypeOf(selectedDatetime).toEqualTypeOf<\n DerivedProperty.DatetimePropertyDefinition<\n \"datetime\" | undefined,\n EmployeeApiTest\n >\n >();\n\n selectedDatetime.max(base.selectProperty(\"dateOfJoining\"));\n selectedDatetime.min(base.selectProperty(\"lastUpdated\"));\n\n expectTypeOf(base.pivotTo(\"lead\").selectProperty(\"lastUpdated\"))\n .toEqualTypeOf<\n DerivedProperty.DatetimePropertyDefinition<\n \"timestamp\" | undefined,\n EmployeeApiTest\n >\n >();\n\n return selectedDatetime;\n },\n });\n });\n\n it(\"correctly coerces datetime types\", () => {\n const objectSet = fauxObjectSet.withProperties({\n \"myProp1\": (base) => {\n const max = base.pivotTo(\"lead\").selectProperty(\"dateOfJoining\")\n .max(base.selectProperty(\"lastUpdated\"));\n expectTypeOf(max).toEqualTypeOf<\n DerivedProperty.DatetimePropertyDefinition<\n \"timestamp\",\n EmployeeApiTest\n >\n >();\n\n const min = base.pivotTo(\"lead\").selectProperty(\"dateOfJoining\")\n .min(base.selectProperty(\"dateOfJoining\"));\n expectTypeOf(min).toEqualTypeOf<\n DerivedProperty.DatetimePropertyDefinition<\n \"datetime\",\n EmployeeApiTest\n >\n >();\n\n return max;\n },\n });\n });\n\n it(\"allows correctly typed nested property definitions\", () => {\n const objectSet = fauxObjectSet.withProperties({\n \"myProp1\": (base) => {\n const nested = base.pivotTo(\"lead\").selectProperty(\"dateOfJoining\")\n .min(\n base.pivotTo(\"lead\").pivotTo(\"lead\").selectProperty(\n \"lastUpdated\",\n ),\n );\n expectTypeOf(nested).toEqualTypeOf<\n DerivedProperty.DatetimePropertyDefinition<\n \"timestamp\",\n EmployeeApiTest\n >\n >();\n\n return nested;\n },\n });\n });\n\n it(\"allows correctly typed property keys off the linked OT\", () => {\n const objectSet = fauxObjectSet.withProperties({\n \"myProp1\": (base) => {\n const nested = base.pivotTo(\"lead\").selectProperty(\"dateOfJoining\")\n .min(\n base.selectProperty(\"lastUpdated\"),\n );\n expectTypeOf(nested).toEqualTypeOf<\n DerivedProperty.DatetimePropertyDefinition<\n \"timestamp\",\n EmployeeApiTest\n >\n >();\n\n return nested;\n },\n });\n });\n\n // it(\"allows correctly typed property keys off the base OT\", () => {});\n });\n });\n\n describe(\"nearestNeighbors\", () => {\n it(\"has correct nearest neighbors object set query return type\", () => {\n const nearestNeighborsObjectSet = fauxObjectSet.nearestNeighbors(\n \"textQuery\",\n 3,\n \"skillSetEmbedding\",\n );\n expectTypeOf(nearestNeighborsObjectSet).toEqualTypeOf<\n $ObjectSet<EmployeeApiTest>\n >();\n });\n\n it(\"allows text queries\", async () => {\n const nearestNeighborsObjectSet = fauxObjectSet.nearestNeighbors(\n \"textQuery\",\n 3,\n \"skillSetEmbedding\",\n );\n const { data: employees } = await nearestNeighborsObjectSet.fetchPage();\n expectTypeOf(employees).toEqualTypeOf<\n Osdk.Instance<EmployeeApiTest, never, PropertyKeys<EmployeeApiTest>>[]\n >();\n });\n\n it(\"allows vector queries\", async () => {\n const vectorQuery = Array.from({ length: 1536 }, () => 0.3);\n const nearestNeighborsObjectSet = fauxObjectSet.nearestNeighbors(\n vectorQuery,\n 3,\n \"skillSetEmbedding\",\n );\n const { data: employees } = await nearestNeighborsObjectSet.fetchPage();\n expectTypeOf(employees).toEqualTypeOf<\n Osdk.Instance<EmployeeApiTest, never, PropertyKeys<EmployeeApiTest>>[]\n >();\n });\n\n it(\"only supports queries on vector properties\", () => {\n fauxObjectSet.nearestNeighbors(\n \"textQuery\",\n 3,\n // @ts-expect-error\n \"skillSet\",\n );\n });\n\n it(\"appropriately types fetchPage ordered by relevance\", async () => {\n const nearestNeighborsObjectSet = await fauxObjectSet.nearestNeighbors(\n \"textQuery\",\n 3,\n \"skillSetEmbedding\",\n ).fetchPage({ $orderBy: \"relevance\" });\n\n type expectedType =\n & Osdk.Instance<\n EmployeeApiTest,\n never,\n PropertyKeys<EmployeeApiTest>,\n {}\n >\n & { $score: number };\n\n expectTypeOf(nearestNeighborsObjectSet.data[0]).toEqualTypeOf<\n expectedType\n >();\n });\n\n it(\"appropriately types fetchPageWithErrors ordered by relevance\", async () => {\n const nearestNeighborsObjectSetWithErrors = await fauxObjectSet\n .nearestNeighbors(\n \"textQuery\",\n 3,\n \"skillSetEmbedding\",\n ).fetchPageWithErrors({ $orderBy: \"relevance\" });\n\n type expectedType =\n & Osdk.Instance<\n EmployeeApiTest,\n never,\n PropertyKeys<EmployeeApiTest>,\n {}\n >\n & { $score: number };\n expectTypeOf(nearestNeighborsObjectSetWithErrors.value!.data[0])\n .toEqualTypeOf<expectedType>();\n });\n\n it(\"appropriately types asyncIters ordered by relevance\", () => {\n const asyncIter = fauxObjectSet.nearestNeighbors(\n \"textQuery\",\n 3,\n \"skillSetEmbedding\",\n ).asyncIter(\n { $orderBy: \"relevance\" },\n );\n\n type expectedType = AsyncIterableIterator<\n & Osdk.Instance<\n EmployeeApiTest,\n never,\n PropertyKeys<EmployeeApiTest>,\n {}\n >\n & { $score: number }\n >;\n expectTypeOf(asyncIter).toEqualTypeOf<expectedType>();\n });\n\n it(\"no arbitrary order bys\", () => {\n const knn = fauxObjectSet.nearestNeighbors(\n \"textQuery\",\n 3,\n \"skillSetEmbedding\",\n );\n\n // @ts-expect-error\n void knn.fetchPage({ $orderBy: \"invalid\" });\n // @ts-expect-error\n void knn.fetchPageWithErrors({ $orderBy: \"invalid\" });\n // @ts-expect-error\n void knn.asyncIter({ $orderBy: \"random\" });\n });\n\n it(\"does not include score for property order by\", async () => {\n const nearestNeighborsObjectSet = await fauxObjectSet.nearestNeighbors(\n \"textQuery\",\n 3,\n \"skillSetEmbedding\",\n ).fetchPage({ $orderBy: { \"fullName\": \"desc\" } });\n\n expectTypeOf(nearestNeighborsObjectSet.data[0]).not.toHaveProperty(\n \"$score\",\n );\n\n const nearestNeighborsObjectSetWithErrors = await fauxObjectSet\n .nearestNeighbors(\n \"textQuery\",\n 3,\n \"skillSetEmbedding\",\n ).fetchPageWithErrors({ $orderBy: { \"fullName\": \"desc\" } });\n\n expectTypeOf(nearestNeighborsObjectSetWithErrors.value?.data[0]).not\n .toHaveProperty(\"$score\");\n });\n });\n describe(\"narrowToType\", () => {\n it(\"restricts casting from interface to object type\", () => {\n const objectSet = { narrowToType: () => {} } as unknown as $ObjectSet<\n FooInterfaceApiTest\n >;\n\n objectSet.narrowToType(EmployeeApiTest);\n\n objectSet.narrowToType(FooInterfaceApiTest);\n\n objectSet.narrowToType({ type: \"interface\", apiName: \"AnyInterface :)\" });\n\n // @ts-expect-error\n objectSet.narrowToType({ type: \"object\", apiName: \"NotImplemented\" });\n\n // Interfaces that don't have any implementedBy fields should still accept any interface\n const objectSet2 = { narrowToType: () => {} } as unknown as $ObjectSet<\n FooInterfaceApiTest & { __DefinitionMetadata: { implementedBy: [] } }\n >;\n\n objectSet2.narrowToType({ type: \"interface\", apiName: \"NotImplemented\" });\n });\n it(\"restricts casting from object type to interface\", () => {\n const objectSet = {} as $ObjectSet<EmployeeApiTest>;\n type narrowToTypeAllowedInterfaceTypes = Parameters<\n typeof objectSet.narrowToType\n >[0][\"apiName\"];\n type narrowToTypeAllowedTypes = Parameters<\n typeof objectSet.narrowToType\n >[0][\"type\"];\n\n expectTypeOf<narrowToTypeAllowedTypes>().toEqualTypeOf<\"interface\">();\n\n expectTypeOf<narrowToTypeAllowedInterfaceTypes>().toEqualTypeOf<\n \"FooInterface\"\n >();\n });\n });\n\n describe(\"asyncIterLinks\", async () => {\n it(\"typechecks self-referential one link\", async () => {\n for await (\n const { source, target, linkType } of fauxObjectSet\n .experimental_asyncIterLinks([\n \"lead\",\n ])\n ) {\n expectTypeOf(source).toEqualTypeOf<\n ObjectIdentifiers<EmployeeApiTest>\n >();\n\n expectTypeOf(target).toEqualTypeOf<\n ObjectIdentifiers<EmployeeApiTest>\n >();\n\n expectTypeOf(source.$apiName).toBeString();\n expectTypeOf(target.$apiName).toBeString();\n expectTypeOf(source.$primaryKey).toBeNumber();\n expectTypeOf(target.$primaryKey).toBeNumber();\n\n expectTypeOf(linkType).toEqualTypeOf<\"lead\">();\n }\n });\n\n it(\"typechecks self-referential multiple links\", async () => {\n for await (\n const { source, target, linkType } of fauxObjectSet\n .experimental_asyncIterLinks([\n \"lead\",\n \"peeps\",\n ])\n ) {\n expectTypeOf(source).toEqualTypeOf<\n ObjectIdentifiers<EmployeeApiTest>\n >();\n\n expectTypeOf(target).toEqualTypeOf<\n ObjectIdentifiers<EmployeeApiTest>\n >();\n\n expectTypeOf(source.$apiName).toBeString();\n expectTypeOf(target.$apiName).toBeString();\n expectTypeOf(source.$primaryKey).toBeNumber();\n expectTypeOf(target.$primaryKey).toBeNumber();\n\n expectTypeOf(linkType).toEqualTypeOf<\"lead\" | \"peeps\">();\n }\n });\n });\n});\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"ObjectSet.test.js","names":["describe","expectTypeOf","it","test","vi","EmployeeApiTest","FooInterfaceApiTest","asyncIterateLinkOnce","obj","$apiName","undefined","$primaryKey","Promise","resolve","source","target","linkTypeApiName","createMockObjectSet","fauxObject","fauxResults","fauxObjectSet","$link","peeps","$objectSetInternals","def","data","where","fn","withProperties","fetchPage","fetchPageWithErrors","value","fetchOne","asyncIter","aggregate","pivotTo","nearestNeighbors","experimental_asyncIterLinks","toEqualTypeOf","fetchPageResult","class","$includeAllBaseObjectProperties","asyncIterResult","$select","x","$includeRid","subselect","withA","base","selectProperty","withFamily","withMom","withParents","todo","withAggregations","whereResults","aggTestObjectSet","result","maxHasSameType","minHasSameType","approximateDistinctNumberNoUndefined","exactDistinctNumberNoUndefined","countNumberNoUndefined","sumNumber","avgNumber","branded","selectedInteger","add","subtract","multiply","divide","abs","negate","max","min","extractPart","maxAggregation","collectList","plus","intAndLong","intAndDouble","longAndDouble","longAndLong","intAndInt","intLongDoubleChain","shortAndIntReturnsInt","shortAndFloatReturnsDouble","constant","double","intPlusIntReturnsInt","integer","nested","selectedDatetime","dateAndDateReturnDate","datetime","dateAndTimeReturnTime","timestamp","nearestNeighborsObjectSet","employees","vectorQuery","Array","from","length","$orderBy","nearestNeighborsObjectSetWithErrors","knn","not","toHaveProperty","objectSet","narrowToType","type","apiName","linkType","toBeString","toBeNumber"],"sources":["ObjectSet.test.ts"],"sourcesContent":["/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { describe, expectTypeOf, it, test, vi } from \"vitest\";\n\nimport type {\n DerivedProperty,\n NullabilityAdherence,\n ObjectIdentifiers,\n ObjectOrInterfaceDefinition,\n ObjectSet as $ObjectSet,\n Osdk,\n PageResult,\n PropertyKeys,\n} from \"../index.js\";\nimport type { DerivedObjectOrInterfaceDefinition } from \"../ontology/ObjectOrInterface.js\";\nimport { EmployeeApiTest } from \"../test/EmployeeApiTest.js\";\nimport { FooInterfaceApiTest } from \"../test/FooInterfaceApiTest.js\";\n\nasync function* asyncIterateLinkOnce() {\n const obj = { $apiName: undefined, $primaryKey: undefined };\n yield Promise.resolve({\n source: obj,\n target: obj,\n linkTypeApiName: undefined,\n });\n}\n\nexport function createMockObjectSet<\n Q extends ObjectOrInterfaceDefinition,\n>(): $ObjectSet<Q, never> {\n let fauxObject: Osdk.Instance<Q>,\n fauxResults: any,\n fauxObjectSet: $ObjectSet<Q>;\n\n // eslint-disable-next-line prefer-const\n fauxObject = {\n $link: {\n peeps: {\n $objectSetInternals: {\n def: {},\n },\n },\n },\n } as Osdk.Instance<Q>;\n\n fauxResults = {\n data: [fauxObject],\n };\n\n fauxObjectSet = {\n where: vi.fn(() => {\n return fauxObjectSet;\n }),\n withProperties: vi.fn(() => {\n return fauxObjectSet;\n }),\n fetchPage: vi.fn(() => Promise.resolve(fauxResults)),\n fetchPageWithErrors: vi.fn(() => Promise.resolve({ value: fauxResults })),\n fetchOne: vi.fn(() => fauxObject),\n asyncIter: vi.fn(() => {\n return {};\n }),\n aggregate: vi.fn(() => {\n return {};\n }),\n pivotTo: vi.fn(() => {\n return fauxObjectSet;\n }),\n nearestNeighbors: vi.fn(() => {\n return fauxObjectSet;\n }),\n experimental_asyncIterLinks: vi.fn(asyncIterateLinkOnce),\n } as any as $ObjectSet<Q>;\n\n return fauxObjectSet;\n}\n\ndescribe(\"ObjectSet\", () => {\n const fauxObjectSet = createMockObjectSet<EmployeeApiTest>();\n\n const interfaceObjectSet = createMockObjectSet<FooInterfaceApiTest>();\n\n describe(\"normal\", () => {\n test(\"select none\", async () => {\n const result = await fauxObjectSet.fetchPage();\n expectTypeOf<typeof result.data[0]>().toEqualTypeOf<\n Osdk.Instance<EmployeeApiTest, never, PropertyKeys<EmployeeApiTest>>\n >();\n\n // Do it again but be explicit about the params to be sure\n // we don't break them\n const result2 = await fauxObjectSet.fetchPage<\n PropertyKeys<EmployeeApiTest>,\n false,\n never,\n NullabilityAdherence.Default,\n false\n >();\n });\n\n test(\"select one\", async () => {\n const result = await fauxObjectSet.fetchPage({ \"$select\": [\"fullName\"] });\n expectTypeOf<typeof result.data[0]>().toEqualTypeOf<\n Osdk.Instance<EmployeeApiTest, never, \"fullName\">\n >();\n });\n });\n\n describe(\"includeAllBaseObjectProperties\", () => {\n it(\"has the right types if you pass true\", async () => {\n const fetchPageResult = await fauxObjectSet\n .where({ class: \"idk\" })\n .fetchPage({ $includeAllBaseObjectProperties: true });\n\n expectTypeOf(fetchPageResult).toEqualTypeOf<\n PageResult<\n Osdk.Instance<EmployeeApiTest, \"$allBaseProperties\">\n >\n >();\n\n const asyncIterResult = fauxObjectSet\n .where({ class: \"idk\" })\n .asyncIter({ $includeAllBaseObjectProperties: true });\n\n expectTypeOf(asyncIterResult).toEqualTypeOf<\n AsyncIterableIterator<\n Osdk.Instance<EmployeeApiTest, \"$allBaseProperties\">\n >\n >();\n });\n\n it(\"does not let you pass partial $select and true\", async () => {\n const fetchPageResult = await fauxObjectSet\n .where({ class: \"idk\" })\n .fetchPage({\n // @ts-expect-error\n $includeAllBaseObjectProperties: true,\n $select: [\"attachment\"],\n });\n\n const asyncIterResult = fauxObjectSet\n .where({ class: \"idk\" })\n .asyncIter({\n // @ts-expect-error\n $includeAllBaseObjectProperties: true,\n $select: [\"attachment\"],\n });\n });\n\n it(\"does let you pass full select options and false\", async () => {\n const fetchPageResult = await fauxObjectSet\n .where({ class: \"idk\" })\n .fetchPage({\n $includeAllBaseObjectProperties: true,\n\n // this select list is intended to represent all properties on `EmployeeApiTest`,\n // so if you get an error here later and you added properties to that object,\n // be sure to add them here too.\n $select: [\n \"attachment\",\n \"class\",\n \"employeeId\",\n \"fullName\",\n \"geopoint\",\n \"geotimeSeriesReference\",\n \"isActive\",\n \"mediaReference\",\n \"timeseries\",\n \"dateOfJoining\",\n \"hourlyRate\",\n \"yearsOfExperience\",\n \"rank\",\n \"performanceScore\",\n \"mediaReference\",\n \"lastUpdated\",\n \"skillSet\",\n \"skillSetEmbedding\",\n ],\n });\n\n const asyncIterResult = await fauxObjectSet\n .where({ class: \"idk\" })\n .fetchPage({\n $includeAllBaseObjectProperties: true,\n\n // this select list is intended to represent all properties on `EmployeeApiTest`,\n // so if you get an error here later and you added properties to that object,\n // be sure to add them here too.\n $select: [\n \"attachment\",\n \"class\",\n \"employeeId\",\n \"fullName\",\n \"geopoint\",\n \"geotimeSeriesReference\",\n \"isActive\",\n \"mediaReference\",\n \"timeseries\",\n \"dateOfJoining\",\n \"hourlyRate\",\n \"yearsOfExperience\",\n \"rank\",\n \"performanceScore\",\n \"mediaReference\",\n \"lastUpdated\",\n \"skillSet\",\n \"skillSetEmbedding\",\n ],\n });\n });\n });\n\n test(\"includeRid\", async () => {\n const x = await fauxObjectSet\n .where({ class: \"idk\" })\n .fetchPage({ $includeRid: true });\n\n expectTypeOf(x).toEqualTypeOf<\n PageResult<\n Osdk.Instance<EmployeeApiTest, \"$rid\">\n >\n >();\n });\n\n test(\"pivotTo\", async () => {\n const noArgs = await fauxObjectSet.pivotTo(\"peeps\").fetchPage({});\n const subselect = await fauxObjectSet.pivotTo(\"peeps\").fetchPage({\n $select: [\"employeeId\", \"class\"],\n });\n\n expectTypeOf(subselect).toEqualTypeOf<\n PageResult<\n Osdk.Instance<EmployeeApiTest, never, \"employeeId\" | \"class\">\n >\n >();\n });\n\n describe(\".withProperties\", () => {\n test(\"single property\", async () => {\n const withA = fauxObjectSet.withProperties({\n \"a\": (base) => {\n return base.pivotTo(\"lead\").aggregate(\"class:exactDistinct\");\n },\n });\n\n const isWithAAssignable: $ObjectSet<EmployeeApiTest, {}> = withA;\n\n expectTypeOf(withA).toEqualTypeOf<\n $ObjectSet<EmployeeApiTest, {\n a: \"integer\";\n }>\n >();\n\n const withAResults = await withA.fetchPage();\n\n expectTypeOf<typeof withAResults[\"data\"][0]>().toEqualTypeOf<\n Osdk.Instance<EmployeeApiTest, never, PropertyKeys<EmployeeApiTest>, {\n a: \"integer\";\n }>\n >();\n\n expectTypeOf<typeof withAResults[\"data\"][0][\"a\"]>()\n .toEqualTypeOf<number>();\n });\n\n it(\"can be sub-selected\", () => {\n const objectWithUndefinedRdp = fauxObjectSet.withProperties({\n \"derivedPropertyName\": (base) =>\n base.pivotTo(\"lead\").selectProperty(\"employeeId\"),\n }).fetchOne(3, {\n $select: [\"derivedPropertyName\"],\n });\n });\n\n test(\"multiple properties\", async () => {\n const withFamily = fauxObjectSet.withProperties({\n \"mom\": (base) => base.pivotTo(\"lead\").aggregate(\"$count\"),\n \"dad\": (base) => base.pivotTo(\"lead\").selectProperty(\"fullName\"),\n \"sister\": (base) => base.pivotTo(\"lead\").aggregate(\"class:collectList\"),\n });\n expectTypeOf(withFamily).toEqualTypeOf<\n $ObjectSet<EmployeeApiTest, {\n mom: \"integer\";\n dad: \"string\" | undefined;\n sister: \"string\"[] | undefined;\n }>\n >();\n\n const withFamilyResults = await withFamily.fetchPage();\n\n expectTypeOf<typeof withFamilyResults[\"data\"][0]>().toEqualTypeOf<\n Osdk.Instance<EmployeeApiTest, never, PropertyKeys<EmployeeApiTest>, {\n mom: \"integer\";\n dad: \"string\" | undefined;\n sister: \"string\"[] | undefined;\n }>\n >();\n\n expectTypeOf<typeof withFamilyResults[\"data\"][0][\"mom\"]>()\n .toEqualTypeOf<number>();\n expectTypeOf<typeof withFamilyResults[\"data\"][0][\"dad\"]>()\n .toEqualTypeOf<string | undefined>();\n expectTypeOf<typeof withFamilyResults[\"data\"][0][\"sister\"]>()\n .toEqualTypeOf<string[] | undefined>();\n });\n\n describe(\"called in succession\", () => {\n test(\"independently\", () => {\n const withMom = fauxObjectSet.withProperties({\n \"mom\": (base) => base.pivotTo(\"lead\").aggregate(\"$count\"),\n });\n\n const withParents = withMom.withProperties({\n \"dad\": (base) => base.pivotTo(\"lead\").selectProperty(\"fullName\"),\n });\n\n expectTypeOf(withParents).toEqualTypeOf<\n $ObjectSet<EmployeeApiTest, {\n mom: \"integer\";\n dad: \"string\" | undefined;\n }>\n >();\n });\n\n test.todo(\"with calculated properties\");\n });\n\n describe(\"nullability\", () => {\n it(\"count, exactDistinct, and approximateDistinct aren't nullable\", async () => {\n const withFamily = fauxObjectSet.withProperties({\n \"mom\": (base) => base.pivotTo(\"lead\").aggregate(\"$count\"),\n \"dad\": (base) =>\n base.pivotTo(\"lead\").aggregate(\"class:exactDistinct\"),\n \"sis\": (base) =>\n base.pivotTo(\"lead\").aggregate(\"class:approximateDistinct\"),\n });\n\n const withFamilyResults = await withFamily.fetchPage();\n\n expectTypeOf<typeof withFamilyResults[\"data\"][0]>().toEqualTypeOf<\n Osdk.Instance<EmployeeApiTest, never, PropertyKeys<EmployeeApiTest>, {\n mom: \"integer\";\n dad: \"integer\";\n sis: \"integer\";\n }>\n >();\n });\n\n it(\n \"collectSet, collectList, selectProperty, and numeric aggregations are nullable\",\n async () => {\n const withAggregations = fauxObjectSet.withProperties({\n \"collectSet\": (base) =>\n base.pivotTo(\"lead\").aggregate(\"class:collectSet\"),\n \"select\": (base) => base.pivotTo(\"lead\").selectProperty(\"fullName\"),\n \"collectList\": (base) =>\n base.pivotTo(\"lead\").aggregate(\"class:collectList\"),\n \"min\": (base) => base.pivotTo(\"lead\").aggregate(\"employeeId:max\"),\n \"max\": (base) => base.pivotTo(\"lead\").aggregate(\"employeeId:min\"),\n \"sum\": (base) => base.pivotTo(\"lead\").aggregate(\"employeeId:sum\"),\n \"avg\": (base) => base.pivotTo(\"lead\").aggregate(\"employeeId:avg\"),\n \"approximatePercentile\": (base) =>\n base.pivotTo(\"lead\").aggregate(\n \"employeeId:approximatePercentile\",\n ),\n });\n\n const withAggregationResults = await withAggregations.fetchPage();\n\n expectTypeOf<typeof withAggregationResults[\"data\"][0]>()\n .toEqualTypeOf<\n Osdk.Instance<\n EmployeeApiTest,\n never,\n PropertyKeys<EmployeeApiTest>,\n {\n collectSet: \"string\"[] | undefined;\n select: \"string\" | undefined;\n collectList: \"string\"[] | undefined;\n min: \"double\" | undefined;\n max: \"double\" | undefined;\n sum: \"double\" | undefined;\n avg: \"double\" | undefined;\n approximatePercentile: \"double\" | undefined;\n }\n >\n >();\n },\n );\n });\n\n describe(\"fetch functions return correct Osdk.Instance\", () => {\n const withFamily = fauxObjectSet.withProperties({\n \"mom\": (base) => base.pivotTo(\"lead\").aggregate(\"$count\"),\n \"dad\": (base) => base.pivotTo(\"lead\").selectProperty(\"fullName\"),\n \"sister\": (base) => base.pivotTo(\"lead\").aggregate(\"class:collectList\"),\n });\n\n it(\"works with .where\", async () => {\n const where = withFamily.where({ \"mom\": 1 });\n const whereResults = await where.fetchPage();\n\n // Checks that if you did an `await where.fetchPage()` that you can then\n // pass/assign it to something explicit.\n const _assignPreviouslyInferredPages: PageResult<\n Osdk.Instance<\n EmployeeApiTest,\n never,\n PropertyKeys<EmployeeApiTest>,\n {\n mom: \"integer\";\n dad: \"string\" | undefined;\n sister: \"string\"[] | undefined;\n }\n >\n > = whereResults;\n\n // Checks that if you did an `await where.fetchPage()` that you can then\n // pass/assign it to something explicit.\n const _assignPreviouslyInferredInstance: Osdk.Instance<\n EmployeeApiTest,\n never,\n PropertyKeys<EmployeeApiTest>,\n {\n mom: \"integer\";\n dad: \"string\" | undefined;\n sister: \"string\"[] | undefined;\n }\n > = whereResults.data[0];\n\n const q = whereResults.data[0].$link.peeps.$objectSetInternals.def;\n\n // same as above but with expectTypeOf\n expectTypeOf<typeof where>().toEqualTypeOf<typeof withFamily>();\n expectTypeOf<typeof whereResults[\"data\"][0]>()\n .toEqualTypeOf<\n Osdk.Instance<\n EmployeeApiTest,\n never,\n PropertyKeys<EmployeeApiTest>,\n {\n mom: \"integer\";\n dad: \"string\" | undefined;\n sister: \"string\"[] | undefined;\n }\n >\n >();\n\n // Checks that when you directly assign, it infers correctly.\n // Sometimes an explicit assignment can affect how typescript infers\n // types.\n const shouldBeAssignablePage: PageResult<\n Osdk.Instance<\n EmployeeApiTest,\n never,\n PropertyKeys<EmployeeApiTest>,\n {\n mom: \"integer\";\n dad: \"string\" | undefined;\n sister: \"string\"[] | undefined;\n }\n >\n > = await where.fetchPage();\n\n const _shouldBeAssignableSingle: Osdk.Instance<\n EmployeeApiTest,\n never,\n PropertyKeys<EmployeeApiTest>,\n {\n mom: \"integer\";\n dad: \"string\" | undefined;\n sister: \"string\"[] | undefined;\n }\n > = await withFamily.fetchOne(1);\n await withFamily.fetchOne(1);\n });\n\n it(\"works with .async\", () => {\n const asyncIter = withFamily.asyncIter();\n expectTypeOf<typeof asyncIter>().toEqualTypeOf<\n AsyncIterableIterator<\n Osdk.Instance<\n EmployeeApiTest,\n never,\n PropertyKeys<EmployeeApiTest>,\n {\n mom: \"integer\";\n dad: \"string\" | undefined;\n sister: \"string\"[] | undefined;\n }\n >\n >\n >();\n });\n\n it(\"Works with no select\", async () => {\n const withFamilyResults = await withFamily.fetchPage();\n\n expectTypeOf<typeof withFamilyResults[\"data\"][0]>()\n .toEqualTypeOf<\n Osdk.Instance<\n EmployeeApiTest,\n never,\n PropertyKeys<EmployeeApiTest>,\n {\n mom: \"integer\";\n dad: \"string\" | undefined;\n sister: \"string\"[] | undefined;\n }\n >\n >();\n });\n\n it(\"Works with selecting all RDPs\", async () => {\n const withFamilyResults = await withFamily.fetchPage({\n $select: [\"mom\", \"dad\", \"sister\"],\n });\n\n expectTypeOf<typeof withFamilyResults[\"data\"][0]>()\n .toEqualTypeOf<\n Osdk.Instance<EmployeeApiTest, never, never, {\n mom: \"integer\";\n dad: \"string\" | undefined;\n sister: \"string\"[] | undefined;\n }>\n >();\n\n expectTypeOf<typeof withFamilyResults[\"data\"][0][\"mom\"]>()\n .toEqualTypeOf<number>();\n });\n\n it(\"Works with selecting some RDPs\", async () => {\n const withFamilyResults = await withFamily.fetchPage({\n $select: [\"mom\"],\n });\n\n expectTypeOf<typeof withFamilyResults[\"data\"][0]>()\n .toEqualTypeOf<\n Osdk.Instance<EmployeeApiTest, never, never, {\n mom: \"integer\";\n }>\n >();\n });\n\n it(\"Works with selecting all non-RDP's\", async () => {\n const withFamilyResults = await withFamily.fetchPage({\n $select: [\n \"employeeId\",\n \"fullName\",\n \"class\",\n \"attachment\",\n \"geopoint\",\n \"timeseries\",\n \"mediaReference\",\n \"geotimeSeriesReference\",\n \"isActive\",\n \"yearsOfExperience\",\n \"rank\",\n \"performanceScore\",\n \"hourlyRate\",\n \"dateOfJoining\",\n \"lastUpdated\",\n \"skillSet\",\n \"skillSetEmbedding\",\n ],\n });\n\n expectTypeOf<typeof withFamilyResults[\"data\"][0]>()\n .toEqualTypeOf<\n Osdk.Instance<\n EmployeeApiTest,\n never,\n PropertyKeys<EmployeeApiTest>,\n {}\n >\n >();\n expectTypeOf<typeof withFamilyResults[\"data\"][0][\"class\"]>()\n .toEqualTypeOf<\n string | undefined\n >();\n });\n\n it(\"Works with selecting some non-RDP's\", async () => {\n const withFamilyResults = await withFamily.fetchPage({\n $select: [\"class\"],\n });\n\n expectTypeOf<typeof withFamilyResults[\"data\"][0]>()\n .toEqualTypeOf<\n Osdk.Instance<EmployeeApiTest, never, \"class\", {}>\n >();\n });\n\n it(\"Works with selecting a mix\", async () => {\n const withFamilyResults = await withFamily.fetchPage({\n $select: [\"class\", \"mom\"],\n });\n\n expectTypeOf<typeof withFamilyResults[\"data\"][0]>()\n .toEqualTypeOf<\n Osdk.Instance<\n EmployeeApiTest,\n never,\n \"class\",\n { mom: \"integer\" }\n >\n >();\n });\n });\n\n it(\"allows extracting the type\", () => {\n const objectSet = fauxObjectSet.withProperties({\n \"mom\": (base) => base.pivotTo(\"lead\").aggregate(\"$count\"),\n });\n\n type ObjectSetType = typeof objectSet;\n\n expectTypeOf<ObjectSetType>().toEqualTypeOf<\n $ObjectSet<EmployeeApiTest, {\n mom: \"integer\";\n }>\n >();\n\n const objectSet2 = fauxObjectSet.withProperties({\n \"mom\": (base) => base.pivotTo(\"lead\").aggregate(\"$count\"),\n }) satisfies ObjectSetType;\n });\n\n it(\"Defining the Type\", () => {\n type ObjectSetType = $ObjectSet<\n EmployeeApiTest,\n {\n mom: \"integer\";\n }\n >;\n\n fauxObjectSet.withProperties({\n \"mom\": (base) => base.pivotTo(\"lead\").aggregate(\"$count\"),\n }) satisfies ObjectSetType;\n });\n\n it(\"has correct aggregation keys\", () => {\n fauxObjectSet.withProperties({\n \"integer\": (base) => base.pivotTo(\"lead\").aggregate(\"$count\"),\n \"integerNumericAgg\": (base) =>\n base.pivotTo(\"lead\").aggregate(\"employeeId:sum\"),\n \"string\": (base) => base.pivotTo(\"lead\").aggregate(\"class:collectList\"),\n \"stringDoesNotHaveNumericAgg\": (base) =>\n // @ts-expect-error\n base.pivotTo(\"lead\").aggregate(\"class:sum\"),\n \"isActive\": (base) =>\n base.pivotTo(\"lead\").aggregate(\"isActive:approximateDistinct\"),\n \"attachment\": (base) =>\n base.pivotTo(\"lead\").aggregate(\"attachment:collectList\"),\n \"geopoint\": (base) =>\n base.pivotTo(\"lead\").aggregate(\"geopoint:collectList\"),\n \"numericTimeseries\": (base) =>\n // @ts-expect-error\n base.pivotTo(\"lead\").aggregate(\"timeseries:sum\"),\n \"numericTimeseriesExactDistinct\": (base) =>\n base.pivotTo(\"lead\").aggregate(\"timeseries:exactDistinct\"),\n \"mediaReference\": (base) =>\n // @ts-expect-error\n base.pivotTo(\"lead\").aggregate(\"mediaReference:avg\"),\n \"mediaReferenceExactDistinct\": (base) =>\n base.pivotTo(\"lead\").aggregate(\"mediaReference:exactDistinct\"),\n \"geotimeSeriesReference\": (base) =>\n // @ts-expect-error\n base.pivotTo(\"lead\").aggregate(\"geotimeSeriesReference:sum\"),\n \"geotimeSeriesReferenceExactDistinct\": (base) =>\n base.pivotTo(\"lead\").aggregate(\n \"geotimeSeriesReference:exactDistinct\",\n ),\n \"lastUpdated\": (base) => {\n base.pivotTo(\"lead\").aggregate(\"lastUpdated:approximateDistinct\");\n base.pivotTo(\"lead\").aggregate(\"lastUpdated:exactDistinct\");\n base.pivotTo(\"lead\").aggregate(\"lastUpdated:max\");\n base.pivotTo(\"lead\").aggregate(\"lastUpdated:min\");\n base.pivotTo(\"lead\").aggregate(\"lastUpdated:collectList\");\n return base.pivotTo(\"lead\").aggregate(\"lastUpdated:collectSet\");\n },\n \"dateOfJoining\": (base) => {\n base.pivotTo(\"lead\").aggregate(\"dateOfJoining:approximateDistinct\");\n base.pivotTo(\"lead\").aggregate(\"dateOfJoining:exactDistinct\");\n base.pivotTo(\"lead\").aggregate(\"dateOfJoining:max\");\n base.pivotTo(\"lead\").aggregate(\"dateOfJoining:min\");\n base.pivotTo(\"lead\").aggregate(\"dateOfJoining:collectList\");\n return base.pivotTo(\"lead\").aggregate(\"dateOfJoining:collectSet\");\n },\n });\n });\n\n it(\"has correct aggregation return types\", async () => {\n const aggTestObjectSet = fauxObjectSet.withProperties({\n \"maxHasSameType\": (base) =>\n base.pivotTo(\"lead\").aggregate(\"dateOfJoining:max\"),\n \"minHasSameType\": (base) =>\n base.pivotTo(\"lead\").aggregate(\"dateOfJoining:min\"),\n \"approximateDistinctNumberNoUndefined\": (base) =>\n base.pivotTo(\"lead\").aggregate(\"employeeId:approximateDistinct\"),\n \"exactDistinctNumberNoUndefined\": (base) =>\n base.pivotTo(\"lead\").aggregate(\"employeeId:exactDistinct\"),\n \"countNumberNoUndefined\": (base) =>\n base.pivotTo(\"lead\").aggregate(\"$count\"),\n \"sumNumber\": (base) => base.pivotTo(\"lead\").aggregate(\"employeeId:sum\"),\n \"avgNumber\": (base) => base.pivotTo(\"lead\").aggregate(\"employeeId:avg\"),\n }).fetchPage();\n\n const result = (await aggTestObjectSet).data[0];\n expectTypeOf((await aggTestObjectSet).data[0]).toEqualTypeOf<\n Osdk.Instance<EmployeeApiTest, never, PropertyKeys<EmployeeApiTest>, {\n maxHasSameType: \"datetime\" | undefined;\n minHasSameType: \"datetime\" | undefined;\n avgNumber: \"double\" | undefined;\n approximateDistinctNumberNoUndefined: \"integer\";\n exactDistinctNumberNoUndefined: \"integer\";\n countNumberNoUndefined: \"integer\";\n sumNumber: \"double\" | undefined;\n }>\n >();\n\n expectTypeOf(result.maxHasSameType).toEqualTypeOf<string | undefined>();\n expectTypeOf(result.minHasSameType).toEqualTypeOf<string | undefined>();\n expectTypeOf(result.approximateDistinctNumberNoUndefined).toEqualTypeOf<\n number\n >();\n expectTypeOf(result.exactDistinctNumberNoUndefined).toEqualTypeOf<\n number\n >();\n expectTypeOf(result.countNumberNoUndefined).toEqualTypeOf<number>();\n expectTypeOf(result.sumNumber).toEqualTypeOf<number | undefined>();\n expectTypeOf(result.avgNumber).toEqualTypeOf<number | undefined>();\n });\n\n it(\"Merged object type is equivalent to original\", () => {\n const a = {} as EmployeeApiTest;\n let b = {} as DerivedObjectOrInterfaceDefinition.WithDerivedProperties<\n EmployeeApiTest,\n {}\n >;\n\n b = a; // should be assignable. testing explicitly due to break in 2.2 release.\n\n expectTypeOf<\n EmployeeApiTest\n >().branded.toEqualTypeOf<\n DerivedObjectOrInterfaceDefinition.WithDerivedProperties<\n EmployeeApiTest,\n {}\n >\n >();\n });\n });\n describe(\"aggregate\", () => {\n it(\"has correct aggregation keys\", () => {\n void fauxObjectSet.aggregate({\n \"$select\": {\n \"lastUpdated:max\": \"asc\",\n \"lastUpdated:min\": \"desc\",\n \"lastUpdated:approximateDistinct\": \"asc\",\n \"lastUpdated:exactDistinct\": \"desc\",\n \"dateOfJoining:max\": \"desc\",\n \"dateOfJoining:min\": \"asc\",\n \"dateOfJoining:approximateDistinct\": \"asc\",\n \"dateOfJoining:exactDistinct\": \"desc\",\n },\n });\n });\n });\n describe(\"expressions\", () => {\n \"Test all property types\";\n describe(\"numeric expressions\", () => {\n it(\"provides correct methods off of selected numeric derived property definitions\", () => {\n const objectSet = fauxObjectSet.withProperties({\n \"myProp1\": (base) => {\n const selectedInteger = base.pivotTo(\"lead\").selectProperty(\n \"employeeId\",\n );\n\n expectTypeOf(selectedInteger).toEqualTypeOf<\n DerivedProperty.NumericPropertyDefinition<\n \"integer\" | undefined,\n EmployeeApiTest\n >\n >;\n\n selectedInteger.add(1);\n selectedInteger.subtract(1);\n selectedInteger.multiply(1);\n selectedInteger.divide(1);\n selectedInteger.abs();\n selectedInteger.negate();\n selectedInteger.max(1);\n selectedInteger.min(1);\n\n // @ts-expect-error\n selectedInteger.extractPart(\"1\");\n\n expectTypeOf(\n base.pivotTo(\"lead\").selectProperty(\n \"performanceScore\",\n ),\n ).toEqualTypeOf<\n DerivedProperty.NumericPropertyDefinition<\n \"double\" | undefined,\n EmployeeApiTest\n >\n >();\n expectTypeOf(\n base.pivotTo(\"lead\").selectProperty(\n \"rank\",\n ),\n ).toEqualTypeOf<\n DerivedProperty.NumericPropertyDefinition<\n \"short\" | undefined,\n EmployeeApiTest\n >\n >();\n expectTypeOf(\n base.pivotTo(\"lead\").selectProperty(\n \"yearsOfExperience\",\n ),\n ).toEqualTypeOf<\n DerivedProperty.NumericPropertyDefinition<\n \"long\" | undefined,\n EmployeeApiTest\n >\n >();\n expectTypeOf(\n base.pivotTo(\"lead\").selectProperty(\n \"hourlyRate\",\n ),\n ).toEqualTypeOf<\n DerivedProperty.NumericPropertyDefinition<\n \"float\" | undefined,\n EmployeeApiTest\n >\n >();\n\n return selectedInteger;\n },\n });\n });\n\n it(\"provides correct methods off of selection definitions\", () => {\n const objectSet = fauxObjectSet.withProperties({\n \"myProp1\": (base) => {\n const selectedInteger = base.pivotTo(\"lead\").selectProperty(\n \"employeeId\",\n );\n\n expectTypeOf(selectedInteger).toEqualTypeOf<\n DerivedProperty.NumericPropertyDefinition<\n \"integer\" | undefined,\n EmployeeApiTest\n >\n >;\n\n selectedInteger.add(1);\n selectedInteger.subtract(1);\n selectedInteger.multiply(1);\n selectedInteger.divide(1);\n selectedInteger.abs();\n selectedInteger.negate();\n selectedInteger.max(1);\n selectedInteger.min(1);\n\n // @ts-expect-error\n selectedInteger.extractPart(\"1\");\n\n expectTypeOf(\n base.pivotTo(\"lead\").selectProperty(\n \"performanceScore\",\n ),\n ).toEqualTypeOf<\n DerivedProperty.NumericPropertyDefinition<\n \"double\" | undefined,\n EmployeeApiTest\n >\n >();\n expectTypeOf(\n base.pivotTo(\"lead\").selectProperty(\n \"rank\",\n ),\n ).toEqualTypeOf<\n DerivedProperty.NumericPropertyDefinition<\n \"short\" | undefined,\n EmployeeApiTest\n >\n >();\n expectTypeOf(\n base.pivotTo(\"lead\").selectProperty(\n \"yearsOfExperience\",\n ),\n ).toEqualTypeOf<\n DerivedProperty.NumericPropertyDefinition<\n \"long\" | undefined,\n EmployeeApiTest\n >\n >();\n expectTypeOf(\n base.pivotTo(\"lead\").selectProperty(\n \"hourlyRate\",\n ),\n ).toEqualTypeOf<\n DerivedProperty.NumericPropertyDefinition<\n \"float\" | undefined,\n EmployeeApiTest\n >\n >();\n\n return selectedInteger;\n },\n });\n });\n\n it(\"provides correct methods off of aggregated properties\", () => {\n const objectSet = fauxObjectSet.withProperties({\n \"myProp1\": (base) => {\n const maxAggregation = base.pivotTo(\"lead\").aggregate(\n \"employeeId:max\",\n );\n\n expectTypeOf(maxAggregation).toEqualTypeOf<\n DerivedProperty.NumericPropertyDefinition<\n \"integer\" | undefined,\n EmployeeApiTest\n >\n >;\n\n maxAggregation.add(1);\n maxAggregation.subtract(1);\n maxAggregation.multiply(1);\n maxAggregation.divide(1);\n maxAggregation.abs();\n maxAggregation.negate();\n maxAggregation.max(1);\n maxAggregation.min(1);\n\n expectTypeOf(\n base.pivotTo(\"peeps\").aggregate(\"employeeId:sum\"),\n ).toEqualTypeOf<\n DerivedProperty.NumericPropertyDefinition<\n \"double\" | undefined,\n EmployeeApiTest\n >\n >();\n\n expectTypeOf(\n base.pivotTo(\"peeps\").aggregate(\"employeeId:avg\"),\n ).toEqualTypeOf<\n DerivedProperty.NumericPropertyDefinition<\n \"double\" | undefined,\n EmployeeApiTest\n >\n >();\n\n expectTypeOf(\n base.pivotTo(\"peeps\").aggregate(\"employeeId:min\"),\n ).toEqualTypeOf<\n DerivedProperty.NumericPropertyDefinition<\n \"integer\" | undefined,\n EmployeeApiTest\n >\n >();\n\n const collectList = base.pivotTo(\"peeps\").aggregate(\n \"employeeId:collectList\",\n );\n expectTypeOf(\n collectList,\n ).toEqualTypeOf<\n DerivedProperty.Definition<\n \"integer\"[] | undefined,\n EmployeeApiTest\n >\n >();\n\n // @ts-expect-error\n collectList.plus(1);\n\n expectTypeOf(\n base.pivotTo(\"peeps\").aggregate(\n \"employeeId:collectList\",\n ),\n ).toEqualTypeOf<\n DerivedProperty.Definition<\n \"integer\"[] | undefined,\n EmployeeApiTest\n >\n >();\n\n return maxAggregation;\n },\n });\n });\n\n it(\"correctly coerces numeric types\", () => {\n const objectSet = fauxObjectSet.withProperties({\n \"myProp1\": (base) => {\n const intAndLong = base.pivotTo(\"lead\").selectProperty(\"employeeId\")\n .add(base.selectProperty(\"yearsOfExperience\")).add(\n base.selectProperty(\"employeeId\"),\n );\n expectTypeOf(intAndLong).toEqualTypeOf<\n DerivedProperty.NumericPropertyDefinition<\"long\", EmployeeApiTest>\n >();\n\n const intAndDouble = base.pivotTo(\"lead\").selectProperty(\n \"employeeId\",\n )\n .add(base.selectProperty(\"performanceScore\")).add(\n base.selectProperty(\"employeeId\"),\n );\n expectTypeOf(intAndDouble).toEqualTypeOf<\n DerivedProperty.NumericPropertyDefinition<\n \"double\",\n EmployeeApiTest\n >\n >();\n\n const longAndDouble = base.pivotTo(\"lead\").selectProperty(\n \"yearsOfExperience\",\n )\n .add(base.selectProperty(\"performanceScore\")).add(\n base.selectProperty(\"yearsOfExperience\"),\n );\n expectTypeOf(longAndDouble).toEqualTypeOf<\n DerivedProperty.NumericPropertyDefinition<\n \"double\",\n EmployeeApiTest\n >\n >();\n\n const longAndLong = base.pivotTo(\"lead\").selectProperty(\n \"yearsOfExperience\",\n )\n .add(base.selectProperty(\"yearsOfExperience\"));\n expectTypeOf(longAndLong).toEqualTypeOf<\n DerivedProperty.NumericPropertyDefinition<\"long\", EmployeeApiTest>\n >();\n\n const intAndInt = base.pivotTo(\"lead\").selectProperty(\"employeeId\")\n .add(base.selectProperty(\"employeeId\"));\n expectTypeOf(intAndInt).toEqualTypeOf<\n DerivedProperty.NumericPropertyDefinition<\n \"integer\",\n EmployeeApiTest\n >\n >();\n\n const intLongDoubleChain = base.pivotTo(\"lead\").selectProperty(\n \"employeeId\",\n ).add(base.selectProperty(\"yearsOfExperience\")).add(\n base.selectProperty(\"employeeId\"),\n ).add(\n base.selectProperty(\"performanceScore\"),\n ).add(base.selectProperty(\"employeeId\"));\n expectTypeOf(intLongDoubleChain).toEqualTypeOf<\n DerivedProperty.NumericPropertyDefinition<\n \"double\",\n EmployeeApiTest\n >\n >();\n\n const shortAndIntReturnsInt = base.pivotTo(\"lead\").selectProperty(\n \"rank\",\n ).add(base.selectProperty(\"employeeId\"));\n expectTypeOf(shortAndIntReturnsInt).toEqualTypeOf<\n DerivedProperty.NumericPropertyDefinition<\n \"integer\",\n EmployeeApiTest\n >\n >();\n\n const shortAndFloatReturnsDouble = base.pivotTo(\"lead\")\n .selectProperty(\n \"rank\",\n ).add(base.selectProperty(\"hourlyRate\"));\n expectTypeOf(shortAndFloatReturnsDouble).toEqualTypeOf<\n DerivedProperty.NumericPropertyDefinition<\n \"double\",\n EmployeeApiTest\n >\n >();\n\n return intLongDoubleChain;\n },\n });\n });\n\n it(\"allows adding number literals as a double\", () => {\n const objectSet = fauxObjectSet.withProperties({\n \"myProp1\": (base) => {\n const plus = base.pivotTo(\"lead\").selectProperty(\"employeeId\")\n .add(1);\n expectTypeOf(plus).toEqualTypeOf<\n DerivedProperty.NumericPropertyDefinition<\n \"double\",\n EmployeeApiTest\n >\n >();\n\n return plus;\n },\n });\n });\n\n it(\"allows adding literals via base.constant\", () => {\n const objectSet = fauxObjectSet.withProperties({\n \"myProp1\": (base) => {\n const plus = base.pivotTo(\"lead\").selectProperty(\"employeeId\")\n .add(base.constant.double(1));\n expectTypeOf(plus).toEqualTypeOf<\n DerivedProperty.NumericPropertyDefinition<\n \"double\",\n EmployeeApiTest\n >\n >();\n\n const intPlusIntReturnsInt = base.pivotTo(\"lead\").selectProperty(\n \"employeeId\",\n )\n .add(base.constant.integer(1));\n expectTypeOf(intPlusIntReturnsInt).toEqualTypeOf<\n DerivedProperty.NumericPropertyDefinition<\n \"integer\",\n EmployeeApiTest\n >\n >();\n\n return plus;\n },\n });\n });\n\n it(\"allows correctly typed nested property definitions\", () => {\n const objectSet = fauxObjectSet.withProperties({\n \"myProp1\": (base) => {\n const nested = base.pivotTo(\"lead\").selectProperty(\"employeeId\")\n .add(\n base.pivotTo(\"peeps\").aggregate(\"employeeId:sum\"),\n );\n expectTypeOf(nested).toEqualTypeOf<\n DerivedProperty.NumericPropertyDefinition<\n \"double\",\n EmployeeApiTest\n >\n >();\n\n return nested;\n },\n });\n });\n\n it(\"allows correctly types property keys off the linked OT\", () => {\n const objectSet = fauxObjectSet.withProperties({\n \"myProp1\": (base) => {\n const nested = base.pivotTo(\"lead\").selectProperty(\"employeeId\")\n .add(\n base.selectProperty(\"performanceScore\"),\n );\n expectTypeOf(nested).toEqualTypeOf<\n DerivedProperty.NumericPropertyDefinition<\n \"double\",\n EmployeeApiTest\n >\n >();\n\n return nested;\n },\n });\n });\n\n // it(\"allows correctly types property keys off the base OT\", () => {});\n });\n describe(\"datetime expressions\", () => {\n it(\"provides correct methods off of datetime selections\", () => {\n const objectSet = fauxObjectSet.withProperties({\n \"myProp1\": (base) => {\n const selectedDatetime = base.pivotTo(\"lead\").selectProperty(\n \"dateOfJoining\",\n );\n\n expectTypeOf(selectedDatetime).toEqualTypeOf<\n DerivedProperty.DatetimePropertyDefinition<\n \"datetime\" | undefined,\n EmployeeApiTest\n >\n >();\n\n selectedDatetime.max(base.selectProperty(\"dateOfJoining\"));\n selectedDatetime.min(base.selectProperty(\"lastUpdated\"));\n\n expectTypeOf(base.pivotTo(\"lead\").selectProperty(\"lastUpdated\"))\n .toEqualTypeOf<\n DerivedProperty.DatetimePropertyDefinition<\n \"timestamp\" | undefined,\n EmployeeApiTest\n >\n >();\n\n return selectedDatetime;\n },\n });\n });\n\n it(\"correctly coerces datetime types\", () => {\n const objectSet = fauxObjectSet.withProperties({\n \"myProp1\": (base) => {\n const max = base.pivotTo(\"lead\").selectProperty(\"dateOfJoining\")\n .max(base.selectProperty(\"lastUpdated\"));\n expectTypeOf(max).toEqualTypeOf<\n DerivedProperty.DatetimePropertyDefinition<\n \"timestamp\",\n EmployeeApiTest\n >\n >();\n\n const min = base.pivotTo(\"lead\").selectProperty(\"dateOfJoining\")\n .min(base.selectProperty(\"dateOfJoining\"));\n expectTypeOf(min).toEqualTypeOf<\n DerivedProperty.DatetimePropertyDefinition<\n \"datetime\",\n EmployeeApiTest\n >\n >();\n\n return max;\n },\n });\n });\n\n it(\"allows adding literals via base.constant\", () => {\n const objectSet = fauxObjectSet.withProperties({\n \"myProp1\": (base) => {\n const dateAndDateReturnDate = base.pivotTo(\"lead\").selectProperty(\n \"dateOfJoining\",\n )\n .min(base.constant.datetime(\"2025-01-01T00:00:00Z\"));\n expectTypeOf(dateAndDateReturnDate).toEqualTypeOf<\n DerivedProperty.DatetimePropertyDefinition<\n \"datetime\",\n EmployeeApiTest\n >\n >();\n\n const dateAndTimeReturnTime = base.pivotTo(\"lead\").selectProperty(\n \"dateOfJoining\",\n )\n .min(base.constant.timestamp(\"2025-01-01T00:00:00Z\"));\n expectTypeOf(dateAndTimeReturnTime).toEqualTypeOf<\n DerivedProperty.DatetimePropertyDefinition<\n \"timestamp\",\n EmployeeApiTest\n >\n >();\n\n return dateAndTimeReturnTime;\n },\n });\n });\n\n it(\"allows correctly typed nested property definitions\", () => {\n const objectSet = fauxObjectSet.withProperties({\n \"myProp1\": (base) => {\n const nested = base.pivotTo(\"lead\").selectProperty(\"dateOfJoining\")\n .min(\n base.pivotTo(\"lead\").pivotTo(\"lead\").selectProperty(\n \"lastUpdated\",\n ),\n );\n expectTypeOf(nested).toEqualTypeOf<\n DerivedProperty.DatetimePropertyDefinition<\n \"timestamp\",\n EmployeeApiTest\n >\n >();\n\n return nested;\n },\n });\n });\n\n it(\"allows correctly typed property keys off the linked OT\", () => {\n const objectSet = fauxObjectSet.withProperties({\n \"myProp1\": (base) => {\n const nested = base.pivotTo(\"lead\").selectProperty(\"dateOfJoining\")\n .min(\n base.selectProperty(\"lastUpdated\"),\n );\n expectTypeOf(nested).toEqualTypeOf<\n DerivedProperty.DatetimePropertyDefinition<\n \"timestamp\",\n EmployeeApiTest\n >\n >();\n\n return nested;\n },\n });\n });\n\n // it(\"allows correctly typed property keys off the base OT\", () => {});\n });\n });\n\n describe(\"nearestNeighbors\", () => {\n it(\"has correct nearest neighbors object set query return type\", () => {\n const nearestNeighborsObjectSet = fauxObjectSet.nearestNeighbors(\n \"textQuery\",\n 3,\n \"skillSetEmbedding\",\n );\n expectTypeOf(nearestNeighborsObjectSet).toEqualTypeOf<\n $ObjectSet<EmployeeApiTest>\n >();\n });\n\n it(\"allows text queries\", async () => {\n const nearestNeighborsObjectSet = fauxObjectSet.nearestNeighbors(\n \"textQuery\",\n 3,\n \"skillSetEmbedding\",\n );\n const { data: employees } = await nearestNeighborsObjectSet.fetchPage();\n expectTypeOf(employees).toEqualTypeOf<\n Osdk.Instance<EmployeeApiTest, never, PropertyKeys<EmployeeApiTest>>[]\n >();\n });\n\n it(\"allows vector queries\", async () => {\n const vectorQuery = Array.from({ length: 1536 }, () => 0.3);\n const nearestNeighborsObjectSet = fauxObjectSet.nearestNeighbors(\n vectorQuery,\n 3,\n \"skillSetEmbedding\",\n );\n const { data: employees } = await nearestNeighborsObjectSet.fetchPage();\n expectTypeOf(employees).toEqualTypeOf<\n Osdk.Instance<EmployeeApiTest, never, PropertyKeys<EmployeeApiTest>>[]\n >();\n });\n\n it(\"only supports queries on vector properties\", () => {\n fauxObjectSet.nearestNeighbors(\n \"textQuery\",\n 3,\n // @ts-expect-error\n \"skillSet\",\n );\n });\n\n it(\"appropriately types fetchPage ordered by relevance\", async () => {\n const nearestNeighborsObjectSet = await fauxObjectSet.nearestNeighbors(\n \"textQuery\",\n 3,\n \"skillSetEmbedding\",\n ).fetchPage({ $orderBy: \"relevance\" });\n\n type expectedType =\n & Osdk.Instance<\n EmployeeApiTest,\n never,\n PropertyKeys<EmployeeApiTest>,\n {}\n >\n & { $score: number };\n\n expectTypeOf(nearestNeighborsObjectSet.data[0]).toEqualTypeOf<\n expectedType\n >();\n });\n\n it(\"appropriately types fetchPageWithErrors ordered by relevance\", async () => {\n const nearestNeighborsObjectSetWithErrors = await fauxObjectSet\n .nearestNeighbors(\n \"textQuery\",\n 3,\n \"skillSetEmbedding\",\n ).fetchPageWithErrors({ $orderBy: \"relevance\" });\n\n type expectedType =\n & Osdk.Instance<\n EmployeeApiTest,\n never,\n PropertyKeys<EmployeeApiTest>,\n {}\n >\n & { $score: number };\n expectTypeOf(nearestNeighborsObjectSetWithErrors.value!.data[0])\n .toEqualTypeOf<expectedType>();\n });\n\n it(\"appropriately types asyncIters ordered by relevance\", () => {\n const asyncIter = fauxObjectSet.nearestNeighbors(\n \"textQuery\",\n 3,\n \"skillSetEmbedding\",\n ).asyncIter(\n { $orderBy: \"relevance\" },\n );\n\n type expectedType = AsyncIterableIterator<\n & Osdk.Instance<\n EmployeeApiTest,\n never,\n PropertyKeys<EmployeeApiTest>,\n {}\n >\n & { $score: number }\n >;\n expectTypeOf(asyncIter).toEqualTypeOf<expectedType>();\n });\n\n it(\"no arbitrary order bys\", () => {\n const knn = fauxObjectSet.nearestNeighbors(\n \"textQuery\",\n 3,\n \"skillSetEmbedding\",\n );\n\n // @ts-expect-error\n void knn.fetchPage({ $orderBy: \"invalid\" });\n // @ts-expect-error\n void knn.fetchPageWithErrors({ $orderBy: \"invalid\" });\n // @ts-expect-error\n void knn.asyncIter({ $orderBy: \"random\" });\n });\n\n it(\"does not include score for property order by\", async () => {\n const nearestNeighborsObjectSet = await fauxObjectSet.nearestNeighbors(\n \"textQuery\",\n 3,\n \"skillSetEmbedding\",\n ).fetchPage({ $orderBy: { \"fullName\": \"desc\" } });\n\n expectTypeOf(nearestNeighborsObjectSet.data[0]).not.toHaveProperty(\n \"$score\",\n );\n\n const nearestNeighborsObjectSetWithErrors = await fauxObjectSet\n .nearestNeighbors(\n \"textQuery\",\n 3,\n \"skillSetEmbedding\",\n ).fetchPageWithErrors({ $orderBy: { \"fullName\": \"desc\" } });\n\n expectTypeOf(nearestNeighborsObjectSetWithErrors.value?.data[0]).not\n .toHaveProperty(\"$score\");\n });\n });\n describe(\"narrowToType\", () => {\n it(\"restricts casting from interface to object type\", () => {\n const objectSet = { narrowToType: () => {} } as unknown as $ObjectSet<\n FooInterfaceApiTest\n >;\n\n objectSet.narrowToType(EmployeeApiTest);\n\n objectSet.narrowToType(FooInterfaceApiTest);\n\n objectSet.narrowToType({ type: \"interface\", apiName: \"AnyInterface :)\" });\n\n // @ts-expect-error\n objectSet.narrowToType({ type: \"object\", apiName: \"NotImplemented\" });\n\n // Interfaces that don't have any implementedBy fields should still accept any interface\n const objectSet2 = { narrowToType: () => {} } as unknown as $ObjectSet<\n FooInterfaceApiTest & { __DefinitionMetadata: { implementedBy: [] } }\n >;\n\n objectSet2.narrowToType({ type: \"interface\", apiName: \"NotImplemented\" });\n });\n it(\"restricts casting from object type to interface\", () => {\n const objectSet = {} as $ObjectSet<EmployeeApiTest>;\n type narrowToTypeAllowedInterfaceTypes = Parameters<\n typeof objectSet.narrowToType\n >[0][\"apiName\"];\n type narrowToTypeAllowedTypes = Parameters<\n typeof objectSet.narrowToType\n >[0][\"type\"];\n\n expectTypeOf<narrowToTypeAllowedTypes>().toEqualTypeOf<\"interface\">();\n\n expectTypeOf<narrowToTypeAllowedInterfaceTypes>().toEqualTypeOf<\n \"FooInterface\"\n >();\n });\n });\n\n describe(\"asyncIterLinks\", async () => {\n it(\"typechecks self-referential one link\", async () => {\n for await (\n const { source, target, linkType } of fauxObjectSet\n .experimental_asyncIterLinks([\n \"lead\",\n ])\n ) {\n expectTypeOf(source).toEqualTypeOf<\n ObjectIdentifiers<EmployeeApiTest>\n >();\n\n expectTypeOf(target).toEqualTypeOf<\n ObjectIdentifiers<EmployeeApiTest>\n >();\n\n expectTypeOf(source.$apiName).toBeString();\n expectTypeOf(target.$apiName).toBeString();\n expectTypeOf(source.$primaryKey).toBeNumber();\n expectTypeOf(target.$primaryKey).toBeNumber();\n\n expectTypeOf(linkType).toEqualTypeOf<\"lead\">();\n }\n });\n\n it(\"typechecks self-referential multiple links\", async () => {\n for await (\n const { source, target, linkType } of fauxObjectSet\n .experimental_asyncIterLinks([\n \"lead\",\n \"peeps\",\n ])\n ) {\n expectTypeOf(source).toEqualTypeOf<\n ObjectIdentifiers<EmployeeApiTest>\n >();\n\n expectTypeOf(target).toEqualTypeOf<\n ObjectIdentifiers<EmployeeApiTest>\n >();\n\n expectTypeOf(source.$apiName).toBeString();\n expectTypeOf(target.$apiName).toBeString();\n expectTypeOf(source.$primaryKey).toBeNumber();\n expectTypeOf(target.$primaryKey).toBeNumber();\n\n expectTypeOf(linkType).toEqualTypeOf<\"lead\" | \"peeps\">();\n }\n });\n });\n});\n"],"mappings":"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","ignoreList":[]}