@osdk/api 2.6.0-beta.3 → 2.6.0-beta.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +12 -0
- package/build/browser/aggregate/WhereClause.js.map +1 -1
- package/build/browser/index.js.map +1 -1
- package/build/browser/objectSet/ObjectSet.js.map +1 -1
- package/build/browser/objectSet/ObjectSet.test.js +9 -0
- package/build/browser/objectSet/ObjectSet.test.js.map +1 -1
- package/build/cjs/{ObjectSet-CeNijIU7.d.cts → ObjectSet-CYwpugPK.d.cts} +15 -14
- package/build/cjs/index.d.cts +2 -2
- package/build/cjs/public/unstable.d.cts +2 -2
- package/build/esm/aggregate/WhereClause.js.map +1 -1
- package/build/esm/index.js.map +1 -1
- package/build/esm/objectSet/ObjectSet.js.map +1 -1
- package/build/esm/objectSet/ObjectSet.test.js +9 -0
- package/build/esm/objectSet/ObjectSet.test.js.map +1 -1
- package/build/types/aggregate/WhereClause.d.ts +28 -11
- package/build/types/aggregate/WhereClause.d.ts.map +1 -1
- package/build/types/index.d.ts +3 -2
- package/build/types/index.d.ts.map +1 -1
- package/build/types/objectSet/ObjectSet.d.ts +3 -3
- package/build/types/objectSet/ObjectSet.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ObjectSet.test.js","names":["describe","expectTypeOf","it","test","vi","EmployeeApiTest","FooInterfaceApiTest","createMockObjectSet","fauxObject","fauxResults","fauxObjectSet","$link","peeps","$objectSetInternals","def","data","where","fn","withProperties","fetchPage","Promise","resolve","fetchPageWithErrors","value","fetchOne","asyncIter","aggregate","pivotTo","nearestNeighbors","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","asType","type","apiName"],"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 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\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 } 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(\"asType\", () => {\n it(\"restricts casting from interface to object type\", () => {\n const objectSet = { asType: () => {} } as unknown as $ObjectSet<\n FooInterfaceApiTest\n >;\n\n objectSet.asType(EmployeeApiTest);\n\n objectSet.asType(FooInterfaceApiTest);\n\n objectSet.asType({ type: \"interface\", apiName: \"AnyInterface :)\" });\n\n // @ts-expect-error\n objectSet.asType({ type: \"object\", apiName: \"NotImplemented\" });\n });\n it(\"restricts casting from object type to interface\", () => {\n const objectSet = {} as $ObjectSet<EmployeeApiTest>;\n type AsTypeAllowedInterfaceTypes = Parameters<\n typeof objectSet.asType\n >[0][\"apiName\"];\n type AsTypeAllowedTypes = Parameters<\n typeof objectSet.asType\n >[0][\"type\"];\n\n expectTypeOf<AsTypeAllowedTypes>().toEqualTypeOf<\"interface\">();\n\n expectTypeOf<AsTypeAllowedInterfaceTypes>().toEqualTypeOf<\n \"FooInterface\"\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","createMockObjectSet","fauxObject","fauxResults","fauxObjectSet","$link","peeps","$objectSetInternals","def","data","where","fn","withProperties","fetchPage","Promise","resolve","fetchPageWithErrors","value","fetchOne","asyncIter","aggregate","pivotTo","nearestNeighbors","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","asType","type","apiName"],"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 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\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 } 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(\"asType\", () => {\n it(\"restricts casting from interface to object type\", () => {\n const objectSet = { asType: () => {} } as unknown as $ObjectSet<\n FooInterfaceApiTest\n >;\n\n objectSet.asType(EmployeeApiTest);\n\n objectSet.asType(FooInterfaceApiTest);\n\n objectSet.asType({ type: \"interface\", apiName: \"AnyInterface :)\" });\n\n // @ts-expect-error\n objectSet.asType({ type: \"object\", apiName: \"NotImplemented\" });\n\n // Interfaces that don't have any implementedBy fields should still accept any interface\n const objectSet2 = { asType: () => {} } as unknown as $ObjectSet<\n FooInterfaceApiTest & { __DefinitionMetadata: { implementedBy: [] } }\n >;\n\n objectSet2.asType({ type: \"interface\", apiName: \"NotImplemented\" });\n });\n it(\"restricts casting from object type to interface\", () => {\n const objectSet = {} as $ObjectSet<EmployeeApiTest>;\n type AsTypeAllowedInterfaceTypes = Parameters<\n typeof objectSet.asType\n >[0][\"apiName\"];\n type AsTypeAllowedTypes = Parameters<\n typeof objectSet.asType\n >[0][\"type\"];\n\n expectTypeOf<AsTypeAllowedTypes>().toEqualTypeOf<\"interface\">();\n\n expectTypeOf<AsTypeAllowedInterfaceTypes>().toEqualTypeOf<\n \"FooInterface\"\n >();\n });\n });\n});\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1225,19 +1225,20 @@ type StructFilter<ST extends Record<string, BaseWirePropertyTypes>> = {
|
|
|
1225
1225
|
}[keyof ST];
|
|
1226
1226
|
type PropertyTypesRepresentedAsStringsForArrayWhereClause = "string" | "geopoint" | "geoshape" | "datetime" | "timestamp";
|
|
1227
1227
|
type WhereClauseNumberPropertyTypes = "double" | "integer" | "long" | "float" | "decimal" | "byte";
|
|
1228
|
-
|
|
1229
|
-
$and: WhereClause<T>[];
|
|
1230
|
-
}
|
|
1231
|
-
|
|
1232
|
-
$or: WhereClause<T>[];
|
|
1233
|
-
}
|
|
1234
|
-
|
|
1235
|
-
$not: WhereClause<T>;
|
|
1236
|
-
}
|
|
1228
|
+
type AndWhereClause<T extends ObjectOrInterfaceDefinition, RDPs extends Record<string, SimplePropertyDef> = {}> = {
|
|
1229
|
+
$and: WhereClause<T, RDPs>[];
|
|
1230
|
+
};
|
|
1231
|
+
type OrWhereClause<T extends ObjectOrInterfaceDefinition, RDPs extends Record<string, SimplePropertyDef> = {}> = {
|
|
1232
|
+
$or: WhereClause<T, RDPs>[];
|
|
1233
|
+
};
|
|
1234
|
+
type NotWhereClause<T extends ObjectOrInterfaceDefinition, RDPs extends Record<string, SimplePropertyDef> = {}> = {
|
|
1235
|
+
$not: WhereClause<T, RDPs>;
|
|
1236
|
+
};
|
|
1237
1237
|
type PropertyWhereClause<T extends ObjectOrInterfaceDefinition> = {
|
|
1238
1238
|
[P in keyof CompileTimeMetadata<T>["properties"]]?: FilterFor<CompileTimeMetadata<T>["properties"][P]>;
|
|
1239
1239
|
};
|
|
1240
|
-
type
|
|
1240
|
+
type MergedPropertyWhereClause<T extends ObjectOrInterfaceDefinition, RDPs extends Record<string, SimplePropertyDef> = {}> = PropertyWhereClause<DerivedObjectOrInterfaceDefinition.WithDerivedProperties<T, RDPs>>;
|
|
1241
|
+
type WhereClause<T extends ObjectOrInterfaceDefinition, RDPs extends Record<string, SimplePropertyDef> = {}> = OrWhereClause<T, RDPs> | AndWhereClause<T, RDPs> | NotWhereClause<T, RDPs> | (IsNever<keyof CompileTimeMetadata<T>["properties"]> extends true ? Record<string, never> : MergedPropertyWhereClause<T, RDPs>);
|
|
1241
1242
|
|
|
1242
1243
|
type LinkNames<Q extends ObjectOrInterfaceDefinition> = Q extends InterfaceDefinition ? keyof CompileTimeMetadata<Q>["links"] : keyof CompileTimeMetadata<Q>["links"] & string;
|
|
1243
1244
|
type LinkedType<Q extends ObjectOrInterfaceDefinition, L extends LinkNames<Q>> = NonNullable<CompileTimeMetadata<Q>["links"][L]["__OsdkLinkTargetType"]>;
|
|
@@ -1594,11 +1595,11 @@ type ExtractImplementedInterfaces<T extends ObjectTypeDefinition> = CompileTimeM
|
|
|
1594
1595
|
apiName: API_NAME;
|
|
1595
1596
|
} : never : never;
|
|
1596
1597
|
type ExtractImplementingTypes<T extends InterfaceDefinition> = CompileTimeMetadata<T> extends {
|
|
1597
|
-
implementedBy: ReadonlyArray<infer API_NAME>;
|
|
1598
|
-
} ?
|
|
1598
|
+
implementedBy: ReadonlyArray<infer API_NAME extends string>;
|
|
1599
|
+
} ? (ObjectTypeDefinition & {
|
|
1599
1600
|
apiName: API_NAME;
|
|
1600
|
-
}) | InterfaceDefinition :
|
|
1601
|
+
}) | InterfaceDefinition : InterfaceDefinition;
|
|
1601
1602
|
interface ObjectSetCleanedTypes<Q extends ObjectOrInterfaceDefinition, D extends Record<string, SimplePropertyDef>, MERGED extends ObjectOrInterfaceDefinition & Q, ORDER_BY_OPTIONS extends ObjectSetArgs.OrderByOptions<PropertyKeys<Q>> = {}> extends MinimalObjectSet<Q, D, ORDER_BY_OPTIONS>, WithProperties<Q, D>, Aggregate<MERGED>, SetArithmetic<MERGED>, PivotTo<Q>, FetchOne<Q, D>, Subscribe<MERGED>, NearestNeighbors<Q>, AsType<Q> {
|
|
1602
1603
|
}
|
|
1603
1604
|
|
|
1604
|
-
export {
|
|
1605
|
+
export { isOk as $, type AttachmentUpload as A, type GroupByClause as B, type CompileTimeMetadata as C, DistanceUnitMapping as D, type GroupByRange as E, type AsyncIterArgs as F, type GeoFilterOptions as G, type Augment as H, type InterfaceDefinition as I, type Augments as J, type FetchPageArgs as K, NullabilityAdherence as L, type MediaReference as M, type NotWhereClause as N, type ObjectTypeDefinition as O, type PropertyValueWireToClient as P, ObjectSetArgs as Q, type ReleaseStatus as R, type SingleLinkAccessor as S, type SelectArg as T, type SelectArgToKeys as U, type ValidAggregationKeys as V, type WhereClause as W, type FetchPageResult as X, type SingleOsdkResult as Y, type Media as Z, type MediaMetadata as _, type MediaUpload as a, type ExtractOptions as a$, type Result as a0, type BaseObjectSet as a1, ObjectSetSubscription as a2, InterfaceMetadata as a3, PropertyKeys as a4, type ObjectSpecifier as a5, ObjectMetadata as a6, type PropertyDef as a7, type VersionBound as a8, SimplePropertyDef as a9, type NumberFormatScale as aA, type NumberFormatStandard as aB, type NumberFormatStandardUnit as aC, type NumberRatioType as aD, type NumberRoundingMode as aE, type NumberScaleType as aF, type PropertyNumberFormattingRule as aG, type PropertyNumberFormattingRuleType as aH, type TimeCodeFormat as aI, type PropertyValueFormattingRule as aJ, type PropertyTypeReference as aK, type PropertyTypeReferenceOrStringConstant as aL, type StringConstant as aM, type BaseWirePropertyTypes as aN, type WirePropertyTypes as aO, type PrimaryKeyType as aP, type ConvertProps as aQ, type MaybeScore as aR, Osdk as aS, type PageResult as aT, TimeseriesDurationMapping as aU, type GeotimeSeriesProperty as aV, type TimeSeriesPoint as aW, type TimeSeriesProperty as aX, type TimeSeriesQuery as aY, type LinkedType as aZ, type LinkNames as a_, type PropertyBooleanFormattingRule as aa, type DatetimeFormat as ab, type DatetimeLocalizedFormat as ac, type DatetimeLocalizedFormatType as ad, type DatetimeStringFormat as ae, type DatetimeTimezone as af, type DatetimeTimezoneStatic as ag, type DatetimeTimezoneUser as ah, type PropertyDateFormattingRule as ai, type PropertyTimestampFormattingRule as aj, type KnownType as ak, type PropertyKnownTypeFormattingRule as al, type Affix as am, type DurationBaseValue as an, type DurationFormatStyle as ao, type DurationPrecision as ap, type HumanReadableFormat as aq, type NumberFormatAffix as ar, type NumberFormatCurrency as as, type NumberFormatCurrencyStyle as at, type NumberFormatCustomUnit as au, type NumberFormatDuration as av, type NumberFormatFixedValues as aw, type NumberFormatNotation as ax, type NumberFormatOptions as ay, type NumberFormatRatio as az, type Attachment as b, type MinimalObjectSet as b0, type ObjectIdentifiers as c, type OsdkObjectPrimaryKeyType as d, type ObjectSet as e, type OsdkMetadata as f, type ObjectOrInterfaceDefinition as g, type PrimaryKeyTypes as h, type OsdkBase as i, type AggregateOpts as j, type AggregateOptsThatErrorsAndDisallowsOrderingWithMultipleGroupBy as k, type AggregationResultsWithGroups as l, type AggregationResultsWithoutGroups as m, type AggregationClause as n, type AggregationsResults as o, type AndWhereClause as p, type GeoFilter_Intersects as q, type GeoFilter_Within as r, type OrWhereClause as s, type PossibleWhereClauseFilters as t, type OsdkObjectCreatePropertyType as u, type OsdkObjectPropertyType as v, type OsdkObjectLinksObject as w, DerivedProperty as x, DurationMapping as y, type AllGroupByValues as z };
|
package/build/cjs/index.d.cts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { A as AttachmentUpload, M as MediaReference, a as MediaUpload, b as Attachment, O as ObjectTypeDefinition, c as ObjectIdentifiers, d as OsdkObjectPrimaryKeyType, e as ObjectSet, I as InterfaceDefinition, C as CompileTimeMetadata, f as OsdkMetadata, R as ReleaseStatus, g as ObjectOrInterfaceDefinition, P as PropertyValueWireToClient, h as PrimaryKeyTypes, i as OsdkBase } from './ObjectSet-
|
|
2
|
-
export {
|
|
1
|
+
import { A as AttachmentUpload, M as MediaReference, a as MediaUpload, b as Attachment, O as ObjectTypeDefinition, c as ObjectIdentifiers, d as OsdkObjectPrimaryKeyType, e as ObjectSet, I as InterfaceDefinition, C as CompileTimeMetadata, f as OsdkMetadata, R as ReleaseStatus, g as ObjectOrInterfaceDefinition, P as PropertyValueWireToClient, h as PrimaryKeyTypes, i as OsdkBase } from './ObjectSet-CYwpugPK.cjs';
|
|
2
|
+
export { am as Affix, j as AggregateOpts, k as AggregateOptsThatErrorsAndDisallowsOrderingWithMultipleGroupBy, n as AggregationClause, l as AggregationResultsWithGroups, m as AggregationResultsWithoutGroups, o as AggregationsResults, z as AllGroupByValues, p as AndWhereClause, F as AsyncIterArgs, H as Augment, J as Augments, a1 as BaseObjectSet, aN as BaseWirePropertyTypes, aQ as ConvertProps, ab as DatetimeFormat, ac as DatetimeLocalizedFormat, ad as DatetimeLocalizedFormatType, ae as DatetimeStringFormat, af as DatetimeTimezone, ag as DatetimeTimezoneStatic, ah as DatetimeTimezoneUser, x as DerivedProperty, D as DistanceUnitMapping, an as DurationBaseValue, ao as DurationFormatStyle, y as DurationMapping, ap as DurationPrecision, K as FetchPageArgs, X as FetchPageResult, G as GeoFilterOptions, q as GeoFilter_Intersects, r as GeoFilter_Within, aV as GeotimeSeriesProperty, B as GroupByClause, E as GroupByRange, aq as HumanReadableFormat, a3 as InterfaceMetadata, ak as KnownType, a_ as LinkNames, aZ as LinkedType, aR as MaybeScore, Z as Media, _ as MediaMetadata, N as NotWhereClause, L as NullabilityAdherence, ar as NumberFormatAffix, as as NumberFormatCurrency, at as NumberFormatCurrencyStyle, au as NumberFormatCustomUnit, av as NumberFormatDuration, aw as NumberFormatFixedValues, ax as NumberFormatNotation, ay as NumberFormatOptions, az as NumberFormatRatio, aA as NumberFormatScale, aB as NumberFormatStandard, aC as NumberFormatStandardUnit, aD as NumberRatioType, aE as NumberRoundingMode, aF as NumberScaleType, a6 as ObjectMetadata, Q as ObjectSetArgs, a2 as ObjectSetSubscription, a5 as ObjectSpecifier, s as OrWhereClause, aS as Osdk, u as OsdkObjectCreatePropertyType, w as OsdkObjectLinksObject, v as OsdkObjectPropertyType, aT as PageResult, t as PossibleWhereClauseFilters, aP as PrimaryKeyType, aa as PropertyBooleanFormattingRule, ai as PropertyDateFormattingRule, a7 as PropertyDef, a4 as PropertyKeys, al as PropertyKnownTypeFormattingRule, aG as PropertyNumberFormattingRule, aH as PropertyNumberFormattingRuleType, aj as PropertyTimestampFormattingRule, aK as PropertyTypeReference, aL as PropertyTypeReferenceOrStringConstant, aJ as PropertyValueFormattingRule, a0 as Result, T as SelectArg, U as SelectArgToKeys, a9 as SimplePropertyDef, S as SingleLinkAccessor, Y as SingleOsdkResult, aM as StringConstant, aI as TimeCodeFormat, aW as TimeSeriesPoint, aX as TimeSeriesProperty, aY as TimeSeriesQuery, aU as TimeseriesDurationMapping, V as ValidAggregationKeys, a8 as VersionBound, W as WhereClause, aO as WirePropertyTypes, $ as isOk } from './ObjectSet-CYwpugPK.cjs';
|
|
3
3
|
import 'type-fest';
|
|
4
4
|
import 'geojson';
|
|
5
5
|
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { g as ObjectOrInterfaceDefinition,
|
|
2
|
-
export {
|
|
1
|
+
import { g as ObjectOrInterfaceDefinition, a4 as PropertyKeys, M as MediaReference, O as ObjectTypeDefinition, L as NullabilityAdherence, T as SelectArg, aS as Osdk, a$ as ExtractOptions, K as FetchPageArgs, X as FetchPageResult, i as OsdkBase } from '../ObjectSet-CYwpugPK.cjs';
|
|
2
|
+
export { b0 as MinimalObjectSet } from '../ObjectSet-CYwpugPK.cjs';
|
|
3
3
|
import 'type-fest';
|
|
4
4
|
import 'geojson';
|
|
5
5
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WhereClause.js","names":["DistanceUnitMapping"],"sources":["WhereClause.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 { BBox, Point, Polygon } from \"geojson\";\nimport type {\n ObjectOrInterfaceDefinition,\n} from \"../ontology/ObjectOrInterface.js\";\nimport type {\n CompileTimeMetadata,\n ObjectMetadata,\n} from \"../ontology/ObjectTypeDefinition.js\";\nimport type { BaseWirePropertyTypes } from \"../ontology/WirePropertyTypes.js\";\nimport type { IsNever } from \"../OsdkObjectFrom.js\";\nimport type { ArrayFilter } from \"./ArrayFilter.js\";\nimport type { BaseFilter, EqFilter } from \"./BaseFilter.js\";\nimport type { BooleanFilter } from \"./BooleanFilter.js\";\nimport type { DatetimeFilter } from \"./DatetimeFilter.js\";\nimport type { GeoFilter } from \"./GeoFilter.js\";\nimport type { Just } from \"./Just.js\";\nimport type { NumberFilter } from \"./NumberFilter.js\";\nimport type { StringFilter } from \"./StringFilter.js\";\n\nexport type PossibleWhereClauseFilters =\n | \"$gt\"\n | \"$eq\"\n | \"$ne\"\n | \"$isNull\"\n | \"$contains\"\n | \"$gte\"\n | \"$lt\"\n | \"$lte\"\n | \"$within\"\n | \"$in\"\n | \"$intersects\"\n | \"$startsWith\"\n | \"$containsAllTermsInOrder\"\n | \"$containsAnyTerm\"\n | \"$containsAllTerms\";\n\n// the value side of this needs to match DistanceUnit from @osdk/foundry but we don't\n// want the dependency\nexport const DistanceUnitMapping: {\n centimeter: \"CENTIMETERS\";\n centimeters: \"CENTIMETERS\";\n cm: \"CENTIMETERS\";\n meter: \"METERS\";\n meters: \"METERS\";\n m: \"METERS\";\n kilometer: \"KILOMETERS\";\n kilometers: \"KILOMETERS\";\n km: \"KILOMETERS\";\n inch: \"INCHES\";\n inches: \"INCHES\";\n foot: \"FEET\";\n feet: \"FEET\";\n yard: \"YARDS\";\n yards: \"YARDS\";\n mile: \"MILES\";\n miles: \"MILES\";\n nautical_mile: \"NAUTICAL_MILES\";\n nauticalMile: \"NAUTICAL_MILES\";\n \"nautical miles\": \"NAUTICAL_MILES\";\n} = {\n \"centimeter\": \"CENTIMETERS\",\n \"centimeters\": \"CENTIMETERS\",\n \"cm\": \"CENTIMETERS\",\n \"meter\": \"METERS\",\n \"meters\": \"METERS\",\n \"m\": \"METERS\",\n \"kilometer\": \"KILOMETERS\",\n \"kilometers\": \"KILOMETERS\",\n \"km\": \"KILOMETERS\",\n \"inch\": \"INCHES\",\n \"inches\": \"INCHES\",\n \"foot\": \"FEET\",\n \"feet\": \"FEET\",\n \"yard\": \"YARDS\",\n \"yards\": \"YARDS\",\n \"mile\": \"MILES\",\n \"miles\": \"MILES\",\n \"nautical_mile\": \"NAUTICAL_MILES\",\n \"nauticalMile\": \"NAUTICAL_MILES\",\n \"nautical miles\": \"NAUTICAL_MILES\",\n} satisfies Record<\n string,\n | \"CENTIMETERS\"\n | \"METERS\"\n | \"KILOMETERS\"\n | \"INCHES\"\n | \"FEET\"\n | \"YARDS\"\n | \"MILES\"\n | \"NAUTICAL_MILES\"\n>;\n\nexport type GeoFilter_Within = {\n \"$within\":\n | {\n $distance: [number, keyof typeof DistanceUnitMapping];\n $of: [number, number] | Readonly<Point>;\n $bbox?: never;\n $polygon?: never;\n }\n | {\n $bbox: BBox;\n $distance?: never;\n $of?: never;\n $polygon?: never;\n }\n | BBox\n | {\n $polygon: Polygon[\"coordinates\"];\n $bbox?: never;\n $distance?: never;\n $of?: never;\n }\n | Polygon;\n};\n\nexport type GeoFilter_Intersects = {\n \"$intersects\":\n | {\n $bbox: BBox;\n $polygon?: never;\n }\n | BBox\n | {\n $polygon: Polygon[\"coordinates\"];\n $bbox?: never;\n }\n | Polygon;\n};\n\ntype FilterFor<PD extends ObjectMetadata.Property> = PD[\"multiplicity\"] extends\n true\n ? (PD[\"type\"] extends Record<string, BaseWirePropertyTypes>\n ? ArrayFilter<StructArrayFilterOpts<PD[\"type\"]>>\n : PD[\"type\"] extends PropertyTypesRepresentedAsStringsForArrayWhereClause\n ? ArrayFilter<string>\n : (PD[\"type\"] extends boolean ? ArrayFilter<boolean>\n : ArrayFilter<number>))\n : PD[\"type\"] extends Record<string, BaseWirePropertyTypes> ?\n | StructFilter<PD[\"type\"]>\n | BaseFilter.$isNull<string>\n : (PD[\"type\"] extends \"string\" ? StringFilter\n : PD[\"type\"] extends \"geopoint\" | \"geoshape\" ? GeoFilter\n : PD[\"type\"] extends \"datetime\" | \"timestamp\" ? DatetimeFilter\n : PD[\"type\"] extends \"boolean\" ? BooleanFilter\n : PD[\"type\"] extends WhereClauseNumberPropertyTypes ? NumberFilter\n : BaseFilter<string>); // FIXME we need to represent all types\n\ntype StructArrayFilterOpts<ST extends Record<string, BaseWirePropertyTypes>> = {\n [K in keyof ST]?: ST[K] extends\n PropertyTypesRepresentedAsStringsForArrayWhereClause ? EqFilter.$eq<string>\n : ST[K] extends boolean ? EqFilter.$eq<boolean>\n : ST[K] extends WhereClauseNumberPropertyTypes ? EqFilter.$eq<number>\n : never;\n};\n\ntype StructFilterOpts<ST extends Record<string, BaseWirePropertyTypes>> = {\n [K in keyof ST]?: FilterFor<{ \"type\": ST[K] }>;\n};\ntype StructFilter<ST extends Record<string, BaseWirePropertyTypes>> = {\n [K in keyof ST]: Just<K, StructFilterOpts<ST>>;\n}[keyof ST];\n\ntype PropertyTypesRepresentedAsStringsForArrayWhereClause =\n | \"string\"\n | \"geopoint\"\n | \"geoshape\"\n | \"datetime\"\n | \"timestamp\";\ntype WhereClauseNumberPropertyTypes =\n | \"double\"\n | \"integer\"\n | \"long\"\n | \"float\"\n | \"decimal\"\n | \"byte\";\n\nexport
|
|
1
|
+
{"version":3,"file":"WhereClause.js","names":["DistanceUnitMapping"],"sources":["WhereClause.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 { BBox, Point, Polygon } from \"geojson\";\nimport type {\n DerivedObjectOrInterfaceDefinition,\n ObjectOrInterfaceDefinition,\n} from \"../ontology/ObjectOrInterface.js\";\nimport type {\n CompileTimeMetadata,\n ObjectMetadata,\n} from \"../ontology/ObjectTypeDefinition.js\";\nimport type { SimplePropertyDef } from \"../ontology/SimplePropertyDef.js\";\nimport type { BaseWirePropertyTypes } from \"../ontology/WirePropertyTypes.js\";\nimport type { IsNever } from \"../OsdkObjectFrom.js\";\nimport type { ArrayFilter } from \"./ArrayFilter.js\";\nimport type { BaseFilter, EqFilter } from \"./BaseFilter.js\";\nimport type { BooleanFilter } from \"./BooleanFilter.js\";\nimport type { DatetimeFilter } from \"./DatetimeFilter.js\";\nimport type { GeoFilter } from \"./GeoFilter.js\";\nimport type { Just } from \"./Just.js\";\nimport type { NumberFilter } from \"./NumberFilter.js\";\nimport type { StringFilter } from \"./StringFilter.js\";\n\nexport type PossibleWhereClauseFilters =\n | \"$gt\"\n | \"$eq\"\n | \"$ne\"\n | \"$isNull\"\n | \"$contains\"\n | \"$gte\"\n | \"$lt\"\n | \"$lte\"\n | \"$within\"\n | \"$in\"\n | \"$intersects\"\n | \"$startsWith\"\n | \"$containsAllTermsInOrder\"\n | \"$containsAnyTerm\"\n | \"$containsAllTerms\";\n\n// the value side of this needs to match DistanceUnit from @osdk/foundry but we don't\n// want the dependency\nexport const DistanceUnitMapping: {\n centimeter: \"CENTIMETERS\";\n centimeters: \"CENTIMETERS\";\n cm: \"CENTIMETERS\";\n meter: \"METERS\";\n meters: \"METERS\";\n m: \"METERS\";\n kilometer: \"KILOMETERS\";\n kilometers: \"KILOMETERS\";\n km: \"KILOMETERS\";\n inch: \"INCHES\";\n inches: \"INCHES\";\n foot: \"FEET\";\n feet: \"FEET\";\n yard: \"YARDS\";\n yards: \"YARDS\";\n mile: \"MILES\";\n miles: \"MILES\";\n nautical_mile: \"NAUTICAL_MILES\";\n nauticalMile: \"NAUTICAL_MILES\";\n \"nautical miles\": \"NAUTICAL_MILES\";\n} = {\n \"centimeter\": \"CENTIMETERS\",\n \"centimeters\": \"CENTIMETERS\",\n \"cm\": \"CENTIMETERS\",\n \"meter\": \"METERS\",\n \"meters\": \"METERS\",\n \"m\": \"METERS\",\n \"kilometer\": \"KILOMETERS\",\n \"kilometers\": \"KILOMETERS\",\n \"km\": \"KILOMETERS\",\n \"inch\": \"INCHES\",\n \"inches\": \"INCHES\",\n \"foot\": \"FEET\",\n \"feet\": \"FEET\",\n \"yard\": \"YARDS\",\n \"yards\": \"YARDS\",\n \"mile\": \"MILES\",\n \"miles\": \"MILES\",\n \"nautical_mile\": \"NAUTICAL_MILES\",\n \"nauticalMile\": \"NAUTICAL_MILES\",\n \"nautical miles\": \"NAUTICAL_MILES\",\n} satisfies Record<\n string,\n | \"CENTIMETERS\"\n | \"METERS\"\n | \"KILOMETERS\"\n | \"INCHES\"\n | \"FEET\"\n | \"YARDS\"\n | \"MILES\"\n | \"NAUTICAL_MILES\"\n>;\n\nexport type GeoFilter_Within = {\n \"$within\":\n | {\n $distance: [number, keyof typeof DistanceUnitMapping];\n $of: [number, number] | Readonly<Point>;\n $bbox?: never;\n $polygon?: never;\n }\n | {\n $bbox: BBox;\n $distance?: never;\n $of?: never;\n $polygon?: never;\n }\n | BBox\n | {\n $polygon: Polygon[\"coordinates\"];\n $bbox?: never;\n $distance?: never;\n $of?: never;\n }\n | Polygon;\n};\n\nexport type GeoFilter_Intersects = {\n \"$intersects\":\n | {\n $bbox: BBox;\n $polygon?: never;\n }\n | BBox\n | {\n $polygon: Polygon[\"coordinates\"];\n $bbox?: never;\n }\n | Polygon;\n};\n\ntype FilterFor<PD extends ObjectMetadata.Property> = PD[\"multiplicity\"] extends\n true\n ? (PD[\"type\"] extends Record<string, BaseWirePropertyTypes>\n ? ArrayFilter<StructArrayFilterOpts<PD[\"type\"]>>\n : PD[\"type\"] extends PropertyTypesRepresentedAsStringsForArrayWhereClause\n ? ArrayFilter<string>\n : (PD[\"type\"] extends boolean ? ArrayFilter<boolean>\n : ArrayFilter<number>))\n : PD[\"type\"] extends Record<string, BaseWirePropertyTypes> ?\n | StructFilter<PD[\"type\"]>\n | BaseFilter.$isNull<string>\n : (PD[\"type\"] extends \"string\" ? StringFilter\n : PD[\"type\"] extends \"geopoint\" | \"geoshape\" ? GeoFilter\n : PD[\"type\"] extends \"datetime\" | \"timestamp\" ? DatetimeFilter\n : PD[\"type\"] extends \"boolean\" ? BooleanFilter\n : PD[\"type\"] extends WhereClauseNumberPropertyTypes ? NumberFilter\n : BaseFilter<string>); // FIXME we need to represent all types\n\ntype StructArrayFilterOpts<ST extends Record<string, BaseWirePropertyTypes>> = {\n [K in keyof ST]?: ST[K] extends\n PropertyTypesRepresentedAsStringsForArrayWhereClause ? EqFilter.$eq<string>\n : ST[K] extends boolean ? EqFilter.$eq<boolean>\n : ST[K] extends WhereClauseNumberPropertyTypes ? EqFilter.$eq<number>\n : never;\n};\n\ntype StructFilterOpts<ST extends Record<string, BaseWirePropertyTypes>> = {\n [K in keyof ST]?: FilterFor<{ \"type\": ST[K] }>;\n};\ntype StructFilter<ST extends Record<string, BaseWirePropertyTypes>> = {\n [K in keyof ST]: Just<K, StructFilterOpts<ST>>;\n}[keyof ST];\n\ntype PropertyTypesRepresentedAsStringsForArrayWhereClause =\n | \"string\"\n | \"geopoint\"\n | \"geoshape\"\n | \"datetime\"\n | \"timestamp\";\ntype WhereClauseNumberPropertyTypes =\n | \"double\"\n | \"integer\"\n | \"long\"\n | \"float\"\n | \"decimal\"\n | \"byte\";\n\nexport type AndWhereClause<\n T extends ObjectOrInterfaceDefinition,\n RDPs extends Record<string, SimplePropertyDef> = {},\n> = {\n $and: WhereClause<T, RDPs>[];\n};\n\nexport type OrWhereClause<\n T extends ObjectOrInterfaceDefinition,\n RDPs extends Record<string, SimplePropertyDef> = {},\n> = {\n $or: WhereClause<T, RDPs>[];\n};\n\nexport type NotWhereClause<\n T extends ObjectOrInterfaceDefinition,\n RDPs extends Record<string, SimplePropertyDef> = {},\n> = {\n $not: WhereClause<T, RDPs>;\n};\n\nexport type PropertyWhereClause<T extends ObjectOrInterfaceDefinition> = {\n [P in keyof CompileTimeMetadata<T>[\"properties\"]]?: FilterFor<\n CompileTimeMetadata<T>[\"properties\"][P]\n >;\n};\n\ntype MergedPropertyWhereClause<\n T extends ObjectOrInterfaceDefinition,\n RDPs extends Record<string, SimplePropertyDef> = {},\n> = PropertyWhereClause<\n DerivedObjectOrInterfaceDefinition.WithDerivedProperties<T, RDPs>\n>;\n\nexport type WhereClause<\n T extends ObjectOrInterfaceDefinition,\n RDPs extends Record<string, SimplePropertyDef> = {},\n> =\n | OrWhereClause<T, RDPs>\n | AndWhereClause<T, RDPs>\n | NotWhereClause<T, RDPs>\n | (IsNever<keyof CompileTimeMetadata<T>[\"properties\"]> extends true\n ? Record<string, never>\n : MergedPropertyWhereClause<T, RDPs>);\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAwCA;AACA;AACA,OAAO,MAAMA,mBAqBZ,GAAG;EACF,YAAY,EAAE,aAAa;EAC3B,aAAa,EAAE,aAAa;EAC5B,IAAI,EAAE,aAAa;EACnB,OAAO,EAAE,QAAQ;EACjB,QAAQ,EAAE,QAAQ;EAClB,GAAG,EAAE,QAAQ;EACb,WAAW,EAAE,YAAY;EACzB,YAAY,EAAE,YAAY;EAC1B,IAAI,EAAE,YAAY;EAClB,MAAM,EAAE,QAAQ;EAChB,QAAQ,EAAE,QAAQ;EAClB,MAAM,EAAE,MAAM;EACd,MAAM,EAAE,MAAM;EACd,MAAM,EAAE,OAAO;EACf,OAAO,EAAE,OAAO;EAChB,MAAM,EAAE,OAAO;EACf,OAAO,EAAE,OAAO;EAChB,eAAe,EAAE,gBAAgB;EACjC,cAAc,EAAE,gBAAgB;EAChC,gBAAgB,EAAE;AACpB,CAUC;;AAwD0B","ignoreList":[]}
|