@osdk/client 0.7.0 → 0.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (76) hide show
  1. package/build/js/{chunk-OBZVMJLZ.mjs → chunk-BQNFWSLL.mjs} +130 -54
  2. package/build/js/chunk-BQNFWSLL.mjs.map +1 -0
  3. package/build/js/{chunk-EU5GNJBK.cjs → chunk-KAL57TC5.cjs} +129 -53
  4. package/build/js/chunk-KAL57TC5.cjs.map +1 -0
  5. package/build/js/index.cjs +32 -14
  6. package/build/js/index.cjs.map +1 -1
  7. package/build/js/index.mjs +28 -10
  8. package/build/js/index.mjs.map +1 -1
  9. package/build/js/public/objects.cjs +3 -3
  10. package/build/js/public/objects.mjs +1 -1
  11. package/build/types/Client.d.ts +3 -3
  12. package/build/types/ObjectSetCreator.d.ts +3 -3
  13. package/build/types/OsdkObjectFrom.d.ts +11 -17
  14. package/build/types/actions/Actions.d.ts +17 -13
  15. package/build/types/actions/applyAction.d.ts +3 -10
  16. package/build/types/actions/createActionInvoker.d.ts +2 -1
  17. package/build/types/definitions/LinkDefinitions.d.ts +12 -13
  18. package/build/types/generatedNoCheck/Ontology.d.ts +13 -477
  19. package/build/types/generatedNoCheck/ontology/actions/actionTakesAttachment.d.ts +22 -10
  20. package/build/types/generatedNoCheck/ontology/actions/actionTakesObjectSet.d.ts +23 -13
  21. package/build/types/generatedNoCheck/ontology/actions/createOffice.d.ts +40 -28
  22. package/build/types/generatedNoCheck/ontology/actions/createOfficeAndEmployee.d.ts +46 -34
  23. package/build/types/generatedNoCheck/ontology/actions/index.d.ts +7 -7
  24. package/build/types/generatedNoCheck/ontology/actions/moveOffice.d.ts +40 -28
  25. package/build/types/generatedNoCheck/ontology/actions/promoteEmployee.d.ts +32 -20
  26. package/build/types/generatedNoCheck/ontology/actions/promoteEmployeeObject.d.ts +33 -23
  27. package/build/types/generatedNoCheck/ontology/objects/Employee.d.ts +20 -25
  28. package/build/types/generatedNoCheck/ontology/objects/ObjectWithTimestampPrimaryKey.d.ts +10 -7
  29. package/build/types/generatedNoCheck/ontology/objects/Office.d.ts +16 -15
  30. package/build/types/generatedNoCheck/ontology/objects/equipment.d.ts +10 -7
  31. package/build/types/generatedNoCheck/ontology/objects/objectTypeWithAllPropertyTypes.d.ts +38 -35
  32. package/build/types/index.d.ts +3 -1
  33. package/build/types/internal/conversions/legacyToModernSingleAggregationResult.d.ts +1 -1
  34. package/build/types/internal/conversions/modernToLegacyAggregationClause.d.ts +1 -2
  35. package/build/types/internal/conversions/modernToLegacyGroupByClause.d.ts +1 -2
  36. package/build/types/internal/conversions/modernToLegacyWhereClause.test.d.ts +1 -0
  37. package/build/types/object/aggregateOrThrow.d.ts +3 -2
  38. package/build/types/object/fetchPageOrThrow.d.ts +4 -4
  39. package/build/types/object/followLinkOrThrow.d.ts +1 -1
  40. package/build/types/object/getLinkedObjectByPkOrThrow.d.ts +1 -1
  41. package/build/types/object/getLinkedObjectOrThrow.d.ts +5 -2
  42. package/build/types/object/pageLinkedObjectsOrThrow.d.ts +4 -6
  43. package/build/types/objectSet/LinkTypesFrom.d.ts +2 -2
  44. package/build/types/objectSet/ObjectSet.d.ts +13 -11
  45. package/build/types/objectSet/ObjectSet.test.d.ts +1 -0
  46. package/build/types/objectSet/ObjectSetListener.d.ts +7 -7
  47. package/build/types/objectSet/ObjectSetListenerWebsocket.d.ts +2 -2
  48. package/build/types/objectSet/createObjectSet.d.ts +2 -2
  49. package/build/types/query/WhereClause.d.ts +46 -7
  50. package/build/types/query/aggregations/AggregatableKeys.d.ts +3 -3
  51. package/build/types/query/aggregations/AggregateOpts.d.ts +4 -4
  52. package/build/types/query/aggregations/AggregationResultsWithGroups.d.ts +4 -4
  53. package/build/types/query/aggregations/AggregationResultsWithoutGroups.d.ts +5 -5
  54. package/build/types/query/aggregations/AggregationsClause.d.ts +5 -5
  55. package/build/types/query/aggregations/AggregationsClause.test.d.ts +4 -2
  56. package/build/types/query/aggregations/AggregationsResults.d.ts +2 -2
  57. package/build/types/query/aggregations/GroupByClause.d.ts +4 -4
  58. package/build/types/query/aggregations/GroupByClause.test.d.ts +2 -1
  59. package/build/types/util/test/mockOntology.d.ts +50 -48
  60. package/changelog/0.6.0/pr-9.v2.yml +5 -0
  61. package/changelog/0.7.0/pr-20.v2.yml +5 -0
  62. package/changelog/0.7.0/pr-24.v2.yml +5 -0
  63. package/changelog/0.7.0/pr-28.v2.yml +5 -0
  64. package/changelog/0.8.0/pr-30.v2.yml +5 -0
  65. package/changelog/0.9.0/pr-43.v2.yml +5 -0
  66. package/changelog/0.9.0/pr-45.v2.yml +5 -0
  67. package/changelog/0.9.0/pr-48.v2.yml +5 -0
  68. package/changelog/0.9.0/pr-59.v2.yml +5 -0
  69. package/changelog/0.9.0/pr-65.v2.yml +5 -0
  70. package/changelog/0.9.0/pr-72.v2.yml +5 -0
  71. package/changelog/0.9.0/pr-75.v2.yml +5 -0
  72. package/changelog/@unreleased/.gitkeep +0 -0
  73. package/package.json +12 -6
  74. package/build/js/chunk-EU5GNJBK.cjs.map +0 -1
  75. package/build/js/chunk-OBZVMJLZ.mjs.map +0 -1
  76. /package/{CHANGELOG.md → CHANGELOG_OLD.md} +0 -0
@@ -1,4 +1,4 @@
1
- import { aggregateObjectsV2, loadObjectSetV2, getLinkedObjectV2, listLinkedObjectsV2 } from '@osdk/gateway/requests';
1
+ import { aggregateObjectSetV2, loadObjectSetV2, getLinkedObjectV2, listLinkedObjectsV2 } from '@osdk/gateway/requests';
2
2
  import { createOpenApiRequest, PalantirApiError } from '@osdk/shared.net';
3
3
  import invariant2 from 'tiny-invariant';
4
4
 
