@osdk/client 2.1.0-beta.24 → 2.1.0-beta.26
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +35 -0
- package/build/browser/actions/actions.test.js +22 -2
- package/build/browser/actions/actions.test.js.map +1 -1
- package/build/browser/createClient.js +17 -1
- package/build/browser/createClient.js.map +1 -1
- package/build/browser/index.js.map +1 -1
- package/build/browser/internal/conversions/modernToLegacyWhereClause.js +56 -18
- package/build/browser/internal/conversions/modernToLegacyWhereClause.js.map +1 -1
- package/build/browser/internal/conversions/modernToLegacyWhereClause.test.js +193 -7
- package/build/browser/internal/conversions/modernToLegacyWhereClause.test.js.map +1 -1
- package/build/browser/object/aggregate.js +0 -4
- package/build/browser/object/aggregate.js.map +1 -1
- package/build/browser/object/convertWireToOsdkObjects.test.js +8 -8
- package/build/browser/object/convertWireToOsdkObjects.test.js.map +1 -1
- package/build/browser/object/mediaUpload.js +20 -0
- package/build/browser/object/mediaUpload.js.map +1 -0
- package/build/browser/objectSet/ObjectSet.test.js +28 -0
- package/build/browser/objectSet/ObjectSet.test.js.map +1 -1
- package/build/browser/util/UserAgent.js +1 -1
- package/build/browser/util/toDataValue.js +5 -1
- package/build/browser/util/toDataValue.js.map +1 -1
- package/build/browser/util/toDataValue.test.js +4 -0
- package/build/browser/util/toDataValue.test.js.map +1 -1
- package/build/cjs/{chunk-RWHJNRHF.cjs → chunk-AMEMEGJZ.cjs} +69 -33
- package/build/cjs/chunk-AMEMEGJZ.cjs.map +1 -0
- package/build/cjs/{chunk-Q4BVHDNO.cjs → chunk-HDBAHEBE.cjs} +19 -15
- package/build/cjs/chunk-HDBAHEBE.cjs.map +1 -0
- package/build/cjs/index.cjs +66 -43
- package/build/cjs/index.cjs.map +1 -1
- package/build/cjs/index.d.cts +1 -1
- package/build/cjs/public/internal.cjs +6 -6
- package/build/cjs/public/unstable-do-not-use.cjs +2 -2
- package/build/esm/actions/actions.test.js +22 -2
- package/build/esm/actions/actions.test.js.map +1 -1
- package/build/esm/createClient.js +17 -1
- package/build/esm/createClient.js.map +1 -1
- package/build/esm/index.js.map +1 -1
- package/build/esm/internal/conversions/modernToLegacyWhereClause.js +56 -18
- package/build/esm/internal/conversions/modernToLegacyWhereClause.js.map +1 -1
- package/build/esm/internal/conversions/modernToLegacyWhereClause.test.js +193 -7
- package/build/esm/internal/conversions/modernToLegacyWhereClause.test.js.map +1 -1
- package/build/esm/object/aggregate.js +0 -4
- package/build/esm/object/aggregate.js.map +1 -1
- package/build/esm/object/convertWireToOsdkObjects.test.js +8 -8
- package/build/esm/object/convertWireToOsdkObjects.test.js.map +1 -1
- package/build/esm/object/mediaUpload.js +20 -0
- package/build/esm/object/mediaUpload.js.map +1 -0
- package/build/esm/objectSet/ObjectSet.test.js +28 -0
- package/build/esm/objectSet/ObjectSet.test.js.map +1 -1
- package/build/esm/util/UserAgent.js +1 -1
- package/build/esm/util/toDataValue.js +5 -1
- package/build/esm/util/toDataValue.js.map +1 -1
- package/build/esm/util/toDataValue.test.js +4 -0
- package/build/esm/util/toDataValue.test.js.map +1 -1
- package/build/types/index.d.ts +1 -1
- package/build/types/object/mediaUpload.d.ts +2 -0
- package/package.json +11 -11
- package/build/cjs/chunk-Q4BVHDNO.cjs.map +0 -1
- package/build/cjs/chunk-RWHJNRHF.cjs.map +0 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,40 @@
|
|
|
1
1
|
# @osdk/client
|
|
2
2
|
|
|
3
|
+
## 2.1.0-beta.26
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- 7865cb6: Add support for search on struct properties.
|
|
8
|
+
- e6fbd94: Export Attachment from client
|
|
9
|
+
- 9c4efe6: Support uploading media parameters through actions
|
|
10
|
+
- 44e62f6: Updating fetch for auth and other packages.
|
|
11
|
+
- 94463b6: Support objects as code
|
|
12
|
+
- f19da8e: Remove where clause from aggregate options. This option was never actually doing anything before as it was not passed to the backend for processing, so we are removing it to prevent future confusion.
|
|
13
|
+
|
|
14
|
+
### Patch Changes
|
|
15
|
+
|
|
16
|
+
- Updated dependencies [7865cb6]
|
|
17
|
+
- Updated dependencies [9c4efe6]
|
|
18
|
+
- Updated dependencies [44e62f6]
|
|
19
|
+
- Updated dependencies [94463b6]
|
|
20
|
+
- Updated dependencies [f19da8e]
|
|
21
|
+
- @osdk/api@2.1.0-beta.26
|
|
22
|
+
- @osdk/generator-converters@2.1.0-beta.26
|
|
23
|
+
- @osdk/client.unstable@2.1.0-beta.26
|
|
24
|
+
|
|
25
|
+
## 2.1.0-beta.25
|
|
26
|
+
|
|
27
|
+
### Minor Changes
|
|
28
|
+
|
|
29
|
+
- c80ca45: Add ability to create interfaces through actions now.
|
|
30
|
+
|
|
31
|
+
### Patch Changes
|
|
32
|
+
|
|
33
|
+
- Updated dependencies [c80ca45]
|
|
34
|
+
- @osdk/generator-converters@2.1.0-beta.25
|
|
35
|
+
- @osdk/api@2.1.0-beta.25
|
|
36
|
+
- @osdk/client.unstable@2.1.0-beta.25
|
|
37
|
+
|
|
3
38
|
## 2.1.0-beta.24
|
|
4
39
|
|
|
5
40
|
### Minor Changes
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
* limitations under the License.
|
|
15
15
|
*/
|
|
16
16
|
|
|
17
|
-
import { $Actions, $ontologyRid, actionTakesAttachment, createOffice, createStructPerson, deleteFooInterface, moveOffice } from "@osdk/client.test.ontology";
|
|
17
|
+
import { $Actions, $ontologyRid, actionTakesAttachment, actionTakesMedia, createFooInterface, createOffice, createStructPerson, deleteFooInterface, moveOffice } from "@osdk/client.test.ontology";
|
|
18
18
|
import { apiServer, stubData } from "@osdk/shared.test";
|
|
19
19
|
import { afterAll, beforeAll, describe, expect, expectTypeOf, it, vi } from "vitest";
|
|
20
20
|
import { createClient } from "../createClient.js";
|
|
@@ -181,6 +181,15 @@ describe("actions", () => {
|
|
|
181
181
|
expectTypeOf().toEqualTypeOf();
|
|
182
182
|
expect(result2).toBeUndefined();
|
|
183
183
|
});
|
|
184
|
+
it("Accepts media reference", async () => {
|
|
185
|
+
client(actionTakesMedia).applyAction;
|
|
186
|
+
expectTypeOf().toMatchTypeOf();
|
|
187
|
+
const result = await client(actionTakesMedia).applyAction({
|
|
188
|
+
media_reference: stubData.mediaReference
|
|
189
|
+
});
|
|
190
|
+
expectTypeOf().toEqualTypeOf();
|
|
191
|
+
expect(result).toBeUndefined();
|
|
192
|
+
});
|
|
184
193
|
it("Accepts interfaces", async () => {
|
|
185
194
|
client(deleteFooInterface).applyAction;
|
|
186
195
|
expectTypeOf().toMatchTypeOf();
|
|
@@ -195,6 +204,17 @@ describe("actions", () => {
|
|
|
195
204
|
expectTypeOf().toEqualTypeOf();
|
|
196
205
|
expect(result).toBeUndefined();
|
|
197
206
|
});
|
|
207
|
+
it("Accepts object type refs", async () => {
|
|
208
|
+
client(createFooInterface).applyAction;
|
|
209
|
+
expectTypeOf().toMatchTypeOf();
|
|
210
|
+
client(createFooInterface).batchApplyAction;
|
|
211
|
+
expectTypeOf().toMatchTypeOf();
|
|
212
|
+
const result = await client(createFooInterface).applyAction({
|
|
213
|
+
createdInterface: "UnderlyingObject"
|
|
214
|
+
});
|
|
215
|
+
expectTypeOf().toEqualTypeOf();
|
|
216
|
+
expect(result).toBeUndefined();
|
|
217
|
+
});
|
|
198
218
|
it("conditionally returns edits in batch mode", async () => {
|
|
199
219
|
const result = await client(moveOffice).batchApplyAction([{
|
|
200
220
|
officeId: "SEA",
|
|
@@ -378,7 +398,7 @@ describe("ActionResponse remapping", () => {
|
|
|
378
398
|
});
|
|
379
399
|
it("actions are enumerable", async () => {
|
|
380
400
|
const actions = Object.keys($Actions);
|
|
381
|
-
expect(actions).toStrictEqual(["actionTakesAttachment", "actionTakesObjectSet", "createOffice", "createOfficeAndEmployee", "createStructPerson", "deleteFooInterface", "moveOffice", "promoteEmployee", "promoteEmployeeObject"]);
|
|
401
|
+
expect(actions).toStrictEqual(["actionTakesAttachment", "actionTakesMedia", "actionTakesObjectSet", "createFooInterface", "createOffice", "createOfficeAndEmployee", "createStructPerson", "deleteFooInterface", "moveOffice", "promoteEmployee", "promoteEmployeeObject"]);
|
|
382
402
|
});
|
|
383
403
|
});
|
|
384
404
|
//# sourceMappingURL=actions.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"actions.test.js","names":["$Actions","$ontologyRid","actionTakesAttachment","createOffice","createStructPerson","deleteFooInterface","moveOffice","apiServer","stubData","afterAll","beforeAll","describe","expect","expectTypeOf","it","vi","createClient","createAttachmentUpload","ActionValidationError","remapActionResponse","client","customEntryPointClient","listen","close","result","applyAction","officeId","address","capacity","$returnEdits","toEqualTypeOf","toMatchInlineSnapshot","undefinedResult","toBeUndefined","batchApplyAction","clientCreateOfficeMock","fn","newAddress","newCapacity","$validateOnly","fail","e","toBeInstanceOf","validation","toMatchTypeOf","name","city","state","zipcode","attachment","blob","attachmentUploadRequestBody","localAttachment1","filename","fileAttachment","Object","assign","result2","deletedInterface","$objectType","$primaryKey","actionResponse","edits","type","deletedLinksCount","deletedObjectsCount","addedObjectCount","modifiedObjectsCount","addedLinksCount","batchActionResponse","remappedActionResponse","remappedBatchActionResponse","actions","keys","toStrictEqual"],"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} from \"@osdk/api\";\nimport {\n $Actions,\n $ontologyRid,\n actionTakesAttachment,\n createOffice,\n createStructPerson,\n deleteFooInterface,\n moveOffice,\n} from \"@osdk/client.test.ontology\";\nimport type {\n BatchApplyActionResponseV2,\n SyncApplyActionResponseV2,\n} from \"@osdk/internal.foundry.core\";\nimport { apiServer, stubData } from \"@osdk/shared.test\";\nimport {\n afterAll,\n beforeAll,\n describe,\n expect,\n expectTypeOf,\n it,\n vi,\n} 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(\"actions\", () => {\n let client: Client;\n let customEntryPointClient: Client;\n\n beforeAll(async () => {\n apiServer.listen();\n client = createClient(\n \"https://stack.palantir.com\",\n $ontologyRid,\n async () => \"myAccessToken\",\n );\n customEntryPointClient = createClient(\n \"https://stack.palantirCustom.com/foo/first/someStuff\",\n $ontologyRid,\n async () => \"myAccessToken\",\n );\n });\n\n afterAll(() => {\n apiServer.close();\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).toMatchInlineSnapshot(`\n {\n \"addedLinks\": [],\n \"addedObjects\": [\n {\n \"objectType\": \"Office\",\n \"primaryKey\": \"NYC\",\n },\n ],\n \"deletedLinksCount\": 0,\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 newCapacity: 40,\n }, {\n $validateOnly: true,\n });\n expectTypeOf<typeof result>().toEqualTypeOf<ActionValidationResponse>();\n\n expect(result).toMatchInlineSnapshot(`\n {\n \"parameters\": {},\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 customEntryPointClient(moveOffice).applyAction({\n officeId: \"SEA\",\n newAddress: \"456 Pike Place\",\n newCapacity: 40,\n }, {\n $validateOnly: true,\n });\n expectTypeOf<typeof result>().toEqualTypeOf<ActionValidationResponse>();\n\n expect(result).toMatchInlineSnapshot(`\n {\n \"parameters\": {},\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 newCapacity: 40,\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).toMatchInlineSnapshot(`\n {\n \"parameters\": {},\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 const result = await client(actionTakesAttachment).applyAction({\n attachment: \"attachment.rid\",\n });\n\n expectTypeOf<typeof result>().toEqualTypeOf<undefined>();\n expect(result).toBeUndefined();\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 =\n stubData.attachmentUploadRequestBody[stubData.localAttachment1.filename];\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 const result = await client(actionTakesAttachment).applyAction({\n attachment,\n });\n\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 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: 1,\n },\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).toMatchInlineSnapshot(`\n {\n \"addedLinks\": [],\n \"addedObjects\": [],\n \"deletedLinksCount\": 0,\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 deletedLinksCount: 0,\n deletedObjectsCount: 0,\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 \"deletedLinksCount\": 0,\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 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 \"deletedLinksCount\": 0,\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 \"actionTakesObjectSet\",\n \"createOffice\",\n \"createOfficeAndEmployee\",\n \"createStructPerson\",\n \"deleteFooInterface\",\n \"moveOffice\",\n \"promoteEmployee\",\n \"promoteEmployeeObject\",\n ]);\n });\n});\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"actions.test.js","names":["$Actions","$ontologyRid","actionTakesAttachment","actionTakesMedia","createFooInterface","createOffice","createStructPerson","deleteFooInterface","moveOffice","apiServer","stubData","afterAll","beforeAll","describe","expect","expectTypeOf","it","vi","createClient","createAttachmentUpload","ActionValidationError","remapActionResponse","client","customEntryPointClient","listen","close","result","applyAction","officeId","address","capacity","$returnEdits","toEqualTypeOf","toMatchInlineSnapshot","undefinedResult","toBeUndefined","batchApplyAction","clientCreateOfficeMock","fn","newAddress","newCapacity","$validateOnly","fail","e","toBeInstanceOf","validation","toMatchTypeOf","name","city","state","zipcode","attachment","blob","attachmentUploadRequestBody","localAttachment1","filename","fileAttachment","Object","assign","result2","media_reference","mediaReference","deletedInterface","$objectType","$primaryKey","createdInterface","actionResponse","edits","type","deletedLinksCount","deletedObjectsCount","addedObjectCount","modifiedObjectsCount","addedLinksCount","batchActionResponse","remappedActionResponse","remappedBatchActionResponse","actions","keys","toStrictEqual"],"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 $ontologyRid,\n actionTakesAttachment,\n actionTakesMedia,\n createFooInterface,\n createOffice,\n createStructPerson,\n deleteFooInterface,\n moveOffice,\n} from \"@osdk/client.test.ontology\";\nimport type {\n BatchApplyActionResponseV2,\n SyncApplyActionResponseV2,\n} from \"@osdk/internal.foundry.core\";\nimport { apiServer, stubData } from \"@osdk/shared.test\";\nimport {\n afterAll,\n beforeAll,\n describe,\n expect,\n expectTypeOf,\n it,\n vi,\n} 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(\"actions\", () => {\n let client: Client;\n let customEntryPointClient: Client;\n\n beforeAll(async () => {\n apiServer.listen();\n client = createClient(\n \"https://stack.palantir.com\",\n $ontologyRid,\n async () => \"myAccessToken\",\n );\n customEntryPointClient = createClient(\n \"https://stack.palantirCustom.com/foo/first/someStuff\",\n $ontologyRid,\n async () => \"myAccessToken\",\n );\n });\n\n afterAll(() => {\n apiServer.close();\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).toMatchInlineSnapshot(`\n {\n \"addedLinks\": [],\n \"addedObjects\": [\n {\n \"objectType\": \"Office\",\n \"primaryKey\": \"NYC\",\n },\n ],\n \"deletedLinksCount\": 0,\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 newCapacity: 40,\n }, {\n $validateOnly: true,\n });\n expectTypeOf<typeof result>().toEqualTypeOf<ActionValidationResponse>();\n\n expect(result).toMatchInlineSnapshot(`\n {\n \"parameters\": {},\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 customEntryPointClient(moveOffice).applyAction({\n officeId: \"SEA\",\n newAddress: \"456 Pike Place\",\n newCapacity: 40,\n }, {\n $validateOnly: true,\n });\n expectTypeOf<typeof result>().toEqualTypeOf<ActionValidationResponse>();\n\n expect(result).toMatchInlineSnapshot(`\n {\n \"parameters\": {},\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 newCapacity: 40,\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).toMatchInlineSnapshot(`\n {\n \"parameters\": {},\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 const result = await client(actionTakesAttachment).applyAction({\n attachment: \"attachment.rid\",\n });\n\n expectTypeOf<typeof result>().toEqualTypeOf<undefined>();\n expect(result).toBeUndefined();\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 =\n stubData.attachmentUploadRequestBody[stubData.localAttachment1.filename];\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 const result = await client(actionTakesAttachment).applyAction({\n attachment,\n });\n\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: stubData.mediaReference,\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: 1,\n },\n });\n\n expectTypeOf<typeof result>().toEqualTypeOf<undefined>();\n expect(result).toBeUndefined();\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: \"UnderlyingObject\",\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).toMatchInlineSnapshot(`\n {\n \"addedLinks\": [],\n \"addedObjects\": [],\n \"deletedLinksCount\": 0,\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 deletedLinksCount: 0,\n deletedObjectsCount: 0,\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 \"deletedLinksCount\": 0,\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 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 \"deletedLinksCount\": 0,\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 \"deleteFooInterface\",\n \"moveOffice\",\n \"promoteEmployee\",\n \"promoteEmployeeObject\",\n ]);\n });\n});\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -14,7 +14,8 @@
|
|
|
14
14
|
* limitations under the License.
|
|
15
15
|
*/
|
|
16
16
|
|
|
17
|
-
import { __EXPERIMENTAL__NOT_SUPPORTED_YET__fetchOneByRid, __EXPERIMENTAL__NOT_SUPPORTED_YET__getBulkLinks, __EXPERIMENTAL__NOT_SUPPORTED_YET_subscribe } from "@osdk/api/unstable";
|
|
17
|
+
import { __EXPERIMENTAL__NOT_SUPPORTED_YET__createMediaReference, __EXPERIMENTAL__NOT_SUPPORTED_YET__fetchOneByRid, __EXPERIMENTAL__NOT_SUPPORTED_YET__getBulkLinks, __EXPERIMENTAL__NOT_SUPPORTED_YET_subscribe } from "@osdk/api/unstable";
|
|
18
|
+
import * as OntologiesV2 from "@osdk/internal.foundry.ontologiesv2";
|
|
18
19
|
import { symbolClientContext as oldSymbolClientContext } from "@osdk/shared.client";
|
|
19
20
|
import { createBulkLinksAsyncIterFactory } from "./__unstable/createBulkLinksAsyncIterFactory.js";
|
|
20
21
|
import { applyAction } from "./actions/applyAction.js";
|
|
@@ -97,6 +98,21 @@ baseUrl, ontologyRid, tokenProvider, options = undefined, fetchFn = fetch) {
|
|
|
97
98
|
return await fetchSingle(clientCtx, objectType, options, createWithRid(rid));
|
|
98
99
|
}
|
|
99
100
|
};
|
|
101
|
+
case __EXPERIMENTAL__NOT_SUPPORTED_YET__createMediaReference.name:
|
|
102
|
+
return {
|
|
103
|
+
createMediaReference: async args => {
|
|
104
|
+
const {
|
|
105
|
+
data,
|
|
106
|
+
fileName,
|
|
107
|
+
objectTypeApi,
|
|
108
|
+
propertyTypeApi
|
|
109
|
+
} = args;
|
|
110
|
+
return await OntologiesV2.MediaReferenceProperties.upload(clientCtx, await clientCtx.ontologyRid, objectTypeApi, propertyTypeApi, data, {
|
|
111
|
+
mediaItemPath: fileName,
|
|
112
|
+
preview: true
|
|
113
|
+
});
|
|
114
|
+
}
|
|
115
|
+
};
|
|
100
116
|
}
|
|
101
117
|
throw new Error("not implemented");
|
|
102
118
|
} else {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createClient.js","names":["__EXPERIMENTAL__NOT_SUPPORTED_YET__fetchOneByRid","__EXPERIMENTAL__NOT_SUPPORTED_YET__getBulkLinks","__EXPERIMENTAL__NOT_SUPPORTED_YET_subscribe","symbolClientContext","oldSymbolClientContext","createBulkLinksAsyncIterFactory","applyAction","additionalContext","createMinimalClient","fetchMetadataInternal","fetchSingle","createObjectSet","getWireObjectSet","ObjectSetListenerWebsocket","applyQuery","ActionInvoker","constructor","clientCtx","actionDef","bind","undefined","batchApplyAction","QueryInvoker","queryDef","executeFunction","createClientInternal","objectSetFactory","baseUrl","ontologyRid","tokenProvider","options","fetchFn","fetch","startsWith","Error","then","fetchMetadata","client","Object","defineProperties","o","type","name","getBulkLinks","subscribe","objectSet","listener","opts","pendingSubscribe","getInstance","$objectSetInternals","def","properties","unsubscribe","fetchOneByRid","objectType","rid","createWithRid","value","createClient"],"sources":["createClient.ts"],"sourcesContent":["/*\n * Copyright 2024 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport type {\n ActionDefinition,\n InterfaceDefinition,\n NullabilityAdherence,\n ObjectOrInterfaceDefinition,\n ObjectSet,\n ObjectSetListener,\n ObjectSetListenerOptions,\n ObjectTypeDefinition,\n Osdk,\n PropertyKeys,\n QueryDefinition,\n SelectArg,\n} from \"@osdk/api\";\nimport type {\n Experiment,\n ExperimentFns,\n MinimalObjectSet,\n} from \"@osdk/api/unstable\";\nimport {\n __EXPERIMENTAL__NOT_SUPPORTED_YET__fetchOneByRid,\n __EXPERIMENTAL__NOT_SUPPORTED_YET__getBulkLinks,\n __EXPERIMENTAL__NOT_SUPPORTED_YET_subscribe,\n} from \"@osdk/api/unstable\";\nimport type { ObjectSet as WireObjectSet } from \"@osdk/internal.foundry.core\";\nimport { symbolClientContext as oldSymbolClientContext } from \"@osdk/shared.client\";\nimport { createBulkLinksAsyncIterFactory } from \"./__unstable/createBulkLinksAsyncIterFactory.js\";\nimport type { ActionSignatureFromDef } from \"./actions/applyAction.js\";\nimport { applyAction } from \"./actions/applyAction.js\";\nimport { additionalContext, type Client } from \"./Client.js\";\nimport { createMinimalClient } from \"./createMinimalClient.js\";\nimport { fetchMetadataInternal } from \"./fetchMetadata.js\";\nimport type { Logger } from \"./Logger.js\";\nimport type { MinimalClient } from \"./MinimalClientContext.js\";\nimport { fetchSingle } from \"./object/fetchSingle.js\";\nimport {\n createObjectSet,\n getWireObjectSet,\n} from \"./objectSet/createObjectSet.js\";\nimport type { ObjectSetFactory } from \"./objectSet/ObjectSetFactory.js\";\nimport { ObjectSetListenerWebsocket } from \"./objectSet/ObjectSetListenerWebsocket.js\";\nimport { applyQuery } from \"./queries/applyQuery.js\";\nimport type { QuerySignatureFromDef } from \"./queries/types.js\";\n\n// We import it this way to keep compatible with CJS. If we referenced the\n// value of `symbolClientContext` directly, then we would have to a dynamic import\n// in `createClientInternal` which would make it async and a break.\n// Since this is just a string in `@osdk/shared.client2` instead of a symbol,\n// we can safely perform this trick.\ntype newSymbolClientContext =\n // eslint-disable-next-line @typescript-eslint/consistent-type-imports\n typeof import(\"@osdk/shared.client2\").symbolClientContext;\n\nclass ActionInvoker<Q extends ActionDefinition<any>>\n implements ActionSignatureFromDef<Q>\n{\n constructor(\n clientCtx: MinimalClient,\n actionDef: ActionDefinition<any>,\n ) {\n // We type the property as a generic function as binding `applyAction`\n // doesn't return a type thats all that useful anyway\n // The implements covers us for the most part here as this exact type doesn't\n // escape this file\n this.applyAction = applyAction.bind(undefined, clientCtx, actionDef);\n this.batchApplyAction = applyAction.bind(undefined, clientCtx, actionDef);\n }\n\n applyAction: (...args: any[]) => any;\n batchApplyAction: (...args: any[]) => any;\n}\n\nclass QueryInvoker<Q extends QueryDefinition<any>>\n implements QuerySignatureFromDef<Q>\n{\n constructor(\n clientCtx: MinimalClient,\n queryDef: QueryDefinition<any>,\n ) {\n this.executeFunction = applyQuery.bind(undefined, clientCtx, queryDef);\n }\n\n executeFunction: (...args: any[]) => any;\n}\n\n/** @internal */\nexport function createClientInternal(\n objectSetFactory: ObjectSetFactory<any, any>, // first so i can bind\n baseUrl: string,\n ontologyRid: string | Promise<string>,\n tokenProvider: () => Promise<string>,\n options: { logger?: Logger } | undefined = undefined,\n fetchFn: typeof globalThis.fetch = fetch,\n): Client {\n if (typeof ontologyRid === \"string\") {\n if (!ontologyRid.startsWith(\"ri.\")) {\n throw new Error(\"Invalid ontology RID\");\n }\n } else {\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n ontologyRid.then((ontologyRid) => {\n if (!ontologyRid.startsWith(\"ri.\")) {\n // FIXME this promise is not await so this just shows up as an unhandled promise rejection\n throw new Error(\"Invalid ontology RID\");\n }\n });\n }\n\n const clientCtx: MinimalClient = createMinimalClient(\n { ontologyRid },\n baseUrl,\n tokenProvider,\n options,\n fetchFn,\n objectSetFactory,\n );\n\n function clientFn<\n T extends\n | ObjectOrInterfaceDefinition\n | ActionDefinition<any>\n | QueryDefinition<any>\n | Experiment<\"2.0.8\">\n | Experiment<\"2.1.0\">,\n >(o: T): T extends ObjectTypeDefinition ? ObjectSet<T>\n : T extends InterfaceDefinition ? MinimalObjectSet<T>\n : T extends ActionDefinition<any> ? ActionSignatureFromDef<T>\n : T extends QueryDefinition<any> ? QuerySignatureFromDef<T>\n : T extends Experiment<\"2.0.8\"> | Experiment<\"2.1.0\">\n ? { invoke: ExperimentFns<T> }\n : never\n {\n if (o.type === \"object\" || o.type === \"interface\") {\n return objectSetFactory(o, clientCtx) as any;\n } else if (o.type === \"action\") {\n return new ActionInvoker(\n clientCtx,\n o,\n ) as (T extends ActionDefinition<any>\n // first `as` to the action definition for our \"real\" typecheck\n ? ActionSignatureFromDef<T>\n : never) as any; // then as any for dealing with the conditional return value\n } else if (o.type === \"query\") {\n return new QueryInvoker(\n clientCtx,\n o,\n ) as (T extends QueryDefinition<any> ? QuerySignatureFromDef<T>\n : never) as any;\n } else if (o.type === \"experiment\") {\n switch (o.name) {\n case __EXPERIMENTAL__NOT_SUPPORTED_YET__getBulkLinks.name:\n return {\n getBulkLinks: createBulkLinksAsyncIterFactory(\n clientCtx,\n ),\n } as any;\n case __EXPERIMENTAL__NOT_SUPPORTED_YET_subscribe.name:\n return {\n subscribe: <\n Q extends ObjectOrInterfaceDefinition,\n const P extends PropertyKeys<Q>,\n >(\n objectSet: ObjectSet<Q>,\n listener: ObjectSetListener<Q, P>,\n opts?: ObjectSetListenerOptions<Q, P>,\n ) => {\n const pendingSubscribe = ObjectSetListenerWebsocket.getInstance(\n clientCtx,\n ).subscribe(\n objectSet.$objectSetInternals?.def!,\n getWireObjectSet(objectSet),\n listener,\n opts?.properties,\n );\n\n return { unsubscribe: async () => (await pendingSubscribe)() };\n },\n } as any;\n case __EXPERIMENTAL__NOT_SUPPORTED_YET__fetchOneByRid.name:\n return {\n fetchOneByRid: async <\n Q extends ObjectTypeDefinition,\n const L extends PropertyKeys<Q>,\n const R extends boolean,\n const S extends false | \"throw\" = NullabilityAdherence.Default,\n >(\n objectType: Q,\n rid: string,\n options: SelectArg<Q, L, R, S>,\n ) => {\n return await fetchSingle(\n clientCtx,\n objectType,\n options,\n createWithRid(\n rid,\n ),\n ) as Osdk<Q>;\n },\n } as any;\n }\n\n throw new Error(\"not implemented\");\n } else {\n throw new Error(\"not implemented\");\n }\n }\n\n const fetchMetadata = fetchMetadataInternal.bind(\n undefined,\n clientCtx,\n );\n\n const symbolClientContext: newSymbolClientContext = \"__osdkClientContext\";\n\n const client: Client = Object.defineProperties<Client>(\n clientFn as Client,\n {\n [oldSymbolClientContext]: {\n value: clientCtx,\n },\n [symbolClientContext]: {\n value: clientCtx,\n },\n [additionalContext]: {\n value: clientCtx,\n },\n fetchMetadata: {\n value: fetchMetadata,\n },\n } satisfies Record<keyof Client, PropertyDescriptor>,\n );\n\n return client;\n}\n\nexport const createClient: (\n baseUrl: string,\n ontologyRid: string | Promise<string>,\n tokenProvider: () => Promise<string>,\n options?: {\n logger?: Logger;\n } | undefined,\n fetchFn?: typeof fetch | undefined,\n) => Client = createClientInternal.bind(\n undefined,\n createObjectSet,\n);\n\nfunction createWithRid(\n rid: string,\n) {\n const withRid: WireObjectSet = {\n type: \"static\",\n \"objects\": [rid],\n };\n\n return withRid;\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"createClient.js","names":["__EXPERIMENTAL__NOT_SUPPORTED_YET__createMediaReference","__EXPERIMENTAL__NOT_SUPPORTED_YET__fetchOneByRid","__EXPERIMENTAL__NOT_SUPPORTED_YET__getBulkLinks","__EXPERIMENTAL__NOT_SUPPORTED_YET_subscribe","OntologiesV2","symbolClientContext","oldSymbolClientContext","createBulkLinksAsyncIterFactory","applyAction","additionalContext","createMinimalClient","fetchMetadataInternal","fetchSingle","createObjectSet","getWireObjectSet","ObjectSetListenerWebsocket","applyQuery","ActionInvoker","constructor","clientCtx","actionDef","bind","undefined","batchApplyAction","QueryInvoker","queryDef","executeFunction","createClientInternal","objectSetFactory","baseUrl","ontologyRid","tokenProvider","options","fetchFn","fetch","startsWith","Error","then","fetchMetadata","client","Object","defineProperties","o","type","name","getBulkLinks","subscribe","objectSet","listener","opts","pendingSubscribe","getInstance","$objectSetInternals","def","properties","unsubscribe","fetchOneByRid","objectType","rid","createWithRid","createMediaReference","args","data","fileName","objectTypeApi","propertyTypeApi","MediaReferenceProperties","upload","mediaItemPath","preview","value","createClient"],"sources":["createClient.ts"],"sourcesContent":["/*\n * Copyright 2024 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport type {\n ActionDefinition,\n InterfaceDefinition,\n NullabilityAdherence,\n ObjectOrInterfaceDefinition,\n ObjectSet,\n ObjectSetListener,\n ObjectSetListenerOptions,\n ObjectTypeDefinition,\n Osdk,\n PropertyKeys,\n QueryDefinition,\n SelectArg,\n} from \"@osdk/api\";\nimport type {\n Experiment,\n ExperimentFns,\n MinimalObjectSet,\n} from \"@osdk/api/unstable\";\nimport {\n __EXPERIMENTAL__NOT_SUPPORTED_YET__createMediaReference,\n __EXPERIMENTAL__NOT_SUPPORTED_YET__fetchOneByRid,\n __EXPERIMENTAL__NOT_SUPPORTED_YET__getBulkLinks,\n __EXPERIMENTAL__NOT_SUPPORTED_YET_subscribe,\n} from \"@osdk/api/unstable\";\nimport type { ObjectSet as WireObjectSet } from \"@osdk/internal.foundry.core\";\nimport * as OntologiesV2 from \"@osdk/internal.foundry.ontologiesv2\";\nimport { symbolClientContext as oldSymbolClientContext } from \"@osdk/shared.client\";\nimport { createBulkLinksAsyncIterFactory } from \"./__unstable/createBulkLinksAsyncIterFactory.js\";\nimport type { ActionSignatureFromDef } from \"./actions/applyAction.js\";\nimport { applyAction } from \"./actions/applyAction.js\";\nimport { additionalContext, type Client } from \"./Client.js\";\nimport { createMinimalClient } from \"./createMinimalClient.js\";\nimport { fetchMetadataInternal } from \"./fetchMetadata.js\";\nimport type { Logger } from \"./Logger.js\";\nimport type { MinimalClient } from \"./MinimalClientContext.js\";\nimport { fetchSingle } from \"./object/fetchSingle.js\";\nimport {\n createObjectSet,\n getWireObjectSet,\n} from \"./objectSet/createObjectSet.js\";\nimport type { ObjectSetFactory } from \"./objectSet/ObjectSetFactory.js\";\nimport { ObjectSetListenerWebsocket } from \"./objectSet/ObjectSetListenerWebsocket.js\";\nimport { applyQuery } from \"./queries/applyQuery.js\";\nimport type { QuerySignatureFromDef } from \"./queries/types.js\";\n\n// We import it this way to keep compatible with CJS. If we referenced the\n// value of `symbolClientContext` directly, then we would have to a dynamic import\n// in `createClientInternal` which would make it async and a break.\n// Since this is just a string in `@osdk/shared.client2` instead of a symbol,\n// we can safely perform this trick.\ntype newSymbolClientContext =\n // eslint-disable-next-line @typescript-eslint/consistent-type-imports\n typeof import(\"@osdk/shared.client2\").symbolClientContext;\n\nclass ActionInvoker<Q extends ActionDefinition<any>>\n implements ActionSignatureFromDef<Q>\n{\n constructor(\n clientCtx: MinimalClient,\n actionDef: ActionDefinition<any>,\n ) {\n // We type the property as a generic function as binding `applyAction`\n // doesn't return a type thats all that useful anyway\n // The implements covers us for the most part here as this exact type doesn't\n // escape this file\n this.applyAction = applyAction.bind(undefined, clientCtx, actionDef);\n this.batchApplyAction = applyAction.bind(undefined, clientCtx, actionDef);\n }\n\n applyAction: (...args: any[]) => any;\n batchApplyAction: (...args: any[]) => any;\n}\n\nclass QueryInvoker<Q extends QueryDefinition<any>>\n implements QuerySignatureFromDef<Q>\n{\n constructor(\n clientCtx: MinimalClient,\n queryDef: QueryDefinition<any>,\n ) {\n this.executeFunction = applyQuery.bind(undefined, clientCtx, queryDef);\n }\n\n executeFunction: (...args: any[]) => any;\n}\n\n/** @internal */\nexport function createClientInternal(\n objectSetFactory: ObjectSetFactory<any, any>, // first so i can bind\n baseUrl: string,\n ontologyRid: string | Promise<string>,\n tokenProvider: () => Promise<string>,\n options: { logger?: Logger } | undefined = undefined,\n fetchFn: typeof globalThis.fetch = fetch,\n): Client {\n if (typeof ontologyRid === \"string\") {\n if (!ontologyRid.startsWith(\"ri.\")) {\n throw new Error(\"Invalid ontology RID\");\n }\n } else {\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n ontologyRid.then((ontologyRid) => {\n if (!ontologyRid.startsWith(\"ri.\")) {\n // FIXME this promise is not await so this just shows up as an unhandled promise rejection\n throw new Error(\"Invalid ontology RID\");\n }\n });\n }\n\n const clientCtx: MinimalClient = createMinimalClient(\n { ontologyRid },\n baseUrl,\n tokenProvider,\n options,\n fetchFn,\n objectSetFactory,\n );\n\n function clientFn<\n T extends\n | ObjectOrInterfaceDefinition\n | ActionDefinition<any>\n | QueryDefinition<any>\n | Experiment<\"2.0.8\">\n | Experiment<\"2.1.0\">,\n >(o: T): T extends ObjectTypeDefinition ? ObjectSet<T>\n : T extends InterfaceDefinition ? MinimalObjectSet<T>\n : T extends ActionDefinition<any> ? ActionSignatureFromDef<T>\n : T extends QueryDefinition<any> ? QuerySignatureFromDef<T>\n : T extends Experiment<\"2.0.8\"> | Experiment<\"2.1.0\">\n ? { invoke: ExperimentFns<T> }\n : never\n {\n if (o.type === \"object\" || o.type === \"interface\") {\n return objectSetFactory(o, clientCtx) as any;\n } else if (o.type === \"action\") {\n return new ActionInvoker(\n clientCtx,\n o,\n ) as (T extends ActionDefinition<any>\n // first `as` to the action definition for our \"real\" typecheck\n ? ActionSignatureFromDef<T>\n : never) as any; // then as any for dealing with the conditional return value\n } else if (o.type === \"query\") {\n return new QueryInvoker(\n clientCtx,\n o,\n ) as (T extends QueryDefinition<any> ? QuerySignatureFromDef<T>\n : never) as any;\n } else if (o.type === \"experiment\") {\n switch (o.name) {\n case __EXPERIMENTAL__NOT_SUPPORTED_YET__getBulkLinks.name:\n return {\n getBulkLinks: createBulkLinksAsyncIterFactory(\n clientCtx,\n ),\n } as any;\n case __EXPERIMENTAL__NOT_SUPPORTED_YET_subscribe.name:\n return {\n subscribe: <\n Q extends ObjectOrInterfaceDefinition,\n const P extends PropertyKeys<Q>,\n >(\n objectSet: ObjectSet<Q>,\n listener: ObjectSetListener<Q, P>,\n opts?: ObjectSetListenerOptions<Q, P>,\n ) => {\n const pendingSubscribe = ObjectSetListenerWebsocket.getInstance(\n clientCtx,\n ).subscribe(\n objectSet.$objectSetInternals?.def!,\n getWireObjectSet(objectSet),\n listener,\n opts?.properties,\n );\n\n return { unsubscribe: async () => (await pendingSubscribe)() };\n },\n } as any;\n case __EXPERIMENTAL__NOT_SUPPORTED_YET__fetchOneByRid.name:\n return {\n fetchOneByRid: async <\n Q extends ObjectTypeDefinition,\n const L extends PropertyKeys<Q>,\n const R extends boolean,\n const S extends false | \"throw\" = NullabilityAdherence.Default,\n >(\n objectType: Q,\n rid: string,\n options: SelectArg<Q, L, R, S>,\n ) => {\n return await fetchSingle(\n clientCtx,\n objectType,\n options,\n createWithRid(\n rid,\n ),\n ) as Osdk<Q>;\n },\n } as any;\n case __EXPERIMENTAL__NOT_SUPPORTED_YET__createMediaReference.name:\n return {\n createMediaReference: async (args: {\n data: Blob;\n fileName: string;\n objectTypeApi: string;\n propertyTypeApi: string;\n }) => {\n const { data, fileName, objectTypeApi, propertyTypeApi } = args;\n return await OntologiesV2.MediaReferenceProperties.upload(\n clientCtx,\n await clientCtx.ontologyRid,\n objectTypeApi,\n propertyTypeApi,\n data,\n {\n mediaItemPath: fileName,\n preview: true,\n },\n );\n },\n } as any;\n }\n\n throw new Error(\"not implemented\");\n } else {\n throw new Error(\"not implemented\");\n }\n }\n\n const fetchMetadata = fetchMetadataInternal.bind(\n undefined,\n clientCtx,\n );\n\n const symbolClientContext: newSymbolClientContext = \"__osdkClientContext\";\n\n const client: Client = Object.defineProperties<Client>(\n clientFn as Client,\n {\n [oldSymbolClientContext]: {\n value: clientCtx,\n },\n [symbolClientContext]: {\n value: clientCtx,\n },\n [additionalContext]: {\n value: clientCtx,\n },\n fetchMetadata: {\n value: fetchMetadata,\n },\n } satisfies Record<keyof Client, PropertyDescriptor>,\n );\n\n return client;\n}\n\nexport const createClient: (\n baseUrl: string,\n ontologyRid: string | Promise<string>,\n tokenProvider: () => Promise<string>,\n options?: {\n logger?: Logger;\n } | undefined,\n fetchFn?: typeof fetch | undefined,\n) => Client = createClientInternal.bind(\n undefined,\n createObjectSet,\n);\n\nfunction createWithRid(\n rid: string,\n) {\n const withRid: WireObjectSet = {\n type: \"static\",\n \"objects\": [rid],\n };\n\n return withRid;\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["isOk","PalantirApiError","ActionValidationError","createClient","createPlatformClient","createAttachmentUpload","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 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.js\";\nexport { createAttachmentUpload } from \"./object/AttachmentUpload.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;;
|
|
1
|
+
{"version":3,"file":"index.js","names":["isOk","PalantirApiError","ActionValidationError","createClient","createPlatformClient","createAttachmentUpload","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 Attachment,\n InterfaceDefinition,\n ObjectMetadata,\n ObjectSet,\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.js\";\nexport { createAttachmentUpload } from \"./object/AttachmentUpload.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;AAGrE,SACEC,WAAW,EACXC,sBAAsB,EACtBC,gBAAgB,QACX,8BAA8B","ignoreList":[]}
|
|
@@ -49,9 +49,17 @@ export function modernToLegacyWhereClause(whereClause, objectOrInterface) {
|
|
|
49
49
|
value: parts.map(v => handleWherePair(v, objectOrInterface))
|
|
50
50
|
};
|
|
51
51
|
}
|
|
52
|
-
function makeGeoFilterBbox(
|
|
52
|
+
function makeGeoFilterBbox(bbox, filterType, propertyIdentifier, field) {
|
|
53
53
|
return {
|
|
54
54
|
type: filterType === "$within" ? "withinBoundingBox" : "intersectsBoundingBox",
|
|
55
|
+
/**
|
|
56
|
+
* This is a bit ugly, but did this so that propertyIdentifier only shows up in the return object if its defined,
|
|
57
|
+
* this makes it so we don't need to go update our entire test bed either to include a field which may change in near future.
|
|
58
|
+
* Once we solidify that this is the way forward, I can remove field and clean this up
|
|
59
|
+
*/
|
|
60
|
+
...(propertyIdentifier != null && {
|
|
61
|
+
propertyIdentifier
|
|
62
|
+
}),
|
|
55
63
|
field,
|
|
56
64
|
value: {
|
|
57
65
|
topLeft: {
|
|
@@ -65,9 +73,12 @@ function makeGeoFilterBbox(field, bbox, filterType) {
|
|
|
65
73
|
}
|
|
66
74
|
};
|
|
67
75
|
}
|
|
68
|
-
function makeGeoFilterPolygon(
|
|
76
|
+
function makeGeoFilterPolygon(coordinates, filterType, propertyIdentifier, field) {
|
|
69
77
|
return {
|
|
70
78
|
type: filterType,
|
|
79
|
+
...(propertyIdentifier != null && {
|
|
80
|
+
propertyIdentifier
|
|
81
|
+
}),
|
|
71
82
|
field,
|
|
72
83
|
value: {
|
|
73
84
|
type: "Polygon",
|
|
@@ -75,18 +86,20 @@ function makeGeoFilterPolygon(field, coordinates, filterType) {
|
|
|
75
86
|
}
|
|
76
87
|
};
|
|
77
88
|
}
|
|
78
|
-
function handleWherePair([
|
|
89
|
+
function handleWherePair([fieldName, filter], objectOrInterface, structFieldSelector) {
|
|
79
90
|
!(filter != null) ? process.env.NODE_ENV !== "production" ? invariant(false, "Defined key values are only allowed when they are not undefined.") : invariant(false) : void 0;
|
|
91
|
+
const propertyIdentifier = structFieldSelector != null ? {
|
|
92
|
+
type: "structField",
|
|
93
|
+
...structFieldSelector,
|
|
94
|
+
propertyApiName: fullyQualifyPropName(structFieldSelector.propertyApiName, objectOrInterface)
|
|
95
|
+
} : undefined;
|
|
96
|
+
const field = structFieldSelector == null ? fullyQualifyPropName(fieldName, objectOrInterface) : undefined;
|
|
80
97
|
if (typeof filter === "string" || typeof filter === "number" || typeof filter === "boolean") {
|
|
81
|
-
if (objectOrInterface.type === "interface") {
|
|
82
|
-
const [objApiNamespace] = extractNamespace(objectOrInterface.apiName);
|
|
83
|
-
const [fieldApiNamespace, fieldShortName] = extractNamespace(field);
|
|
84
|
-
if (fieldApiNamespace == null && objApiNamespace != null) {
|
|
85
|
-
field = `${objApiNamespace}.${fieldShortName}`;
|
|
86
|
-
}
|
|
87
|
-
}
|
|
88
98
|
return {
|
|
89
99
|
type: "eq",
|
|
100
|
+
...(propertyIdentifier != null && {
|
|
101
|
+
propertyIdentifier
|
|
102
|
+
}),
|
|
90
103
|
field,
|
|
91
104
|
value: filter
|
|
92
105
|
};
|
|
@@ -98,8 +111,13 @@ function handleWherePair([field, filter], objectOrInterface) {
|
|
|
98
111
|
const hasDollarSign = keysOfFilter.some(key => key.startsWith("$"));
|
|
99
112
|
!(!hasDollarSign || keysOfFilter.length === 1) ? process.env.NODE_ENV !== "production" ? invariant(false, "WhereClause Filter with multiple clauses isn't allowed") : invariant(false) : void 0;
|
|
100
113
|
if (!hasDollarSign) {
|
|
101
|
-
|
|
102
|
-
|
|
114
|
+
const structFilter = Object.entries(filter);
|
|
115
|
+
!(structFilter.length === 1) ? process.env.NODE_ENV !== "production" ? invariant(false, "Cannot filter on more than one struct field in the same clause, need to use an and clause") : invariant(false) : void 0;
|
|
116
|
+
const structFieldApiName = keysOfFilter[0];
|
|
117
|
+
return handleWherePair(Object.entries(filter)[0], objectOrInterface, {
|
|
118
|
+
propertyApiName: fieldName,
|
|
119
|
+
structFieldApiName
|
|
120
|
+
});
|
|
103
121
|
}
|
|
104
122
|
const firstKey = keysOfFilter[0];
|
|
105
123
|
!(filter[firstKey] != null) ? process.env.NODE_ENV !== "production" ? invariant(false) : invariant(false) : void 0;
|
|
@@ -108,6 +126,9 @@ function handleWherePair([field, filter], objectOrInterface) {
|
|
|
108
126
|
type: "not",
|
|
109
127
|
value: {
|
|
110
128
|
type: "eq",
|
|
129
|
+
...(propertyIdentifier != null && {
|
|
130
|
+
propertyIdentifier
|
|
131
|
+
}),
|
|
111
132
|
field,
|
|
112
133
|
value: filter[firstKey]
|
|
113
134
|
}
|
|
@@ -116,12 +137,15 @@ function handleWherePair([field, filter], objectOrInterface) {
|
|
|
116
137
|
if (firstKey === "$within") {
|
|
117
138
|
const withinBody = filter[firstKey];
|
|
118
139
|
if (Array.isArray(withinBody)) {
|
|
119
|
-
return makeGeoFilterBbox(
|
|
140
|
+
return makeGeoFilterBbox(withinBody, firstKey, propertyIdentifier, field);
|
|
120
141
|
} else if ("$bbox" in withinBody && withinBody.$bbox != null) {
|
|
121
|
-
return makeGeoFilterBbox(
|
|
142
|
+
return makeGeoFilterBbox(withinBody.$bbox, firstKey, propertyIdentifier, field);
|
|
122
143
|
} else if ("$distance" in withinBody && "$of" in withinBody && withinBody.$distance != null && withinBody.$of != null) {
|
|
123
144
|
return {
|
|
124
145
|
type: "withinDistanceOf",
|
|
146
|
+
...(propertyIdentifier != null && {
|
|
147
|
+
propertyIdentifier
|
|
148
|
+
}),
|
|
125
149
|
field,
|
|
126
150
|
value: {
|
|
127
151
|
center: Array.isArray(withinBody.$of) ? {
|
|
@@ -136,23 +160,26 @@ function handleWherePair([field, filter], objectOrInterface) {
|
|
|
136
160
|
};
|
|
137
161
|
} else {
|
|
138
162
|
const coordinates = "$polygon" in withinBody ? withinBody.$polygon : withinBody.coordinates;
|
|
139
|
-
return makeGeoFilterPolygon(
|
|
163
|
+
return makeGeoFilterPolygon(coordinates, "withinPolygon", propertyIdentifier, fieldName);
|
|
140
164
|
}
|
|
141
165
|
}
|
|
142
166
|
if (firstKey === "$intersects") {
|
|
143
167
|
const intersectsBody = filter[firstKey];
|
|
144
168
|
if (Array.isArray(intersectsBody)) {
|
|
145
|
-
return makeGeoFilterBbox(
|
|
169
|
+
return makeGeoFilterBbox(intersectsBody, firstKey, propertyIdentifier, field);
|
|
146
170
|
} else if ("$bbox" in intersectsBody && intersectsBody.$bbox != null) {
|
|
147
|
-
return makeGeoFilterBbox(
|
|
171
|
+
return makeGeoFilterBbox(intersectsBody.$bbox, firstKey, propertyIdentifier, field);
|
|
148
172
|
} else {
|
|
149
173
|
const coordinates = "$polygon" in intersectsBody ? intersectsBody.$polygon : intersectsBody.coordinates;
|
|
150
|
-
return makeGeoFilterPolygon(
|
|
174
|
+
return makeGeoFilterPolygon(coordinates, "intersectsPolygon", propertyIdentifier, field);
|
|
151
175
|
}
|
|
152
176
|
}
|
|
153
177
|
if (firstKey === "$containsAllTerms" || firstKey === "$containsAnyTerm") {
|
|
154
178
|
return {
|
|
155
179
|
type: firstKey.substring(1),
|
|
180
|
+
...(propertyIdentifier != null && {
|
|
181
|
+
propertyIdentifier
|
|
182
|
+
}),
|
|
156
183
|
field,
|
|
157
184
|
value: typeof filter[firstKey] === "string" ? filter[firstKey] : filter[firstKey]["term"],
|
|
158
185
|
fuzzy: typeof filter[firstKey] === "string" ? false : filter[firstKey]["fuzzySearch"] ?? false
|
|
@@ -160,8 +187,19 @@ function handleWherePair([field, filter], objectOrInterface) {
|
|
|
160
187
|
}
|
|
161
188
|
return {
|
|
162
189
|
type: firstKey.substring(1),
|
|
190
|
+
...(propertyIdentifier != null && {
|
|
191
|
+
propertyIdentifier
|
|
192
|
+
}),
|
|
163
193
|
field,
|
|
164
194
|
value: filter[firstKey]
|
|
165
195
|
};
|
|
166
196
|
}
|
|
197
|
+
function fullyQualifyPropName(fieldName, objectOrInterface) {
|
|
198
|
+
if (objectOrInterface.type === "interface") {
|
|
199
|
+
const [objApiNamespace] = extractNamespace(objectOrInterface.apiName);
|
|
200
|
+
const [fieldApiNamespace, fieldShortName] = extractNamespace(fieldName);
|
|
201
|
+
return fieldApiNamespace == null && objApiNamespace != null ? `${objApiNamespace}.${fieldShortName}` : fieldName;
|
|
202
|
+
}
|
|
203
|
+
return fieldName;
|
|
204
|
+
}
|
|
167
205
|
//# sourceMappingURL=modernToLegacyWhereClause.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"modernToLegacyWhereClause.js","names":["DistanceUnitMapping","invariant","extractNamespace","fqApiName","last","lastIndexOf","undefined","slice","modernToLegacyWhereClause","whereClause","objectOrInterface","type","value","$and","map","clause","$or","$not","parts","Object","entries","length","handleWherePair","v","makeGeoFilterBbox","field","bbox","filterType","topLeft","coordinates","bottomRight","makeGeoFilterPolygon","filter","process","env","NODE_ENV","objApiNamespace","apiName","fieldApiNamespace","fieldShortName","keysOfFilter","keys","hasDollarSign","some","key","startsWith","Error","JSON","stringify","firstKey","withinBody","Array","isArray","$bbox","$distance","$of","center","distance","unit","$polygon","intersectsBody","substring","fuzzy"],"sources":["modernToLegacyWhereClause.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 GeoFilterOptions,\n ObjectOrInterfaceDefinition,\n PossibleWhereClauseFilters,\n WhereClause,\n} from \"@osdk/api\";\nimport { DistanceUnitMapping } from \"@osdk/api\";\n\nimport type { SearchJsonQueryV2 } from \"@osdk/internal.foundry.core\";\nimport type { BBox, Position } from \"geojson\";\nimport invariant from \"tiny-invariant\";\n\nexport function extractNamespace(\n fqApiName: string,\n): [string | undefined, string] {\n const last = fqApiName.lastIndexOf(\".\");\n if (last === -1) return [undefined, fqApiName];\n return [fqApiName.slice(0, last), fqApiName.slice(last + 1)];\n}\n\n/** @internal */\nexport function modernToLegacyWhereClause<\n T extends ObjectOrInterfaceDefinition,\n>(\n whereClause: WhereClause<T>,\n objectOrInterface: T,\n): SearchJsonQueryV2 {\n if (\"$and\" in whereClause) {\n return {\n type: \"and\",\n value: (whereClause.$and as WhereClause<T>[]).map(\n (clause) => modernToLegacyWhereClause(clause, objectOrInterface),\n ),\n };\n } else if (\"$or\" in whereClause) {\n return {\n type: \"or\",\n value: (whereClause.$or as WhereClause<T>[]).map(\n (clause) => modernToLegacyWhereClause(clause, objectOrInterface),\n ),\n };\n } else if (\"$not\" in whereClause) {\n return {\n type: \"not\",\n value: modernToLegacyWhereClause(\n whereClause.$not as WhereClause<T>,\n objectOrInterface,\n ),\n };\n }\n\n const parts = Object.entries(whereClause);\n\n if (parts.length === 1) {\n return handleWherePair(parts[0], objectOrInterface);\n }\n\n return {\n type: \"and\",\n value: parts.map<SearchJsonQueryV2>(\n v => handleWherePair(v, objectOrInterface),\n ),\n };\n}\n\nfunction makeGeoFilterBbox(\n field: string,\n bbox: BBox,\n filterType: \"$within\" | \"$intersects\",\n): SearchJsonQueryV2 {\n return {\n type: filterType === \"$within\"\n ? \"withinBoundingBox\"\n : \"intersectsBoundingBox\",\n field,\n value: {\n topLeft: {\n type: \"Point\",\n coordinates: [bbox[0], bbox[3]],\n },\n bottomRight: {\n type: \"Point\",\n coordinates: [bbox[2], bbox[1]],\n },\n },\n };\n}\n\nfunction makeGeoFilterPolygon(\n field: string,\n coordinates: Position[][],\n filterType: \"intersectsPolygon\" | \"withinPolygon\",\n): SearchJsonQueryV2 {\n return {\n type: filterType,\n field,\n value: {\n type: \"Polygon\",\n coordinates,\n },\n };\n}\n\nfunction handleWherePair(\n [field, filter]: [string, any],\n objectOrInterface: ObjectOrInterfaceDefinition,\n): SearchJsonQueryV2 {\n invariant(\n filter != null,\n \"Defined key values are only allowed when they are not undefined.\",\n );\n\n if (\n typeof filter === \"string\" || typeof filter === \"number\"\n || typeof filter === \"boolean\"\n ) {\n if (objectOrInterface.type === \"interface\") {\n const [objApiNamespace] = extractNamespace(objectOrInterface.apiName);\n const [fieldApiNamespace, fieldShortName] = extractNamespace(field);\n\n if (fieldApiNamespace == null && objApiNamespace != null) {\n field = `${objApiNamespace}.${fieldShortName}`;\n }\n }\n\n return {\n type: \"eq\",\n field,\n value: filter,\n };\n }\n\n const keysOfFilter = Object.keys(filter);\n\n // If any of the keys start with `$` then they must be the only one.\n // e.g. `where({ name: { $eq: \"foo\", $ne: \"bar\" } })` is invalid currently\n const hasDollarSign = keysOfFilter.some((key) => key.startsWith(\"$\"));\n invariant(\n !hasDollarSign\n || keysOfFilter.length === 1,\n \"WhereClause Filter with multiple clauses isn't allowed\",\n );\n\n if (!hasDollarSign) {\n // Future case for structs\n throw new Error(\n `Unsupported filter. Did you forget to use a $-prefixed filter? (${\n JSON.stringify(filter)\n })`,\n );\n }\n\n const firstKey = keysOfFilter[0] as PossibleWhereClauseFilters;\n invariant(filter[firstKey] != null);\n\n if (firstKey === \"$ne\") {\n return {\n type: \"not\",\n value: {\n type: \"eq\",\n field,\n value: filter[firstKey],\n },\n };\n }\n\n if (firstKey === \"$within\") {\n const withinBody = filter[firstKey] as GeoFilterOptions[\"$within\"];\n\n if (Array.isArray(withinBody)) {\n return makeGeoFilterBbox(field, withinBody, firstKey);\n } else if (\"$bbox\" in withinBody && withinBody.$bbox != null) {\n return makeGeoFilterBbox(field, withinBody.$bbox, firstKey);\n } else if (\n (\"$distance\" in withinBody && \"$of\" in withinBody)\n && withinBody.$distance != null\n && withinBody.$of != null\n ) {\n return {\n type: \"withinDistanceOf\",\n field,\n value: {\n center: Array.isArray(withinBody.$of)\n ? {\n type: \"Point\",\n coordinates: withinBody.$of,\n }\n : withinBody.$of,\n distance: {\n value: withinBody.$distance[0],\n unit: DistanceUnitMapping[withinBody.$distance[1]],\n },\n },\n };\n } else {\n const coordinates = (\"$polygon\" in withinBody)\n ? withinBody.$polygon\n : withinBody.coordinates;\n return makeGeoFilterPolygon(field, coordinates, \"withinPolygon\");\n }\n }\n if (firstKey === \"$intersects\") {\n const intersectsBody = filter[firstKey] as GeoFilterOptions[\"$intersects\"];\n if (Array.isArray(intersectsBody)) {\n return makeGeoFilterBbox(field, intersectsBody, firstKey);\n } else if (\"$bbox\" in intersectsBody && intersectsBody.$bbox != null) {\n return makeGeoFilterBbox(field, intersectsBody.$bbox, firstKey);\n } else {\n const coordinates = (\"$polygon\" in intersectsBody)\n ? intersectsBody.$polygon\n : intersectsBody.coordinates;\n return makeGeoFilterPolygon(field, coordinates, \"intersectsPolygon\");\n }\n }\n\n if (firstKey === \"$containsAllTerms\" || firstKey === \"$containsAnyTerm\") {\n return {\n type: firstKey.substring(1) as DropDollarSign<typeof firstKey>,\n field,\n value: typeof filter[firstKey] === \"string\"\n ? filter[firstKey]\n : filter[firstKey][\"term\"],\n fuzzy: typeof filter[firstKey] === \"string\"\n ? false\n : filter[firstKey][\"fuzzySearch\"] ?? false,\n };\n }\n\n return {\n type: firstKey.substring(1) as DropDollarSign<typeof firstKey>,\n field,\n value: filter[firstKey] as any,\n };\n}\n\ntype DropDollarSign<T extends `$${string}`> = T extends `$${infer U}` ? U\n : never;\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAQA,SAASA,mBAAmB,QAAQ,WAAW;AAI/C,OAAOC,SAAS,MAAM,gBAAgB;AAEtC,OAAO,SAASC,gBAAgBA,CAC9BC,SAAiB,EACa;EAC9B,MAAMC,IAAI,GAAGD,SAAS,CAACE,WAAW,CAAC,GAAG,CAAC;EACvC,IAAID,IAAI,KAAK,CAAC,CAAC,EAAE,OAAO,CAACE,SAAS,EAAEH,SAAS,CAAC;EAC9C,OAAO,CAACA,SAAS,CAACI,KAAK,CAAC,CAAC,EAAEH,IAAI,CAAC,EAAED,SAAS,CAACI,KAAK,CAACH,IAAI,GAAG,CAAC,CAAC,CAAC;AAC9D;;AAEA;AACA,OAAO,SAASI,yBAAyBA,CAGvCC,WAA2B,EAC3BC,iBAAoB,EACD;EACnB,IAAI,MAAM,IAAID,WAAW,EAAE;IACzB,OAAO;MACLE,IAAI,EAAE,KAAK;MACXC,KAAK,EAAGH,WAAW,CAACI,IAAI,CAAsBC,GAAG,CAC9CC,MAAM,IAAKP,yBAAyB,CAACO,MAAM,EAAEL,iBAAiB,CACjE;IACF,CAAC;EACH,CAAC,MAAM,IAAI,KAAK,IAAID,WAAW,EAAE;IAC/B,OAAO;MACLE,IAAI,EAAE,IAAI;MACVC,KAAK,EAAGH,WAAW,CAACO,GAAG,CAAsBF,GAAG,CAC7CC,MAAM,IAAKP,yBAAyB,CAACO,MAAM,EAAEL,iBAAiB,CACjE;IACF,CAAC;EACH,CAAC,MAAM,IAAI,MAAM,IAAID,WAAW,EAAE;IAChC,OAAO;MACLE,IAAI,EAAE,KAAK;MACXC,KAAK,EAAEJ,yBAAyB,CAC9BC,WAAW,CAACQ,IAAI,EAChBP,iBACF;IACF,CAAC;EACH;EAEA,MAAMQ,KAAK,GAAGC,MAAM,CAACC,OAAO,CAACX,WAAW,CAAC;EAEzC,IAAIS,KAAK,CAACG,MAAM,KAAK,CAAC,EAAE;IACtB,OAAOC,eAAe,CAACJ,KAAK,CAAC,CAAC,CAAC,EAAER,iBAAiB,CAAC;EACrD;EAEA,OAAO;IACLC,IAAI,EAAE,KAAK;IACXC,KAAK,EAAEM,KAAK,CAACJ,GAAG,CACdS,CAAC,IAAID,eAAe,CAACC,CAAC,EAAEb,iBAAiB,CAC3C;EACF,CAAC;AACH;AAEA,SAASc,iBAAiBA,CACxBC,KAAa,EACbC,IAAU,EACVC,UAAqC,EAClB;EACnB,OAAO;IACLhB,IAAI,EAAEgB,UAAU,KAAK,SAAS,GAC1B,mBAAmB,GACnB,uBAAuB;IAC3BF,KAAK;IACLb,KAAK,EAAE;MACLgB,OAAO,EAAE;QACPjB,IAAI,EAAE,OAAO;QACbkB,WAAW,EAAE,CAACH,IAAI,CAAC,CAAC,CAAC,EAAEA,IAAI,CAAC,CAAC,CAAC;MAChC,CAAC;MACDI,WAAW,EAAE;QACXnB,IAAI,EAAE,OAAO;QACbkB,WAAW,EAAE,CAACH,IAAI,CAAC,CAAC,CAAC,EAAEA,IAAI,CAAC,CAAC,CAAC;MAChC;IACF;EACF,CAAC;AACH;AAEA,SAASK,oBAAoBA,CAC3BN,KAAa,EACbI,WAAyB,EACzBF,UAAiD,EAC9B;EACnB,OAAO;IACLhB,IAAI,EAAEgB,UAAU;IAChBF,KAAK;IACLb,KAAK,EAAE;MACLD,IAAI,EAAE,SAAS;MACfkB;IACF;EACF,CAAC;AACH;AAEA,SAASP,eAAeA,CACtB,CAACG,KAAK,EAAEO,MAAM,CAAgB,EAC9BtB,iBAA8C,EAC3B;EACnB,EACEsB,MAAM,IAAI,IAAI,IAAAC,OAAA,CAAAC,GAAA,CAAAC,QAAA,oBADhBlC,SAAS,QAEP,kEAAkE,IAFpEA,SAAS;EAKT,IACE,OAAO+B,MAAM,KAAK,QAAQ,IAAI,OAAOA,MAAM,KAAK,QAAQ,IACrD,OAAOA,MAAM,KAAK,SAAS,EAC9B;IACA,IAAItB,iBAAiB,CAACC,IAAI,KAAK,WAAW,EAAE;MAC1C,MAAM,CAACyB,eAAe,CAAC,GAAGlC,gBAAgB,CAACQ,iBAAiB,CAAC2B,OAAO,CAAC;MACrE,MAAM,CAACC,iBAAiB,EAAEC,cAAc,CAAC,GAAGrC,gBAAgB,CAACuB,KAAK,CAAC;MAEnE,IAAIa,iBAAiB,IAAI,IAAI,IAAIF,eAAe,IAAI,IAAI,EAAE;QACxDX,KAAK,GAAG,GAAGW,eAAe,IAAIG,cAAc,EAAE;MAChD;IACF;IAEA,OAAO;MACL5B,IAAI,EAAE,IAAI;MACVc,KAAK;MACLb,KAAK,EAAEoB;IACT,CAAC;EACH;EAEA,MAAMQ,YAAY,GAAGrB,MAAM,CAACsB,IAAI,CAACT,MAAM,CAAC;;EAExC;EACA;EACA,MAAMU,aAAa,GAAGF,YAAY,CAACG,IAAI,CAAEC,GAAG,IAAKA,GAAG,CAACC,UAAU,CAAC,GAAG,CAAC,CAAC;EACrE,EACE,CAACH,aAAa,IACTF,YAAY,CAACnB,MAAM,KAAK,CAAC,IAAAY,OAAA,CAAAC,GAAA,CAAAC,QAAA,oBAFhClC,SAAS,QAGP,wDAAwD,IAH1DA,SAAS;EAMT,IAAI,CAACyC,aAAa,EAAE;IAClB;IACA,MAAM,IAAII,KAAK,CACb,mEACEC,IAAI,CAACC,SAAS,CAAChB,MAAM,CAAC,GAE1B,CAAC;EACH;EAEA,MAAMiB,QAAQ,GAAGT,YAAY,CAAC,CAAC,CAA+B;EAC9D,EAAUR,MAAM,CAACiB,QAAQ,CAAC,IAAI,IAAI,IAAAhB,OAAA,CAAAC,GAAA,CAAAC,QAAA,oBAAlClC,SAAS,UAATA,SAAS;EAET,IAAIgD,QAAQ,KAAK,KAAK,EAAE;IACtB,OAAO;MACLtC,IAAI,EAAE,KAAK;MACXC,KAAK,EAAE;QACLD,IAAI,EAAE,IAAI;QACVc,KAAK;QACLb,KAAK,EAAEoB,MAAM,CAACiB,QAAQ;MACxB;IACF,CAAC;EACH;EAEA,IAAIA,QAAQ,KAAK,SAAS,EAAE;IAC1B,MAAMC,UAAU,GAAGlB,MAAM,CAACiB,QAAQ,CAAgC;IAElE,IAAIE,KAAK,CAACC,OAAO,CAACF,UAAU,CAAC,EAAE;MAC7B,OAAO1B,iBAAiB,CAACC,KAAK,EAAEyB,UAAU,EAAED,QAAQ,CAAC;IACvD,CAAC,MAAM,IAAI,OAAO,IAAIC,UAAU,IAAIA,UAAU,CAACG,KAAK,IAAI,IAAI,EAAE;MAC5D,OAAO7B,iBAAiB,CAACC,KAAK,EAAEyB,UAAU,CAACG,KAAK,EAAEJ,QAAQ,CAAC;IAC7D,CAAC,MAAM,IACJ,WAAW,IAAIC,UAAU,IAAI,KAAK,IAAIA,UAAU,IAC9CA,UAAU,CAACI,SAAS,IAAI,IAAI,IAC5BJ,UAAU,CAACK,GAAG,IAAI,IAAI,EACzB;MACA,OAAO;QACL5C,IAAI,EAAE,kBAAkB;QACxBc,KAAK;QACLb,KAAK,EAAE;UACL4C,MAAM,EAAEL,KAAK,CAACC,OAAO,CAACF,UAAU,CAACK,GAAG,CAAC,GACjC;YACA5C,IAAI,EAAE,OAAO;YACbkB,WAAW,EAAEqB,UAAU,CAACK;UAC1B,CAAC,GACCL,UAAU,CAACK,GAAG;UAClBE,QAAQ,EAAE;YACR7C,KAAK,EAAEsC,UAAU,CAACI,SAAS,CAAC,CAAC,CAAC;YAC9BI,IAAI,EAAE1D,mBAAmB,CAACkD,UAAU,CAACI,SAAS,CAAC,CAAC,CAAC;UACnD;QACF;MACF,CAAC;IACH,CAAC,MAAM;MACL,MAAMzB,WAAW,GAAI,UAAU,IAAIqB,UAAU,GACzCA,UAAU,CAACS,QAAQ,GACnBT,UAAU,CAACrB,WAAW;MAC1B,OAAOE,oBAAoB,CAACN,KAAK,EAAEI,WAAW,EAAE,eAAe,CAAC;IAClE;EACF;EACA,IAAIoB,QAAQ,KAAK,aAAa,EAAE;IAC9B,MAAMW,cAAc,GAAG5B,MAAM,CAACiB,QAAQ,CAAoC;IAC1E,IAAIE,KAAK,CAACC,OAAO,CAACQ,cAAc,CAAC,EAAE;MACjC,OAAOpC,iBAAiB,CAACC,KAAK,EAAEmC,cAAc,EAAEX,QAAQ,CAAC;IAC3D,CAAC,MAAM,IAAI,OAAO,IAAIW,cAAc,IAAIA,cAAc,CAACP,KAAK,IAAI,IAAI,EAAE;MACpE,OAAO7B,iBAAiB,CAACC,KAAK,EAAEmC,cAAc,CAACP,KAAK,EAAEJ,QAAQ,CAAC;IACjE,CAAC,MAAM;MACL,MAAMpB,WAAW,GAAI,UAAU,IAAI+B,cAAc,GAC7CA,cAAc,CAACD,QAAQ,GACvBC,cAAc,CAAC/B,WAAW;MAC9B,OAAOE,oBAAoB,CAACN,KAAK,EAAEI,WAAW,EAAE,mBAAmB,CAAC;IACtE;EACF;EAEA,IAAIoB,QAAQ,KAAK,mBAAmB,IAAIA,QAAQ,KAAK,kBAAkB,EAAE;IACvE,OAAO;MACLtC,IAAI,EAAEsC,QAAQ,CAACY,SAAS,CAAC,CAAC,CAAoC;MAC9DpC,KAAK;MACLb,KAAK,EAAE,OAAOoB,MAAM,CAACiB,QAAQ,CAAC,KAAK,QAAQ,GACvCjB,MAAM,CAACiB,QAAQ,CAAC,GAChBjB,MAAM,CAACiB,QAAQ,CAAC,CAAC,MAAM,CAAC;MAC5Ba,KAAK,EAAE,OAAO9B,MAAM,CAACiB,QAAQ,CAAC,KAAK,QAAQ,GACvC,KAAK,GACLjB,MAAM,CAACiB,QAAQ,CAAC,CAAC,aAAa,CAAC,IAAI;IACzC,CAAC;EACH;EAEA,OAAO;IACLtC,IAAI,EAAEsC,QAAQ,CAACY,SAAS,CAAC,CAAC,CAAoC;IAC9DpC,KAAK;IACLb,KAAK,EAAEoB,MAAM,CAACiB,QAAQ;EACxB,CAAC;AACH","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"modernToLegacyWhereClause.js","names":["DistanceUnitMapping","invariant","extractNamespace","fqApiName","last","lastIndexOf","undefined","slice","modernToLegacyWhereClause","whereClause","objectOrInterface","type","value","$and","map","clause","$or","$not","parts","Object","entries","length","handleWherePair","v","makeGeoFilterBbox","bbox","filterType","propertyIdentifier","field","topLeft","coordinates","bottomRight","makeGeoFilterPolygon","fieldName","filter","structFieldSelector","process","env","NODE_ENV","propertyApiName","fullyQualifyPropName","keysOfFilter","keys","hasDollarSign","some","key","startsWith","structFilter","structFieldApiName","firstKey","withinBody","Array","isArray","$bbox","$distance","$of","center","distance","unit","$polygon","intersectsBody","substring","fuzzy","objApiNamespace","apiName","fieldApiNamespace","fieldShortName"],"sources":["modernToLegacyWhereClause.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 GeoFilterOptions,\n ObjectOrInterfaceDefinition,\n PossibleWhereClauseFilters,\n WhereClause,\n} from \"@osdk/api\";\nimport { DistanceUnitMapping } from \"@osdk/api\";\n\nimport type {\n PropertyIdentifier,\n SearchJsonQueryV2,\n} from \"@osdk/internal.foundry.core\";\nimport type { BBox, Position } from \"geojson\";\nimport invariant from \"tiny-invariant\";\n\nexport function extractNamespace(\n fqApiName: string,\n): [string | undefined, string] {\n const last = fqApiName.lastIndexOf(\".\");\n if (last === -1) return [undefined, fqApiName];\n return [fqApiName.slice(0, last), fqApiName.slice(last + 1)];\n}\n\n/** @internal */\nexport function modernToLegacyWhereClause<\n T extends ObjectOrInterfaceDefinition,\n>(\n whereClause: WhereClause<T>,\n objectOrInterface: T,\n): SearchJsonQueryV2 {\n if (\"$and\" in whereClause) {\n return {\n type: \"and\",\n value: (whereClause.$and as WhereClause<T>[]).map(\n (clause) => modernToLegacyWhereClause(clause, objectOrInterface),\n ),\n };\n } else if (\"$or\" in whereClause) {\n return {\n type: \"or\",\n value: (whereClause.$or as WhereClause<T>[]).map(\n (clause) => modernToLegacyWhereClause(clause, objectOrInterface),\n ),\n };\n } else if (\"$not\" in whereClause) {\n return {\n type: \"not\",\n value: modernToLegacyWhereClause(\n whereClause.$not as WhereClause<T>,\n objectOrInterface,\n ),\n };\n }\n\n const parts = Object.entries(whereClause);\n\n if (parts.length === 1) {\n return handleWherePair(parts[0], objectOrInterface);\n }\n\n return {\n type: \"and\",\n value: parts.map<SearchJsonQueryV2>(\n v => handleWherePair(v, objectOrInterface),\n ),\n };\n}\n\nfunction makeGeoFilterBbox(\n bbox: BBox,\n filterType: \"$within\" | \"$intersects\",\n propertyIdentifier?: PropertyIdentifier,\n field?: string,\n): SearchJsonQueryV2 {\n return {\n type: filterType === \"$within\"\n ? \"withinBoundingBox\"\n : \"intersectsBoundingBox\",\n /**\n * This is a bit ugly, but did this so that propertyIdentifier only shows up in the return object if its defined,\n * this makes it so we don't need to go update our entire test bed either to include a field which may change in near future.\n * Once we solidify that this is the way forward, I can remove field and clean this up\n */\n ...(propertyIdentifier != null && { propertyIdentifier }),\n field,\n value: {\n topLeft: {\n type: \"Point\",\n coordinates: [bbox[0], bbox[3]],\n },\n bottomRight: {\n type: \"Point\",\n coordinates: [bbox[2], bbox[1]],\n },\n },\n };\n}\n\nfunction makeGeoFilterPolygon(\n coordinates: Position[][],\n filterType: \"intersectsPolygon\" | \"withinPolygon\",\n propertyIdentifier?: PropertyIdentifier,\n field?: string,\n): SearchJsonQueryV2 {\n return {\n type: filterType,\n ...(propertyIdentifier != null && { propertyIdentifier }),\n field,\n value: {\n type: \"Polygon\",\n coordinates,\n },\n };\n}\n\nfunction handleWherePair(\n [fieldName, filter]: [string, any],\n objectOrInterface: ObjectOrInterfaceDefinition,\n structFieldSelector?: { propertyApiName: string; structFieldApiName: string },\n): SearchJsonQueryV2 {\n invariant(\n filter != null,\n \"Defined key values are only allowed when they are not undefined.\",\n );\n\n const propertyIdentifier: PropertyIdentifier | undefined =\n structFieldSelector != null\n ? {\n type: \"structField\",\n ...structFieldSelector,\n propertyApiName: fullyQualifyPropName(\n structFieldSelector.propertyApiName,\n objectOrInterface,\n ),\n }\n : undefined;\n const field = structFieldSelector == null\n ? fullyQualifyPropName(fieldName, objectOrInterface)\n : undefined;\n\n if (\n typeof filter === \"string\" || typeof filter === \"number\"\n || typeof filter === \"boolean\"\n ) {\n propertyIdentifier;\n return {\n type: \"eq\",\n ...(propertyIdentifier != null\n && { propertyIdentifier }),\n field,\n value: filter,\n };\n }\n\n const keysOfFilter = Object.keys(filter);\n\n // If any of the keys start with `$` then they must be the only one.\n // e.g. `where({ name: { $eq: \"foo\", $ne: \"bar\" } })` is invalid currently\n const hasDollarSign = keysOfFilter.some((key) => key.startsWith(\"$\"));\n invariant(\n !hasDollarSign\n || keysOfFilter.length === 1,\n \"WhereClause Filter with multiple clauses isn't allowed\",\n );\n\n if (!hasDollarSign) {\n const structFilter = Object.entries(filter);\n invariant(\n structFilter.length === 1,\n \"Cannot filter on more than one struct field in the same clause, need to use an and clause\",\n );\n const structFieldApiName = keysOfFilter[0];\n return handleWherePair(Object.entries(filter)[0], objectOrInterface, {\n propertyApiName: fieldName,\n structFieldApiName,\n });\n }\n\n const firstKey = keysOfFilter[0] as PossibleWhereClauseFilters;\n invariant(filter[firstKey] != null);\n\n if (firstKey === \"$ne\") {\n return {\n type: \"not\",\n value: {\n type: \"eq\",\n ...(propertyIdentifier != null && { propertyIdentifier }),\n field,\n value: filter[firstKey],\n },\n };\n }\n\n if (firstKey === \"$within\") {\n const withinBody = filter[firstKey] as GeoFilterOptions[\"$within\"];\n\n if (Array.isArray(withinBody)) {\n return makeGeoFilterBbox(withinBody, firstKey, propertyIdentifier, field);\n } else if (\"$bbox\" in withinBody && withinBody.$bbox != null) {\n return makeGeoFilterBbox(\n withinBody.$bbox,\n firstKey,\n propertyIdentifier,\n field,\n );\n } else if (\n (\"$distance\" in withinBody && \"$of\" in withinBody)\n && withinBody.$distance != null\n && withinBody.$of != null\n ) {\n return {\n type: \"withinDistanceOf\",\n ...(propertyIdentifier != null && { propertyIdentifier }),\n field,\n value: {\n center: Array.isArray(withinBody.$of)\n ? {\n type: \"Point\",\n coordinates: withinBody.$of,\n }\n : withinBody.$of,\n distance: {\n value: withinBody.$distance[0],\n unit: DistanceUnitMapping[withinBody.$distance[1]],\n },\n },\n };\n } else {\n const coordinates = (\"$polygon\" in withinBody)\n ? withinBody.$polygon\n : withinBody.coordinates;\n return makeGeoFilterPolygon(\n coordinates,\n \"withinPolygon\",\n propertyIdentifier,\n fieldName,\n );\n }\n }\n if (firstKey === \"$intersects\") {\n const intersectsBody = filter[firstKey] as GeoFilterOptions[\"$intersects\"];\n if (Array.isArray(intersectsBody)) {\n return makeGeoFilterBbox(\n intersectsBody,\n firstKey,\n propertyIdentifier,\n field,\n );\n } else if (\"$bbox\" in intersectsBody && intersectsBody.$bbox != null) {\n return makeGeoFilterBbox(\n intersectsBody.$bbox,\n firstKey,\n propertyIdentifier,\n field,\n );\n } else {\n const coordinates = (\"$polygon\" in intersectsBody)\n ? intersectsBody.$polygon\n : intersectsBody.coordinates;\n return makeGeoFilterPolygon(\n coordinates,\n \"intersectsPolygon\",\n propertyIdentifier,\n field,\n );\n }\n }\n\n if (firstKey === \"$containsAllTerms\" || firstKey === \"$containsAnyTerm\") {\n return {\n type: firstKey.substring(1) as DropDollarSign<typeof firstKey>,\n ...(propertyIdentifier != null && { propertyIdentifier }),\n field,\n value: typeof filter[firstKey] === \"string\"\n ? filter[firstKey]\n : filter[firstKey][\"term\"],\n fuzzy: typeof filter[firstKey] === \"string\"\n ? false\n : filter[firstKey][\"fuzzySearch\"] ?? false,\n };\n }\n\n return {\n type: firstKey.substring(1) as DropDollarSign<typeof firstKey>,\n ...(propertyIdentifier != null && { propertyIdentifier }),\n field,\n value: filter[firstKey] as any,\n };\n}\n\ntype DropDollarSign<T extends `$${string}`> = T extends `$${infer U}` ? U\n : never;\n\nfunction fullyQualifyPropName(\n fieldName: string,\n objectOrInterface: ObjectOrInterfaceDefinition,\n) {\n if (objectOrInterface.type === \"interface\") {\n const [objApiNamespace] = extractNamespace(objectOrInterface.apiName);\n const [fieldApiNamespace, fieldShortName] = extractNamespace(fieldName);\n return (fieldApiNamespace == null && objApiNamespace != null)\n ? `${objApiNamespace}.${fieldShortName}`\n : fieldName;\n }\n return fieldName;\n}\n"],"mappings":"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","ignoreList":[]}
|