@osdk/client 2.2.0-beta.12 → 2.2.0-beta.13

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 (151) hide show
  1. package/CHANGELOG.md +17 -0
  2. package/build/browser/actions/actions.test.js +1 -1
  3. package/build/browser/actions/actions.test.js.map +1 -1
  4. package/build/browser/index.js +1 -1
  5. package/build/browser/index.js.map +1 -1
  6. package/build/browser/logger/TestLogger.js +59 -0
  7. package/build/browser/logger/TestLogger.js.map +1 -0
  8. package/build/browser/object/attachment.test.js.map +1 -1
  9. package/build/browser/object/convertWireToOsdkObjects/createOsdkInterface.js +4 -0
  10. package/build/browser/object/convertWireToOsdkObjects/createOsdkInterface.js.map +1 -1
  11. package/build/browser/object/convertWireToOsdkObjects/createOsdkObject.js +44 -33
  12. package/build/browser/object/convertWireToOsdkObjects/createOsdkObject.js.map +1 -1
  13. package/build/browser/object/convertWireToOsdkObjects.js +4 -9
  14. package/build/browser/object/convertWireToOsdkObjects.js.map +1 -1
  15. package/build/browser/object/convertWireToOsdkObjects.test.js +29 -25
  16. package/build/browser/object/convertWireToOsdkObjects.test.js.map +1 -1
  17. package/build/browser/object/fetchPage.js +4 -3
  18. package/build/browser/object/fetchPage.js.map +1 -1
  19. package/build/browser/object/object.test.js +17 -1
  20. package/build/browser/object/object.test.js.map +1 -1
  21. package/build/browser/object/timeseries.test.js.map +1 -1
  22. package/build/browser/objectSet/ObjectSet.test.js +98 -1
  23. package/build/browser/objectSet/ObjectSet.test.js.map +1 -1
  24. package/build/browser/objectSet/ObjectSetListenerWebsocket.js +2 -2
  25. package/build/browser/objectSet/ObjectSetListenerWebsocket.js.map +1 -1
  26. package/build/browser/objectSet/ObjectSetListenerWebsocket.test.js +2 -3
  27. package/build/browser/objectSet/ObjectSetListenerWebsocket.test.js.map +1 -1
  28. package/build/browser/objectSet/createObjectSet.js +1 -0
  29. package/build/browser/objectSet/createObjectSet.js.map +1 -1
  30. package/build/browser/observable/internal/ActionApplication.js +4 -4
  31. package/build/browser/observable/internal/ActionApplication.js.map +1 -1
  32. package/build/browser/observable/internal/ObjectQuery.js +1 -1
  33. package/build/browser/observable/internal/ObjectQuery.js.map +1 -1
  34. package/build/browser/observable/internal/OptimisticJob.js +1 -1
  35. package/build/browser/observable/internal/OptimisticJob.js.map +1 -1
  36. package/build/browser/observable/internal/Store.js +2 -2
  37. package/build/browser/observable/internal/Store.js.map +1 -1
  38. package/build/browser/observable/internal/Store.test.js +173 -216
  39. package/build/browser/observable/internal/Store.test.js.map +1 -1
  40. package/build/browser/queries/applyQuery.js +3 -3
  41. package/build/browser/queries/applyQuery.js.map +1 -1
  42. package/build/browser/util/UserAgent.js +1 -1
  43. package/build/browser/util/extractRdpDefinition.js +87 -0
  44. package/build/browser/util/extractRdpDefinition.js.map +1 -0
  45. package/build/browser/util/extractRdpDefinition.test.js +144 -0
  46. package/build/browser/util/extractRdpDefinition.test.js.map +1 -0
  47. package/build/browser/util/objectSpecifierUtils.js +48 -0
  48. package/build/browser/util/objectSpecifierUtils.js.map +1 -0
  49. package/build/browser/util/objectSpecifierUtils.test.js +42 -0
  50. package/build/browser/util/objectSpecifierUtils.test.js.map +1 -0
  51. package/build/browser/util/toDataValueQueries.js +2 -4
  52. package/build/browser/util/toDataValueQueries.js.map +1 -1
  53. package/build/cjs/{chunk-EY52J5Z4.cjs → chunk-USHAX4EP.cjs} +89 -17
  54. package/build/cjs/chunk-USHAX4EP.cjs.map +1 -0
  55. package/build/cjs/{chunk-MCQVHD2F.cjs → chunk-VT3UM6EP.cjs} +17 -16
  56. package/build/cjs/chunk-VT3UM6EP.cjs.map +1 -0
  57. package/build/cjs/index.cjs +104 -95
  58. package/build/cjs/index.cjs.map +1 -1
  59. package/build/cjs/index.d.cts +11 -3
  60. package/build/cjs/public/internal.cjs +6 -7
  61. package/build/cjs/public/internal.cjs.map +1 -1
  62. package/build/cjs/public/unstable-do-not-use.cjs +67 -66
  63. package/build/cjs/public/unstable-do-not-use.cjs.map +1 -1
  64. package/build/esm/actions/actions.test.js +1 -1
  65. package/build/esm/actions/actions.test.js.map +1 -1
  66. package/build/esm/index.js +1 -1
  67. package/build/esm/index.js.map +1 -1
  68. package/build/esm/logger/TestLogger.js +59 -0
  69. package/build/esm/logger/TestLogger.js.map +1 -0
  70. package/build/esm/object/attachment.test.js.map +1 -1
  71. package/build/esm/object/convertWireToOsdkObjects/createOsdkInterface.js +4 -0
  72. package/build/esm/object/convertWireToOsdkObjects/createOsdkInterface.js.map +1 -1
  73. package/build/esm/object/convertWireToOsdkObjects/createOsdkObject.js +44 -33
  74. package/build/esm/object/convertWireToOsdkObjects/createOsdkObject.js.map +1 -1
  75. package/build/esm/object/convertWireToOsdkObjects.js +4 -9
  76. package/build/esm/object/convertWireToOsdkObjects.js.map +1 -1
  77. package/build/esm/object/convertWireToOsdkObjects.test.js +29 -25
  78. package/build/esm/object/convertWireToOsdkObjects.test.js.map +1 -1
  79. package/build/esm/object/fetchPage.js +4 -3
  80. package/build/esm/object/fetchPage.js.map +1 -1
  81. package/build/esm/object/object.test.js +17 -1
  82. package/build/esm/object/object.test.js.map +1 -1
  83. package/build/esm/object/timeseries.test.js.map +1 -1
  84. package/build/esm/objectSet/ObjectSet.test.js +98 -1
  85. package/build/esm/objectSet/ObjectSet.test.js.map +1 -1
  86. package/build/esm/objectSet/ObjectSetListenerWebsocket.js +2 -2
  87. package/build/esm/objectSet/ObjectSetListenerWebsocket.js.map +1 -1
  88. package/build/esm/objectSet/ObjectSetListenerWebsocket.test.js +2 -3
  89. package/build/esm/objectSet/ObjectSetListenerWebsocket.test.js.map +1 -1
  90. package/build/esm/objectSet/createObjectSet.js +1 -0
  91. package/build/esm/objectSet/createObjectSet.js.map +1 -1
  92. package/build/esm/observable/internal/ActionApplication.js +4 -4
  93. package/build/esm/observable/internal/ActionApplication.js.map +1 -1
  94. package/build/esm/observable/internal/ObjectQuery.js +1 -1
  95. package/build/esm/observable/internal/ObjectQuery.js.map +1 -1
  96. package/build/esm/observable/internal/OptimisticJob.js +1 -1
  97. package/build/esm/observable/internal/OptimisticJob.js.map +1 -1
  98. package/build/esm/observable/internal/Store.js +2 -2
  99. package/build/esm/observable/internal/Store.js.map +1 -1
  100. package/build/esm/observable/internal/Store.test.js +173 -216
  101. package/build/esm/observable/internal/Store.test.js.map +1 -1
  102. package/build/esm/queries/applyQuery.js +3 -3
  103. package/build/esm/queries/applyQuery.js.map +1 -1
  104. package/build/esm/util/UserAgent.js +1 -1
  105. package/build/esm/util/extractRdpDefinition.js +87 -0
  106. package/build/esm/util/extractRdpDefinition.js.map +1 -0
  107. package/build/esm/util/extractRdpDefinition.test.js +144 -0
  108. package/build/esm/util/extractRdpDefinition.test.js.map +1 -0
  109. package/build/esm/util/objectSpecifierUtils.js +48 -0
  110. package/build/esm/util/objectSpecifierUtils.js.map +1 -0
  111. package/build/esm/util/objectSpecifierUtils.test.js +42 -0
  112. package/build/esm/util/objectSpecifierUtils.test.js.map +1 -0
  113. package/build/esm/util/toDataValueQueries.js +2 -4
  114. package/build/esm/util/toDataValueQueries.js.map +1 -1
  115. package/build/types/index.d.ts +1 -1
  116. package/build/types/index.d.ts.map +1 -1
  117. package/build/types/logger/TestLogger.d.ts +14 -0
  118. package/build/types/logger/TestLogger.d.ts.map +1 -0
  119. package/build/types/object/convertWireToOsdkObjects.d.ts +4 -4
  120. package/build/types/object/convertWireToOsdkObjects.d.ts.map +1 -1
  121. package/build/types/object/fetchPage.d.ts.map +1 -1
  122. package/build/types/object/object.test.d.ts.map +1 -1
  123. package/build/types/objectSet/ObjectSet.test.d.ts.map +1 -1
  124. package/build/types/observable/internal/ActionApplication.d.ts +2 -2
  125. package/build/types/observable/internal/ActionApplication.d.ts.map +1 -1
  126. package/build/types/observable/internal/OptimisticJob.d.ts.map +1 -1
  127. package/build/types/observable/internal/Store.d.ts +2 -2
  128. package/build/types/observable/internal/Store.d.ts.map +1 -1
  129. package/build/types/queries/applyQuery.d.ts +2 -2
  130. package/build/types/queries/applyQuery.d.ts.map +1 -1
  131. package/build/types/util/extractRdpDefinition.d.ts +4 -0
  132. package/build/types/util/extractRdpDefinition.d.ts.map +1 -0
  133. package/build/types/util/extractRdpDefinition.test.d.ts +1 -0
  134. package/build/types/util/extractRdpDefinition.test.d.ts.map +1 -0
  135. package/build/types/util/objectSpecifierUtils.d.ts +24 -0
  136. package/build/types/util/objectSpecifierUtils.d.ts.map +1 -0
  137. package/build/types/util/objectSpecifierUtils.test.d.ts +1 -0
  138. package/build/types/util/objectSpecifierUtils.test.d.ts.map +1 -0
  139. package/package.json +11 -11
  140. package/build/browser/object/createObjectSpecifierFromPrimaryKey.js +0 -20
  141. package/build/browser/object/createObjectSpecifierFromPrimaryKey.js.map +0 -1
  142. package/build/cjs/chunk-EY52J5Z4.cjs.map +0 -1
  143. package/build/cjs/chunk-MCQVHD2F.cjs.map +0 -1
  144. package/build/cjs/chunk-Q7SFCCGT.cjs +0 -11
  145. package/build/cjs/chunk-Q7SFCCGT.cjs.map +0 -1
  146. package/build/cjs/graphql-RGM5SRWV.cjs +0 -10532
  147. package/build/cjs/graphql-RGM5SRWV.cjs.map +0 -1
  148. package/build/esm/object/createObjectSpecifierFromPrimaryKey.js +0 -20
  149. package/build/esm/object/createObjectSpecifierFromPrimaryKey.js.map +0 -1
  150. package/build/types/object/createObjectSpecifierFromPrimaryKey.d.ts +0 -2
  151. package/build/types/object/createObjectSpecifierFromPrimaryKey.d.ts.map +0 -1
package/CHANGELOG.md CHANGED
@@ -1,5 +1,22 @@
1
1
  # @osdk/client
2
2
 
3
+ ## 2.2.0-beta.13
4
+
5
+ ### Minor Changes
6
+
7
+ - 2ce3659: Update underlying pagination size for async iter.
8
+ - 488b51c: Add support for using aggregations and GeoJSON types from runtime derived properties
9
+ - e873024: Fixes issues requiring msw and p-defer
10
+ - 88591f7: Small fixes for ObjectSpecifier
11
+
12
+ ### Patch Changes
13
+
14
+ - Updated dependencies [488b51c]
15
+ - Updated dependencies [71462e9]
16
+ - @osdk/api@2.2.0-beta.13
17
+ - @osdk/generator-converters@2.2.0-beta.13
18
+ - @osdk/client.unstable@2.2.0-beta.13
19
+
3
20
  ## 2.2.0-beta.12
4
21
 
5
22
  ### Minor Changes
@@ -469,7 +469,7 @@ describe("ActionResponse remapping", () => {
469
469
  });
470
470
  it("actions are enumerable", async () => {
471
471
  const actions = Object.keys($Actions);
472
- expect(actions).toStrictEqual(["actionTakesAttachment", "actionTakesMedia", "actionTakesObjectSet", "createFooInterface", "createOffice", "createOfficeAndEmployee", "createStructPerson", "deleteBarInterface", "deleteFooInterface", "moveOffice", "promoteEmployee", "promoteEmployeeObject"]);
472
+ expect(actions).toStrictEqual(["actionTakesAttachment", "actionTakesMedia", "actionTakesObjectSet", "createFooInterface", "createOffice", "createOfficeAndEmployee", "createStructPerson", "deleteBarInterface", "deleteFooInterface", "editTodo", "moveOffice", "promoteEmployee", "promoteEmployeeObject"]);
473
473
  });
474
474
  });
