@osdk/client 2.1.0-beta.25 → 2.1.0-beta.27

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (70) hide show
  1. package/CHANGELOG.md +30 -0
  2. package/build/browser/actions/actions.test.js +11 -2
  3. package/build/browser/actions/actions.test.js.map +1 -1
  4. package/build/browser/createClient.js +17 -1
  5. package/build/browser/createClient.js.map +1 -1
  6. package/build/browser/index.js.map +1 -1
  7. package/build/browser/internal/conversions/modernToLegacyWhereClause.js +56 -18
  8. package/build/browser/internal/conversions/modernToLegacyWhereClause.js.map +1 -1
  9. package/build/browser/internal/conversions/modernToLegacyWhereClause.test.js +193 -7
  10. package/build/browser/internal/conversions/modernToLegacyWhereClause.test.js.map +1 -1
  11. package/build/browser/object/aggregate.js +0 -4
  12. package/build/browser/object/aggregate.js.map +1 -1
  13. package/build/browser/object/convertWireToOsdkObjects/createOsdkObject.js +22 -0
  14. package/build/browser/object/convertWireToOsdkObjects/createOsdkObject.js.map +1 -1
  15. package/build/browser/object/convertWireToOsdkObjects.test.js +8 -8
  16. package/build/browser/object/convertWireToOsdkObjects.test.js.map +1 -1
  17. package/build/browser/object/mediaUpload.js +20 -0
  18. package/build/browser/object/mediaUpload.js.map +1 -0
  19. package/build/browser/object/object.test.js +172 -11
  20. package/build/browser/object/object.test.js.map +1 -1
  21. package/build/browser/objectSet/ObjectSet.test.js +28 -0
  22. package/build/browser/objectSet/ObjectSet.test.js.map +1 -1
  23. package/build/browser/objectSet/ObjectSetListenerWebsocket.test.js.map +1 -1
  24. package/build/browser/util/UserAgent.js +1 -1
  25. package/build/browser/util/toDataValue.js +4 -0
  26. package/build/browser/util/toDataValue.js.map +1 -1
  27. package/build/browser/util/toDataValue.test.js +4 -0
  28. package/build/browser/util/toDataValue.test.js.map +1 -1
  29. package/build/cjs/{chunk-RWHJNRHF.cjs → chunk-AMEMEGJZ.cjs} +69 -33
  30. package/build/cjs/chunk-AMEMEGJZ.cjs.map +1 -0
  31. package/build/cjs/{chunk-Q4BVHDNO.cjs → chunk-HDBAHEBE.cjs} +19 -15
  32. package/build/cjs/chunk-HDBAHEBE.cjs.map +1 -0
  33. package/build/cjs/index.cjs +88 -43
  34. package/build/cjs/index.cjs.map +1 -1
  35. package/build/cjs/index.d.cts +1 -1
  36. package/build/cjs/public/internal.cjs +6 -6
  37. package/build/cjs/public/unstable-do-not-use.cjs +2 -2
  38. package/build/esm/actions/actions.test.js +11 -2
  39. package/build/esm/actions/actions.test.js.map +1 -1
  40. package/build/esm/createClient.js +17 -1
  41. package/build/esm/createClient.js.map +1 -1
  42. package/build/esm/index.js.map +1 -1
  43. package/build/esm/internal/conversions/modernToLegacyWhereClause.js +56 -18
  44. package/build/esm/internal/conversions/modernToLegacyWhereClause.js.map +1 -1
  45. package/build/esm/internal/conversions/modernToLegacyWhereClause.test.js +193 -7
  46. package/build/esm/internal/conversions/modernToLegacyWhereClause.test.js.map +1 -1
  47. package/build/esm/object/aggregate.js +0 -4
  48. package/build/esm/object/aggregate.js.map +1 -1
  49. package/build/esm/object/convertWireToOsdkObjects/createOsdkObject.js +22 -0
  50. package/build/esm/object/convertWireToOsdkObjects/createOsdkObject.js.map +1 -1
  51. package/build/esm/object/convertWireToOsdkObjects.test.js +8 -8
  52. package/build/esm/object/convertWireToOsdkObjects.test.js.map +1 -1
  53. package/build/esm/object/mediaUpload.js +20 -0
  54. package/build/esm/object/mediaUpload.js.map +1 -0
  55. package/build/esm/object/object.test.js +172 -11
  56. package/build/esm/object/object.test.js.map +1 -1
  57. package/build/esm/objectSet/ObjectSet.test.js +28 -0
  58. package/build/esm/objectSet/ObjectSet.test.js.map +1 -1
  59. package/build/esm/objectSet/ObjectSetListenerWebsocket.test.js.map +1 -1
  60. package/build/esm/util/UserAgent.js +1 -1
  61. package/build/esm/util/toDataValue.js +4 -0
  62. package/build/esm/util/toDataValue.js.map +1 -1
  63. package/build/esm/util/toDataValue.test.js +4 -0
  64. package/build/esm/util/toDataValue.test.js.map +1 -1
  65. package/build/types/index.d.ts +1 -1
  66. package/build/types/object/mediaUpload.d.ts +2 -0
  67. package/build/types/object/object.test.d.ts +1 -1
  68. package/package.json +11 -11
  69. package/build/cjs/chunk-Q4BVHDNO.cjs.map +0 -1
  70. package/build/cjs/chunk-RWHJNRHF.cjs.map +0 -1
@@ -314,6 +314,34 @@ describe("ObjectSet", () => {
314
314
  nonExistentProp: ""
315
315
  });
316
316
  });
