@osdk/client 2.2.0-beta.7 → 2.2.0-beta.9

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 (253) hide show
  1. package/CHANGELOG.md +43 -0
  2. package/build/browser/Client.js.map +1 -1
  3. package/build/browser/createClient.js +11 -4
  4. package/build/browser/createClient.js.map +1 -1
  5. package/build/browser/createMinimalClient.js +2 -2
  6. package/build/browser/createMinimalClient.js.map +1 -1
  7. package/build/browser/index.js +1 -0
  8. package/build/browser/index.js.map +1 -1
  9. package/build/browser/object/SimpleOsdkProperties.js +2 -0
  10. package/build/browser/object/SimpleOsdkProperties.js.map +1 -0
  11. package/build/browser/object/convertWireToOsdkObjects/BaseHolder.js +2 -0
  12. package/build/browser/object/convertWireToOsdkObjects/BaseHolder.js.map +1 -0
  13. package/build/browser/object/convertWireToOsdkObjects/InterfaceHolder.js.map +1 -1
  14. package/build/browser/object/convertWireToOsdkObjects/ObjectHolder.js.map +1 -1
  15. package/build/browser/object/convertWireToOsdkObjects/createOsdkInterface.js +25 -0
  16. package/build/browser/object/convertWireToOsdkObjects/createOsdkInterface.js.map +1 -1
  17. package/build/browser/object/convertWireToOsdkObjects/createOsdkObject.js +10 -3
  18. package/build/browser/object/convertWireToOsdkObjects/createOsdkObject.js.map +1 -1
  19. package/build/browser/object/convertWireToOsdkObjects/getDollarAs.js.map +1 -1
  20. package/build/browser/object/convertWireToOsdkObjects/getDollarLink.js.map +1 -1
  21. package/build/browser/object/convertWireToOsdkObjects.js +12 -3
  22. package/build/browser/object/convertWireToOsdkObjects.js.map +1 -1
  23. package/build/browser/object/convertWireToOsdkObjects.test.js +7 -3
  24. package/build/browser/object/convertWireToOsdkObjects.test.js.map +1 -1
  25. package/build/browser/object/createObjectSpecifierFromPrimaryKey.js +20 -0
  26. package/build/browser/object/createObjectSpecifierFromPrimaryKey.js.map +1 -0
  27. package/build/browser/object/fetchPage.js +13 -1
  28. package/build/browser/object/fetchPage.js.map +1 -1
  29. package/build/browser/object/fetchPage.test.js +56 -2
  30. package/build/browser/object/fetchPage.test.js.map +1 -1
  31. package/build/browser/object/object.test.js +109 -0
  32. package/build/browser/object/object.test.js.map +1 -1
  33. package/build/browser/objectSet/InterfaceObjectSet.test.js +18 -2
  34. package/build/browser/objectSet/InterfaceObjectSet.test.js.map +1 -1
  35. package/build/browser/objectSet/ObjectSet.test.js +104 -100
  36. package/build/browser/objectSet/ObjectSet.test.js.map +1 -1
  37. package/build/browser/objectSet/ObjectSetListenerWebsocket.js +18 -14
  38. package/build/browser/objectSet/ObjectSetListenerWebsocket.js.map +1 -1
  39. package/build/browser/objectSet/ObjectSetListenerWebsocket.test.js +2 -0
  40. package/build/browser/objectSet/ObjectSetListenerWebsocket.test.js.map +1 -1
  41. package/build/browser/objectSet/createObjectSet.js.map +1 -1
  42. package/build/browser/observable/ListPayload.js.map +1 -1
  43. package/build/browser/observable/ObjectPayload.js.map +1 -1
  44. package/build/browser/observable/ObservableClient.js.map +1 -1
  45. package/build/browser/observable/internal/ActionApplication.js +29 -29
  46. package/build/browser/observable/internal/ActionApplication.js.map +1 -1
  47. package/build/browser/observable/internal/CacheKey.js +1 -1
  48. package/build/browser/observable/internal/CacheKey.js.map +1 -1
  49. package/build/browser/observable/internal/CacheKeys.js +2 -2
  50. package/build/browser/observable/internal/CacheKeys.js.map +1 -1
  51. package/build/browser/observable/internal/{ChangedObjects.js → Changes.js} +20 -9
  52. package/build/browser/observable/internal/Changes.js.map +1 -0
  53. package/build/browser/observable/internal/Layer.js +3 -0
  54. package/build/browser/observable/internal/Layer.js.map +1 -1
  55. package/build/browser/observable/internal/ListQuery.js +411 -170
  56. package/build/browser/observable/internal/ListQuery.js.map +1 -1
  57. package/build/browser/observable/internal/ObjectQuery.js +32 -16
  58. package/build/browser/observable/internal/ObjectQuery.js.map +1 -1
  59. package/build/browser/observable/internal/ObservableClientImpl.js +4 -12
  60. package/build/browser/observable/internal/ObservableClientImpl.js.map +1 -1
  61. package/build/browser/observable/internal/OptimisticJob.js.map +1 -1
  62. package/build/browser/observable/internal/OrderByCanonicalizer.js +73 -0
  63. package/build/browser/observable/internal/OrderByCanonicalizer.js.map +1 -0
  64. package/build/browser/observable/internal/OrderByCanonicalizer.test.js +78 -0
  65. package/build/browser/observable/internal/OrderByCanonicalizer.test.js.map +1 -0
  66. package/build/browser/observable/internal/Query.js +64 -31
  67. package/build/browser/observable/internal/Query.js.map +1 -1
  68. package/build/browser/observable/internal/RefCounts.js +7 -2
  69. package/build/browser/observable/internal/RefCounts.js.map +1 -1
  70. package/build/browser/observable/internal/SimpleWhereClause.js +2 -0
  71. package/build/browser/observable/internal/SimpleWhereClause.js.map +1 -0
  72. package/build/browser/observable/internal/Store.js +84 -267
  73. package/build/browser/observable/internal/Store.js.map +1 -1
  74. package/build/browser/observable/internal/Store.test.js +264 -247
  75. package/build/browser/observable/internal/Store.test.js.map +1 -1
  76. package/build/browser/observable/internal/WhereClauseCanonicalizer.js +11 -3
  77. package/build/browser/observable/internal/WhereClauseCanonicalizer.js.map +1 -1
  78. package/build/browser/observable/internal/objectMatchesWhereClause.js.map +1 -1
  79. package/build/browser/observable/internal/objectMatchesWhereClause.test.js.map +1 -1
  80. package/build/browser/observable/internal/testUtils.js +82 -18
  81. package/build/browser/observable/internal/testUtils.js.map +1 -1
  82. package/build/browser/public/unstable-do-not-use.js.map +1 -1
  83. package/build/browser/queries/applyQuery.js +33 -1
  84. package/build/browser/queries/applyQuery.js.map +1 -1
  85. package/build/browser/queries/queries.test.js +26 -5
  86. package/build/browser/queries/queries.test.js.map +1 -1
  87. package/build/browser/util/UserAgent.js +1 -1
  88. package/build/browser/util/toDataValueQueries.js +17 -0
  89. package/build/browser/util/toDataValueQueries.js.map +1 -1
  90. package/build/cjs/{Client-C8K3E1vH.d.cts → Client-DBTcM9gB.d.cts} +1 -1
  91. package/build/cjs/{chunk-JPENHIJB.cjs → chunk-EY52J5Z4.cjs} +25 -15
  92. package/build/cjs/chunk-EY52J5Z4.cjs.map +1 -0
  93. package/build/cjs/{chunk-IU47QMYO.cjs → chunk-MCQVHD2F.cjs} +32 -28
  94. package/build/cjs/chunk-MCQVHD2F.cjs.map +1 -0
  95. package/build/cjs/chunk-T4NIFYZS.cjs +14 -0
  96. package/build/cjs/chunk-T4NIFYZS.cjs.map +1 -0
  97. package/build/cjs/index.cjs +154 -73
  98. package/build/cjs/index.cjs.map +1 -1
  99. package/build/cjs/index.d.cts +6 -4
  100. package/build/cjs/public/internal.cjs +6 -6
  101. package/build/cjs/public/internal.d.cts +1 -1
  102. package/build/cjs/public/unstable-do-not-use.cjs +683 -539
  103. package/build/cjs/public/unstable-do-not-use.cjs.map +1 -1
  104. package/build/cjs/public/unstable-do-not-use.d.cts +28 -27
  105. package/build/esm/Client.js.map +1 -1
  106. package/build/esm/createClient.js +11 -4
  107. package/build/esm/createClient.js.map +1 -1
  108. package/build/esm/createMinimalClient.js +2 -2
  109. package/build/esm/createMinimalClient.js.map +1 -1
  110. package/build/esm/index.js +1 -0
  111. package/build/esm/index.js.map +1 -1
  112. package/build/esm/object/SimpleOsdkProperties.js +2 -0
  113. package/build/esm/object/SimpleOsdkProperties.js.map +1 -0
  114. package/build/esm/object/convertWireToOsdkObjects/BaseHolder.js +2 -0
  115. package/build/esm/object/convertWireToOsdkObjects/BaseHolder.js.map +1 -0
  116. package/build/esm/object/convertWireToOsdkObjects/InterfaceHolder.js.map +1 -1
  117. package/build/esm/object/convertWireToOsdkObjects/ObjectHolder.js.map +1 -1
  118. package/build/esm/object/convertWireToOsdkObjects/createOsdkInterface.js +25 -0
  119. package/build/esm/object/convertWireToOsdkObjects/createOsdkInterface.js.map +1 -1
  120. package/build/esm/object/convertWireToOsdkObjects/createOsdkObject.js +10 -3
  121. package/build/esm/object/convertWireToOsdkObjects/createOsdkObject.js.map +1 -1
  122. package/build/esm/object/convertWireToOsdkObjects/getDollarAs.js.map +1 -1
  123. package/build/esm/object/convertWireToOsdkObjects/getDollarLink.js.map +1 -1
  124. package/build/esm/object/convertWireToOsdkObjects.js +12 -3
  125. package/build/esm/object/convertWireToOsdkObjects.js.map +1 -1
  126. package/build/esm/object/convertWireToOsdkObjects.test.js +7 -3
  127. package/build/esm/object/convertWireToOsdkObjects.test.js.map +1 -1
  128. package/build/esm/object/createObjectSpecifierFromPrimaryKey.js +20 -0
  129. package/build/esm/object/createObjectSpecifierFromPrimaryKey.js.map +1 -0
  130. package/build/esm/object/fetchPage.js +13 -1
  131. package/build/esm/object/fetchPage.js.map +1 -1
  132. package/build/esm/object/fetchPage.test.js +56 -2
  133. package/build/esm/object/fetchPage.test.js.map +1 -1
  134. package/build/esm/object/object.test.js +109 -0
  135. package/build/esm/object/object.test.js.map +1 -1
  136. package/build/esm/objectSet/InterfaceObjectSet.test.js +18 -2
  137. package/build/esm/objectSet/InterfaceObjectSet.test.js.map +1 -1
  138. package/build/esm/objectSet/ObjectSet.test.js +104 -100
  139. package/build/esm/objectSet/ObjectSet.test.js.map +1 -1
  140. package/build/esm/objectSet/ObjectSetListenerWebsocket.js +18 -14
  141. package/build/esm/objectSet/ObjectSetListenerWebsocket.js.map +1 -1
  142. package/build/esm/objectSet/ObjectSetListenerWebsocket.test.js +2 -0
  143. package/build/esm/objectSet/ObjectSetListenerWebsocket.test.js.map +1 -1
  144. package/build/esm/objectSet/createObjectSet.js.map +1 -1
  145. package/build/esm/observable/ListPayload.js.map +1 -1
  146. package/build/esm/observable/ObjectPayload.js.map +1 -1
  147. package/build/esm/observable/ObservableClient.js.map +1 -1
  148. package/build/esm/observable/internal/ActionApplication.js +29 -29
  149. package/build/esm/observable/internal/ActionApplication.js.map +1 -1
  150. package/build/esm/observable/internal/CacheKey.js +1 -1
  151. package/build/esm/observable/internal/CacheKey.js.map +1 -1
  152. package/build/esm/observable/internal/CacheKeys.js +2 -2
  153. package/build/esm/observable/internal/CacheKeys.js.map +1 -1
  154. package/build/esm/observable/internal/{ChangedObjects.js → Changes.js} +20 -9
  155. package/build/esm/observable/internal/Changes.js.map +1 -0
  156. package/build/esm/observable/internal/Layer.js +3 -0
  157. package/build/esm/observable/internal/Layer.js.map +1 -1
  158. package/build/esm/observable/internal/ListQuery.js +411 -170
  159. package/build/esm/observable/internal/ListQuery.js.map +1 -1
  160. package/build/esm/observable/internal/ObjectQuery.js +32 -16
  161. package/build/esm/observable/internal/ObjectQuery.js.map +1 -1
  162. package/build/esm/observable/internal/ObservableClientImpl.js +4 -12
  163. package/build/esm/observable/internal/ObservableClientImpl.js.map +1 -1
  164. package/build/esm/observable/internal/OptimisticJob.js.map +1 -1
  165. package/build/esm/observable/internal/OrderByCanonicalizer.js +73 -0
  166. package/build/esm/observable/internal/OrderByCanonicalizer.js.map +1 -0
  167. package/build/esm/observable/internal/OrderByCanonicalizer.test.js +78 -0
  168. package/build/esm/observable/internal/OrderByCanonicalizer.test.js.map +1 -0
  169. package/build/esm/observable/internal/Query.js +64 -31
  170. package/build/esm/observable/internal/Query.js.map +1 -1
  171. package/build/esm/observable/internal/RefCounts.js +7 -2
  172. package/build/esm/observable/internal/RefCounts.js.map +1 -1
  173. package/build/esm/observable/internal/SimpleWhereClause.js +2 -0
  174. package/build/esm/observable/internal/SimpleWhereClause.js.map +1 -0
  175. package/build/esm/observable/internal/Store.js +84 -267
  176. package/build/esm/observable/internal/Store.js.map +1 -1
  177. package/build/esm/observable/internal/Store.test.js +264 -247
  178. package/build/esm/observable/internal/Store.test.js.map +1 -1
  179. package/build/esm/observable/internal/WhereClauseCanonicalizer.js +11 -3
  180. package/build/esm/observable/internal/WhereClauseCanonicalizer.js.map +1 -1
  181. package/build/esm/observable/internal/objectMatchesWhereClause.js.map +1 -1
  182. package/build/esm/observable/internal/objectMatchesWhereClause.test.js.map +1 -1
  183. package/build/esm/observable/internal/testUtils.js +82 -18
  184. package/build/esm/observable/internal/testUtils.js.map +1 -1
  185. package/build/esm/public/unstable-do-not-use.js.map +1 -1
  186. package/build/esm/queries/applyQuery.js +33 -1
  187. package/build/esm/queries/applyQuery.js.map +1 -1
  188. package/build/esm/queries/queries.test.js +26 -5
  189. package/build/esm/queries/queries.test.js.map +1 -1
  190. package/build/esm/util/UserAgent.js +1 -1
  191. package/build/esm/util/toDataValueQueries.js +17 -0
  192. package/build/esm/util/toDataValueQueries.js.map +1 -1
  193. package/build/types/Client.d.ts +1 -1
  194. package/build/types/Client.d.ts.map +1 -1
  195. package/build/types/createClient.d.ts.map +1 -1
  196. package/build/types/index.d.ts +2 -1
  197. package/build/types/index.d.ts.map +1 -1
  198. package/build/types/object/SimpleOsdkProperties.d.ts +1 -0
  199. package/build/types/object/SimpleOsdkProperties.d.ts.map +1 -0
  200. package/build/types/object/convertWireToOsdkObjects/BaseHolder.d.ts +1 -0
  201. package/build/types/object/convertWireToOsdkObjects/BaseHolder.d.ts.map +1 -0
  202. package/build/types/object/convertWireToOsdkObjects.d.ts +8 -1
  203. package/build/types/object/convertWireToOsdkObjects.d.ts.map +1 -1
  204. package/build/types/object/createObjectSpecifierFromPrimaryKey.d.ts +2 -0
  205. package/build/types/object/createObjectSpecifierFromPrimaryKey.d.ts.map +1 -0
  206. package/build/types/object/object.test.d.ts.map +1 -1
  207. package/build/types/objectSet/ObjectSet.test.d.ts.map +1 -1
  208. package/build/types/observable/ListPayload.d.ts +5 -9
  209. package/build/types/observable/ListPayload.d.ts.map +1 -1
  210. package/build/types/observable/ObjectPayload.d.ts +4 -7
  211. package/build/types/observable/ObjectPayload.d.ts.map +1 -1
  212. package/build/types/observable/ObservableClient.d.ts +27 -11
  213. package/build/types/observable/ObservableClient.d.ts.map +1 -1
  214. package/build/types/observable/internal/ActionApplication.d.ts.map +1 -1
  215. package/build/types/observable/internal/CacheKeys.d.ts +1 -1
  216. package/build/types/observable/internal/CacheKeys.d.ts.map +1 -1
  217. package/build/types/observable/internal/Changes.d.ts +15 -0
  218. package/build/types/observable/internal/Changes.d.ts.map +1 -0
  219. package/build/types/observable/internal/Layer.d.ts +1 -0
  220. package/build/types/observable/internal/Layer.d.ts.map +1 -1
  221. package/build/types/observable/internal/ListQuery.d.ts +59 -14
  222. package/build/types/observable/internal/ListQuery.d.ts.map +1 -1
  223. package/build/types/observable/internal/ObjectQuery.d.ts +5 -6
  224. package/build/types/observable/internal/ObjectQuery.d.ts.map +1 -1
  225. package/build/types/observable/internal/OptimisticJob.d.ts +1 -1
  226. package/build/types/observable/internal/OptimisticJob.d.ts.map +1 -1
  227. package/build/types/observable/internal/OrderByCanonicalizer.d.ts +12 -0
  228. package/build/types/observable/internal/OrderByCanonicalizer.d.ts.map +1 -0
  229. package/build/types/observable/internal/OrderByCanonicalizer.test.d.ts +1 -0
  230. package/build/types/observable/internal/OrderByCanonicalizer.test.d.ts.map +1 -0
  231. package/build/types/observable/internal/Query.d.ts +39 -4
  232. package/build/types/observable/internal/Query.d.ts.map +1 -1
  233. package/build/types/observable/internal/RefCounts.d.ts.map +1 -1
  234. package/build/types/observable/internal/SimpleWhereClause.d.ts +2 -0
  235. package/build/types/observable/internal/SimpleWhereClause.d.ts.map +1 -0
  236. package/build/types/observable/internal/Store.d.ts +19 -43
  237. package/build/types/observable/internal/Store.d.ts.map +1 -1
  238. package/build/types/observable/internal/WhereClauseCanonicalizer.d.ts +2 -1
  239. package/build/types/observable/internal/WhereClauseCanonicalizer.d.ts.map +1 -1
  240. package/build/types/observable/internal/objectMatchesWhereClause.d.ts +4 -2
  241. package/build/types/observable/internal/objectMatchesWhereClause.d.ts.map +1 -1
  242. package/build/types/observable/internal/testUtils.d.ts +39 -9
  243. package/build/types/observable/internal/testUtils.d.ts.map +1 -1
  244. package/build/types/public/unstable-do-not-use.d.ts +1 -4
  245. package/build/types/public/unstable-do-not-use.d.ts.map +1 -1
  246. package/build/types/queries/applyQuery.d.ts.map +1 -1
  247. package/package.json +13 -11
  248. package/build/browser/observable/internal/ChangedObjects.js.map +0 -1
  249. package/build/cjs/chunk-IU47QMYO.cjs.map +0 -1
  250. package/build/cjs/chunk-JPENHIJB.cjs.map +0 -1
  251. package/build/esm/observable/internal/ChangedObjects.js.map +0 -1
  252. package/build/types/observable/internal/ChangedObjects.d.ts +0 -11
  253. package/build/types/observable/internal/ChangedObjects.d.ts.map +0 -1