475
475
  function wrapper(fn) {
@@ -1 +1 @@
1
- {"version":3,"file":"actions.test.js","names":["$Actions","actionTakesAttachment","actionTakesMedia","createFooInterface","createOffice","createStructPerson","deleteBarInterface","deleteFooInterface","Employee","moveOffice","LegacyFauxFoundry","MockOntologiesV2","startNodeApiServer","stubData","beforeAll","describe","expect","expectTypeOf","it","vi","createClient","createAttachmentUpload","ActionValidationError","remapActionResponse","each","baseUrl","client","apiServer","testSetup","close","result","applyAction","officeId","address","capacity","$returnEdits","toEqualTypeOf","toMatchObject","undefinedResult","toBeUndefined","batchApplyAction","clientCreateOfficeMock","fn","newAddress","newCapacity","$validateOnly","fail","e","toBeInstanceOf","validation","toMatchTypeOf","name","city","state","zipcode","boundary","use","Actions","apply","submissionCriteria","parameters","attachment","blob","Blob","JSON","stringify","fileAttachment","Object","assign","result2","media_reference","actionRequestMediaUpload","deletedInterface","$objectType","$primaryKey","createdInterface","apiName","actionResponse","edits","type","deletedLinksCount","deletedObjectsCount","addedObjectCount","modifiedObjectsCount","addedLinksCount","batchActionResponse","remappedActionResponse","remappedBatchActionResponse","toMatchInlineSnapshot","actions","keys","toStrictEqual","wrapper","example","Promise","resolve"],"sources":["actions.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 type {\n ActionEditResponse,\n ActionValidationResponse,\n AttachmentUpload,\n MediaReference,\n} from \"@osdk/api\";\nimport {\n $Actions,\n actionTakesAttachment,\n actionTakesMedia,\n createFooInterface,\n createOffice,\n createStructPerson,\n deleteBarInterface,\n deleteFooInterface,\n Employee,\n moveOffice,\n} from \"@osdk/client.test.ontology\";\nimport type {\n BatchApplyActionResponseV2,\n SyncApplyActionResponseV2,\n} from \"@osdk/foundry.ontologies\";\nimport {\n LegacyFauxFoundry,\n MockOntologiesV2,\n startNodeApiServer,\n stubData,\n} from \"@osdk/shared.test\";\nimport type { SetupServer } from \"msw/node\";\nimport { beforeAll, describe, expect, expectTypeOf, it, vi } from \"vitest\";\nimport type { Client } from \"../Client.js\";\nimport { createClient } from \"../createClient.js\";\nimport { createAttachmentUpload } from \"../object/AttachmentUpload.js\";\nimport { ActionValidationError } from \"./ActionValidationError.js\";\nimport { remapActionResponse } from \"./applyAction.js\";\n\ndescribe.each([\n \"https://stack.palantir.com\",\n \"https://stack.palantirCustom.com/foo/first/someStuff\",\n])(\"actions for %s\", (baseUrl) => {\n let client: Client;\n let apiServer: SetupServer;\n\n beforeAll(() => {\n const testSetup = startNodeApiServer(\n new LegacyFauxFoundry(baseUrl),\n createClient,\n );\n ({ client, apiServer } = testSetup);\n\n return () => {\n apiServer.close();\n };\n });\n\n it(\"conditionally returns the edits\", async () => {\n const result = await client(createOffice).applyAction({\n officeId: \"NYC\",\n address: \"123 Main Street\",\n capacity: 100,\n }, { $returnEdits: true });\n\n expectTypeOf<typeof result>().toEqualTypeOf<ActionEditResponse>();\n expect(result).toMatchObject(\n {\n \"addedLinks\": [],\n \"addedObjects\": [\n {\n \"objectType\": \"Office\",\n \"primaryKey\": \"NYC\",\n },\n ],\n \"deletedLinks\": [],\n \"deletedLinksCount\": 0,\n \"deletedObjects\": [],\n \"deletedObjectsCount\": 0,\n \"editedObjectTypes\": [\n \"Office\",\n ],\n \"modifiedObjects\": [],\n \"type\": \"edits\",\n },\n );\n\n // eslint-disable-next-line @typescript-eslint/no-confusing-void-expression\n const undefinedResult = await client(createOffice).applyAction({\n officeId: \"NYC\",\n address: \"123 Main Street\",\n capacity: 100,\n });\n\n expectTypeOf<typeof undefinedResult>().toEqualTypeOf<undefined>();\n expect(undefinedResult).toBeUndefined();\n\n const clientCreateOffice = client(createOffice).batchApplyAction;\n const clientCreateOfficeMock: typeof clientCreateOffice = vi.fn();\n void clientCreateOfficeMock([{\n officeId: \"NYC\",\n address: \"123 Main Street\",\n capacity: 100,\n }], { $returnEdits: true });\n });\n\n it(\"returns validation directly on validateOnly mode\", async () => {\n const result = await client(moveOffice).applyAction({\n officeId: \"SEA\",\n newAddress: \"456 Pike Place\",\n // intentionally using a string to trigger validation errors\n newCapacity: \"40\" as unknown as number,\n }, {\n $validateOnly: true,\n });\n expectTypeOf<typeof result>().toEqualTypeOf<ActionValidationResponse>();\n\n expect(result).toMatchObject(\n {\n \"parameters\": {\n \"newCapacity\": {\n \"evaluatedConstraints\": [],\n \"required\": false,\n \"result\": \"INVALID\",\n },\n },\n \"result\": \"INVALID\",\n \"submissionCriteria\": [],\n },\n );\n });\n\n it(\"returns validation directly on validateOnly mode, with custom entry point in URL\", async () => {\n const result = await client(moveOffice).applyAction({\n officeId: \"SEA\",\n newAddress: \"456 Pike Place\",\n // intentionally using a string to trigger validation failure\n newCapacity: \"40\" as unknown as number,\n }, {\n $validateOnly: true,\n });\n expectTypeOf<typeof result>().toEqualTypeOf<ActionValidationResponse>();\n\n expect(result).toMatchObject(\n {\n \"parameters\": {\n \"newCapacity\": {\n \"evaluatedConstraints\": [],\n \"required\": false,\n \"result\": \"INVALID\",\n },\n },\n \"result\": \"INVALID\",\n \"submissionCriteria\": [],\n },\n );\n });\n\n it(\"throws on validation errors\", async () => {\n try {\n const result = await client(moveOffice).applyAction({\n officeId: \"SEA\",\n newAddress: \"456 Pike Place\",\n // intentionally using a string to trigger validation failure\n newCapacity: \"40\" as unknown as number,\n }, {\n $returnEdits: true,\n });\n expect.fail(\"Should not reach here\");\n } catch (e) {\n expect(e).toBeInstanceOf(ActionValidationError);\n expect((e as ActionValidationError).validation).toMatchObject(\n {\n \"parameters\": {\n \"newCapacity\": {\n \"evaluatedConstraints\": [],\n \"required\": false,\n \"result\": \"INVALID\",\n },\n },\n \"result\": \"INVALID\",\n \"submissionCriteria\": [],\n },\n );\n }\n });\n\n it(\"Accepts structs\", async () => {\n const clientBoundActionTakesStruct = client(createStructPerson).applyAction;\n type InferredParamType = Parameters<\n typeof clientBoundActionTakesStruct\n >[0];\n expectTypeOf<\n {\n name: string;\n address: { city: string; state: string; zipcode: number };\n }\n >()\n .toMatchTypeOf<\n InferredParamType\n >();\n\n const result = await client(createStructPerson).applyAction({\n name: \"testMan\",\n address: { city: \"NYC\", state: \"NY\", zipcode: 12345 },\n });\n expectTypeOf<typeof result>().toEqualTypeOf<undefined>();\n expect(result).toBeUndefined();\n });\n\n it(\"Accepts attachments\", async () => {\n const clientBoundActionTakesAttachment = client(\n actionTakesAttachment,\n ).applyAction;\n\n type InferredParamType = Parameters<\n typeof clientBoundActionTakesAttachment\n >[0];\n\n expectTypeOf<{ attachment: string | AttachmentUpload }>().toMatchTypeOf<\n InferredParamType\n >();\n\n const clientBoundBatchActionTakesAttachment = client(\n actionTakesAttachment,\n ).batchApplyAction;\n type InferredBatchParamType = Parameters<\n typeof clientBoundBatchActionTakesAttachment\n >[0];\n\n expectTypeOf<{\n attachment: string | AttachmentUpload;\n }[]>().toMatchTypeOf<InferredBatchParamType>();\n\n await apiServer.boundary(async () => {\n apiServer.use(MockOntologiesV2.Actions.apply(baseUrl, (info) => {\n return {\n validation: {\n result: \"VALID\",\n submissionCriteria: [],\n parameters: {},\n },\n };\n }));\n\n // eslint-disable-next-line @typescript-eslint/no-confusing-void-expression\n const result = await client(actionTakesAttachment).applyAction({\n attachment: \"ri.some.rid\",\n });\n\n expectTypeOf<typeof result>().toEqualTypeOf<undefined>();\n expect(result).toBeUndefined();\n })();\n });\n\n it(\"Accepts attachment uploads\", async () => {\n const clientBoundActionTakesAttachment = client(\n actionTakesAttachment,\n ).applyAction;\n type InferredParamType = Parameters<\n typeof clientBoundActionTakesAttachment\n >[0];\n const clientBoundBatchActionTakesAttachment = client(\n actionTakesAttachment,\n ).batchApplyAction;\n type InferredBatchParamType = Parameters<\n typeof clientBoundBatchActionTakesAttachment\n >[0];\n\n expectTypeOf<\n {\n attachment:\n | string\n | AttachmentUpload\n | Blob & { readonly name: string };\n }\n >().toMatchTypeOf<\n InferredParamType\n >();\n expectTypeOf<\n {\n attachment:\n | string\n | AttachmentUpload\n | Blob & { readonly name: string };\n }[]\n >().toMatchTypeOf<\n InferredBatchParamType\n >();\n\n const blob = new Blob([JSON.stringify({ name: \"Hello World\" }, null, 2)]);\n\n const attachment = createAttachmentUpload(blob, \"file1.txt\");\n\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 fileAttachment = Object.assign(blob, { name: \"file1.txt\" });\n\n // eslint-disable-next-line @typescript-eslint/no-confusing-void-expression\n const result = await client(actionTakesAttachment).applyAction({\n attachment,\n });\n\n // eslint-disable-next-line @typescript-eslint/no-confusing-void-expression\n const result2 = await client(actionTakesAttachment).applyAction({\n attachment: fileAttachment,\n });\n\n expectTypeOf<typeof result>().toEqualTypeOf<undefined>();\n expect(result).toBeUndefined();\n\n expectTypeOf<typeof result2>().toEqualTypeOf<undefined>();\n expect(result2).toBeUndefined();\n });\n\n it(\"Accepts media reference\", async () => {\n const clientBoundActionTakesMedia = client(\n actionTakesMedia,\n ).applyAction;\n type InferredParamType = Parameters<\n typeof clientBoundActionTakesMedia\n >[0];\n\n expectTypeOf<\n {\n media_reference: MediaReference;\n }\n >().toMatchTypeOf<\n InferredParamType\n >();\n\n const result = await client(actionTakesMedia).applyAction({\n media_reference:\n stubData.actionRequestMediaUpload.parameters.media_reference,\n });\n\n expectTypeOf<typeof result>().toEqualTypeOf<undefined>();\n expect(result).toBeUndefined();\n });\n\n it(\"Accepts interfaces\", async () => {\n const clientBoundTakesInterface = client(\n deleteFooInterface,\n ).applyAction;\n\n type InferredParamType = Parameters<\n typeof clientBoundTakesInterface\n >[0];\n\n expectTypeOf<\n {\n deletedInterface: {\n $objectType: \"Employee\" | \"Person\";\n $primaryKey: string | number;\n };\n }\n >().toMatchTypeOf<\n InferredParamType\n >();\n\n const clientBoundBatchActionTakesInterface = client(\n deleteFooInterface,\n ).batchApplyAction;\n type InferredBatchParamType = Parameters<\n typeof clientBoundBatchActionTakesInterface\n >[0];\n\n expectTypeOf<{\n deletedInterface: {\n $objectType: \"Employee\" | \"Person\";\n $primaryKey: string | number;\n };\n }[]>().toMatchTypeOf<InferredBatchParamType>();\n\n const result = await client(deleteFooInterface).applyAction({\n deletedInterface: {\n $objectType: \"Employee\",\n $primaryKey: 50030,\n },\n });\n\n expectTypeOf<typeof result>().toEqualTypeOf<undefined>();\n expect(result).toBeUndefined();\n });\n it(\"Accepts interfaces if implementing object types unknown\", async () => {\n const clientBoundTakesInterface = client(\n deleteBarInterface,\n ).applyAction;\n\n type InferredParamType = Parameters<\n typeof clientBoundTakesInterface\n >[0];\n\n expectTypeOf<\n {\n deletedInterface: {\n $objectType: string;\n $primaryKey: string | number;\n };\n }\n >().toMatchTypeOf<\n InferredParamType\n >();\n\n const clientBoundBatchActionTakesInterface = client(\n deleteBarInterface,\n ).batchApplyAction;\n type InferredBatchParamType = Parameters<\n typeof clientBoundBatchActionTakesInterface\n >[0];\n\n expectTypeOf<{\n deletedInterface: {\n $objectType: string;\n $primaryKey: string | number;\n };\n }[]>().toMatchTypeOf<InferredBatchParamType>();\n });\n it(\"Accepts object type refs\", async () => {\n const clientBoundTakesObjectType = client(\n createFooInterface,\n ).applyAction;\n\n type InferredParamType = Parameters<\n typeof clientBoundTakesObjectType\n >[0];\n\n expectTypeOf<\n {\n createdInterface: string;\n }\n >().toMatchTypeOf<\n InferredParamType\n >();\n\n const clientBoundBatchActionTakesObjectType = client(\n createFooInterface,\n ).batchApplyAction;\n type InferredBatchParamType = Parameters<\n typeof clientBoundBatchActionTakesObjectType\n >[0];\n\n expectTypeOf<{\n createdInterface: string;\n }[]>().toMatchTypeOf<InferredBatchParamType>();\n\n const result = await client(createFooInterface).applyAction({\n createdInterface: Employee.apiName,\n });\n\n expectTypeOf<typeof result>().toEqualTypeOf<undefined>();\n expect(result).toBeUndefined();\n });\n it(\"conditionally returns edits in batch mode\", async () => {\n const result = await client(moveOffice).batchApplyAction([\n {\n officeId: \"SEA\",\n newAddress: \"456 Good Place\",\n newCapacity: 40,\n },\n {\n officeId: \"NYC\",\n newAddress: \"123 Main Street\",\n newCapacity: 80,\n },\n ], { $returnEdits: true });\n\n expect(result).toMatchObject(\n {\n \"addedLinks\": [],\n \"addedObjects\": [],\n \"deletedLinks\": [],\n \"deletedLinksCount\": 0,\n \"deletedObjects\": [],\n \"deletedObjectsCount\": 0,\n \"editedObjectTypes\": [\n \"Office\",\n ],\n \"modifiedObjects\": [\n {\n \"objectType\": \"Office\",\n \"primaryKey\": \"SEA\",\n },\n {\n \"objectType\": \"Office\",\n \"primaryKey\": \"NYC\",\n },\n ],\n \"type\": \"edits\",\n },\n );\n });\n});\n\ndescribe(\"ActionResponse remapping\", () => {\n const actionResponse: SyncApplyActionResponseV2 = {\n edits: {\n type: \"edits\",\n edits: [{\n \"objectType\": \"Developer\",\n \"primaryKey\": \"PalantirDev\",\n \"type\": \"addObject\",\n }, {\n \"objectType\": \"Contractor\",\n \"primaryKey\": \"Contractor1\",\n \"type\": \"modifyObject\",\n }, {\n \"aSideObject\": { \"primaryKey\": \"key1\", \"objectType\": \"Office\" },\n \"linkTypeApiNameAtoB\": \"test\",\n \"linkTypeApiNameBtoA\": \"test\",\n \"bSideObject\": { \"primaryKey\": \"key2\", \"objectType\": \"Employee\" },\n \"type\": \"addLink\",\n }, {\n \"objectType\": \"Developer\",\n \"primaryKey\": \"PalantirDev\",\n \"type\": \"deleteObject\",\n }, {\n \"aSideObject\": { \"primaryKey\": \"key1\", \"objectType\": \"Office\" },\n \"linkTypeApiNameAtoB\": \"test\",\n \"linkTypeApiNameBtoA\": \"test\",\n \"bSideObject\": { \"primaryKey\": \"key2\", \"objectType\": \"Employee\" },\n \"type\": \"deleteLink\",\n }],\n deletedLinksCount: 0,\n deletedObjectsCount: 1,\n addedObjectCount: 1,\n modifiedObjectsCount: 1,\n addedLinksCount: 1,\n },\n };\n\n const batchActionResponse: BatchApplyActionResponseV2 = {\n edits: {\n type: \"edits\",\n edits: [{\n \"objectType\": \"Developer\",\n \"primaryKey\": \"PalantirDev\",\n \"type\": \"addObject\",\n }, {\n \"objectType\": \"Contractor\",\n \"primaryKey\": \"Contractor1\",\n \"type\": \"modifyObject\",\n }, {\n \"aSideObject\": { \"primaryKey\": \"key1\", \"objectType\": \"Office\" },\n \"linkTypeApiNameAtoB\": \"test\",\n \"linkTypeApiNameBtoA\": \"test\",\n \"bSideObject\": { \"primaryKey\": \"key2\", \"objectType\": \"Employee\" },\n \"type\": \"addLink\",\n }],\n deletedLinksCount: 0,\n deletedObjectsCount: 0,\n addedObjectCount: 1,\n modifiedObjectsCount: 1,\n addedLinksCount: 1,\n },\n };\n\n it(\"Correctly unpacks edits and editedObjectTypes\", () => {\n const remappedActionResponse = remapActionResponse(actionResponse);\n const remappedBatchActionResponse = remapActionResponse(\n batchActionResponse,\n );\n expect(remappedActionResponse).toMatchInlineSnapshot(`\n {\n \"addedLinks\": [\n {\n \"aSideObject\": {\n \"objectType\": \"Office\",\n \"primaryKey\": \"key1\",\n },\n \"bSideObject\": {\n \"objectType\": \"Employee\",\n \"primaryKey\": \"key2\",\n },\n \"linkTypeApiNameAtoB\": \"test\",\n \"linkTypeApiNameBtoA\": \"test\",\n },\n ],\n \"addedObjects\": [\n {\n \"objectType\": \"Developer\",\n \"primaryKey\": \"PalantirDev\",\n },\n ],\n \"deletedLinks\": [\n {\n \"aSideObject\": {\n \"objectType\": \"Office\",\n \"primaryKey\": \"key1\",\n },\n \"bSideObject\": {\n \"objectType\": \"Employee\",\n \"primaryKey\": \"key2\",\n },\n \"linkTypeApiNameAtoB\": \"test\",\n \"linkTypeApiNameBtoA\": \"test\",\n },\n ],\n \"deletedLinksCount\": 0,\n \"deletedObjects\": [\n {\n \"objectType\": \"Developer\",\n \"primaryKey\": \"PalantirDev\",\n },\n ],\n \"deletedObjectsCount\": 1,\n \"editedObjectTypes\": [\n \"Developer\",\n \"Contractor\",\n \"Office\",\n \"Employee\",\n ],\n \"modifiedObjects\": [\n {\n \"objectType\": \"Contractor\",\n \"primaryKey\": \"Contractor1\",\n },\n ],\n \"type\": \"edits\",\n }\n `);\n expect(remappedBatchActionResponse).toMatchInlineSnapshot(`\n {\n \"addedLinks\": [\n {\n \"aSideObject\": {\n \"objectType\": \"Office\",\n \"primaryKey\": \"key1\",\n },\n \"bSideObject\": {\n \"objectType\": \"Employee\",\n \"primaryKey\": \"key2\",\n },\n \"linkTypeApiNameAtoB\": \"test\",\n \"linkTypeApiNameBtoA\": \"test\",\n },\n ],\n \"addedObjects\": [\n {\n \"objectType\": \"Developer\",\n \"primaryKey\": \"PalantirDev\",\n },\n ],\n \"deletedLinks\": [],\n \"deletedLinksCount\": 0,\n \"deletedObjects\": [],\n \"deletedObjectsCount\": 0,\n \"editedObjectTypes\": [\n \"Developer\",\n \"Contractor\",\n \"Office\",\n \"Employee\",\n ],\n \"modifiedObjects\": [\n {\n \"objectType\": \"Contractor\",\n \"primaryKey\": \"Contractor1\",\n },\n ],\n \"type\": \"edits\",\n }\n `);\n });\n it(\"actions are enumerable\", async () => {\n const actions = Object.keys($Actions);\n expect(actions).toStrictEqual([\n \"actionTakesAttachment\",\n \"actionTakesMedia\",\n \"actionTakesObjectSet\",\n \"createFooInterface\",\n \"createOffice\",\n \"createOfficeAndEmployee\",\n \"createStructPerson\",\n \"deleteBarInterface\",\n \"deleteFooInterface\",\n \"moveOffice\",\n \"promoteEmployee\",\n \"promoteEmployeeObject\",\n ]);\n });\n});\n\nfunction wrapper<R>(fn: () => R): typeof fn {\n return () => fn();\n}\n\nasync function example() {\n await wrapper(async () => Promise.resolve(\"hi\"))();\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"actions.test.js","names":["$Actions","actionTakesAttachment","actionTakesMedia","createFooInterface","createOffice","createStructPerson","deleteBarInterface","deleteFooInterface","Employee","moveOffice","LegacyFauxFoundry","MockOntologiesV2","startNodeApiServer","stubData","beforeAll","describe","expect","expectTypeOf","it","vi","createClient","createAttachmentUpload","ActionValidationError","remapActionResponse","each","baseUrl","client","apiServer","testSetup","close","result","applyAction","officeId","address","capacity","$returnEdits","toEqualTypeOf","toMatchObject","undefinedResult","toBeUndefined","batchApplyAction","clientCreateOfficeMock","fn","newAddress","newCapacity","$validateOnly","fail","e","toBeInstanceOf","validation","toMatchTypeOf","name","city","state","zipcode","boundary","use","Actions","apply","submissionCriteria","parameters","attachment","blob","Blob","JSON","stringify","fileAttachment","Object","assign","result2","media_reference","actionRequestMediaUpload","deletedInterface","$objectType","$primaryKey","createdInterface","apiName","actionResponse","edits","type","deletedLinksCount","deletedObjectsCount","addedObjectCount","modifiedObjectsCount","addedLinksCount","batchActionResponse","remappedActionResponse","remappedBatchActionResponse","toMatchInlineSnapshot","actions","keys","toStrictEqual","wrapper","example","Promise","resolve"],"sources":["actions.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 type {\n ActionEditResponse,\n ActionValidationResponse,\n AttachmentUpload,\n MediaReference,\n} from \"@osdk/api\";\nimport {\n $Actions,\n actionTakesAttachment,\n actionTakesMedia,\n createFooInterface,\n createOffice,\n createStructPerson,\n deleteBarInterface,\n deleteFooInterface,\n Employee,\n moveOffice,\n} from \"@osdk/client.test.ontology\";\nimport type {\n BatchApplyActionResponseV2,\n SyncApplyActionResponseV2,\n} from \"@osdk/foundry.ontologies\";\nimport type { SetupServer } from \"@osdk/shared.test\";\nimport {\n LegacyFauxFoundry,\n MockOntologiesV2,\n startNodeApiServer,\n stubData,\n} from \"@osdk/shared.test\";\nimport { beforeAll, describe, expect, expectTypeOf, it, vi } from \"vitest\";\nimport type { Client } from \"../Client.js\";\nimport { createClient } from \"../createClient.js\";\nimport { createAttachmentUpload } from \"../object/AttachmentUpload.js\";\nimport { ActionValidationError } from \"./ActionValidationError.js\";\nimport { remapActionResponse } from \"./applyAction.js\";\n\ndescribe.each([\n \"https://stack.palantir.com\",\n \"https://stack.palantirCustom.com/foo/first/someStuff\",\n])(\"actions for %s\", (baseUrl) => {\n let client: Client;\n let apiServer: SetupServer;\n\n beforeAll(() => {\n const testSetup = startNodeApiServer(\n new LegacyFauxFoundry(baseUrl),\n createClient,\n );\n ({ client, apiServer } = testSetup);\n\n return () => {\n apiServer.close();\n };\n });\n\n it(\"conditionally returns the edits\", async () => {\n const result = await client(createOffice).applyAction({\n officeId: \"NYC\",\n address: \"123 Main Street\",\n capacity: 100,\n }, { $returnEdits: true });\n\n expectTypeOf<typeof result>().toEqualTypeOf<ActionEditResponse>();\n expect(result).toMatchObject(\n {\n \"addedLinks\": [],\n \"addedObjects\": [\n {\n \"objectType\": \"Office\",\n \"primaryKey\": \"NYC\",\n },\n ],\n \"deletedLinks\": [],\n \"deletedLinksCount\": 0,\n \"deletedObjects\": [],\n \"deletedObjectsCount\": 0,\n \"editedObjectTypes\": [\n \"Office\",\n ],\n \"modifiedObjects\": [],\n \"type\": \"edits\",\n },\n );\n\n // eslint-disable-next-line @typescript-eslint/no-confusing-void-expression\n const undefinedResult = await client(createOffice).applyAction({\n officeId: \"NYC\",\n address: \"123 Main Street\",\n capacity: 100,\n });\n\n expectTypeOf<typeof undefinedResult>().toEqualTypeOf<undefined>();\n expect(undefinedResult).toBeUndefined();\n\n const clientCreateOffice = client(createOffice).batchApplyAction;\n const clientCreateOfficeMock: typeof clientCreateOffice = vi.fn();\n void clientCreateOfficeMock([{\n officeId: \"NYC\",\n address: \"123 Main Street\",\n capacity: 100,\n }], { $returnEdits: true });\n });\n\n it(\"returns validation directly on validateOnly mode\", async () => {\n const result = await client(moveOffice).applyAction({\n officeId: \"SEA\",\n newAddress: \"456 Pike Place\",\n // intentionally using a string to trigger validation errors\n newCapacity: \"40\" as unknown as number,\n }, {\n $validateOnly: true,\n });\n expectTypeOf<typeof result>().toEqualTypeOf<ActionValidationResponse>();\n\n expect(result).toMatchObject(\n {\n \"parameters\": {\n \"newCapacity\": {\n \"evaluatedConstraints\": [],\n \"required\": false,\n \"result\": \"INVALID\",\n },\n },\n \"result\": \"INVALID\",\n \"submissionCriteria\": [],\n },\n );\n });\n\n it(\"returns validation directly on validateOnly mode, with custom entry point in URL\", async () => {\n const result = await client(moveOffice).applyAction({\n officeId: \"SEA\",\n newAddress: \"456 Pike Place\",\n // intentionally using a string to trigger validation failure\n newCapacity: \"40\" as unknown as number,\n }, {\n $validateOnly: true,\n });\n expectTypeOf<typeof result>().toEqualTypeOf<ActionValidationResponse>();\n\n expect(result).toMatchObject(\n {\n \"parameters\": {\n \"newCapacity\": {\n \"evaluatedConstraints\": [],\n \"required\": false,\n \"result\": \"INVALID\",\n },\n },\n \"result\": \"INVALID\",\n \"submissionCriteria\": [],\n },\n );\n });\n\n it(\"throws on validation errors\", async () => {\n try {\n const result = await client(moveOffice).applyAction({\n officeId: \"SEA\",\n newAddress: \"456 Pike Place\",\n // intentionally using a string to trigger validation failure\n newCapacity: \"40\" as unknown as number,\n }, {\n $returnEdits: true,\n });\n expect.fail(\"Should not reach here\");\n } catch (e) {\n expect(e).toBeInstanceOf(ActionValidationError);\n expect((e as ActionValidationError).validation).toMatchObject(\n {\n \"parameters\": {\n \"newCapacity\": {\n \"evaluatedConstraints\": [],\n \"required\": false,\n \"result\": \"INVALID\",\n },\n },\n \"result\": \"INVALID\",\n \"submissionCriteria\": [],\n },\n );\n }\n });\n\n it(\"Accepts structs\", async () => {\n const clientBoundActionTakesStruct = client(createStructPerson).applyAction;\n type InferredParamType = Parameters<\n typeof clientBoundActionTakesStruct\n >[0];\n expectTypeOf<\n {\n name: string;\n address: { city: string; state: string; zipcode: number };\n }\n >()\n .toMatchTypeOf<\n InferredParamType\n >();\n\n const result = await client(createStructPerson).applyAction({\n name: \"testMan\",\n address: { city: \"NYC\", state: \"NY\", zipcode: 12345 },\n });\n expectTypeOf<typeof result>().toEqualTypeOf<undefined>();\n expect(result).toBeUndefined();\n });\n\n it(\"Accepts attachments\", async () => {\n const clientBoundActionTakesAttachment = client(\n actionTakesAttachment,\n ).applyAction;\n\n type InferredParamType = Parameters<\n typeof clientBoundActionTakesAttachment\n >[0];\n\n expectTypeOf<{ attachment: string | AttachmentUpload }>().toMatchTypeOf<\n InferredParamType\n >();\n\n const clientBoundBatchActionTakesAttachment = client(\n actionTakesAttachment,\n ).batchApplyAction;\n type InferredBatchParamType = Parameters<\n typeof clientBoundBatchActionTakesAttachment\n >[0];\n\n expectTypeOf<{\n attachment: string | AttachmentUpload;\n }[]>().toMatchTypeOf<InferredBatchParamType>();\n\n await apiServer.boundary(async () => {\n apiServer.use(MockOntologiesV2.Actions.apply(baseUrl, (info) => {\n return {\n validation: {\n result: \"VALID\",\n submissionCriteria: [],\n parameters: {},\n },\n };\n }));\n\n // eslint-disable-next-line @typescript-eslint/no-confusing-void-expression\n const result = await client(actionTakesAttachment).applyAction({\n attachment: \"ri.some.rid\",\n });\n\n expectTypeOf<typeof result>().toEqualTypeOf<undefined>();\n expect(result).toBeUndefined();\n })();\n });\n\n it(\"Accepts attachment uploads\", async () => {\n const clientBoundActionTakesAttachment = client(\n actionTakesAttachment,\n ).applyAction;\n type InferredParamType = Parameters<\n typeof clientBoundActionTakesAttachment\n >[0];\n const clientBoundBatchActionTakesAttachment = client(\n actionTakesAttachment,\n ).batchApplyAction;\n type InferredBatchParamType = Parameters<\n typeof clientBoundBatchActionTakesAttachment\n >[0];\n\n expectTypeOf<\n {\n attachment:\n | string\n | AttachmentUpload\n | Blob & { readonly name: string };\n }\n >().toMatchTypeOf<\n InferredParamType\n >();\n expectTypeOf<\n {\n attachment:\n | string\n | AttachmentUpload\n | Blob & { readonly name: string };\n }[]\n >().toMatchTypeOf<\n InferredBatchParamType\n >();\n\n const blob = new Blob([JSON.stringify({ name: \"Hello World\" }, null, 2)]);\n\n const attachment = createAttachmentUpload(blob, \"file1.txt\");\n\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 fileAttachment = Object.assign(blob, { name: \"file1.txt\" });\n\n // eslint-disable-next-line @typescript-eslint/no-confusing-void-expression\n const result = await client(actionTakesAttachment).applyAction({\n attachment,\n });\n\n // eslint-disable-next-line @typescript-eslint/no-confusing-void-expression\n const result2 = await client(actionTakesAttachment).applyAction({\n attachment: fileAttachment,\n });\n\n expectTypeOf<typeof result>().toEqualTypeOf<undefined>();\n expect(result).toBeUndefined();\n\n expectTypeOf<typeof result2>().toEqualTypeOf<undefined>();\n expect(result2).toBeUndefined();\n });\n\n it(\"Accepts media reference\", async () => {\n const clientBoundActionTakesMedia = client(\n actionTakesMedia,\n ).applyAction;\n type InferredParamType = Parameters<\n typeof clientBoundActionTakesMedia\n >[0];\n\n expectTypeOf<\n {\n media_reference: MediaReference;\n }\n >().toMatchTypeOf<\n InferredParamType\n >();\n\n const result = await client(actionTakesMedia).applyAction({\n media_reference:\n stubData.actionRequestMediaUpload.parameters.media_reference,\n });\n\n expectTypeOf<typeof result>().toEqualTypeOf<undefined>();\n expect(result).toBeUndefined();\n });\n\n it(\"Accepts interfaces\", async () => {\n const clientBoundTakesInterface = client(\n deleteFooInterface,\n ).applyAction;\n\n type InferredParamType = Parameters<\n typeof clientBoundTakesInterface\n >[0];\n\n expectTypeOf<\n {\n deletedInterface: {\n $objectType: \"Employee\" | \"Person\";\n $primaryKey: string | number;\n };\n }\n >().toMatchTypeOf<\n InferredParamType\n >();\n\n const clientBoundBatchActionTakesInterface = client(\n deleteFooInterface,\n ).batchApplyAction;\n type InferredBatchParamType = Parameters<\n typeof clientBoundBatchActionTakesInterface\n >[0];\n\n expectTypeOf<{\n deletedInterface: {\n $objectType: \"Employee\" | \"Person\";\n $primaryKey: string | number;\n };\n }[]>().toMatchTypeOf<InferredBatchParamType>();\n\n const result = await client(deleteFooInterface).applyAction({\n deletedInterface: {\n $objectType: \"Employee\",\n $primaryKey: 50030,\n },\n });\n\n expectTypeOf<typeof result>().toEqualTypeOf<undefined>();\n expect(result).toBeUndefined();\n });\n it(\"Accepts interfaces if implementing object types unknown\", async () => {\n const clientBoundTakesInterface = client(\n deleteBarInterface,\n ).applyAction;\n\n type InferredParamType = Parameters<\n typeof clientBoundTakesInterface\n >[0];\n\n expectTypeOf<\n {\n deletedInterface: {\n $objectType: string;\n $primaryKey: string | number;\n };\n }\n >().toMatchTypeOf<\n InferredParamType\n >();\n\n const clientBoundBatchActionTakesInterface = client(\n deleteBarInterface,\n ).batchApplyAction;\n type InferredBatchParamType = Parameters<\n typeof clientBoundBatchActionTakesInterface\n >[0];\n\n expectTypeOf<{\n deletedInterface: {\n $objectType: string;\n $primaryKey: string | number;\n };\n }[]>().toMatchTypeOf<InferredBatchParamType>();\n });\n it(\"Accepts object type refs\", async () => {\n const clientBoundTakesObjectType = client(\n createFooInterface,\n ).applyAction;\n\n type InferredParamType = Parameters<\n typeof clientBoundTakesObjectType\n >[0];\n\n expectTypeOf<\n {\n createdInterface: string;\n }\n >().toMatchTypeOf<\n InferredParamType\n >();\n\n const clientBoundBatchActionTakesObjectType = client(\n createFooInterface,\n ).batchApplyAction;\n type InferredBatchParamType = Parameters<\n typeof clientBoundBatchActionTakesObjectType\n >[0];\n\n expectTypeOf<{\n createdInterface: string;\n }[]>().toMatchTypeOf<InferredBatchParamType>();\n\n const result = await client(createFooInterface).applyAction({\n createdInterface: Employee.apiName,\n });\n\n expectTypeOf<typeof result>().toEqualTypeOf<undefined>();\n expect(result).toBeUndefined();\n });\n it(\"conditionally returns edits in batch mode\", async () => {\n const result = await client(moveOffice).batchApplyAction([\n {\n officeId: \"SEA\",\n newAddress: \"456 Good Place\",\n newCapacity: 40,\n },\n {\n officeId: \"NYC\",\n newAddress: \"123 Main Street\",\n newCapacity: 80,\n },\n ], { $returnEdits: true });\n\n expect(result).toMatchObject(\n {\n \"addedLinks\": [],\n \"addedObjects\": [],\n \"deletedLinks\": [],\n \"deletedLinksCount\": 0,\n \"deletedObjects\": [],\n \"deletedObjectsCount\": 0,\n \"editedObjectTypes\": [\n \"Office\",\n ],\n \"modifiedObjects\": [\n {\n \"objectType\": \"Office\",\n \"primaryKey\": \"SEA\",\n },\n {\n \"objectType\": \"Office\",\n \"primaryKey\": \"NYC\",\n },\n ],\n \"type\": \"edits\",\n },\n );\n });\n});\n\ndescribe(\"ActionResponse remapping\", () => {\n const actionResponse: SyncApplyActionResponseV2 = {\n edits: {\n type: \"edits\",\n edits: [{\n \"objectType\": \"Developer\",\n \"primaryKey\": \"PalantirDev\",\n \"type\": \"addObject\",\n }, {\n \"objectType\": \"Contractor\",\n \"primaryKey\": \"Contractor1\",\n \"type\": \"modifyObject\",\n }, {\n \"aSideObject\": { \"primaryKey\": \"key1\", \"objectType\": \"Office\" },\n \"linkTypeApiNameAtoB\": \"test\",\n \"linkTypeApiNameBtoA\": \"test\",\n \"bSideObject\": { \"primaryKey\": \"key2\", \"objectType\": \"Employee\" },\n \"type\": \"addLink\",\n }, {\n \"objectType\": \"Developer\",\n \"primaryKey\": \"PalantirDev\",\n \"type\": \"deleteObject\",\n }, {\n \"aSideObject\": { \"primaryKey\": \"key1\", \"objectType\": \"Office\" },\n \"linkTypeApiNameAtoB\": \"test\",\n \"linkTypeApiNameBtoA\": \"test\",\n \"bSideObject\": { \"primaryKey\": \"key2\", \"objectType\": \"Employee\" },\n \"type\": \"deleteLink\",\n }],\n deletedLinksCount: 0,\n deletedObjectsCount: 1,\n addedObjectCount: 1,\n modifiedObjectsCount: 1,\n addedLinksCount: 1,\n },\n };\n\n const batchActionResponse: BatchApplyActionResponseV2 = {\n edits: {\n type: \"edits\",\n edits: [{\n \"objectType\": \"Developer\",\n \"primaryKey\": \"PalantirDev\",\n \"type\": \"addObject\",\n }, {\n \"objectType\": \"Contractor\",\n \"primaryKey\": \"Contractor1\",\n \"type\": \"modifyObject\",\n }, {\n \"aSideObject\": { \"primaryKey\": \"key1\", \"objectType\": \"Office\" },\n \"linkTypeApiNameAtoB\": \"test\",\n \"linkTypeApiNameBtoA\": \"test\",\n \"bSideObject\": { \"primaryKey\": \"key2\", \"objectType\": \"Employee\" },\n \"type\": \"addLink\",\n }],\n deletedLinksCount: 0,\n deletedObjectsCount: 0,\n addedObjectCount: 1,\n modifiedObjectsCount: 1,\n addedLinksCount: 1,\n },\n };\n\n it(\"Correctly unpacks edits and editedObjectTypes\", () => {\n const remappedActionResponse = remapActionResponse(actionResponse);\n const remappedBatchActionResponse = remapActionResponse(\n batchActionResponse,\n );\n expect(remappedActionResponse).toMatchInlineSnapshot(`\n {\n \"addedLinks\": [\n {\n \"aSideObject\": {\n \"objectType\": \"Office\",\n \"primaryKey\": \"key1\",\n },\n \"bSideObject\": {\n \"objectType\": \"Employee\",\n \"primaryKey\": \"key2\",\n },\n \"linkTypeApiNameAtoB\": \"test\",\n \"linkTypeApiNameBtoA\": \"test\",\n },\n ],\n \"addedObjects\": [\n {\n \"objectType\": \"Developer\",\n \"primaryKey\": \"PalantirDev\",\n },\n ],\n \"deletedLinks\": [\n {\n \"aSideObject\": {\n \"objectType\": \"Office\",\n \"primaryKey\": \"key1\",\n },\n \"bSideObject\": {\n \"objectType\": \"Employee\",\n \"primaryKey\": \"key2\",\n },\n \"linkTypeApiNameAtoB\": \"test\",\n \"linkTypeApiNameBtoA\": \"test\",\n },\n ],\n \"deletedLinksCount\": 0,\n \"deletedObjects\": [\n {\n \"objectType\": \"Developer\",\n \"primaryKey\": \"PalantirDev\",\n },\n ],\n \"deletedObjectsCount\": 1,\n \"editedObjectTypes\": [\n \"Developer\",\n \"Contractor\",\n \"Office\",\n \"Employee\",\n ],\n \"modifiedObjects\": [\n {\n \"objectType\": \"Contractor\",\n \"primaryKey\": \"Contractor1\",\n },\n ],\n \"type\": \"edits\",\n }\n `);\n expect(remappedBatchActionResponse).toMatchInlineSnapshot(`\n {\n \"addedLinks\": [\n {\n \"aSideObject\": {\n \"objectType\": \"Office\",\n \"primaryKey\": \"key1\",\n },\n \"bSideObject\": {\n \"objectType\": \"Employee\",\n \"primaryKey\": \"key2\",\n },\n \"linkTypeApiNameAtoB\": \"test\",\n \"linkTypeApiNameBtoA\": \"test\",\n },\n ],\n \"addedObjects\": [\n {\n \"objectType\": \"Developer\",\n \"primaryKey\": \"PalantirDev\",\n },\n ],\n \"deletedLinks\": [],\n \"deletedLinksCount\": 0,\n \"deletedObjects\": [],\n \"deletedObjectsCount\": 0,\n \"editedObjectTypes\": [\n \"Developer\",\n \"Contractor\",\n \"Office\",\n \"Employee\",\n ],\n \"modifiedObjects\": [\n {\n \"objectType\": \"Contractor\",\n \"primaryKey\": \"Contractor1\",\n },\n ],\n \"type\": \"edits\",\n }\n `);\n });\n it(\"actions are enumerable\", async () => {\n const actions = Object.keys($Actions);\n expect(actions).toStrictEqual([\n \"actionTakesAttachment\",\n \"actionTakesMedia\",\n \"actionTakesObjectSet\",\n \"createFooInterface\",\n \"createOffice\",\n \"createOfficeAndEmployee\",\n \"createStructPerson\",\n \"deleteBarInterface\",\n \"deleteFooInterface\",\n \"editTodo\",\n \"moveOffice\",\n \"promoteEmployee\",\n \"promoteEmployeeObject\",\n ]);\n });\n});\n\nfunction wrapper<R>(fn: () => R): typeof fn {\n return () => fn();\n}\n\nasync function example() {\n await wrapper(async () => Promise.resolve(\"hi\"))();\n}\n"],"mappings":"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","ignoreList":[]}
@@ -20,6 +20,6 @@ export { ActionValidationError } from "./actions/ActionValidationError.js";
20
20
  export { createClient } from "./createClient.js";
21
21
  export { createPlatformClient } from "./createPlatformClient.js";
22
22
  export { createAttachmentUpload } from "./object/AttachmentUpload.js";
23
- export { createObjectSpecifierFromPrimaryKey } from "./object/createObjectSpecifierFromPrimaryKey.js";
23
+ export { createObjectSpecifierFromPrimaryKey } from "./util/objectSpecifierUtils.js";
24
24
  export { extractDate, extractDateInLocalTime, extractDateInUTC } from "./util/datetimeConverters.js";
25
25
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["isOk","PalantirApiError","ActionValidationError","createClient","createPlatformClient","createAttachmentUpload","createObjectSpecifierFromPrimaryKey","extractDate","extractDateInLocalTime","extractDateInUTC"],"sources":["index.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\nexport type {\n ActionDefinition,\n ActionEditResponse,\n ActionMetadata,\n ActionParam,\n ActionReturnTypeForOptions,\n ActionValidationResponse,\n ApplyActionOptions,\n ApplyBatchActionOptions,\n InterfaceDefinition,\n ObjectMetadata,\n ObjectSet,\n ObjectSpecifier,\n ObjectTypeDefinition,\n Osdk,\n OsdkObject,\n PageResult,\n PropertyDef,\n PropertyKeys,\n PropertyValueWireToClient,\n QueryDefinition,\n QueryParam,\n QueryResult,\n Result,\n SingleLinkAccessor,\n VersionBound,\n WhereClause,\n} from \"@osdk/api\";\nexport { isOk } from \"@osdk/api\";\nexport { PalantirApiError } from \"@osdk/shared.net.errors\";\n\nexport { ActionValidationError } from \"./actions/ActionValidationError.js\";\nexport type { Client } from \"./Client.js\";\nexport { createClient } from \"./createClient.js\";\nexport { createPlatformClient } from \"./createPlatformClient.js\";\nexport type { PlatformClient } from \"./createPlatformClient.js\";\nexport type { Logger } from \"./logger/Logger.js\";\nexport { createAttachmentUpload } from \"./object/AttachmentUpload.js\";\nexport { createObjectSpecifierFromPrimaryKey } from \"./object/createObjectSpecifierFromPrimaryKey.js\";\nexport type { ResultOrError } from \"./ResultOrError.js\";\n\nexport {\n extractDate,\n extractDateInLocalTime,\n extractDateInUTC,\n} from \"./util/datetimeConverters.js\";\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AA8BA,SAASA,IAAI,QAAQ,WAAW;AAChC,SAASC,gBAAgB,QAAQ,yBAAyB;AAE1D,SAASC,qBAAqB,QAAQ,oCAAoC;AAE1E,SAASC,YAAY,QAAQ,mBAAmB;AAChD,SAASC,oBAAoB,QAAQ,2BAA2B;AAGhE,SAASC,sBAAsB,QAAQ,8BAA8B;AACrE,SAASC,mCAAmC,QAAQ,iDAAiD;AAGrG,SACEC,WAAW,EACXC,sBAAsB,EACtBC,gBAAgB,QACX,8BAA8B","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["isOk","PalantirApiError","ActionValidationError","createClient","createPlatformClient","createAttachmentUpload","createObjectSpecifierFromPrimaryKey","extractDate","extractDateInLocalTime","extractDateInUTC"],"sources":["index.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\nexport type {\n ActionDefinition,\n ActionEditResponse,\n ActionMetadata,\n ActionParam,\n ActionReturnTypeForOptions,\n ActionValidationResponse,\n ApplyActionOptions,\n ApplyBatchActionOptions,\n InterfaceDefinition,\n ObjectMetadata,\n ObjectSet,\n ObjectSpecifier,\n ObjectTypeDefinition,\n Osdk,\n OsdkObject,\n PageResult,\n PropertyDef,\n PropertyKeys,\n PropertyValueWireToClient,\n QueryDefinition,\n QueryParam,\n QueryResult,\n Result,\n SingleLinkAccessor,\n VersionBound,\n WhereClause,\n} from \"@osdk/api\";\nexport { isOk } from \"@osdk/api\";\nexport { PalantirApiError } from \"@osdk/shared.net.errors\";\n\nexport { ActionValidationError } from \"./actions/ActionValidationError.js\";\nexport type { Client } from \"./Client.js\";\nexport { createClient } from \"./createClient.js\";\nexport { createPlatformClient } from \"./createPlatformClient.js\";\nexport type { PlatformClient } from \"./createPlatformClient.js\";\nexport type { Logger } from \"./logger/Logger.js\";\nexport { createAttachmentUpload } from \"./object/AttachmentUpload.js\";\nexport type { ResultOrError } from \"./ResultOrError.js\";\nexport {\n createObjectSpecifierFromPrimaryKey,\n} from \"./util/objectSpecifierUtils.js\";\n\nexport {\n extractDate,\n extractDateInLocalTime,\n extractDateInUTC,\n} from \"./util/datetimeConverters.js\";\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AA8BA,SAASA,IAAI,QAAQ,WAAW;AAChC,SAASC,gBAAgB,QAAQ,yBAAyB;AAE1D,SAASC,qBAAqB,QAAQ,oCAAoC;AAE1E,SAASC,YAAY,QAAQ,mBAAmB;AAChD,SAASC,oBAAoB,QAAQ,2BAA2B;AAGhE,SAASC,sBAAsB,QAAQ,8BAA8B;AAErE,SACEC,mCAAmC,QAC9B,gCAAgC;AAEvC,SACEC,WAAW,EACXC,sBAAsB,EACtBC,gBAAgB,QACX,8BAA8B","ignoreList":[]}
@@ -0,0 +1,59 @@
1
+ /*
2
+ * Copyright 2025 Palantir Technologies, Inc. All rights reserved.
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+
17
+ import { Chalk } from "chalk";
18
+ import { vi } from "vitest";
19
+ import { BaseLogger } from "./BaseLogger.js";
20
+ const chalk = new Chalk(); // new Chalk({ level: 3 });
21
+
22
+ const colors = {
23
+ debug: [chalk.cyan, chalk.bgCyan],
24
+ info: [chalk.green, chalk.bgGreen],
25
+ trace: [chalk.gray, chalk.bgGray],
26
+ error: [chalk.red, chalk.bgRed],
27
+ warn: [chalk.yellow, chalk.bgYellow],
28
+ fatal: [chalk.redBright, chalk.bgRedBright]
29
+ };
30
+
31
+ /**
32
+ * A logger suitable for using in unit tests.
33
+ * - It uses chalk for colors (Node and browser console.log supports)
34
+ * - Does not rely on async behavior of `pino`.
35
+ */
36
+ export class TestLogger extends BaseLogger {
37
+ constructor(bindings = {}, options = {}) {
38
+ super(bindings, {
39
+ ...options,
40
+ level: options.level ?? "error"
41
+ }, TestLogger);
42
+ for (const k of ["trace", "debug", "info", "warn", "error", "fatal"]) {
43
+ this[k] = this.#createLogMethod(k, bindings, options);
44
+ }
45
+ }
46
+ #createLogMethod(name, bindings, options) {
47
+ const msgs = [colors[name][1](name)];
48
+ if (options?.msgPrefix) {
49
+ msgs.push(colors[name][0](options.msgPrefix));
50
+ }
51
+ if (typeof bindings === "object" && "methodName" in bindings) {
52
+ msgs.push(chalk.magenta(`.${bindings.methodName}()`));
53
+ }
54
+
55
+ // eslint-disable-next-line no-console
56
+ return vi.fn(console[name === "fatal" ? "error" : name].bind(console, msgs.join(" ")));
57
+ }
58
+ }
59
+ //# sourceMappingURL=TestLogger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TestLogger.js","names":["Chalk","vi","BaseLogger","chalk","colors","debug","cyan","bgCyan","info","green","bgGreen","trace","gray","bgGray","error","red","bgRed","warn","yellow","bgYellow","fatal","redBright","bgRedBright","TestLogger","constructor","bindings","options","level","k","createLogMethod","#createLogMethod","name","msgs","msgPrefix","push","magenta","methodName","fn","console","bind","join"],"sources":["TestLogger.ts"],"sourcesContent":["/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Chalk } from \"chalk\";\nimport { vi } from \"vitest\";\nimport { BaseLogger } from \"./BaseLogger.js\";\nimport type { LogFn, Logger } from \"./Logger.js\";\n\nconst chalk = new Chalk(); // new Chalk({ level: 3 });\n\nconst colors = {\n debug: [chalk.cyan, chalk.bgCyan],\n info: [chalk.green, chalk.bgGreen],\n trace: [chalk.gray, chalk.bgGray],\n error: [chalk.red, chalk.bgRed],\n warn: [chalk.yellow, chalk.bgYellow],\n fatal: [chalk.redBright, chalk.bgRedBright],\n} as const;\n\n/**\n * A logger suitable for using in unit tests.\n * - It uses chalk for colors (Node and browser console.log supports)\n * - Does not rely on async behavior of `pino`.\n */\nexport class TestLogger extends BaseLogger implements Logger {\n constructor(\n bindings: Record<string, any> = {},\n options: { level?: string; msgPrefix?: string } = {},\n ) {\n super(\n bindings,\n { ...options, level: options.level ?? \"error\" },\n TestLogger,\n );\n\n for (\n const k of [\"trace\", \"debug\", \"info\", \"warn\", \"error\", \"fatal\"] as const\n ) {\n this[k] = this.#createLogMethod(k, bindings, options);\n }\n }\n\n #createLogMethod(\n name: \"trace\" | \"debug\" | \"info\" | \"warn\" | \"error\" | \"fatal\",\n bindings: Record<string, any>,\n options: { level?: string; msgPrefix?: string },\n ): LogFn {\n const msgs: string[] = [colors[name][1](name)];\n\n if (options?.msgPrefix) {\n msgs.push(colors[name][0](options.msgPrefix));\n }\n\n if (typeof bindings === \"object\" && \"methodName\" in bindings) {\n msgs.push(chalk.magenta(`.${bindings.methodName}()`));\n }\n\n // eslint-disable-next-line no-console\n return vi.fn<LogFn>(console[name === \"fatal\" ? \"error\" : name].bind(\n console,\n msgs.join(\" \"),\n )) as LogFn;\n }\n}\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAASA,KAAK,QAAQ,OAAO;AAC7B,SAASC,EAAE,QAAQ,QAAQ;AAC3B,SAASC,UAAU,QAAQ,iBAAiB;AAG5C,MAAMC,KAAK,GAAG,IAAIH,KAAK,CAAC,CAAC,CAAC,CAAC;;AAE3B,MAAMI,MAAM,GAAG;EACbC,KAAK,EAAE,CAACF,KAAK,CAACG,IAAI,EAAEH,KAAK,CAACI,MAAM,CAAC;EACjCC,IAAI,EAAE,CAACL,KAAK,CAACM,KAAK,EAAEN,KAAK,CAACO,OAAO,CAAC;EAClCC,KAAK,EAAE,CAACR,KAAK,CAACS,IAAI,EAAET,KAAK,CAACU,MAAM,CAAC;EACjCC,KAAK,EAAE,CAACX,KAAK,CAACY,GAAG,EAAEZ,KAAK,CAACa,KAAK,CAAC;EAC/BC,IAAI,EAAE,CAACd,KAAK,CAACe,MAAM,EAAEf,KAAK,CAACgB,QAAQ,CAAC;EACpCC,KAAK,EAAE,CAACjB,KAAK,CAACkB,SAAS,EAAElB,KAAK,CAACmB,WAAW;AAC5C,CAAU;;AAEV;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMC,UAAU,SAASrB,UAAU,CAAmB;EAC3DsB,WAAWA,CACTC,QAA6B,GAAG,CAAC,CAAC,EAClCC,OAA+C,GAAG,CAAC,CAAC,EACpD;IACA,KAAK,CACHD,QAAQ,EACR;MAAE,GAAGC,OAAO;MAAEC,KAAK,EAAED,OAAO,CAACC,KAAK,IAAI;IAAQ,CAAC,EAC/CJ,UACF,CAAC;IAED,KACE,MAAMK,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,EAC/D;MACA,IAAI,CAACA,CAAC,CAAC,GAAG,IAAI,CAAC,CAACC,eAAe,CAACD,CAAC,EAAEH,QAAQ,EAAEC,OAAO,CAAC;IACvD;EACF;EAEA,CAACG,eAAeC,CACdC,IAA6D,EAC7DN,QAA6B,EAC7BC,OAA+C,EACxC;IACP,MAAMM,IAAc,GAAG,CAAC5B,MAAM,CAAC2B,IAAI,CAAC,CAAC,CAAC,CAAC,CAACA,IAAI,CAAC,CAAC;IAE9C,IAAIL,OAAO,EAAEO,SAAS,EAAE;MACtBD,IAAI,CAACE,IAAI,CAAC9B,MAAM,CAAC2B,IAAI,CAAC,CAAC,CAAC,CAAC,CAACL,OAAO,CAACO,SAAS,CAAC,CAAC;IAC/C;IAEA,IAAI,OAAOR,QAAQ,KAAK,QAAQ,IAAI,YAAY,IAAIA,QAAQ,EAAE;MAC5DO,IAAI,CAACE,IAAI,CAAC/B,KAAK,CAACgC,OAAO,CAAC,IAAIV,QAAQ,CAACW,UAAU,IAAI,CAAC,CAAC;IACvD;;IAEA;IACA,OAAOnC,EAAE,CAACoC,EAAE,CAAQC,OAAO,CAACP,IAAI,KAAK,OAAO,GAAG,OAAO,GAAGA,IAAI,CAAC,CAACQ,IAAI,CACjED,OAAO,EACPN,IAAI,CAACQ,IAAI,CAAC,GAAG,CACf,CAAC,CAAC;EACJ;AACF","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"attachment.test.js","names":["objectTypeWithAllPropertyTypes","LegacyFauxFoundry","startNodeApiServer","stubData","afterAll","beforeAll","describe","expect","it","createClient","fauxFoundry","apiServer","client","attachments","registerAttachment","filename","mediaType","rid","buffer","TextEncoder","encode","JSON","stringify","name","close","result","where","id","objectWithAllPropertyTypes1","fetchPage","object1","data","attachment","toBeDefined","attachmentMetadata","fetchMetadata","toEqual","sizeBytes","attachmentContent","fetchContents","attachmentText","text","parse"],"sources":["attachment.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 { objectTypeWithAllPropertyTypes } from \"@osdk/client.test.ontology\";\nimport {\n LegacyFauxFoundry,\n startNodeApiServer,\n stubData,\n} from \"@osdk/shared.test\";\nimport { type SetupServer } from \"msw/node\";\nimport { afterAll, beforeAll, describe, expect, it } from \"vitest\";\nimport type { Client } from \"../Client.js\";\nimport { createClient } from \"../createClient.js\";\n\ndescribe(\"attachments\", () => {\n let fauxFoundry: LegacyFauxFoundry;\n let apiServer: SetupServer;\n let client: Client;\n\n beforeAll(async () => {\n ({ client, apiServer, fauxFoundry } = startNodeApiServer(\n new LegacyFauxFoundry(),\n createClient,\n ));\n\n fauxFoundry.attachments.registerAttachment({\n filename: \"file1.txt\",\n mediaType: \"application/json\",\n rid:\n \"ri.attachments.main.attachment.86016861-707f-4292-b258-6a7108915a75\",\n buffer: new TextEncoder().encode(\n JSON.stringify({ name: \"Hello World\" }, null, 2),\n ),\n });\n });\n\n afterAll(() => {\n apiServer.close();\n });\n\n it(\"reads attachment metadata successfully\", async () => {\n const result = await client(\n objectTypeWithAllPropertyTypes,\n )\n .where({ id: stubData.objectWithAllPropertyTypes1.id }).fetchPage();\n\n const object1 = result.data[0];\n expect(object1.attachment).toBeDefined();\n const attachmentMetadata = await object1.attachment?.fetchMetadata();\n expect(attachmentMetadata).toBeDefined();\n expect(attachmentMetadata?.filename).toEqual(\"file1.txt\");\n expect(attachmentMetadata?.mediaType).toEqual(\"application/json\");\n expect(attachmentMetadata?.sizeBytes).toEqual(27);\n expect(attachmentMetadata?.rid).toEqual(\n stubData.objectWithAllPropertyTypes1.attachment.rid,\n );\n });\n\n it(\"reads attachment successfully\", async () => {\n const result = await client(objectTypeWithAllPropertyTypes)\n .where({ id: stubData.objectWithAllPropertyTypes1.id }).fetchPage();\n\n const object1 = result.data[0];\n expect(object1.attachment).toBeDefined();\n const attachmentContent = await object1?.attachment?.fetchContents();\n const attachmentText = await attachmentContent!.text();\n expect(JSON.parse(attachmentText)).toEqual({\n name: \"Hello World\",\n });\n });\n});\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAASA,8BAA8B,QAAQ,4BAA4B;AAC3E,SACEC,iBAAiB,EACjBC,kBAAkB,EAClBC,QAAQ,QACH,mBAAmB;AAE1B,SAASC,QAAQ,EAAEC,SAAS,EAAEC,QAAQ,EAAEC,MAAM,EAAEC,EAAE,QAAQ,QAAQ;AAElE,SAASC,YAAY,QAAQ,oBAAoB;AAEjDH,QAAQ,CAAC,aAAa,EAAE,MAAM;EAC5B,IAAII,WAA8B;EAClC,IAAIC,SAAsB;EAC1B,IAAIC,MAAc;EAElBP,SAAS,CAAC,YAAY;IACpB,CAAC;MAAEO,MAAM;MAAED,SAAS;MAAED;IAAY,CAAC,GAAGR,kBAAkB,CACtD,IAAID,iBAAiB,CAAC,CAAC,EACvBQ,YACF,CAAC;IAEDC,WAAW,CAACG,WAAW,CAACC,kBAAkB,CAAC;MACzCC,QAAQ,EAAE,WAAW;MACrBC,SAAS,EAAE,kBAAkB;MAC7BC,GAAG,EACD,qEAAqE;MACvEC,MAAM,EAAE,IAAIC,WAAW,CAAC,CAAC,CAACC,MAAM,CAC9BC,IAAI,CAACC,SAAS,CAAC;QAAEC,IAAI,EAAE;MAAc,CAAC,EAAE,IAAI,EAAE,CAAC,CACjD;IACF,CAAC,CAAC;EACJ,CAAC,CAAC;EAEFnB,QAAQ,CAAC,MAAM;IACbO,SAAS,CAACa,KAAK,CAAC,CAAC;EACnB,CAAC,CAAC;EAEFhB,EAAE,CAAC,wCAAwC,EAAE,YAAY;IACvD,MAAMiB,MAAM,GAAG,MAAMb,MAAM,CACzBZ,8BACF,CAAC,CACE0B,KAAK,CAAC;MAAEC,EAAE,EAAExB,QAAQ,CAACyB,2BAA2B,CAACD;IAAG,CAAC,CAAC,CAACE,SAAS,CAAC,CAAC;IAErE,MAAMC,OAAO,GAAGL,MAAM,CAACM,IAAI,CAAC,CAAC,CAAC;IAC9BxB,MAAM,CAACuB,OAAO,CAACE,UAAU,CAAC,CAACC,WAAW,CAAC,CAAC;IACxC,MAAMC,kBAAkB,GAAG,MAAMJ,OAAO,CAACE,UAAU,EAAEG,aAAa,CAAC,CAAC;IACpE5B,MAAM,CAAC2B,kBAAkB,CAAC,CAACD,WAAW,CAAC,CAAC;IACxC1B,MAAM,CAAC2B,kBAAkB,EAAEnB,QAAQ,CAAC,CAACqB,OAAO,CAAC,WAAW,CAAC;IACzD7B,MAAM,CAAC2B,kBAAkB,EAAElB,SAAS,CAAC,CAACoB,OAAO,CAAC,kBAAkB,CAAC;IACjE7B,MAAM,CAAC2B,kBAAkB,EAAEG,SAAS,CAAC,CAACD,OAAO,CAAC,EAAE,CAAC;IACjD7B,MAAM,CAAC2B,kBAAkB,EAAEjB,GAAG,CAAC,CAACmB,OAAO,CACrCjC,QAAQ,CAACyB,2BAA2B,CAACI,UAAU,CAACf,GAClD,CAAC;EACH,CAAC,CAAC;EAEFT,EAAE,CAAC,+BAA+B,EAAE,YAAY;IAC9C,MAAMiB,MAAM,GAAG,MAAMb,MAAM,CAACZ,8BAA8B,CAAC,CACxD0B,KAAK,CAAC;MAAEC,EAAE,EAAExB,QAAQ,CAACyB,2BAA2B,CAACD;IAAG,CAAC,CAAC,CAACE,SAAS,CAAC,CAAC;IAErE,MAAMC,OAAO,GAAGL,MAAM,CAACM,IAAI,CAAC,CAAC,CAAC;IAC9BxB,MAAM,CAACuB,OAAO,CAACE,UAAU,CAAC,CAACC,WAAW,CAAC,CAAC;IACxC,MAAMK,iBAAiB,GAAG,MAAMR,OAAO,EAAEE,UAAU,EAAEO,aAAa,CAAC,CAAC;IACpE,MAAMC,cAAc,GAAG,MAAMF,iBAAiB,CAAEG,IAAI,CAAC,CAAC;IACtDlC,MAAM,CAACc,IAAI,CAACqB,KAAK,CAACF,cAAc,CAAC,CAAC,CAACJ,OAAO,CAAC;MACzCb,IAAI,EAAE;IACR,CAAC,CAAC;EACJ,CAAC,CAAC;AACJ,CAAC,CAAC","ignoreList":[]}
1
+ {"version":3,"file":"attachment.test.js","names":["objectTypeWithAllPropertyTypes","LegacyFauxFoundry","startNodeApiServer","stubData","afterAll","beforeAll","describe","expect","it","createClient","fauxFoundry","apiServer","client","attachments","registerAttachment","filename","mediaType","rid","buffer","TextEncoder","encode","JSON","stringify","name","close","result","where","id","objectWithAllPropertyTypes1","fetchPage","object1","data","attachment","toBeDefined","attachmentMetadata","fetchMetadata","toEqual","sizeBytes","attachmentContent","fetchContents","attachmentText","text","parse"],"sources":["attachment.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 { objectTypeWithAllPropertyTypes } from \"@osdk/client.test.ontology\";\nimport {\n LegacyFauxFoundry,\n startNodeApiServer,\n stubData,\n} from \"@osdk/shared.test\";\nimport { type SetupServer } from \"@osdk/shared.test\";\nimport { afterAll, beforeAll, describe, expect, it } from \"vitest\";\nimport type { Client } from \"../Client.js\";\nimport { createClient } from \"../createClient.js\";\n\ndescribe(\"attachments\", () => {\n let fauxFoundry: LegacyFauxFoundry;\n let apiServer: SetupServer;\n let client: Client;\n\n beforeAll(async () => {\n ({ client, apiServer, fauxFoundry } = startNodeApiServer(\n new LegacyFauxFoundry(),\n createClient,\n ));\n\n fauxFoundry.attachments.registerAttachment({\n filename: \"file1.txt\",\n mediaType: \"application/json\",\n rid:\n \"ri.attachments.main.attachment.86016861-707f-4292-b258-6a7108915a75\",\n buffer: new TextEncoder().encode(\n JSON.stringify({ name: \"Hello World\" }, null, 2),\n ),\n });\n });\n\n afterAll(() => {\n apiServer.close();\n });\n\n it(\"reads attachment metadata successfully\", async () => {\n const result = await client(\n objectTypeWithAllPropertyTypes,\n )\n .where({ id: stubData.objectWithAllPropertyTypes1.id }).fetchPage();\n\n const object1 = result.data[0];\n expect(object1.attachment).toBeDefined();\n const attachmentMetadata = await object1.attachment?.fetchMetadata();\n expect(attachmentMetadata).toBeDefined();\n expect(attachmentMetadata?.filename).toEqual(\"file1.txt\");\n expect(attachmentMetadata?.mediaType).toEqual(\"application/json\");\n expect(attachmentMetadata?.sizeBytes).toEqual(27);\n expect(attachmentMetadata?.rid).toEqual(\n stubData.objectWithAllPropertyTypes1.attachment.rid,\n );\n });\n\n it(\"reads attachment successfully\", async () => {\n const result = await client(objectTypeWithAllPropertyTypes)\n .where({ id: stubData.objectWithAllPropertyTypes1.id }).fetchPage();\n\n const object1 = result.data[0];\n expect(object1.attachment).toBeDefined();\n const attachmentContent = await object1?.attachment?.fetchContents();\n const attachmentText = await attachmentContent!.text();\n expect(JSON.parse(attachmentText)).toEqual({\n name: \"Hello World\",\n });\n });\n});\n"],"mappings":"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","ignoreList":[]}
@@ -40,6 +40,10 @@ export function createOsdkInterface(underlying, interfaceDef) {
40
40
  value: underlying.$primaryKey,
41
41
  enumerable: "$primaryKey" in underlying
42
42
  },