@@ -10,7 +10,7 @@ var __export = (target, all) => {
10
10
  function legacyToModernSingleAggregationResult(entry) {
11
11
  return entry.metrics.reduce((accumulator, curValue) => {
12
12
  const parts = curValue.name.split(".");
13
- !(parts.length == 2) ? process.env.NODE_ENV !== "production" ? invariant2(false, "assumed we were getting a `${key}.${type}`") : invariant2(false) : void 0;
13
+ !(parts.length === 2) ? process.env.NODE_ENV !== "production" ? invariant2(false, "assumed we were getting a `${key}.${type}`") : invariant2(false) : void 0;
14
14
  if (!(parts[0] in accumulator)) {
15
15
  accumulator[parts[0]] = {};
16
16
  }
@@ -62,6 +62,32 @@ function modernToLegacyGroupByClause(groupByClause) {
62
62
  }
63
63
  });
64
64
  }
65
+
66
+ // src/query/WhereClause.ts
67
+ var DistanceUnitMapping = {
68
+ "centimeter": "CENTIMETERS",
69
+ "centimeters": "CENTIMETERS",
70
+ "cm": "CENTIMETERS",
71
+ "meter": "METERS",
72
+ "meters": "METERS",
73
+ "m": "METERS",
74
+ "kilometer": "KILOMETERS",
75
+ "kilometers": "KILOMETERS",
76
+ "km": "KILOMETERS",
77
+ "inch": "INCHES",
78
+ "inches": "INCHES",
79
+ "foot": "FEET",
80
+ "feet": "FEET",
81
+ "yard": "YARDS",
82
+ "yards": "YARDS",
83
+ "mile": "MILES",
84
+ "miles": "MILES",
85
+ "nautical_mile": "NAUTICAL_MILES",
86
+ "nauticalMile": "NAUTICAL_MILES",
87
+ "nautical miles": "NAUTICAL_MILES"
88
+ };
89
+
90
+ // src/internal/conversions/modernToLegacyWhereClause.ts
65
91
  function modernToLegacyWhereClause(whereClause) {
66
92
  if ("$and" in whereClause) {
67
93
  return {
@@ -81,69 +107,115 @@ function modernToLegacyWhereClause(whereClause) {
81
107
  }
82
108
  const parts = Object.entries(whereClause);
83
109
  if (parts.length === 1) {
84
- const [field, filter] = parts[0];
85
- !(filter != null) ? process.env.NODE_ENV !== "production" ? invariant2(false, "Defined key values are only allowed when they are not undefined.") : invariant2(false) : void 0;
86
- if (typeof filter === "string" || typeof filter === "number") {
87
- return {
88
- type: "eq",
89
- field,
90
- value: filter
91
- };
110
+ return handleWherePair(parts[0]);
111
+ }
112
+ return {
113
+ type: "and",
114
+ value: parts.map(handleWherePair)
115
+ };
116
+ }
117
+ function makeGeoFilterBbox(field, bbox, filterType) {
118
+ return {
119
+ type: filterType === "$within" ? "withinBoundingBox" : "intersectsBoundingBox",
120
+ field,
121
+ value: {
122
+ topLeft: {
123
+ type: "Point",
124
+ coordinates: [bbox[0], bbox[3]]
125
+ },
126
+ bottomRight: {
127
+ type: "Point",
128
+ coordinates: [bbox[2], bbox[1]]
129
+ }
92
130
  }
93
- !(Object.keys(filter).length === 1) ? process.env.NODE_ENV !== "production" ? invariant2(false, "WhereClause Filter with multiple properties isn't allowed") : invariant2(false) : void 0;
94
- const type = Object.keys(filter)[0];
95
- !(filter[type] != null) ? process.env.NODE_ENV !== "production" ? invariant2(false) : invariant2(false) : void 0;
96
- if (type === "ne") {
97
- return {
98
- type: "not",
99
- value: {
100
- type: "eq",
101
- field,
102
- value: filter[type]
103
- }
104
- };
131
+ };
132
+ }
133
+ function makeGeoFilterPolygon(field, coordinates, filterType) {
134
+ return {
135
+ type: filterType,
136
+ field,
137
+ value: {
138
+ type: "Polygon",
139
+ coordinates
105
140
  }
141
+ };
142
+ }
143
+ function handleWherePair([field, filter]) {
144
+ !(filter != null) ? process.env.NODE_ENV !== "production" ? invariant2(false, "Defined key values are only allowed when they are not undefined.") : invariant2(false) : void 0;
145
+ if (typeof filter === "string" || typeof filter === "number") {
106
146
  return {
107
- type,
147
+ type: "eq",
108
148
  field,
109
- value: filter[type]
149
+ value: filter
110
150
  };
111
151
  }
112
- return {
113
- type: "and",
114
- value: Object.entries(whereClause).map(([field, filter]) => {
115
- !(filter != null) ? process.env.NODE_ENV !== "production" ? invariant2(false, "Defined key values are only allowed when they are not undefined.") : invariant2(false) : void 0;
116
- if (typeof filter === "string" || typeof filter === "number") {
117
- return {
118
- type: "eq",
119
- field,
120
- value: filter
121
- };
122
- }
123
- !(Object.keys(filter).length === 1) ? process.env.NODE_ENV !== "production" ? invariant2(false, "WhereClause Filter with multiple properties isn't allowed") : invariant2(false) : void 0;
124
- const q = Object.keys(filter)[0];
125
- !(filter[q] != null) ? process.env.NODE_ENV !== "production" ? invariant2(false) : invariant2(false) : void 0;
126
- if (q === "ne") {
127
- return {
128
- type: "not",
129
- value: {
130
- type: "eq",
131
- field,
132
- value: filter[q]
133
- }
134
- };
152
+ const keysOfFilter = Object.keys(filter);
153
+ const hasDollarSign = keysOfFilter.some((key) => key.startsWith("$"));
154
+ !(!hasDollarSign || keysOfFilter.length === 1) ? process.env.NODE_ENV !== "production" ? invariant2(false, "WhereClause Filter with multiple clauses isn't allowed") : invariant2(false) : void 0;
155
+ if (!hasDollarSign) {
156
+ throw new Error("Unsupported filter. Did you forget to use a $-prefixed filter?");
157
+ }
158
+ const firstKey = keysOfFilter[0];
159
+ !(filter[firstKey] != null) ? process.env.NODE_ENV !== "production" ? invariant2(false) : invariant2(false) : void 0;
160
+ if (firstKey === "$ne") {
161
+ return {
162
+ type: "not",
163
+ value: {
164
+ type: "eq",
165
+ field,
166
+ value: filter[firstKey]
135
167
  }
168
+ };
169
+ }
170
+ if (firstKey === "$within") {
171
+ const withinBody = filter[firstKey];
172
+ if (Array.isArray(withinBody)) {
173
+ return makeGeoFilterBbox(field, withinBody, firstKey);
174
+ } else if ("bbox" in withinBody && !("type" in withinBody)) {
175
+ return makeGeoFilterBbox(field, withinBody.bbox, firstKey);
176
+ } else if ("distance" in withinBody && "of" in withinBody) {
136
177
  return {
137
- type: q,
178
+ type: "withinDistanceOf",
138
179
  field,
139
- value: filter[q]
180
+ value: {
181
+ center: Array.isArray(withinBody.of) ? {
182
+ type: "Point",
183
+ coordinates: withinBody.of
184
+ } : withinBody.of,
185
+ distance: {
186
+ value: withinBody.distance[0],
187
+ unit: DistanceUnitMapping[withinBody.distance[1]]
188
+ }
189
+ }
140
190
  };
141
- })
191
+ } else {
192
+ const coordinates = "polygon" in withinBody ? withinBody.polygon : withinBody.coordinates;
193
+ return makeGeoFilterPolygon(field, coordinates, "withinPolygon");
194
+ }
195
+ }
196
+ if (firstKey === "$intersects") {
197
+ const intersectsBody = filter[firstKey];
198
+ if (Array.isArray(intersectsBody)) {
199
+ return makeGeoFilterBbox(field, intersectsBody, firstKey);
200
+ } else if ("bbox" in intersectsBody && !("type" in intersectsBody)) {
201
+ return makeGeoFilterBbox(field, intersectsBody.bbox, firstKey);
202
+ } else {
203
+ const coordinates = "polygon" in intersectsBody ? intersectsBody.polygon : intersectsBody.coordinates;
204
+ return makeGeoFilterPolygon(field, coordinates, "intersectsPolygon");
205
+ }
206
+ }
207
+ return {
208
+ type: firstKey.substring(1),
209
+ field,
210
+ value: filter[firstKey]
142
211
  };
143
212
  }
144
213
 
145
214
  // src/object/aggregateOrThrow.ts
146
- async function aggregateOrThrow(clientCtx, objectType, req) {
215
+ async function aggregateOrThrow(clientCtx, objectType, objectSet = {
216
+ type: "base",
217
+ objectType: objectType["apiName"]
218
+ }, req) {
147
219
  const body = {
148
220
  aggregation: modernToLegacyAggregationClause(req.select),
149
221
  groupBy: [],
@@ -155,7 +227,11 @@ async function aggregateOrThrow(clientCtx, objectType, req) {
155
227
  if (req.where) {
156
228
  body.where = modernToLegacyWhereClause(req.where);
157
229
  }
158
- const result = await aggregateObjectsV2(createOpenApiRequest(clientCtx.stack, clientCtx.fetch), clientCtx.ontology.metadata.ontologyApiName, objectType, body);
230
+ const result = await aggregateObjectSetV2(createOpenApiRequest(clientCtx.stack, clientCtx.fetch), clientCtx.ontology.metadata.ontologyApiName, {
231
+ objectSet,
232
+ groupBy: body.groupBy,
233
+ aggregation: body.aggregation
234
+ });
159
235
  if (!req.groupBy) {
160
236
  !(result.data.length === 1) ? process.env.NODE_ENV !== "production" ? invariant2(false, "no group by clause should mean only one data result") : invariant2(false) : void 0;
161
237
  return legacyToModernSingleAggregationResult(result.data[0]);
@@ -312,7 +388,7 @@ function convertWireToOsdkObjects(client, objs) {
312
388
  // src/object/fetchPageOrThrow.ts
313
389
  async function fetchPageOrThrow(client, objectType, args, objectSet = {
314
390
  type: "base",
315
- objectType
391
+ objectType: objectType["apiName"]
316
392
  }) {
317
393
  const body = {
318
394
  objectSet,
@@ -340,4 +416,4 @@ __export(object_exports, {
340
416
 
341
417
  export { aggregateOrThrow, convertWireToOsdkObjects, fetchPageOrThrow, isAttachment, modernToLegacyWhereClause, object_exports };
342
418
  //# sourceMappingURL=out.js.map
343
- //# sourceMappingURL=chunk-OBZVMJLZ.mjs.map
419
+ //# sourceMappingURL=chunk-BQNFWSLL.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/object/aggregateOrThrow.ts","../../src/internal/conversions/legacyToModernSingleAggregationResult.ts","../../src/internal/conversions/modernToLegacyAggregationClause.ts","../../src/internal/conversions/modernToLegacyGroupByClause.ts","../../src/internal/conversions/modernToLegacyWhereClause.ts","../../src/query/WhereClause.ts","../../src/object/fetchPageOrThrow.ts","../../src/createCachedOntologyTransform.ts","../../src/object/Attachment.ts","../../src/object/getLinkedObjectByPkOrThrow.ts","../../src/object/getLinkedObjectOrThrow.ts","../../src/object/pageLinkedObjectsOrThrow.ts","../../src/object/convertWireToOsdkObjects.ts","../../src/object/index.ts"],"names":["invariant","createOpenApiRequest"],"mappings":"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","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 { aggregateObjectSetV2 } from \"@osdk/gateway/requests\";\nimport { createOpenApiRequest } from \"@osdk/shared.net\";\nimport invariant from \"tiny-invariant\";\nimport { legacyToModernSingleAggregationResult, modernToLegacyAggregationClause, modernToLegacyGroupByClause, modernToLegacyWhereClause } from \"../internal/conversions/index.js\";\nexport async function aggregateOrThrow(clientCtx, objectType, objectSet = {\n type: \"base\",\n objectType: objectType[\"apiName\"]\n}, req) {\n const body = {\n aggregation: modernToLegacyAggregationClause(req.select),\n groupBy: [],\n where: undefined\n };\n if (req.groupBy) {\n body.groupBy = modernToLegacyGroupByClause(req.groupBy);\n }\n if (req.where) {\n body.where = modernToLegacyWhereClause(req.where);\n }\n const result = await aggregateObjectSetV2(createOpenApiRequest(clientCtx.stack, clientCtx.fetch), clientCtx.ontology.metadata.ontologyApiName, {\n objectSet,\n groupBy: body.groupBy,\n aggregation: body.aggregation\n });\n if (!req.groupBy) {\n !(result.data.length === 1) ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"no group by clause should mean only one data result\") : invariant(false) : void 0;\n return legacyToModernSingleAggregationResult(result.data[0]);\n }\n const ret = result.data.map(entry => {\n return {\n group: entry.group,\n values: legacyToModernSingleAggregationResult(entry)\n };\n }); // fixme\n\n return ret; // FIXME\n}","/*\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 invariant from \"tiny-invariant\";\nexport function legacyToModernSingleAggregationResult(entry) {\n return entry.metrics.reduce((accumulator, curValue) => {\n const parts = curValue.name.split(\".\");\n !(parts.length === 2) ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"assumed we were getting a `${key}.${type}`\") : invariant(false) : void 0;\n if (!(parts[0] in accumulator)) {\n accumulator[parts[0]] = {};\n }\n accumulator[parts[0]][parts[1]] = curValue.value;\n return accumulator;\n }, {});\n}","/*\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 function modernToLegacyAggregationClause(select) {\n return Object.entries(select).flatMap(([k, v]) => {\n if (Array.isArray(v)) {\n return v.map(v2 => {\n return {\n type: v2,\n name: `${k}.${v2}`,\n field: k\n };\n });\n } else {\n return [{\n type: v,\n // FIXME v has additional possible values\n name: `${k}.${v}`,\n field: k\n }];\n }\n });\n}","/*\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 function modernToLegacyGroupByClause(groupByClause) {\n if (!groupByClause) return [];\n return Object.entries(groupByClause).flatMap(([field, type]) => {\n if (type === \"exact\") {\n return [{\n type,\n field\n }];\n } else if (type.exactWithLimit) {\n return [{\n type: \"exact\",\n field,\n maxGroupCount: type.exactWithLimit\n }];\n } else {\n return [];\n }\n });\n}","/*\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 invariant from \"tiny-invariant\";\nimport { DistanceUnitMapping } from \"../../query/WhereClause.js\";\nexport function modernToLegacyWhereClause(whereClause) {\n if (\"$and\" in whereClause) {\n return {\n type: \"and\",\n value: whereClause.$and.map(modernToLegacyWhereClause)\n };\n } else if (\"$or\" in whereClause) {\n return {\n type: \"or\",\n value: whereClause.$or.map(modernToLegacyWhereClause)\n };\n } else if (\"$not\" in whereClause) {\n return {\n type: \"not\",\n value: modernToLegacyWhereClause(whereClause.$not)\n };\n }\n const parts = Object.entries(whereClause);\n if (parts.length === 1) {\n return handleWherePair(parts[0]);\n }\n return {\n type: \"and\",\n value: parts.map(handleWherePair)\n };\n}\nfunction makeGeoFilterBbox(field, bbox, filterType) {\n return {\n type: filterType === \"$within\" ? \"withinBoundingBox\" : \"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}\nfunction makeGeoFilterPolygon(field, coordinates, filterType) {\n return {\n type: filterType,\n field,\n value: {\n type: \"Polygon\",\n coordinates\n }\n };\n}\nfunction handleWherePair([field, filter]) {\n !(filter != null) ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"Defined key values are only allowed when they are not undefined.\") : invariant(false) : void 0;\n if (typeof filter === \"string\" || typeof filter === \"number\") {\n return {\n type: \"eq\",\n field,\n value: filter\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 !(!hasDollarSign || keysOfFilter.length === 1) ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"WhereClause Filter with multiple clauses isn't allowed\") : invariant(false) : void 0;\n if (!hasDollarSign) {\n // Future case for structs\n throw new Error(\"Unsupported filter. Did you forget to use a $-prefixed filter?\");\n }\n const firstKey = keysOfFilter[0];\n !(filter[firstKey] != null) ? process.env.NODE_ENV !== \"production\" ? invariant(false) : invariant(false) : void 0;\n if (firstKey === \"$ne\") {\n return {\n type: \"not\",\n value: {\n type: \"eq\",\n field,\n value: filter[firstKey]\n }\n };\n }\n if (firstKey === \"$within\") {\n const withinBody = filter[firstKey];\n if (Array.isArray(withinBody)) {\n return makeGeoFilterBbox(field, withinBody, firstKey);\n } else if (\"bbox\" in withinBody && !(\"type\" in withinBody)) {\n return makeGeoFilterBbox(field, withinBody.bbox, firstKey);\n } else if (\"distance\" in withinBody && \"of\" in withinBody) {\n return {\n type: \"withinDistanceOf\",\n field,\n value: {\n center: Array.isArray(withinBody.of) ? {\n type: \"Point\",\n coordinates: withinBody.of\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 ? withinBody.polygon : withinBody.coordinates;\n return makeGeoFilterPolygon(field, coordinates, \"withinPolygon\");\n }\n }\n if (firstKey === \"$intersects\") {\n const intersectsBody = filter[firstKey];\n if (Array.isArray(intersectsBody)) {\n return makeGeoFilterBbox(field, intersectsBody, firstKey);\n } else if (\"bbox\" in intersectsBody && !(\"type\" in intersectsBody)) {\n return makeGeoFilterBbox(field, intersectsBody.bbox, firstKey);\n } else {\n const coordinates = \"polygon\" in intersectsBody ? intersectsBody.polygon : intersectsBody.coordinates;\n return makeGeoFilterPolygon(field, coordinates, \"intersectsPolygon\");\n }\n }\n return {\n type: firstKey.substring(1),\n field,\n value: filter[firstKey]\n };\n}","/*\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\n// We need to conditional here to force the union to be distributed\n\nexport const DistanceUnitMapping = {\n \"centimeter\": \"CENTIMETERS\",\n \"centimeters\": \"CENTIMETERS\",\n \"cm\": \"CENTIMETERS\",\n \"meter\": \"METERS\",\n \"meters\": \"METERS\",\n \"m\": \"METERS\",\n \"kilometer\": \"KILOMETERS\",\n \"kilometers\": \"KILOMETERS\",\n \"km\": \"KILOMETERS\",\n \"inch\": \"INCHES\",\n \"inches\": \"INCHES\",\n \"foot\": \"FEET\",\n \"feet\": \"FEET\",\n \"yard\": \"YARDS\",\n \"yards\": \"YARDS\",\n \"mile\": \"MILES\",\n \"miles\": \"MILES\",\n \"nautical_mile\": \"NAUTICAL_MILES\",\n \"nauticalMile\": \"NAUTICAL_MILES\",\n \"nautical miles\": \"NAUTICAL_MILES\"\n};\n\n// FIXME we need to represent all types","/*\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 { loadObjectSetV2 } from \"@osdk/gateway/requests\";\nimport { createOpenApiRequest } from \"@osdk/shared.net\";\nimport { convertWireToOsdkObjects } from \"./convertWireToOsdkObjects.js\";\nexport async function fetchPageOrThrow(client, objectType, args, objectSet = {\n type: \"base\",\n objectType: objectType[\"apiName\"]\n}) {\n const body = {\n objectSet,\n // We have to do the following case because LoadObjectSetRequestV2 isnt readonly\n select: args?.select ?? [] // FIXME?\n };\n if (args?.nextPageToken) {\n body.pageToken = args.nextPageToken;\n }\n if (args?.pageSize != null) {\n body.pageSize = args.pageSize;\n }\n const r = await loadObjectSetV2(createOpenApiRequest(client.stack, client.fetch), client.ontology.metadata.ontologyApiName, body);\n convertWireToOsdkObjects(client, r.data);\n\n // any is okay here because we have properly converted the wire objects via prototypes\n // which don't type out correctly.\n return r;\n}","/*\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\n/**\n * Creates a getter function that caches based on the ontology.objects[type] value\n *\n * Any extra arguments are passed through, but only the first args passed in will be used and are not considered as part of the caching\n */\nexport function createCachedOntologyTransform(creator) {\n // We can use the ObjectTypeDefinition as the key because it will be a globally unique singleton\n // Use Map instead of WeakMap here so usage for things like object prototypes do not churn over time\n const cache = new Map();\n return (ontology, type) => {\n const objectDefinition = ontology.objects[type];\n let result = cache.get(objectDefinition);\n if (result == null) {\n result = creator(ontology, type);\n cache.set(objectDefinition, result);\n }\n return result;\n };\n}","/*\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 class Attachment {\n constructor(rid) {\n this.rid = rid;\n }\n}\nexport function isAttachment(o) {\n return o instanceof Attachment;\n}","/*\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 { getLinkedObjectV2 } from \"@osdk/gateway/requests\";\nimport { createOpenApiRequest } from \"@osdk/shared.net\";\nimport { convertWireToOsdkObjects } from \"./convertWireToOsdkObjects.js\";\nexport async function getLinkedObjectByPkOrThrow(client, sourceApiName, primaryKey, linkTypeApiName, linkedObjectPrimaryKey, select) {\n const object = await getLinkedObjectV2(createOpenApiRequest(client.stack, client.fetch), client.ontology.metadata.ontologyApiName, sourceApiName, primaryKey, linkTypeApiName, linkedObjectPrimaryKey, {\n select: select ?? []\n });\n const objects = [object];\n convertWireToOsdkObjects(client, objects);\n return objects[0];\n}","/*\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 { PalantirApiError } from \"@osdk/shared.net\";\nimport { pageLinkedObjectsOrThrow } from \"./pageLinkedObjectsOrThrow.js\";\nexport async function getLinkedObjectOrThrow(client, sourceApiName, primaryKey, linkTypeApiName, select) {\n const result = await pageLinkedObjectsOrThrow(client, sourceApiName, primaryKey, linkTypeApiName, {\n pageSize: 1,\n select\n });\n if (result.data.length !== 1 || result.nextPageToken != null) {\n throw new PalantirApiError(`Expected a single result but got ${result.data.length} instead${result.nextPageToken != null ? \" with nextPageToken set\" : \"\"}`);\n }\n return result.data[0];\n}","/*\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 { listLinkedObjectsV2 } from \"@osdk/gateway/requests\";\nimport { createOpenApiRequest } from \"@osdk/shared.net\";\nimport { convertWireToOsdkObjects } from \"./convertWireToOsdkObjects.js\";\nexport async function pageLinkedObjectsOrThrow(client, sourceApiName, primaryKey, linkTypeApiName, options) {\n const page = await listLinkedObjectsV2(createOpenApiRequest(client.stack, client.fetch), client.ontology.metadata.ontologyApiName, sourceApiName, primaryKey, linkTypeApiName, {\n pageSize: options?.pageSize,\n pageToken: options?.nextPageToken,\n select: options?.select ?? []\n });\n convertWireToOsdkObjects(client, page.data);\n return {\n nextPageToken: page.nextPageToken,\n data: page.data\n };\n}","/*\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 { createCachedOntologyTransform } from \"../createCachedOntologyTransform.js\";\nimport { Attachment } from \"./Attachment.js\";\nimport { getLinkedObjectByPkOrThrow } from \"./getLinkedObjectByPkOrThrow.js\";\nimport { getLinkedObjectOrThrow } from \"./getLinkedObjectOrThrow.js\";\nimport { pageLinkedObjectsOrThrow } from \"./pageLinkedObjectsOrThrow.js\";\nconst getPrototype = createCachedOntologyTransform(createPrototype);\nconst getConverter = createCachedOntologyTransform(createConverter);\nconst OriginClient = Symbol();\nfunction createPrototype(ontology, type) {\n const objDef = ontology.objects[type];\n const proto = {};\n if (!objDef) {\n return proto;\n }\n Object.defineProperty(proto, \"$link\", {\n get: function () {\n const client = this[OriginClient];\n const primaryKey = this[\"__primaryKey\"];\n return new Proxy({}, {\n get(_target, p, _receiver) {\n const linkDef = objDef.links[p];\n if (linkDef == null) {\n return;\n }\n if (!linkDef.multiplicity) {\n return {\n get: options => getLinkedObjectOrThrow(client, type, primaryKey, p, options?.select)\n };\n } else {\n return {\n get: (targetPrimaryKey, options) => getLinkedObjectByPkOrThrow(client, type, primaryKey, p, targetPrimaryKey, options?.select),\n fetchPageOrThrow: options => pageLinkedObjectsOrThrow(client, type, primaryKey, p, {\n nextPageToken: options?.nextPageToken,\n pageSize: options?.pageSize,\n select: options?.select\n })\n };\n }\n }\n });\n },\n enumerable: false,\n configurable: false\n });\n return proto;\n}\n\n// preprocess the ontology definition to more quickly apply object conversions when needed\nfunction createConverter(ontology, type) {\n const objDef = ontology.objects[type];\n if (!objDef) {\n return false;\n }\n const steps = [];\n for (const [key, value] of Object.entries(objDef.properties)) {\n // attachments need a wrapper to provide functionality and to identify them at serialization time\n if (value.type === \"attachment\") {\n steps.push(o => {\n if (o[key] != null) {\n if (Array.isArray(o[key])) {\n o[key] = o[key].map(a => new Attachment(a.rid));\n } else {\n o[key] = new Attachment(o[key].rid);\n }\n }\n });\n }\n }\n return steps.length > 0 ? o => {\n for (const step of steps) {\n step(o);\n }\n } : false;\n}\n\n/**\n * @param objs the objects to be converted, the contents of this array will be mutated\n */\nexport function convertWireToOsdkObjects(client, objs) {\n for (const obj of objs) {\n const proto = getPrototype(client.ontology, obj.__apiName);\n const converter = getConverter(client.ontology, obj.__apiName);\n Object.setPrototypeOf(obj, proto);\n Object.defineProperty(obj, OriginClient, {\n value: client,\n enumerable: false,\n configurable: false,\n writable: false\n });\n if (converter) {\n converter(obj);\n }\n }\n}","/*\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 { aggregateOrThrow } from \"./aggregateOrThrow.js\";\nexport { fetchPageOrThrow } from \"./fetchPageOrThrow.js\";"]}
@@ -16,7 +16,7 @@ var __export = (target, all) => {
16
16
  function legacyToModernSingleAggregationResult(entry) {
17
17
  return entry.metrics.reduce((accumulator, curValue) => {
18
18
  const parts = curValue.name.split(".");
19
- !(parts.length == 2) ? process.env.NODE_ENV !== "production" ? invariant2__default.default(false, "assumed we were getting a `${key}.${type}`") : invariant2__default.default(false) : void 0;
19
+ !(parts.length === 2) ? process.env.NODE_ENV !== "production" ? invariant2__default.default(false, "assumed we were getting a `${key}.${type}`") : invariant2__default.default(false) : void 0;
20
20
  if (!(parts[0] in accumulator)) {
21
21
  accumulator[parts[0]] = {};
22
22
  }
@@ -68,6 +68,32 @@ function modernToLegacyGroupByClause(groupByClause) {
68
68
  }
69
69
  });
70
70
  }
71
+
72
+ // src/query/WhereClause.ts
73
+ var DistanceUnitMapping = {
74
+ "centimeter": "CENTIMETERS",
75
+ "centimeters": "CENTIMETERS",
76
+ "cm": "CENTIMETERS",
77
+ "meter": "METERS",
78
+ "meters": "METERS",
79
+ "m": "METERS",
80
+ "kilometer": "KILOMETERS",
81
+ "kilometers": "KILOMETERS",
82
+ "km": "KILOMETERS",
83
+ "inch": "INCHES",
84
+ "inches": "INCHES",
85
+ "foot": "FEET",
86
+ "feet": "FEET",
87
+ "yard": "YARDS",
88
+ "yards": "YARDS",
89
+ "mile": "MILES",
90
+ "miles": "MILES",
91
+ "nautical_mile": "NAUTICAL_MILES",
92
+ "nauticalMile": "NAUTICAL_MILES",
93
+ "nautical miles": "NAUTICAL_MILES"
94
+ };
95
+
96
+ // src/internal/conversions/modernToLegacyWhereClause.ts
71
97
  function modernToLegacyWhereClause(whereClause) {
72
98
  if ("$and" in whereClause) {
73
99
  return {
@@ -87,69 +113,115 @@ function modernToLegacyWhereClause(whereClause) {
87
113
  }
88
114
  const parts = Object.entries(whereClause);
89
115
  if (parts.length === 1) {
90
- const [field, filter] = parts[0];
91
- !(filter != null) ? process.env.NODE_ENV !== "production" ? invariant2__default.default(false, "Defined key values are only allowed when they are not undefined.") : invariant2__default.default(false) : void 0;
92
- if (typeof filter === "string" || typeof filter === "number") {
93
- return {
94
- type: "eq",
95
- field,
96
- value: filter
97
- };
116
+ return handleWherePair(parts[0]);
117
+ }
118
+ return {
119
+ type: "and",
120
+ value: parts.map(handleWherePair)
121
+ };
122
+ }
123
+ function makeGeoFilterBbox(field, bbox, filterType) {
124
+ return {
125
+ type: filterType === "$within" ? "withinBoundingBox" : "intersectsBoundingBox",
126
+ field,
127
+ value: {
128
+ topLeft: {
129
+ type: "Point",
130
+ coordinates: [bbox[0], bbox[3]]
131
+ },
132
+ bottomRight: {
133
+ type: "Point",
134
+ coordinates: [bbox[2], bbox[1]]
135
+ }
98
136
  }
99
- !(Object.keys(filter).length === 1) ? process.env.NODE_ENV !== "production" ? invariant2__default.default(false, "WhereClause Filter with multiple properties isn't allowed") : invariant2__default.default(false) : void 0;
100
- const type = Object.keys(filter)[0];
101
- !(filter[type] != null) ? process.env.NODE_ENV !== "production" ? invariant2__default.default(false) : invariant2__default.default(false) : void 0;
102
- if (type === "ne") {
103
- return {
104
- type: "not",
105
- value: {
106
- type: "eq",
107
- field,
108
- value: filter[type]
109
- }
110
- };
137
+ };
138
+ }
139
+ function makeGeoFilterPolygon(field, coordinates, filterType) {
140
+ return {
141
+ type: filterType,
142
+ field,
143
+ value: {
144
+ type: "Polygon",
145
+ coordinates
111
146
  }
147
+ };
148
+ }
149
+ function handleWherePair([field, filter]) {
150
+ !(filter != null) ? process.env.NODE_ENV !== "production" ? invariant2__default.default(false, "Defined key values are only allowed when they are not undefined.") : invariant2__default.default(false) : void 0;
151
+ if (typeof filter === "string" || typeof filter === "number") {
112
152
  return {
113
- type,
153
+ type: "eq",
114
154
  field,
115
- value: filter[type]
155
+ value: filter
116
156
  };
117
157
  }
118
- return {
119
- type: "and",
120
- value: Object.entries(whereClause).map(([field, filter]) => {
121
- !(filter != null) ? process.env.NODE_ENV !== "production" ? invariant2__default.default(false, "Defined key values are only allowed when they are not undefined.") : invariant2__default.default(false) : void 0;
122
- if (typeof filter === "string" || typeof filter === "number") {
123
- return {
124
- type: "eq",
125
- field,
126
- value: filter
127
- };
128
- }
129
- !(Object.keys(filter).length === 1) ? process.env.NODE_ENV !== "production" ? invariant2__default.default(false, "WhereClause Filter with multiple properties isn't allowed") : invariant2__default.default(false) : void 0;
130
- const q = Object.keys(filter)[0];
131
- !(filter[q] != null) ? process.env.NODE_ENV !== "production" ? invariant2__default.default(false) : invariant2__default.default(false) : void 0;
132
- if (q === "ne") {
133
- return {
134
- type: "not",
135
- value: {
136
- type: "eq",
137
- field,
138
- value: filter[q]
139
- }
140
- };
158
+ const keysOfFilter = Object.keys(filter);
159
+ const hasDollarSign = keysOfFilter.some((key) => key.startsWith("$"));
160
+ !(!hasDollarSign || keysOfFilter.length === 1) ? process.env.NODE_ENV !== "production" ? invariant2__default.default(false, "WhereClause Filter with multiple clauses isn't allowed") : invariant2__default.default(false) : void 0;
161
+ if (!hasDollarSign) {
162
+ throw new Error("Unsupported filter. Did you forget to use a $-prefixed filter?");
163
+ }
164
+ const firstKey = keysOfFilter[0];
165
+ !(filter[firstKey] != null) ? process.env.NODE_ENV !== "production" ? invariant2__default.default(false) : invariant2__default.default(false) : void 0;
166
+ if (firstKey === "$ne") {
167
+ return {
168
+ type: "not",
169
+ value: {
170
+ type: "eq",
171
+ field,
172
+ value: filter[firstKey]
141
173
  }
174
+ };
175
+ }
176
+ if (firstKey === "$within") {
177
+ const withinBody = filter[firstKey];
178
+ if (Array.isArray(withinBody)) {
179
+ return makeGeoFilterBbox(field, withinBody, firstKey);
180
+ } else if ("bbox" in withinBody && !("type" in withinBody)) {
181
+ return makeGeoFilterBbox(field, withinBody.bbox, firstKey);
182
+ } else if ("distance" in withinBody && "of" in withinBody) {
142
183
  return {
143
- type: q,
184
+ type: "withinDistanceOf",
144
185
  field,
145
- value: filter[q]
186
+ value: {
187
+ center: Array.isArray(withinBody.of) ? {
188
+ type: "Point",
189
+ coordinates: withinBody.of
190
+ } : withinBody.of,
191
+ distance: {
192
+ value: withinBody.distance[0],
193
+ unit: DistanceUnitMapping[withinBody.distance[1]]
194
+ }
195
+ }
146
196
  };
147
- })
197
+ } else {
198
+ const coordinates = "polygon" in withinBody ? withinBody.polygon : withinBody.coordinates;
199
+ return makeGeoFilterPolygon(field, coordinates, "withinPolygon");
200
+ }
201
+ }
202
+ if (firstKey === "$intersects") {
203
+ const intersectsBody = filter[firstKey];
204
+ if (Array.isArray(intersectsBody)) {
205
+ return makeGeoFilterBbox(field, intersectsBody, firstKey);
206
+ } else if ("bbox" in intersectsBody && !("type" in intersectsBody)) {
207
+ return makeGeoFilterBbox(field, intersectsBody.bbox, firstKey);
208
+ } else {
209
+ const coordinates = "polygon" in intersectsBody ? intersectsBody.polygon : intersectsBody.coordinates;
210
+ return makeGeoFilterPolygon(field, coordinates, "intersectsPolygon");
211
+ }
212
+ }
213
+ return {
214
+ type: firstKey.substring(1),
215
+ field,
216
+ value: filter[firstKey]
148
217
  };
149
218
  }
150
219
 
151
220
  // src/object/aggregateOrThrow.ts
152
- async function aggregateOrThrow(clientCtx, objectType, req) {
221
+ async function aggregateOrThrow(clientCtx, objectType, objectSet = {
222
+ type: "base",
223
+ objectType: objectType["apiName"]
224
+ }, req) {
153
225
  const body = {
154
226
  aggregation: modernToLegacyAggregationClause(req.select),
155
227
  groupBy: [],
@@ -161,7 +233,11 @@ async function aggregateOrThrow(clientCtx, objectType, req) {
161
233
  if (req.where) {
162
234
  body.where = modernToLegacyWhereClause(req.where);
163
235
  }
164
- const result = await requests.aggregateObjectsV2(shared_net.createOpenApiRequest(clientCtx.stack, clientCtx.fetch), clientCtx.ontology.metadata.ontologyApiName, objectType, body);
236
+ const result = await requests.aggregateObjectSetV2(shared_net.createOpenApiRequest(clientCtx.stack, clientCtx.fetch), clientCtx.ontology.metadata.ontologyApiName, {
237
+ objectSet,
238
+ groupBy: body.groupBy,
239
+ aggregation: body.aggregation
240
+ });
165
241
  if (!req.groupBy) {
166
242
  !(result.data.length === 1) ? process.env.NODE_ENV !== "production" ? invariant2__default.default(false, "no group by clause should mean only one data result") : invariant2__default.default(false) : void 0;
167
243
  return legacyToModernSingleAggregationResult(result.data[0]);
@@ -318,7 +394,7 @@ function convertWireToOsdkObjects(client, objs) {
318
394
  // src/object/fetchPageOrThrow.ts
319
395
  async function fetchPageOrThrow(client, objectType, args, objectSet = {
320
396
  type: "base",
321
- objectType
397
+ objectType: objectType["apiName"]
322
398
  }) {
323
399
  const body = {
324
400
  objectSet,
@@ -351,4 +427,4 @@ exports.isAttachment = isAttachment;
351
427
  exports.modernToLegacyWhereClause = modernToLegacyWhereClause;
352
428
  exports.object_exports = object_exports;
353
429
  //# sourceMappingURL=out.js.map
354
- //# sourceMappingURL=chunk-EU5GNJBK.cjs.map
430
+ //# sourceMappingURL=chunk-KAL57TC5.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/object/aggregateOrThrow.ts","../../src/internal/conversions/legacyToModernSingleAggregationResult.ts","../../src/internal/conversions/modernToLegacyAggregationClause.ts","../../src/internal/conversions/modernToLegacyGroupByClause.ts","../../src/internal/conversions/modernToLegacyWhereClause.ts","../../src/query/WhereClause.ts","../../src/object/fetchPageOrThrow.ts","../../src/createCachedOntologyTransform.ts","../../src/object/Attachment.ts","../../src/object/getLinkedObjectByPkOrThrow.ts","../../src/object/getLinkedObjectOrThrow.ts","../../src/object/pageLinkedObjectsOrThrow.ts","../../src/object/convertWireToOsdkObjects.ts","../../src/object/index.ts"],"names":["invariant","createOpenApiRequest"],"mappings":"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","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 { aggregateObjectSetV2 } from \"@osdk/gateway/requests\";\nimport { createOpenApiRequest } from \"@osdk/shared.net\";\nimport invariant from \"tiny-invariant\";\nimport { legacyToModernSingleAggregationResult, modernToLegacyAggregationClause, modernToLegacyGroupByClause, modernToLegacyWhereClause } from \"../internal/conversions/index.js\";\nexport async function aggregateOrThrow(clientCtx, objectType, objectSet = {\n type: \"base\",\n objectType: objectType[\"apiName\"]\n}, req) {\n const body = {\n aggregation: modernToLegacyAggregationClause(req.select),\n groupBy: [],\n where: undefined\n };\n if (req.groupBy) {\n body.groupBy = modernToLegacyGroupByClause(req.groupBy);\n }\n if (req.where) {\n body.where = modernToLegacyWhereClause(req.where);\n }\n const result = await aggregateObjectSetV2(createOpenApiRequest(clientCtx.stack, clientCtx.fetch), clientCtx.ontology.metadata.ontologyApiName, {\n objectSet,\n groupBy: body.groupBy,\n aggregation: body.aggregation\n });\n if (!req.groupBy) {\n !(result.data.length === 1) ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"no group by clause should mean only one data result\") : invariant(false) : void 0;\n return legacyToModernSingleAggregationResult(result.data[0]);\n }\n const ret = result.data.map(entry => {\n return {\n group: entry.group,\n values: legacyToModernSingleAggregationResult(entry)\n };\n }); // fixme\n\n return ret; // FIXME\n}","/*\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 invariant from \"tiny-invariant\";\nexport function legacyToModernSingleAggregationResult(entry) {\n return entry.metrics.reduce((accumulator, curValue) => {\n const parts = curValue.name.split(\".\");\n !(parts.length === 2) ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"assumed we were getting a `${key}.${type}`\") : invariant(false) : void 0;\n if (!(parts[0] in accumulator)) {\n accumulator[parts[0]] = {};\n }\n accumulator[parts[0]][parts[1]] = curValue.value;\n return accumulator;\n }, {});\n}","/*\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 function modernToLegacyAggregationClause(select) {\n return Object.entries(select).flatMap(([k, v]) => {\n if (Array.isArray(v)) {\n return v.map(v2 => {\n return {\n type: v2,\n name: `${k}.${v2}`,\n field: k\n };\n });\n } else {\n return [{\n type: v,\n // FIXME v has additional possible values\n name: `${k}.${v}`,\n field: k\n }];\n }\n });\n}","/*\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 function modernToLegacyGroupByClause(groupByClause) {\n if (!groupByClause) return [];\n return Object.entries(groupByClause).flatMap(([field, type]) => {\n if (type === \"exact\") {\n return [{\n type,\n field\n }];\n } else if (type.exactWithLimit) {\n return [{\n type: \"exact\",\n field,\n maxGroupCount: type.exactWithLimit\n }];\n } else {\n return [];\n }\n });\n}","/*\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 invariant from \"tiny-invariant\";\nimport { DistanceUnitMapping } from \"../../query/WhereClause.js\";\nexport function modernToLegacyWhereClause(whereClause) {\n if (\"$and\" in whereClause) {\n return {\n type: \"and\",\n value: whereClause.$and.map(modernToLegacyWhereClause)\n };\n } else if (\"$or\" in whereClause) {\n return {\n type: \"or\",\n value: whereClause.$or.map(modernToLegacyWhereClause)\n };\n } else if (\"$not\" in whereClause) {\n return {\n type: \"not\",\n value: modernToLegacyWhereClause(whereClause.$not)\n };\n }\n const parts = Object.entries(whereClause);\n if (parts.length === 1) {\n return handleWherePair(parts[0]);\n }\n return {\n type: \"and\",\n value: parts.map(handleWherePair)\n };\n}\nfunction makeGeoFilterBbox(field, bbox, filterType) {\n return {\n type: filterType === \"$within\" ? \"withinBoundingBox\" : \"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}\nfunction makeGeoFilterPolygon(field, coordinates, filterType) {\n return {\n type: filterType,\n field,\n value: {\n type: \"Polygon\",\n coordinates\n }\n };\n}\nfunction handleWherePair([field, filter]) {\n !(filter != null) ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"Defined key values are only allowed when they are not undefined.\") : invariant(false) : void 0;\n if (typeof filter === \"string\" || typeof filter === \"number\") {\n return {\n type: \"eq\",\n field,\n value: filter\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 !(!hasDollarSign || keysOfFilter.length === 1) ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"WhereClause Filter with multiple clauses isn't allowed\") : invariant(false) : void 0;\n if (!hasDollarSign) {\n // Future case for structs\n throw new Error(\"Unsupported filter. Did you forget to use a $-prefixed filter?\");\n }\n const firstKey = keysOfFilter[0];\n !(filter[firstKey] != null) ? process.env.NODE_ENV !== \"production\" ? invariant(false) : invariant(false) : void 0;\n if (firstKey === \"$ne\") {\n return {\n type: \"not\",\n value: {\n type: \"eq\",\n field,\n value: filter[firstKey]\n }\n };\n }\n if (firstKey === \"$within\") {\n const withinBody = filter[firstKey];\n if (Array.isArray(withinBody)) {\n return makeGeoFilterBbox(field, withinBody, firstKey);\n } else if (\"bbox\" in withinBody && !(\"type\" in withinBody)) {\n return makeGeoFilterBbox(field, withinBody.bbox, firstKey);\n } else if (\"distance\" in withinBody && \"of\" in withinBody) {\n return {\n type: \"withinDistanceOf\",\n field,\n value: {\n center: Array.isArray(withinBody.of) ? {\n type: \"Point\",\n coordinates: withinBody.of\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 ? withinBody.polygon : withinBody.coordinates;\n return makeGeoFilterPolygon(field, coordinates, \"withinPolygon\");\n }\n }\n if (firstKey === \"$intersects\") {\n const intersectsBody = filter[firstKey];\n if (Array.isArray(intersectsBody)) {\n return makeGeoFilterBbox(field, intersectsBody, firstKey);\n } else if (\"bbox\" in intersectsBody && !(\"type\" in intersectsBody)) {\n return makeGeoFilterBbox(field, intersectsBody.bbox, firstKey);\n } else {\n const coordinates = \"polygon\" in intersectsBody ? intersectsBody.polygon : intersectsBody.coordinates;\n return makeGeoFilterPolygon(field, coordinates, \"intersectsPolygon\");\n }\n }\n return {\n type: firstKey.substring(1),\n field,\n value: filter[firstKey]\n };\n}","/*\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\n// We need to conditional here to force the union to be distributed\n\nexport const DistanceUnitMapping = {\n \"centimeter\": \"CENTIMETERS\",\n \"centimeters\": \"CENTIMETERS\",\n \"cm\": \"CENTIMETERS\",\n \"meter\": \"METERS\",\n \"meters\": \"METERS\",\n \"m\": \"METERS\",\n \"kilometer\": \"KILOMETERS\",\n \"kilometers\": \"KILOMETERS\",\n \"km\": \"KILOMETERS\",\n \"inch\": \"INCHES\",\n \"inches\": \"INCHES\",\n \"foot\": \"FEET\",\n \"feet\": \"FEET\",\n \"yard\": \"YARDS\",\n \"yards\": \"YARDS\",\n \"mile\": \"MILES\",\n \"miles\": \"MILES\",\n \"nautical_mile\": \"NAUTICAL_MILES\",\n \"nauticalMile\": \"NAUTICAL_MILES\",\n \"nautical miles\": \"NAUTICAL_MILES\"\n};\n\n// FIXME we need to represent all types","/*\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 { loadObjectSetV2 } from \"@osdk/gateway/requests\";\nimport { createOpenApiRequest } from \"@osdk/shared.net\";\nimport { convertWireToOsdkObjects } from \"./convertWireToOsdkObjects.js\";\nexport async function fetchPageOrThrow(client, objectType, args, objectSet = {\n type: \"base\",\n objectType: objectType[\"apiName\"]\n}) {\n const body = {\n objectSet,\n // We have to do the following case because LoadObjectSetRequestV2 isnt readonly\n select: args?.select ?? [] // FIXME?\n };\n if (args?.nextPageToken) {\n body.pageToken = args.nextPageToken;\n }\n if (args?.pageSize != null) {\n body.pageSize = args.pageSize;\n }\n const r = await loadObjectSetV2(createOpenApiRequest(client.stack, client.fetch), client.ontology.metadata.ontologyApiName, body);\n convertWireToOsdkObjects(client, r.data);\n\n // any is okay here because we have properly converted the wire objects via prototypes\n // which don't type out correctly.\n return r;\n}","/*\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\n/**\n * Creates a getter function that caches based on the ontology.objects[type] value\n *\n * Any extra arguments are passed through, but only the first args passed in will be used and are not considered as part of the caching\n */\nexport function createCachedOntologyTransform(creator) {\n // We can use the ObjectTypeDefinition as the key because it will be a globally unique singleton\n // Use Map instead of WeakMap here so usage for things like object prototypes do not churn over time\n const cache = new Map();\n return (ontology, type) => {\n const objectDefinition = ontology.objects[type];\n let result = cache.get(objectDefinition);\n if (result == null) {\n result = creator(ontology, type);\n cache.set(objectDefinition, result);\n }\n return result;\n };\n}","/*\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 class Attachment {\n constructor(rid) {\n this.rid = rid;\n }\n}\nexport function isAttachment(o) {\n return o instanceof Attachment;\n}","/*\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 { getLinkedObjectV2 } from \"@osdk/gateway/requests\";\nimport { createOpenApiRequest } from \"@osdk/shared.net\";\nimport { convertWireToOsdkObjects } from \"./convertWireToOsdkObjects.js\";\nexport async function getLinkedObjectByPkOrThrow(client, sourceApiName, primaryKey, linkTypeApiName, linkedObjectPrimaryKey, select) {\n const object = await getLinkedObjectV2(createOpenApiRequest(client.stack, client.fetch), client.ontology.metadata.ontologyApiName, sourceApiName, primaryKey, linkTypeApiName, linkedObjectPrimaryKey, {\n select: select ?? []\n });\n const objects = [object];\n convertWireToOsdkObjects(client, objects);\n return objects[0];\n}","/*\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 { PalantirApiError } from \"@osdk/shared.net\";\nimport { pageLinkedObjectsOrThrow } from \"./pageLinkedObjectsOrThrow.js\";\nexport async function getLinkedObjectOrThrow(client, sourceApiName, primaryKey, linkTypeApiName, select) {\n const result = await pageLinkedObjectsOrThrow(client, sourceApiName, primaryKey, linkTypeApiName, {\n pageSize: 1,\n select\n });\n if (result.data.length !== 1 || result.nextPageToken != null) {\n throw new PalantirApiError(`Expected a single result but got ${result.data.length} instead${result.nextPageToken != null ? \" with nextPageToken set\" : \"\"}`);\n }\n return result.data[0];\n}","/*\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 { listLinkedObjectsV2 } from \"@osdk/gateway/requests\";\nimport { createOpenApiRequest } from \"@osdk/shared.net\";\nimport { convertWireToOsdkObjects } from \"./convertWireToOsdkObjects.js\";\nexport async function pageLinkedObjectsOrThrow(client, sourceApiName, primaryKey, linkTypeApiName, options) {\n const page = await listLinkedObjectsV2(createOpenApiRequest(client.stack, client.fetch), client.ontology.metadata.ontologyApiName, sourceApiName, primaryKey, linkTypeApiName, {\n pageSize: options?.pageSize,\n pageToken: options?.nextPageToken,\n select: options?.select ?? []\n });\n convertWireToOsdkObjects(client, page.data);\n return {\n nextPageToken: page.nextPageToken,\n data: page.data\n };\n}","/*\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 { createCachedOntologyTransform } from \"../createCachedOntologyTransform.js\";\nimport { Attachment } from \"./Attachment.js\";\nimport { getLinkedObjectByPkOrThrow } from \"./getLinkedObjectByPkOrThrow.js\";\nimport { getLinkedObjectOrThrow } from \"./getLinkedObjectOrThrow.js\";\nimport { pageLinkedObjectsOrThrow } from \"./pageLinkedObjectsOrThrow.js\";\nconst getPrototype = createCachedOntologyTransform(createPrototype);\nconst getConverter = createCachedOntologyTransform(createConverter);\nconst OriginClient = Symbol();\nfunction createPrototype(ontology, type) {\n const objDef = ontology.objects[type];\n const proto = {};\n if (!objDef) {\n return proto;\n }\n Object.defineProperty(proto, \"$link\", {\n get: function () {\n const client = this[OriginClient];\n const primaryKey = this[\"__primaryKey\"];\n return new Proxy({}, {\n get(_target, p, _receiver) {\n const linkDef = objDef.links[p];\n if (linkDef == null) {\n return;\n }\n if (!linkDef.multiplicity) {\n return {\n get: options => getLinkedObjectOrThrow(client, type, primaryKey, p, options?.select)\n };\n } else {\n return {\n get: (targetPrimaryKey, options) => getLinkedObjectByPkOrThrow(client, type, primaryKey, p, targetPrimaryKey, options?.select),\n fetchPageOrThrow: options => pageLinkedObjectsOrThrow(client, type, primaryKey, p, {\n nextPageToken: options?.nextPageToken,\n pageSize: options?.pageSize,\n select: options?.select\n })\n };\n }\n }\n });\n },\n enumerable: false,\n configurable: false\n });\n return proto;\n}\n\n// preprocess the ontology definition to more quickly apply object conversions when needed\nfunction createConverter(ontology, type) {\n const objDef = ontology.objects[type];\n if (!objDef) {\n return false;\n }\n const steps = [];\n for (const [key, value] of Object.entries(objDef.properties)) {\n // attachments need a wrapper to provide functionality and to identify them at serialization time\n if (value.type === \"attachment\") {\n steps.push(o => {\n if (o[key] != null) {\n if (Array.isArray(o[key])) {\n o[key] = o[key].map(a => new Attachment(a.rid));\n } else {\n o[key] = new Attachment(o[key].rid);\n }\n }\n });\n }\n }\n return steps.length > 0 ? o => {\n for (const step of steps) {\n step(o);\n }\n } : false;\n}\n\n/**\n * @param objs the objects to be converted, the contents of this array will be mutated\n */\nexport function convertWireToOsdkObjects(client, objs) {\n for (const obj of objs) {\n const proto = getPrototype(client.ontology, obj.__apiName);\n const converter = getConverter(client.ontology, obj.__apiName);\n Object.setPrototypeOf(obj, proto);\n Object.defineProperty(obj, OriginClient, {\n value: client,\n enumerable: false,\n configurable: false,\n writable: false\n });\n if (converter) {\n converter(obj);\n }\n }\n}","/*\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 { aggregateOrThrow } from \"./aggregateOrThrow.js\";\nexport { fetchPageOrThrow } from \"./fetchPageOrThrow.js\";"]}