@osdk/client 2.3.0-beta.2 → 2.3.0-beta.4
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 +29 -0
- package/build/browser/__unstable/createBulkLinksAsyncIterFactory.js +6 -1
- package/build/browser/__unstable/createBulkLinksAsyncIterFactory.js.map +1 -1
- package/build/browser/createMediaReferenceProperty.js +7 -1
- package/build/browser/createMediaReferenceProperty.js.map +1 -1
- package/build/browser/derivedProperties/derivedPropertyRuntimeMetadata.js +2 -0
- package/build/browser/derivedProperties/derivedPropertyRuntimeMetadata.js.map +1 -0
- package/build/browser/intellisense.test.helpers/orderBySuggestionIsRight.js +30 -0
- package/build/browser/intellisense.test.helpers/orderBySuggestionIsRight.js.map +1 -0
- package/build/browser/intellisense.test.js +22 -0
- package/build/browser/intellisense.test.js.map +1 -1
- package/build/browser/internal/conversions/modernToLegacyWhereClause.test.js +57 -47
- package/build/browser/internal/conversions/modernToLegacyWhereClause.test.js.map +1 -1
- package/build/browser/object/convertWireToOsdkObjects/createOsdkInterface.test.js +27 -12
- package/build/browser/object/convertWireToOsdkObjects/createOsdkInterface.test.js.map +1 -1
- package/build/browser/object/convertWireToOsdkObjects/createOsdkObject.js +22 -9
- package/build/browser/object/convertWireToOsdkObjects/createOsdkObject.js.map +1 -1
- package/build/browser/object/convertWireToOsdkObjects.js.map +1 -1
- package/build/browser/object/media.test.js +20 -1
- package/build/browser/object/media.test.js.map +1 -1
- package/build/browser/object/object.test.js +6 -2
- package/build/browser/object/object.test.js.map +1 -1
- package/build/browser/objectSet/ObjectSet.test.js +7 -0
- package/build/browser/objectSet/ObjectSet.test.js.map +1 -1
- package/build/browser/tsserver.js +1 -0
- package/build/browser/tsserver.js.map +1 -1
- package/build/browser/util/UserAgent.js +1 -1
- package/build/browser/util/extractRdpDefinition.js +13 -2
- package/build/browser/util/extractRdpDefinition.js.map +1 -1
- package/build/browser/util/extractRdpDefinition.test.js +87 -5
- package/build/browser/util/extractRdpDefinition.test.js.map +1 -1
- package/build/cjs/{chunk-ZV5KKQ4R.cjs → chunk-C5D7744G.cjs} +15 -4
- package/build/cjs/chunk-C5D7744G.cjs.map +1 -0
- package/build/cjs/{chunk-JEHRAVC5.cjs → chunk-MZ4JZQUU.cjs} +14 -14
- package/build/cjs/{chunk-JEHRAVC5.cjs.map → chunk-MZ4JZQUU.cjs.map} +1 -1
- package/build/cjs/index.cjs +78 -56
- package/build/cjs/index.cjs.map +1 -1
- package/build/cjs/public/internal.cjs +8 -8
- package/build/cjs/public/unstable-do-not-use.cjs +8 -8
- package/build/esm/__unstable/createBulkLinksAsyncIterFactory.js +6 -1
- package/build/esm/__unstable/createBulkLinksAsyncIterFactory.js.map +1 -1
- package/build/esm/createMediaReferenceProperty.js +7 -1
- package/build/esm/createMediaReferenceProperty.js.map +1 -1
- package/build/esm/derivedProperties/derivedPropertyRuntimeMetadata.js +2 -0
- package/build/esm/derivedProperties/derivedPropertyRuntimeMetadata.js.map +1 -0
- package/build/esm/intellisense.test.helpers/orderBySuggestionIsRight.js +30 -0
- package/build/esm/intellisense.test.helpers/orderBySuggestionIsRight.js.map +1 -0
- package/build/esm/intellisense.test.js +22 -0
- package/build/esm/intellisense.test.js.map +1 -1
- package/build/esm/internal/conversions/modernToLegacyWhereClause.test.js +57 -47
- package/build/esm/internal/conversions/modernToLegacyWhereClause.test.js.map +1 -1
- package/build/esm/object/convertWireToOsdkObjects/createOsdkInterface.test.js +27 -12
- package/build/esm/object/convertWireToOsdkObjects/createOsdkInterface.test.js.map +1 -1
- package/build/esm/object/convertWireToOsdkObjects/createOsdkObject.js +22 -9
- package/build/esm/object/convertWireToOsdkObjects/createOsdkObject.js.map +1 -1
- package/build/esm/object/convertWireToOsdkObjects.js.map +1 -1
- package/build/esm/object/media.test.js +20 -1
- package/build/esm/object/media.test.js.map +1 -1
- package/build/esm/object/object.test.js +6 -2
- package/build/esm/object/object.test.js.map +1 -1
- package/build/esm/objectSet/ObjectSet.test.js +7 -0
- package/build/esm/objectSet/ObjectSet.test.js.map +1 -1
- package/build/esm/tsserver.js +1 -0
- package/build/esm/tsserver.js.map +1 -1
- package/build/esm/util/UserAgent.js +1 -1
- package/build/esm/util/extractRdpDefinition.js +13 -2
- package/build/esm/util/extractRdpDefinition.js.map +1 -1
- package/build/esm/util/extractRdpDefinition.test.js +87 -5
- package/build/esm/util/extractRdpDefinition.test.js.map +1 -1
- package/build/types/createMediaReferenceProperty.d.ts +4 -1
- package/build/types/createMediaReferenceProperty.d.ts.map +1 -1
- package/build/types/derivedProperties/derivedPropertyRuntimeMetadata.d.ts +6 -0
- package/build/types/derivedProperties/derivedPropertyRuntimeMetadata.d.ts.map +1 -0
- package/build/types/intellisense.test.helpers/orderBySuggestionIsRight.d.ts +1 -0
- package/build/types/intellisense.test.helpers/orderBySuggestionIsRight.d.ts.map +1 -0
- package/build/types/object/convertWireToOsdkObjects.d.ts +5 -4
- package/build/types/object/convertWireToOsdkObjects.d.ts.map +1 -1
- package/build/types/object/object.test.d.ts.map +1 -1
- package/build/types/tsserver.d.ts +1 -0
- package/build/types/tsserver.d.ts.map +1 -1
- package/build/types/util/extractRdpDefinition.d.ts +2 -2
- package/build/types/util/extractRdpDefinition.d.ts.map +1 -1
- package/package.json +6 -6
- package/build/cjs/chunk-ZV5KKQ4R.cjs.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ObjectSet.test.js","names":["isOk","__EXPERIMENTAL__NOT_SUPPORTED_YET__fetchOneByRid","__EXPERIMENTAL__NOT_SUPPORTED_YET__fetchPageByRid","BarInterface","BgaoNflPlayer","Employee","FooInterface","objectTypeWithAllPropertyTypes","Office","LegacyFauxFoundry","startNodeApiServer","stubData","beforeAll","describe","expect","expectTypeOf","it","createClient","client","testSetup","apiServer","close","employeeObjectSet","officeObjectSet","union","subtract","intersect","objectSet","unionedObjectSet","data","employees","fetchPage","pks","Set","emp","add","$primaryKey","size","toEqual","has","employee1","employeeId","toBe","employee2","employee3","employee4withDerived","employeePassesStrict","__primaryKey","employee50050","objectSet2","where","subtractedObjectSet","objectSetResults","objectSet2Results","subtractedObjectSetResults","toHaveLength","length","find","x","toBeUndefined","intersectedObjectSet","$isNull","$orderBy","map","e","employee","fetchOne","toMatchTypeOf","fetchOneByRid","__rid","fetchPageByRid","$select","player","address1","address","addressLine1","address2","addressLine2","city","state","zipCode","travisPlayer","employeeResult","fetchOneWithErrors","value","branded","toEqualTypeOf","rejects","toThrow","pivotTo","result","fetchPageWithErrors","$in","toBeDefined","employeeIdNonExistent","nonExistentProp","$or","fullName","$containsAllTerms","office","term","fuzzySearch","$containsAnyTerm","toBeCallableWith","$and","$eq","$gte","$containsAllTermsInOrder","each","k","opts","$__EXPERIMENTAL_strictNonNull","$includeRid","withProperties","base","aggregate","selectProperty","derivedPropertyName2","incorrect","fails","limit","percentile","numericAggregationObjectSet","setAggregationObjectSet","selectPropertyObjectSet","objectWithRdp","derivedPropertyName","objectWithUndefinedRdp","attachmentSelectDp","toMatchInlineSnapshot","geoSelectDp","geoCollectListDp","fetchPageTest","empNotStrict","cheesedFooNotStrict","$as","fooSpt"],"sources":["ObjectSet.test.ts"],"sourcesContent":["/*\n * Copyright 2024 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 {\n Attachment,\n CompileTimeMetadata,\n ConvertProps,\n FetchPageResult,\n InterfaceDefinition,\n ObjectOrInterfaceDefinition,\n ObjectSet,\n ObjectTypeDefinition,\n Osdk,\n PropertyKeys,\n Result,\n} from \"@osdk/api\";\nimport { isOk } from \"@osdk/api\";\nimport {\n __EXPERIMENTAL__NOT_SUPPORTED_YET__fetchOneByRid,\n __EXPERIMENTAL__NOT_SUPPORTED_YET__fetchPageByRid,\n} from \"@osdk/api/unstable\";\nimport {\n BarInterface,\n BgaoNflPlayer,\n Employee,\n FooInterface,\n objectTypeWithAllPropertyTypes,\n Office,\n} from \"@osdk/client.test.ontology\";\nimport {\n LegacyFauxFoundry,\n startNodeApiServer,\n stubData,\n} from \"@osdk/shared.test\";\nimport { beforeAll, describe, expect, expectTypeOf, it } from \"vitest\";\nimport type { Client } from \"../Client.js\";\nimport { createClient } from \"../createClient.js\";\n\ntype ApiNameAsString<\n T extends ObjectOrInterfaceDefinition,\n> = CompileTimeMetadata<T>[\"apiName\"];\n\ntype JustProps<\n T extends ObjectOrInterfaceDefinition,\n P extends ValidOsdkPropParams<T>,\n> = P extends \"$all\" ? PropertyKeys<T>\n : Exclude<P, SpecialOsdkPropParams>;\n\ntype SpecialOsdkPropParams =\n | \"$all\"\n | \"$rid\"\n | \"$strict\"\n | \"$notStrict\";\n\ntype ValidOsdkPropParams<Q extends ObjectOrInterfaceDefinition> =\n | SpecialOsdkPropParams\n | PropertyKeys<Q>;\n\ntype PropMapToInterface<\n FROM extends ObjectTypeDefinition,\n TO extends InterfaceDefinition,\n> = NonNullable<\n CompileTimeMetadata<FROM>[\"inverseInterfaceMap\"]\n>[ApiNameAsString<TO>];\n\nexport type PropMapToObject<\n FROM extends ObjectOrInterfaceDefinition,\n TO extends ObjectTypeDefinition,\n> = NonNullable<CompileTimeMetadata<TO>[\"interfaceMap\"]>[ApiNameAsString<FROM>];\n\ndescribe(\"ObjectSet\", () => {\n let client: Client;\n\n beforeAll(() => {\n const testSetup = startNodeApiServer(new LegacyFauxFoundry(), createClient);\n ({ client } = testSetup);\n return () => {\n testSetup.apiServer.close();\n };\n });\n\n it(\"does not allow intersect/union/subtract with different object types\", () => {\n const employeeObjectSet = client(Employee);\n const officeObjectSet = client(Office);\n\n // @ts-expect-error\n employeeObjectSet.union(officeObjectSet);\n\n // @ts-expect-error\n employeeObjectSet.subtract(officeObjectSet);\n\n // @ts-expect-error\n employeeObjectSet.intersect(officeObjectSet);\n });\n\n it(\"can be cast bidirectionally\", () => {\n function takesOldStyleObjectSet(os: ObjectSet<Employee>) {\n return os;\n }\n\n function takesNewStyleObjectSet(os: Employee.ObjectSet) {\n return os;\n }\n\n function maybe() {\n const newStyleObjectSet: Employee.ObjectSet = client(Employee);\n const oldStyleObjectSet: ObjectSet<Employee> = newStyleObjectSet;\n\n takesOldStyleObjectSet(newStyleObjectSet);\n takesNewStyleObjectSet(newStyleObjectSet);\n\n takesOldStyleObjectSet(oldStyleObjectSet);\n takesNewStyleObjectSet(oldStyleObjectSet);\n }\n\n if (false) {\n // here for a simple type check\n maybe();\n }\n });\n\n it(\"objects set union\", async () => {\n const objectSet = client(Employee);\n const unionedObjectSet = objectSet.union(objectSet);\n const { data: employees } = await unionedObjectSet.fetchPage();\n const pks = new Set<number>();\n for (const emp of employees) {\n pks.add(emp.$primaryKey);\n }\n\n expect(pks.size).toEqual(6);\n expect(pks.has(stubData.employee1.employeeId)).toBe(true);\n expect(pks.has(stubData.employee2.employeeId)).toBe(true);\n expect(pks.has(stubData.employee3.employeeId)).toBe(true);\n expect(pks.has(stubData.employee4withDerived.employeeId)).toBe(true);\n expect(pks.has(stubData.employeePassesStrict.__primaryKey)).toBe(true);\n expect(pks.has(stubData.employee50050.employeeId)).toBe(true);\n });\n\n it(\"objects set subtract\", async () => {\n const objectSet = client(Employee);\n const objectSet2 = client(Employee).where({\n employeeId: 50030,\n });\n const subtractedObjectSet = objectSet.subtract(objectSet2);\n\n const objectSetResults = await objectSet.fetchPage();\n const objectSet2Results = await objectSet2.fetchPage();\n const subtractedObjectSetResults = await subtractedObjectSet.fetchPage();\n\n expect(objectSet2Results.data).toHaveLength(1);\n expect(subtractedObjectSetResults.data).toHaveLength(\n objectSetResults.data.length - objectSet2Results.data.length,\n );\n expect(subtractedObjectSetResults.data.find(x => x.$primaryKey === 50030))\n .toBeUndefined();\n });\n\n it(\"objects set intersect\", async () => {\n const objectSet = client(Employee);\n const intersectedObjectSet = objectSet.intersect(objectSet);\n const iter = 0;\n const { data: employees } = await intersectedObjectSet.fetchPage();\n const pks = new Set<number>();\n for (const emp of employees) {\n pks.add(emp.$primaryKey);\n }\n\n expect(pks.size).toEqual(6);\n expect(pks.has(stubData.employee1.employeeId)).toBe(true);\n expect(pks.has(stubData.employee2.employeeId)).toBe(true);\n expect(pks.has(stubData.employee3.employeeId)).toBe(true);\n expect(pks.has(stubData.employee4withDerived.employeeId)).toBe(true);\n expect(pks.has(stubData.employeePassesStrict.__primaryKey)).toBe(true);\n expect(pks.has(stubData.employee50050.employeeId)).toBe(true);\n });\n\n it(\"orders objects in ascending order without a filter, and returns all results\", async () => {\n const { data: employees } = await client(Employee)\n .where({\n employeeId: { $isNull: false },\n })\n .fetchPage({\n $orderBy: { \"employeeId\": \"asc\" },\n });\n\n expect(employees.map(e => e.$primaryKey))\n .toEqual([\n 50030,\n 50031,\n 50032,\n 50033,\n 50035,\n stubData.employee50050.employeeId,\n ]);\n });\n\n it(\"allows fetching by PK from a base object set - fetchOne\", async () => {\n const employee = await client(Employee).fetchOne(\n stubData.employee1.employeeId,\n );\n expectTypeOf<typeof employee>().toMatchTypeOf<\n Osdk<Employee, PropertyKeys<Employee>>\n >;\n expect(employee.$primaryKey).toBe(stubData.employee1.employeeId);\n });\n\n it(\"allows fetching by rid with experimental function\", async () => {\n const employee = await client(\n __EXPERIMENTAL__NOT_SUPPORTED_YET__fetchOneByRid,\n ).fetchOneByRid(\n Employee,\n stubData.employee1.__rid,\n );\n expectTypeOf<typeof employee>().toMatchTypeOf<\n Osdk<Employee, PropertyKeys<Employee>>\n >;\n expect(employee.$primaryKey).toBe(stubData.employee1.employeeId);\n });\n\n it(\"allows fetching page of rids with experimental function\", async () => {\n const employees = await client(\n __EXPERIMENTAL__NOT_SUPPORTED_YET__fetchPageByRid,\n ).fetchPageByRid(\n Employee,\n [stubData.employee1.__rid, stubData.employee2.__rid],\n {},\n );\n expectTypeOf<typeof employees>().toMatchTypeOf<\n FetchPageResult<Employee, PropertyKeys<Employee>, boolean, any, any>\n >;\n expect(employees.data[0].$primaryKey).toBe(stubData.employee1.employeeId);\n expect(employees.data[1].$primaryKey).toBe(stubData.employee2.employeeId);\n });\n\n it(\"allows fetching by rid with experimental function, with select\", async () => {\n const employee = await client(\n __EXPERIMENTAL__NOT_SUPPORTED_YET__fetchOneByRid,\n ).fetchOneByRid(\n Employee,\n stubData.employee2.__rid,\n { $select: [\"fullName\"] },\n );\n expectTypeOf<typeof employee>().toMatchTypeOf<\n Osdk<Employee, \"fullName\">\n >;\n expect(employee.$primaryKey).toBe(stubData.employee2.employeeId);\n });\n\n it(\"allows fetching by rid with experimental function, with select 2\", async () => {\n const employees = await client(\n __EXPERIMENTAL__NOT_SUPPORTED_YET__fetchPageByRid,\n ).fetchPageByRid(\n Employee,\n [stubData.employee2.__rid, stubData.employee3.__rid],\n { $select: [\"fullName\"] },\n );\n expectTypeOf<typeof employees>().toMatchTypeOf<\n FetchPageResult<Employee, \"fullName\", boolean, any, any>\n >;\n expect(employees.data[0].$primaryKey).toBe(stubData.employee2.employeeId);\n expect(employees.data[1].$primaryKey).toBe(stubData.employee3.employeeId);\n });\n\n it(\"check struct parsing\", async () => {\n const player = await client(BgaoNflPlayer).fetchOne(\n \"tkelce\",\n );\n expectTypeOf<typeof player>().toMatchTypeOf<\n Osdk<BgaoNflPlayer, PropertyKeys<BgaoNflPlayer>>\n >;\n expectTypeOf<typeof player.address>().toMatchTypeOf<\n {\n addressLine1: string | undefined;\n addressLine2: string | undefined;\n city: string | undefined;\n state: string | undefined;\n zipCode: number | undefined;\n } | undefined\n >;\n\n const address1 = player.address!.addressLine1;\n expectTypeOf<typeof address1>().toMatchTypeOf<\n string | undefined\n >;\n expect(address1).toEqual(\"15 Muppets Lane\");\n\n const address2 = player.address?.addressLine2;\n expectTypeOf<typeof address2>().toMatchTypeOf<\n string | undefined\n >;\n expect(address2).toEqual(\"Resort No 4\");\n\n const city = player.address?.city;\n expectTypeOf<typeof city>().toMatchTypeOf<\n string | undefined\n >;\n expect(city).toEqual(\"Memphis\");\n\n const state = player.address?.state;\n expectTypeOf<typeof state>().toMatchTypeOf<\n string | undefined\n >;\n expect(state).toEqual(\"TN\");\n\n const zipCode = player.address?.zipCode;\n expectTypeOf<typeof zipCode>().toMatchTypeOf<\n number | undefined\n >;\n expect(zipCode).toEqual(11100);\n\n expect(player.$primaryKey).toEqual(stubData.travisPlayer.__primaryKey);\n expect(player.address).toEqual(stubData.travisPlayer.address);\n });\n\n it(\"allows fetching by PK from a base object set - fetchOneWithErrors\", async () => {\n const employeeResult = await client(Employee)\n .fetchOneWithErrors(\n stubData.employee1.employeeId,\n );\n expectTypeOf<typeof employeeResult>().toMatchTypeOf<\n Result<Osdk<Employee, PropertyKeys<Employee>>>\n >;\n\n if (isOk(employeeResult)) {\n const employee = employeeResult.value;\n expect(employee.$primaryKey).toBe(stubData.employee1.employeeId);\n }\n });\n\n it(\"allows fetching by PK from a base object set with selected properties - fetchOne\", async () => {\n const employee = await client(Employee).fetchOne(\n stubData.employee1.employeeId,\n { $select: [\"fullName\"] },\n );\n expectTypeOf<typeof employee>().branded.toEqualTypeOf<\n Osdk<Employee, \"fullName\">\n >;\n expect(employee.$primaryKey).toBe(stubData.employee1.employeeId);\n });\n\n it(\"allows fetching by PK from a base object set with selected properties - fetchOneWithErrors\", async () => {\n const employeeResult = await client(Employee)\n .fetchOneWithErrors(\n stubData.employee1.employeeId,\n { $select: [\"fullName\"] },\n );\n expectTypeOf<typeof employeeResult>().branded.toEqualTypeOf<\n Result<Osdk<Employee, \"fullName\">>\n >;\n\n if (isOk(employeeResult)) {\n const employee = employeeResult.value;\n expect(employee.$primaryKey).toBe(stubData.employee1.employeeId);\n }\n });\n\n it(\"throws when fetching by PK with an object that does not exist - fetchOne\", async () => {\n await expect(client(Employee).fetchOne(-1)).rejects\n .toThrow();\n });\n\n it(\"throws when fetching by PK with an object that does not exist - fetchOneWithErrors\", async () => {\n const employeeResult = await client(Employee)\n .fetchOneWithErrors(-1);\n\n expectTypeOf<typeof employeeResult>().branded.toEqualTypeOf<\n Result<Osdk<Employee>>\n >;\n\n expect(\"error\" in employeeResult);\n });\n\n it(\"allows fetching by PK from a pivoted object set - fetchOne\", async () => {\n const employee = await client(Employee).where({\n employeeId: stubData.employee2.employeeId,\n })\n .pivotTo(\"peeps\").fetchOne(stubData.employee1.employeeId);\n\n expect(employee.$primaryKey).toBe(stubData.employee1.employeeId);\n });\n\n it(\"allows fetching by PK from a pivoted object set - fetchOneWithErrors\", async () => {\n const employeeResult = await client(Employee).where({\n employeeId: stubData.employee2.employeeId,\n })\n .pivotTo(\"peeps\").fetchOneWithErrors(stubData.employee1.employeeId);\n\n if (isOk(employeeResult)) {\n const employee = employeeResult.value;\n expect(employee.$primaryKey).toBe(stubData.employee1.employeeId);\n }\n });\n\n it(\" object set union works with fetchPageWithErrors\", async () => {\n const objectSet = client(Employee);\n const unionedObjectSet = objectSet.union(objectSet);\n const iter = 0;\n const result = await unionedObjectSet.fetchPageWithErrors();\n const pks = new Set<number>();\n for (const emp of result.value!.data) {\n pks.add(emp.$primaryKey);\n }\n\n expect(pks.size).toEqual(6);\n expect(pks.has(stubData.employee1.employeeId)).toBe(true);\n expect(pks.has(stubData.employee2.employeeId)).toBe(true);\n expect(pks.has(stubData.employee3.employeeId)).toBe(true);\n expect(pks.has(stubData.employee4withDerived.employeeId)).toBe(true);\n expect(pks.has(stubData.employeePassesStrict.__primaryKey)).toBe(true);\n expect(pks.has(stubData.employee50050.employeeId)).toBe(true);\n });\n\n it(\"allows $in filter with ReadonlyArrays\", () => {\n const ids: ReadonlyArray<number> = [50030, 50031];\n const objectSet = client(Employee).where({\n employeeId: { $in: ids },\n });\n expect(objectSet).toBeDefined();\n });\n\n it(\"does not allow arbitrary keys when no properties\", () => {\n const ids: ReadonlyArray<number> = [50030, 50031];\n client(Employee).where({\n // @ts-expect-error\n employeeIdNonExistent: { $in: ids },\n });\n\n client(BarInterface).where({\n // @ts-expect-error\n nonExistentProp: \"\",\n });\n });\n\n it(\"type checking containsallterm and containsanyterm\", () => {\n const ids: ReadonlyArray<number> = [50030, 50031];\n client(Employee).where({\n $or: [{ fullName: { $containsAllTerms: \"John Smith\" } }, {\n office: { $containsAllTerms: { term: \"NYC DC\" } },\n }, {\n fullName: {\n $containsAllTerms: { term: \"John Smith\", fuzzySearch: false },\n },\n }, {\n // @ts-expect-error\n fullName: { $containsAllTerms: { fuzzySearch: false } },\n }],\n });\n\n client(Employee).where({\n $or: [{ fullName: { $containsAnyTerm: \"John Smith\" } }, {\n office: { $containsAnyTerm: { term: \"NYC DC\" } },\n }, {\n fullName: {\n $containsAnyTerm: { term: \"John Smith\", fuzzySearch: false },\n },\n }, {\n // @ts-expect-error\n fullName: { $containsAnyTerm: { fuzzySearch: false } },\n }],\n });\n\n client(BarInterface).where({\n // @ts-expect-error\n nonExistentProp: \"\",\n });\n });\n\n it(\"type checking struct where clauses\", () => {\n expectTypeOf(client(BgaoNflPlayer).where).toBeCallableWith({\n $and: [{ address: { city: { $eq: \"NYC\" } } }, {\n address: { zipCode: { $gte: 55555 } },\n }],\n });\n expectTypeOf(client(BgaoNflPlayer).where).toBeCallableWith({\n address: {\n addressLine1: { $containsAllTerms: \"BLVD\" },\n // @ts-expect-error\n addressLine2: { $containsAllTermsInOrder: \"Apartment Number\" },\n },\n });\n });\n\n describe.each([\"fetchPage\", \"fetchPageWithErrors\"] as const)(\"%s\", (k) => {\n // describe(\"strictNonNull: \\\"drop\\\"\", () => {\n // describe(\"includeRid: true\", () => {\n // it(\"drops bad data\", async () => {\n // const opts = {\n // $__EXPERIMENTAL_strictNonNull: \"drop\",\n // $includeRid: true,\n // } as const;\n // const result = k === \"fetchPage\"\n // ? await client(Employee).fetchPage(opts)\n // : (await client(Employee).fetchPageWithErrors(opts)).value!;\n\n // expect(result.data).toHaveLength(3);\n // expectTypeOf(result.data[0]).branded.toEqualTypeOf<\n // Osdk<Employee, \"$rid\" | \"$all\">\n // >();\n // expectTypeOf(result.data[0]).branded.toEqualTypeOf<\n // Employee.OsdkObject<\"$rid\">\n // >();\n // });\n // });\n\n // describe(\"includeRid: false\", () => {\n // it(\"drops bad data\", async () => {\n // const opts = {\n // $__EXPERIMENTAL_strictNonNull: \"drop\",\n // $includeRid: false,\n // } as const;\n // const result = k === \"fetchPage\"\n // ? await client(Employee).fetchPage(opts)\n // : (await client(Employee).fetchPageWithErrors(opts)).value!;\n\n // expect(result.data).toHaveLength(3);\n // expectTypeOf(result.data[0]).branded.toEqualTypeOf<Osdk<Employee>>();\n // expectTypeOf(result.data[0]).branded.toEqualTypeOf<\n // Employee.OsdkObject\n // >();\n // expectTypeOf(result.data[0]).branded.toEqualTypeOf<\n // Employee.OsdkObject<never>\n // >();\n // });\n // });\n // });\n\n describe(\"strictNonNull: false\", () => {\n describe(\"includeRid: true\", () => {\n it(\"returns bad data\", async () => {\n const opts = {\n $__EXPERIMENTAL_strictNonNull: false,\n $includeRid: true,\n } as const;\n const result = k === \"fetchPage\"\n ? await client(Employee).fetchPage(opts)\n : (await client(Employee).fetchPageWithErrors(opts)).value!;\n\n expect(result.data).toHaveLength(6);\n expectTypeOf(result.data[0]).branded.toEqualTypeOf<\n Osdk<Employee, \"$all\" | \"$notStrict\" | \"$rid\">\n >();\n });\n });\n\n describe(\"includeRid: false\", () => {\n it(\"returns bad data\", async () => {\n const opts = {\n $includeRid: false,\n } as const;\n const result = k === \"fetchPage\"\n ? await client(Employee).fetchPage(opts)\n : (await client(Employee).fetchPageWithErrors(opts)).value!;\n\n expect(result.data).toHaveLength(6);\n expectTypeOf(result.data[0]).branded.toEqualTypeOf<\n Osdk<Employee, \"$all\" | \"$notStrict\">\n >();\n });\n });\n });\n });\n\n describe(\"Derived Properties Object Set\", () => {\n it(\"does not allow aggregate before a link type is selected\", () => {\n client(Employee).withProperties({\n \"derivedPropertyName\": (base) =>\n // @ts-expect-error\n base.aggregate(\"employeeId:exactDistinct\"),\n });\n });\n\n it(\"does not allow selectProperty when a many link was selected at any point\", () => {\n client(Employee).withProperties({\n \"derivedPropertyName\": (base) => {\n // @ts-expect-error\n base.pivotTo(\"peeps\").selectProperty(\"employeeId\");\n\n // @ts-expect-error\n base.pivotTo(\"lead\").pivotTo(\"peeps\").selectProperty(\"employeeId\");\n\n return base.pivotTo(\"lead\").selectProperty(\"employeeId\");\n },\n });\n });\n\n it(\"enforces a return only of correct type\", () => {\n client(Employee).withProperties({\n // @ts-expect-error\n \"derivedPropertyName\": (base) => {\n return base.pivotTo(\"peeps\");\n },\n // @ts-expect-error\n \"derivedPropertyName2\": (base) => {\n return { incorrect: \"type\" };\n },\n });\n });\n\n // Executed code fails since we're providing bad strings to the function\n it.fails(\"correctly narrows types of aggregate function\", () => {\n client(Employee).withProperties({\n \"derivedPropertyName\": (base) => {\n // @ts-expect-error\n base.pivotTo(\"lead\").aggregate(\"notAProperty:sum\");\n\n // @ts-expect-error\n base.pivotTo(\"lead\").aggregate(\":avg\");\n\n // @ts-expect-error\n base.pivotTo(\"lead\").aggregate(\"employeeId:notAnOp\");\n\n // @ts-expect-error\n base.pivotTo(\"lead\").aggregate(\"\");\n\n base.pivotTo(\"lead\").aggregate(\"employeeId:collectList\");\n\n return base.pivotTo(\"lead\").aggregate(\"employeeId:sum\");\n },\n });\n });\n\n // Executed code fails since we're providing bad strings to the function\n it(\"correctly narrows types of options for aggregate functions\", () => {\n const objectSet = client(Employee).withProperties({\n \"derivedPropertyName\": (base) => {\n // @ts-expect-error\n base.pivotTo(\"lead\").aggregate(\"employeeId:approximateDistinct\", {\n limit: 1,\n });\n\n base.pivotTo(\"lead\").aggregate(\"employeeId:collectList\", {\n limit: 1,\n });\n\n base.pivotTo(\"lead\").aggregate(\"employeeId:collectSet\", { limit: 1 });\n\n base.pivotTo(\"lead\").aggregate(\"employeeId:collectList\", {\n // @ts-expect-error\n percentile: 1,\n });\n\n return base.pivotTo(\"lead\").aggregate(\n \"employeeId:approximatePercentile\",\n { percentile: 0.5 },\n );\n },\n });\n\n expectTypeOf(objectSet).branded.toEqualTypeOf<\n ObjectSet<\n Employee,\n { derivedPropertyName: \"double\" | undefined }\n >\n >();\n });\n\n it(\"correctly narrows types of selectProperty function\", () => {\n client(Employee).withProperties({\n \"derivedPropertyName\": (base) => {\n // @ts-expect-error\n base.pivotTo(\"lead\").selectProperty(\"notAProperty\");\n\n return base.pivotTo(\"lead\").selectProperty(\"employeeStatus\");\n },\n }) satisfies ObjectSet<\n Employee,\n {\n \"derivedPropertyName\": \"stringTimeseries\" | undefined;\n }\n >;\n });\n\n it(\"propagates derived property type to future object set operations with correct types\", () => {\n client(Employee).withProperties({\n \"derivedPropertyName\": (base) =>\n base.pivotTo(\"lead\").aggregate(\"employeeId:sum\"),\n // @ts-expect-error\n }).where({ \"notAProperty\": { \"$eq\": 3 } });\n\n const numericAggregationObjectSet = client(Employee).withProperties({\n \"derivedPropertyName\": (base) =>\n base.pivotTo(\"lead\").aggregate(\"employeeId:sum\"),\n }).where({ \"derivedPropertyName\": { \"$eq\": 3 } });\n\n expectTypeOf(numericAggregationObjectSet).toEqualTypeOf<\n ObjectSet<Employee, {\n derivedPropertyName: \"double\" | undefined;\n }>\n >();\n\n client(Employee).withProperties({\n \"derivedPropertyName\": (base) =>\n base.pivotTo(\"lead\").aggregate(\"employeeId:collectList\"),\n }).where({ \"derivedPropertyName\": { \"$isNull\": false } })\n // @ts-expect-error\n .where({ \"derivedPropertyName\": { \"$eq\": [1, 2] } });\n\n const setAggregationObjectSet = client(Employee).withProperties({\n \"derivedPropertyName\": (base) =>\n base.pivotTo(\"lead\").aggregate(\"fullName:collectSet\"),\n });\n setAggregationObjectSet.where({\n \"derivedPropertyName\": { \"$isNull\": false },\n });\n\n setAggregationObjectSet.where({\n // @ts-expect-error\n \"derivedPropertyName\": { \"$eq\": [1, 2] },\n });\n expectTypeOf(setAggregationObjectSet).toEqualTypeOf<\n ObjectSet<Employee, {\n derivedPropertyName: \"string\"[] | undefined;\n }>\n >();\n\n const selectPropertyObjectSet = client(Employee).withProperties({\n \"derivedPropertyName\": (base) =>\n base.pivotTo(\"lead\").selectProperty(\"employeeId\"),\n }).where({ \"derivedPropertyName\": { \"$eq\": 3 } });\n\n expectTypeOf(selectPropertyObjectSet).toEqualTypeOf<\n ObjectSet<Employee, {\n derivedPropertyName: \"integer\";\n }>\n >();\n\n client(Employee).withProperties({\n \"derivedPropertyName\": (base) =>\n base.pivotTo(\"lead\").selectProperty(\"startDate\"),\n }).where({ \"derivedPropertyName\": { \"$eq\": \"datetimeFilter\" } });\n });\n\n it(\"correctly types multiple property definitions in one clause\", () => {\n const objectSet = client(Employee).withProperties({\n \"derivedPropertyName\": (base) =>\n base.pivotTo(\"lead\").aggregate(\"employeeId:sum\"),\n \"derivedPropertyName2\": (base) =>\n base.pivotTo(\"lead\").selectProperty(\"fullName\"),\n }).where({ \"derivedPropertyName\": { \"$eq\": 3 } })\n .where({ \"derivedPropertyName2\": { \"$eq\": \"name\" } });\n\n expectTypeOf(objectSet).toEqualTypeOf<\n ObjectSet<Employee, {\n derivedPropertyName: \"double\" | undefined;\n derivedPropertyName2: \"string\" | undefined;\n }>\n >();\n });\n\n it(\"ensures other properties are consistently typed\", () => {\n client(Employee).withProperties({\n \"derivedPropertyName\": (base) =>\n base.pivotTo(\"lead\").selectProperty(\"employeeId\"),\n }).where({ \"fullName\": { \"$eq\": \"A\" } });\n\n client(Employee).withProperties({\n \"derivedPropertyName\": (base) =>\n base.pivotTo(\"lead\").selectProperty(\"employeeId\"),\n }).where({ \"employeeId\": { \"$eq\": 2 } });\n });\n\n it(\"allows fetching derived properties with correctly typed Osdk.Instance types\", async () => {\n const objectWithRdp = await client(Employee).withProperties({\n \"derivedPropertyName\": (base) =>\n base.pivotTo(\"lead\").selectProperty(\"employeeId\"),\n }).fetchOne(stubData.employee1.employeeId);\n\n expectTypeOf(objectWithRdp.derivedPropertyName).toEqualTypeOf<\n number\n >();\n expect(objectWithRdp.derivedPropertyName).toBe(\n stubData.employee2.__primaryKey,\n );\n\n const objectWithUndefinedRdp = await client(Employee).withProperties({\n \"derivedPropertyName\": (base) =>\n base.pivotTo(\"lead\").selectProperty(\"employeeId\"),\n }).fetchOne(stubData.employee2.employeeId, {\n $select: [\"derivedPropertyName\"],\n });\n\n expect(objectWithUndefinedRdp.derivedPropertyName).toBeUndefined();\n });\n\n it(\"correctly deserializes attachments and geo properties\", async () => {\n const objectWithRdp = await client(objectTypeWithAllPropertyTypes)\n .withProperties({\n \"attachmentSelectDp\": (base) =>\n base.pivotTo(\"linkedObjectType\").selectProperty(\"attachment\"),\n \"geoSelectDp\": (base) =>\n base.pivotTo(\"linkedObjectType\").selectProperty(\"geoShape\"),\n \"geoCollectListDp\": (base) =>\n base.pivotTo(\"linkedObjectType\").aggregate(\n \"geoShapeArray:collectList\",\n ),\n }).fetchOne(5);\n\n expectTypeOf(objectWithRdp.attachmentSelectDp).toEqualTypeOf<\n Attachment | undefined\n >();\n expect(objectWithRdp.attachmentSelectDp).toMatchInlineSnapshot(\n `\n {\n \"fetchContents\": [Function],\n \"fetchMetadata\": [Function],\n \"rid\": \"ri.attachments.main.attachment.86016861-707f-4292-b258-6a7108915a75\",\n }\n `,\n );\n\n expectTypeOf(objectWithRdp.geoSelectDp).toEqualTypeOf<\n GeoJSON.GeoJSON | undefined\n >();\n expect(objectWithRdp.geoSelectDp).toMatchInlineSnapshot(`\n {\n \"coordinates\": [\n [\n [\n 1,\n 1,\n ],\n [\n 1,\n 2,\n ],\n [\n 2,\n 2,\n ],\n [\n 2,\n 1,\n ],\n [\n 1,\n 1,\n ],\n ],\n ],\n \"type\": \"Polygon\",\n }\n `);\n\n expectTypeOf(objectWithRdp.geoCollectListDp).toEqualTypeOf<\n GeoJSON.GeoJSON[] | undefined\n >();\n expect(objectWithRdp.geoCollectListDp).toMatchInlineSnapshot(`\n [\n [\n {\n \"coordinates\": [\n [\n [\n 1,\n 1,\n ],\n [\n 1,\n 2,\n ],\n [\n 2,\n 2,\n ],\n [\n 2,\n 1,\n ],\n [\n 1,\n 1,\n ],\n ],\n ],\n \"type\": \"Polygon\",\n },\n ],\n ]\n `);\n\n // Tests that we deserialize properly for fetchPage as well\n const fetchPageTest = await client(objectTypeWithAllPropertyTypes)\n .withProperties({\n \"attachmentSelectDp\": (base) =>\n base.pivotTo(\"linkedObjectType\").selectProperty(\"attachment\"),\n \"geoSelectDp\": (base) =>\n base.pivotTo(\"linkedObjectType\").selectProperty(\"geoShape\"),\n \"geoCollectListDp\": (base) =>\n base.pivotTo(\"linkedObjectType\").aggregate(\n \"geoShapeArray:collectList\",\n ),\n }).where({ \"id\": { \"$eq\": 5 } }).fetchPage();\n\n expect(fetchPageTest.data[0].attachmentSelectDp).toMatchInlineSnapshot(\n `\n {\n \"fetchContents\": [Function],\n \"fetchMetadata\": [Function],\n \"rid\": \"ri.attachments.main.attachment.86016861-707f-4292-b258-6a7108915a75\",\n }\n `,\n );\n });\n });\n\n // Can't run these tests because we can't load by primary key!\n // describe.each([\"fetchOne\", \"fetchOneWithErrors\"] as const)(\"%s\", (k) => {\n // describe(\"strictNonNull: false\", () => {\n // describe(\"includeRid: true\", () => {\n // it(\"returns bad data\", async () => {\n // // Look at this\n // const opts = {\n // $__EXPERIMENTAL_strictNonNull: false,\n // $includeRid: true,\n // } as const;\n // const result = k === \"fetchOne\"\n // ? await client(Employee).fetchOne(50033, opts)\n // : (await client(Employee).fetchOneWithErrors(50033, opts)).value!;\n\n // expect(result).not.toBeUndefined();\n // expectTypeOf(result).branded.toEqualTypeOf<\n // Osdk<Employee, \"$all\" | \"$notStrict\" | \"$rid\">\n // >();\n // });\n // });\n\n // describe(\"includeRid: false\", () => {\n // it(\"returns bad data\", async () => {\n // const opts = {\n // $__EXPERIMENTAL_strictNonNull: false,\n // $includeRid: false,\n // } as const;\n // const result = k === \"fetchOne\"\n // ? await client(Employee).fetchOne(50033, opts)\n // : (await client(Employee).fetchOneWithErrors(50033, opts)).value!;\n\n // expect(result).not.toBeUndefined();\n // expectTypeOf(result).branded.toEqualTypeOf<\n // Osdk<Employee, \"$all\" | \"$notStrict\">\n // >();\n // });\n // });\n // });\n // });\n\n describe(\"conversions\", () => {\n describe(\"strictNonNull: false\", () => {\n it(\"returns bad data\", async () => {\n const result = await client(Employee).fetchPage({});\n\n const empNotStrict = result.data[0];\n const empNotStrict2: Osdk<Employee, \"$all\" | \"$notStrict\"> =\n empNotStrict;\n expectTypeOf(empNotStrict).branded.toEqualTypeOf<\n Osdk<Employee, \"$all\" | \"$notStrict\">\n >();\n expectTypeOf(empNotStrict).branded.toEqualTypeOf<\n Employee.OsdkObject<never, Employee.PropertyKeys>\n >();\n expectTypeOf(empNotStrict).branded.toEqualTypeOf<\n Employee.OsdkObject<never>\n >();\n\n expectTypeOf(empNotStrict.employeeId).toEqualTypeOf<\n number\n >();\n\n expectTypeOf(empNotStrict2.employeeId).toEqualTypeOf<\n number\n >();\n\n expectTypeOf<ApiNameAsString<FooInterface>>()\n .toEqualTypeOf<\"FooInterface\">();\n\n expectTypeOf<\n NonNullable<CompileTimeMetadata<Employee>[\"interfaceMap\"]>\n >()\n .toEqualTypeOf<{\n FooInterface: {\n fooSpt: \"fullName\";\n };\n }>();\n\n expectTypeOf<PropMapToInterface<Employee, FooInterface>>()\n .toEqualTypeOf<{ fullName: \"fooSpt\" }>();\n\n expectTypeOf<PropMapToObject<FooInterface, Employee>>()\n .toEqualTypeOf<{ fooSpt: \"fullName\" }>();\n\n expectTypeOf<ConvertProps<Employee, FooInterface, \"fullName\">>()\n .toEqualTypeOf<\"fooSpt\">();\n\n expectTypeOf<JustProps<Employee, \"$all\">>()\n .toEqualTypeOf<\n | \"class\"\n | \"fullName\"\n | \"office\"\n | \"employeeId\"\n | \"employeeStatus\"\n | \"startDate\"\n | \"employeeLocation\"\n | \"employeeSensor\"\n >();\n\n expectTypeOf<\n ConvertProps<Employee, FooInterface, \"fullName\" | \"office\">\n >()\n .toEqualTypeOf<\"fooSpt\">();\n\n expectTypeOf<\n ConvertProps<FooInterface, Employee, \"fooSpt\">\n >()\n .toEqualTypeOf<\"fullName\">();\n\n expectTypeOf<\n ConvertProps<FooInterface, Employee, \"fooSpt\", \"$allBaseProperties\">\n >()\n .toEqualTypeOf<\n | \"employeeId\"\n | \"fullName\"\n | \"office\"\n | \"class\"\n | \"startDate\"\n | \"employeeStatus\"\n | \"employeeSensor\"\n | \"employeeLocation\"\n >();\n\n // We don't have a proper definition that has\n // a non-null property on an interface so\n // we cheese it here to be sure the types work\n type CheesedProp<\n T extends InterfaceDefinition,\n K extends PropertyKeys<T>,\n > = T & { properties: { [KK in K]: { nullable: false } } };\n\n type CheesedFoo = CheesedProp<FooInterface, \"fooSpt\">;\n const CheesedFoo: CheesedFoo = FooInterface as CheesedFoo;\n\n type T = ConvertProps<Employee, CheesedFoo, \"fullName\">;\n\n const cheesedFooNotStrict = result.data[0].$as(CheesedFoo);\n expectTypeOf(cheesedFooNotStrict).branded.toEqualTypeOf<\n Osdk<CheesedFoo, \"$all\" | \"$notStrict\">\n >();\n\n cheesedFooNotStrict.fooSpt;\n });\n });\n });\n});\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"ObjectSet.test.js","names":["isOk","__EXPERIMENTAL__NOT_SUPPORTED_YET__fetchOneByRid","__EXPERIMENTAL__NOT_SUPPORTED_YET__fetchPageByRid","BarInterface","BgaoNflPlayer","Employee","FooInterface","objectTypeWithAllPropertyTypes","Office","LegacyFauxFoundry","startNodeApiServer","stubData","beforeAll","describe","expect","expectTypeOf","it","createClient","client","testSetup","apiServer","close","employeeObjectSet","officeObjectSet","union","subtract","intersect","objectSet","unionedObjectSet","data","employees","fetchPage","pks","Set","emp","add","$primaryKey","size","toEqual","has","employee1","employeeId","toBe","employee2","employee3","employee4withDerived","employeePassesStrict","__primaryKey","employee50050","objectSet2","where","subtractedObjectSet","objectSetResults","objectSet2Results","subtractedObjectSetResults","toHaveLength","length","find","x","toBeUndefined","intersectedObjectSet","$isNull","$orderBy","map","e","employee","fetchOne","toMatchTypeOf","fetchOneByRid","__rid","fetchPageByRid","$select","player","address1","address","addressLine1","address2","addressLine2","city","state","zipCode","travisPlayer","employeeResult","fetchOneWithErrors","value","branded","toEqualTypeOf","rejects","toThrow","pivotTo","result","fetchPageWithErrors","$in","toBeDefined","employeeIdNonExistent","nonExistentProp","$or","fullName","$containsAllTerms","office","term","fuzzySearch","$containsAnyTerm","toBeCallableWith","$and","$eq","$gte","$containsAllTermsInOrder","each","k","opts","$__EXPERIMENTAL_strictNonNull","$includeRid","withProperties","base","aggregate","selectProperty","derivedPropertyName2","incorrect","fails","limit","percentile","numericAggregationObjectSet","setAggregationObjectSet","selectPropertyObjectSet","objectWithRdp","derivedPropertyName","objectWithUndefinedRdp","attachmentSelectDp","toMatchInlineSnapshot","geoSelectDp","geoCollectListDp","fetchPageTest","empNotStrict","cheesedFooNotStrict","$as","fooSpt"],"sources":["ObjectSet.test.ts"],"sourcesContent":["/*\n * Copyright 2024 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 {\n Attachment,\n CompileTimeMetadata,\n ConvertProps,\n FetchPageResult,\n InterfaceDefinition,\n ObjectOrInterfaceDefinition,\n ObjectSet,\n ObjectTypeDefinition,\n Osdk,\n PropertyKeys,\n Result,\n} from \"@osdk/api\";\nimport { isOk } from \"@osdk/api\";\nimport {\n __EXPERIMENTAL__NOT_SUPPORTED_YET__fetchOneByRid,\n __EXPERIMENTAL__NOT_SUPPORTED_YET__fetchPageByRid,\n} from \"@osdk/api/unstable\";\nimport {\n BarInterface,\n BgaoNflPlayer,\n Employee,\n FooInterface,\n objectTypeWithAllPropertyTypes,\n Office,\n} from \"@osdk/client.test.ontology\";\nimport {\n LegacyFauxFoundry,\n startNodeApiServer,\n stubData,\n} from \"@osdk/shared.test\";\nimport { beforeAll, describe, expect, expectTypeOf, it } from \"vitest\";\nimport type { Client } from \"../Client.js\";\nimport { createClient } from \"../createClient.js\";\n\ntype ApiNameAsString<\n T extends ObjectOrInterfaceDefinition,\n> = CompileTimeMetadata<T>[\"apiName\"];\n\ntype JustProps<\n T extends ObjectOrInterfaceDefinition,\n P extends ValidOsdkPropParams<T>,\n> = P extends \"$all\" ? PropertyKeys<T>\n : Exclude<P, SpecialOsdkPropParams>;\n\ntype SpecialOsdkPropParams =\n | \"$all\"\n | \"$rid\"\n | \"$strict\"\n | \"$notStrict\";\n\ntype ValidOsdkPropParams<Q extends ObjectOrInterfaceDefinition> =\n | SpecialOsdkPropParams\n | PropertyKeys<Q>;\n\ntype PropMapToInterface<\n FROM extends ObjectTypeDefinition,\n TO extends InterfaceDefinition,\n> = NonNullable<\n CompileTimeMetadata<FROM>[\"inverseInterfaceMap\"]\n>[ApiNameAsString<TO>];\n\nexport type PropMapToObject<\n FROM extends ObjectOrInterfaceDefinition,\n TO extends ObjectTypeDefinition,\n> = NonNullable<CompileTimeMetadata<TO>[\"interfaceMap\"]>[ApiNameAsString<FROM>];\n\ndescribe(\"ObjectSet\", () => {\n let client: Client;\n\n beforeAll(() => {\n const testSetup = startNodeApiServer(new LegacyFauxFoundry(), createClient);\n ({ client } = testSetup);\n return () => {\n testSetup.apiServer.close();\n };\n });\n\n it(\"does not allow intersect/union/subtract with different object types\", () => {\n const employeeObjectSet = client(Employee);\n const officeObjectSet = client(Office);\n\n // @ts-expect-error\n employeeObjectSet.union(officeObjectSet);\n\n // @ts-expect-error\n employeeObjectSet.subtract(officeObjectSet);\n\n // @ts-expect-error\n employeeObjectSet.intersect(officeObjectSet);\n });\n\n it(\"can be cast bidirectionally\", () => {\n function takesOldStyleObjectSet(os: ObjectSet<Employee>) {\n return os;\n }\n\n function takesNewStyleObjectSet(os: Employee.ObjectSet) {\n return os;\n }\n\n function maybe() {\n const newStyleObjectSet: Employee.ObjectSet = client(Employee);\n const oldStyleObjectSet: ObjectSet<Employee> = newStyleObjectSet;\n\n takesOldStyleObjectSet(newStyleObjectSet);\n takesNewStyleObjectSet(newStyleObjectSet);\n\n takesOldStyleObjectSet(oldStyleObjectSet);\n takesNewStyleObjectSet(oldStyleObjectSet);\n }\n\n if (false) {\n // here for a simple type check\n maybe();\n }\n });\n\n it(\"objects set union\", async () => {\n const objectSet = client(Employee);\n const unionedObjectSet = objectSet.union(objectSet);\n const { data: employees } = await unionedObjectSet.fetchPage();\n const pks = new Set<number>();\n for (const emp of employees) {\n pks.add(emp.$primaryKey);\n }\n\n expect(pks.size).toEqual(6);\n expect(pks.has(stubData.employee1.employeeId)).toBe(true);\n expect(pks.has(stubData.employee2.employeeId)).toBe(true);\n expect(pks.has(stubData.employee3.employeeId)).toBe(true);\n expect(pks.has(stubData.employee4withDerived.employeeId)).toBe(true);\n expect(pks.has(stubData.employeePassesStrict.__primaryKey)).toBe(true);\n expect(pks.has(stubData.employee50050.employeeId)).toBe(true);\n });\n\n it(\"objects set subtract\", async () => {\n const objectSet = client(Employee);\n const objectSet2 = client(Employee).where({\n employeeId: 50030,\n });\n const subtractedObjectSet = objectSet.subtract(objectSet2);\n\n const objectSetResults = await objectSet.fetchPage();\n const objectSet2Results = await objectSet2.fetchPage();\n const subtractedObjectSetResults = await subtractedObjectSet.fetchPage();\n\n expect(objectSet2Results.data).toHaveLength(1);\n expect(subtractedObjectSetResults.data).toHaveLength(\n objectSetResults.data.length - objectSet2Results.data.length,\n );\n expect(subtractedObjectSetResults.data.find(x => x.$primaryKey === 50030))\n .toBeUndefined();\n });\n\n it(\"objects set intersect\", async () => {\n const objectSet = client(Employee);\n const intersectedObjectSet = objectSet.intersect(objectSet);\n const iter = 0;\n const { data: employees } = await intersectedObjectSet.fetchPage();\n const pks = new Set<number>();\n for (const emp of employees) {\n pks.add(emp.$primaryKey);\n }\n\n expect(pks.size).toEqual(6);\n expect(pks.has(stubData.employee1.employeeId)).toBe(true);\n expect(pks.has(stubData.employee2.employeeId)).toBe(true);\n expect(pks.has(stubData.employee3.employeeId)).toBe(true);\n expect(pks.has(stubData.employee4withDerived.employeeId)).toBe(true);\n expect(pks.has(stubData.employeePassesStrict.__primaryKey)).toBe(true);\n expect(pks.has(stubData.employee50050.employeeId)).toBe(true);\n });\n\n it(\"orders objects in ascending order without a filter, and returns all results\", async () => {\n const { data: employees } = await client(Employee)\n .where({\n employeeId: { $isNull: false },\n })\n .fetchPage({\n $orderBy: { \"employeeId\": \"asc\" },\n });\n\n expect(employees.map(e => e.$primaryKey))\n .toEqual([\n 50030,\n 50031,\n 50032,\n 50033,\n 50035,\n stubData.employee50050.employeeId,\n ]);\n });\n\n it(\"allows fetching by PK from a base object set - fetchOne\", async () => {\n const employee = await client(Employee).fetchOne(\n stubData.employee1.employeeId,\n );\n expectTypeOf<typeof employee>().toMatchTypeOf<\n Osdk<Employee, PropertyKeys<Employee>>\n >;\n expect(employee.$primaryKey).toBe(stubData.employee1.employeeId);\n });\n\n it(\"allows fetching by rid with experimental function\", async () => {\n const employee = await client(\n __EXPERIMENTAL__NOT_SUPPORTED_YET__fetchOneByRid,\n ).fetchOneByRid(\n Employee,\n stubData.employee1.__rid,\n );\n expectTypeOf<typeof employee>().toMatchTypeOf<\n Osdk<Employee, PropertyKeys<Employee>>\n >;\n expect(employee.$primaryKey).toBe(stubData.employee1.employeeId);\n });\n\n it(\"allows fetching page of rids with experimental function\", async () => {\n const employees = await client(\n __EXPERIMENTAL__NOT_SUPPORTED_YET__fetchPageByRid,\n ).fetchPageByRid(\n Employee,\n [stubData.employee1.__rid, stubData.employee2.__rid],\n {},\n );\n expectTypeOf<typeof employees>().toMatchTypeOf<\n FetchPageResult<Employee, PropertyKeys<Employee>, boolean, any, any>\n >;\n expect(employees.data[0].$primaryKey).toBe(stubData.employee1.employeeId);\n expect(employees.data[1].$primaryKey).toBe(stubData.employee2.employeeId);\n });\n\n it(\"allows fetching by rid with experimental function, with select\", async () => {\n const employee = await client(\n __EXPERIMENTAL__NOT_SUPPORTED_YET__fetchOneByRid,\n ).fetchOneByRid(\n Employee,\n stubData.employee2.__rid,\n { $select: [\"fullName\"] },\n );\n expectTypeOf<typeof employee>().toMatchTypeOf<\n Osdk<Employee, \"fullName\">\n >;\n expect(employee.$primaryKey).toBe(stubData.employee2.employeeId);\n });\n\n it(\"allows fetching by rid with experimental function, with select 2\", async () => {\n const employees = await client(\n __EXPERIMENTAL__NOT_SUPPORTED_YET__fetchPageByRid,\n ).fetchPageByRid(\n Employee,\n [stubData.employee2.__rid, stubData.employee3.__rid],\n { $select: [\"fullName\"] },\n );\n expectTypeOf<typeof employees>().toMatchTypeOf<\n FetchPageResult<Employee, \"fullName\", boolean, any, any>\n >;\n expect(employees.data[0].$primaryKey).toBe(stubData.employee2.employeeId);\n expect(employees.data[1].$primaryKey).toBe(stubData.employee3.employeeId);\n });\n\n it(\"check struct parsing\", async () => {\n const player = await client(BgaoNflPlayer).fetchOne(\n \"tkelce\",\n );\n expectTypeOf<typeof player>().toMatchTypeOf<\n Osdk<BgaoNflPlayer, PropertyKeys<BgaoNflPlayer>>\n >;\n expectTypeOf<typeof player.address>().toMatchTypeOf<\n {\n addressLine1: string | undefined;\n addressLine2: string | undefined;\n city: string | undefined;\n state: string | undefined;\n zipCode: number | undefined;\n } | undefined\n >;\n\n const address1 = player.address!.addressLine1;\n expectTypeOf<typeof address1>().toMatchTypeOf<\n string | undefined\n >;\n expect(address1).toEqual(\"15 Muppets Lane\");\n\n const address2 = player.address?.addressLine2;\n expectTypeOf<typeof address2>().toMatchTypeOf<\n string | undefined\n >;\n expect(address2).toEqual(\"Resort No 4\");\n\n const city = player.address?.city;\n expectTypeOf<typeof city>().toMatchTypeOf<\n string | undefined\n >;\n expect(city).toEqual(\"Memphis\");\n\n const state = player.address?.state;\n expectTypeOf<typeof state>().toMatchTypeOf<\n string | undefined\n >;\n expect(state).toEqual(\"TN\");\n\n const zipCode = player.address?.zipCode;\n expectTypeOf<typeof zipCode>().toMatchTypeOf<\n number | undefined\n >;\n expect(zipCode).toEqual(11100);\n\n expect(player.$primaryKey).toEqual(stubData.travisPlayer.__primaryKey);\n expect(player.address).toEqual(stubData.travisPlayer.address);\n });\n\n it(\"allows fetching by PK from a base object set - fetchOneWithErrors\", async () => {\n const employeeResult = await client(Employee)\n .fetchOneWithErrors(\n stubData.employee1.employeeId,\n );\n expectTypeOf<typeof employeeResult>().toMatchTypeOf<\n Result<Osdk<Employee, PropertyKeys<Employee>>>\n >;\n\n if (isOk(employeeResult)) {\n const employee = employeeResult.value;\n expect(employee.$primaryKey).toBe(stubData.employee1.employeeId);\n }\n });\n\n it(\"allows fetching by PK from a base object set with selected properties - fetchOne\", async () => {\n const employee = await client(Employee).fetchOne(\n stubData.employee1.employeeId,\n { $select: [\"fullName\"] },\n );\n expectTypeOf<typeof employee>().branded.toEqualTypeOf<\n Osdk<Employee, \"fullName\">\n >;\n expect(employee.$primaryKey).toBe(stubData.employee1.employeeId);\n });\n\n it(\"allows fetching by PK from a base object set with selected properties - fetchOneWithErrors\", async () => {\n const employeeResult = await client(Employee)\n .fetchOneWithErrors(\n stubData.employee1.employeeId,\n { $select: [\"fullName\"] },\n );\n expectTypeOf<typeof employeeResult>().branded.toEqualTypeOf<\n Result<Osdk<Employee, \"fullName\">>\n >;\n\n if (isOk(employeeResult)) {\n const employee = employeeResult.value;\n expect(employee.$primaryKey).toBe(stubData.employee1.employeeId);\n }\n });\n\n it(\"throws when fetching by PK with an object that does not exist - fetchOne\", async () => {\n await expect(client(Employee).fetchOne(-1)).rejects\n .toThrow();\n });\n\n it(\"throws when fetching by PK with an object that does not exist - fetchOneWithErrors\", async () => {\n const employeeResult = await client(Employee)\n .fetchOneWithErrors(-1);\n\n expectTypeOf<typeof employeeResult>().branded.toEqualTypeOf<\n Result<Osdk<Employee>>\n >;\n\n expect(\"error\" in employeeResult);\n });\n\n it(\"allows fetching by PK from a pivoted object set - fetchOne\", async () => {\n const employee = await client(Employee).where({\n employeeId: stubData.employee2.employeeId,\n })\n .pivotTo(\"peeps\").fetchOne(stubData.employee1.employeeId);\n\n expect(employee.$primaryKey).toBe(stubData.employee1.employeeId);\n });\n\n it(\"allows fetching by PK from a pivoted object set - fetchOneWithErrors\", async () => {\n const employeeResult = await client(Employee).where({\n employeeId: stubData.employee2.employeeId,\n })\n .pivotTo(\"peeps\").fetchOneWithErrors(stubData.employee1.employeeId);\n\n if (isOk(employeeResult)) {\n const employee = employeeResult.value;\n expect(employee.$primaryKey).toBe(stubData.employee1.employeeId);\n }\n });\n\n it(\" object set union works with fetchPageWithErrors\", async () => {\n const objectSet = client(Employee);\n const unionedObjectSet = objectSet.union(objectSet);\n const iter = 0;\n const result = await unionedObjectSet.fetchPageWithErrors();\n const pks = new Set<number>();\n for (const emp of result.value!.data) {\n pks.add(emp.$primaryKey);\n }\n\n expect(pks.size).toEqual(6);\n expect(pks.has(stubData.employee1.employeeId)).toBe(true);\n expect(pks.has(stubData.employee2.employeeId)).toBe(true);\n expect(pks.has(stubData.employee3.employeeId)).toBe(true);\n expect(pks.has(stubData.employee4withDerived.employeeId)).toBe(true);\n expect(pks.has(stubData.employeePassesStrict.__primaryKey)).toBe(true);\n expect(pks.has(stubData.employee50050.employeeId)).toBe(true);\n });\n\n it(\"allows $in filter with ReadonlyArrays\", () => {\n const ids: ReadonlyArray<number> = [50030, 50031];\n const objectSet = client(Employee).where({\n employeeId: { $in: ids },\n });\n expect(objectSet).toBeDefined();\n });\n\n it(\"does not allow arbitrary keys when no properties\", () => {\n const ids: ReadonlyArray<number> = [50030, 50031];\n client(Employee).where({\n // @ts-expect-error\n employeeIdNonExistent: { $in: ids },\n });\n\n client(BarInterface).where({\n // @ts-expect-error\n nonExistentProp: \"\",\n });\n });\n\n it(\"type checking containsallterm and containsanyterm\", () => {\n const ids: ReadonlyArray<number> = [50030, 50031];\n client(Employee).where({\n $or: [{ fullName: { $containsAllTerms: \"John Smith\" } }, {\n office: { $containsAllTerms: { term: \"NYC DC\" } },\n }, {\n fullName: {\n $containsAllTerms: { term: \"John Smith\", fuzzySearch: false },\n },\n }, {\n // @ts-expect-error\n fullName: { $containsAllTerms: { fuzzySearch: false } },\n }],\n });\n\n client(Employee).where({\n $or: [{ fullName: { $containsAnyTerm: \"John Smith\" } }, {\n office: { $containsAnyTerm: { term: \"NYC DC\" } },\n }, {\n fullName: {\n $containsAnyTerm: { term: \"John Smith\", fuzzySearch: false },\n },\n }, {\n // @ts-expect-error\n fullName: { $containsAnyTerm: { fuzzySearch: false } },\n }],\n });\n\n client(BarInterface).where({\n // @ts-expect-error\n nonExistentProp: \"\",\n });\n });\n\n it(\"type checking struct where clauses\", () => {\n expectTypeOf(client(BgaoNflPlayer).where).toBeCallableWith({\n $and: [{ address: { city: { $eq: \"NYC\" } } }, {\n address: { zipCode: { $gte: 55555 } },\n }],\n });\n expectTypeOf(client(BgaoNflPlayer).where).toBeCallableWith({\n address: {\n addressLine1: { $containsAllTerms: \"BLVD\" },\n // @ts-expect-error\n addressLine2: { $containsAllTermsInOrder: \"Apartment Number\" },\n },\n });\n });\n\n describe.each([\"fetchPage\", \"fetchPageWithErrors\"] as const)(\"%s\", (k) => {\n // describe(\"strictNonNull: \\\"drop\\\"\", () => {\n // describe(\"includeRid: true\", () => {\n // it(\"drops bad data\", async () => {\n // const opts = {\n // $__EXPERIMENTAL_strictNonNull: \"drop\",\n // $includeRid: true,\n // } as const;\n // const result = k === \"fetchPage\"\n // ? await client(Employee).fetchPage(opts)\n // : (await client(Employee).fetchPageWithErrors(opts)).value!;\n\n // expect(result.data).toHaveLength(3);\n // expectTypeOf(result.data[0]).branded.toEqualTypeOf<\n // Osdk<Employee, \"$rid\" | \"$all\">\n // >();\n // expectTypeOf(result.data[0]).branded.toEqualTypeOf<\n // Employee.OsdkObject<\"$rid\">\n // >();\n // });\n // });\n\n // describe(\"includeRid: false\", () => {\n // it(\"drops bad data\", async () => {\n // const opts = {\n // $__EXPERIMENTAL_strictNonNull: \"drop\",\n // $includeRid: false,\n // } as const;\n // const result = k === \"fetchPage\"\n // ? await client(Employee).fetchPage(opts)\n // : (await client(Employee).fetchPageWithErrors(opts)).value!;\n\n // expect(result.data).toHaveLength(3);\n // expectTypeOf(result.data[0]).branded.toEqualTypeOf<Osdk<Employee>>();\n // expectTypeOf(result.data[0]).branded.toEqualTypeOf<\n // Employee.OsdkObject\n // >();\n // expectTypeOf(result.data[0]).branded.toEqualTypeOf<\n // Employee.OsdkObject<never>\n // >();\n // });\n // });\n // });\n\n describe(\"strictNonNull: false\", () => {\n describe(\"includeRid: true\", () => {\n it(\"returns bad data\", async () => {\n const opts = {\n $__EXPERIMENTAL_strictNonNull: false,\n $includeRid: true,\n } as const;\n const result = k === \"fetchPage\"\n ? await client(Employee).fetchPage(opts)\n : (await client(Employee).fetchPageWithErrors(opts)).value!;\n\n expect(result.data).toHaveLength(6);\n expectTypeOf(result.data[0]).branded.toEqualTypeOf<\n Osdk<Employee, \"$all\" | \"$notStrict\" | \"$rid\">\n >();\n });\n });\n\n describe(\"includeRid: false\", () => {\n it(\"returns bad data\", async () => {\n const opts = {\n $includeRid: false,\n } as const;\n const result = k === \"fetchPage\"\n ? await client(Employee).fetchPage(opts)\n : (await client(Employee).fetchPageWithErrors(opts)).value!;\n\n expect(result.data).toHaveLength(6);\n expectTypeOf(result.data[0]).branded.toEqualTypeOf<\n Osdk<Employee, \"$all\" | \"$notStrict\">\n >();\n });\n });\n });\n });\n\n describe(\"Derived Properties Object Set\", () => {\n it(\"does not allow aggregate before a link type is selected\", () => {\n client(Employee).withProperties({\n \"derivedPropertyName\": (base) =>\n // @ts-expect-error\n base.aggregate(\"employeeId:exactDistinct\"),\n });\n });\n\n it(\"does not allow selectProperty when a many link was selected at any point\", () => {\n client(Employee).withProperties({\n \"derivedPropertyName\": (base) => {\n // @ts-expect-error\n base.pivotTo(\"peeps\").selectProperty(\"employeeId\");\n\n // @ts-expect-error\n base.pivotTo(\"lead\").pivotTo(\"peeps\").selectProperty(\"employeeId\");\n\n return base.pivotTo(\"lead\").selectProperty(\"employeeId\");\n },\n });\n });\n\n it(\"enforces a return only of correct type\", () => {\n client(Employee).withProperties({\n // @ts-expect-error\n \"derivedPropertyName\": (base) => {\n return base.pivotTo(\"peeps\");\n },\n // @ts-expect-error\n \"derivedPropertyName2\": (base) => {\n return { incorrect: \"type\" };\n },\n });\n });\n\n // Executed code fails since we're providing bad strings to the function\n it.fails(\"correctly narrows types of aggregate function\", () => {\n client(Employee).withProperties({\n \"derivedPropertyName\": (base) => {\n // @ts-expect-error\n base.pivotTo(\"lead\").aggregate(\"notAProperty:sum\");\n\n // @ts-expect-error\n base.pivotTo(\"lead\").aggregate(\":avg\");\n\n // @ts-expect-error\n base.pivotTo(\"lead\").aggregate(\"employeeId:notAnOp\");\n\n // @ts-expect-error\n base.pivotTo(\"lead\").aggregate(\"\");\n\n base.pivotTo(\"lead\").aggregate(\"employeeId:collectList\");\n\n return base.pivotTo(\"lead\").aggregate(\"employeeId:sum\");\n },\n });\n });\n\n // Executed code fails since we're providing bad strings to the function\n it(\"correctly narrows types of options for aggregate functions\", () => {\n const objectSet = client(Employee).withProperties({\n \"derivedPropertyName\": (base) => {\n // @ts-expect-error\n base.pivotTo(\"lead\").aggregate(\"employeeId:approximateDistinct\", {\n limit: 1,\n });\n\n base.pivotTo(\"lead\").aggregate(\"employeeId:collectList\", {\n limit: 1,\n });\n\n base.pivotTo(\"lead\").aggregate(\"employeeId:collectSet\", { limit: 1 });\n\n base.pivotTo(\"lead\").aggregate(\"employeeId:collectList\", {\n // @ts-expect-error\n percentile: 1,\n });\n\n return base.pivotTo(\"lead\").aggregate(\n \"employeeId:approximatePercentile\",\n { percentile: 0.5 },\n );\n },\n });\n\n expectTypeOf(objectSet).branded.toEqualTypeOf<\n ObjectSet<\n Employee,\n { derivedPropertyName: \"double\" | undefined }\n >\n >();\n });\n\n it(\"correctly narrows types of selectProperty function\", () => {\n client(Employee).withProperties({\n \"derivedPropertyName\": (base) => {\n // @ts-expect-error\n base.pivotTo(\"lead\").selectProperty(\"notAProperty\");\n\n return base.pivotTo(\"lead\").selectProperty(\"employeeStatus\");\n },\n }) satisfies ObjectSet<\n Employee,\n {\n \"derivedPropertyName\": \"stringTimeseries\" | undefined;\n }\n >;\n });\n\n it(\"propagates derived property type to future object set operations with correct types\", () => {\n client(Employee).withProperties({\n \"derivedPropertyName\": (base) =>\n base.pivotTo(\"lead\").aggregate(\"employeeId:sum\"),\n // @ts-expect-error\n }).where({ \"notAProperty\": { \"$eq\": 3 } });\n\n const numericAggregationObjectSet = client(Employee).withProperties({\n \"derivedPropertyName\": (base) =>\n base.pivotTo(\"lead\").aggregate(\"employeeId:sum\"),\n }).where({ \"derivedPropertyName\": { \"$eq\": 3 } });\n\n expectTypeOf(numericAggregationObjectSet).toEqualTypeOf<\n ObjectSet<Employee, {\n derivedPropertyName: \"double\" | undefined;\n }>\n >();\n\n client(Employee).withProperties({\n \"derivedPropertyName\": (base) =>\n base.pivotTo(\"lead\").aggregate(\"employeeId:collectList\"),\n }).where({ \"derivedPropertyName\": { \"$isNull\": false } })\n // @ts-expect-error\n .where({ \"derivedPropertyName\": { \"$eq\": [1, 2] } });\n\n const setAggregationObjectSet = client(Employee).withProperties({\n \"derivedPropertyName\": (base) =>\n base.pivotTo(\"lead\").aggregate(\"fullName:collectSet\"),\n });\n setAggregationObjectSet.where({\n \"derivedPropertyName\": { \"$isNull\": false },\n });\n\n setAggregationObjectSet.where({\n // @ts-expect-error\n \"derivedPropertyName\": { \"$eq\": [1, 2] },\n });\n expectTypeOf(setAggregationObjectSet).toEqualTypeOf<\n ObjectSet<Employee, {\n derivedPropertyName: \"string\"[] | undefined;\n }>\n >();\n\n const selectPropertyObjectSet = client(Employee).withProperties({\n \"derivedPropertyName\": (base) =>\n base.pivotTo(\"lead\").selectProperty(\"employeeId\"),\n }).where({ \"derivedPropertyName\": { \"$eq\": 3 } });\n\n expectTypeOf(selectPropertyObjectSet).toEqualTypeOf<\n ObjectSet<Employee, {\n derivedPropertyName: \"integer\";\n }>\n >();\n\n client(Employee).withProperties({\n \"derivedPropertyName\": (base) =>\n base.pivotTo(\"lead\").selectProperty(\"startDate\"),\n }).where({ \"derivedPropertyName\": { \"$eq\": \"datetimeFilter\" } });\n });\n\n it(\"correctly types multiple property definitions in one clause\", () => {\n const objectSet = client(Employee).withProperties({\n \"derivedPropertyName\": (base) =>\n base.pivotTo(\"lead\").aggregate(\"employeeId:sum\"),\n \"derivedPropertyName2\": (base) =>\n base.pivotTo(\"lead\").selectProperty(\"fullName\"),\n }).where({ \"derivedPropertyName\": { \"$eq\": 3 } })\n .where({ \"derivedPropertyName2\": { \"$eq\": \"name\" } });\n\n expectTypeOf(objectSet).toEqualTypeOf<\n ObjectSet<Employee, {\n derivedPropertyName: \"double\" | undefined;\n derivedPropertyName2: \"string\" | undefined;\n }>\n >();\n });\n\n it(\"ensures other properties are consistently typed\", () => {\n client(Employee).withProperties({\n \"derivedPropertyName\": (base) =>\n base.pivotTo(\"lead\").selectProperty(\"employeeId\"),\n }).where({ \"fullName\": { \"$eq\": \"A\" } });\n\n client(Employee).withProperties({\n \"derivedPropertyName\": (base) =>\n base.pivotTo(\"lead\").selectProperty(\"employeeId\"),\n }).where({ \"employeeId\": { \"$eq\": 2 } });\n });\n\n it(\"allows fetching derived properties with correctly typed Osdk.Instance types\", async () => {\n const objectWithRdp = await client(Employee).withProperties({\n \"derivedPropertyName\": (base) =>\n base.pivotTo(\"lead\").selectProperty(\"employeeId\"),\n }).fetchOne(stubData.employee1.employeeId);\n\n expectTypeOf(objectWithRdp.derivedPropertyName).toEqualTypeOf<\n number\n >();\n expect(objectWithRdp.derivedPropertyName).toBe(\n stubData.employee2.__primaryKey,\n );\n\n const objectWithUndefinedRdp = await client(Employee).withProperties({\n \"derivedPropertyName\": (base) =>\n base.pivotTo(\"lead\").selectProperty(\"employeeId\"),\n }).fetchOne(stubData.employee2.employeeId, {\n $select: [\"derivedPropertyName\"],\n });\n\n expect(objectWithUndefinedRdp.derivedPropertyName).toBeUndefined();\n });\n\n it(\"correctly deserializes attachments and geo properties\", async () => {\n const objectWithRdp = await client(objectTypeWithAllPropertyTypes)\n .withProperties({\n \"attachmentSelectDp\": (base) =>\n base.pivotTo(\"linkedObjectType\").selectProperty(\"attachment\"),\n \"geoSelectDp\": (base) =>\n base.pivotTo(\"linkedObjectType\").selectProperty(\"geoShape\"),\n \"geoCollectListDp\": (base) =>\n base.pivotTo(\"linkedObjectType\").aggregate(\n \"geoShapeArray:collectList\",\n ),\n }).fetchOne(5);\n\n expectTypeOf(objectWithRdp.attachmentSelectDp).toEqualTypeOf<\n Attachment | undefined\n >();\n expect(objectWithRdp.attachmentSelectDp).toMatchInlineSnapshot(\n `\n {\n \"fetchContents\": [Function],\n \"fetchMetadata\": [Function],\n \"rid\": \"ri.attachments.main.attachment.86016861-707f-4292-b258-6a7108915a75\",\n }\n `,\n );\n\n expectTypeOf(objectWithRdp.geoSelectDp).toEqualTypeOf<\n GeoJSON.GeoJSON | undefined\n >();\n expect(objectWithRdp.geoSelectDp).toMatchInlineSnapshot(`\n {\n \"coordinates\": [\n [\n [\n 1,\n 1,\n ],\n [\n 1,\n 2,\n ],\n [\n 2,\n 2,\n ],\n [\n 2,\n 1,\n ],\n [\n 1,\n 1,\n ],\n ],\n ],\n \"type\": \"Polygon\",\n }\n `);\n\n expectTypeOf(objectWithRdp.geoCollectListDp).toEqualTypeOf<\n GeoJSON.GeoJSON[] | undefined\n >();\n expect(objectWithRdp.geoCollectListDp).toMatchInlineSnapshot(`\n [\n [\n {\n \"coordinates\": [\n [\n [\n 1,\n 1,\n ],\n [\n 1,\n 2,\n ],\n [\n 2,\n 2,\n ],\n [\n 2,\n 1,\n ],\n [\n 1,\n 1,\n ],\n ],\n ],\n \"type\": \"Polygon\",\n },\n ],\n ]\n `);\n\n // Tests that we deserialize properly for fetchPage as well\n const fetchPageTest = await client(objectTypeWithAllPropertyTypes)\n .withProperties({\n \"attachmentSelectDp\": (base) =>\n base.pivotTo(\"linkedObjectType\").selectProperty(\"attachment\"),\n \"geoSelectDp\": (base) =>\n base.pivotTo(\"linkedObjectType\").selectProperty(\"geoShape\"),\n \"geoCollectListDp\": (base) =>\n base.pivotTo(\"linkedObjectType\").aggregate(\n \"geoShapeArray:collectList\",\n ),\n }).where({ \"id\": { \"$eq\": 5 } }).fetchPage();\n\n expect(fetchPageTest.data[0].attachmentSelectDp).toMatchInlineSnapshot(\n `\n {\n \"fetchContents\": [Function],\n \"fetchMetadata\": [Function],\n \"rid\": \"ri.attachments.main.attachment.86016861-707f-4292-b258-6a7108915a75\",\n }\n `,\n );\n });\n it(\"correctly deserializes count\", async () => {\n const objectWithRdp = await client(Employee).withProperties({\n \"derivedPropertyName\": (base) =>\n base.pivotTo(\"lead\").aggregate(\"$count\"),\n }).fetchOne(stubData.employee1.employeeId);\n\n expectTypeOf(objectWithRdp.derivedPropertyName).toEqualTypeOf<number>();\n expect(objectWithRdp.derivedPropertyName).toEqual(1);\n });\n });\n\n // Can't run these tests because we can't load by primary key!\n // describe.each([\"fetchOne\", \"fetchOneWithErrors\"] as const)(\"%s\", (k) => {\n // describe(\"strictNonNull: false\", () => {\n // describe(\"includeRid: true\", () => {\n // it(\"returns bad data\", async () => {\n // // Look at this\n // const opts = {\n // $__EXPERIMENTAL_strictNonNull: false,\n // $includeRid: true,\n // } as const;\n // const result = k === \"fetchOne\"\n // ? await client(Employee).fetchOne(50033, opts)\n // : (await client(Employee).fetchOneWithErrors(50033, opts)).value!;\n\n // expect(result).not.toBeUndefined();\n // expectTypeOf(result).branded.toEqualTypeOf<\n // Osdk<Employee, \"$all\" | \"$notStrict\" | \"$rid\">\n // >();\n // });\n // });\n\n // describe(\"includeRid: false\", () => {\n // it(\"returns bad data\", async () => {\n // const opts = {\n // $__EXPERIMENTAL_strictNonNull: false,\n // $includeRid: false,\n // } as const;\n // const result = k === \"fetchOne\"\n // ? await client(Employee).fetchOne(50033, opts)\n // : (await client(Employee).fetchOneWithErrors(50033, opts)).value!;\n\n // expect(result).not.toBeUndefined();\n // expectTypeOf(result).branded.toEqualTypeOf<\n // Osdk<Employee, \"$all\" | \"$notStrict\">\n // >();\n // });\n // });\n // });\n // });\n\n describe(\"conversions\", () => {\n describe(\"strictNonNull: false\", () => {\n it(\"returns bad data\", async () => {\n const result = await client(Employee).fetchPage({});\n\n const empNotStrict = result.data[0];\n const empNotStrict2: Osdk<Employee, \"$all\" | \"$notStrict\"> =\n empNotStrict;\n expectTypeOf(empNotStrict).branded.toEqualTypeOf<\n Osdk<Employee, \"$all\" | \"$notStrict\">\n >();\n expectTypeOf(empNotStrict).branded.toEqualTypeOf<\n Employee.OsdkObject<never, Employee.PropertyKeys>\n >();\n expectTypeOf(empNotStrict).branded.toEqualTypeOf<\n Employee.OsdkObject<never>\n >();\n\n expectTypeOf(empNotStrict.employeeId).toEqualTypeOf<\n number\n >();\n\n expectTypeOf(empNotStrict2.employeeId).toEqualTypeOf<\n number\n >();\n\n expectTypeOf<ApiNameAsString<FooInterface>>()\n .toEqualTypeOf<\"FooInterface\">();\n\n expectTypeOf<\n NonNullable<CompileTimeMetadata<Employee>[\"interfaceMap\"]>\n >()\n .toEqualTypeOf<{\n FooInterface: {\n fooSpt: \"fullName\";\n };\n }>();\n\n expectTypeOf<PropMapToInterface<Employee, FooInterface>>()\n .toEqualTypeOf<{ fullName: \"fooSpt\" }>();\n\n expectTypeOf<PropMapToObject<FooInterface, Employee>>()\n .toEqualTypeOf<{ fooSpt: \"fullName\" }>();\n\n expectTypeOf<ConvertProps<Employee, FooInterface, \"fullName\">>()\n .toEqualTypeOf<\"fooSpt\">();\n\n expectTypeOf<JustProps<Employee, \"$all\">>()\n .toEqualTypeOf<\n | \"class\"\n | \"fullName\"\n | \"office\"\n | \"employeeId\"\n | \"employeeStatus\"\n | \"startDate\"\n | \"employeeLocation\"\n | \"employeeSensor\"\n >();\n\n expectTypeOf<\n ConvertProps<Employee, FooInterface, \"fullName\" | \"office\">\n >()\n .toEqualTypeOf<\"fooSpt\">();\n\n expectTypeOf<\n ConvertProps<FooInterface, Employee, \"fooSpt\">\n >()\n .toEqualTypeOf<\"fullName\">();\n\n expectTypeOf<\n ConvertProps<FooInterface, Employee, \"fooSpt\", \"$allBaseProperties\">\n >()\n .toEqualTypeOf<\n | \"employeeId\"\n | \"fullName\"\n | \"office\"\n | \"class\"\n | \"startDate\"\n | \"employeeStatus\"\n | \"employeeSensor\"\n | \"employeeLocation\"\n >();\n\n // We don't have a proper definition that has\n // a non-null property on an interface so\n // we cheese it here to be sure the types work\n type CheesedProp<\n T extends InterfaceDefinition,\n K extends PropertyKeys<T>,\n > = T & { properties: { [KK in K]: { nullable: false } } };\n\n type CheesedFoo = CheesedProp<FooInterface, \"fooSpt\">;\n const CheesedFoo: CheesedFoo = FooInterface as CheesedFoo;\n\n type T = ConvertProps<Employee, CheesedFoo, \"fullName\">;\n\n const cheesedFooNotStrict = result.data[0].$as(CheesedFoo);\n expectTypeOf(cheesedFooNotStrict).branded.toEqualTypeOf<\n Osdk<CheesedFoo, \"$all\" | \"$notStrict\">\n >();\n\n cheesedFooNotStrict.fooSpt;\n });\n });\n });\n});\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -69,6 +69,7 @@ class TsServerImpl extends EventEmitter {
|
|
|
69
69
|
};
|
|
70
70
|
sendOpenRequest = this.#requestFactory(s.protocol.CommandTypes.Open);
|
|
71
71
|
sendQuickInfoRequest = this.#requestFactory(s.protocol.CommandTypes.Quickinfo, isQuickInfoResponse);
|
|
72
|
+
sendCompletionsRequest = this.#requestFactory(s.protocol.CommandTypes.CompletionInfo, m => isResponse(m) && m.command === s.protocol.CommandTypes.CompletionInfo);
|
|
72
73
|
async #makeRequest(command, args, isResponse) {
|
|
73
74
|
const seq = this.#nextSeq++;
|
|
74
75
|
const req = {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tsserver.js","names":["execaNode","findUpMultiple","EventEmitter","fs","path","pLocate","pMap","invariant","server","s","TsServerImpl","tsServerPath","nextSeq","subprocess","logger","constructor","start","ipc","serialization","isLevelEnabled","on","req","trace","info","emit","stop","connected","disconnect","getOneMessage","filter","requestFactory","#requestFactory","command","isResponse","args","makeRequest","sendOpenRequest","protocol","CommandTypes","Open","sendQuickInfoRequest","Quickinfo","isQuickInfoResponse","#makeRequest","seq","type","arguments","sendMessage","resp","undefined","startTsServer","getTsServerPath","process","env","NODE_ENV","nodeModuleDirs","cwd","import","meta","url","possibleTsServerPaths","dir","join","c","stat","isFile","e","isEvent","m","isProjectLoadingStart","event","isProjectLoadingEnd","requestSeq","request_seq"],"sources":["tsserver.ts"],"sourcesContent":["/*\n * Copyright 2024 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 { Logger } from \"@osdk/api\";\nimport type { Subprocess } from \"execa\";\nimport { execaNode } from \"execa\";\nimport { findUpMultiple } from \"find-up\";\nimport { EventEmitter } from \"node:events\";\nimport * as fs from \"node:fs/promises\";\nimport * as path from \"node:path\";\nimport pLocate from \"p-locate\";\nimport pMap from \"p-map\";\nimport invariant from \"tiny-invariant\";\nimport { server as s } from \"typescript\";\n\ntype RequestFn<\n T extends s.protocol.Request,\n X extends s.protocol.Response = never,\n> = (\n args: T[\"arguments\"],\n) => Promise<{ req: T; resp: X }>;\n\nclass TsServerImpl extends EventEmitter<{\n exit: [];\n}> {\n #tsServerPath: string;\n #nextSeq = 1;\n #subprocess: Subprocess<{ ipc: true; serialization: \"json\" }> | undefined;\n #logger: Logger;\n\n constructor(tsServerPath: string, logger: Logger) {\n super();\n this.#tsServerPath = tsServerPath;\n this.#logger = logger;\n }\n\n get subprocess():\n | Subprocess<{\n ipc: true;\n serialization: \"json\";\n }>\n | undefined\n {\n return this.#subprocess;\n }\n\n async start(): Promise<this> {\n this.#subprocess = execaNode({\n ipc: true,\n serialization: \"json\",\n })`${this.#tsServerPath} --useNodeIpc`;\n\n if (this.#logger.isLevelEnabled(\"trace\")) {\n this.#subprocess.on(\"message\", (req) => {\n this.#logger.trace({ req }, \"message received\");\n });\n }\n\n this.#subprocess.on(\"exit\", () => {\n this.#logger.info(\"tsserver exited\");\n this.emit(\"exit\");\n });\n return this;\n }\n\n stop(): void {\n if (this.#subprocess?.connected) {\n this.#subprocess?.disconnect();\n }\n }\n\n async getOneMessage<X>(filter?: (m: unknown) => m is X): Promise<X> {\n return await this.subprocess!.getOneMessage({ filter }) as X;\n }\n\n #requestFactory =\n <T extends s.protocol.Request, X extends s.protocol.Response = never>(\n command: T[\"command\"],\n isResponse?: (m: unknown) => m is X,\n ): RequestFn<T, X> =>\n async (args: T[\"arguments\"]): Promise<{ req: T; resp: X }> => {\n return await this.#makeRequest<T, X>(command, args, isResponse);\n };\n\n sendOpenRequest: RequestFn<s.protocol.OpenRequest> = this.#requestFactory(\n s.protocol.CommandTypes.Open,\n );\n\n sendQuickInfoRequest: RequestFn<\n s.protocol.QuickInfoRequest,\n s.protocol.QuickInfoResponse\n > = this.#requestFactory(\n s.protocol.CommandTypes.Quickinfo,\n isQuickInfoResponse,\n );\n\n async #makeRequest<\n T extends s.protocol.Request,\n X extends s.protocol.Response = never,\n >(\n command: T[\"command\"],\n args: T[\"arguments\"],\n isResponse?: (m: unknown) => m is X,\n ): Promise<{ req: T; resp: X }> {\n const seq = this.#nextSeq++;\n const req: T = {\n type: \"request\",\n command,\n arguments: args,\n seq,\n } as T;\n this.#logger.trace({ req }, \"requesting\");\n\n await this.#subprocess?.sendMessage(req as any);\n\n if (isResponse) {\n return {\n req,\n resp: await this.#subprocess?.getOneMessage({\n filter: isResponse,\n }) as unknown as X,\n };\n }\n return { req, resp: undefined as unknown as X };\n }\n}\n\nexport type TsServer = Omit<\n TsServerImpl,\n Exclude<\n keyof EventEmitter,\n | \"on\"\n | \"addListener\"\n | \"off\"\n | \"once\"\n | \"removeListener\"\n | \"removeAllListeners\"\n >\n>;\n\nexport async function startTsServer(logger: Logger): Promise<TsServer> {\n const tsServerPath = await getTsServerPath();\n invariant(tsServerPath != null);\n\n return new TsServerImpl(tsServerPath, logger).start();\n}\n\nasync function getTsServerPath() {\n const nodeModuleDirs = await findUpMultiple(\"node_modules\", {\n cwd: import.meta.url,\n type: \"directory\",\n });\n const possibleTsServerPaths = await pMap(\n nodeModuleDirs,\n (dir) => path.join(dir, \"typescript\", \"lib\", \"tsserver.js\"),\n );\n\n const tsServerPath = await pLocate(\n [\"no\", ...possibleTsServerPaths],\n async (dir) => {\n try {\n const c = await fs.stat(\n dir,\n );\n return c.isFile();\n } catch (e) {\n return false;\n }\n },\n );\n return tsServerPath;\n}\n\nexport function isEvent(m: unknown): m is s.protocol.Event {\n return !!(m && typeof m === \"object\" && \"type\" in m\n && m.type === \"event\");\n}\n\nexport function isResponse(m: unknown): m is s.protocol.Response {\n return !!(m && typeof m === \"object\" && \"type\" in m\n && m.type === \"response\");\n}\n\nexport function isProjectLoadingStart(\n m: unknown,\n): m is s.protocol.ProjectLoadingStartEvent {\n return isEvent(m) && m.event === \"projectLoadingStart\";\n}\nexport function isProjectLoadingEnd(\n m: unknown,\n): m is s.protocol.ProjectLoadingStartEvent {\n return isEvent(m) && m.event === \"projectLoadingFinish\";\n}\nexport function isQuickInfoResponse(\n m: unknown,\n requestSeq?: number,\n): m is s.protocol.QuickInfoResponse {\n return isResponse(m)\n && m.command === s.protocol.CommandTypes.Quickinfo as string\n && (requestSeq == null || m.request_seq === requestSeq);\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"tsserver.js","names":["execaNode","findUpMultiple","EventEmitter","fs","path","pLocate","pMap","invariant","server","s","TsServerImpl","tsServerPath","nextSeq","subprocess","logger","constructor","start","ipc","serialization","isLevelEnabled","on","req","trace","info","emit","stop","connected","disconnect","getOneMessage","filter","requestFactory","#requestFactory","command","isResponse","args","makeRequest","sendOpenRequest","protocol","CommandTypes","Open","sendQuickInfoRequest","Quickinfo","isQuickInfoResponse","sendCompletionsRequest","CompletionInfo","m","#makeRequest","seq","type","arguments","sendMessage","resp","undefined","startTsServer","getTsServerPath","process","env","NODE_ENV","nodeModuleDirs","cwd","import","meta","url","possibleTsServerPaths","dir","join","c","stat","isFile","e","isEvent","isProjectLoadingStart","event","isProjectLoadingEnd","requestSeq","request_seq"],"sources":["tsserver.ts"],"sourcesContent":["/*\n * Copyright 2024 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 { Logger } from \"@osdk/api\";\nimport type { Subprocess } from \"execa\";\nimport { execaNode } from \"execa\";\nimport { findUpMultiple } from \"find-up\";\nimport { EventEmitter } from \"node:events\";\nimport * as fs from \"node:fs/promises\";\nimport * as path from \"node:path\";\nimport pLocate from \"p-locate\";\nimport pMap from \"p-map\";\nimport invariant from \"tiny-invariant\";\nimport { server as s } from \"typescript\";\n\ntype RequestFn<\n T extends s.protocol.Request,\n X extends s.protocol.Response = never,\n> = (\n args: T[\"arguments\"],\n) => Promise<{ req: T; resp: X }>;\n\nclass TsServerImpl extends EventEmitter<{\n exit: [];\n}> {\n #tsServerPath: string;\n #nextSeq = 1;\n #subprocess: Subprocess<{ ipc: true; serialization: \"json\" }> | undefined;\n #logger: Logger;\n\n constructor(tsServerPath: string, logger: Logger) {\n super();\n this.#tsServerPath = tsServerPath;\n this.#logger = logger;\n }\n\n get subprocess():\n | Subprocess<{\n ipc: true;\n serialization: \"json\";\n }>\n | undefined\n {\n return this.#subprocess;\n }\n\n async start(): Promise<this> {\n this.#subprocess = execaNode({\n ipc: true,\n serialization: \"json\",\n })`${this.#tsServerPath} --useNodeIpc`;\n\n if (this.#logger.isLevelEnabled(\"trace\")) {\n this.#subprocess.on(\"message\", (req) => {\n this.#logger.trace({ req }, \"message received\");\n });\n }\n\n this.#subprocess.on(\"exit\", () => {\n this.#logger.info(\"tsserver exited\");\n this.emit(\"exit\");\n });\n return this;\n }\n\n stop(): void {\n if (this.#subprocess?.connected) {\n this.#subprocess?.disconnect();\n }\n }\n\n async getOneMessage<X>(filter?: (m: unknown) => m is X): Promise<X> {\n return await this.subprocess!.getOneMessage({ filter }) as X;\n }\n\n #requestFactory =\n <T extends s.protocol.Request, X extends s.protocol.Response = never>(\n command: T[\"command\"],\n isResponse?: (m: unknown) => m is X,\n ): RequestFn<T, X> =>\n async (args: T[\"arguments\"]): Promise<{ req: T; resp: X }> => {\n return await this.#makeRequest<T, X>(command, args, isResponse);\n };\n\n sendOpenRequest: RequestFn<s.protocol.OpenRequest> = this.#requestFactory(\n s.protocol.CommandTypes.Open,\n );\n\n sendQuickInfoRequest: RequestFn<\n s.protocol.QuickInfoRequest,\n s.protocol.QuickInfoResponse\n > = this.#requestFactory(\n s.protocol.CommandTypes.Quickinfo,\n isQuickInfoResponse,\n );\n\n sendCompletionsRequest: RequestFn<\n s.protocol.CompletionsRequest,\n s.protocol.CompletionInfoResponse\n > = this.#requestFactory(\n s.protocol.CommandTypes.CompletionInfo,\n (m): m is s.protocol.CompletionInfoResponse =>\n isResponse(m)\n && m.command === s.protocol.CommandTypes.CompletionInfo as string,\n );\n\n async #makeRequest<\n T extends s.protocol.Request,\n X extends s.protocol.Response = never,\n >(\n command: T[\"command\"],\n args: T[\"arguments\"],\n isResponse?: (m: unknown) => m is X,\n ): Promise<{ req: T; resp: X }> {\n const seq = this.#nextSeq++;\n const req: T = {\n type: \"request\",\n command,\n arguments: args,\n seq,\n } as T;\n this.#logger.trace({ req }, \"requesting\");\n\n await this.#subprocess?.sendMessage(req as any);\n\n if (isResponse) {\n return {\n req,\n resp: await this.#subprocess?.getOneMessage({\n filter: isResponse,\n }) as unknown as X,\n };\n }\n return { req, resp: undefined as unknown as X };\n }\n}\n\nexport type TsServer = Omit<\n TsServerImpl,\n Exclude<\n keyof EventEmitter,\n | \"on\"\n | \"addListener\"\n | \"off\"\n | \"once\"\n | \"removeListener\"\n | \"removeAllListeners\"\n >\n>;\n\nexport async function startTsServer(logger: Logger): Promise<TsServer> {\n const tsServerPath = await getTsServerPath();\n invariant(tsServerPath != null);\n\n return new TsServerImpl(tsServerPath, logger).start();\n}\n\nasync function getTsServerPath() {\n const nodeModuleDirs = await findUpMultiple(\"node_modules\", {\n cwd: import.meta.url,\n type: \"directory\",\n });\n const possibleTsServerPaths = await pMap(\n nodeModuleDirs,\n (dir) => path.join(dir, \"typescript\", \"lib\", \"tsserver.js\"),\n );\n\n const tsServerPath = await pLocate(\n [\"no\", ...possibleTsServerPaths],\n async (dir) => {\n try {\n const c = await fs.stat(\n dir,\n );\n return c.isFile();\n } catch (e) {\n return false;\n }\n },\n );\n return tsServerPath;\n}\n\nexport function isEvent(m: unknown): m is s.protocol.Event {\n return !!(m && typeof m === \"object\" && \"type\" in m\n && m.type === \"event\");\n}\n\nexport function isResponse(m: unknown): m is s.protocol.Response {\n return !!(m && typeof m === \"object\" && \"type\" in m\n && m.type === \"response\");\n}\n\nexport function isProjectLoadingStart(\n m: unknown,\n): m is s.protocol.ProjectLoadingStartEvent {\n return isEvent(m) && m.event === \"projectLoadingStart\";\n}\nexport function isProjectLoadingEnd(\n m: unknown,\n): m is s.protocol.ProjectLoadingStartEvent {\n return isEvent(m) && m.event === \"projectLoadingFinish\";\n}\nexport function isQuickInfoResponse(\n m: unknown,\n requestSeq?: number,\n): m is s.protocol.QuickInfoResponse {\n return isResponse(m)\n && m.command === s.protocol.CommandTypes.Quickinfo as string\n && (requestSeq == null || m.request_seq === requestSeq);\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -57,6 +57,10 @@ async function extractRdpDefinitionInternal(clientCtx, objectSet, methodInputObj
|
|
|
57
57
|
}
|
|
58
58
|
for (const [name, definition] of Object.entries(objectSet.derivedProperties)) {
|
|
59
59
|
if (definition.type !== "selection") {
|
|
60
|
+
definitions[name] = {
|
|
61
|
+
selectedOrCollectedPropertyType: undefined,
|
|
62
|
+
definition
|
|
63
|
+
};
|
|
60
64
|
continue;
|
|
61
65
|
}
|
|
62
66
|
switch (definition.operation.type) {
|
|
@@ -73,9 +77,16 @@ async function extractRdpDefinitionInternal(clientCtx, objectSet, methodInputObj
|
|
|
73
77
|
};
|
|
74
78
|
}
|
|
75
79
|
const objDef = await clientCtx.ontologyProvider.getObjectDefinition(operationLevelObjectType);
|
|
76
|
-
definitions[name] =
|
|
80
|
+
definitions[name] = {
|
|
81
|
+
selectedOrCollectedPropertyType: objDef.properties[definition.operation.selectedPropertyApiName],
|
|
82
|
+
definition
|
|
83
|
+
};
|
|
84
|
+
break;
|
|
77
85
|
default:
|
|
78
|
-
|
|
86
|
+
definitions[name] = {
|
|
87
|
+
selectedOrCollectedPropertyType: undefined,
|
|
88
|
+
definition
|
|
89
|
+
};
|
|
79
90
|
}
|
|
80
91
|
}
|
|
81
92
|
return {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"extractRdpDefinition.js","names":["invariant","extractRdpDefinition","clientCtx","objectSet","extractRdpDefinitionInternal","undefined","definitions","methodInputObjectType","type","childObjectType","objDef","ontologyProvider","getObjectDefinition","linkDef","links","link","process","env","NODE_ENV","targetType","name","definition","Object","entries","derivedProperties","operation","operationLevelObjectType","properties","selectedPropertyApiName","objectType","interfaceType","objectSets","objectSetTypes","Promise","all","map","os","reduce","acc","keys","length","firstValidChildObjectType","find","every"],"sources":["extractRdpDefinition.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 type { ObjectMetadata } from \"@osdk/api\";\nimport type { ObjectSet } from \"@osdk/foundry.ontologies\";\nimport invariant from \"tiny-invariant\";\nimport type { MinimalClient } from \"../MinimalClientContext.js\";\n\nexport async function extractRdpDefinition(\n clientCtx: MinimalClient,\n objectSet: ObjectSet,\n): Promise<\n Record<string, ObjectMetadata.Property>\n> {\n return (await extractRdpDefinitionInternal(\n clientCtx,\n objectSet,\n undefined,\n )).definitions;\n}\n\n/* @internal\n* Returns a tuple of the derived property definitions and the object type that the derived property is defined on.\n*/\nasync function extractRdpDefinitionInternal(\n clientCtx: MinimalClient,\n objectSet: ObjectSet,\n methodInputObjectType: string | undefined,\n): Promise<\n {\n definitions: Record<string, ObjectMetadata.Property>;\n childObjectType?: string;\n }\n> {\n switch (objectSet.type) {\n case \"searchAround\": {\n const { definitions, childObjectType } =\n await extractRdpDefinitionInternal(\n clientCtx,\n objectSet.objectSet,\n methodInputObjectType,\n );\n\n if (childObjectType === undefined || childObjectType === \"\") {\n return { definitions: {} };\n }\n const objDef = await clientCtx.ontologyProvider.getObjectDefinition(\n childObjectType,\n );\n const linkDef = objDef.links[objectSet.link];\n invariant(linkDef, `Missing link definition for '${objectSet.link}'`);\n return {\n definitions,\n childObjectType: objDef.links[objectSet.link].targetType,\n };\n }\n case \"withProperties\": {\n // These are the definitions and current object type for all object set operations prior to the definition (e.g. filter, pivotTo, etc.)\n const { definitions, childObjectType } =\n await extractRdpDefinitionInternal(\n clientCtx,\n objectSet.objectSet,\n methodInputObjectType,\n );\n if (childObjectType === undefined || childObjectType === \"\") {\n return { definitions: {} };\n }\n\n for (\n const [name, definition] of Object.entries(objectSet.derivedProperties)\n ) {\n if (definition.type !== \"selection\") {\n continue;\n }\n\n switch (definition.operation.type) {\n case \"collectList\":\n case \"collectSet\":\n case \"get\":\n // This is the object set construction for the derived property definition construction. We pass in childObjectType so that when we reach MethodInputObjectSet, we know where to start looking.\n const { childObjectType: operationLevelObjectType } =\n await extractRdpDefinitionInternal(\n clientCtx,\n definition.objectSet,\n childObjectType,\n );\n if (\n operationLevelObjectType === undefined\n || operationLevelObjectType === \"\"\n ) {\n return { definitions: {} };\n }\n const objDef = await clientCtx.ontologyProvider.getObjectDefinition(\n operationLevelObjectType,\n );\n\n definitions[name] =\n objDef.properties[definition.operation.selectedPropertyApiName];\n\n default:\n continue;\n }\n }\n return { definitions, childObjectType };\n }\n case \"methodInput\":\n return { definitions: {}, childObjectType: methodInputObjectType };\n case \"base\":\n return { definitions: {}, childObjectType: objectSet.objectType };\n case \"interfaceBase\":\n return { definitions: {}, childObjectType: objectSet.interfaceType };\n case \"filter\":\n case \"asBaseObjectTypes\":\n case \"asType\":\n case \"nearestNeighbors\":\n return extractRdpDefinitionInternal(\n clientCtx,\n objectSet.objectSet,\n methodInputObjectType,\n );\n // These will throw in OSS so we should throw here so no request is made\n case \"intersect\":\n case \"subtract\":\n case \"union\":\n const objectSets = objectSet.objectSets;\n const objectSetTypes = await Promise.all(\n objectSets.map((os) =>\n extractRdpDefinitionInternal(\n clientCtx,\n os,\n methodInputObjectType,\n )\n ),\n );\n\n const definitions = objectSetTypes.reduce(\n (acc, { definitions }) => ({ ...acc, ...definitions }),\n {},\n );\n invariant(\n Object.keys(definitions).length === 0,\n \"Object sets combined using intersect, subtract, or union must not contain any derived property definitions\",\n );\n\n const firstValidChildObjectType = objectSetTypes.find(\n ({ childObjectType }) => childObjectType != null,\n )?.childObjectType;\n invariant(\n objectSetTypes.every(\n ({ childObjectType }) =>\n childObjectType === firstValidChildObjectType\n || childObjectType == null,\n ),\n \"All object sets in an intersect, subtract, or union must have the same child object type\",\n );\n\n return {\n definitions: {},\n childObjectType: firstValidChildObjectType,\n };\n case \"static\":\n case \"reference\":\n // Static and reference object sets are always intersected with a base object set, so we can just return no child object type.\n return { definitions: {} };\n // We don't have to worry about new object sets being added and doing a runtime break and breaking people since the OSDK is always constructing these.\n default:\n const _: never = objectSet;\n invariant(\n false,\n `Unsupported object set type for Runtime Derived Properties`,\n );\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"extractRdpDefinition.js","names":["invariant","extractRdpDefinition","clientCtx","objectSet","extractRdpDefinitionInternal","undefined","definitions","methodInputObjectType","type","childObjectType","objDef","ontologyProvider","getObjectDefinition","linkDef","links","link","process","env","NODE_ENV","targetType","name","definition","Object","entries","derivedProperties","selectedOrCollectedPropertyType","operation","operationLevelObjectType","properties","selectedPropertyApiName","objectType","interfaceType","objectSets","objectSetTypes","Promise","all","map","os","reduce","acc","keys","length","firstValidChildObjectType","find","every"],"sources":["extractRdpDefinition.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 type { ObjectSet } from \"@osdk/foundry.ontologies\";\nimport invariant from \"tiny-invariant\";\nimport type { DerivedPropertyRuntimeMetadata } from \"../derivedProperties/derivedPropertyRuntimeMetadata.js\";\nimport type { MinimalClient } from \"../MinimalClientContext.js\";\n\nexport async function extractRdpDefinition(\n clientCtx: MinimalClient,\n objectSet: ObjectSet,\n): Promise<\n DerivedPropertyRuntimeMetadata\n> {\n return (await extractRdpDefinitionInternal(\n clientCtx,\n objectSet,\n undefined,\n )).definitions;\n}\n\n/* @internal\n* Returns a tuple of the derived property definitions and the object type that the derived property is defined on.\n*/\nasync function extractRdpDefinitionInternal(\n clientCtx: MinimalClient,\n objectSet: ObjectSet,\n methodInputObjectType: string | undefined,\n): Promise<\n {\n definitions: DerivedPropertyRuntimeMetadata;\n childObjectType?: string;\n }\n> {\n switch (objectSet.type) {\n case \"searchAround\": {\n const { definitions, childObjectType } =\n await extractRdpDefinitionInternal(\n clientCtx,\n objectSet.objectSet,\n methodInputObjectType,\n );\n\n if (childObjectType === undefined || childObjectType === \"\") {\n return { definitions: {} };\n }\n const objDef = await clientCtx.ontologyProvider.getObjectDefinition(\n childObjectType,\n );\n const linkDef = objDef.links[objectSet.link];\n invariant(linkDef, `Missing link definition for '${objectSet.link}'`);\n return {\n definitions,\n childObjectType: objDef.links[objectSet.link].targetType,\n };\n }\n case \"withProperties\": {\n // These are the definitions and current object type for all object set operations prior to the definition (e.g. filter, pivotTo, etc.)\n const { definitions, childObjectType } =\n await extractRdpDefinitionInternal(\n clientCtx,\n objectSet.objectSet,\n methodInputObjectType,\n );\n if (childObjectType === undefined || childObjectType === \"\") {\n return { definitions: {} };\n }\n\n for (\n const [name, definition] of Object.entries(objectSet.derivedProperties)\n ) {\n if (definition.type !== \"selection\") {\n definitions[name] = {\n selectedOrCollectedPropertyType: undefined,\n definition,\n };\n continue;\n }\n\n switch (definition.operation.type) {\n case \"collectList\":\n case \"collectSet\":\n case \"get\":\n // This is the object set construction for the derived property definition construction. We pass in childObjectType so that when we reach MethodInputObjectSet, we know where to start looking.\n const { childObjectType: operationLevelObjectType } =\n await extractRdpDefinitionInternal(\n clientCtx,\n definition.objectSet,\n childObjectType,\n );\n if (\n operationLevelObjectType === undefined\n || operationLevelObjectType === \"\"\n ) {\n return { definitions: {} };\n }\n const objDef = await clientCtx.ontologyProvider.getObjectDefinition(\n operationLevelObjectType,\n );\n\n definitions[name] = {\n selectedOrCollectedPropertyType:\n objDef.properties[definition.operation.selectedPropertyApiName],\n definition,\n };\n break;\n\n default:\n definitions[name] = {\n selectedOrCollectedPropertyType: undefined,\n definition,\n };\n }\n }\n return { definitions, childObjectType };\n }\n case \"methodInput\":\n return { definitions: {}, childObjectType: methodInputObjectType };\n case \"base\":\n return { definitions: {}, childObjectType: objectSet.objectType };\n case \"interfaceBase\":\n return { definitions: {}, childObjectType: objectSet.interfaceType };\n case \"filter\":\n case \"asBaseObjectTypes\":\n case \"asType\":\n case \"nearestNeighbors\":\n return extractRdpDefinitionInternal(\n clientCtx,\n objectSet.objectSet,\n methodInputObjectType,\n );\n // These will throw in OSS so we should throw here so no request is made\n case \"intersect\":\n case \"subtract\":\n case \"union\":\n const objectSets = objectSet.objectSets;\n const objectSetTypes = await Promise.all(\n objectSets.map((os) =>\n extractRdpDefinitionInternal(\n clientCtx,\n os,\n methodInputObjectType,\n )\n ),\n );\n\n const definitions = objectSetTypes.reduce(\n (acc, { definitions }) => ({ ...acc, ...definitions }),\n {},\n );\n invariant(\n Object.keys(definitions).length === 0,\n \"Object sets combined using intersect, subtract, or union must not contain any derived property definitions\",\n );\n\n const firstValidChildObjectType = objectSetTypes.find(\n ({ childObjectType }) => childObjectType != null,\n )?.childObjectType;\n invariant(\n objectSetTypes.every(\n ({ childObjectType }) =>\n childObjectType === firstValidChildObjectType\n || childObjectType == null,\n ),\n \"All object sets in an intersect, subtract, or union must have the same child object type\",\n );\n\n return {\n definitions: {},\n childObjectType: firstValidChildObjectType,\n };\n case \"static\":\n case \"reference\":\n // Static and reference object sets are always intersected with a base object set, so we can just return no child object type.\n return { definitions: {} };\n // We don't have to worry about new object sets being added and doing a runtime break and breaking people since the OSDK is always constructing these.\n default:\n const _: never = objectSet;\n invariant(\n false,\n `Unsupported object set type for Runtime Derived Properties`,\n );\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -84,7 +84,23 @@ describe("extractRdpDefinition", () => {
|
|
|
84
84
|
expect(result).toMatchInlineSnapshot(`
|
|
85
85
|
{
|
|
86
86
|
"myRdp": {
|
|
87
|
-
"
|
|
87
|
+
"definition": {
|
|
88
|
+
"objectSet": {
|
|
89
|
+
"link": "testLink2",
|
|
90
|
+
"objectSet": {
|
|
91
|
+
"type": "methodInput",
|
|
92
|
+
},
|
|
93
|
+
"type": "searchAround",
|
|
94
|
+
},
|
|
95
|
+
"operation": {
|
|
96
|
+
"selectedPropertyApiName": "testProperty",
|
|
97
|
+
"type": "get",
|
|
98
|
+
},
|
|
99
|
+
"type": "selection",
|
|
100
|
+
},
|
|
101
|
+
"selectedOrCollectedPropertyType": {
|
|
102
|
+
"type": "attachment",
|
|
103
|
+
},
|
|
88
104
|
},
|
|
89
105
|
}
|
|
90
106
|
`);
|
|
@@ -129,13 +145,63 @@ describe("extractRdpDefinition", () => {
|
|
|
129
145
|
expect(result).toMatchInlineSnapshot(`
|
|
130
146
|
{
|
|
131
147
|
"myRdp": {
|
|
132
|
-
"
|
|
148
|
+
"definition": {
|
|
149
|
+
"objectSet": {
|
|
150
|
+
"link": "testLink2",
|
|
151
|
+
"objectSet": {
|
|
152
|
+
"type": "methodInput",
|
|
153
|
+
},
|
|
154
|
+
"type": "searchAround",
|
|
155
|
+
},
|
|
156
|
+
"operation": {
|
|
157
|
+
"selectedPropertyApiName": "testProperty",
|
|
158
|
+
"type": "get",
|
|
159
|
+
},
|
|
160
|
+
"type": "selection",
|
|
161
|
+
},
|
|
162
|
+
"selectedOrCollectedPropertyType": {
|
|
163
|
+
"type": "attachment",
|
|
164
|
+
},
|
|
133
165
|
},
|
|
134
166
|
"rdp1": {
|
|
135
|
-
"
|
|
167
|
+
"definition": {
|
|
168
|
+
"objectSet": {
|
|
169
|
+
"link": "testLink2",
|
|
170
|
+
"objectSet": {
|
|
171
|
+
"type": "methodInput",
|
|
172
|
+
},
|
|
173
|
+
"type": "searchAround",
|
|
174
|
+
},
|
|
175
|
+
"operation": {
|
|
176
|
+
"limit": 100,
|
|
177
|
+
"selectedPropertyApiName": "testProperty",
|
|
178
|
+
"type": "collectList",
|
|
179
|
+
},
|
|
180
|
+
"type": "selection",
|
|
181
|
+
},
|
|
182
|
+
"selectedOrCollectedPropertyType": {
|
|
183
|
+
"type": "attachment",
|
|
184
|
+
},
|
|
136
185
|
},
|
|
137
186
|
"rdp2": {
|
|
138
|
-
"
|
|
187
|
+
"definition": {
|
|
188
|
+
"objectSet": {
|
|
189
|
+
"link": "testLink2",
|
|
190
|
+
"objectSet": {
|
|
191
|
+
"type": "methodInput",
|
|
192
|
+
},
|
|
193
|
+
"type": "searchAround",
|
|
194
|
+
},
|
|
195
|
+
"operation": {
|
|
196
|
+
"limit": 100,
|
|
197
|
+
"selectedPropertyApiName": "testProperty",
|
|
198
|
+
"type": "collectSet",
|
|
199
|
+
},
|
|
200
|
+
"type": "selection",
|
|
201
|
+
},
|
|
202
|
+
"selectedOrCollectedPropertyType": {
|
|
203
|
+
"type": "attachment",
|
|
204
|
+
},
|
|
139
205
|
},
|
|
140
206
|
}
|
|
141
207
|
`);
|
|
@@ -180,7 +246,23 @@ describe("extractRdpDefinition", () => {
|
|
|
180
246
|
expect(result).toMatchInlineSnapshot(`
|
|
181
247
|
{
|
|
182
248
|
"myRdp": {
|
|
183
|
-
"
|
|
249
|
+
"definition": {
|
|
250
|
+
"objectSet": {
|
|
251
|
+
"link": "testLink2",
|
|
252
|
+
"objectSet": {
|
|
253
|
+
"type": "methodInput",
|
|
254
|
+
},
|
|
255
|
+
"type": "searchAround",
|
|
256
|
+
},
|
|
257
|
+
"operation": {
|
|
258
|
+
"selectedPropertyApiName": "testProperty",
|
|
259
|
+
"type": "get",
|
|
260
|
+
},
|
|
261
|
+
"type": "selection",
|
|
262
|
+
},
|
|
263
|
+
"selectedOrCollectedPropertyType": {
|
|
264
|
+
"type": "attachment",
|
|
265
|
+
},
|
|
184
266
|
},
|
|
185
267
|
}
|
|
186
268
|
`);
|