43
+ "$objectSpecifier": {
44
+ value: underlying.$objectSpecifier,
45
+ enumerable: "$objectSpecifier" in underlying
46
+ },
43
47
  "$title": {
44
48
  value: underlying.$title,
45
49
  enumerable: "$title" in underlying
@@ -1 +1 @@
1
- {"version":3,"file":"createOsdkInterface.js","names":["extractNamespace","InterfaceDefRef","ObjectDefRef","UnderlyingOsdkObject","createOsdkInterface","underlying","interfaceDef","objApiNamespace","apiName","Object","freeze","defineProperties","value","enumerable","$as","$objectType","$primaryKey","$title","$rid","clone","fromEntries","keys","properties","map","p","objDef","apiNamespace","targetPropName","interfaceMap","update","$clone","key","Error","remappedProps","mapProperty","filter","x","propertyName"],"sources":["createOsdkInterface.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 { InterfaceMetadata } from \"@osdk/api\";\nimport { extractNamespace } from \"../../internal/conversions/modernToLegacyWhereClause.js\";\nimport type { FetchedObjectTypeDefinition } from \"../../ontology/OntologyProvider.js\";\nimport type { InterfaceHolder } from \"./InterfaceHolder.js\";\nimport {\n InterfaceDefRef,\n ObjectDefRef,\n UnderlyingOsdkObject,\n} from \"./InternalSymbols.js\";\nimport type { ObjectHolder } from \"./ObjectHolder.js\";\n\n/** @internal */\nexport function createOsdkInterface<\n Q extends FetchedObjectTypeDefinition,\n>(\n underlying: ObjectHolder,\n interfaceDef: InterfaceMetadata,\n): InterfaceHolder {\n const [objApiNamespace] = extractNamespace(interfaceDef.apiName);\n\n return Object.freeze(\n Object.defineProperties({}, {\n // first to minimize hidden classes\n [UnderlyingOsdkObject]: { value: underlying },\n\n \"$apiName\": { value: interfaceDef.apiName, enumerable: true },\n \"$as\": {\n value: underlying.$as,\n enumerable: false,\n },\n \"$objectType\": {\n value: underlying.$objectType,\n enumerable: \"$objectType\" in underlying,\n },\n \"$primaryKey\": {\n value: underlying.$primaryKey,\n enumerable: \"$primaryKey\" in underlying,\n },\n \"$title\": {\n value: underlying.$title,\n enumerable: \"$title\" in underlying,\n },\n \"$rid\": {\n value: (underlying as any).$rid,\n enumerable: \"$rid\" in underlying,\n },\n \"$clone\": {\n value: clone,\n enumerable: false,\n },\n\n [InterfaceDefRef]: { value: interfaceDef },\n\n ...Object.fromEntries(\n Object.keys(interfaceDef.properties).map(p => {\n const objDef = underlying[ObjectDefRef];\n\n const [apiNamespace, apiName] = extractNamespace(p);\n\n const targetPropName = objDef\n .interfaceMap![interfaceDef.apiName][p];\n\n return [apiNamespace === objApiNamespace ? apiName : p, {\n enumerable: targetPropName in underlying,\n value: underlying[targetPropName as keyof typeof underlying],\n }];\n }),\n ),\n }) as InterfaceHolder,\n );\n function clone(update: Record<string, any> | undefined) {\n if (update == null) {\n return underlying.$clone().$as(interfaceDef);\n }\n\n for (const key of Object.keys(update)) {\n if (!(key in interfaceDef.properties)) {\n throw new Error(\n `Invalid property ${key} for interface ${interfaceDef.apiName}`,\n );\n }\n }\n\n const remappedProps = Object.fromEntries(\n Object.keys(update).map(p => mapProperty(p, update[p])).filter(x =>\n x != null\n ),\n );\n\n return underlying.$clone(remappedProps).$as(interfaceDef);\n }\n function mapProperty(propertyName: string, value: any) {\n const objDef = underlying[ObjectDefRef];\n const targetPropName =\n objDef.interfaceMap![interfaceDef.apiName][propertyName];\n // If the underlying object does not implement the SPT, throw errors\n if (targetPropName == null) {\n throw new Error(\n `Cannot clone interface with ${propertyName} as property is not implemented by the underlying object type ${objDef.apiName}`,\n );\n }\n return [targetPropName, value];\n }\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"createOsdkInterface.js","names":["extractNamespace","InterfaceDefRef","ObjectDefRef","UnderlyingOsdkObject","createOsdkInterface","underlying","interfaceDef","objApiNamespace","apiName","Object","freeze","defineProperties","value","enumerable","$as","$objectType","$primaryKey","$objectSpecifier","$title","$rid","clone","fromEntries","keys","properties","map","p","objDef","apiNamespace","targetPropName","interfaceMap","update","$clone","key","Error","remappedProps","mapProperty","filter","x","propertyName"],"sources":["createOsdkInterface.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 { InterfaceMetadata } from \"@osdk/api\";\nimport { extractNamespace } from \"../../internal/conversions/modernToLegacyWhereClause.js\";\nimport type { FetchedObjectTypeDefinition } from \"../../ontology/OntologyProvider.js\";\nimport type { InterfaceHolder } from \"./InterfaceHolder.js\";\nimport {\n InterfaceDefRef,\n ObjectDefRef,\n UnderlyingOsdkObject,\n} from \"./InternalSymbols.js\";\nimport type { ObjectHolder } from \"./ObjectHolder.js\";\n\n/** @internal */\nexport function createOsdkInterface<\n Q extends FetchedObjectTypeDefinition,\n>(\n underlying: ObjectHolder,\n interfaceDef: InterfaceMetadata,\n): InterfaceHolder {\n const [objApiNamespace] = extractNamespace(interfaceDef.apiName);\n\n return Object.freeze(\n Object.defineProperties({}, {\n // first to minimize hidden classes\n [UnderlyingOsdkObject]: { value: underlying },\n\n \"$apiName\": { value: interfaceDef.apiName, enumerable: true },\n \"$as\": {\n value: underlying.$as,\n enumerable: false,\n },\n \"$objectType\": {\n value: underlying.$objectType,\n enumerable: \"$objectType\" in underlying,\n },\n \"$primaryKey\": {\n value: underlying.$primaryKey,\n enumerable: \"$primaryKey\" in underlying,\n },\n \"$objectSpecifier\": {\n value: underlying.$objectSpecifier,\n enumerable: \"$objectSpecifier\" in underlying,\n },\n \"$title\": {\n value: underlying.$title,\n enumerable: \"$title\" in underlying,\n },\n \"$rid\": {\n value: (underlying as any).$rid,\n enumerable: \"$rid\" in underlying,\n },\n \"$clone\": {\n value: clone,\n enumerable: false,\n },\n\n [InterfaceDefRef]: { value: interfaceDef },\n\n ...Object.fromEntries(\n Object.keys(interfaceDef.properties).map(p => {\n const objDef = underlying[ObjectDefRef];\n\n const [apiNamespace, apiName] = extractNamespace(p);\n\n const targetPropName = objDef\n .interfaceMap![interfaceDef.apiName][p];\n\n return [apiNamespace === objApiNamespace ? apiName : p, {\n enumerable: targetPropName in underlying,\n value: underlying[targetPropName as keyof typeof underlying],\n }];\n }),\n ),\n }) as InterfaceHolder,\n );\n function clone(update: Record<string, any> | undefined) {\n if (update == null) {\n return underlying.$clone().$as(interfaceDef);\n }\n\n for (const key of Object.keys(update)) {\n if (!(key in interfaceDef.properties)) {\n throw new Error(\n `Invalid property ${key} for interface ${interfaceDef.apiName}`,\n );\n }\n }\n\n const remappedProps = Object.fromEntries(\n Object.keys(update).map(p => mapProperty(p, update[p])).filter(x =>\n x != null\n ),\n );\n\n return underlying.$clone(remappedProps).$as(interfaceDef);\n }\n function mapProperty(propertyName: string, value: any) {\n const objDef = underlying[ObjectDefRef];\n const targetPropName =\n objDef.interfaceMap![interfaceDef.apiName][propertyName];\n // If the underlying object does not implement the SPT, throw errors\n if (targetPropName == null) {\n throw new Error(\n `Cannot clone interface with ${propertyName} as property is not implemented by the underlying object type ${objDef.apiName}`,\n );\n }\n return [targetPropName, value];\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -19,6 +19,7 @@ import { GeotimeSeriesPropertyImpl } from "../../createGeotimeSeriesProperty.js"
19
19
  import { MediaReferencePropertyImpl } from "../../createMediaReferenceProperty.js";
20
20
  import { TimeSeriesPropertyImpl } from "../../createTimeseriesProperty.js";
21
21
  import { hydrateAttachmentFromRidInternal } from "../../public-utils/hydrateAttachmentFromRid.js";
22
+ import { createObjectSpecifierFromPrimaryKey } from "../../util/objectSpecifierUtils.js";
22
23
  import { get$as } from "./getDollarAs.js";
23
24
  import { get$link } from "./getDollarLink.js";
24
25
  import { ClientRef, ObjectDefRef, UnderlyingOsdkObject } from "./InternalSymbols.js";
@@ -59,6 +60,13 @@ const basePropDefs = {
59
60
  };
60
61
  return createOsdkObject(this[ClientRef], this[ObjectDefRef], newObject);
61
62
  }
63
+ },
64
+ "$objectSpecifier": {
65
+ get: function () {
66
+ const rawObj = this[UnderlyingOsdkObject];
67
+ return createObjectSpecifierFromPrimaryKey(this[ObjectDefRef], rawObj.$primaryKey);
68
+ },
69
+ enumerable: true
62
70
  }
63
71
  };