317
+ it("type checking struct where clauses", () => {
318
+ expectTypeOf(client(BgaoNflPlayer).where).toBeCallableWith({
319
+ $and: [{
320
+ address: {
321
+ city: {
322
+ $eq: "NYC"
323
+ }
324
+ }
325
+ }, {
326
+ address: {
327
+ zipCode: {
328
+ $gte: 55555
329
+ }
330
+ }
331
+ }]
332
+ });
333
+ expectTypeOf(client(BgaoNflPlayer).where).toBeCallableWith({
334
+ address: {
335
+ addressLine1: {
336
+ $containsAllTerms: "BLVD"
337
+ },
338
+ // @ts-expect-error
339
+ addressLine2: {
340
+ $containsAllTermsInOrder: "Apartment Number"
341
+ }
342
+ }
343
+ });
344
+ });
317
345
  describe.each(["fetchPage", "fetchPageWithErrors"])("%s", k => {
318
346
  // describe("strictNonNull: \"drop\"", () => {
319
347
  // describe("includeRid: true", () => {
@@ -1 +1 @@
1
- {"version":3,"file":"ObjectSet.test.js","names":["isOk","__EXPERIMENTAL__NOT_SUPPORTED_YET__fetchOneByRid","$ontologyRid","BarInterface","BgaoNflPlayer","Employee","FooInterface","Office","apiServer","stubData","afterAll","beforeAll","describe","expect","expectTypeOf","it","createClient","client","listen","close","employeeObjectSet","officeObjectSet","union","subtract","intersect","objectSet","unionedObjectSet","iter","data","employees","fetchPage","emp","employeeId","toEqual","objectSet2","where","subtractedObjectSet","intersectedObjectSet","$orderBy","toMatchObject","$apiName","$objectType","$primaryKey","class","employeeStatus","anything","employeeSensor","fullName","office","startDate","employeeLocation","$title","employee","fetchOne","employee1","toMatchTypeOf","toBe","fetchOneByRid","$select","employee2","player","address1","address","addressLine1","address2","addressLine2","city","state","zipCode","travisPlayer","__primaryKey","employeeResult","fetchOneWithErrors","value","branded","toEqualTypeOf","rejects","toThrow","pivotTo","result","fetchPageWithErrors","$in","toBeDefined","employeeIdNonExistent","nonExistentProp","$or","$containsAllTerms","term","fuzzySearch","$containsAnyTerm","each","k","opts","$__EXPERIMENTAL_strictNonNull","$includeRid","toHaveLength","not","toBeUndefined","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 CompileTimeMetadata,\n ConvertProps,\n InterfaceDefinition,\n ObjectOrInterfaceDefinition,\n ObjectSet,\n ObjectTypeDefinition,\n Osdk,\n PropertyKeys,\n Result,\n} from \"@osdk/api\";\nimport { isOk } from \"@osdk/api\";\nimport { __EXPERIMENTAL__NOT_SUPPORTED_YET__fetchOneByRid } from \"@osdk/api/unstable\";\nimport {\n $ontologyRid,\n BarInterface,\n BgaoNflPlayer,\n Employee,\n FooInterface,\n Office,\n} from \"@osdk/client.test.ontology\";\nimport { apiServer, stubData } from \"@osdk/shared.test\";\nimport {\n afterAll,\n beforeAll,\n describe,\n expect,\n expectTypeOf,\n it,\n} 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(async () => {\n apiServer.listen();\n client = createClient(\n \"https://stack.palantir.com\",\n $ontologyRid,\n async () => \"myAccessToken\",\n );\n });\n\n afterAll(() => {\n apiServer.close();\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 let iter = 0;\n const { data: employees } = await unionedObjectSet.fetchPage();\n for (const emp of employees) {\n expect(emp.employeeId).toEqual(50030 + iter);\n iter += 1;\n }\n expect(iter).toEqual(2);\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 let iter = 0;\n const { data: employees } = await subtractedObjectSet.fetchPage();\n for (const emp of employees) {\n expect(emp.employeeId).toEqual(50031 + iter);\n iter += 1;\n }\n expect(iter).toEqual(2);\n });\n\n it(\"objects set intersect\", async () => {\n const objectSet = client(Employee);\n const intersectedObjectSet = objectSet.intersect(objectSet);\n let iter = 0;\n const { data: employees } = await intersectedObjectSet.fetchPage();\n for (const emp of employees) {\n expect(emp.employeeId).toEqual(50032);\n iter += 1;\n }\n expect(iter).toEqual(1);\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 .fetchPage({\n $orderBy: { \"employeeId\": \"asc\" },\n });\n expect(employees).toMatchObject([\n {\n $apiName: \"Employee\",\n $objectType: \"Employee\",\n $primaryKey: 50030,\n class: \"Red\",\n employeeId: 50030,\n employeeStatus: expect.anything(),\n employeeSensor: expect.anything(),\n fullName: \"John Doe\",\n office: \"NYC\",\n startDate: \"2019-01-01\",\n employeeLocation: expect.anything(),\n },\n {\n $apiName: \"Employee\",\n $objectType: \"Employee\",\n $primaryKey: 50031,\n $title: \"Jane Doe\",\n class: \"Blue\",\n employeeId: 50031,\n employeeStatus: expect.anything(),\n employeeSensor: expect.anything(),\n fullName: \"Jane Doe\",\n office: \"SEA\",\n startDate: \"2012-02-12\",\n employeeLocation: expect.anything(),\n },\n {\n $apiName: \"Employee\",\n $objectType: \"Employee\",\n $primaryKey: 50032,\n $title: \"Jack Smith\",\n class: \"Red\",\n employeeId: 50032,\n employeeStatus: expect.anything(),\n employeeSensor: expect.anything(),\n fullName: \"Jack Smith\",\n office: \"LON\",\n startDate: \"2015-05-15\",\n employeeLocation: expect.anything(),\n },\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 \"ri.employee.i.look.for\",\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, with select\", async () => {\n const employee = await client(\n __EXPERIMENTAL__NOT_SUPPORTED_YET__fetchOneByRid,\n ).fetchOneByRid(\n Employee,\n \"ri.employee.i.look.for\",\n { $select: [\"fullName\"] },\n );\n expectTypeOf<typeof employee>().toMatchTypeOf<\n Osdk<Employee, \"fullName\">\n >;\n expect(employee.$primaryKey).toBe(stubData.employee2.employeeId);\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 let iter = 0;\n const result = await unionedObjectSet.fetchPageWithErrors();\n if (isOk(result)) {\n const employees = result.value.data;\n for (const emp of employees) {\n expect(emp.employeeId).toEqual(50030 + iter);\n iter += 1;\n }\n expect(iter).toEqual(2);\n }\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 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(4);\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(4);\n expectTypeOf(result.data[0]).branded.toEqualTypeOf<\n Osdk<Employee, \"$all\" | \"$notStrict\">\n >();\n });\n });\n });\n });\n\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<ConvertProps<FooInterface, Employee, \"fooSpt\">>()\n .toEqualTypeOf<\"fullName\">();\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","$ontologyRid","BarInterface","BgaoNflPlayer","Employee","FooInterface","Office","apiServer","stubData","afterAll","beforeAll","describe","expect","expectTypeOf","it","createClient","client","listen","close","employeeObjectSet","officeObjectSet","union","subtract","intersect","objectSet","unionedObjectSet","iter","data","employees","fetchPage","emp","employeeId","toEqual","objectSet2","where","subtractedObjectSet","intersectedObjectSet","$orderBy","toMatchObject","$apiName","$objectType","$primaryKey","class","employeeStatus","anything","employeeSensor","fullName","office","startDate","employeeLocation","$title","employee","fetchOne","employee1","toMatchTypeOf","toBe","fetchOneByRid","$select","employee2","player","address1","address","addressLine1","address2","addressLine2","city","state","zipCode","travisPlayer","__primaryKey","employeeResult","fetchOneWithErrors","value","branded","toEqualTypeOf","rejects","toThrow","pivotTo","result","fetchPageWithErrors","$in","toBeDefined","employeeIdNonExistent","nonExistentProp","$or","$containsAllTerms","term","fuzzySearch","$containsAnyTerm","toBeCallableWith","$and","$eq","$gte","$containsAllTermsInOrder","each","k","opts","$__EXPERIMENTAL_strictNonNull","$includeRid","toHaveLength","not","toBeUndefined","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 CompileTimeMetadata,\n ConvertProps,\n InterfaceDefinition,\n ObjectOrInterfaceDefinition,\n ObjectSet,\n ObjectTypeDefinition,\n Osdk,\n PropertyKeys,\n Result,\n} from \"@osdk/api\";\nimport { isOk } from \"@osdk/api\";\nimport { __EXPERIMENTAL__NOT_SUPPORTED_YET__fetchOneByRid } from \"@osdk/api/unstable\";\nimport {\n $ontologyRid,\n BarInterface,\n BgaoNflPlayer,\n Employee,\n FooInterface,\n Office,\n} from \"@osdk/client.test.ontology\";\nimport { apiServer, stubData } from \"@osdk/shared.test\";\nimport {\n afterAll,\n beforeAll,\n describe,\n expect,\n expectTypeOf,\n it,\n} 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(async () => {\n apiServer.listen();\n client = createClient(\n \"https://stack.palantir.com\",\n $ontologyRid,\n async () => \"myAccessToken\",\n );\n });\n\n afterAll(() => {\n apiServer.close();\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 let iter = 0;\n const { data: employees } = await unionedObjectSet.fetchPage();\n for (const emp of employees) {\n expect(emp.employeeId).toEqual(50030 + iter);\n iter += 1;\n }\n expect(iter).toEqual(2);\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 let iter = 0;\n const { data: employees } = await subtractedObjectSet.fetchPage();\n for (const emp of employees) {\n expect(emp.employeeId).toEqual(50031 + iter);\n iter += 1;\n }\n expect(iter).toEqual(2);\n });\n\n it(\"objects set intersect\", async () => {\n const objectSet = client(Employee);\n const intersectedObjectSet = objectSet.intersect(objectSet);\n let iter = 0;\n const { data: employees } = await intersectedObjectSet.fetchPage();\n for (const emp of employees) {\n expect(emp.employeeId).toEqual(50032);\n iter += 1;\n }\n expect(iter).toEqual(1);\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 .fetchPage({\n $orderBy: { \"employeeId\": \"asc\" },\n });\n expect(employees).toMatchObject([\n {\n $apiName: \"Employee\",\n $objectType: \"Employee\",\n $primaryKey: 50030,\n class: \"Red\",\n employeeId: 50030,\n employeeStatus: expect.anything(),\n employeeSensor: expect.anything(),\n fullName: \"John Doe\",\n office: \"NYC\",\n startDate: \"2019-01-01\",\n employeeLocation: expect.anything(),\n },\n {\n $apiName: \"Employee\",\n $objectType: \"Employee\",\n $primaryKey: 50031,\n $title: \"Jane Doe\",\n class: \"Blue\",\n employeeId: 50031,\n employeeStatus: expect.anything(),\n employeeSensor: expect.anything(),\n fullName: \"Jane Doe\",\n office: \"SEA\",\n startDate: \"2012-02-12\",\n employeeLocation: expect.anything(),\n },\n {\n $apiName: \"Employee\",\n $objectType: \"Employee\",\n $primaryKey: 50032,\n $title: \"Jack Smith\",\n class: \"Red\",\n employeeId: 50032,\n employeeStatus: expect.anything(),\n employeeSensor: expect.anything(),\n fullName: \"Jack Smith\",\n office: \"LON\",\n startDate: \"2015-05-15\",\n employeeLocation: expect.anything(),\n },\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 \"ri.employee.i.look.for\",\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, with select\", async () => {\n const employee = await client(\n __EXPERIMENTAL__NOT_SUPPORTED_YET__fetchOneByRid,\n ).fetchOneByRid(\n Employee,\n \"ri.employee.i.look.for\",\n { $select: [\"fullName\"] },\n );\n expectTypeOf<typeof employee>().toMatchTypeOf<\n Osdk<Employee, \"fullName\">\n >;\n expect(employee.$primaryKey).toBe(stubData.employee2.employeeId);\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 let iter = 0;\n const result = await unionedObjectSet.fetchPageWithErrors();\n if (isOk(result)) {\n const employees = result.value.data;\n for (const emp of employees) {\n expect(emp.employeeId).toEqual(50030 + iter);\n iter += 1;\n }\n expect(iter).toEqual(2);\n }\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(4);\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(4);\n expectTypeOf(result.data[0]).branded.toEqualTypeOf<\n Osdk<Employee, \"$all\" | \"$notStrict\">\n >();\n });\n });\n });\n });\n\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<ConvertProps<FooInterface, Employee, \"fooSpt\">>()\n .toEqualTypeOf<\"fullName\">();\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 +1 @@
1
- {"version":3,"file":"ObjectSetListenerWebsocket.test.js","names":["$ontologyRid","Employee","apiServer","ImportedWebSocket","http","HttpResponse","pDefer","afterAll","afterEach","beforeAll","beforeEach","describe","expect","it","vi","z","createMinimalClient","constructWebsocketUrl","ObjectSetListenerWebsocket","rootLogger","hoisted","pino","pinoPretty","EventEmitter","Promise","resolve","level","build","sync","timestampKey","undefined","errorLikeObjectKeys","errorProps","ignore","destination","write","a","at","slice","console","log","MockedWebSocket","STACK","mock","importOriginal","original","WebSocket","createMockWebSocketConstructor","default","currentSubscriptionId","listen","addLoggerToApiServer","close","minimalClient","MINIMUM_RECONNECT_DELAY","client","listener","oslwInst","updateReceived","listenerPromise","ontologyRid","logger","child","minimumReconnectDelayMs","onChange","fn","o","onError","onOutOfDate","onSuccessfulSubscription","objectSetRidCounter","use","post","json","objectSetRid","useFakeTimers","restoreAllMocks","resetHandlers","not","toHaveBeenCalled","ws","unsubscribe","subReq1","subscribeAndExpectWebSocket","expectSubscribeMessages","setWebSocketState","runAllTicks","expectEqualRemoveAndAddListeners","respondSuccessToSubscribe","send","toHaveBeenCalledTimes","requests","propertySet","toEqual","referenceSet","all","expectWebSocketConstructed","advanceTimersByTimeAsync","subReq2","mockImplementationOnce","Error","mockReset","calls","subscriptionClosed","toBe","idNum2","sendObjectUpdateResponse","promise","toMatchInlineSnapshot","sendReferenceUpdatesResponse","unsubscribe2","subscribe","type","apiName","objectType","toString","sendToClient","id","responses","subId","updates","state","object","__apiName","employeeId","removeEventListener","addEventListener","length","times","waitFor","toBeCalledTimes","result","JSON","parse","lastCall","mockClear","results","value","OriginalWebSocket","i","ret","_args","webSocketInst","debug","eventEmitter","EventTarget","bind","message","_eventEmitter","readyState","CONNECTING","Object","assign","OPEN","CLOSED","CLOSING","newState","dispatchEvent","Event","name","requestId","request","trace","url","eventNames","c","events","on","SubscribeMessage","string","array","objectSet","MessageEvent","constructor","data","stringify","t"],"sources":["ObjectSetListenerWebsocket.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 ObjectOrInterfaceDefinition,\n ObjectSetListener,\n PropertyKeys,\n} from \"@osdk/api\";\nimport { $ontologyRid, Employee } from \"@osdk/client.test.ontology\";\nimport type {\n ObjectSetStreamSubscribeRequests,\n ObjectUpdate,\n StreamMessage,\n} from \"@osdk/internal.foundry.core\";\nimport { apiServer } from \"@osdk/shared.test\";\nimport ImportedWebSocket from \"isomorphic-ws\";\nimport { http, HttpResponse } from \"msw\";\nimport type { DeferredPromise } from \"p-defer\";\nimport pDefer from \"p-defer\";\nimport type { MockedClass, MockedFunction, MockedObject } from \"vitest\";\nimport {\n afterAll,\n afterEach,\n beforeAll,\n beforeEach,\n describe,\n expect,\n it,\n vi,\n} from \"vitest\";\nimport { z } from \"zod\";\nimport { createMinimalClient } from \"../createMinimalClient.js\";\nimport type { Logger } from \"../Logger.js\";\nimport type { MinimalClient } from \"../MinimalClientContext.js\";\nimport {\n constructWebsocketUrl,\n ObjectSetListenerWebsocket,\n} from \"./ObjectSetListenerWebsocket.js\";\n\n// it needs to be hoisted because its referenced from our mocked WebSocket\n// which must be hoisted to work\nconst rootLogger = await vi.hoisted(async (): Promise<Logger> => {\n const pino = (await import(\"pino\")).pino;\n const pinoPretty = await import(\"pino-pretty\");\n const { EventEmitter } = await import(\"node:events\");\n class PinoConsoleLogDestination extends EventEmitter {\n write(a: string) {\n // remove trailing newline since console.log adds one\n if (a.at(-1) === \"\\n\") a = a.slice(0, -1);\n\n // This lets the test framework aggregate the logs per test, whereas direct to stdout does not\n console.log(a);\n }\n }\n return Promise.resolve(pino(\n { level: \"info\" },\n (pinoPretty.build)({\n sync: true,\n timestampKey: undefined,\n errorLikeObjectKeys: [\"error\", \"err\", \"exception\"],\n errorProps: \"stack,cause,properties\",\n ignore: \"time,hostname,pid\",\n destination: new PinoConsoleLogDestination(),\n }),\n ));\n});\n\n// make local uses of WebSocket typed right\nconst MockedWebSocket = ImportedWebSocket as unknown as MockedWebSocket;\n\nconst STACK = \"https://stack.palantirCustom.com/foo/first/someStuff/\";\n\nvi.mock(\"isomorphic-ws\", async (importOriginal) => {\n const original = await importOriginal<\n { default: WebSocket }\n >();\n\n const WebSocket = createMockWebSocketConstructor(\n original.default,\n rootLogger,\n );\n return { default: WebSocket, WebSocket };\n});\n\nlet currentSubscriptionId = 0;\n\ndescribe(\"ObjectSetListenerWebsocket\", async () => {\n beforeAll(async () => {\n apiServer.listen();\n addLoggerToApiServer(rootLogger);\n });\n\n afterAll(() => {\n apiServer.close();\n });\n\n describe(\"basic setup\", () => {\n let minimalClient: MinimalClient;\n\n const MINIMUM_RECONNECT_DELAY = 2_000;\n const OBJECT_SET_EXPIRY_MS = 60_000;\n\n let client: ObjectSetListenerWebsocket;\n let listener: MockedObject<\n Required<\n ObjectSetListener<ObjectOrInterfaceDefinition, PropertyKeys<any>>\n >\n >;\n let oslwInst = 0;\n\n let updateReceived: ObjectUpdate | undefined = undefined;\n\n let listenerPromise: DeferredPromise<void>;\n\n beforeEach(() => {\n minimalClient = createMinimalClient(\n { ontologyRid: $ontologyRid },\n STACK,\n async () => \"myAccessToken\",\n { logger: rootLogger },\n );\n client = new ObjectSetListenerWebsocket({\n ...minimalClient,\n logger: rootLogger.child({ oslwInst: oslwInst++ }),\n }, {\n minimumReconnectDelayMs: MINIMUM_RECONNECT_DELAY,\n });\n\n listenerPromise = pDefer();\n\n listener = {\n onChange: vi.fn((o) => {\n updateReceived = o;\n listenerPromise.resolve();\n }),\n onError: vi.fn(),\n onOutOfDate: vi.fn(),\n onSuccessfulSubscription: vi.fn(),\n };\n\n let objectSetRidCounter = 0;\n apiServer.use(\n http.post(\n `${STACK}api/v2/ontologySubscriptions/ontologies/${$ontologyRid}/streamSubscriptions`,\n () =>\n HttpResponse.json({\n objectSetRid: `rid.hi.${objectSetRidCounter++}`,\n }),\n ),\n );\n\n vi.useFakeTimers();\n });\n\n afterEach(() => {\n vi.restoreAllMocks();\n apiServer.resetHandlers();\n });\n\n it(\"should not send onOutOfDate since it has not subscribed yet\", () => {\n expect(MockedWebSocket).not.toHaveBeenCalled();\n expect(listener.onOutOfDate).not.toHaveBeenCalled();\n expect(listener.onChange).not.toHaveBeenCalled();\n expect(listener.onError).not.toHaveBeenCalled();\n });\n\n describe(\"requests subscription\", () => {\n let ws: MockedWebSocket;\n let unsubscribe: () => void;\n let subReq1: ObjectSetStreamSubscribeRequests;\n\n beforeEach(async () => {\n [ws, unsubscribe] = await subscribeAndExpectWebSocket(\n client,\n listener,\n );\n\n subReq1 = await expectSubscribeMessages(ws, 2);\n });\n\n afterEach(() => {\n // just ensure we ended in good states, as we clear these as we consume them\n expect(MockedWebSocket).not.toHaveBeenCalled();\n\n // make sure we are unsubscribed so closing the socket doesn't trigger reconnects\n unsubscribe();\n\n // disconnect the socket\n setWebSocketState(ws, \"close\");\n\n vi.runAllTicks();\n\n // Make sure we cleaned up\n expectEqualRemoveAndAddListeners(ws);\n });\n\n it(\"only sends a single request\", async () => {\n respondSuccessToSubscribe(ws, subReq1);\n // actually this is broken FIXME\n unsubscribe();\n expect(ws.send).toHaveBeenCalledTimes(1);\n });\n\n it(\"correctly requests regular object properties\", () => {\n expect(subReq1.requests[0].propertySet).toEqual([\n \"employeeId\",\n \"fullName\",\n \"office\",\n \"class\",\n \"startDate\",\n \"employeeStatus\",\n \"employeeSensor\",\n ]);\n });\n\n it(\"correctly requests reference backed properties\", () => {\n expect(subReq1.requests[0].referenceSet).toEqual([\"employeeLocation\"]);\n });\n\n describe(\"socket closed before subscription confirmed\", () => {\n beforeEach(() => {\n setWebSocketState(ws, \"close\");\n expectEqualRemoveAndAddListeners(ws);\n });\n\n describe(\"reconnect\", async () => {\n beforeEach(async () => {\n [ws] = await Promise.all([\n expectWebSocketConstructed(),\n // delay for connection reconnect\n vi.advanceTimersByTimeAsync(MINIMUM_RECONNECT_DELAY),\n ]);\n setWebSocketState(ws, \"open\");\n });\n\n describe(\"subscribe and respond\", () => {\n beforeEach(async () => {\n const subReq2 = await expectSubscribeMessages(ws);\n respondSuccessToSubscribe(ws, subReq2);\n });\n\n it(\"should not send out of date\", () => {\n expect(listener.onOutOfDate).not.toHaveBeenCalled();\n });\n });\n });\n });\n\n describe(\"correctly try catches errors in handlers\", () => {\n beforeEach(() => {\n listener.onSuccessfulSubscription.mockImplementationOnce(() => {\n throw new Error(\"I am an error\");\n });\n respondSuccessToSubscribe(ws, subReq1);\n });\n afterEach(() => {\n listener.onSuccessfulSubscription.mockReset();\n });\n\n it(\"should call onError\", async () => {\n expect(listener.onError).toHaveBeenCalled();\n expect(listener.onError.mock.calls[0][0].subscriptionClosed).toBe(\n false,\n );\n });\n });\n\n describe(\"successfully subscribed\", () => {\n beforeEach(() => {\n respondSuccessToSubscribe(ws, subReq1);\n });\n\n it(\"should call onSuccessfulSubscription\", () => {\n expect(listener.onSuccessfulSubscription).toHaveBeenCalled();\n });\n\n it(\"should correctly return regular updates\", async () => {\n const idNum2 = currentSubscriptionId;\n\n sendObjectUpdateResponse(ws, `${idNum2}`);\n await listenerPromise.promise;\n expect(listener.onChange).toHaveBeenCalled();\n expect(updateReceived).toMatchInlineSnapshot(`\n {\n \"object\": {\n \"$apiName\": \"Employee\",\n \"$objectType\": \"Employee\",\n \"$primaryKey\": undefined,\n \"$title\": undefined,\n \"employeeId\": 1,\n },\n \"state\": \"ADDED_OR_UPDATED\",\n }\n `);\n });\n\n it(\"should correctly return reference update\", async () => {\n const idNum2 = currentSubscriptionId;\n\n sendReferenceUpdatesResponse(ws, `${idNum2}`);\n await listenerPromise.promise;\n expect(listener.onChange).toHaveBeenCalled();\n expect(updateReceived).toMatchInlineSnapshot(`\n {\n \"object\": {\n \"$apiName\": \"Employee\",\n \"$objectType\": \"Employee\",\n \"$primaryKey\": \"12345\",\n \"$title\": undefined,\n \"employeeId\": \"12345\",\n \"employeeLocation\": GeotimeSeriesPropertyImpl {\n \"lastFetchedValue\": {\n \"time\": \"111\",\n \"value\": {\n \"coordinates\": [\n 100,\n 200,\n ],\n \"type\": \"Point\",\n },\n },\n },\n },\n \"state\": \"ADDED_OR_UPDATED\",\n }\n `);\n });\n\n describe(\"additional subscription\", async () => {\n let unsubscribe2: () => void;\n let subReq2: ObjectSetStreamSubscribeRequests;\n beforeEach(async () => {\n unsubscribe2 = await client.subscribe(\n {\n type: \"object\",\n apiName: \"Employee\",\n },\n {\n type: \"base\",\n objectType: Employee.apiName,\n },\n listener,\n [\"employeeId\"],\n );\n\n subReq2 = await expectSubscribeMessages(ws);\n\n respondSuccessToSubscribe(ws, subReq2);\n });\n\n afterEach(() => {\n unsubscribe2();\n });\n\n it(\"only requests requested properties\", () => {\n expect(subReq2.requests[1].propertySet).toEqual([\"employeeId\"]);\n expect(subReq2.requests[1].referenceSet).toEqual([]);\n });\n\n it(\"does not trigger an out of date \", () => {\n expect(listener.onOutOfDate).not.toHaveBeenCalled();\n });\n });\n\n describe(\"socket closed abruptly\", () => {\n beforeEach(() => {\n setWebSocketState(ws, \"close\");\n expectEqualRemoveAndAddListeners(ws);\n });\n\n describe(\"reconnect, resubscribe successfully\", async () => {\n beforeEach(async () => {\n [ws] = await Promise.all([\n expectWebSocketConstructed(),\n // delay for connection reconnect\n vi.advanceTimersByTimeAsync(MINIMUM_RECONNECT_DELAY),\n ]);\n setWebSocketState(ws, \"open\");\n\n const subReq2 = await expectSubscribeMessages(ws);\n respondSuccessToSubscribe(ws, subReq2);\n });\n\n it(\"should send out of date\", () => {\n expect(listener.onOutOfDate).toHaveBeenCalledTimes(1);\n });\n });\n });\n\n it(\"should not send onOutOfDate for first call\", () => {\n expect(MockedWebSocket).not.toHaveBeenCalled();\n expect(listener.onOutOfDate).not.toHaveBeenCalled();\n expect(listener.onChange).not.toHaveBeenCalled();\n expect(listener.onError).not.toHaveBeenCalled();\n });\n\n it(\"should create url correctly\", () => {\n expect(constructWebsocketUrl(STACK, \"ontologyRid1\").toString())\n .toEqual(\n \"wss://stack.palantircustom.com/foo/first/someStuff/api/v2/ontologySubscriptions/ontologies/ontologyRid1/streamSubscriptions\",\n );\n });\n });\n });\n });\n});\n\ninterface RawWebSocketPlus\n extends Pick<ImportedWebSocket, \"addEventListener\" | \"removeEventListener\">\n{\n _eventEmitter: EventTarget;\n readyState: 0 | 1 | 2 | 3;\n send: MockedFunction<ImportedWebSocket[\"send\"]>;\n close: MockedFunction<ImportedWebSocket[\"close\"]>;\n}\n\ninterface MockedWebSocket\n extends MockedClass<typeof ImportedWebSocket>, MockedObject<RawWebSocketPlus>\n{\n}\n\ntype MockedListener = MockedObject<\n Required<\n ObjectSetListener<ObjectOrInterfaceDefinition, PropertyKeys<any>>\n >\n>;\n\nfunction respondSuccessToSubscribe(\n ws: MockedWebSocket,\n subReq2: ObjectSetStreamSubscribeRequests,\n) {\n sendToClient<StreamMessage>(\n ws,\n {\n id: subReq2.id,\n type: \"subscribeResponses\",\n responses: [{\n type: \"success\",\n id: `${++currentSubscriptionId}`,\n }],\n },\n );\n}\n\nfunction sendObjectUpdateResponse(\n ws: MockedWebSocket,\n subId: string,\n) {\n const updateMessage: StreamMessage = {\n type: \"objectSetChanged\",\n id: subId,\n updates: [{\n type: \"object\",\n state: \"ADDED_OR_UPDATED\",\n object: {\n __apiName: \"Employee\",\n employeeId: 1,\n },\n }],\n };\n\n sendToClient<StreamMessage>(\n ws,\n updateMessage,\n );\n}\n\nfunction sendReferenceUpdatesResponse(\n ws: MockedWebSocket,\n subId: string,\n) {\n const referenceUpdateMessage: StreamMessage = {\n type: \"objectSetChanged\",\n id: subId,\n updates: [{\n \"type\": \"reference\",\n \"objectType\": \"Employee\",\n \"primaryKey\": { \"employeeId\": \"12345\" },\n \"property\": \"employeeLocation\",\n \"value\": {\n \"timestamp\": \"111\",\n \"type\": \"geotimeSeriesValue\",\n \"position\": [100, 200],\n },\n }],\n };\n\n sendToClient<StreamMessage>(\n ws,\n referenceUpdateMessage,\n );\n}\n\nfunction expectEqualRemoveAndAddListeners(ws: MockedWebSocket) {\n expect(ws.removeEventListener).toHaveBeenCalledTimes(\n ws.addEventListener.mock.calls.length,\n );\n}\n\nasync function expectSubscribeMessages(\n ws: MockedWebSocket,\n times: number = 1,\n): Promise<ObjectSetStreamSubscribeRequests> {\n return await vi.waitFor(() => {\n expect(ws.send).toBeCalledTimes(times);\n const result = JSON.parse(ws.send.mock.lastCall![0].toString());\n ws.send.mockClear();\n return result;\n });\n}\n\nasync function subscribeAndExpectWebSocket(\n client: ObjectSetListenerWebsocket,\n listener: MockedListener,\n): Promise<readonly [MockedWebSocket, () => void]> {\n const [ws, unsubscribe] = await Promise.all([\n expectWebSocketConstructed(),\n client.subscribe<Employee, PropertyKeys<Employee>>(\n {\n apiName: \"Employee\",\n type: \"object\",\n },\n {\n type: \"base\",\n objectType: Employee.apiName,\n },\n listener,\n ),\n ]);\n\n // otherwise the ObjectSetListenerWebSocket is sitting waiting for it to \"connect\"\n setWebSocketState(ws, \"open\");\n\n return [ws, unsubscribe] as const;\n}\n\nasync function expectWebSocketConstructed(): Promise<MockedWebSocket> {\n expect(MockedWebSocket).toHaveBeenCalledTimes(0);\n\n const ws = await vi.waitFor(() => {\n expect(MockedWebSocket).toHaveBeenCalled();\n expect(MockedWebSocket.mock.results[0].type === \"return\");\n return MockedWebSocket.mock.results[0].value as MockedWebSocket;\n });\n\n expect(MockedWebSocket).toHaveBeenCalledTimes(1);\n MockedWebSocket.mockClear();\n expect(MockedWebSocket).toHaveBeenCalledTimes(0);\n\n return ws;\n}\n\nfunction createMockWebSocketConstructor(\n OriginalWebSocket: WebSocket,\n logger: Logger,\n): MockedWebSocket {\n let i = 0;\n const ret = vi.fn(function(..._args: any[]): MockedWebSocket {\n const webSocketInst = i++;\n logger.debug(\"WebSocket constructor called\");\n const eventEmitter = new EventTarget();\n\n return {\n addEventListener: vi.fn(\n eventEmitter.addEventListener.bind(eventEmitter),\n ) as any,\n removeEventListener: vi.fn(\n eventEmitter.removeEventListener.bind(eventEmitter),\n ) as any,\n\n send: vi.fn((a, _b: any) => {\n logger.debug(\n { message: JSON.parse(a.toString()), webSocketInst },\n \"send() called\",\n );\n }),\n close: vi.fn(),\n _eventEmitter: eventEmitter,\n readyState: OriginalWebSocket.CONNECTING,\n } satisfies RawWebSocketPlus as any as MockedWebSocket;\n // ^ we only implement some things but the type system wants to think its the full deal,\n // thus the satisfies plus the cast\n }) as any as MockedWebSocket;\n\n Object.assign(ret, {\n OPEN: OriginalWebSocket.OPEN,\n CLOSED: OriginalWebSocket.CLOSED,\n CLOSING: OriginalWebSocket.CLOSING,\n CONNECTING: OriginalWebSocket.CONNECTING,\n });\n\n return ret;\n}\n\nfunction setWebSocketState(ws: MockedWebSocket, readyState: \"open\" | \"close\") {\n const newState = readyState === \"open\"\n ? ImportedWebSocket.OPEN\n : ImportedWebSocket.CLOSED;\n\n if (newState === ws.readyState) return;\n\n ws.readyState = newState;\n ws._eventEmitter.dispatchEvent(new Event(readyState, {}));\n}\n\nfunction addLoggerToApiServer(logger: Logger) {\n const z = (\n name: string,\n { requestId, request }: { requestId: string; request: Request },\n ) => logger.trace({ requestId, url: request.url }, name);\n\n const eventNames = [\n \"request:start\",\n \"request:match\",\n \"request:end\",\n \"request:unhandled\",\n \"response:bypass\",\n \"response:mocked\",\n ] as const;\n\n for (const c of eventNames) {\n apiServer.events.on(c as typeof eventNames[number], z.bind(undefined, c));\n }\n}\n\nconst SubscribeMessage = z.object({\n id: z.string(),\n requests: z.array(z.object({\n objectSet: z.object({ id: z.string() }),\n propertySet: z.array(z.string()),\n referenceSet: z.array(z.string()),\n })),\n});\n\nclass MessageEvent extends Event {\n data: string;\n constructor(data: any) {\n super(\"message\");\n this.data = JSON.stringify(data);\n }\n}\n\nfunction sendToClient<T>(ws: MockedWebSocket, t: T) {\n ws._eventEmitter.dispatchEvent(new MessageEvent(t));\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"ObjectSetListenerWebsocket.test.js","names":["$ontologyRid","Employee","apiServer","ImportedWebSocket","http","HttpResponse","pDefer","afterAll","afterEach","beforeAll","beforeEach","describe","expect","it","vi","z","createMinimalClient","constructWebsocketUrl","ObjectSetListenerWebsocket","rootLogger","hoisted","pino","pinoPretty","EventEmitter","Promise","resolve","level","build","sync","timestampKey","undefined","errorLikeObjectKeys","errorProps","ignore","destination","write","a","at","slice","console","log","MockedWebSocket","STACK","mock","importOriginal","original","WebSocket","createMockWebSocketConstructor","default","currentSubscriptionId","listen","addLoggerToApiServer","close","minimalClient","MINIMUM_RECONNECT_DELAY","client","listener","oslwInst","updateReceived","listenerPromise","ontologyRid","logger","child","minimumReconnectDelayMs","onChange","fn","o","onError","onOutOfDate","onSuccessfulSubscription","objectSetRidCounter","use","post","json","objectSetRid","useFakeTimers","restoreAllMocks","resetHandlers","not","toHaveBeenCalled","ws","unsubscribe","subReq1","subscribeAndExpectWebSocket","expectSubscribeMessages","setWebSocketState","runAllTicks","expectEqualRemoveAndAddListeners","respondSuccessToSubscribe","send","toHaveBeenCalledTimes","requests","propertySet","toEqual","referenceSet","all","expectWebSocketConstructed","advanceTimersByTimeAsync","subReq2","mockImplementationOnce","Error","mockReset","calls","subscriptionClosed","toBe","idNum2","sendObjectUpdateResponse","promise","toMatchInlineSnapshot","sendReferenceUpdatesResponse","unsubscribe2","subscribe","type","apiName","objectType","toString","sendToClient","id","responses","subId","updates","state","object","__apiName","employeeId","removeEventListener","addEventListener","length","times","waitFor","toBeCalledTimes","result","JSON","parse","lastCall","mockClear","results","value","OriginalWebSocket","i","ret","_args","webSocketInst","debug","eventEmitter","EventTarget","bind","message","_eventEmitter","readyState","CONNECTING","Object","assign","OPEN","CLOSED","CLOSING","newState","dispatchEvent","Event","name","requestId","request","trace","url","eventNames","c","events","on","SubscribeMessage","string","array","objectSet","MessageEvent","constructor","data","stringify","t"],"sources":["ObjectSetListenerWebsocket.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 { ObjectSetListener, PropertyKeys } from \"@osdk/api\";\nimport { $ontologyRid, Employee } from \"@osdk/client.test.ontology\";\nimport type {\n ObjectSetStreamSubscribeRequests,\n ObjectUpdate,\n StreamMessage,\n} from \"@osdk/internal.foundry.core\";\nimport { apiServer } from \"@osdk/shared.test\";\nimport ImportedWebSocket from \"isomorphic-ws\";\nimport { http, HttpResponse } from \"msw\";\nimport type { DeferredPromise } from \"p-defer\";\nimport pDefer from \"p-defer\";\nimport type { MockedClass, MockedFunction, MockedObject } from \"vitest\";\nimport {\n afterAll,\n afterEach,\n beforeAll,\n beforeEach,\n describe,\n expect,\n it,\n vi,\n} from \"vitest\";\nimport { z } from \"zod\";\nimport { createMinimalClient } from \"../createMinimalClient.js\";\nimport type { Logger } from \"../Logger.js\";\nimport type { MinimalClient } from \"../MinimalClientContext.js\";\nimport {\n constructWebsocketUrl,\n ObjectSetListenerWebsocket,\n} from \"./ObjectSetListenerWebsocket.js\";\n\n// it needs to be hoisted because its referenced from our mocked WebSocket\n// which must be hoisted to work\nconst rootLogger = await vi.hoisted(async (): Promise<Logger> => {\n const pino = (await import(\"pino\")).pino;\n const pinoPretty = await import(\"pino-pretty\");\n const { EventEmitter } = await import(\"node:events\");\n class PinoConsoleLogDestination extends EventEmitter {\n write(a: string) {\n // remove trailing newline since console.log adds one\n if (a.at(-1) === \"\\n\") a = a.slice(0, -1);\n\n // This lets the test framework aggregate the logs per test, whereas direct to stdout does not\n console.log(a);\n }\n }\n return Promise.resolve(pino(\n { level: \"info\" },\n (pinoPretty.build)({\n sync: true,\n timestampKey: undefined,\n errorLikeObjectKeys: [\"error\", \"err\", \"exception\"],\n errorProps: \"stack,cause,properties\",\n ignore: \"time,hostname,pid\",\n destination: new PinoConsoleLogDestination(),\n }),\n ));\n});\n\n// make local uses of WebSocket typed right\nconst MockedWebSocket = ImportedWebSocket as unknown as MockedWebSocket;\n\nconst STACK = \"https://stack.palantirCustom.com/foo/first/someStuff/\";\n\nvi.mock(\"isomorphic-ws\", async (importOriginal) => {\n const original = await importOriginal<\n { default: WebSocket }\n >();\n\n const WebSocket = createMockWebSocketConstructor(\n original.default,\n rootLogger,\n );\n return { default: WebSocket, WebSocket };\n});\n\nlet currentSubscriptionId = 0;\n\ndescribe(\"ObjectSetListenerWebsocket\", async () => {\n beforeAll(async () => {\n apiServer.listen();\n addLoggerToApiServer(rootLogger);\n });\n\n afterAll(() => {\n apiServer.close();\n });\n\n describe(\"basic setup\", () => {\n let minimalClient: MinimalClient;\n\n const MINIMUM_RECONNECT_DELAY = 2_000;\n const OBJECT_SET_EXPIRY_MS = 60_000;\n\n let client: ObjectSetListenerWebsocket;\n let listener: MockedObject<\n Required<\n ObjectSetListener<Employee, any>\n >\n >;\n let oslwInst = 0;\n\n let updateReceived: ObjectUpdate | undefined = undefined;\n\n let listenerPromise: DeferredPromise<void>;\n\n beforeEach(() => {\n minimalClient = createMinimalClient(\n { ontologyRid: $ontologyRid },\n STACK,\n async () => \"myAccessToken\",\n { logger: rootLogger },\n );\n client = new ObjectSetListenerWebsocket({\n ...minimalClient,\n logger: rootLogger.child({ oslwInst: oslwInst++ }),\n }, {\n minimumReconnectDelayMs: MINIMUM_RECONNECT_DELAY,\n });\n\n listenerPromise = pDefer();\n\n listener = {\n onChange: vi.fn((o) => {\n updateReceived = o;\n listenerPromise.resolve();\n }),\n onError: vi.fn(),\n onOutOfDate: vi.fn(),\n onSuccessfulSubscription: vi.fn(),\n };\n\n let objectSetRidCounter = 0;\n apiServer.use(\n http.post(\n `${STACK}api/v2/ontologySubscriptions/ontologies/${$ontologyRid}/streamSubscriptions`,\n () =>\n HttpResponse.json({\n objectSetRid: `rid.hi.${objectSetRidCounter++}`,\n }),\n ),\n );\n\n vi.useFakeTimers();\n });\n\n afterEach(() => {\n vi.restoreAllMocks();\n apiServer.resetHandlers();\n });\n\n it(\"should not send onOutOfDate since it has not subscribed yet\", () => {\n expect(MockedWebSocket).not.toHaveBeenCalled();\n expect(listener.onOutOfDate).not.toHaveBeenCalled();\n expect(listener.onChange).not.toHaveBeenCalled();\n expect(listener.onError).not.toHaveBeenCalled();\n });\n\n describe(\"requests subscription\", () => {\n let ws: MockedWebSocket;\n let unsubscribe: () => void;\n let subReq1: ObjectSetStreamSubscribeRequests;\n\n beforeEach(async () => {\n [ws, unsubscribe] = await subscribeAndExpectWebSocket(\n client,\n listener,\n );\n\n subReq1 = await expectSubscribeMessages(ws, 2);\n });\n\n afterEach(() => {\n // just ensure we ended in good states, as we clear these as we consume them\n expect(MockedWebSocket).not.toHaveBeenCalled();\n\n // make sure we are unsubscribed so closing the socket doesn't trigger reconnects\n unsubscribe();\n\n // disconnect the socket\n setWebSocketState(ws, \"close\");\n\n vi.runAllTicks();\n\n // Make sure we cleaned up\n expectEqualRemoveAndAddListeners(ws);\n });\n\n it(\"only sends a single request\", async () => {\n respondSuccessToSubscribe(ws, subReq1);\n // actually this is broken FIXME\n unsubscribe();\n expect(ws.send).toHaveBeenCalledTimes(1);\n });\n\n it(\"correctly requests regular object properties\", () => {\n expect(subReq1.requests[0].propertySet).toEqual([\n \"employeeId\",\n \"fullName\",\n \"office\",\n \"class\",\n \"startDate\",\n \"employeeStatus\",\n \"employeeSensor\",\n ]);\n });\n\n it(\"correctly requests reference backed properties\", () => {\n expect(subReq1.requests[0].referenceSet).toEqual([\"employeeLocation\"]);\n });\n\n describe(\"socket closed before subscription confirmed\", () => {\n beforeEach(() => {\n setWebSocketState(ws, \"close\");\n expectEqualRemoveAndAddListeners(ws);\n });\n\n describe(\"reconnect\", async () => {\n beforeEach(async () => {\n [ws] = await Promise.all([\n expectWebSocketConstructed(),\n // delay for connection reconnect\n vi.advanceTimersByTimeAsync(MINIMUM_RECONNECT_DELAY),\n ]);\n setWebSocketState(ws, \"open\");\n });\n\n describe(\"subscribe and respond\", () => {\n beforeEach(async () => {\n const subReq2 = await expectSubscribeMessages(ws);\n respondSuccessToSubscribe(ws, subReq2);\n });\n\n it(\"should not send out of date\", () => {\n expect(listener.onOutOfDate).not.toHaveBeenCalled();\n });\n });\n });\n });\n\n describe(\"correctly try catches errors in handlers\", () => {\n beforeEach(() => {\n listener.onSuccessfulSubscription.mockImplementationOnce(() => {\n throw new Error(\"I am an error\");\n });\n respondSuccessToSubscribe(ws, subReq1);\n });\n afterEach(() => {\n listener.onSuccessfulSubscription.mockReset();\n });\n\n it(\"should call onError\", async () => {\n expect(listener.onError).toHaveBeenCalled();\n expect(listener.onError.mock.calls[0][0].subscriptionClosed).toBe(\n false,\n );\n });\n });\n\n describe(\"successfully subscribed\", () => {\n beforeEach(() => {\n respondSuccessToSubscribe(ws, subReq1);\n });\n\n it(\"should call onSuccessfulSubscription\", () => {\n expect(listener.onSuccessfulSubscription).toHaveBeenCalled();\n });\n\n it(\"should correctly return regular updates\", async () => {\n const idNum2 = currentSubscriptionId;\n\n sendObjectUpdateResponse(ws, `${idNum2}`);\n await listenerPromise.promise;\n expect(listener.onChange).toHaveBeenCalled();\n expect(updateReceived).toMatchInlineSnapshot(`\n {\n \"object\": {\n \"$apiName\": \"Employee\",\n \"$objectType\": \"Employee\",\n \"$primaryKey\": undefined,\n \"$title\": undefined,\n \"employeeId\": 1,\n },\n \"state\": \"ADDED_OR_UPDATED\",\n }\n `);\n });\n\n it(\"should correctly return reference update\", async () => {\n const idNum2 = currentSubscriptionId;\n\n sendReferenceUpdatesResponse(ws, `${idNum2}`);\n await listenerPromise.promise;\n expect(listener.onChange).toHaveBeenCalled();\n expect(updateReceived).toMatchInlineSnapshot(`\n {\n \"object\": {\n \"$apiName\": \"Employee\",\n \"$objectType\": \"Employee\",\n \"$primaryKey\": \"12345\",\n \"$title\": undefined,\n \"employeeId\": \"12345\",\n \"employeeLocation\": GeotimeSeriesPropertyImpl {\n \"lastFetchedValue\": {\n \"time\": \"111\",\n \"value\": {\n \"coordinates\": [\n 100,\n 200,\n ],\n \"type\": \"Point\",\n },\n },\n },\n },\n \"state\": \"ADDED_OR_UPDATED\",\n }\n `);\n });\n\n describe(\"additional subscription\", async () => {\n let unsubscribe2: () => void;\n let subReq2: ObjectSetStreamSubscribeRequests;\n beforeEach(async () => {\n unsubscribe2 = await client.subscribe(\n {\n type: \"object\",\n apiName: \"Employee\",\n },\n {\n type: \"base\",\n objectType: Employee.apiName,\n },\n listener,\n [\"employeeId\"],\n );\n\n subReq2 = await expectSubscribeMessages(ws);\n\n respondSuccessToSubscribe(ws, subReq2);\n });\n\n afterEach(() => {\n unsubscribe2();\n });\n\n it(\"only requests requested properties\", () => {\n expect(subReq2.requests[1].propertySet).toEqual([\"employeeId\"]);\n expect(subReq2.requests[1].referenceSet).toEqual([]);\n });\n\n it(\"does not trigger an out of date \", () => {\n expect(listener.onOutOfDate).not.toHaveBeenCalled();\n });\n });\n\n describe(\"socket closed abruptly\", () => {\n beforeEach(() => {\n setWebSocketState(ws, \"close\");\n expectEqualRemoveAndAddListeners(ws);\n });\n\n describe(\"reconnect, resubscribe successfully\", async () => {\n beforeEach(async () => {\n [ws] = await Promise.all([\n expectWebSocketConstructed(),\n // delay for connection reconnect\n vi.advanceTimersByTimeAsync(MINIMUM_RECONNECT_DELAY),\n ]);\n setWebSocketState(ws, \"open\");\n\n const subReq2 = await expectSubscribeMessages(ws);\n respondSuccessToSubscribe(ws, subReq2);\n });\n\n it(\"should send out of date\", () => {\n expect(listener.onOutOfDate).toHaveBeenCalledTimes(1);\n });\n });\n });\n\n it(\"should not send onOutOfDate for first call\", () => {\n expect(MockedWebSocket).not.toHaveBeenCalled();\n expect(listener.onOutOfDate).not.toHaveBeenCalled();\n expect(listener.onChange).not.toHaveBeenCalled();\n expect(listener.onError).not.toHaveBeenCalled();\n });\n\n it(\"should create url correctly\", () => {\n expect(constructWebsocketUrl(STACK, \"ontologyRid1\").toString())\n .toEqual(\n \"wss://stack.palantircustom.com/foo/first/someStuff/api/v2/ontologySubscriptions/ontologies/ontologyRid1/streamSubscriptions\",\n );\n });\n });\n });\n });\n});\n\ninterface RawWebSocketPlus\n extends Pick<ImportedWebSocket, \"addEventListener\" | \"removeEventListener\">\n{\n _eventEmitter: EventTarget;\n readyState: 0 | 1 | 2 | 3;\n send: MockedFunction<ImportedWebSocket[\"send\"]>;\n close: MockedFunction<ImportedWebSocket[\"close\"]>;\n}\n\ninterface MockedWebSocket\n extends MockedClass<typeof ImportedWebSocket>, MockedObject<RawWebSocketPlus>\n{\n}\n\ntype MockedListener = MockedObject<\n Required<\n ObjectSetListener<Employee, PropertyKeys<Employee>>\n >\n>;\n\nfunction respondSuccessToSubscribe(\n ws: MockedWebSocket,\n subReq2: ObjectSetStreamSubscribeRequests,\n) {\n sendToClient<StreamMessage>(\n ws,\n {\n id: subReq2.id,\n type: \"subscribeResponses\",\n responses: [{\n type: \"success\",\n id: `${++currentSubscriptionId}`,\n }],\n },\n );\n}\n\nfunction sendObjectUpdateResponse(\n ws: MockedWebSocket,\n subId: string,\n) {\n const updateMessage: StreamMessage = {\n type: \"objectSetChanged\",\n id: subId,\n updates: [{\n type: \"object\",\n state: \"ADDED_OR_UPDATED\",\n object: {\n __apiName: \"Employee\",\n employeeId: 1,\n },\n }],\n };\n\n sendToClient<StreamMessage>(\n ws,\n updateMessage,\n );\n}\n\nfunction sendReferenceUpdatesResponse(\n ws: MockedWebSocket,\n subId: string,\n) {\n const referenceUpdateMessage: StreamMessage = {\n type: \"objectSetChanged\",\n id: subId,\n updates: [{\n \"type\": \"reference\",\n \"objectType\": \"Employee\",\n \"primaryKey\": { \"employeeId\": \"12345\" },\n \"property\": \"employeeLocation\",\n \"value\": {\n \"timestamp\": \"111\",\n \"type\": \"geotimeSeriesValue\",\n \"position\": [100, 200],\n },\n }],\n };\n\n sendToClient<StreamMessage>(\n ws,\n referenceUpdateMessage,\n );\n}\n\nfunction expectEqualRemoveAndAddListeners(ws: MockedWebSocket) {\n expect(ws.removeEventListener).toHaveBeenCalledTimes(\n ws.addEventListener.mock.calls.length,\n );\n}\n\nasync function expectSubscribeMessages(\n ws: MockedWebSocket,\n times: number = 1,\n): Promise<ObjectSetStreamSubscribeRequests> {\n return await vi.waitFor(() => {\n expect(ws.send).toBeCalledTimes(times);\n const result = JSON.parse(ws.send.mock.lastCall![0].toString());\n ws.send.mockClear();\n return result;\n });\n}\n\nasync function subscribeAndExpectWebSocket(\n client: ObjectSetListenerWebsocket,\n listener: MockedListener,\n): Promise<readonly [MockedWebSocket, () => void]> {\n const [ws, unsubscribe] = await Promise.all([\n expectWebSocketConstructed(),\n client.subscribe<Employee, PropertyKeys<Employee>>(\n {\n apiName: \"Employee\",\n type: \"object\",\n },\n {\n type: \"base\",\n objectType: Employee.apiName,\n },\n listener,\n ),\n ]);\n\n // otherwise the ObjectSetListenerWebSocket is sitting waiting for it to \"connect\"\n setWebSocketState(ws, \"open\");\n\n return [ws, unsubscribe] as const;\n}\n\nasync function expectWebSocketConstructed(): Promise<MockedWebSocket> {\n expect(MockedWebSocket).toHaveBeenCalledTimes(0);\n\n const ws = await vi.waitFor(() => {\n expect(MockedWebSocket).toHaveBeenCalled();\n expect(MockedWebSocket.mock.results[0].type === \"return\");\n return MockedWebSocket.mock.results[0].value as MockedWebSocket;\n });\n\n expect(MockedWebSocket).toHaveBeenCalledTimes(1);\n MockedWebSocket.mockClear();\n expect(MockedWebSocket).toHaveBeenCalledTimes(0);\n\n return ws;\n}\n\nfunction createMockWebSocketConstructor(\n OriginalWebSocket: WebSocket,\n logger: Logger,\n): MockedWebSocket {\n let i = 0;\n const ret = vi.fn(function(..._args: any[]): MockedWebSocket {\n const webSocketInst = i++;\n logger.debug(\"WebSocket constructor called\");\n const eventEmitter = new EventTarget();\n\n return {\n addEventListener: vi.fn(\n eventEmitter.addEventListener.bind(eventEmitter),\n ) as any,\n removeEventListener: vi.fn(\n eventEmitter.removeEventListener.bind(eventEmitter),\n ) as any,\n\n send: vi.fn((a, _b: any) => {\n logger.debug(\n { message: JSON.parse(a.toString()), webSocketInst },\n \"send() called\",\n );\n }),\n close: vi.fn(),\n _eventEmitter: eventEmitter,\n readyState: OriginalWebSocket.CONNECTING,\n } satisfies RawWebSocketPlus as any as MockedWebSocket;\n // ^ we only implement some things but the type system wants to think its the full deal,\n // thus the satisfies plus the cast\n }) as any as MockedWebSocket;\n\n Object.assign(ret, {\n OPEN: OriginalWebSocket.OPEN,\n CLOSED: OriginalWebSocket.CLOSED,\n CLOSING: OriginalWebSocket.CLOSING,\n CONNECTING: OriginalWebSocket.CONNECTING,\n });\n\n return ret;\n}\n\nfunction setWebSocketState(ws: MockedWebSocket, readyState: \"open\" | \"close\") {\n const newState = readyState === \"open\"\n ? ImportedWebSocket.OPEN\n : ImportedWebSocket.CLOSED;\n\n if (newState === ws.readyState) return;\n\n ws.readyState = newState;\n ws._eventEmitter.dispatchEvent(new Event(readyState, {}));\n}\n\nfunction addLoggerToApiServer(logger: Logger) {\n const z = (\n name: string,\n { requestId, request }: { requestId: string; request: Request },\n ) => logger.trace({ requestId, url: request.url }, name);\n\n const eventNames = [\n \"request:start\",\n \"request:match\",\n \"request:end\",\n \"request:unhandled\",\n \"response:bypass\",\n \"response:mocked\",\n ] as const;\n\n for (const c of eventNames) {\n apiServer.events.on(c as typeof eventNames[number], z.bind(undefined, c));\n }\n}\n\nconst SubscribeMessage = z.object({\n id: z.string(),\n requests: z.array(z.object({\n objectSet: z.object({ id: z.string() }),\n propertySet: z.array(z.string()),\n referenceSet: z.array(z.string()),\n })),\n});\n\nclass MessageEvent extends Event {\n data: string;\n constructor(data: any) {\n super(\"message\");\n this.data = JSON.stringify(data);\n }\n}\n\nfunction sendToClient<T>(ws: MockedWebSocket, t: T) {\n ws._eventEmitter.dispatchEvent(new MessageEvent(t));\n}\n"],"mappings":"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","ignoreList":[]}
@@ -14,5 +14,5 @@
14
14
  * limitations under the License.
15
15
  */
16
16
 
17
- export const USER_AGENT = `osdk-client/${"2.1.0-beta.25"}`;
17
+ export const USER_AGENT = `osdk-client/${"2.1.0-beta.27"}`;
18
18
  //# sourceMappingURL=UserAgent.js.map
@@ -16,6 +16,7 @@
16
16
 
17
17
  import * as OntologiesV2 from "@osdk/internal.foundry.ontologiesv2";
18
18
  import { isAttachmentUpload } from "../object/AttachmentUpload.js";
19
+ import { isMediaReference } from "../object/mediaUpload.js";
19
20
  import { getWireObjectSet, isObjectSet } from "../objectSet/createObjectSet.js";
20
21
  import { isInterfaceActionParam } from "./interfaceUtils.js";
21
22
  import { isOntologyObjectV2 } from "./isOntologyObjectV2.js";
@@ -69,6 +70,9 @@ export async function toDataValue(value, client) {
69
70
  if (isObjectSet(value)) {
70
71
  return getWireObjectSet(value);
71
72
  }
73
+ if (isMediaReference(value)) {
74
+ return value;
75
+ }
72
76
  if (isInterfaceActionParam(value)) {
73
77
  return {
74
78
  objectTypeApiName: value.$objectType,
@@ -1 +1 @@
1
- {"version":3,"file":"toDataValue.js","names":["OntologiesV2","isAttachmentUpload","getWireObjectSet","isObjectSet","isInterfaceActionParam","isOntologyObjectV2","isOsdkBaseObject","isWireObjectSet","toDataValue","value","client","Array","isArray","Set","promiseArray","from","innerValue","Promise","all","attachment","Attachments","upload","data","filename","name","rid","Blob","__primaryKey","$primaryKey","objectTypeApiName","$objectType","primaryKeyValue","Object","entries","reduce","promisedAcc","key","structValue","acc","resolve"],"sources":["toDataValue.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 DataValue } from \"@osdk/internal.foundry.core\";\nimport * as OntologiesV2 from \"@osdk/internal.foundry.ontologiesv2\";\nimport type { MinimalClient } from \"../MinimalClientContext.js\";\nimport { isAttachmentUpload } from \"../object/AttachmentUpload.js\";\nimport { getWireObjectSet, isObjectSet } from \"../objectSet/createObjectSet.js\";\nimport { isInterfaceActionParam } from \"./interfaceUtils.js\";\nimport { isOntologyObjectV2 } from \"./isOntologyObjectV2.js\";\nimport { isOsdkBaseObject } from \"./isOsdkObject.js\";\nimport { isWireObjectSet } from \"./WireObjectSet.js\";\n\n/**\n * Marshall user-facing data into the wire DataValue type\n *\n * @see DataValue for the expected payloads\n * @internal\n */\nexport async function toDataValue(\n value: unknown,\n client: MinimalClient,\n): Promise<DataValue> {\n if (value == null) {\n // typeof null is 'object' so do this first\n return value;\n }\n\n // arrays and sets are both sent over the wire as arrays\n if (Array.isArray(value) || value instanceof Set) {\n const promiseArray = Array.from(\n value,\n async (innerValue) => await toDataValue(innerValue, client),\n );\n return Promise.all(promiseArray);\n }\n\n // For uploads, we need to upload ourselves first to get the RID of the attachment\n if (isAttachmentUpload(value)) {\n const attachment = await OntologiesV2.Attachments.upload(\n client,\n value.data,\n {\n filename: value.name,\n },\n );\n return await toDataValue(attachment.rid, client);\n }\n\n if (typeof value === \"object\" && value instanceof Blob && \"name\" in value) {\n const attachment = await OntologiesV2.Attachments.upload(\n client,\n value,\n {\n filename: value.name as string,\n },\n );\n return await toDataValue(attachment.rid, client);\n }\n\n // objects just send the JSON'd primaryKey\n if (isOntologyObjectV2(value)) {\n return await toDataValue(value.__primaryKey, client);\n }\n\n if (isOsdkBaseObject(value)) {\n return await toDataValue(value.$primaryKey, client);\n }\n\n // object set (the rid as a string (passes through the last return), or the ObjectSet definition directly)\n if (isWireObjectSet(value)) {\n return value;\n }\n if (isObjectSet(value)) {\n return getWireObjectSet(value);\n }\n\n if (isInterfaceActionParam(value)) {\n return {\n objectTypeApiName: value.$objectType,\n primaryKeyValue: value.$primaryKey,\n };\n }\n\n // TODO (during queries implementation)\n // two dimensional aggregation\n // three dimensional aggregation\n\n // struct\n if (typeof value === \"object\") {\n return Object.entries(value).reduce(\n async (promisedAcc, [key, structValue]) => {\n const acc = await promisedAcc;\n acc[key] = await toDataValue(structValue, client);\n return acc;\n },\n Promise.resolve({} as { [key: string]: DataValue }),\n );\n }\n\n // expected to pass through - boolean, byte, date, decimal, float, double, integer, long, short, string, timestamp, object type reference\n return value;\n}\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAGA,OAAO,KAAKA,YAAY,MAAM,qCAAqC;AAEnE,SAASC,kBAAkB,QAAQ,+BAA+B;AAClE,SAASC,gBAAgB,EAAEC,WAAW,QAAQ,iCAAiC;AAC/E,SAASC,sBAAsB,QAAQ,qBAAqB;AAC5D,SAASC,kBAAkB,QAAQ,yBAAyB;AAC5D,SAASC,gBAAgB,QAAQ,mBAAmB;AACpD,SAASC,eAAe,QAAQ,oBAAoB;;AAEpD;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,eAAeC,WAAWA,CAC/BC,KAAc,EACdC,MAAqB,EACD;EACpB,IAAID,KAAK,IAAI,IAAI,EAAE;IACjB;IACA,OAAOA,KAAK;EACd;;EAEA;EACA,IAAIE,KAAK,CAACC,OAAO,CAACH,KAAK,CAAC,IAAIA,KAAK,YAAYI,GAAG,EAAE;IAChD,MAAMC,YAAY,GAAGH,KAAK,CAACI,IAAI,CAC7BN,KAAK,EACL,MAAOO,UAAU,IAAK,MAAMR,WAAW,CAACQ,UAAU,EAAEN,MAAM,CAC5D,CAAC;IACD,OAAOO,OAAO,CAACC,GAAG,CAACJ,YAAY,CAAC;EAClC;;EAEA;EACA,IAAIb,kBAAkB,CAACQ,KAAK,CAAC,EAAE;IAC7B,MAAMU,UAAU,GAAG,MAAMnB,YAAY,CAACoB,WAAW,CAACC,MAAM,CACtDX,MAAM,EACND,KAAK,CAACa,IAAI,EACV;MACEC,QAAQ,EAAEd,KAAK,CAACe;IAClB,CACF,CAAC;IACD,OAAO,MAAMhB,WAAW,CAACW,UAAU,CAACM,GAAG,EAAEf,MAAM,CAAC;EAClD;EAEA,IAAI,OAAOD,KAAK,KAAK,QAAQ,IAAIA,KAAK,YAAYiB,IAAI,IAAI,MAAM,IAAIjB,KAAK,EAAE;IACzE,MAAMU,UAAU,GAAG,MAAMnB,YAAY,CAACoB,WAAW,CAACC,MAAM,CACtDX,MAAM,EACND,KAAK,EACL;MACEc,QAAQ,EAAEd,KAAK,CAACe;IAClB,CACF,CAAC;IACD,OAAO,MAAMhB,WAAW,CAACW,UAAU,CAACM,GAAG,EAAEf,MAAM,CAAC;EAClD;;EAEA;EACA,IAAIL,kBAAkB,CAACI,KAAK,CAAC,EAAE;IAC7B,OAAO,MAAMD,WAAW,CAACC,KAAK,CAACkB,YAAY,EAAEjB,MAAM,CAAC;EACtD;EAEA,IAAIJ,gBAAgB,CAACG,KAAK,CAAC,EAAE;IAC3B,OAAO,MAAMD,WAAW,CAACC,KAAK,CAACmB,WAAW,EAAElB,MAAM,CAAC;EACrD;;EAEA;EACA,IAAIH,eAAe,CAACE,KAAK,CAAC,EAAE;IAC1B,OAAOA,KAAK;EACd;EACA,IAAIN,WAAW,CAACM,KAAK,CAAC,EAAE;IACtB,OAAOP,gBAAgB,CAACO,KAAK,CAAC;EAChC;EAEA,IAAIL,sBAAsB,CAACK,KAAK,CAAC,EAAE;IACjC,OAAO;MACLoB,iBAAiB,EAAEpB,KAAK,CAACqB,WAAW;MACpCC,eAAe,EAAEtB,KAAK,CAACmB;IACzB,CAAC;EACH;;EAEA;EACA;EACA;;EAEA;EACA,IAAI,OAAOnB,KAAK,KAAK,QAAQ,EAAE;IAC7B,OAAOuB,MAAM,CAACC,OAAO,CAACxB,KAAK,CAAC,CAACyB,MAAM,CACjC,OAAOC,WAAW,EAAE,CAACC,GAAG,EAAEC,WAAW,CAAC,KAAK;MACzC,MAAMC,GAAG,GAAG,MAAMH,WAAW;MAC7BG,GAAG,CAACF,GAAG,CAAC,GAAG,MAAM5B,WAAW,CAAC6B,WAAW,EAAE3B,MAAM,CAAC;MACjD,OAAO4B,GAAG;IACZ,CAAC,EACDrB,OAAO,CAACsB,OAAO,CAAC,CAAC,CAAiC,CACpD,CAAC;EACH;;EAEA;EACA,OAAO9B,KAAK;AACd","ignoreList":[]}
1
+ {"version":3,"file":"toDataValue.js","names":["OntologiesV2","isAttachmentUpload","isMediaReference","getWireObjectSet","isObjectSet","isInterfaceActionParam","isOntologyObjectV2","isOsdkBaseObject","isWireObjectSet","toDataValue","value","client","Array","isArray","Set","promiseArray","from","innerValue","Promise","all","attachment","Attachments","upload","data","filename","name","rid","Blob","__primaryKey","$primaryKey","objectTypeApiName","$objectType","primaryKeyValue","Object","entries","reduce","promisedAcc","key","structValue","acc","resolve"],"sources":["toDataValue.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 DataValue } from \"@osdk/internal.foundry.core\";\nimport * as OntologiesV2 from \"@osdk/internal.foundry.ontologiesv2\";\nimport type { MinimalClient } from \"../MinimalClientContext.js\";\nimport { isAttachmentUpload } from \"../object/AttachmentUpload.js\";\nimport { isMediaReference } from \"../object/mediaUpload.js\";\nimport { getWireObjectSet, isObjectSet } from \"../objectSet/createObjectSet.js\";\nimport { isInterfaceActionParam } from \"./interfaceUtils.js\";\nimport { isOntologyObjectV2 } from \"./isOntologyObjectV2.js\";\nimport { isOsdkBaseObject } from \"./isOsdkObject.js\";\nimport { isWireObjectSet } from \"./WireObjectSet.js\";\n\n/**\n * Marshall user-facing data into the wire DataValue type\n *\n * @see DataValue for the expected payloads\n * @internal\n */\nexport async function toDataValue(\n value: unknown,\n client: MinimalClient,\n): Promise<DataValue> {\n if (value == null) {\n // typeof null is 'object' so do this first\n return value;\n }\n\n // arrays and sets are both sent over the wire as arrays\n if (Array.isArray(value) || value instanceof Set) {\n const promiseArray = Array.from(\n value,\n async (innerValue) => await toDataValue(innerValue, client),\n );\n return Promise.all(promiseArray);\n }\n\n // For uploads, we need to upload ourselves first to get the RID of the attachment\n if (isAttachmentUpload(value)) {\n const attachment = await OntologiesV2.Attachments.upload(\n client,\n value.data,\n {\n filename: value.name,\n },\n );\n return await toDataValue(attachment.rid, client);\n }\n\n if (typeof value === \"object\" && value instanceof Blob && \"name\" in value) {\n const attachment = await OntologiesV2.Attachments.upload(\n client,\n value,\n {\n filename: value.name as string,\n },\n );\n return await toDataValue(attachment.rid, client);\n }\n\n // objects just send the JSON'd primaryKey\n if (isOntologyObjectV2(value)) {\n return await toDataValue(value.__primaryKey, client);\n }\n\n if (isOsdkBaseObject(value)) {\n return await toDataValue(value.$primaryKey, client);\n }\n\n // object set (the rid as a string (passes through the last return), or the ObjectSet definition directly)\n if (isWireObjectSet(value)) {\n return value;\n }\n if (isObjectSet(value)) {\n return getWireObjectSet(value);\n }\n\n if (isMediaReference(value)) {\n return value;\n }\n\n if (isInterfaceActionParam(value)) {\n return {\n objectTypeApiName: value.$objectType,\n primaryKeyValue: value.$primaryKey,\n };\n }\n\n // TODO (during queries implementation)\n // two dimensional aggregation\n // three dimensional aggregation\n\n // struct\n if (typeof value === \"object\") {\n return Object.entries(value).reduce(\n async (promisedAcc, [key, structValue]) => {\n const acc = await promisedAcc;\n acc[key] = await toDataValue(structValue, client);\n return acc;\n },\n Promise.resolve({} as { [key: string]: DataValue }),\n );\n }\n\n // expected to pass through - boolean, byte, date, decimal, float, double, integer, long, short, string, timestamp, object type reference\n return value;\n}\n"],"mappings":"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","ignoreList":[]}
@@ -122,5 +122,9 @@ describe(toDataValue, () => {
122
122
  const converted = await toDataValue(file, clientCtx);
123
123
  expect(converted).toEqual("ri.attachments.main.attachment.86016861-707f-4292-b258-6a7108915a75");
124
124
  });
125
+ it("converts media reference correctly", async () => {
126
+ const converted = await toDataValue(stubData.mediaReference, clientCtx);
127
+ expect(converted).toEqual(stubData.mediaReference);
128
+ });
125
129
  });
126
130
  //# sourceMappingURL=toDataValue.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"toDataValue.test.js","names":["$ontologyRid","Employee","Task","apiServer","MockOntology","stubData","afterAll","beforeAll","describe","expect","it","vi","createClient","createMinimalClient","createAttachmentUpload","getWireObjectSet","toDataValue","client","clientCtx","fn","listen","metadata","close","basic","null","undefined","boolean","date","integer","string","timestamp","convertedBasic","toEqual","attachment","attachmentArray","attachmentSet","Set","recursiveConversion","inner","employee","employee1","ontologyConversion","__primaryKey","task","fetchOne","$primaryKey","clientObjectSet","where","id","definition","expected","objectSetConversion","toMatchInlineSnapshot","definitionConversion","blob","attachmentUploadRequestBody","localAttachment1","filename","attachmentUpload","converted","file","Object","assign","name"],"sources":["toDataValue.test.ts"],"sourcesContent":["/*\n * Copyright 2023 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { $ontologyRid, Employee, Task } from \"@osdk/client.test.ontology\";\nimport { apiServer, MockOntology, stubData } from \"@osdk/shared.test\";\nimport type { MockedFunction } from \"vitest\";\nimport { afterAll, beforeAll, describe, expect, it, vi } from \"vitest\";\nimport type { Client } from \"../Client.js\";\nimport { createClient } from \"../createClient.js\";\nimport { createMinimalClient } from \"../createMinimalClient.js\";\nimport type { MinimalClient } from \"../MinimalClientContext.js\";\nimport { createAttachmentUpload } from \"../object/AttachmentUpload.js\";\nimport { getWireObjectSet } from \"../objectSet/createObjectSet.js\";\nimport { toDataValue } from \"./toDataValue.js\";\n\ndescribe(toDataValue, () => {\n let client: Client;\n let clientCtx: MinimalClient;\n\n const mockFetch: MockedFunction<typeof globalThis.fetch> = vi.fn();\n\n beforeAll(async () => {\n apiServer.listen();\n client = createClient(\n \"https://stack.palantir.com\",\n $ontologyRid,\n async () => \"myAccessToken\",\n );\n\n clientCtx = createMinimalClient(\n MockOntology.metadata,\n \"https://stack.palantir.com\",\n async () => \"myAccessToken\",\n {},\n );\n });\n\n afterAll(() => {\n apiServer.close();\n });\n\n it(\"converts passthrough values correctly\", async () => {\n // basic pass through types\n const basic = {\n null: undefined,\n boolean: false,\n date: \"2024-01-01\",\n integer: 0,\n string: \"string\",\n timestamp: \"2024-01-01T00:00:00Z\",\n };\n const convertedBasic = await toDataValue(basic, clientCtx);\n expect(convertedBasic).toEqual(basic);\n });\n\n it(\"recursively converts arrays and sets into array types\", async () => {\n const attachment = \"rid\";\n const attachmentArray = [attachment];\n const attachmentSet = new Set(attachmentArray);\n\n const recursiveConversion = await toDataValue({\n attachment,\n attachmentArray,\n attachmentSet,\n }, clientCtx);\n\n expect(recursiveConversion).toEqual({\n attachment: \"rid\",\n attachmentArray: [\"rid\"],\n attachmentSet: [\"rid\"],\n });\n });\n\n it(\"recursively handles structs\", async () => {\n const struct = {\n inner: {\n attachment: \"rid\",\n },\n };\n\n const recursiveConversion = await toDataValue(struct, clientCtx);\n\n expect(recursiveConversion).toEqual({\n inner: { attachment: \"rid\" },\n });\n });\n\n it(\"maps an ontology object into just its primary key\", async () => {\n const employee = stubData.employee1;\n const ontologyConversion = await toDataValue(employee, clientCtx);\n expect(ontologyConversion).toEqual(\n stubData.employee1.__primaryKey,\n );\n });\n\n it(\"maps an ontology object into just its primary key with osdk wrapper\", async () => {\n const task = await client(Employee).fetchOne(50030);\n const ontologyConversion = await toDataValue(task, clientCtx);\n expect(ontologyConversion).toEqual(\n task.$primaryKey,\n );\n });\n\n it(\"passes through object set definitions\", async () => {\n const clientObjectSet = client(Task).where({ id: 0 });\n const definition = getWireObjectSet(clientObjectSet);\n\n const expected = `\n {\n \"objectSet\": {\n \"objectType\": \"Task\",\n \"type\": \"base\",\n },\n \"type\": \"filter\",\n \"where\": {\n \"field\": \"id\",\n \"type\": \"eq\",\n \"value\": 0,\n },\n }\n `;\n const objectSetConversion = await toDataValue(clientObjectSet, clientCtx);\n expect(objectSetConversion).toMatchInlineSnapshot(\n expected,\n );\n\n const definitionConversion = await toDataValue(definition, clientCtx);\n expect(definitionConversion).toMatchInlineSnapshot(expected);\n });\n\n it(\"converts blob attachment uploads correctly\", async () => {\n const blob =\n stubData.attachmentUploadRequestBody[stubData.localAttachment1.filename];\n const attachmentUpload = createAttachmentUpload(blob, \"file1.txt\");\n const converted = await toDataValue(attachmentUpload, clientCtx);\n\n expect(converted).toEqual(\n \"ri.attachments.main.attachment.86016861-707f-4292-b258-6a7108915a75\",\n );\n });\n\n it(\"converts file attachment uploads correctly\", async () => {\n // Mimics the Web file API (https://developer.mozilla.org/en-US/docs/Web/API/File). The File constructor is only available in Node 19.2.0 and above\n const file = Object.assign(\n stubData.attachmentUploadRequestBody[stubData.localAttachment1.filename],\n { name: \"file1.txt\" },\n );\n\n const converted = await toDataValue(file, clientCtx);\n\n expect(converted).toEqual(\n \"ri.attachments.main.attachment.86016861-707f-4292-b258-6a7108915a75\",\n );\n });\n});\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"toDataValue.test.js","names":["$ontologyRid","Employee","Task","apiServer","MockOntology","stubData","afterAll","beforeAll","describe","expect","it","vi","createClient","createMinimalClient","createAttachmentUpload","getWireObjectSet","toDataValue","client","clientCtx","fn","listen","metadata","close","basic","null","undefined","boolean","date","integer","string","timestamp","convertedBasic","toEqual","attachment","attachmentArray","attachmentSet","Set","recursiveConversion","inner","employee","employee1","ontologyConversion","__primaryKey","task","fetchOne","$primaryKey","clientObjectSet","where","id","definition","expected","objectSetConversion","toMatchInlineSnapshot","definitionConversion","blob","attachmentUploadRequestBody","localAttachment1","filename","attachmentUpload","converted","file","Object","assign","name","mediaReference"],"sources":["toDataValue.test.ts"],"sourcesContent":["/*\n * Copyright 2023 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { $ontologyRid, Employee, Task } from \"@osdk/client.test.ontology\";\nimport { apiServer, MockOntology, stubData } from \"@osdk/shared.test\";\nimport type { MockedFunction } from \"vitest\";\nimport { afterAll, beforeAll, describe, expect, it, vi } from \"vitest\";\nimport type { Client } from \"../Client.js\";\nimport { createClient } from \"../createClient.js\";\nimport { createMinimalClient } from \"../createMinimalClient.js\";\nimport type { MinimalClient } from \"../MinimalClientContext.js\";\nimport { createAttachmentUpload } from \"../object/AttachmentUpload.js\";\nimport { getWireObjectSet } from \"../objectSet/createObjectSet.js\";\nimport { toDataValue } from \"./toDataValue.js\";\n\ndescribe(toDataValue, () => {\n let client: Client;\n let clientCtx: MinimalClient;\n\n const mockFetch: MockedFunction<typeof globalThis.fetch> = vi.fn();\n\n beforeAll(async () => {\n apiServer.listen();\n client = createClient(\n \"https://stack.palantir.com\",\n $ontologyRid,\n async () => \"myAccessToken\",\n );\n\n clientCtx = createMinimalClient(\n MockOntology.metadata,\n \"https://stack.palantir.com\",\n async () => \"myAccessToken\",\n {},\n );\n });\n\n afterAll(() => {\n apiServer.close();\n });\n\n it(\"converts passthrough values correctly\", async () => {\n // basic pass through types\n const basic = {\n null: undefined,\n boolean: false,\n date: \"2024-01-01\",\n integer: 0,\n string: \"string\",\n timestamp: \"2024-01-01T00:00:00Z\",\n };\n const convertedBasic = await toDataValue(basic, clientCtx);\n expect(convertedBasic).toEqual(basic);\n });\n\n it(\"recursively converts arrays and sets into array types\", async () => {\n const attachment = \"rid\";\n const attachmentArray = [attachment];\n const attachmentSet = new Set(attachmentArray);\n\n const recursiveConversion = await toDataValue({\n attachment,\n attachmentArray,\n attachmentSet,\n }, clientCtx);\n\n expect(recursiveConversion).toEqual({\n attachment: \"rid\",\n attachmentArray: [\"rid\"],\n attachmentSet: [\"rid\"],\n });\n });\n\n it(\"recursively handles structs\", async () => {\n const struct = {\n inner: {\n attachment: \"rid\",\n },\n };\n\n const recursiveConversion = await toDataValue(struct, clientCtx);\n\n expect(recursiveConversion).toEqual({\n inner: { attachment: \"rid\" },\n });\n });\n\n it(\"maps an ontology object into just its primary key\", async () => {\n const employee = stubData.employee1;\n const ontologyConversion = await toDataValue(employee, clientCtx);\n expect(ontologyConversion).toEqual(\n stubData.employee1.__primaryKey,\n );\n });\n\n it(\"maps an ontology object into just its primary key with osdk wrapper\", async () => {\n const task = await client(Employee).fetchOne(50030);\n const ontologyConversion = await toDataValue(task, clientCtx);\n expect(ontologyConversion).toEqual(\n task.$primaryKey,\n );\n });\n\n it(\"passes through object set definitions\", async () => {\n const clientObjectSet = client(Task).where({ id: 0 });\n const definition = getWireObjectSet(clientObjectSet);\n\n const expected = `\n {\n \"objectSet\": {\n \"objectType\": \"Task\",\n \"type\": \"base\",\n },\n \"type\": \"filter\",\n \"where\": {\n \"field\": \"id\",\n \"type\": \"eq\",\n \"value\": 0,\n },\n }\n `;\n const objectSetConversion = await toDataValue(clientObjectSet, clientCtx);\n expect(objectSetConversion).toMatchInlineSnapshot(\n expected,\n );\n\n const definitionConversion = await toDataValue(definition, clientCtx);\n expect(definitionConversion).toMatchInlineSnapshot(expected);\n });\n\n it(\"converts blob attachment uploads correctly\", async () => {\n const blob =\n stubData.attachmentUploadRequestBody[stubData.localAttachment1.filename];\n const attachmentUpload = createAttachmentUpload(blob, \"file1.txt\");\n const converted = await toDataValue(attachmentUpload, clientCtx);\n\n expect(converted).toEqual(\n \"ri.attachments.main.attachment.86016861-707f-4292-b258-6a7108915a75\",\n );\n });\n\n it(\"converts file attachment uploads correctly\", async () => {\n // Mimics the Web file API (https://developer.mozilla.org/en-US/docs/Web/API/File). The File constructor is only available in Node 19.2.0 and above\n const file = Object.assign(\n stubData.attachmentUploadRequestBody[stubData.localAttachment1.filename],\n { name: \"file1.txt\" },\n );\n\n const converted = await toDataValue(file, clientCtx);\n\n expect(converted).toEqual(\n \"ri.attachments.main.attachment.86016861-707f-4292-b258-6a7108915a75\",\n );\n });\n\n it(\"converts media reference correctly\", async () => {\n const converted = await toDataValue(stubData.mediaReference, clientCtx);\n expect(converted).toEqual(\n stubData.mediaReference,\n );\n });\n});\n"],"mappings":"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","ignoreList":[]}
@@ -1,4 +1,4 @@
1
- export type { ActionDefinition, ActionEditResponse, ActionMetadata, ActionParam, ActionReturnTypeForOptions, ActionValidationResponse, ApplyActionOptions, ApplyBatchActionOptions, InterfaceDefinition, ObjectMetadata, ObjectSet, ObjectTypeDefinition, Osdk, OsdkObject, PageResult, PropertyDef, PropertyKeys, PropertyValueWireToClient, QueryDefinition, QueryParam, QueryResult, Result, SingleLinkAccessor, VersionBound, WhereClause } from "@osdk/api";
1
+ export type { ActionDefinition, ActionEditResponse, ActionMetadata, ActionParam, ActionReturnTypeForOptions, ActionValidationResponse, ApplyActionOptions, ApplyBatchActionOptions, Attachment, InterfaceDefinition, ObjectMetadata, ObjectSet, ObjectTypeDefinition, Osdk, OsdkObject, PageResult, PropertyDef, PropertyKeys, PropertyValueWireToClient, QueryDefinition, QueryParam, QueryResult, Result, SingleLinkAccessor, VersionBound, WhereClause } from "@osdk/api";
2
2
  export { isOk } from "@osdk/api";
3
3
  export { PalantirApiError } from "@osdk/shared.net.errors";
4
4
  export { ActionValidationError } from "./actions/ActionValidationError.js";
@@ -0,0 +1,2 @@
1
+ import type { MediaReference } from "@osdk/api";
2
+ export declare function isMediaReference(o: any): o is MediaReference;
@@ -1,6 +1,6 @@
1
1
  import type { Osdk } from "@osdk/api";
2
2
  import { Employee } from "@osdk/client.test.ontology";
3
- import type { Client } from "../Client.js";
3
+ import { type Client } from "../Client.js";
4
4
  export declare function shouldError(client: Client): Promise<Osdk<Employee>>;
5
5
  export declare function shouldError2(client: Client): Promise<Employee.OsdkObject>;
6
6
  export declare function shouldCompile_client_fetchOne_old_select(client: Client): Promise<Osdk<Employee, "employeeId">>;