@@ -14,10 +14,10 @@
14
14
  * limitations under the License.
15
15
  */
16
16
 
17
- import { Employee, Todo } from "@osdk/client.test.ontology";
17
+ import { Employee, FooInterface, Todo } from "@osdk/client.test.ontology";
18
18
  import { describe, expect, expectTypeOf, it } from "vitest";
19
19
  import { createMinimalClient } from "../createMinimalClient.js";
20
- import { fetchPage, objectSetToSearchJsonV2 } from "../object/fetchPage.js";
20
+ import { fetchPage, objectSetToSearchJsonV2, resolveInterfaceObjectSet } from "../object/fetchPage.js";
21
21
  import { createObjectSet, getWireObjectSet } from "../objectSet/createObjectSet.js";
22
22
  const metadata = {
23
23
  ontologyRid: "asdf"
@@ -93,6 +93,60 @@ describe(fetchPage, () => {
93
93
  }]
94
94
  });
95
95
  });
96
+ it("converts interface object set for new API correctly", () => {
97
+ const client = createMinimalClient(metadata, "https://foo", async () => "");
98
+ const objectSet = createObjectSet(FooInterface, client).where({
99
+ fooSpt: "hello"
100
+ });
101
+ const wireObjectSet = getWireObjectSet(objectSet);
102
+ expect(resolveInterfaceObjectSet(wireObjectSet, "FooInterface", {
103
+ $includeAllBaseObjectProperties: true
104
+ })).toEqual({
105
+ type: "intersect",
106
+ objectSets: [{
107
+ type: "filter",
108
+ where: {
109
+ type: "eq",
110
+ field: "fooSpt",
111
+ value: "hello"
112
+ },
113
+ objectSet: {
114
+ interfaceType: "FooInterface",
115
+ type: "interfaceBase"
116
+ }
117
+ }, {
118
+ type: "interfaceBase",
119
+ interfaceType: "FooInterface",
120
+ includeAllBaseObjectProperties: true
121
+ }]
122
+ });
123
+ expect(resolveInterfaceObjectSet(wireObjectSet, "FooInterface", {})).toEqual({
124
+ type: "filter",
125
+ where: {
126
+ type: "eq",
127
+ field: "fooSpt",
128
+ value: "hello"
129
+ },
130
+ objectSet: {
131
+ interfaceType: "FooInterface",
132
+ type: "interfaceBase"
133
+ }
134
+ });
135
+ expect(resolveInterfaceObjectSet(wireObjectSet, "FooInterface", {
136
+ $includeAllBaseObjectProperties: false
137
+ })).toEqual({
138
+ type: "filter",
139
+ where: {
140
+ type: "eq",
141
+ field: "fooSpt",
142
+ value: "hello"
143
+ },
144
+ objectSet: {
145
+ interfaceType: "FooInterface",
146
+ type: "interfaceBase"
147
+ }
148
+ });
149
+ });
96
150
  it("where clause keys correctly typed", () => {
97
151
  const client = createMinimalClient(metadata, "https://foo", async () => "");
98
152
  const objectSet = createObjectSet(Todo, client);
@@ -1 +1 @@
1
- {"version":3,"file":"fetchPage.test.js","names":["Employee","Todo","describe","expect","expectTypeOf","it","createMinimalClient","fetchPage","objectSetToSearchJsonV2","createObjectSet","getWireObjectSet","metadata","ontologyRid","branded","toEqualTypeOf","type","objectSet","objectType","where","field","value","undefined","toEqual","client","text","id","$gt","wireObjectSet","objectSetWithSpecialPropertyTypes","toBeCallableWith","$and","$lte","employeeLocation","$eq","$ne","$isNull","employeeStatus"],"sources":["fetchPage.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 FetchPageArgs,\n FetchPageResult,\n ObjectTypeDefinition,\n Osdk,\n PageResult,\n PropertyKeys,\n SelectArgToKeys,\n} from \"@osdk/api\";\nimport type { FooInterface } from \"@osdk/client.test.ontology\";\nimport { Employee, Todo } from \"@osdk/client.test.ontology\";\nimport type { SearchJsonQueryV2 } from \"@osdk/foundry.ontologies\";\nimport { describe, expect, expectTypeOf, it } from \"vitest\";\nimport { createMinimalClient } from \"../createMinimalClient.js\";\nimport { fetchPage, objectSetToSearchJsonV2 } from \"../object/fetchPage.js\";\nimport {\n createObjectSet,\n getWireObjectSet,\n} from \"../objectSet/createObjectSet.js\";\n\nconst metadata = {\n ontologyRid: \"asdf\",\n};\ntype TodoDef = Todo;\n\ndescribe(fetchPage, () => {\n it(\"infers select properly\", () => {\n // this helper lets us get return types of functions that are generic\n class Helper<\n T extends ObjectTypeDefinition,\n const A extends FetchPageArgs<T>,\n > {\n public fetchPage<\n L extends SelectArgToKeys<T, A>,\n R extends A[\"$includeRid\"] extends true ? true : false,\n >() {\n return fetchPage<\n T,\n L & PropertyKeys<T>,\n R,\n \"drop\"\n >({} as any, {} as any, {} as any);\n }\n }\n\n expectTypeOf<Awaited<ReturnType<Helper<TodoDef, {}>[\"fetchPage\"]>>>()\n .branded\n .toEqualTypeOf<PageResult<Osdk<TodoDef, \"$all\">>>();\n\n // e.g. fetchPage({ select: [] });\n expectTypeOf<\n Awaited<ReturnType<Helper<TodoDef, { $select: [] }>[\"fetchPage\"]>>\n >()\n .branded\n .toEqualTypeOf<PageResult<Osdk<TodoDef, \"$all\">>>();\n\n // e.g. fetchPage()\n expectTypeOf<\n Awaited<\n ReturnType<\n Helper<TodoDef, FetchPageArgs<TodoDef>>[\"fetchPage\"]\n >\n >\n >()\n .branded\n .toEqualTypeOf<PageResult<Osdk<TodoDef, \"$all\">>>();\n\n // e.g. fetchPage({ $select: [\"text\"]}\n expectTypeOf<\n Awaited<\n ReturnType<Helper<TodoDef, { $select: [\"text\"] }>[\"fetchPage\"]>\n >\n >()\n .branded\n .toEqualTypeOf<PageResult<Osdk<TodoDef, \"text\">>>();\n });\n\n it(\"converts interface objectsets to search properly\", () => {\n expect(objectSetToSearchJsonV2(\n {\n type: \"filter\",\n objectSet: {\n type: \"filter\",\n objectSet: {\n type: \"base\",\n objectType: \"Todo\",\n },\n where: {\n type: \"eq\",\n field: \"text\",\n value: \"hello\",\n },\n },\n\n where: {\n type: \"gt\",\n field: \"id\",\n value: 2,\n },\n },\n \"Todo\",\n undefined,\n )).toEqual(\n {\n type: \"and\",\n value: [\n {\n type: \"gt\",\n field: \"id\",\n value: 2,\n },\n {\n type: \"eq\",\n field: \"text\",\n value: \"hello\",\n },\n ],\n } satisfies SearchJsonQueryV2,\n );\n });\n\n it(\"converts interface objectsets to search properly part 2\", () => {\n const client = createMinimalClient(\n metadata,\n \"https://foo\",\n async () => \"\",\n );\n const objectSet = createObjectSet(Todo, client).where({\n text: \"hello\",\n }).where({\n id: { $gt: 2 },\n });\n\n const wireObjectSet = getWireObjectSet(objectSet);\n\n expect(objectSetToSearchJsonV2(wireObjectSet, \"Todo\", undefined)).toEqual(\n {\n type: \"and\",\n value: [\n {\n type: \"gt\",\n field: \"id\",\n value: 2,\n },\n {\n type: \"eq\",\n field: \"text\",\n value: \"hello\",\n },\n ],\n } satisfies SearchJsonQueryV2,\n );\n });\n\n it(\"where clause keys correctly typed\", () => {\n const client = createMinimalClient(\n metadata,\n \"https://foo\",\n async () => \"\",\n );\n const objectSet = createObjectSet(Todo, client);\n const objectSetWithSpecialPropertyTypes = createObjectSet(Employee, client);\n\n expectTypeOf(objectSet.where).toBeCallableWith({\n $and: [{ id: { $gt: 2 } }, { id: { $lte: 2 } }],\n });\n expectTypeOf(objectSet.where).toBeCallableWith({\n // @ts-expect-error\n id: { $gt: 2, $lte: 2 },\n });\n\n // We used to default to number filters for other types, like geotimeseries reference and timeseries. These tests will make sure\n // we don't do that anymore\n expectTypeOf(objectSetWithSpecialPropertyTypes.where).toBeCallableWith({\n $and: [\n { employeeLocation: { $eq: \"myLocation\" } },\n {\n employeeLocation: { $ne: \"notMyLocation\" },\n },\n { employeeLocation: { $isNull: false } },\n // @ts-expect-error\n { employeeLocation: { $isNull: false, $eq: \"myLocation\" } },\n // @ts-expect-error\n { employeeLocation: { $gt: 5 } },\n ],\n });\n\n expectTypeOf(objectSetWithSpecialPropertyTypes.where).toBeCallableWith({\n $and: [\n { employeeStatus: { $eq: \"myStatus\" } },\n {\n employeeLocation: { $ne: \"notMyStatus\" },\n },\n { employeeLocation: { $isNull: false } },\n // @ts-expect-error\n { employeeLocation: { $lte: 5 } },\n ],\n });\n });\n\n describe(\"includeRid\", () => {\n it(\"properly returns the correct string for includeRid\", () => {\n expectTypeOf<Awaited<FetchPageResult<TodoDef, \"text\", false, \"throw\">>>()\n .toEqualTypeOf<{\n data: Osdk<TodoDef, \"text\">[];\n nextPageToken: string | undefined;\n totalCount: string;\n }>();\n\n expectTypeOf<Awaited<FetchPageResult<TodoDef, \"text\", true, false>>>()\n .branded\n .toEqualTypeOf<{\n data: Osdk<TodoDef, \"text\" | \"$rid\" | \"$notStrict\">[];\n nextPageToken: string | undefined;\n totalCount: string;\n }>();\n });\n\n it(\"works with $all\", () => {\n expectTypeOf<\n Awaited<FetchPageResult<TodoDef, \"text\" | \"id\", false, \"drop\">>\n >().branded\n .toEqualTypeOf<{\n data: Osdk<TodoDef>[];\n nextPageToken: string | undefined;\n totalCount: string;\n }>();\n\n expectTypeOf<\n Awaited<FetchPageResult<TodoDef, \"text\" | \"id\", true, \"drop\">>\n >()\n .branded\n .toEqualTypeOf<{\n data: Osdk<TodoDef, \"$all\" | \"$rid\">[];\n nextPageToken: string | undefined;\n totalCount: string;\n }>();\n\n expectTypeOf<\n Awaited<FetchPageResult<TodoDef, \"text\" | \"id\", true, \"drop\">>\n >()\n .branded\n .toEqualTypeOf<{\n data: Osdk<TodoDef, \"$all\" | \"$rid\">[];\n nextPageToken: string | undefined;\n totalCount: string;\n }>();\n\n expectTypeOf<\n Awaited<FetchPageResult<FooInterface, \"fooSpt\", true, \"drop\">>\n >()\n .branded\n .toEqualTypeOf<{\n data: Osdk<FooInterface, \"$all\" | \"$rid\">[];\n nextPageToken: string | undefined;\n totalCount: string;\n }>();\n\n expectTypeOf<\n Awaited<FetchPageResult<FooInterface, \"fooSpt\", true, \"drop\">>\n >()\n .branded\n .toEqualTypeOf<{\n data: Osdk<FooInterface, \"$all\" | \"$rid\">[];\n nextPageToken: string | undefined;\n totalCount: string;\n }>();\n });\n });\n});\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"fetchPage.test.js","names":["Employee","FooInterface","Todo","describe","expect","expectTypeOf","it","createMinimalClient","fetchPage","objectSetToSearchJsonV2","resolveInterfaceObjectSet","createObjectSet","getWireObjectSet","metadata","ontologyRid","branded","toEqualTypeOf","type","objectSet","objectType","where","field","value","undefined","toEqual","client","text","id","$gt","wireObjectSet","fooSpt","$includeAllBaseObjectProperties","objectSets","interfaceType","includeAllBaseObjectProperties","objectSetWithSpecialPropertyTypes","toBeCallableWith","$and","$lte","employeeLocation","$eq","$ne","$isNull","employeeStatus"],"sources":["fetchPage.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 FetchPageArgs,\n FetchPageResult,\n ObjectTypeDefinition,\n Osdk,\n PageResult,\n PropertyKeys,\n SelectArgToKeys,\n} from \"@osdk/api\";\nimport { Employee, FooInterface, Todo } from \"@osdk/client.test.ontology\";\nimport type { SearchJsonQueryV2 } from \"@osdk/foundry.ontologies\";\nimport { describe, expect, expectTypeOf, it } from \"vitest\";\nimport { createMinimalClient } from \"../createMinimalClient.js\";\nimport {\n fetchPage,\n objectSetToSearchJsonV2,\n resolveInterfaceObjectSet,\n} from \"../object/fetchPage.js\";\nimport {\n createObjectSet,\n getWireObjectSet,\n} from \"../objectSet/createObjectSet.js\";\n\nconst metadata = {\n ontologyRid: \"asdf\",\n};\ntype TodoDef = Todo;\n\ndescribe(fetchPage, () => {\n it(\"infers select properly\", () => {\n // this helper lets us get return types of functions that are generic\n class Helper<\n T extends ObjectTypeDefinition,\n const A extends FetchPageArgs<T>,\n > {\n public fetchPage<\n L extends SelectArgToKeys<T, A>,\n R extends A[\"$includeRid\"] extends true ? true : false,\n >() {\n return fetchPage<\n T,\n L & PropertyKeys<T>,\n R,\n \"drop\",\n false\n >({} as any, {} as any, {} as any);\n }\n }\n\n expectTypeOf<Awaited<ReturnType<Helper<TodoDef, {}>[\"fetchPage\"]>>>()\n .branded\n .toEqualTypeOf<PageResult<Osdk<TodoDef, \"$all\">>>();\n\n // e.g. fetchPage({ select: [] });\n expectTypeOf<\n Awaited<ReturnType<Helper<TodoDef, { $select: [] }>[\"fetchPage\"]>>\n >()\n .branded\n .toEqualTypeOf<PageResult<Osdk<TodoDef, \"$all\">>>();\n\n // e.g. fetchPage()\n expectTypeOf<\n Awaited<\n ReturnType<\n Helper<TodoDef, FetchPageArgs<TodoDef>>[\"fetchPage\"]\n >\n >\n >()\n .branded\n .toEqualTypeOf<PageResult<Osdk<TodoDef, \"$all\">>>();\n\n // e.g. fetchPage({ $select: [\"text\"]}\n expectTypeOf<\n Awaited<\n ReturnType<Helper<TodoDef, { $select: [\"text\"] }>[\"fetchPage\"]>\n >\n >()\n .branded\n .toEqualTypeOf<PageResult<Osdk<TodoDef, \"text\">>>();\n });\n\n it(\"converts interface objectsets to search properly\", () => {\n expect(objectSetToSearchJsonV2(\n {\n type: \"filter\",\n objectSet: {\n type: \"filter\",\n objectSet: {\n type: \"base\",\n objectType: \"Todo\",\n },\n where: {\n type: \"eq\",\n field: \"text\",\n value: \"hello\",\n },\n },\n\n where: {\n type: \"gt\",\n field: \"id\",\n value: 2,\n },\n },\n \"Todo\",\n undefined,\n )).toEqual(\n {\n type: \"and\",\n value: [\n {\n type: \"gt\",\n field: \"id\",\n value: 2,\n },\n {\n type: \"eq\",\n field: \"text\",\n value: \"hello\",\n },\n ],\n } satisfies SearchJsonQueryV2,\n );\n });\n\n it(\"converts interface objectsets to search properly part 2\", () => {\n const client = createMinimalClient(\n metadata,\n \"https://foo\",\n async () => \"\",\n );\n const objectSet = createObjectSet(Todo, client).where({\n text: \"hello\",\n }).where({\n id: { $gt: 2 },\n });\n\n const wireObjectSet = getWireObjectSet(objectSet);\n\n expect(objectSetToSearchJsonV2(wireObjectSet, \"Todo\", undefined)).toEqual(\n {\n type: \"and\",\n value: [\n {\n type: \"gt\",\n field: \"id\",\n value: 2,\n },\n {\n type: \"eq\",\n field: \"text\",\n value: \"hello\",\n },\n ],\n } satisfies SearchJsonQueryV2,\n );\n });\n\n it(\"converts interface object set for new API correctly\", () => {\n const client = createMinimalClient(\n metadata,\n \"https://foo\",\n async () => \"\",\n );\n const objectSet = createObjectSet(FooInterface, client).where({\n fooSpt: \"hello\",\n });\n\n const wireObjectSet = getWireObjectSet(objectSet);\n\n expect(\n resolveInterfaceObjectSet(wireObjectSet, \"FooInterface\", {\n $includeAllBaseObjectProperties: true,\n }),\n ).toEqual(\n {\n type: \"intersect\",\n objectSets: [\n {\n type: \"filter\",\n where: {\n type: \"eq\",\n field: \"fooSpt\",\n value: \"hello\",\n },\n objectSet: { interfaceType: \"FooInterface\", type: \"interfaceBase\" },\n },\n {\n type: \"interfaceBase\",\n interfaceType: \"FooInterface\",\n includeAllBaseObjectProperties: true,\n },\n ],\n },\n );\n\n expect(\n resolveInterfaceObjectSet(wireObjectSet, \"FooInterface\", {}),\n ).toEqual(\n {\n type: \"filter\",\n where: {\n type: \"eq\",\n field: \"fooSpt\",\n value: \"hello\",\n },\n objectSet: { interfaceType: \"FooInterface\", type: \"interfaceBase\" },\n },\n );\n expect(\n resolveInterfaceObjectSet(wireObjectSet, \"FooInterface\", {\n $includeAllBaseObjectProperties: false,\n }),\n ).toEqual(\n {\n type: \"filter\",\n where: {\n type: \"eq\",\n field: \"fooSpt\",\n value: \"hello\",\n },\n objectSet: { interfaceType: \"FooInterface\", type: \"interfaceBase\" },\n },\n );\n });\n\n it(\"where clause keys correctly typed\", () => {\n const client = createMinimalClient(\n metadata,\n \"https://foo\",\n async () => \"\",\n );\n const objectSet = createObjectSet(Todo, client);\n const objectSetWithSpecialPropertyTypes = createObjectSet(Employee, client);\n\n expectTypeOf(objectSet.where).toBeCallableWith({\n $and: [{ id: { $gt: 2 } }, { id: { $lte: 2 } }],\n });\n expectTypeOf(objectSet.where).toBeCallableWith({\n // @ts-expect-error\n id: { $gt: 2, $lte: 2 },\n });\n\n // We used to default to number filters for other types, like geotimeseries reference and timeseries. These tests will make sure\n // we don't do that anymore\n expectTypeOf(objectSetWithSpecialPropertyTypes.where).toBeCallableWith({\n $and: [\n { employeeLocation: { $eq: \"myLocation\" } },\n {\n employeeLocation: { $ne: \"notMyLocation\" },\n },\n { employeeLocation: { $isNull: false } },\n // @ts-expect-error\n { employeeLocation: { $isNull: false, $eq: \"myLocation\" } },\n // @ts-expect-error\n { employeeLocation: { $gt: 5 } },\n ],\n });\n\n expectTypeOf(objectSetWithSpecialPropertyTypes.where).toBeCallableWith({\n $and: [\n { employeeStatus: { $eq: \"myStatus\" } },\n {\n employeeLocation: { $ne: \"notMyStatus\" },\n },\n { employeeLocation: { $isNull: false } },\n // @ts-expect-error\n { employeeLocation: { $lte: 5 } },\n ],\n });\n });\n\n describe(\"includeRid\", () => {\n it(\"properly returns the correct string for includeRid\", () => {\n expectTypeOf<\n Awaited<FetchPageResult<TodoDef, \"text\", false, \"throw\", false>>\n >()\n .toEqualTypeOf<{\n data: Osdk<TodoDef, \"text\">[];\n nextPageToken: string | undefined;\n totalCount: string;\n }>();\n\n expectTypeOf<\n Awaited<FetchPageResult<TodoDef, \"text\", true, false, false>>\n >()\n .branded\n .toEqualTypeOf<{\n data: Osdk<TodoDef, \"text\" | \"$rid\" | \"$notStrict\">[];\n nextPageToken: string | undefined;\n totalCount: string;\n }>();\n });\n\n it(\"works with $all\", () => {\n expectTypeOf<\n Awaited<FetchPageResult<TodoDef, \"text\" | \"id\", false, \"drop\", false>>\n >().branded\n .toEqualTypeOf<{\n data: Osdk<TodoDef>[];\n nextPageToken: string | undefined;\n totalCount: string;\n }>();\n\n expectTypeOf<\n Awaited<FetchPageResult<TodoDef, \"text\" | \"id\", true, \"drop\", false>>\n >()\n .branded\n .toEqualTypeOf<{\n data: Osdk<TodoDef, \"$all\" | \"$rid\">[];\n nextPageToken: string | undefined;\n totalCount: string;\n }>();\n\n expectTypeOf<\n Awaited<FetchPageResult<TodoDef, \"text\" | \"id\", true, \"drop\", false>>\n >()\n .branded\n .toEqualTypeOf<{\n data: Osdk<TodoDef, \"$all\" | \"$rid\">[];\n nextPageToken: string | undefined;\n totalCount: string;\n }>();\n\n expectTypeOf<\n Awaited<FetchPageResult<FooInterface, \"fooSpt\", true, \"drop\", false>>\n >()\n .branded\n .toEqualTypeOf<{\n data: Osdk<FooInterface, \"$all\" | \"$rid\">[];\n nextPageToken: string | undefined;\n totalCount: string;\n }>();\n\n expectTypeOf<\n Awaited<FetchPageResult<FooInterface, \"fooSpt\", true, \"drop\", false>>\n >()\n .branded\n .toEqualTypeOf<{\n data: Osdk<FooInterface, \"$all\" | \"$rid\">[];\n nextPageToken: string | undefined;\n totalCount: string;\n }>();\n });\n });\n});\n"],"mappings":"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","ignoreList":[]}
@@ -19,6 +19,7 @@ import { apiServer, stubData, withoutRid } from "@osdk/shared.test";
19
19
  import { afterAll, beforeAll, describe, expect, expectTypeOf, it } from "vitest";
20
20
  import { additionalContext } from "../Client.js";
21
21
  import { createClient } from "../createClient.js";
22
+ import { InterfaceDefinitions } from "../ontology/OntologyProvider.js";
22
23
  import { createOsdkObject } from "./convertWireToOsdkObjects/createOsdkObject.js";
23
24
  function asV2Object(o, includeRid) {
24
25
  o = includeRid ? {
@@ -223,6 +224,7 @@ describe("OsdkObject", () => {
223
224
  expect(mergedEmployee).toMatchInlineSnapshot(`
224
225
  {
225
226
  "$apiName": "Employee",
227
+ "$objectSpecifier": "Employee:50031",
226
228
  "$objectType": "Employee",
227
229
  "$primaryKey": 50031,
228
230
  "$title": "Jane Doe",
@@ -260,6 +262,7 @@ describe("OsdkObject", () => {
260
262
  expect(mergedEmployee).toMatchInlineSnapshot(`
261
263
  {
262
264
  "$apiName": "Employee",
265
+ "$objectSpecifier": "Employee:50031",
263
266
  "$objectType": "Employee",
264
267
  "$primaryKey": 50031,
265
268
  "$title": "John Doe",
@@ -294,6 +297,7 @@ describe("OsdkObject", () => {
294
297
  expect(mergedEmployee).toMatchInlineSnapshot(`
295
298
  {
296
299
  "$apiName": "Employee",
300
+ "$objectSpecifier": "Employee:50031",
297
301
  "$objectType": "Employee",
298
302
  "$primaryKey": 50031,
299
303
  "$title": "Brad Pitt",
@@ -329,6 +333,111 @@ describe("OsdkObject", () => {
329
333
  "employeeId": 50035
330
334
  })).toThrow();
331
335
  });
336
+ describe("interface", () => {
337
+ const interfaceDef = {
338
+ apiName: "FooInterface",
339
+ displayName: "",
340
+ links: {},
341
+ properties: {
342
+ "fooSpt": {
343
+ type: "string"
344
+ },
345
+ "notImplementedFooSpt": {
346
+ type: "string"
347
+ }
348
+ },
349
+ rid: "",
350
+ type: "interface",
351
+ implements: []
352
+ };
353
+ const fooInterfaceOsdkDef = {
354
+ apiName: "FooInterface",
355
+ type: "interface",
356
+ "__DefinitionMetadata": interfaceDef
357
+ };
358
+ const EmployeeFetchedMetadata = {
359
+ "apiName": "Employee",
360
+ "primaryKeyType": "integer",
361
+ "primaryKeyApiName": "employeeId",
362
+ "properties": {
363
+ "employeeId": {
364
+ "type": "integer"
365
+ },
366
+ "fullName": {
367
+ "type": "string"
368
+ }
369
+ },
370
+ interfaceMap: {
371
+ "FooInterface": {
372
+ "fooSpt": "fullName"
373
+ }
374
+ },
375
+ inverseInterfaceMap: {
376
+ "FooInterface": {
377
+ "fullName": "fooSpt"
378
+ }
379
+ },
380
+ [InterfaceDefinitions]: {
381
+ "FooInterface": {
382
+ def: interfaceDef
383
+ }
384
+ },
385
+ type: "object",
386
+ titleProperty: "fullName",
387
+ pluralDisplayName: "",
388
+ status: "ACTIVE",
389
+ displayName: "",
390
+ links: {},
391
+ rid: ""
392
+ };
393
+ it("Correctly updates the interface and underlying object", () => {
394
+ const employeeOsdkObject = createOsdkObject(client[additionalContext], EmployeeFetchedMetadata, {
395
+ "$apiName": "Employee",
396
+ "$objectType": "Employee",
397
+ "$primaryKey": 50031,
398
+ "$title": "Jane Doe",
399
+ "employeeId": 50031,
400
+ "fullName": "Jane Doe"
401
+ });
402
+ const personInterfaceObject = employeeOsdkObject.$as(fooInterfaceOsdkDef);
403
+ const clonedInterface = personInterfaceObject.$clone({
404
+ "fooSpt": "John Adams"
405
+ });
406
+ expect(clonedInterface).toMatchInlineSnapshot(`
407
+ {
408
+ "$apiName": "FooInterface",
409
+ "$objectType": "Employee",
410
+ "$primaryKey": 50031,
411
+ "$title": "John Adams",
412
+ "fooSpt": "John Adams",
413
+ }
414
+ `);
415
+ expect(clonedInterface.$as("Employee")).toMatchInlineSnapshot(`
416
+ {
417
+ "$apiName": "Employee",
418
+ "$objectType": "Employee",
419
+ "$primaryKey": 50031,
420
+ "$title": "John Adams",
421
+ "employeeId": 50031,
422
+ "fullName": "John Adams",
423
+ }
424
+ `);
425
+ });
426
+ it("Throws if updating an interface with a property not implemented by the underlying object type", () => {
427
+ const employeeOsdkObject = createOsdkObject(client[additionalContext], EmployeeFetchedMetadata, {
428
+ "$apiName": "Employee",
429
+ "$objectType": "Employee",
430
+ "$primaryKey": 50031,
431
+ "$title": "Jane Doe",
432
+ "employeeId": 50031,
433
+ "fullName": "Jane Doe"
434
+ });
435
+ const loadedInterfaceObject = employeeOsdkObject.$as(interfaceDef);
436
+ expect(() => loadedInterfaceObject.$clone({
437
+ "notImplementedFooSpt": "John Adams"
438
+ })).toThrowErrorMatchingInlineSnapshot(`[Error: Cannot clone interface with notImplementedFooSpt as property is not implemented by the underlying object type Employee]`);
439
+ });
440
+ });
332
441
  });
333
442
  });
334
443
  export async function shouldError(client) {
@@ -1 +1 @@
1
- {"version":3,"file":"object.test.js","names":["$Objects","$ontologyRid","Employee","apiServer","stubData","withoutRid","afterAll","beforeAll","describe","expect","expectTypeOf","it","additionalContext","createClient","createOsdkObject","asV2Object","o","includeRid","$apiName","__apiName","$objectType","$primaryKey","__primaryKey","$title","__title","client","customEntryPointClient","listen","close","result","where","employeeId","employee1","fetchPage","employee","data","JSON","stringify","toBeDefined","toMatchObject","anything","startDate","Object","keys","$link","lead","fetchOne","$select","toBe","employee2","employeeStatus","toBeUndefined","employees","$and","peepsResult","peeps","toHaveLength","nextPageToken","office","peep","$includeRid","leadRid","$rid","objects","sort","toStrictEqual","updatedEmployee","mergedEmployee","$clone","toEqualTypeOf","toMatchInlineSnapshot","toMatchTypeOf","toThrow","shouldError","shouldError2","shouldCompile_client_fetchOne_old_select","shouldCompile_unstableClient_fetchOne_old_select","shouldCompile_client_fetchOne_new_select","shouldCompile_unstableClient_fetchOne_new_select","shouldCompile_client_fetchOne_old_noArgs","shouldCompile_unstableClient_fetchOne_noArgs"],"sources":["object.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 { Osdk, PropertyKeys } from \"@osdk/api\";\nimport { $Objects, $ontologyRid, Employee } from \"@osdk/client.test.ontology\";\nimport { apiServer, stubData, withoutRid } from \"@osdk/shared.test\";\nimport {\n afterAll,\n beforeAll,\n describe,\n expect,\n expectTypeOf,\n it,\n} from \"vitest\";\nimport { additionalContext, type Client } from \"../Client.js\";\nimport { createClient } from \"../createClient.js\";\nimport { createOsdkObject } from \"./convertWireToOsdkObjects/createOsdkObject.js\";\n\nfunction asV2Object(o: any, includeRid?: boolean) {\n o = includeRid ? { ...o } : withoutRid(o);\n o.$apiName = o.__apiName;\n o.$objectType = o.__apiName;\n o.$primaryKey = o.__primaryKey;\n o.$title = o.__title;\n delete o.__apiName;\n delete o.__primaryKey;\n delete o.__title;\n return o;\n}\n\ndescribe(\"OsdkObject\", () => {\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 describe(\"link\", () => {\n it(\"loads an employee\", async () => {\n const result = await client(Employee).where({\n employeeId: stubData.employee1.employeeId,\n }).fetchPage();\n\n // we should get the employee we requested\n const employee = result.data[0];\n expect(JSON.stringify(employee)).toBeDefined();\n expect(employee).toMatchObject({\n \"$apiName\": \"Employee\",\n \"$objectType\": \"Employee\",\n \"$primaryKey\": 50030,\n \"class\": \"Red\",\n \"employeeId\": 50030,\n \"employeeStatus\": expect.anything(),\n \"fullName\": \"John Doe\",\n \"office\": \"NYC\",\n \"startDate\": \"2019-01-01\",\n });\n\n employee.startDate;\n\n // it should have the prototype that we assign at hydration time\n expect(Object.keys(employee.$link.lead)).toBeDefined();\n });\n it(\"loads an employee with custom client\", async () => {\n const result = await customEntryPointClient(Employee).where({\n employeeId: stubData.employee1.employeeId,\n }).fetchPage();\n\n // we should get the employee we requested\n const employee = result.data[0];\n expect(JSON.stringify(employee)).toBeDefined();\n expect(employee).toMatchObject({\n \"$apiName\": \"Employee\",\n \"$objectType\": \"Employee\",\n \"$primaryKey\": 50030,\n \"class\": \"Red\",\n \"employeeId\": 50030,\n \"employeeStatus\": expect.anything(),\n \"fullName\": \"John Doe\",\n \"office\": \"NYC\",\n \"startDate\": \"2019-01-01\",\n });\n\n employee.startDate;\n\n // it should have the prototype that we assign at hydration time\n expect(Object.keys(employee.$link.lead)).toBeDefined();\n });\n\n it(\"traverses the link from an employee to their lead\", async () => {\n const result = await client(Employee).where({\n employeeId: stubData.employee1.employeeId,\n }).fetchPage();\n const employee = result.data[0];\n\n const lead = await employee.$link.lead.fetchOne({\n $select: [\"employeeId\"],\n });\n expect(lead.employeeId).toBe(stubData.employee2.employeeId);\n\n // ensure that the select was performed\n expect(lead.employeeId).toBeDefined();\n expect((lead as any).employeeStatus).toBeUndefined();\n });\n\n it(\"traverses the link from an lead to their peeps\", async () => {\n // slightly weird request here to hit the existing mocks for employee2\n const employees = await client(Employee).where({\n $and: [\n { \"employeeId\": { \"$gt\": 50030 } },\n { \"employeeId\": { \"$lt\": 50032 } },\n ],\n }).fetchPage();\n const lead = employees.data[0];\n expect(lead).toBeDefined();\n\n const peepsResult = await lead.$link.peeps.fetchPage({\n $select: [\"fullName\", \"employeeId\"],\n });\n expect(peepsResult.data).toHaveLength(2);\n expect(peepsResult.nextPageToken).toBeUndefined();\n\n // ensure that the select was performed\n expect(peepsResult.data[0]!.employeeId).toBeDefined();\n expect((peepsResult.data[0] as any).office).toBeUndefined();\n });\n\n it(\"traverses the link from an lead to their peep by primaryKey with fetchOne\", async () => {\n // slightly weird request here to hit the existing mocks for employee2\n const employees = await client(Employee).where({\n $and: [\n { \"employeeId\": { \"$gt\": 50030 } },\n { \"employeeId\": { \"$lt\": 50032 } },\n ],\n }).fetchPage();\n const lead = employees.data[0];\n expect(lead).toBeDefined();\n\n const peep = await lead.$link.peeps.fetchOne(\n stubData.employee1.employeeId,\n {\n $select: [\"employeeId\"],\n },\n );\n expect(peep).toBeDefined();\n\n // ensure that select worked\n expect(peep.employeeId).toBeDefined();\n expect((peep as any).employeeStatus).toBeUndefined();\n });\n it(\"gives $rid access when requested\", async () => {\n const result = await client(Employee).where({\n employeeId: stubData.employee1.employeeId,\n }).fetchPage(\n {\n $includeRid: true,\n },\n );\n const leadRid = result.data[0].$rid;\n expect(leadRid).toBeDefined();\n expect(leadRid).toBe(\n \"ri.phonograph2-objects.main.object.88a6fccb-f333-46d6-a07e-7725c5f18b61\",\n );\n });\n it(\"objects are enumerable in an sdk\", async () => {\n const objects = Object.keys($Objects);\n expect(objects.sort()).toStrictEqual([\n \"BgaoNflPlayer\",\n \"Employee\",\n \"ObjectWithTimestampPrimaryKey\",\n \"Office\",\n \"Person\",\n \"Task\",\n \"Todo\",\n \"equipment\",\n \"objectTypeWithAllPropertyTypes\",\n ].sort());\n });\n });\n describe(\"clone\", () => {\n let employee: Osdk.Instance<\n $Objects.Employee,\n never,\n PropertyKeys<$Objects.Employee>\n >;\n beforeAll(async () => {\n employee = (await client(Employee).where({\n employeeId: stubData.employee2.employeeId,\n }).fetchPage()).data[0];\n\n expect(employee).toMatchObject({\n \"$apiName\": \"Employee\",\n \"$objectType\": \"Employee\",\n \"$primaryKey\": 50031,\n \"$title\": \"Jane Doe\",\n \"class\": \"Blue\",\n \"employeeId\": 50031,\n \"fullName\": \"Jane Doe\",\n \"office\": \"SEA\",\n \"startDate\": \"2012-02-12\",\n });\n });\n\n it(\"clones and updates an object with another osdk object\", async () => {\n const updatedEmployee = createOsdkObject(\n client[additionalContext],\n {\n \"apiName\": \"Employee\",\n \"primaryKeyType\": \"integer\",\n \"primaryKeyApiName\": \"employeeId\",\n \"properties\": {\n \"class\": { \"type\": \"string\" },\n \"employeeId\": { \"type\": \"integer\" },\n \"fullName\": { \"type\": \"string\" },\n \"office\": { \"type\": \"string\" },\n },\n } as any,\n {\n \"$apiName\": \"Employee\",\n \"$objectType\": \"Employee\",\n \"$primaryKey\": 50031,\n \"$title\": \"Jane Doe\",\n \"class\": \"Red\",\n \"employeeId\": 50031,\n \"fullName\": \"Jane Doe\",\n \"office\": \"NYC\",\n },\n ) as Osdk.Instance<\n Employee,\n never,\n \"class\" | \"employeeId\" | \"fullName\" | \"office\"\n >;\n\n const mergedEmployee = employee.$clone(updatedEmployee);\n\n expectTypeOf(mergedEmployee).toEqualTypeOf(employee);\n\n expect(mergedEmployee).toMatchInlineSnapshot(`\n {\n \"$apiName\": \"Employee\",\n \"$objectType\": \"Employee\",\n \"$primaryKey\": 50031,\n \"$title\": \"Jane Doe\",\n \"class\": \"Red\",\n \"employeeId\": 50031,\n \"employeeLocation\": GeotimeSeriesPropertyImpl {\n \"lastFetchedValue\": undefined,\n },\n \"employeeSensor\": TimeSeriesPropertyImpl {},\n \"employeeStatus\": TimeSeriesPropertyImpl {},\n \"fullName\": \"Jane Doe\",\n \"office\": \"NYC\",\n \"startDate\": \"2012-02-12\",\n }\n `);\n });\n\n it(\"correctly scopes up with another OSDK object\", async () => {\n const firstEmployee = { $clone: () => {} } as unknown as Osdk.Instance<\n Employee,\n never,\n \"class\"\n >;\n expectTypeOf(firstEmployee.$clone(employee)).toMatchTypeOf<\n Osdk.Instance<\n Employee,\n never,\n PropertyKeys<Employee>\n >\n >();\n });\n\n it(\"Correctly preserves keys from original and new with distinct property key sets\", async () => {\n const firstEmployee = { $clone: () => {} } as unknown as Osdk.Instance<\n Employee,\n never,\n \"class\"\n >;\n expectTypeOf(\n firstEmployee.$clone({} as Osdk.Instance<Employee, never, \"office\">),\n ).toMatchTypeOf<\n Osdk.Instance<\n Employee,\n never,\n \"class\" | \"office\"\n >\n >();\n });\n\n it(\"clones and updates an object with a record\", async () => {\n const mergedEmployee = employee.$clone({\n \"class\": \"Green\",\n \"employeeId\": 50031,\n \"fullName\": \"John Doe\",\n \"office\": \"SEA\",\n \"startDate\": \"2019-01-01\",\n });\n\n expect(mergedEmployee).toMatchInlineSnapshot(`\n {\n \"$apiName\": \"Employee\",\n \"$objectType\": \"Employee\",\n \"$primaryKey\": 50031,\n \"$title\": \"John Doe\",\n \"class\": \"Green\",\n \"employeeId\": 50031,\n \"employeeLocation\": GeotimeSeriesPropertyImpl {\n \"lastFetchedValue\": undefined,\n },\n \"employeeSensor\": TimeSeriesPropertyImpl {},\n \"employeeStatus\": TimeSeriesPropertyImpl {},\n \"fullName\": \"John Doe\",\n \"office\": \"SEA\",\n \"startDate\": \"2019-01-01\",\n }\n `);\n });\n\n it(\"correctly scopes up with a record\", async () => {\n const firstEmployee = { $clone: () => {} } as unknown as Osdk.Instance<\n Employee,\n never,\n \"class\"\n >;\n expectTypeOf(firstEmployee.$clone({\n \"class\": \"Green\",\n \"employeeId\": 50031,\n \"fullName\": \"John Doe\",\n \"office\": \"SEA\",\n \"startDate\": \"2019-01-01\",\n })).toMatchTypeOf<\n Osdk.Instance<\n Employee,\n never,\n \"class\" | \"employeeId\" | \"fullName\" | \"office\" | \"startDate\"\n >\n >();\n });\n\n it(\"correctly sets title\", async () => {\n const mergedEmployee = employee.$clone({\n \"fullName\": \"Brad Pitt\",\n });\n\n expect(mergedEmployee).toMatchInlineSnapshot(`\n {\n \"$apiName\": \"Employee\",\n \"$objectType\": \"Employee\",\n \"$primaryKey\": 50031,\n \"$title\": \"Brad Pitt\",\n \"class\": \"Blue\",\n \"employeeId\": 50031,\n \"employeeLocation\": GeotimeSeriesPropertyImpl {\n \"lastFetchedValue\": undefined,\n },\n \"employeeSensor\": TimeSeriesPropertyImpl {},\n \"employeeStatus\": TimeSeriesPropertyImpl {},\n \"fullName\": \"Brad Pitt\",\n \"office\": \"SEA\",\n \"startDate\": \"2012-02-12\",\n }\n `);\n });\n\n it(\"is able to clone with nothing passed in\", async () => {\n expect(employee.$clone()).toMatchObject({\n \"$apiName\": \"Employee\",\n \"$objectType\": \"Employee\",\n \"$primaryKey\": 50031,\n \"$title\": \"Jane Doe\",\n \"class\": \"Blue\",\n \"employeeId\": 50031,\n \"fullName\": \"Jane Doe\",\n \"office\": \"SEA\",\n \"startDate\": \"2012-02-12\",\n });\n });\n\n it(\"throws when merging objects with different primary keys\", async () => {\n expect(() =>\n employee.$clone({\n \"class\": \"Green\",\n \"employeeId\": 50035,\n })\n ).toThrow();\n });\n });\n});\n\nexport async function shouldError(client: Client): Promise<Osdk<Employee>> {\n // @ts-expect-error\n return client(Employee).fetchOne(1, {\n $select: [\"employeeId\"],\n });\n}\n\nexport async function shouldError2(\n client: Client,\n): Promise<Employee.OsdkObject> {\n // @ts-expect-error\n return client(Employee).fetchOne(1, {\n $select: [\"employeeId\"],\n });\n}\n\nexport async function shouldCompile_client_fetchOne_old_select(\n client: Client,\n): Promise<Osdk<Employee, \"employeeId\">> {\n return client(Employee).fetchOne(1, {\n $select: [\"employeeId\"],\n });\n}\n\nexport async function shouldCompile_unstableClient_fetchOne_old_select(\n client: Client,\n): Promise<Osdk<Employee, \"employeeId\">> {\n return client(Employee).fetchOne(1, {\n $select: [\"employeeId\"],\n });\n}\n\nexport async function shouldCompile_client_fetchOne_new_select(\n client: Client,\n): Promise<Employee.OsdkObject<never, \"employeeId\">> {\n return client(Employee).fetchOne(1, {\n $select: [\"employeeId\"],\n });\n}\n\nexport async function shouldCompile_unstableClient_fetchOne_new_select(\n client: Client,\n): Promise<Osdk<Employee, \"employeeId\">> {\n return client(Employee).fetchOne(1, {\n $select: [\"employeeId\"],\n });\n}\n\nexport async function shouldCompile_client_fetchOne_old_noArgs(\n client: Client,\n): Promise<Osdk<Employee>> {\n return client(Employee).fetchOne(1);\n}\n\nexport async function shouldCompile_unstableClient_fetchOne_noArgs(\n client: Client,\n): Promise<Osdk<Employee>> {\n return client(Employee).fetchOne(1);\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"object.test.js","names":["$Objects","$ontologyRid","Employee","apiServer","stubData","withoutRid","afterAll","beforeAll","describe","expect","expectTypeOf","it","additionalContext","createClient","InterfaceDefinitions","createOsdkObject","asV2Object","o","includeRid","$apiName","__apiName","$objectType","$primaryKey","__primaryKey","$title","__title","client","customEntryPointClient","listen","close","result","where","employeeId","employee1","fetchPage","employee","data","JSON","stringify","toBeDefined","toMatchObject","anything","startDate","Object","keys","$link","lead","fetchOne","$select","toBe","employee2","employeeStatus","toBeUndefined","employees","$and","peepsResult","peeps","toHaveLength","nextPageToken","office","peep","$includeRid","leadRid","$rid","objects","sort","toStrictEqual","updatedEmployee","mergedEmployee","$clone","toEqualTypeOf","toMatchInlineSnapshot","toMatchTypeOf","toThrow","interfaceDef","apiName","displayName","links","properties","type","rid","implements","fooInterfaceOsdkDef","EmployeeFetchedMetadata","interfaceMap","inverseInterfaceMap","def","titleProperty","pluralDisplayName","status","employeeOsdkObject","personInterfaceObject","$as","clonedInterface","loadedInterfaceObject","toThrowErrorMatchingInlineSnapshot","shouldError","shouldError2","shouldCompile_client_fetchOne_old_select","shouldCompile_unstableClient_fetchOne_old_select","shouldCompile_client_fetchOne_new_select","shouldCompile_unstableClient_fetchOne_new_select","shouldCompile_client_fetchOne_old_noArgs","shouldCompile_unstableClient_fetchOne_noArgs"],"sources":["object.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 InterfaceDefinition,\n InterfaceMetadata,\n Osdk,\n PropertyKeys,\n} from \"@osdk/api\";\nimport { $Objects, $ontologyRid, Employee } from \"@osdk/client.test.ontology\";\nimport { apiServer, stubData, withoutRid } from \"@osdk/shared.test\";\nimport {\n afterAll,\n beforeAll,\n describe,\n expect,\n expectTypeOf,\n it,\n} from \"vitest\";\nimport { additionalContext, type Client } from \"../Client.js\";\nimport { createClient } from \"../createClient.js\";\nimport type {\n FetchedObjectTypeDefinition,\n} from \"../ontology/OntologyProvider.js\";\nimport { InterfaceDefinitions } from \"../ontology/OntologyProvider.js\";\nimport { createOsdkObject } from \"./convertWireToOsdkObjects/createOsdkObject.js\";\n\nfunction asV2Object(o: any, includeRid?: boolean) {\n o = includeRid ? { ...o } : withoutRid(o);\n o.$apiName = o.__apiName;\n o.$objectType = o.__apiName;\n o.$primaryKey = o.__primaryKey;\n o.$title = o.__title;\n delete o.__apiName;\n delete o.__primaryKey;\n delete o.__title;\n return o;\n}\n\ndescribe(\"OsdkObject\", () => {\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 describe(\"link\", () => {\n it(\"loads an employee\", async () => {\n const result = await client(Employee).where({\n employeeId: stubData.employee1.employeeId,\n }).fetchPage();\n\n // we should get the employee we requested\n const employee = result.data[0];\n expect(JSON.stringify(employee)).toBeDefined();\n expect(employee).toMatchObject({\n \"$apiName\": \"Employee\",\n \"$objectType\": \"Employee\",\n \"$primaryKey\": 50030,\n \"class\": \"Red\",\n \"employeeId\": 50030,\n \"employeeStatus\": expect.anything(),\n \"fullName\": \"John Doe\",\n \"office\": \"NYC\",\n \"startDate\": \"2019-01-01\",\n });\n\n employee.startDate;\n\n // it should have the prototype that we assign at hydration time\n expect(Object.keys(employee.$link.lead)).toBeDefined();\n });\n it(\"loads an employee with custom client\", async () => {\n const result = await customEntryPointClient(Employee).where({\n employeeId: stubData.employee1.employeeId,\n }).fetchPage();\n\n // we should get the employee we requested\n const employee = result.data[0];\n expect(JSON.stringify(employee)).toBeDefined();\n expect(employee).toMatchObject({\n \"$apiName\": \"Employee\",\n \"$objectType\": \"Employee\",\n \"$primaryKey\": 50030,\n \"class\": \"Red\",\n \"employeeId\": 50030,\n \"employeeStatus\": expect.anything(),\n \"fullName\": \"John Doe\",\n \"office\": \"NYC\",\n \"startDate\": \"2019-01-01\",\n });\n\n employee.startDate;\n\n // it should have the prototype that we assign at hydration time\n expect(Object.keys(employee.$link.lead)).toBeDefined();\n });\n\n it(\"traverses the link from an employee to their lead\", async () => {\n const result = await client(Employee).where({\n employeeId: stubData.employee1.employeeId,\n }).fetchPage();\n const employee = result.data[0];\n\n const lead = await employee.$link.lead.fetchOne({\n $select: [\"employeeId\"],\n });\n expect(lead.employeeId).toBe(stubData.employee2.employeeId);\n\n // ensure that the select was performed\n expect(lead.employeeId).toBeDefined();\n expect((lead as any).employeeStatus).toBeUndefined();\n });\n\n it(\"traverses the link from an lead to their peeps\", async () => {\n // slightly weird request here to hit the existing mocks for employee2\n const employees = await client(Employee).where({\n $and: [\n { \"employeeId\": { \"$gt\": 50030 } },\n { \"employeeId\": { \"$lt\": 50032 } },\n ],\n }).fetchPage();\n const lead = employees.data[0];\n expect(lead).toBeDefined();\n\n const peepsResult = await lead.$link.peeps.fetchPage({\n $select: [\"fullName\", \"employeeId\"],\n });\n expect(peepsResult.data).toHaveLength(2);\n expect(peepsResult.nextPageToken).toBeUndefined();\n\n // ensure that the select was performed\n expect(peepsResult.data[0]!.employeeId).toBeDefined();\n expect((peepsResult.data[0] as any).office).toBeUndefined();\n });\n\n it(\"traverses the link from an lead to their peep by primaryKey with fetchOne\", async () => {\n // slightly weird request here to hit the existing mocks for employee2\n const employees = await client(Employee).where({\n $and: [\n { \"employeeId\": { \"$gt\": 50030 } },\n { \"employeeId\": { \"$lt\": 50032 } },\n ],\n }).fetchPage();\n const lead = employees.data[0];\n expect(lead).toBeDefined();\n\n const peep = await lead.$link.peeps.fetchOne(\n stubData.employee1.employeeId,\n {\n $select: [\"employeeId\"],\n },\n );\n expect(peep).toBeDefined();\n\n // ensure that select worked\n expect(peep.employeeId).toBeDefined();\n expect((peep as any).employeeStatus).toBeUndefined();\n });\n it(\"gives $rid access when requested\", async () => {\n const result = await client(Employee).where({\n employeeId: stubData.employee1.employeeId,\n }).fetchPage(\n {\n $includeRid: true,\n },\n );\n const leadRid = result.data[0].$rid;\n expect(leadRid).toBeDefined();\n expect(leadRid).toBe(\n \"ri.phonograph2-objects.main.object.88a6fccb-f333-46d6-a07e-7725c5f18b61\",\n );\n });\n it(\"objects are enumerable in an sdk\", async () => {\n const objects = Object.keys($Objects);\n expect(objects.sort()).toStrictEqual([\n \"BgaoNflPlayer\",\n \"Employee\",\n \"ObjectWithTimestampPrimaryKey\",\n \"Office\",\n \"Person\",\n \"Task\",\n \"Todo\",\n \"equipment\",\n \"objectTypeWithAllPropertyTypes\",\n ].sort());\n });\n });\n describe(\"clone\", () => {\n let employee: Osdk.Instance<\n $Objects.Employee,\n never,\n PropertyKeys<$Objects.Employee>\n >;\n beforeAll(async () => {\n employee = (await client(Employee).where({\n employeeId: stubData.employee2.employeeId,\n }).fetchPage()).data[0];\n\n expect(employee).toMatchObject({\n \"$apiName\": \"Employee\",\n \"$objectType\": \"Employee\",\n \"$primaryKey\": 50031,\n \"$title\": \"Jane Doe\",\n \"class\": \"Blue\",\n \"employeeId\": 50031,\n \"fullName\": \"Jane Doe\",\n \"office\": \"SEA\",\n \"startDate\": \"2012-02-12\",\n });\n });\n\n it(\"clones and updates an object with another osdk object\", async () => {\n const updatedEmployee = createOsdkObject(\n client[additionalContext],\n {\n \"apiName\": \"Employee\",\n \"primaryKeyType\": \"integer\",\n \"primaryKeyApiName\": \"employeeId\",\n \"properties\": {\n \"class\": { \"type\": \"string\" },\n \"employeeId\": { \"type\": \"integer\" },\n \"fullName\": { \"type\": \"string\" },\n \"office\": { \"type\": \"string\" },\n },\n } as any,\n {\n \"$apiName\": \"Employee\",\n \"$objectType\": \"Employee\",\n \"$primaryKey\": 50031,\n \"$title\": \"Jane Doe\",\n \"class\": \"Red\",\n \"employeeId\": 50031,\n \"fullName\": \"Jane Doe\",\n \"office\": \"NYC\",\n },\n ) as unknown as Osdk.Instance<\n Employee,\n never,\n \"class\" | \"employeeId\" | \"fullName\" | \"office\"\n >;\n\n const mergedEmployee = employee.$clone(updatedEmployee);\n\n expectTypeOf(mergedEmployee).toEqualTypeOf(employee);\n\n expect(mergedEmployee).toMatchInlineSnapshot(`\n {\n \"$apiName\": \"Employee\",\n \"$objectSpecifier\": \"Employee:50031\",\n \"$objectType\": \"Employee\",\n \"$primaryKey\": 50031,\n \"$title\": \"Jane Doe\",\n \"class\": \"Red\",\n \"employeeId\": 50031,\n \"employeeLocation\": GeotimeSeriesPropertyImpl {\n \"lastFetchedValue\": undefined,\n },\n \"employeeSensor\": TimeSeriesPropertyImpl {},\n \"employeeStatus\": TimeSeriesPropertyImpl {},\n \"fullName\": \"Jane Doe\",\n \"office\": \"NYC\",\n \"startDate\": \"2012-02-12\",\n }\n `);\n });\n\n it(\"correctly scopes up with another OSDK object\", async () => {\n const firstEmployee = { $clone: () => {} } as unknown as Osdk.Instance<\n Employee,\n never,\n \"class\"\n >;\n expectTypeOf(firstEmployee.$clone(employee)).toMatchTypeOf<\n Osdk.Instance<\n Employee,\n never,\n PropertyKeys<Employee>\n >\n >();\n });\n\n it(\"Correctly preserves keys from original and new with distinct property key sets\", async () => {\n const firstEmployee = { $clone: () => {} } as unknown as Osdk.Instance<\n Employee,\n never,\n \"class\"\n >;\n expectTypeOf(\n firstEmployee.$clone({} as Osdk.Instance<Employee, never, \"office\">),\n ).toMatchTypeOf<\n Osdk.Instance<\n Employee,\n never,\n \"class\" | \"office\"\n >\n >();\n });\n\n it(\"clones and updates an object with a record\", async () => {\n const mergedEmployee = employee.$clone({\n \"class\": \"Green\",\n \"employeeId\": 50031,\n \"fullName\": \"John Doe\",\n \"office\": \"SEA\",\n \"startDate\": \"2019-01-01\",\n });\n\n expect(mergedEmployee).toMatchInlineSnapshot(`\n {\n \"$apiName\": \"Employee\",\n \"$objectSpecifier\": \"Employee:50031\",\n \"$objectType\": \"Employee\",\n \"$primaryKey\": 50031,\n \"$title\": \"John Doe\",\n \"class\": \"Green\",\n \"employeeId\": 50031,\n \"employeeLocation\": GeotimeSeriesPropertyImpl {\n \"lastFetchedValue\": undefined,\n },\n \"employeeSensor\": TimeSeriesPropertyImpl {},\n \"employeeStatus\": TimeSeriesPropertyImpl {},\n \"fullName\": \"John Doe\",\n \"office\": \"SEA\",\n \"startDate\": \"2019-01-01\",\n }\n `);\n });\n\n it(\"correctly scopes up with a record\", async () => {\n const firstEmployee = { $clone: () => {} } as unknown as Osdk.Instance<\n Employee,\n never,\n \"class\"\n >;\n expectTypeOf(firstEmployee.$clone({\n \"class\": \"Green\",\n \"employeeId\": 50031,\n \"fullName\": \"John Doe\",\n \"office\": \"SEA\",\n \"startDate\": \"2019-01-01\",\n })).toMatchTypeOf<\n Osdk.Instance<\n Employee,\n never,\n \"class\" | \"employeeId\" | \"fullName\" | \"office\" | \"startDate\"\n >\n >();\n });\n\n it(\"correctly sets title\", async () => {\n const mergedEmployee = employee.$clone({\n \"fullName\": \"Brad Pitt\",\n });\n\n expect(mergedEmployee).toMatchInlineSnapshot(`\n {\n \"$apiName\": \"Employee\",\n \"$objectSpecifier\": \"Employee:50031\",\n \"$objectType\": \"Employee\",\n \"$primaryKey\": 50031,\n \"$title\": \"Brad Pitt\",\n \"class\": \"Blue\",\n \"employeeId\": 50031,\n \"employeeLocation\": GeotimeSeriesPropertyImpl {\n \"lastFetchedValue\": undefined,\n },\n \"employeeSensor\": TimeSeriesPropertyImpl {},\n \"employeeStatus\": TimeSeriesPropertyImpl {},\n \"fullName\": \"Brad Pitt\",\n \"office\": \"SEA\",\n \"startDate\": \"2012-02-12\",\n }\n `);\n });\n\n it(\"is able to clone with nothing passed in\", async () => {\n expect(employee.$clone()).toMatchObject({\n \"$apiName\": \"Employee\",\n \"$objectType\": \"Employee\",\n \"$primaryKey\": 50031,\n \"$title\": \"Jane Doe\",\n \"class\": \"Blue\",\n \"employeeId\": 50031,\n \"fullName\": \"Jane Doe\",\n \"office\": \"SEA\",\n \"startDate\": \"2012-02-12\",\n });\n });\n\n it(\"throws when merging objects with different primary keys\", async () => {\n expect(() =>\n employee.$clone({\n \"class\": \"Green\",\n \"employeeId\": 50035,\n })\n ).toThrow();\n });\n describe(\"interface\", () => {\n const interfaceDef = {\n apiName: \"FooInterface\",\n displayName: \"\",\n links: {},\n properties: {\n \"fooSpt\": {\n type: \"string\",\n },\n \"notImplementedFooSpt\": {\n type: \"string\",\n },\n },\n rid: \"\",\n type: \"interface\",\n implements: [],\n } satisfies InterfaceMetadata;\n\n const fooInterfaceOsdkDef = {\n apiName: \"FooInterface\",\n type: \"interface\",\n \"__DefinitionMetadata\": interfaceDef,\n } satisfies InterfaceDefinition;\n\n const EmployeeFetchedMetadata = {\n \"apiName\": \"Employee\",\n \"primaryKeyType\": \"integer\",\n \"primaryKeyApiName\": \"employeeId\",\n \"properties\": {\n \"employeeId\": { \"type\": \"integer\" },\n \"fullName\": { \"type\": \"string\" },\n },\n interfaceMap: {\n \"FooInterface\": {\n \"fooSpt\": \"fullName\",\n },\n },\n inverseInterfaceMap: {\n \"FooInterface\": {\n \"fullName\": \"fooSpt\",\n },\n },\n [InterfaceDefinitions]: {\n \"FooInterface\": { def: interfaceDef },\n },\n type: \"object\",\n titleProperty: \"fullName\",\n pluralDisplayName: \"\",\n status: \"ACTIVE\",\n displayName: \"\",\n links: {},\n rid: \"\",\n } satisfies FetchedObjectTypeDefinition;\n\n it(\"Correctly updates the interface and underlying object\", () => {\n const employeeOsdkObject = createOsdkObject(\n client[additionalContext],\n EmployeeFetchedMetadata,\n {\n \"$apiName\": \"Employee\",\n \"$objectType\": \"Employee\",\n \"$primaryKey\": 50031,\n \"$title\": \"Jane Doe\",\n \"employeeId\": 50031,\n \"fullName\": \"Jane Doe\",\n },\n ) as unknown as Osdk.Instance<\n Employee,\n never,\n \"employeeId\" | \"fullName\"\n >;\n\n const personInterfaceObject = employeeOsdkObject.$as(\n fooInterfaceOsdkDef,\n );\n\n const clonedInterface = personInterfaceObject.$clone({\n \"fooSpt\": \"John Adams\",\n });\n\n expect(clonedInterface).toMatchInlineSnapshot(`\n {\n \"$apiName\": \"FooInterface\",\n \"$objectType\": \"Employee\",\n \"$primaryKey\": 50031,\n \"$title\": \"John Adams\",\n \"fooSpt\": \"John Adams\",\n }\n `);\n\n expect(clonedInterface.$as(\"Employee\")).toMatchInlineSnapshot(`\n {\n \"$apiName\": \"Employee\",\n \"$objectType\": \"Employee\",\n \"$primaryKey\": 50031,\n \"$title\": \"John Adams\",\n \"employeeId\": 50031,\n \"fullName\": \"John Adams\",\n }\n `);\n });\n it(\"Throws if updating an interface with a property not implemented by the underlying object type\", () => {\n const employeeOsdkObject = createOsdkObject(\n client[additionalContext],\n EmployeeFetchedMetadata,\n {\n \"$apiName\": \"Employee\",\n \"$objectType\": \"Employee\",\n \"$primaryKey\": 50031,\n \"$title\": \"Jane Doe\",\n \"employeeId\": 50031,\n \"fullName\": \"Jane Doe\",\n },\n ) as unknown as Osdk.Instance<\n Employee,\n never,\n \"employeeId\" | \"fullName\"\n >;\n\n const loadedInterfaceObject = employeeOsdkObject.$as(interfaceDef);\n expect(() =>\n loadedInterfaceObject.$clone({\n \"notImplementedFooSpt\": \"John Adams\",\n })\n ).toThrowErrorMatchingInlineSnapshot(\n `[Error: Cannot clone interface with notImplementedFooSpt as property is not implemented by the underlying object type Employee]`,\n );\n });\n });\n });\n});\n\nexport async function shouldError(client: Client): Promise<Osdk<Employee>> {\n // @ts-expect-error\n return client(Employee).fetchOne(1, {\n $select: [\"employeeId\"],\n });\n}\n\nexport async function shouldError2(\n client: Client,\n): Promise<Employee.OsdkObject> {\n // @ts-expect-error\n return client(Employee).fetchOne(1, {\n $select: [\"employeeId\"],\n });\n}\n\nexport async function shouldCompile_client_fetchOne_old_select(\n client: Client,\n): Promise<Osdk<Employee, \"employeeId\">> {\n return client(Employee).fetchOne(1, {\n $select: [\"employeeId\"],\n });\n}\n\nexport async function shouldCompile_unstableClient_fetchOne_old_select(\n client: Client,\n): Promise<Osdk<Employee, \"employeeId\">> {\n return client(Employee).fetchOne(1, {\n $select: [\"employeeId\"],\n });\n}\n\nexport async function shouldCompile_client_fetchOne_new_select(\n client: Client,\n): Promise<Employee.OsdkObject<never, \"employeeId\">> {\n return client(Employee).fetchOne(1, {\n $select: [\"employeeId\"],\n });\n}\n\nexport async function shouldCompile_unstableClient_fetchOne_new_select(\n client: Client,\n): Promise<Osdk<Employee, \"employeeId\">> {\n return client(Employee).fetchOne(1, {\n $select: [\"employeeId\"],\n });\n}\n\nexport async function shouldCompile_client_fetchOne_old_noArgs(\n client: Client,\n): Promise<Osdk<Employee>> {\n return client(Employee).fetchOne(1);\n}\n\nexport async function shouldCompile_unstableClient_fetchOne_noArgs(\n client: Client,\n): Promise<Osdk<Employee>> {\n return client(Employee).fetchOne(1);\n}\n"],"mappings":"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","ignoreList":[]}
@@ -16,7 +16,7 @@
16
16
 
17
17
  import { $ontologyRid, Employee, FooInterface } from "@osdk/client.test.ontology";
18
18
  import { apiServer } from "@osdk/shared.test";
19
- import { afterAll, beforeAll, describe, expect, it } from "vitest";
19
+ import { afterAll, beforeAll, describe, expect, expectTypeOf, it } from "vitest";
20
20
  import { createClient } from "../createClient.js";
21
21
  describe("ObjectSet", () => {
22
22
  let client;
@@ -55,11 +55,27 @@ describe("ObjectSet", () => {
55
55
  it("allows fetching by field from a interface object set - where clause", async () => {
56
56
  const whereClausedInterface = await client(FooInterface).where({
57
57
  fooSpt: "The Grinch"
58
- }).fetchPage();
58
+ }).fetchPage({
59
+ $includeAllBaseObjectProperties: true
60
+ });
59
61
  const interfaceObj = whereClausedInterface.data[0];
60
62
  expect(interfaceObj.fooSpt).toEqual("The Grinch");
61
63
  const asEmployee = interfaceObj.$as(Employee);
64
+ expectTypeOf().toEqualTypeOf;
62
65
  expect(asEmployee.fullName).toEqual("The Grinch");
66
+ expect(asEmployee.office).toEqual("Where the Grinch Lives");
67
+ const whereClausedInterface2 = await client(FooInterface).where({
68
+ fooSpt: "The Grinch"
69
+ }).fetchPage({
70
+ $includeAllBaseObjectProperties: false
71
+ });
72
+ const interfaceObj2 = whereClausedInterface2.data[0];
73
+ expect(interfaceObj2.fooSpt).toEqual("The Grinch");
74
+ const asEmployee2 = interfaceObj2.$as(Employee);
75
+ expectTypeOf().toEqualTypeOf;
76
+ expect(asEmployee2.fullName).toEqual("The Grinch");
77
+ // @ts-expect-error
78
+ expect(asEmployee2.office).toBeUndefined();
63
79
  });
64
80
  });
65
81
  //# sourceMappingURL=InterfaceObjectSet.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"InterfaceObjectSet.test.js","names":["$ontologyRid","Employee","FooInterface","apiServer","afterAll","beforeAll","describe","expect","it","createClient","client","listen","close","employeeObjectSet","fooInterfaceSet","union","subtract","intersect","objectSet","iter","data","interfacers","fetchPage","foo","fooSpt","toEqual","whereClausedInterface","where","interfaceObj","asEmployee","$as","fullName"],"sources":["InterfaceObjectSet.test.ts"],"sourcesContent":["/*\n * Copyright 2024 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n $ontologyRid,\n Employee,\n FooInterface,\n} from \"@osdk/client.test.ontology\";\nimport { apiServer } from \"@osdk/shared.test\";\nimport { afterAll, beforeAll, describe, expect, it } from \"vitest\";\n\nimport type { Client } from \"../Client.js\";\nimport { createClient } from \"../createClient.js\";\n\ndescribe(\"ObjectSet\", () => {\n let client: Client;\n\n beforeAll(async () => {\n apiServer.listen();\n client = createClient(\n \"https://stack.palantir.com\",\n $ontologyRid,\n async () => \"myAccessToken\",\n );\n });\n\n afterAll(() => {\n apiServer.close();\n });\n\n it(\"does not allow intersect/union/subtract with implementing interface types, for now\", () => {\n const employeeObjectSet = client(Employee);\n const fooInterfaceSet = client(FooInterface);\n\n // @ts-expect-error\n employeeObjectSet.union(fooInterfaceSet);\n\n // @ts-expect-error\n employeeObjectSet.subtract(fooInterfaceSet);\n\n // @ts-expect-error\n employeeObjectSet.intersect(fooInterfaceSet);\n });\n\n it(\"interface objects set loading\", async () => {\n const objectSet = client(FooInterface);\n let iter = 0;\n const { data: interfacers } = await objectSet.fetchPage();\n for (const foo of interfacers) {\n expect(foo.fooSpt).toEqual(\"Santa Claus\");\n iter++;\n }\n expect(iter).toEqual(1);\n });\n\n it(\"allows fetching by field from a interface object set - where clause\", async () => {\n const whereClausedInterface = await client(FooInterface).where({\n fooSpt: \"The Grinch\",\n }).fetchPage();\n\n const interfaceObj = whereClausedInterface.data[0];\n expect(interfaceObj.fooSpt).toEqual(\"The Grinch\");\n\n const asEmployee = interfaceObj.$as(Employee);\n\n expect(asEmployee.fullName).toEqual(\"The Grinch\");\n });\n});\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SACEA,YAAY,EACZC,QAAQ,EACRC,YAAY,QACP,4BAA4B;AACnC,SAASC,SAAS,QAAQ,mBAAmB;AAC7C,SAASC,QAAQ,EAAEC,SAAS,EAAEC,QAAQ,EAAEC,MAAM,EAAEC,EAAE,QAAQ,QAAQ;AAGlE,SAASC,YAAY,QAAQ,oBAAoB;AAEjDH,QAAQ,CAAC,WAAW,EAAE,MAAM;EAC1B,IAAII,MAAc;EAElBL,SAAS,CAAC,YAAY;IACpBF,SAAS,CAACQ,MAAM,CAAC,CAAC;IAClBD,MAAM,GAAGD,YAAY,CACnB,4BAA4B,EAC5BT,YAAY,EACZ,YAAY,eACd,CAAC;EACH,CAAC,CAAC;EAEFI,QAAQ,CAAC,MAAM;IACbD,SAAS,CAACS,KAAK,CAAC,CAAC;EACnB,CAAC,CAAC;EAEFJ,EAAE,CAAC,oFAAoF,EAAE,MAAM;IAC7F,MAAMK,iBAAiB,GAAGH,MAAM,CAACT,QAAQ,CAAC;IAC1C,MAAMa,eAAe,GAAGJ,MAAM,CAACR,YAAY,CAAC;;IAE5C;IACAW,iBAAiB,CAACE,KAAK,CAACD,eAAe,CAAC;;IAExC;IACAD,iBAAiB,CAACG,QAAQ,CAACF,eAAe,CAAC;;IAE3C;IACAD,iBAAiB,CAACI,SAAS,CAACH,eAAe,CAAC;EAC9C,CAAC,CAAC;EAEFN,EAAE,CAAC,+BAA+B,EAAE,YAAY;IAC9C,MAAMU,SAAS,GAAGR,MAAM,CAACR,YAAY,CAAC;IACtC,IAAIiB,IAAI,GAAG,CAAC;IACZ,MAAM;MAAEC,IAAI,EAAEC;IAAY,CAAC,GAAG,MAAMH,SAAS,CAACI,SAAS,CAAC,CAAC;IACzD,KAAK,MAAMC,GAAG,IAAIF,WAAW,EAAE;MAC7Bd,MAAM,CAACgB,GAAG,CAACC,MAAM,CAAC,CAACC,OAAO,CAAC,aAAa,CAAC;MACzCN,IAAI,EAAE;IACR;IACAZ,MAAM,CAACY,IAAI,CAAC,CAACM,OAAO,CAAC,CAAC,CAAC;EACzB,CAAC,CAAC;EAEFjB,EAAE,CAAC,qEAAqE,EAAE,YAAY;IACpF,MAAMkB,qBAAqB,GAAG,MAAMhB,MAAM,CAACR,YAAY,CAAC,CAACyB,KAAK,CAAC;MAC7DH,MAAM,EAAE;IACV,CAAC,CAAC,CAACF,SAAS,CAAC,CAAC;IAEd,MAAMM,YAAY,GAAGF,qBAAqB,CAACN,IAAI,CAAC,CAAC,CAAC;IAClDb,MAAM,CAACqB,YAAY,CAACJ,MAAM,CAAC,CAACC,OAAO,CAAC,YAAY,CAAC;IAEjD,MAAMI,UAAU,GAAGD,YAAY,CAACE,GAAG,CAAC7B,QAAQ,CAAC;IAE7CM,MAAM,CAACsB,UAAU,CAACE,QAAQ,CAAC,CAACN,OAAO,CAAC,YAAY,CAAC;EACnD,CAAC,CAAC;AACJ,CAAC,CAAC","ignoreList":[]}
1
+ {"version":3,"file":"InterfaceObjectSet.test.js","names":["$ontologyRid","Employee","FooInterface","apiServer","afterAll","beforeAll","describe","expect","expectTypeOf","it","createClient","client","listen","close","employeeObjectSet","fooInterfaceSet","union","subtract","intersect","objectSet","iter","data","interfacers","fetchPage","foo","fooSpt","toEqual","whereClausedInterface","where","$includeAllBaseObjectProperties","interfaceObj","asEmployee","$as","toEqualTypeOf","fullName","office","whereClausedInterface2","interfaceObj2","asEmployee2","toBeUndefined"],"sources":["InterfaceObjectSet.test.ts"],"sourcesContent":["/*\n * Copyright 2024 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n $ontologyRid,\n Employee,\n FooInterface,\n} from \"@osdk/client.test.ontology\";\nimport { apiServer } from \"@osdk/shared.test\";\nimport {\n afterAll,\n beforeAll,\n describe,\n expect,\n expectTypeOf,\n it,\n} from \"vitest\";\n\nimport type { Osdk, PropertyKeys } from \"@osdk/api\";\nimport type { Client } from \"../Client.js\";\nimport { createClient } from \"../createClient.js\";\n\ndescribe(\"ObjectSet\", () => {\n let client: Client;\n\n beforeAll(async () => {\n apiServer.listen();\n client = createClient(\n \"https://stack.palantir.com\",\n $ontologyRid,\n async () => \"myAccessToken\",\n );\n });\n\n afterAll(() => {\n apiServer.close();\n });\n\n it(\"does not allow intersect/union/subtract with implementing interface types, for now\", () => {\n const employeeObjectSet = client(Employee);\n const fooInterfaceSet = client(FooInterface);\n\n // @ts-expect-error\n employeeObjectSet.union(fooInterfaceSet);\n\n // @ts-expect-error\n employeeObjectSet.subtract(fooInterfaceSet);\n\n // @ts-expect-error\n employeeObjectSet.intersect(fooInterfaceSet);\n });\n\n it(\"interface objects set loading\", async () => {\n const objectSet = client(FooInterface);\n let iter = 0;\n const { data: interfacers } = await objectSet.fetchPage();\n for (const foo of interfacers) {\n expect(foo.fooSpt).toEqual(\"Santa Claus\");\n iter++;\n }\n expect(iter).toEqual(1);\n });\n\n it(\"allows fetching by field from a interface object set - where clause\", async () => {\n const whereClausedInterface = await client(FooInterface).where({\n fooSpt: \"The Grinch\",\n }).fetchPage({ $includeAllBaseObjectProperties: true });\n\n const interfaceObj = whereClausedInterface.data[0];\n expect(interfaceObj.fooSpt).toEqual(\"The Grinch\");\n\n const asEmployee = interfaceObj.$as(Employee);\n expectTypeOf<typeof asEmployee>().toEqualTypeOf<\n Osdk.Instance<Employee, \"$allBaseProperties\", PropertyKeys<Employee>, {}>\n >;\n\n expect(asEmployee.fullName).toEqual(\"The Grinch\");\n expect(asEmployee.office).toEqual(\"Where the Grinch Lives\");\n\n const whereClausedInterface2 = await client(FooInterface).where({\n fooSpt: \"The Grinch\",\n }).fetchPage({\n $includeAllBaseObjectProperties: false,\n });\n\n const interfaceObj2 = whereClausedInterface2.data[0];\n expect(interfaceObj2.fooSpt).toEqual(\"The Grinch\");\n const asEmployee2 = interfaceObj2.$as(Employee);\n\n expectTypeOf<typeof asEmployee2>().toEqualTypeOf<\n Osdk.Instance<Employee, never, \"fullName\", {}>\n >;\n\n expect(asEmployee2.fullName).toEqual(\"The Grinch\");\n // @ts-expect-error\n expect(asEmployee2.office).toBeUndefined();\n });\n});\n"],"mappings":"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","ignoreList":[]}