64
72
 
@@ -68,7 +76,7 @@ const basePropDefs = {
68
76
  * @param objectDef
69
77
  * @param simpleOsdkProperties
70
78
  */
71
- export function createOsdkObject(client, objectDef, simpleOsdkProperties) {
79
+ export function createOsdkObject(client, objectDef, simpleOsdkProperties, derivedPropertyTypeByName = {}) {
72
80
  // updates the object's "hidden class/map".
73
81
  const rawObj = simpleOsdkProperties;
74
82
  Object.defineProperties(rawObj, {
@@ -91,6 +99,17 @@ export function createOsdkObject(client, objectDef, simpleOsdkProperties) {
91
99
  for (const propKey of Object.keys(rawObj)) {
92
100
  if (propKey in objectDef.properties && typeof objectDef.properties[propKey].type === "string" && specialPropertyTypes.has(objectDef.properties[propKey].type)) {
93
101
  rawObj[propKey] = createSpecialProperty(client, objectDef, rawObj, propKey);
102
+ } else if (propKey in derivedPropertyTypeByName && typeof derivedPropertyTypeByName[propKey].type === "string" && specialPropertyTypes.has(derivedPropertyTypeByName[propKey].type)) {
103
+ const rawValue = rawObj[propKey];
104
+ if (derivedPropertyTypeByName[propKey].type === "attachment") {
105
+ if (Array.isArray(rawValue)) {
106
+ rawObj[propKey] = rawValue.map(a => hydrateAttachmentFromRidInternal(client, a.rid));
107
+ } else {
108
+ rawObj[propKey] = hydrateAttachmentFromRidInternal(client, rawValue.rid);
109
+ }
110
+ } else {
111
+ process.env.NODE_ENV !== "production" ? invariant(false, "Derived property aggregations for Timeseries and Media are not supported") : invariant(false);
112
+ }
94
113
  }
95
114
  }
96
115
  return Object.freeze(rawObj);
@@ -101,39 +120,31 @@ function createSpecialProperty(client, objectDef, rawObject, p) {
101
120
  if (process.env.NODE_ENV !== "production") {
102
121
  !(propDef != null && typeof propDef.type === "string" && specialPropertyTypes.has(propDef.type)) ? process.env.NODE_ENV !== "production" ? invariant(false) : invariant(false) : void 0;
103
122
  }
104
- {
105
- {
106
- {
107
- {
108
- if (propDef.type === "attachment") {
109
- if (Array.isArray(rawValue)) {
110
- return rawValue.map(a => hydrateAttachmentFromRidInternal(client, a.rid));
111
- }
112
- return hydrateAttachmentFromRidInternal(client, rawValue.rid);
113
- }
114
- if (propDef.type === "numericTimeseries" || propDef.type === "stringTimeseries" || propDef.type === "sensorTimeseries") {
115
- return new TimeSeriesPropertyImpl(client, objectDef.apiName, rawObject[objectDef.primaryKeyApiName], p);
116
- }
117
- if (propDef.type === "geotimeSeriesReference") {
118
- return new GeotimeSeriesPropertyImpl(client, objectDef.apiName, rawObject[objectDef.primaryKeyApiName], p, rawValue.type === "geotimeSeriesValue" ? {
119
- time: rawValue.timestamp,
120
- value: {
121
- type: "Point",
122
- coordinates: rawValue.position
123
- }
124
- } : undefined);
125
- }
126
- if (propDef.type === "mediaReference") {
127
- return new MediaReferencePropertyImpl({
128
- client,
129
- objectApiName: objectDef.apiName,
130
- primaryKey: rawObject[objectDef.primaryKeyApiName],
131
- propertyName: p
132
- });
133
- }
134
- }
135
- }
123
+ if (propDef.type === "attachment") {
124
+ if (Array.isArray(rawValue)) {
125
+ return rawValue.map(a => hydrateAttachmentFromRidInternal(client, a.rid));
136
126
  }
127
+ return hydrateAttachmentFromRidInternal(client, rawValue.rid);
128
+ }
129
+ if (propDef.type === "numericTimeseries" || propDef.type === "stringTimeseries" || propDef.type === "sensorTimeseries") {
130
+ return new TimeSeriesPropertyImpl(client, objectDef.apiName, rawObject[objectDef.primaryKeyApiName], p);
131
+ }
132
+ if (propDef.type === "geotimeSeriesReference") {
133
+ return new GeotimeSeriesPropertyImpl(client, objectDef.apiName, rawObject[objectDef.primaryKeyApiName], p, rawValue.type === "geotimeSeriesValue" ? {
134
+ time: rawValue.timestamp,
135
+ value: {
136
+ type: "Point",
137
+ coordinates: rawValue.position
138
+ }
139
+ } : undefined);
140
+ }
141
+ if (propDef.type === "mediaReference") {
142
+ return new MediaReferencePropertyImpl({
143
+ client,
144
+ objectApiName: objectDef.apiName,
145
+ primaryKey: rawObject[objectDef.primaryKeyApiName],
146
+ propertyName: p
147
+ });
137
148
  }
138
149
  }
139
150
  //# sourceMappingURL=createOsdkObject.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"createOsdkObject.js","names":["invariant","GeotimeSeriesPropertyImpl","MediaReferencePropertyImpl","TimeSeriesPropertyImpl","hydrateAttachmentFromRidInternal","get$as","get$link","ClientRef","ObjectDefRef","UnderlyingOsdkObject","specialPropertyTypes","Set","basePropDefs","get","value","update","rawObj","def","createOsdkObject","primaryKeyApiName","Error","apiName","titleProperty","$title","newObject","client","objectDef","simpleOsdkProperties","Object","defineProperties","enumerable","propKey","keys","properties","type","has","createSpecialProperty","freeze","rawObject","p","rawValue","propDef","process","env","NODE_ENV","Array","isArray","map","a","rid","time","timestamp","coordinates","position","undefined","objectApiName","primaryKey","propertyName"],"sources":["createOsdkObject.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 { Attachment, ReferenceValue } from \"@osdk/foundry.ontologies\";\nimport invariant from \"tiny-invariant\";\nimport { GeotimeSeriesPropertyImpl } from \"../../createGeotimeSeriesProperty.js\";\nimport { MediaReferencePropertyImpl } from \"../../createMediaReferenceProperty.js\";\nimport { TimeSeriesPropertyImpl } from \"../../createTimeseriesProperty.js\";\nimport type { MinimalClient } from \"../../MinimalClientContext.js\";\nimport type { FetchedObjectTypeDefinition } from \"../../ontology/OntologyProvider.js\";\nimport { hydrateAttachmentFromRidInternal } from \"../../public-utils/hydrateAttachmentFromRid.js\";\nimport type { SimpleOsdkProperties } from \"../SimpleOsdkProperties.js\";\nimport { get$as } from \"./getDollarAs.js\";\nimport { get$link } from \"./getDollarLink.js\";\nimport {\n ClientRef,\n ObjectDefRef,\n UnderlyingOsdkObject,\n} from \"./InternalSymbols.js\";\nimport type { ObjectHolder } from \"./ObjectHolder.js\";\n\nconst specialPropertyTypes = new Set(\n [\n \"attachment\",\n \"geotimeSeriesReference\",\n \"mediaReference\",\n \"numericTimeseries\",\n \"stringTimeseries\",\n \"sensorTimeseries\",\n ],\n);\n\n// kept separate so we are not redefining these functions\n// every time an object is created.\nconst basePropDefs = {\n \"$as\": {\n get: function(this: ObjectHolder) {\n return get$as(this[ObjectDefRef]);\n },\n },\n \"$link\": {\n get: function(this: ObjectHolder) {\n return get$link(this);\n },\n },\n \"$clone\": {\n value: function(\n this: ObjectHolder,\n update: Record<string, any> | undefined,\n ) {\n // I think `rawObj` is the same thing as `this` and can be removed?\n const rawObj = this[UnderlyingOsdkObject] as SimpleOsdkProperties;\n const def = this[ObjectDefRef];\n\n if (update == null) {\n return createOsdkObject(this[ClientRef], def, { ...rawObj });\n }\n\n if (\n def.primaryKeyApiName in update\n && rawObj[def.primaryKeyApiName] !== update[def.primaryKeyApiName]\n ) {\n throw new Error(\n `Cannot update ${def.apiName} object with differing primary key values `,\n );\n }\n\n if (def.titleProperty in update && !(\"$title\" in update)) {\n update.$title = update[def.titleProperty];\n }\n\n const newObject = { ...this[UnderlyingOsdkObject], ...update };\n return createOsdkObject(this[ClientRef], this[ObjectDefRef], newObject);\n },\n },\n};\n\n/**\n * @internal\n * @param client\n * @param objectDef\n * @param simpleOsdkProperties\n */\nexport function createOsdkObject(\n client: MinimalClient,\n objectDef: FetchedObjectTypeDefinition,\n simpleOsdkProperties: SimpleOsdkProperties,\n): ObjectHolder {\n // updates the object's \"hidden class/map\".\n const rawObj = simpleOsdkProperties as ObjectHolder;\n Object.defineProperties(\n rawObj,\n {\n [UnderlyingOsdkObject]: {\n enumerable: false,\n value: simpleOsdkProperties,\n },\n [ObjectDefRef]: { value: objectDef, enumerable: false },\n [ClientRef]: { value: client, enumerable: false },\n ...basePropDefs,\n } satisfies Record<keyof ObjectHolder, PropertyDescriptor>,\n );\n\n // Assign the special values\n for (const propKey of Object.keys(rawObj)) {\n if (\n propKey in objectDef.properties\n && typeof (objectDef.properties[propKey].type) === \"string\"\n && specialPropertyTypes.has(objectDef.properties[propKey].type)\n ) {\n rawObj[propKey] = createSpecialProperty(\n client,\n objectDef,\n rawObj,\n propKey,\n );\n }\n }\n\n return Object.freeze(rawObj);\n}\n\nfunction createSpecialProperty(\n client: MinimalClient,\n objectDef: FetchedObjectTypeDefinition,\n rawObject: ObjectHolder,\n p: keyof typeof rawObject & string | symbol,\n) {\n const rawValue = rawObject[p as any];\n const propDef = objectDef.properties[p as any];\n if (process.env.NODE_ENV !== \"production\") {\n invariant(\n propDef != null && typeof propDef.type === \"string\"\n && specialPropertyTypes.has(propDef.type),\n );\n }\n {\n {\n {\n {\n if (propDef.type === \"attachment\") {\n if (Array.isArray(rawValue)) {\n return rawValue.map(a =>\n hydrateAttachmentFromRidInternal(client, a.rid)\n );\n }\n return hydrateAttachmentFromRidInternal(\n client,\n (rawValue as Attachment).rid,\n );\n }\n\n if (\n propDef.type === \"numericTimeseries\"\n || propDef.type === \"stringTimeseries\"\n || propDef.type === \"sensorTimeseries\"\n ) {\n return new TimeSeriesPropertyImpl<\n (typeof propDef)[\"type\"] extends \"numericTimeseries\" ? number\n : (typeof propDef)[\"type\"] extends \"stringTimeseries\" ? string\n : number | string\n >(\n client,\n objectDef.apiName,\n rawObject[objectDef.primaryKeyApiName as string],\n p as string,\n );\n }\n\n if (propDef.type === \"geotimeSeriesReference\") {\n return new GeotimeSeriesPropertyImpl<GeoJSON.Point>(\n client,\n objectDef.apiName,\n rawObject[objectDef.primaryKeyApiName as string],\n p as string,\n (rawValue as ReferenceValue).type === \"geotimeSeriesValue\"\n ? {\n time: (rawValue as ReferenceValue).timestamp,\n value: {\n type: \"Point\",\n coordinates: (rawValue as ReferenceValue).position,\n },\n }\n : undefined,\n );\n }\n if (propDef.type === \"mediaReference\") {\n return new MediaReferencePropertyImpl({\n client,\n objectApiName: objectDef.apiName,\n primaryKey: rawObject[objectDef.primaryKeyApiName as string],\n propertyName: p as string,\n });\n }\n }\n }\n }\n }\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"createOsdkObject.js","names":["invariant","GeotimeSeriesPropertyImpl","MediaReferencePropertyImpl","TimeSeriesPropertyImpl","hydrateAttachmentFromRidInternal","createObjectSpecifierFromPrimaryKey","get$as","get$link","ClientRef","ObjectDefRef","UnderlyingOsdkObject","specialPropertyTypes","Set","basePropDefs","get","value","update","rawObj","def","createOsdkObject","primaryKeyApiName","Error","apiName","titleProperty","$title","newObject","$primaryKey","enumerable","client","objectDef","simpleOsdkProperties","derivedPropertyTypeByName","Object","defineProperties","propKey","keys","properties","type","has","createSpecialProperty","rawValue","Array","isArray","map","a","rid","process","env","NODE_ENV","freeze","rawObject","p","propDef","time","timestamp","coordinates","position","undefined","objectApiName","primaryKey","propertyName"],"sources":["createOsdkObject.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 { ObjectMetadata } from \"@osdk/api\";\nimport type { Attachment, ReferenceValue } from \"@osdk/foundry.ontologies\";\nimport invariant from \"tiny-invariant\";\nimport { GeotimeSeriesPropertyImpl } from \"../../createGeotimeSeriesProperty.js\";\nimport { MediaReferencePropertyImpl } from \"../../createMediaReferenceProperty.js\";\nimport { TimeSeriesPropertyImpl } from \"../../createTimeseriesProperty.js\";\nimport type { MinimalClient } from \"../../MinimalClientContext.js\";\nimport type { FetchedObjectTypeDefinition } from \"../../ontology/OntologyProvider.js\";\nimport { hydrateAttachmentFromRidInternal } from \"../../public-utils/hydrateAttachmentFromRid.js\";\nimport { createObjectSpecifierFromPrimaryKey } from \"../../util/objectSpecifierUtils.js\";\nimport type { SimpleOsdkProperties } from \"../SimpleOsdkProperties.js\";\nimport { get$as } from \"./getDollarAs.js\";\nimport { get$link } from \"./getDollarLink.js\";\nimport {\n ClientRef,\n ObjectDefRef,\n UnderlyingOsdkObject,\n} from \"./InternalSymbols.js\";\nimport type { ObjectHolder } from \"./ObjectHolder.js\";\n\nconst specialPropertyTypes = new Set(\n [\n \"attachment\",\n \"geotimeSeriesReference\",\n \"mediaReference\",\n \"numericTimeseries\",\n \"stringTimeseries\",\n \"sensorTimeseries\",\n ],\n);\n\n// kept separate so we are not redefining these functions\n// every time an object is created.\nconst basePropDefs = {\n \"$as\": {\n get: function(this: ObjectHolder) {\n return get$as(this[ObjectDefRef]);\n },\n },\n \"$link\": {\n get: function(this: ObjectHolder) {\n return get$link(this);\n },\n },\n \"$clone\": {\n value: function(\n this: ObjectHolder,\n update: Record<string, any> | undefined,\n ) {\n // I think `rawObj` is the same thing as `this` and can be removed?\n const rawObj = this[UnderlyingOsdkObject] as SimpleOsdkProperties;\n const def = this[ObjectDefRef];\n\n if (update == null) {\n return createOsdkObject(this[ClientRef], def, { ...rawObj });\n }\n\n if (\n def.primaryKeyApiName in update\n && rawObj[def.primaryKeyApiName] !== update[def.primaryKeyApiName]\n ) {\n throw new Error(\n `Cannot update ${def.apiName} object with differing primary key values `,\n );\n }\n\n if (def.titleProperty in update && !(\"$title\" in update)) {\n update.$title = update[def.titleProperty];\n }\n\n const newObject = { ...this[UnderlyingOsdkObject], ...update };\n return createOsdkObject(this[ClientRef], this[ObjectDefRef], newObject);\n },\n },\n \"$objectSpecifier\": {\n get: function(this: ObjectHolder) {\n const rawObj = this[UnderlyingOsdkObject];\n return createObjectSpecifierFromPrimaryKey(\n this[ObjectDefRef],\n rawObj.$primaryKey,\n );\n },\n enumerable: true,\n },\n};\n\n/**\n * @internal\n * @param client\n * @param objectDef\n * @param simpleOsdkProperties\n */\nexport function createOsdkObject(\n client: MinimalClient,\n objectDef: FetchedObjectTypeDefinition,\n simpleOsdkProperties: SimpleOsdkProperties,\n derivedPropertyTypeByName: Record<string, ObjectMetadata.Property> = {},\n): ObjectHolder {\n // updates the object's \"hidden class/map\".\n const rawObj = simpleOsdkProperties as ObjectHolder;\n Object.defineProperties(\n rawObj,\n {\n [UnderlyingOsdkObject]: {\n enumerable: false,\n value: simpleOsdkProperties,\n },\n [ObjectDefRef]: { value: objectDef, enumerable: false },\n [ClientRef]: { value: client, enumerable: false },\n ...basePropDefs,\n } satisfies Record<keyof ObjectHolder, PropertyDescriptor>,\n );\n\n // Assign the special values\n for (const propKey of Object.keys(rawObj)) {\n if (\n propKey in objectDef.properties\n && typeof (objectDef.properties[propKey].type) === \"string\"\n && specialPropertyTypes.has(objectDef.properties[propKey].type)\n ) {\n rawObj[propKey] = createSpecialProperty(\n client,\n objectDef,\n rawObj,\n propKey,\n );\n } else if (\n propKey in derivedPropertyTypeByName\n && typeof (derivedPropertyTypeByName[propKey].type) === \"string\"\n && specialPropertyTypes.has(derivedPropertyTypeByName[propKey].type)\n ) {\n const rawValue = rawObj[propKey as any];\n if (derivedPropertyTypeByName[propKey].type === \"attachment\") {\n if (Array.isArray(rawValue)) {\n rawObj[propKey] = rawValue.map(a =>\n hydrateAttachmentFromRidInternal(client, a.rid)\n );\n } else {\n rawObj[propKey] = hydrateAttachmentFromRidInternal(\n client,\n (rawValue as Attachment).rid,\n );\n }\n } else {\n invariant(\n false,\n \"Derived property aggregations for Timeseries and Media are not supported\",\n );\n }\n }\n }\n\n return Object.freeze(rawObj);\n}\n\nfunction createSpecialProperty(\n client: MinimalClient,\n objectDef: FetchedObjectTypeDefinition,\n rawObject: ObjectHolder,\n p: keyof typeof rawObject & string | symbol,\n) {\n const rawValue = rawObject[p as any];\n const propDef = objectDef.properties[p as any];\n if (process.env.NODE_ENV !== \"production\") {\n invariant(\n propDef != null && typeof propDef.type === \"string\"\n && specialPropertyTypes.has(propDef.type),\n );\n }\n if (propDef.type === \"attachment\") {\n if (Array.isArray(rawValue)) {\n return rawValue.map(a => hydrateAttachmentFromRidInternal(client, a.rid));\n }\n return hydrateAttachmentFromRidInternal(\n client,\n (rawValue as Attachment).rid,\n );\n }\n\n if (\n propDef.type === \"numericTimeseries\"\n || propDef.type === \"stringTimeseries\"\n || propDef.type === \"sensorTimeseries\"\n ) {\n return new TimeSeriesPropertyImpl<\n (typeof propDef)[\"type\"] extends \"numericTimeseries\" ? number\n : (typeof propDef)[\"type\"] extends \"stringTimeseries\" ? string\n : number | string\n >(\n client,\n objectDef.apiName,\n rawObject[objectDef.primaryKeyApiName as string],\n p as string,\n );\n }\n\n if (propDef.type === \"geotimeSeriesReference\") {\n return new GeotimeSeriesPropertyImpl<GeoJSON.Point>(\n client,\n objectDef.apiName,\n rawObject[objectDef.primaryKeyApiName as string],\n p as string,\n (rawValue as ReferenceValue).type === \"geotimeSeriesValue\"\n ? {\n time: (rawValue as ReferenceValue).timestamp,\n value: {\n type: \"Point\",\n coordinates: (rawValue as ReferenceValue).position,\n },\n }\n : undefined,\n );\n }\n if (propDef.type === \"mediaReference\") {\n return new MediaReferencePropertyImpl({\n client,\n objectApiName: objectDef.apiName,\n primaryKey: rawObject[objectDef.primaryKeyApiName as string],\n propertyName: p as string,\n });\n }\n}\n"],"mappings":"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","ignoreList":[]}