@osdk/client 2.1.0-beta.0 → 2.1.0-beta.10

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 (224) hide show
  1. package/CHANGELOG.md +163 -0
  2. package/build/browser/Client.d.ts +8 -21
  3. package/build/browser/Client.d.ts.map +1 -1
  4. package/build/browser/Client.js +2 -1
  5. package/build/browser/Client.js.map +1 -1
  6. package/build/browser/MinimalClientContext.d.ts +1 -1
  7. package/build/browser/MinimalClientContext.d.ts.map +1 -1
  8. package/build/browser/__unstable/ConjureSupport.js +4 -4
  9. package/build/browser/__unstable/ConjureSupport.js.map +1 -1
  10. package/build/browser/__unstable/createBulkLinksAsyncIterFactory.d.ts +1 -6
  11. package/build/browser/__unstable/createBulkLinksAsyncIterFactory.d.ts.map +1 -1
  12. package/build/browser/__unstable/createBulkLinksAsyncIterFactory.js +1 -1
  13. package/build/browser/__unstable/createBulkLinksAsyncIterFactory.js.map +1 -1
  14. package/build/browser/actions/applyAction.js +1 -1
  15. package/build/browser/actions/applyAction.js.map +1 -1
  16. package/build/browser/createClient.d.ts +1 -1
  17. package/build/browser/createClient.d.ts.map +1 -1
  18. package/build/browser/createClient.js +43 -19
  19. package/build/browser/createClient.js.map +1 -1
  20. package/build/browser/createGeotimeSeriesProperty.d.ts +14 -0
  21. package/build/browser/createGeotimeSeriesProperty.d.ts.map +1 -0
  22. package/build/browser/createGeotimeSeriesProperty.js +50 -0
  23. package/build/browser/createGeotimeSeriesProperty.js.map +1 -0
  24. package/build/browser/createMinimalClient.js +3 -3
  25. package/build/browser/createMinimalClient.js.map +1 -1
  26. package/build/browser/createPlatformClient.d.ts +1 -1
  27. package/build/browser/createPlatformClient.d.ts.map +1 -1
  28. package/build/browser/createTimeseriesProperty.d.ts.map +1 -1
  29. package/build/browser/createTimeseriesProperty.js +4 -36
  30. package/build/browser/createTimeseriesProperty.js.map +1 -1
  31. package/build/browser/fetchMetadata.test.js +7 -0
  32. package/build/browser/fetchMetadata.test.js.map +1 -1
  33. package/build/browser/index.d.ts +2 -2
  34. package/build/browser/index.d.ts.map +1 -1
  35. package/build/browser/index.js +1 -1
  36. package/build/browser/index.js.map +1 -1
  37. package/build/browser/intellisense.test.js +1 -1
  38. package/build/browser/intellisense.test.js.map +1 -1
  39. package/build/browser/internal/conversions/legacyToModernSingleAggregationResult.js +1 -1
  40. package/build/browser/internal/conversions/legacyToModernSingleAggregationResult.js.map +1 -1
  41. package/build/browser/internal/conversions/modernToLegacyWhereClause.js +3 -3
  42. package/build/browser/internal/conversions/modernToLegacyWhereClause.js.map +1 -1
  43. package/build/browser/internal/conversions/modernToLegacyWhereClause.test.js +88 -7
  44. package/build/browser/internal/conversions/modernToLegacyWhereClause.test.js.map +1 -1
  45. package/build/browser/object/AttachmentUpload.d.ts.map +1 -1
  46. package/build/browser/object/AttachmentUpload.js +6 -0
  47. package/build/browser/object/AttachmentUpload.js.map +1 -1
  48. package/build/browser/object/Cache.test.js +1 -1
  49. package/build/browser/object/Cache.test.js.map +1 -1
  50. package/build/browser/object/aggregate.js +4 -5
  51. package/build/browser/object/aggregate.js.map +1 -1
  52. package/build/browser/object/convertWireToOsdkObjects/InterfaceHolder.d.ts +1 -10
  53. package/build/browser/object/convertWireToOsdkObjects/InterfaceHolder.d.ts.map +1 -1
  54. package/build/browser/object/convertWireToOsdkObjects/InternalSymbols.d.ts +0 -6
  55. package/build/browser/object/convertWireToOsdkObjects/InternalSymbols.d.ts.map +1 -1
  56. package/build/browser/object/convertWireToOsdkObjects/InternalSymbols.js +7 -0
  57. package/build/browser/object/convertWireToOsdkObjects/InternalSymbols.js.map +1 -1
  58. package/build/browser/object/convertWireToOsdkObjects/createOsdkObject.js +70 -1
  59. package/build/browser/object/convertWireToOsdkObjects/createOsdkObject.js.map +1 -1
  60. package/build/browser/object/convertWireToOsdkObjects.js +42 -6
  61. package/build/browser/object/convertWireToOsdkObjects.js.map +1 -1
  62. package/build/browser/object/convertWireToOsdkObjects.test.js +211 -18
  63. package/build/browser/object/convertWireToOsdkObjects.test.js.map +1 -1
  64. package/build/browser/object/fetchPage.d.ts.map +1 -1
  65. package/build/browser/object/fetchPage.js +35 -25
  66. package/build/browser/object/fetchPage.js.map +1 -1
  67. package/build/browser/object/fetchPage.test.js +75 -1
  68. package/build/browser/object/fetchPage.test.js.map +1 -1
  69. package/build/browser/object/geotimeseriesreference.test.d.ts +2 -0
  70. package/build/browser/object/geotimeseriesreference.test.d.ts.map +1 -0
  71. package/build/browser/object/geotimeseriesreference.test.js +257 -0
  72. package/build/browser/object/geotimeseriesreference.test.js.map +1 -0
  73. package/build/browser/objectSet/InterfaceObjectSet.test.d.ts +2 -0
  74. package/build/browser/objectSet/InterfaceObjectSet.test.d.ts.map +1 -0
  75. package/build/browser/objectSet/InterfaceObjectSet.test.js +61 -0
  76. package/build/browser/objectSet/InterfaceObjectSet.test.js.map +1 -0
  77. package/build/browser/objectSet/ObjectSet.test.js +70 -51
  78. package/build/browser/objectSet/ObjectSet.test.js.map +1 -1
  79. package/build/browser/objectSet/ObjectSetListenerWebsocket.js +65 -57
  80. package/build/browser/objectSet/ObjectSetListenerWebsocket.js.map +1 -1
  81. package/build/browser/objectSet/ObjectSetListenerWebsocket.test.js +116 -26
  82. package/build/browser/objectSet/ObjectSetListenerWebsocket.test.js.map +1 -1
  83. package/build/browser/objectSet/createObjectSet.js +10 -8
  84. package/build/browser/objectSet/createObjectSet.js.map +1 -1
  85. package/build/browser/objectSet/toConjureObjectSet.js +7 -0
  86. package/build/browser/objectSet/toConjureObjectSet.js.map +1 -1
  87. package/build/browser/ontology/makeConjureContext.d.ts +1 -1
  88. package/build/browser/ontology/makeConjureContext.d.ts.map +1 -1
  89. package/build/browser/queries/applyQuery.js +1 -1
  90. package/build/browser/queries/applyQuery.js.map +1 -1
  91. package/build/browser/queries/queries.test.js +30 -2
  92. package/build/browser/queries/queries.test.js.map +1 -1
  93. package/build/browser/tsserver.js +1 -1
  94. package/build/browser/tsserver.js.map +1 -1
  95. package/build/browser/util/UserAgent.js +1 -1
  96. package/build/browser/util/UserAgent.js.map +1 -1
  97. package/build/browser/util/datetimeConverters.d.ts +22 -0
  98. package/build/browser/util/datetimeConverters.d.ts.map +1 -0
  99. package/build/browser/util/datetimeConverters.js +55 -0
  100. package/build/browser/util/datetimeConverters.js.map +1 -0
  101. package/build/browser/util/datetimeConverters.test.d.ts +2 -0
  102. package/build/browser/util/datetimeConverters.test.d.ts.map +1 -0
  103. package/build/browser/util/datetimeConverters.test.js +75 -0
  104. package/build/browser/util/datetimeConverters.test.js.map +1 -0
  105. package/build/browser/util/objectSetUtils.d.ts +4 -0
  106. package/build/browser/util/objectSetUtils.d.ts.map +1 -0
  107. package/build/browser/util/objectSetUtils.js +25 -0
  108. package/build/browser/util/objectSetUtils.js.map +1 -0
  109. package/build/browser/util/timeseriesUtils.d.ts +8 -0
  110. package/build/browser/util/timeseriesUtils.d.ts.map +1 -0
  111. package/build/browser/util/timeseriesUtils.js +51 -0
  112. package/build/browser/util/timeseriesUtils.js.map +1 -0
  113. package/build/esm/Client.d.ts +8 -21
  114. package/build/esm/Client.d.ts.map +1 -1
  115. package/build/esm/Client.js +2 -1
  116. package/build/esm/Client.js.map +1 -1
  117. package/build/esm/MinimalClientContext.d.ts +1 -1
  118. package/build/esm/MinimalClientContext.d.ts.map +1 -1
  119. package/build/esm/__unstable/ConjureSupport.js +4 -4
  120. package/build/esm/__unstable/ConjureSupport.js.map +1 -1
  121. package/build/esm/__unstable/createBulkLinksAsyncIterFactory.d.ts +1 -6
  122. package/build/esm/__unstable/createBulkLinksAsyncIterFactory.d.ts.map +1 -1
  123. package/build/esm/__unstable/createBulkLinksAsyncIterFactory.js +1 -1
  124. package/build/esm/__unstable/createBulkLinksAsyncIterFactory.js.map +1 -1
  125. package/build/esm/actions/applyAction.js +1 -1
  126. package/build/esm/actions/applyAction.js.map +1 -1
  127. package/build/esm/createClient.d.ts +1 -1
  128. package/build/esm/createClient.d.ts.map +1 -1
  129. package/build/esm/createClient.js +43 -19
  130. package/build/esm/createClient.js.map +1 -1
  131. package/build/esm/createGeotimeSeriesProperty.d.ts +14 -0
  132. package/build/esm/createGeotimeSeriesProperty.d.ts.map +1 -0
  133. package/build/esm/createGeotimeSeriesProperty.js +50 -0
  134. package/build/esm/createGeotimeSeriesProperty.js.map +1 -0
  135. package/build/esm/createMinimalClient.js +3 -3
  136. package/build/esm/createMinimalClient.js.map +1 -1
  137. package/build/esm/createPlatformClient.d.ts +1 -1
  138. package/build/esm/createPlatformClient.d.ts.map +1 -1
  139. package/build/esm/createTimeseriesProperty.d.ts.map +1 -1
  140. package/build/esm/createTimeseriesProperty.js +4 -36
  141. package/build/esm/createTimeseriesProperty.js.map +1 -1
  142. package/build/esm/fetchMetadata.test.js +7 -0
  143. package/build/esm/fetchMetadata.test.js.map +1 -1
  144. package/build/esm/index.d.ts +2 -2
  145. package/build/esm/index.d.ts.map +1 -1
  146. package/build/esm/index.js +1 -1
  147. package/build/esm/index.js.map +1 -1
  148. package/build/esm/intellisense.test.js +1 -1
  149. package/build/esm/intellisense.test.js.map +1 -1
  150. package/build/esm/internal/conversions/legacyToModernSingleAggregationResult.js +1 -1
  151. package/build/esm/internal/conversions/legacyToModernSingleAggregationResult.js.map +1 -1
  152. package/build/esm/internal/conversions/modernToLegacyWhereClause.js +3 -3
  153. package/build/esm/internal/conversions/modernToLegacyWhereClause.js.map +1 -1
  154. package/build/esm/internal/conversions/modernToLegacyWhereClause.test.js +88 -7
  155. package/build/esm/internal/conversions/modernToLegacyWhereClause.test.js.map +1 -1
  156. package/build/esm/object/AttachmentUpload.d.ts.map +1 -1
  157. package/build/esm/object/AttachmentUpload.js +6 -0
  158. package/build/esm/object/AttachmentUpload.js.map +1 -1
  159. package/build/esm/object/Cache.test.js +1 -1
  160. package/build/esm/object/Cache.test.js.map +1 -1
  161. package/build/esm/object/aggregate.js +4 -5
  162. package/build/esm/object/aggregate.js.map +1 -1
  163. package/build/esm/object/convertWireToOsdkObjects/InterfaceHolder.d.ts +1 -10
  164. package/build/esm/object/convertWireToOsdkObjects/InterfaceHolder.d.ts.map +1 -1
  165. package/build/esm/object/convertWireToOsdkObjects/InternalSymbols.d.ts +0 -6
  166. package/build/esm/object/convertWireToOsdkObjects/InternalSymbols.d.ts.map +1 -1
  167. package/build/esm/object/convertWireToOsdkObjects/InternalSymbols.js +7 -0
  168. package/build/esm/object/convertWireToOsdkObjects/InternalSymbols.js.map +1 -1
  169. package/build/esm/object/convertWireToOsdkObjects/createOsdkObject.js +70 -1
  170. package/build/esm/object/convertWireToOsdkObjects/createOsdkObject.js.map +1 -1
  171. package/build/esm/object/convertWireToOsdkObjects.js +42 -6
  172. package/build/esm/object/convertWireToOsdkObjects.js.map +1 -1
  173. package/build/esm/object/convertWireToOsdkObjects.test.js +211 -18
  174. package/build/esm/object/convertWireToOsdkObjects.test.js.map +1 -1
  175. package/build/esm/object/fetchPage.d.ts.map +1 -1
  176. package/build/esm/object/fetchPage.js +35 -25
  177. package/build/esm/object/fetchPage.js.map +1 -1
  178. package/build/esm/object/fetchPage.test.js +75 -1
  179. package/build/esm/object/fetchPage.test.js.map +1 -1
  180. package/build/esm/object/geotimeseriesreference.test.d.ts +2 -0
  181. package/build/esm/object/geotimeseriesreference.test.d.ts.map +1 -0
  182. package/build/esm/object/geotimeseriesreference.test.js +257 -0
  183. package/build/esm/object/geotimeseriesreference.test.js.map +1 -0
  184. package/build/esm/objectSet/InterfaceObjectSet.test.d.ts +2 -0
  185. package/build/esm/objectSet/InterfaceObjectSet.test.d.ts.map +1 -0
  186. package/build/esm/objectSet/InterfaceObjectSet.test.js +61 -0
  187. package/build/esm/objectSet/InterfaceObjectSet.test.js.map +1 -0
  188. package/build/esm/objectSet/ObjectSet.test.js +70 -51
  189. package/build/esm/objectSet/ObjectSet.test.js.map +1 -1
  190. package/build/esm/objectSet/ObjectSetListenerWebsocket.js +65 -57
  191. package/build/esm/objectSet/ObjectSetListenerWebsocket.js.map +1 -1
  192. package/build/esm/objectSet/ObjectSetListenerWebsocket.test.js +116 -26
  193. package/build/esm/objectSet/ObjectSetListenerWebsocket.test.js.map +1 -1
  194. package/build/esm/objectSet/createObjectSet.js +10 -8
  195. package/build/esm/objectSet/createObjectSet.js.map +1 -1
  196. package/build/esm/objectSet/toConjureObjectSet.js +7 -0
  197. package/build/esm/objectSet/toConjureObjectSet.js.map +1 -1
  198. package/build/esm/ontology/makeConjureContext.d.ts +1 -1
  199. package/build/esm/ontology/makeConjureContext.d.ts.map +1 -1
  200. package/build/esm/queries/applyQuery.js +1 -1
  201. package/build/esm/queries/applyQuery.js.map +1 -1
  202. package/build/esm/queries/queries.test.js +30 -2
  203. package/build/esm/queries/queries.test.js.map +1 -1
  204. package/build/esm/tsserver.js +1 -1
  205. package/build/esm/tsserver.js.map +1 -1
  206. package/build/esm/util/UserAgent.js +1 -1
  207. package/build/esm/util/UserAgent.js.map +1 -1
  208. package/build/esm/util/datetimeConverters.d.ts +22 -0
  209. package/build/esm/util/datetimeConverters.d.ts.map +1 -0
  210. package/build/esm/util/datetimeConverters.js +55 -0
  211. package/build/esm/util/datetimeConverters.js.map +1 -0
  212. package/build/esm/util/datetimeConverters.test.d.ts +2 -0
  213. package/build/esm/util/datetimeConverters.test.d.ts.map +1 -0
  214. package/build/esm/util/datetimeConverters.test.js +75 -0
  215. package/build/esm/util/datetimeConverters.test.js.map +1 -0
  216. package/build/esm/util/objectSetUtils.d.ts +4 -0
  217. package/build/esm/util/objectSetUtils.d.ts.map +1 -0
  218. package/build/esm/util/objectSetUtils.js +25 -0
  219. package/build/esm/util/objectSetUtils.js.map +1 -0
  220. package/build/esm/util/timeseriesUtils.d.ts +8 -0
  221. package/build/esm/util/timeseriesUtils.d.ts.map +1 -0
  222. package/build/esm/util/timeseriesUtils.js +51 -0
  223. package/build/esm/util/timeseriesUtils.js.map +1 -0
  224. package/package.json +22 -18
@@ -14,7 +14,7 @@
14
14
  * limitations under the License.
15
15
  */
16
16
  import { isOk } from "@osdk/api";
17
- import { $ontologyRid, Employee, FooInterface, Office } from "@osdk/client.test.ontology";
17
+ import { $ontologyRid, BarInterface, Employee, FooInterface, Office } from "@osdk/client.test.ontology";
18
18
  import { apiServer, stubData } from "@osdk/shared.test";
19
19
  import { afterAll, beforeAll, describe, expect, expectTypeOf, it } from "vitest";
20
20
  import { createClient } from "../createClient.js";
@@ -97,7 +97,8 @@ describe("ObjectSet", () => {
97
97
  employeeStatus: expect.anything(),
98
98
  fullName: "John Doe",
99
99
  office: "NYC",
100
- startDate: "2019-01-01"
100
+ startDate: "2019-01-01",
101
+ employeeLocation: expect.anything()
101
102
  }, {
102
103
  $apiName: "Employee",
103
104
  $objectType: "Employee",
@@ -108,7 +109,8 @@ describe("ObjectSet", () => {
108
109
  employeeStatus: expect.anything(),
109
110
  fullName: "Jane Doe",
110
111
  office: "SEA",
111
- startDate: "2012-02-12"
112
+ startDate: "2012-02-12",
113
+ employeeLocation: expect.anything()
112
114
  }, {
113
115
  $apiName: "Employee",
114
116
  $objectType: "Employee",
@@ -119,7 +121,8 @@ describe("ObjectSet", () => {
119
121
  employeeStatus: expect.anything(),
120
122
  fullName: "Jack Smith",
121
123
  office: "LON",
122
- startDate: "2015-05-15"
124
+ startDate: "2015-05-15",
125
+ employeeLocation: expect.anything()
123
126
  }]);
124
127
  });
125
128
  it("allows fetching by PK from a base object set - fetchOne", async () => {
@@ -189,34 +192,66 @@ describe("ObjectSet", () => {
189
192
  expect(iter).toEqual(2);
190
193
  }
191
194
  });
192
- describe.each(["fetchPage", "fetchPageWithErrors"])("%s", k => {
193
- describe("strictNonNull: \"drop\"", () => {
194
- describe("includeRid: true", () => {
195
- it("drops bad data", async () => {
196
- const opts = {
197
- $__EXPERIMENTAL_strictNonNull: "drop",
198
- $includeRid: true
199
- };
200
- const result = k === "fetchPage" ? await client(Employee).fetchPage(opts) : (await client(Employee).fetchPageWithErrors(opts)).value;
201
- expect(result.data).toHaveLength(3);
202
- expectTypeOf(result.data[0]).branded.toEqualTypeOf();
203
- expectTypeOf(result.data[0]).branded.toEqualTypeOf();
204
- });
205
- });
206
- describe("includeRid: false", () => {
207
- it("drops bad data", async () => {
208
- const opts = {
209
- $__EXPERIMENTAL_strictNonNull: "drop",
210
- $includeRid: false
211
- };
212
- const result = k === "fetchPage" ? await client(Employee).fetchPage(opts) : (await client(Employee).fetchPageWithErrors(opts)).value;
213
- expect(result.data).toHaveLength(3);
214
- expectTypeOf(result.data[0]).branded.toEqualTypeOf();
215
- expectTypeOf(result.data[0]).branded.toEqualTypeOf();
216
- expectTypeOf(result.data[0]).branded.toEqualTypeOf();
217
- });
218
- });
195
+ it("allows $in filter with ReadonlyArrays", () => {
196
+ const objectSet = client(Employee).where({
197
+ employeeId: {
198
+ $in: [50030, 50031]
199
+ }
219
200
  });
201
+ expect(objectSet).toBeDefined();
202
+ });
203
+ it("does not allow arbitrary keys when no properties", () => {
204
+ client(Employee).where({
205
+ // @ts-expect-error
206
+ employeeIdNonExistent: {
207
+ $in: [50030, 50031]
208
+ }
209
+ });
210
+ client(BarInterface).where({
211
+ // @ts-expect-error
212
+ nonExistentProp: ""
213
+ });
214
+ });
215
+ describe.each(["fetchPage", "fetchPageWithErrors"])("%s", k => {
216
+ // describe("strictNonNull: \"drop\"", () => {
217
+ // describe("includeRid: true", () => {
218
+ // it("drops bad data", async () => {
219
+ // const opts = {
220
+ // $__EXPERIMENTAL_strictNonNull: "drop",
221
+ // $includeRid: true,
222
+ // } as const;
223
+ // const result = k === "fetchPage"
224
+ // ? await client(Employee).fetchPage(opts)
225
+ // : (await client(Employee).fetchPageWithErrors(opts)).value!;
226
+ // expect(result.data).toHaveLength(3);
227
+ // expectTypeOf(result.data[0]).branded.toEqualTypeOf<
228
+ // Osdk<Employee, "$rid" | "$all">
229
+ // >();
230
+ // expectTypeOf(result.data[0]).branded.toEqualTypeOf<
231
+ // Employee.OsdkObject<"$rid">
232
+ // >();
233
+ // });
234
+ // });
235
+ // describe("includeRid: false", () => {
236
+ // it("drops bad data", async () => {
237
+ // const opts = {
238
+ // $__EXPERIMENTAL_strictNonNull: "drop",
239
+ // $includeRid: false,
240
+ // } as const;
241
+ // const result = k === "fetchPage"
242
+ // ? await client(Employee).fetchPage(opts)
243
+ // : (await client(Employee).fetchPageWithErrors(opts)).value!;
244
+ // expect(result.data).toHaveLength(3);
245
+ // expectTypeOf(result.data[0]).branded.toEqualTypeOf<Osdk<Employee>>();
246
+ // expectTypeOf(result.data[0]).branded.toEqualTypeOf<
247
+ // Employee.OsdkObject
248
+ // >();
249
+ // expectTypeOf(result.data[0]).branded.toEqualTypeOf<
250
+ // Employee.OsdkObject<never>
251
+ // >();
252
+ // });
253
+ // });
254
+ // });
220
255
  describe("strictNonNull: false", () => {
221
256
  describe("includeRid: true", () => {
222
257
  it("returns bad data", async () => {
@@ -232,8 +267,7 @@ describe("ObjectSet", () => {
232
267
  describe("includeRid: false", () => {
233
268
  it("returns bad data", async () => {
234
269
  const opts = {
235
- $__EXPERIMENTAL_strictNonNull: false,
236
- includeRid: false
270
+ $includeRid: false
237
271
  };
238
272
  const result = k === "fetchPage" ? await client(Employee).fetchPage(opts) : (await client(Employee).fetchPageWithErrors(opts)).value;
239
273
  expect(result.data).toHaveLength(4);
@@ -242,17 +276,11 @@ describe("ObjectSet", () => {
242
276
  });
243
277
  });
244
278
  });
245
- describe("strictNonNull: \"throw\"", () => {
246
- it("throws when getting bad data", () => {
247
- expect(() => client(Employee).fetchPage({
248
- $__EXPERIMENTAL_strictNonNull: "throw"
249
- })).rejects.toThrowErrorMatchingInlineSnapshot(`[Error: Unable to safely convert objects as some non nullable properties are null]`);
250
- });
251
- });
252
279
  describe.each(["fetchOne", "fetchOneWithErrors"])("%s", k => {
253
280
  describe("strictNonNull: false", () => {
254
281
  describe("includeRid: true", () => {
255
282
  it("returns bad data", async () => {
283
+ // Look at this
256
284
  const opts = {
257
285
  $__EXPERIMENTAL_strictNonNull: false,
258
286
  $includeRid: true
@@ -266,7 +294,7 @@ describe("ObjectSet", () => {
266
294
  it("returns bad data", async () => {
267
295
  const opts = {
268
296
  $__EXPERIMENTAL_strictNonNull: false,
269
- includeRid: false
297
+ $includeRid: false
270
298
  };
271
299
  const result = k === "fetchOne" ? await client(Employee).fetchOne(50033, opts) : (await client(Employee).fetchOneWithErrors(50033, opts)).value;
272
300
  expect(result).not.toBeUndefined();
@@ -275,19 +303,10 @@ describe("ObjectSet", () => {
275
303
  });
276
304
  });
277
305
  });
278
- describe("strictNonNull: \"throw\"", () => {
279
- it("throws when getting bad data", () => {
280
- expect(() => client(Employee).fetchPage({
281
- $__EXPERIMENTAL_strictNonNull: "throw"
282
- })).rejects.toThrowErrorMatchingInlineSnapshot(`[Error: Unable to safely convert objects as some non nullable properties are null]`);
283
- });
284
- });
285
306
  describe("conversions", () => {
286
307
  describe("strictNonNull: false", () => {
287
308
  it("returns bad data", async () => {
288
- const result = await client(Employee).fetchPage({
289
- $__EXPERIMENTAL_strictNonNull: false
290
- });
309
+ const result = await client(Employee).fetchPage({});
291
310
  const empNotStrict = result.data[0];
292
311
  expectTypeOf(empNotStrict).branded.toEqualTypeOf();
293
312
  expectTypeOf(empNotStrict).branded.toEqualTypeOf();
@@ -1 +1 @@
1
- {"version":3,"file":"ObjectSet.test.js","names":["isOk","$ontologyRid","Employee","FooInterface","Office","apiServer","stubData","afterAll","beforeAll","describe","expect","expectTypeOf","it","createClient","client","listen","close","employeeObjectSet","officeObjectSet","union","subtract","intersect","objectSet","unionedObjectSet","iter","data","employees","fetchPage","emp","employeeId","toEqual","objectSet2","where","subtractedObjectSet","intersectedObjectSet","$orderBy","toMatchObject","$apiName","$objectType","$primaryKey","class","employeeStatus","anything","fullName","office","startDate","$title","employee","fetchOne","employee1","toMatchTypeOf","toBe","employeeResult","fetchOneWithErrors","value","$select","branded","toEqualTypeOf","rejects","toThrow","employee2","pivotTo","result","fetchPageWithErrors","each","k","opts","$__EXPERIMENTAL_strictNonNull","$includeRid","toHaveLength","includeRid","toThrowErrorMatchingInlineSnapshot","not","toBeUndefined","empNotStrict","cheesedFooNotStrict","$as","fooSpt"],"sources":["ObjectSet.test.js"],"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 */\nimport { isOk } from \"@osdk/api\";\nimport { $ontologyRid, Employee, FooInterface, Office, } from \"@osdk/client.test.ontology\";\nimport { apiServer, stubData } from \"@osdk/shared.test\";\nimport { afterAll, beforeAll, describe, expect, expectTypeOf, it, } from \"vitest\";\nimport { createClient } from \"../createClient.js\";\ndescribe(\"ObjectSet\", () => {\n let client;\n beforeAll(async () => {\n apiServer.listen();\n client = createClient(\"https://stack.palantir.com\", $ontologyRid, async () => \"myAccessToken\");\n });\n afterAll(() => {\n apiServer.close();\n });\n it(\"does not allow intersect/union/subtract with different object types\", () => {\n const employeeObjectSet = client(Employee);\n const officeObjectSet = client(Office);\n // @ts-expect-error\n employeeObjectSet.union(officeObjectSet);\n // @ts-expect-error\n employeeObjectSet.subtract(officeObjectSet);\n // @ts-expect-error\n employeeObjectSet.intersect(officeObjectSet);\n });\n it(\"can be cast bidirectionally\", () => {\n function takesOldStyleObjectSet(os) {\n return os;\n }\n function takesNewStyleObjectSet(os) {\n return os;\n }\n function maybe() {\n const newStyleObjectSet = client(Employee);\n const oldStyleObjectSet = newStyleObjectSet;\n takesOldStyleObjectSet(newStyleObjectSet);\n takesNewStyleObjectSet(newStyleObjectSet);\n takesOldStyleObjectSet(oldStyleObjectSet);\n takesNewStyleObjectSet(oldStyleObjectSet);\n }\n if (false) {\n // here for a simple type check\n maybe();\n }\n });\n it(\"objects set union\", async () => {\n const objectSet = client(Employee);\n const unionedObjectSet = objectSet.union(objectSet);\n let iter = 0;\n const { data: employees } = await unionedObjectSet.fetchPage();\n for (const emp of employees) {\n expect(emp.employeeId).toEqual(50030 + iter);\n iter += 1;\n }\n expect(iter).toEqual(2);\n });\n it(\"objects set subtract\", async () => {\n const objectSet = client(Employee);\n const objectSet2 = client(Employee).where({\n employeeId: 50030,\n });\n const subtractedObjectSet = objectSet.subtract(objectSet2);\n let iter = 0;\n const { data: employees } = await subtractedObjectSet.fetchPage();\n for (const emp of employees) {\n expect(emp.employeeId).toEqual(50031 + iter);\n iter += 1;\n }\n expect(iter).toEqual(2);\n });\n it(\"objects set intersect\", async () => {\n const objectSet = client(Employee);\n const intersectedObjectSet = objectSet.intersect(objectSet);\n let iter = 0;\n const { data: employees } = await intersectedObjectSet.fetchPage();\n for (const emp of employees) {\n expect(emp.employeeId).toEqual(50032);\n iter += 1;\n }\n expect(iter).toEqual(1);\n });\n it(\"orders objects in ascending order without a filter, and returns all results\", async () => {\n const { data: employees } = await client(Employee)\n .fetchPage({\n $orderBy: { \"employeeId\": \"asc\" },\n });\n expect(employees).toMatchObject([\n {\n $apiName: \"Employee\",\n $objectType: \"Employee\",\n $primaryKey: 50030,\n class: \"Red\",\n employeeId: 50030,\n employeeStatus: expect.anything(),\n fullName: \"John Doe\",\n office: \"NYC\",\n startDate: \"2019-01-01\",\n },\n {\n $apiName: \"Employee\",\n $objectType: \"Employee\",\n $primaryKey: 50031,\n $title: \"Jane Doe\",\n class: \"Blue\",\n employeeId: 50031,\n employeeStatus: expect.anything(),\n fullName: \"Jane Doe\",\n office: \"SEA\",\n startDate: \"2012-02-12\",\n },\n {\n $apiName: \"Employee\",\n $objectType: \"Employee\",\n $primaryKey: 50032,\n $title: \"Jack Smith\",\n class: \"Red\",\n employeeId: 50032,\n employeeStatus: expect.anything(),\n fullName: \"Jack Smith\",\n office: \"LON\",\n startDate: \"2015-05-15\",\n },\n ]);\n });\n it(\"allows fetching by PK from a base object set - fetchOne\", async () => {\n const employee = await client(Employee).fetchOne(stubData.employee1.employeeId);\n expectTypeOf().toMatchTypeOf;\n expect(employee.$primaryKey).toBe(stubData.employee1.employeeId);\n });\n it(\"allows fetching by PK from a base object set - fetchOneWithErrors\", async () => {\n const employeeResult = await client(Employee)\n .fetchOneWithErrors(stubData.employee1.employeeId);\n expectTypeOf().toMatchTypeOf;\n if (isOk(employeeResult)) {\n const employee = employeeResult.value;\n expect(employee.$primaryKey).toBe(stubData.employee1.employeeId);\n }\n });\n it(\"allows fetching by PK from a base object set with selected properties - fetchOne\", async () => {\n const employee = await client(Employee).fetchOne(stubData.employee1.employeeId, { $select: [\"fullName\"] });\n expectTypeOf().branded.toEqualTypeOf;\n expect(employee.$primaryKey).toBe(stubData.employee1.employeeId);\n });\n it(\"allows fetching by PK from a base object set with selected properties - fetchOneWithErrors\", async () => {\n const employeeResult = await client(Employee)\n .fetchOneWithErrors(stubData.employee1.employeeId, { $select: [\"fullName\"] });\n expectTypeOf().branded.toEqualTypeOf;\n if (isOk(employeeResult)) {\n const employee = employeeResult.value;\n expect(employee.$primaryKey).toBe(stubData.employee1.employeeId);\n }\n });\n it(\"throws when fetching by PK with an object that does not exist - fetchOne\", async () => {\n await expect(client(Employee).fetchOne(-1)).rejects\n .toThrow();\n });\n it(\"throws when fetching by PK with an object that does not exist - fetchOneWithErrors\", async () => {\n const employeeResult = await client(Employee)\n .fetchOneWithErrors(-1);\n expectTypeOf().branded.toEqualTypeOf;\n expect(\"error\" in employeeResult);\n });\n it(\"allows fetching by PK from a pivoted object set - fetchOne\", async () => {\n const employee = await client(Employee).where({\n employeeId: stubData.employee2.employeeId,\n })\n .pivotTo(\"peeps\").fetchOne(stubData.employee1.employeeId);\n expect(employee.$primaryKey).toBe(stubData.employee1.employeeId);\n });\n it(\"allows fetching by PK from a pivoted object set - fetchOneWithErrors\", async () => {\n const employeeResult = await client(Employee).where({\n employeeId: stubData.employee2.employeeId,\n })\n .pivotTo(\"peeps\").fetchOneWithErrors(stubData.employee1.employeeId);\n if (isOk(employeeResult)) {\n const employee = employeeResult.value;\n expect(employee.$primaryKey).toBe(stubData.employee1.employeeId);\n }\n });\n it(\" object set union works with fetchPageWithErrors\", async () => {\n const objectSet = client(Employee);\n const unionedObjectSet = objectSet.union(objectSet);\n let iter = 0;\n const result = await unionedObjectSet.fetchPageWithErrors();\n if (isOk(result)) {\n const employees = result.value.data;\n for (const emp of employees) {\n expect(emp.employeeId).toEqual(50030 + iter);\n iter += 1;\n }\n expect(iter).toEqual(2);\n }\n });\n describe.each([\"fetchPage\", \"fetchPageWithErrors\"])(\"%s\", (k) => {\n describe(\"strictNonNull: \\\"drop\\\"\", () => {\n describe(\"includeRid: true\", () => {\n it(\"drops bad data\", async () => {\n const opts = {\n $__EXPERIMENTAL_strictNonNull: \"drop\",\n $includeRid: true,\n };\n const result = k === \"fetchPage\"\n ? await client(Employee).fetchPage(opts)\n : (await client(Employee).fetchPageWithErrors(opts)).value;\n expect(result.data).toHaveLength(3);\n expectTypeOf(result.data[0]).branded.toEqualTypeOf();\n expectTypeOf(result.data[0]).branded.toEqualTypeOf();\n });\n });\n describe(\"includeRid: false\", () => {\n it(\"drops bad data\", async () => {\n const opts = {\n $__EXPERIMENTAL_strictNonNull: \"drop\",\n $includeRid: false,\n };\n const result = k === \"fetchPage\"\n ? await client(Employee).fetchPage(opts)\n : (await client(Employee).fetchPageWithErrors(opts)).value;\n expect(result.data).toHaveLength(3);\n expectTypeOf(result.data[0]).branded.toEqualTypeOf();\n expectTypeOf(result.data[0]).branded.toEqualTypeOf();\n expectTypeOf(result.data[0]).branded.toEqualTypeOf();\n });\n });\n });\n describe(\"strictNonNull: false\", () => {\n describe(\"includeRid: true\", () => {\n it(\"returns bad data\", async () => {\n const opts = {\n $__EXPERIMENTAL_strictNonNull: false,\n $includeRid: true,\n };\n const result = k === \"fetchPage\"\n ? await client(Employee).fetchPage(opts)\n : (await client(Employee).fetchPageWithErrors(opts)).value;\n expect(result.data).toHaveLength(4);\n expectTypeOf(result.data[0]).branded.toEqualTypeOf();\n });\n });\n describe(\"includeRid: false\", () => {\n it(\"returns bad data\", async () => {\n const opts = {\n $__EXPERIMENTAL_strictNonNull: false,\n includeRid: false,\n };\n const result = k === \"fetchPage\"\n ? await client(Employee).fetchPage(opts)\n : (await client(Employee).fetchPageWithErrors(opts)).value;\n expect(result.data).toHaveLength(4);\n expectTypeOf(result.data[0]).branded.toEqualTypeOf();\n });\n });\n });\n });\n describe(\"strictNonNull: \\\"throw\\\"\", () => {\n it(\"throws when getting bad data\", () => {\n expect(() => client(Employee).fetchPage({\n $__EXPERIMENTAL_strictNonNull: \"throw\",\n })).rejects.toThrowErrorMatchingInlineSnapshot(`[Error: Unable to safely convert objects as some non nullable properties are null]`);\n });\n });\n describe.each([\"fetchOne\", \"fetchOneWithErrors\"])(\"%s\", (k) => {\n describe(\"strictNonNull: false\", () => {\n describe(\"includeRid: true\", () => {\n it(\"returns bad data\", async () => {\n const opts = {\n $__EXPERIMENTAL_strictNonNull: false,\n $includeRid: true,\n };\n const result = k === \"fetchOne\"\n ? await client(Employee).fetchOne(50033, opts)\n : (await client(Employee).fetchOneWithErrors(50033, opts)).value;\n expect(result).not.toBeUndefined();\n expectTypeOf(result).branded.toEqualTypeOf();\n });\n });\n describe(\"includeRid: false\", () => {\n it(\"returns bad data\", async () => {\n const opts = {\n $__EXPERIMENTAL_strictNonNull: false,\n includeRid: false,\n };\n const result = k === \"fetchOne\"\n ? await client(Employee).fetchOne(50033, opts)\n : (await client(Employee).fetchOneWithErrors(50033, opts)).value;\n expect(result).not.toBeUndefined();\n expectTypeOf(result).branded.toEqualTypeOf();\n });\n });\n });\n });\n describe(\"strictNonNull: \\\"throw\\\"\", () => {\n it(\"throws when getting bad data\", () => {\n expect(() => client(Employee).fetchPage({\n $__EXPERIMENTAL_strictNonNull: \"throw\",\n })).rejects.toThrowErrorMatchingInlineSnapshot(`[Error: Unable to safely convert objects as some non nullable properties are null]`);\n });\n });\n describe(\"conversions\", () => {\n describe(\"strictNonNull: false\", () => {\n it(\"returns bad data\", async () => {\n const result = await client(Employee).fetchPage({\n $__EXPERIMENTAL_strictNonNull: false,\n });\n const empNotStrict = result.data[0];\n const empNotStrict2 = empNotStrict;\n expectTypeOf(empNotStrict).branded.toEqualTypeOf();\n expectTypeOf(empNotStrict).branded.toEqualTypeOf();\n expectTypeOf(empNotStrict).branded.toEqualTypeOf();\n expectTypeOf(empNotStrict.employeeId).toEqualTypeOf();\n expectTypeOf(empNotStrict2.employeeId).toEqualTypeOf();\n expectTypeOf()\n .toEqualTypeOf();\n expectTypeOf()\n .toEqualTypeOf();\n expectTypeOf()\n .toEqualTypeOf();\n expectTypeOf()\n .toEqualTypeOf();\n expectTypeOf()\n .toEqualTypeOf();\n expectTypeOf()\n .toEqualTypeOf();\n expectTypeOf()\n .toEqualTypeOf();\n expectTypeOf()\n .toEqualTypeOf();\n const CheesedFoo = FooInterface;\n const cheesedFooNotStrict = result.data[0].$as(CheesedFoo);\n expectTypeOf(cheesedFooNotStrict).branded.toEqualTypeOf();\n cheesedFooNotStrict.fooSpt;\n });\n });\n });\n});\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"ObjectSet.test.js","names":["isOk","$ontologyRid","BarInterface","Employee","FooInterface","Office","apiServer","stubData","afterAll","beforeAll","describe","expect","expectTypeOf","it","createClient","client","listen","close","employeeObjectSet","officeObjectSet","union","subtract","intersect","objectSet","unionedObjectSet","iter","data","employees","fetchPage","emp","employeeId","toEqual","objectSet2","where","subtractedObjectSet","intersectedObjectSet","$orderBy","toMatchObject","$apiName","$objectType","$primaryKey","class","employeeStatus","anything","fullName","office","startDate","employeeLocation","$title","employee","fetchOne","employee1","toMatchTypeOf","toBe","employeeResult","fetchOneWithErrors","value","$select","branded","toEqualTypeOf","rejects","toThrow","employee2","pivotTo","result","fetchPageWithErrors","$in","toBeDefined","employeeIdNonExistent","nonExistentProp","each","k","opts","$__EXPERIMENTAL_strictNonNull","$includeRid","toHaveLength","not","toBeUndefined","empNotStrict","cheesedFooNotStrict","$as","fooSpt"],"sources":["ObjectSet.test.js"],"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 */\nimport { isOk } from \"@osdk/api\";\nimport { $ontologyRid, BarInterface, Employee, FooInterface, Office, } from \"@osdk/client.test.ontology\";\nimport { apiServer, stubData } from \"@osdk/shared.test\";\nimport { afterAll, beforeAll, describe, expect, expectTypeOf, it, } from \"vitest\";\nimport { createClient } from \"../createClient.js\";\ndescribe(\"ObjectSet\", () => {\n let client;\n beforeAll(async () => {\n apiServer.listen();\n client = createClient(\"https://stack.palantir.com\", $ontologyRid, async () => \"myAccessToken\");\n });\n afterAll(() => {\n apiServer.close();\n });\n it(\"does not allow intersect/union/subtract with different object types\", () => {\n const employeeObjectSet = client(Employee);\n const officeObjectSet = client(Office);\n // @ts-expect-error\n employeeObjectSet.union(officeObjectSet);\n // @ts-expect-error\n employeeObjectSet.subtract(officeObjectSet);\n // @ts-expect-error\n employeeObjectSet.intersect(officeObjectSet);\n });\n it(\"can be cast bidirectionally\", () => {\n function takesOldStyleObjectSet(os) {\n return os;\n }\n function takesNewStyleObjectSet(os) {\n return os;\n }\n function maybe() {\n const newStyleObjectSet = client(Employee);\n const oldStyleObjectSet = newStyleObjectSet;\n takesOldStyleObjectSet(newStyleObjectSet);\n takesNewStyleObjectSet(newStyleObjectSet);\n takesOldStyleObjectSet(oldStyleObjectSet);\n takesNewStyleObjectSet(oldStyleObjectSet);\n }\n if (false) {\n // here for a simple type check\n maybe();\n }\n });\n it(\"objects set union\", async () => {\n const objectSet = client(Employee);\n const unionedObjectSet = objectSet.union(objectSet);\n let iter = 0;\n const { data: employees } = await unionedObjectSet.fetchPage();\n for (const emp of employees) {\n expect(emp.employeeId).toEqual(50030 + iter);\n iter += 1;\n }\n expect(iter).toEqual(2);\n });\n it(\"objects set subtract\", async () => {\n const objectSet = client(Employee);\n const objectSet2 = client(Employee).where({\n employeeId: 50030,\n });\n const subtractedObjectSet = objectSet.subtract(objectSet2);\n let iter = 0;\n const { data: employees } = await subtractedObjectSet.fetchPage();\n for (const emp of employees) {\n expect(emp.employeeId).toEqual(50031 + iter);\n iter += 1;\n }\n expect(iter).toEqual(2);\n });\n it(\"objects set intersect\", async () => {\n const objectSet = client(Employee);\n const intersectedObjectSet = objectSet.intersect(objectSet);\n let iter = 0;\n const { data: employees } = await intersectedObjectSet.fetchPage();\n for (const emp of employees) {\n expect(emp.employeeId).toEqual(50032);\n iter += 1;\n }\n expect(iter).toEqual(1);\n });\n it(\"orders objects in ascending order without a filter, and returns all results\", async () => {\n const { data: employees } = await client(Employee)\n .fetchPage({\n $orderBy: { \"employeeId\": \"asc\" },\n });\n expect(employees).toMatchObject([\n {\n $apiName: \"Employee\",\n $objectType: \"Employee\",\n $primaryKey: 50030,\n class: \"Red\",\n employeeId: 50030,\n employeeStatus: expect.anything(),\n fullName: \"John Doe\",\n office: \"NYC\",\n startDate: \"2019-01-01\",\n employeeLocation: expect.anything(),\n },\n {\n $apiName: \"Employee\",\n $objectType: \"Employee\",\n $primaryKey: 50031,\n $title: \"Jane Doe\",\n class: \"Blue\",\n employeeId: 50031,\n employeeStatus: expect.anything(),\n fullName: \"Jane Doe\",\n office: \"SEA\",\n startDate: \"2012-02-12\",\n employeeLocation: expect.anything(),\n },\n {\n $apiName: \"Employee\",\n $objectType: \"Employee\",\n $primaryKey: 50032,\n $title: \"Jack Smith\",\n class: \"Red\",\n employeeId: 50032,\n employeeStatus: expect.anything(),\n fullName: \"Jack Smith\",\n office: \"LON\",\n startDate: \"2015-05-15\",\n employeeLocation: expect.anything(),\n },\n ]);\n });\n it(\"allows fetching by PK from a base object set - fetchOne\", async () => {\n const employee = await client(Employee).fetchOne(stubData.employee1.employeeId);\n expectTypeOf().toMatchTypeOf;\n expect(employee.$primaryKey).toBe(stubData.employee1.employeeId);\n });\n it(\"allows fetching by PK from a base object set - fetchOneWithErrors\", async () => {\n const employeeResult = await client(Employee)\n .fetchOneWithErrors(stubData.employee1.employeeId);\n expectTypeOf().toMatchTypeOf;\n if (isOk(employeeResult)) {\n const employee = employeeResult.value;\n expect(employee.$primaryKey).toBe(stubData.employee1.employeeId);\n }\n });\n it(\"allows fetching by PK from a base object set with selected properties - fetchOne\", async () => {\n const employee = await client(Employee).fetchOne(stubData.employee1.employeeId, { $select: [\"fullName\"] });\n expectTypeOf().branded.toEqualTypeOf;\n expect(employee.$primaryKey).toBe(stubData.employee1.employeeId);\n });\n it(\"allows fetching by PK from a base object set with selected properties - fetchOneWithErrors\", async () => {\n const employeeResult = await client(Employee)\n .fetchOneWithErrors(stubData.employee1.employeeId, { $select: [\"fullName\"] });\n expectTypeOf().branded.toEqualTypeOf;\n if (isOk(employeeResult)) {\n const employee = employeeResult.value;\n expect(employee.$primaryKey).toBe(stubData.employee1.employeeId);\n }\n });\n it(\"throws when fetching by PK with an object that does not exist - fetchOne\", async () => {\n await expect(client(Employee).fetchOne(-1)).rejects\n .toThrow();\n });\n it(\"throws when fetching by PK with an object that does not exist - fetchOneWithErrors\", async () => {\n const employeeResult = await client(Employee)\n .fetchOneWithErrors(-1);\n expectTypeOf().branded.toEqualTypeOf;\n expect(\"error\" in employeeResult);\n });\n it(\"allows fetching by PK from a pivoted object set - fetchOne\", async () => {\n const employee = await client(Employee).where({\n employeeId: stubData.employee2.employeeId,\n })\n .pivotTo(\"peeps\").fetchOne(stubData.employee1.employeeId);\n expect(employee.$primaryKey).toBe(stubData.employee1.employeeId);\n });\n it(\"allows fetching by PK from a pivoted object set - fetchOneWithErrors\", async () => {\n const employeeResult = await client(Employee).where({\n employeeId: stubData.employee2.employeeId,\n })\n .pivotTo(\"peeps\").fetchOneWithErrors(stubData.employee1.employeeId);\n if (isOk(employeeResult)) {\n const employee = employeeResult.value;\n expect(employee.$primaryKey).toBe(stubData.employee1.employeeId);\n }\n });\n it(\" object set union works with fetchPageWithErrors\", async () => {\n const objectSet = client(Employee);\n const unionedObjectSet = objectSet.union(objectSet);\n let iter = 0;\n const result = await unionedObjectSet.fetchPageWithErrors();\n if (isOk(result)) {\n const employees = result.value.data;\n for (const emp of employees) {\n expect(emp.employeeId).toEqual(50030 + iter);\n iter += 1;\n }\n expect(iter).toEqual(2);\n }\n });\n it(\"allows $in filter with ReadonlyArrays\", () => {\n const ids = [50030, 50031];\n const objectSet = client(Employee).where({\n employeeId: { $in: ids },\n });\n expect(objectSet).toBeDefined();\n });\n it(\"does not allow arbitrary keys when no properties\", () => {\n const ids = [50030, 50031];\n client(Employee).where({\n // @ts-expect-error\n employeeIdNonExistent: { $in: ids },\n });\n client(BarInterface).where({\n // @ts-expect-error\n nonExistentProp: \"\",\n });\n });\n describe.each([\"fetchPage\", \"fetchPageWithErrors\"])(\"%s\", (k) => {\n // describe(\"strictNonNull: \\\"drop\\\"\", () => {\n // describe(\"includeRid: true\", () => {\n // it(\"drops bad data\", async () => {\n // const opts = {\n // $__EXPERIMENTAL_strictNonNull: \"drop\",\n // $includeRid: true,\n // } as const;\n // const result = k === \"fetchPage\"\n // ? await client(Employee).fetchPage(opts)\n // : (await client(Employee).fetchPageWithErrors(opts)).value!;\n // expect(result.data).toHaveLength(3);\n // expectTypeOf(result.data[0]).branded.toEqualTypeOf<\n // Osdk<Employee, \"$rid\" | \"$all\">\n // >();\n // expectTypeOf(result.data[0]).branded.toEqualTypeOf<\n // Employee.OsdkObject<\"$rid\">\n // >();\n // });\n // });\n // describe(\"includeRid: false\", () => {\n // it(\"drops bad data\", async () => {\n // const opts = {\n // $__EXPERIMENTAL_strictNonNull: \"drop\",\n // $includeRid: false,\n // } as const;\n // const result = k === \"fetchPage\"\n // ? await client(Employee).fetchPage(opts)\n // : (await client(Employee).fetchPageWithErrors(opts)).value!;\n // expect(result.data).toHaveLength(3);\n // expectTypeOf(result.data[0]).branded.toEqualTypeOf<Osdk<Employee>>();\n // expectTypeOf(result.data[0]).branded.toEqualTypeOf<\n // Employee.OsdkObject\n // >();\n // expectTypeOf(result.data[0]).branded.toEqualTypeOf<\n // Employee.OsdkObject<never>\n // >();\n // });\n // });\n // });\n describe(\"strictNonNull: false\", () => {\n describe(\"includeRid: true\", () => {\n it(\"returns bad data\", async () => {\n const opts = {\n $__EXPERIMENTAL_strictNonNull: false,\n $includeRid: true,\n };\n const result = k === \"fetchPage\"\n ? await client(Employee).fetchPage(opts)\n : (await client(Employee).fetchPageWithErrors(opts)).value;\n expect(result.data).toHaveLength(4);\n expectTypeOf(result.data[0]).branded.toEqualTypeOf();\n });\n });\n describe(\"includeRid: false\", () => {\n it(\"returns bad data\", async () => {\n const opts = {\n $includeRid: false,\n };\n const result = k === \"fetchPage\"\n ? await client(Employee).fetchPage(opts)\n : (await client(Employee).fetchPageWithErrors(opts)).value;\n expect(result.data).toHaveLength(4);\n expectTypeOf(result.data[0]).branded.toEqualTypeOf();\n });\n });\n });\n });\n describe.each([\"fetchOne\", \"fetchOneWithErrors\"])(\"%s\", (k) => {\n describe(\"strictNonNull: false\", () => {\n describe(\"includeRid: true\", () => {\n it(\"returns bad data\", async () => {\n // Look at this\n const opts = {\n $__EXPERIMENTAL_strictNonNull: false,\n $includeRid: true,\n };\n const result = k === \"fetchOne\"\n ? await client(Employee).fetchOne(50033, opts)\n : (await client(Employee).fetchOneWithErrors(50033, opts)).value;\n expect(result).not.toBeUndefined();\n expectTypeOf(result).branded.toEqualTypeOf();\n });\n });\n describe(\"includeRid: false\", () => {\n it(\"returns bad data\", async () => {\n const opts = {\n $__EXPERIMENTAL_strictNonNull: false,\n $includeRid: false,\n };\n const result = k === \"fetchOne\"\n ? await client(Employee).fetchOne(50033, opts)\n : (await client(Employee).fetchOneWithErrors(50033, opts)).value;\n expect(result).not.toBeUndefined();\n expectTypeOf(result).branded.toEqualTypeOf();\n });\n });\n });\n });\n describe(\"conversions\", () => {\n describe(\"strictNonNull: false\", () => {\n it(\"returns bad data\", async () => {\n const result = await client(Employee).fetchPage({});\n const empNotStrict = result.data[0];\n const empNotStrict2 = empNotStrict;\n expectTypeOf(empNotStrict).branded.toEqualTypeOf();\n expectTypeOf(empNotStrict).branded.toEqualTypeOf();\n expectTypeOf(empNotStrict).branded.toEqualTypeOf();\n expectTypeOf(empNotStrict.employeeId).toEqualTypeOf();\n expectTypeOf(empNotStrict2.employeeId).toEqualTypeOf();\n expectTypeOf()\n .toEqualTypeOf();\n expectTypeOf()\n .toEqualTypeOf();\n expectTypeOf()\n .toEqualTypeOf();\n expectTypeOf()\n .toEqualTypeOf();\n expectTypeOf()\n .toEqualTypeOf();\n expectTypeOf()\n .toEqualTypeOf();\n expectTypeOf()\n .toEqualTypeOf();\n expectTypeOf()\n .toEqualTypeOf();\n const CheesedFoo = FooInterface;\n const cheesedFooNotStrict = result.data[0].$as(CheesedFoo);\n expectTypeOf(cheesedFooNotStrict).branded.toEqualTypeOf();\n cheesedFooNotStrict.fooSpt;\n });\n });\n });\n});\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASA,IAAI,QAAQ,WAAW;AAChC,SAASC,YAAY,EAAEC,YAAY,EAAEC,QAAQ,EAAEC,YAAY,EAAEC,MAAM,QAAS,4BAA4B;AACxG,SAASC,SAAS,EAAEC,QAAQ,QAAQ,mBAAmB;AACvD,SAASC,QAAQ,EAAEC,SAAS,EAAEC,QAAQ,EAAEC,MAAM,EAAEC,YAAY,EAAEC,EAAE,QAAS,QAAQ;AACjF,SAASC,YAAY,QAAQ,oBAAoB;AACjDJ,QAAQ,CAAC,WAAW,EAAE,MAAM;EACxB,IAAIK,MAAM;EACVN,SAAS,CAAC,YAAY;IAClBH,SAAS,CAACU,MAAM,CAAC,CAAC;IAClBD,MAAM,GAAGD,YAAY,CAAC,4BAA4B,EAAEb,YAAY,EAAE,YAAY,eAAe,CAAC;EAClG,CAAC,CAAC;EACFO,QAAQ,CAAC,MAAM;IACXF,SAAS,CAACW,KAAK,CAAC,CAAC;EACrB,CAAC,CAAC;EACFJ,EAAE,CAAC,qEAAqE,EAAE,MAAM;IAC5E,MAAMK,iBAAiB,GAAGH,MAAM,CAACZ,QAAQ,CAAC;IAC1C,MAAMgB,eAAe,GAAGJ,MAAM,CAACV,MAAM,CAAC;IACtC;IACAa,iBAAiB,CAACE,KAAK,CAACD,eAAe,CAAC;IACxC;IACAD,iBAAiB,CAACG,QAAQ,CAACF,eAAe,CAAC;IAC3C;IACAD,iBAAiB,CAACI,SAAS,CAACH,eAAe,CAAC;EAChD,CAAC,CAAC;EACFN,EAAE,CAAC,6BAA6B,EAAE,MAAM,CAmBxC,CAAC,CAAC;EACFA,EAAE,CAAC,mBAAmB,EAAE,YAAY;IAChC,MAAMU,SAAS,GAAGR,MAAM,CAACZ,QAAQ,CAAC;IAClC,MAAMqB,gBAAgB,GAAGD,SAAS,CAACH,KAAK,CAACG,SAAS,CAAC;IACnD,IAAIE,IAAI,GAAG,CAAC;IACZ,MAAM;MAAEC,IAAI,EAAEC;IAAU,CAAC,GAAG,MAAMH,gBAAgB,CAACI,SAAS,CAAC,CAAC;IAC9D,KAAK,MAAMC,GAAG,IAAIF,SAAS,EAAE;MACzBhB,MAAM,CAACkB,GAAG,CAACC,UAAU,CAAC,CAACC,OAAO,CAAC,KAAK,GAAGN,IAAI,CAAC;MAC5CA,IAAI,IAAI,CAAC;IACb;IACAd,MAAM,CAACc,IAAI,CAAC,CAACM,OAAO,CAAC,CAAC,CAAC;EAC3B,CAAC,CAAC;EACFlB,EAAE,CAAC,sBAAsB,EAAE,YAAY;IACnC,MAAMU,SAAS,GAAGR,MAAM,CAACZ,QAAQ,CAAC;IAClC,MAAM6B,UAAU,GAAGjB,MAAM,CAACZ,QAAQ,CAAC,CAAC8B,KAAK,CAAC;MACtCH,UAAU,EAAE;IAChB,CAAC,CAAC;IACF,MAAMI,mBAAmB,GAAGX,SAAS,CAACF,QAAQ,CAACW,UAAU,CAAC;IAC1D,IAAIP,IAAI,GAAG,CAAC;IACZ,MAAM;MAAEC,IAAI,EAAEC;IAAU,CAAC,GAAG,MAAMO,mBAAmB,CAACN,SAAS,CAAC,CAAC;IACjE,KAAK,MAAMC,GAAG,IAAIF,SAAS,EAAE;MACzBhB,MAAM,CAACkB,GAAG,CAACC,UAAU,CAAC,CAACC,OAAO,CAAC,KAAK,GAAGN,IAAI,CAAC;MAC5CA,IAAI,IAAI,CAAC;IACb;IACAd,MAAM,CAACc,IAAI,CAAC,CAACM,OAAO,CAAC,CAAC,CAAC;EAC3B,CAAC,CAAC;EACFlB,EAAE,CAAC,uBAAuB,EAAE,YAAY;IACpC,MAAMU,SAAS,GAAGR,MAAM,CAACZ,QAAQ,CAAC;IAClC,MAAMgC,oBAAoB,GAAGZ,SAAS,CAACD,SAAS,CAACC,SAAS,CAAC;IAC3D,IAAIE,IAAI,GAAG,CAAC;IACZ,MAAM;MAAEC,IAAI,EAAEC;IAAU,CAAC,GAAG,MAAMQ,oBAAoB,CAACP,SAAS,CAAC,CAAC;IAClE,KAAK,MAAMC,GAAG,IAAIF,SAAS,EAAE;MACzBhB,MAAM,CAACkB,GAAG,CAACC,UAAU,CAAC,CAACC,OAAO,CAAC,KAAK,CAAC;MACrCN,IAAI,IAAI,CAAC;IACb;IACAd,MAAM,CAACc,IAAI,CAAC,CAACM,OAAO,CAAC,CAAC,CAAC;EAC3B,CAAC,CAAC;EACFlB,EAAE,CAAC,6EAA6E,EAAE,YAAY;IAC1F,MAAM;MAAEa,IAAI,EAAEC;IAAU,CAAC,GAAG,MAAMZ,MAAM,CAACZ,QAAQ,CAAC,CAC7CyB,SAAS,CAAC;MACXQ,QAAQ,EAAE;QAAE,YAAY,EAAE;MAAM;IACpC,CAAC,CAAC;IACFzB,MAAM,CAACgB,SAAS,CAAC,CAACU,aAAa,CAAC,CAC5B;MACIC,QAAQ,EAAE,UAAU;MACpBC,WAAW,EAAE,UAAU;MACvBC,WAAW,EAAE,KAAK;MAClBC,KAAK,EAAE,KAAK;MACZX,UAAU,EAAE,KAAK;MACjBY,cAAc,EAAE/B,MAAM,CAACgC,QAAQ,CAAC,CAAC;MACjCC,QAAQ,EAAE,UAAU;MACpBC,MAAM,EAAE,KAAK;MACbC,SAAS,EAAE,YAAY;MACvBC,gBAAgB,EAAEpC,MAAM,CAACgC,QAAQ,CAAC;IACtC,CAAC,EACD;MACIL,QAAQ,EAAE,UAAU;MACpBC,WAAW,EAAE,UAAU;MACvBC,WAAW,EAAE,KAAK;MAClBQ,MAAM,EAAE,UAAU;MAClBP,KAAK,EAAE,MAAM;MACbX,UAAU,EAAE,KAAK;MACjBY,cAAc,EAAE/B,MAAM,CAACgC,QAAQ,CAAC,CAAC;MACjCC,QAAQ,EAAE,UAAU;MACpBC,MAAM,EAAE,KAAK;MACbC,SAAS,EAAE,YAAY;MACvBC,gBAAgB,EAAEpC,MAAM,CAACgC,QAAQ,CAAC;IACtC,CAAC,EACD;MACIL,QAAQ,EAAE,UAAU;MACpBC,WAAW,EAAE,UAAU;MACvBC,WAAW,EAAE,KAAK;MAClBQ,MAAM,EAAE,YAAY;MACpBP,KAAK,EAAE,KAAK;MACZX,UAAU,EAAE,KAAK;MACjBY,cAAc,EAAE/B,MAAM,CAACgC,QAAQ,CAAC,CAAC;MACjCC,QAAQ,EAAE,YAAY;MACtBC,MAAM,EAAE,KAAK;MACbC,SAAS,EAAE,YAAY;MACvBC,gBAAgB,EAAEpC,MAAM,CAACgC,QAAQ,CAAC;IACtC,CAAC,CACJ,CAAC;EACN,CAAC,CAAC;EACF9B,EAAE,CAAC,yDAAyD,EAAE,YAAY;IACtE,MAAMoC,QAAQ,GAAG,MAAMlC,MAAM,CAACZ,QAAQ,CAAC,CAAC+C,QAAQ,CAAC3C,QAAQ,CAAC4C,SAAS,CAACrB,UAAU,CAAC;IAC/ElB,YAAY,CAAC,CAAC,CAACwC,aAAa;IAC5BzC,MAAM,CAACsC,QAAQ,CAACT,WAAW,CAAC,CAACa,IAAI,CAAC9C,QAAQ,CAAC4C,SAAS,CAACrB,UAAU,CAAC;EACpE,CAAC,CAAC;EACFjB,EAAE,CAAC,mEAAmE,EAAE,YAAY;IAChF,MAAMyC,cAAc,GAAG,MAAMvC,MAAM,CAACZ,QAAQ,CAAC,CACxCoD,kBAAkB,CAAChD,QAAQ,CAAC4C,SAAS,CAACrB,UAAU,CAAC;IACtDlB,YAAY,CAAC,CAAC,CAACwC,aAAa;IAC5B,IAAIpD,IAAI,CAACsD,cAAc,CAAC,EAAE;MACtB,MAAML,QAAQ,GAAGK,cAAc,CAACE,KAAK;MACrC7C,MAAM,CAACsC,QAAQ,CAACT,WAAW,CAAC,CAACa,IAAI,CAAC9C,QAAQ,CAAC4C,SAAS,CAACrB,UAAU,CAAC;IACpE;EACJ,CAAC,CAAC;EACFjB,EAAE,CAAC,kFAAkF,EAAE,YAAY;IAC/F,MAAMoC,QAAQ,GAAG,MAAMlC,MAAM,CAACZ,QAAQ,CAAC,CAAC+C,QAAQ,CAAC3C,QAAQ,CAAC4C,SAAS,CAACrB,UAAU,EAAE;MAAE2B,OAAO,EAAE,CAAC,UAAU;IAAE,CAAC,CAAC;IAC1G7C,YAAY,CAAC,CAAC,CAAC8C,OAAO,CAACC,aAAa;IACpChD,MAAM,CAACsC,QAAQ,CAACT,WAAW,CAAC,CAACa,IAAI,CAAC9C,QAAQ,CAAC4C,SAAS,CAACrB,UAAU,CAAC;EACpE,CAAC,CAAC;EACFjB,EAAE,CAAC,4FAA4F,EAAE,YAAY;IACzG,MAAMyC,cAAc,GAAG,MAAMvC,MAAM,CAACZ,QAAQ,CAAC,CACxCoD,kBAAkB,CAAChD,QAAQ,CAAC4C,SAAS,CAACrB,UAAU,EAAE;MAAE2B,OAAO,EAAE,CAAC,UAAU;IAAE,CAAC,CAAC;IACjF7C,YAAY,CAAC,CAAC,CAAC8C,OAAO,CAACC,aAAa;IACpC,IAAI3D,IAAI,CAACsD,cAAc,CAAC,EAAE;MACtB,MAAML,QAAQ,GAAGK,cAAc,CAACE,KAAK;MACrC7C,MAAM,CAACsC,QAAQ,CAACT,WAAW,CAAC,CAACa,IAAI,CAAC9C,QAAQ,CAAC4C,SAAS,CAACrB,UAAU,CAAC;IACpE;EACJ,CAAC,CAAC;EACFjB,EAAE,CAAC,0EAA0E,EAAE,YAAY;IACvF,MAAMF,MAAM,CAACI,MAAM,CAACZ,QAAQ,CAAC,CAAC+C,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAACU,OAAO,CAC9CC,OAAO,CAAC,CAAC;EAClB,CAAC,CAAC;EACFhD,EAAE,CAAC,oFAAoF,EAAE,YAAY;IACjG,MAAMyC,cAAc,GAAG,MAAMvC,MAAM,CAACZ,QAAQ,CAAC,CACxCoD,kBAAkB,CAAC,CAAC,CAAC,CAAC;IAC3B3C,YAAY,CAAC,CAAC,CAAC8C,OAAO,CAACC,aAAa;IACpChD,MAAM,CAAC,OAAO,IAAI2C,cAAc,CAAC;EACrC,CAAC,CAAC;EACFzC,EAAE,CAAC,4DAA4D,EAAE,YAAY;IACzE,MAAMoC,QAAQ,GAAG,MAAMlC,MAAM,CAACZ,QAAQ,CAAC,CAAC8B,KAAK,CAAC;MAC1CH,UAAU,EAAEvB,QAAQ,CAACuD,SAAS,CAAChC;IACnC,CAAC,CAAC,CACGiC,OAAO,CAAC,OAAO,CAAC,CAACb,QAAQ,CAAC3C,QAAQ,CAAC4C,SAAS,CAACrB,UAAU,CAAC;IAC7DnB,MAAM,CAACsC,QAAQ,CAACT,WAAW,CAAC,CAACa,IAAI,CAAC9C,QAAQ,CAAC4C,SAAS,CAACrB,UAAU,CAAC;EACpE,CAAC,CAAC;EACFjB,EAAE,CAAC,sEAAsE,EAAE,YAAY;IACnF,MAAMyC,cAAc,GAAG,MAAMvC,MAAM,CAACZ,QAAQ,CAAC,CAAC8B,KAAK,CAAC;MAChDH,UAAU,EAAEvB,QAAQ,CAACuD,SAAS,CAAChC;IACnC,CAAC,CAAC,CACGiC,OAAO,CAAC,OAAO,CAAC,CAACR,kBAAkB,CAAChD,QAAQ,CAAC4C,SAAS,CAACrB,UAAU,CAAC;IACvE,IAAI9B,IAAI,CAACsD,cAAc,CAAC,EAAE;MACtB,MAAML,QAAQ,GAAGK,cAAc,CAACE,KAAK;MACrC7C,MAAM,CAACsC,QAAQ,CAACT,WAAW,CAAC,CAACa,IAAI,CAAC9C,QAAQ,CAAC4C,SAAS,CAACrB,UAAU,CAAC;IACpE;EACJ,CAAC,CAAC;EACFjB,EAAE,CAAC,kDAAkD,EAAE,YAAY;IAC/D,MAAMU,SAAS,GAAGR,MAAM,CAACZ,QAAQ,CAAC;IAClC,MAAMqB,gBAAgB,GAAGD,SAAS,CAACH,KAAK,CAACG,SAAS,CAAC;IACnD,IAAIE,IAAI,GAAG,CAAC;IACZ,MAAMuC,MAAM,GAAG,MAAMxC,gBAAgB,CAACyC,mBAAmB,CAAC,CAAC;IAC3D,IAAIjE,IAAI,CAACgE,MAAM,CAAC,EAAE;MACd,MAAMrC,SAAS,GAAGqC,MAAM,CAACR,KAAK,CAAC9B,IAAI;MACnC,KAAK,MAAMG,GAAG,IAAIF,SAAS,EAAE;QACzBhB,MAAM,CAACkB,GAAG,CAACC,UAAU,CAAC,CAACC,OAAO,CAAC,KAAK,GAAGN,IAAI,CAAC;QAC5CA,IAAI,IAAI,CAAC;MACb;MACAd,MAAM,CAACc,IAAI,CAAC,CAACM,OAAO,CAAC,CAAC,CAAC;IAC3B;EACJ,CAAC,CAAC;EACFlB,EAAE,CAAC,uCAAuC,EAAE,MAAM;IAE9C,MAAMU,SAAS,GAAGR,MAAM,CAACZ,QAAQ,CAAC,CAAC8B,KAAK,CAAC;MACrCH,UAAU,EAAE;QAAEoC,GAAG,EAFT,CAAC,KAAK,EAAE,KAAK;MAEE;IAC3B,CAAC,CAAC;IACFvD,MAAM,CAACY,SAAS,CAAC,CAAC4C,WAAW,CAAC,CAAC;EACnC,CAAC,CAAC;EACFtD,EAAE,CAAC,kDAAkD,EAAE,MAAM;IAEzDE,MAAM,CAACZ,QAAQ,CAAC,CAAC8B,KAAK,CAAC;MACnB;MACAmC,qBAAqB,EAAE;QAAEF,GAAG,EAHpB,CAAC,KAAK,EAAE,KAAK;MAGa;IACtC,CAAC,CAAC;IACFnD,MAAM,CAACb,YAAY,CAAC,CAAC+B,KAAK,CAAC;MACvB;MACAoC,eAAe,EAAE;IACrB,CAAC,CAAC;EACN,CAAC,CAAC;EACF3D,QAAQ,CAAC4D,IAAI,CAAC,CAAC,WAAW,EAAE,qBAAqB,CAAC,CAAC,CAAC,IAAI,EAAGC,CAAC,IAAK;IAC7D;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA7D,QAAQ,CAAC,sBAAsB,EAAE,MAAM;MACnCA,QAAQ,CAAC,kBAAkB,EAAE,MAAM;QAC/BG,EAAE,CAAC,kBAAkB,EAAE,YAAY;UAC/B,MAAM2D,IAAI,GAAG;YACTC,6BAA6B,EAAE,KAAK;YACpCC,WAAW,EAAE;UACjB,CAAC;UACD,MAAMV,MAAM,GAAGO,CAAC,KAAK,WAAW,GAC1B,MAAMxD,MAAM,CAACZ,QAAQ,CAAC,CAACyB,SAAS,CAAC4C,IAAI,CAAC,GACtC,CAAC,MAAMzD,MAAM,CAACZ,QAAQ,CAAC,CAAC8D,mBAAmB,CAACO,IAAI,CAAC,EAAEhB,KAAK;UAC9D7C,MAAM,CAACqD,MAAM,CAACtC,IAAI,CAAC,CAACiD,YAAY,CAAC,CAAC,CAAC;UACnC/D,YAAY,CAACoD,MAAM,CAACtC,IAAI,CAAC,CAAC,CAAC,CAAC,CAACgC,OAAO,CAACC,aAAa,CAAC,CAAC;QACxD,CAAC,CAAC;MACN,CAAC,CAAC;MACFjD,QAAQ,CAAC,mBAAmB,EAAE,MAAM;QAChCG,EAAE,CAAC,kBAAkB,EAAE,YAAY;UAC/B,MAAM2D,IAAI,GAAG;YACTE,WAAW,EAAE;UACjB,CAAC;UACD,MAAMV,MAAM,GAAGO,CAAC,KAAK,WAAW,GAC1B,MAAMxD,MAAM,CAACZ,QAAQ,CAAC,CAACyB,SAAS,CAAC4C,IAAI,CAAC,GACtC,CAAC,MAAMzD,MAAM,CAACZ,QAAQ,CAAC,CAAC8D,mBAAmB,CAACO,IAAI,CAAC,EAAEhB,KAAK;UAC9D7C,MAAM,CAACqD,MAAM,CAACtC,IAAI,CAAC,CAACiD,YAAY,CAAC,CAAC,CAAC;UACnC/D,YAAY,CAACoD,MAAM,CAACtC,IAAI,CAAC,CAAC,CAAC,CAAC,CAACgC,OAAO,CAACC,aAAa,CAAC,CAAC;QACxD,CAAC,CAAC;MACN,CAAC,CAAC;IACN,CAAC,CAAC;EACN,CAAC,CAAC;EACFjD,QAAQ,CAAC4D,IAAI,CAAC,CAAC,UAAU,EAAE,oBAAoB,CAAC,CAAC,CAAC,IAAI,EAAGC,CAAC,IAAK;IAC3D7D,QAAQ,CAAC,sBAAsB,EAAE,MAAM;MACnCA,QAAQ,CAAC,kBAAkB,EAAE,MAAM;QAC/BG,EAAE,CAAC,kBAAkB,EAAE,YAAY;UAC/B;UACA,MAAM2D,IAAI,GAAG;YACTC,6BAA6B,EAAE,KAAK;YACpCC,WAAW,EAAE;UACjB,CAAC;UACD,MAAMV,MAAM,GAAGO,CAAC,KAAK,UAAU,GACzB,MAAMxD,MAAM,CAACZ,QAAQ,CAAC,CAAC+C,QAAQ,CAAC,KAAK,EAAEsB,IAAI,CAAC,GAC5C,CAAC,MAAMzD,MAAM,CAACZ,QAAQ,CAAC,CAACoD,kBAAkB,CAAC,KAAK,EAAEiB,IAAI,CAAC,EAAEhB,KAAK;UACpE7C,MAAM,CAACqD,MAAM,CAAC,CAACY,GAAG,CAACC,aAAa,CAAC,CAAC;UAClCjE,YAAY,CAACoD,MAAM,CAAC,CAACN,OAAO,CAACC,aAAa,CAAC,CAAC;QAChD,CAAC,CAAC;MACN,CAAC,CAAC;MACFjD,QAAQ,CAAC,mBAAmB,EAAE,MAAM;QAChCG,EAAE,CAAC,kBAAkB,EAAE,YAAY;UAC/B,MAAM2D,IAAI,GAAG;YACTC,6BAA6B,EAAE,KAAK;YACpCC,WAAW,EAAE;UACjB,CAAC;UACD,MAAMV,MAAM,GAAGO,CAAC,KAAK,UAAU,GACzB,MAAMxD,MAAM,CAACZ,QAAQ,CAAC,CAAC+C,QAAQ,CAAC,KAAK,EAAEsB,IAAI,CAAC,GAC5C,CAAC,MAAMzD,MAAM,CAACZ,QAAQ,CAAC,CAACoD,kBAAkB,CAAC,KAAK,EAAEiB,IAAI,CAAC,EAAEhB,KAAK;UACpE7C,MAAM,CAACqD,MAAM,CAAC,CAACY,GAAG,CAACC,aAAa,CAAC,CAAC;UAClCjE,YAAY,CAACoD,MAAM,CAAC,CAACN,OAAO,CAACC,aAAa,CAAC,CAAC;QAChD,CAAC,CAAC;MACN,CAAC,CAAC;IACN,CAAC,CAAC;EACN,CAAC,CAAC;EACFjD,QAAQ,CAAC,aAAa,EAAE,MAAM;IAC1BA,QAAQ,CAAC,sBAAsB,EAAE,MAAM;MACnCG,EAAE,CAAC,kBAAkB,EAAE,YAAY;QAC/B,MAAMmD,MAAM,GAAG,MAAMjD,MAAM,CAACZ,QAAQ,CAAC,CAACyB,SAAS,CAAC,CAAC,CAAC,CAAC;QACnD,MAAMkD,YAAY,GAAGd,MAAM,CAACtC,IAAI,CAAC,CAAC,CAAC;QAEnCd,YAAY,CAACkE,YAAY,CAAC,CAACpB,OAAO,CAACC,aAAa,CAAC,CAAC;QAClD/C,YAAY,CAACkE,YAAY,CAAC,CAACpB,OAAO,CAACC,aAAa,CAAC,CAAC;QAClD/C,YAAY,CAACkE,YAAY,CAAC,CAACpB,OAAO,CAACC,aAAa,CAAC,CAAC;QAClD/C,YAAY,CAACkE,YAAY,CAAChD,UAAU,CAAC,CAAC6B,aAAa,CAAC,CAAC;QACrD/C,YAAY,CALUkE,YAAY,CAKPhD,UAAU,CAAC,CAAC6B,aAAa,CAAC,CAAC;QACtD/C,YAAY,CAAC,CAAC,CACT+C,aAAa,CAAC,CAAC;QACpB/C,YAAY,CAAC,CAAC,CACT+C,aAAa,CAAC,CAAC;QACpB/C,YAAY,CAAC,CAAC,CACT+C,aAAa,CAAC,CAAC;QACpB/C,YAAY,CAAC,CAAC,CACT+C,aAAa,CAAC,CAAC;QACpB/C,YAAY,CAAC,CAAC,CACT+C,aAAa,CAAC,CAAC;QACpB/C,YAAY,CAAC,CAAC,CACT+C,aAAa,CAAC,CAAC;QACpB/C,YAAY,CAAC,CAAC,CACT+C,aAAa,CAAC,CAAC;QACpB/C,YAAY,CAAC,CAAC,CACT+C,aAAa,CAAC,CAAC;QAEpB,MAAMoB,mBAAmB,GAAGf,MAAM,CAACtC,IAAI,CAAC,CAAC,CAAC,CAACsD,GAAG,CAD3B5E,YACsC,CAAC;QAC1DQ,YAAY,CAACmE,mBAAmB,CAAC,CAACrB,OAAO,CAACC,aAAa,CAAC,CAAC;QACzDoB,mBAAmB,CAACE,MAAM;MAC9B,CAAC,CAAC;IACN,CAAC,CAAC;EACN,CAAC,CAAC;AACN,CAAC,CAAC","ignoreList":[]}
@@ -16,7 +16,6 @@
16
16
  import WebSocket from "isomorphic-ws";
17
17
  import invariant from "tiny-invariant";
18
18
  import { convertWireToOsdkObjects } from "../object/convertWireToOsdkObjects.js";
19
- const ONE_DAY_MS = 24 * 60 * 60 * 1000;
20
19
  const MINIMUM_RECONNECT_DELAY_MS = 5 * 1000;
21
20
  /** Noop function to reduce conditional checks */
22
21
  function doNothing() {}
@@ -26,12 +25,14 @@ function doNothing() {}
26
25
  function fillOutListener({
27
26
  onChange = doNothing,
28
27
  onError = doNothing,
29
- onOutOfDate = doNothing
28
+ onOutOfDate = doNothing,
29
+ onSuccessfulSubscription = doNothing
30
30
  }) {
31
31
  return {
32
32
  onChange,
33
33
  onError,
34
- onOutOfDate
34
+ onOutOfDate,
35
+ onSuccessfulSubscription
35
36
  };
36
37
  }
37
38
  function isReady(sub) {
@@ -43,7 +44,6 @@ function subscriptionIsDone(sub) {
43
44
  /** @internal */
44
45
  export class ObjectSetListenerWebsocket {
45
46
  static #instances = new WeakMap();
46
- OBJECT_SET_EXPIRY_MS;
47
47
  MINIMUM_RECONNECT_DELAY_MS;
48
48
  // FIXME
49
49
  static getInstance(client) {
@@ -70,25 +70,31 @@ export class ObjectSetListenerWebsocket {
70
70
  #maybeDisconnectTimeout;
71
71
  // DO NOT CONSTRUCT DIRECTLY. ONLY EXPOSED AS A TESTING SEAM
72
72
  constructor(client, {
73
- objectSetExpiryMs = ONE_DAY_MS,
74
73
  minimumReconnectDelayMs = MINIMUM_RECONNECT_DELAY_MS
75
74
  } = {}) {
76
- this.OBJECT_SET_EXPIRY_MS = objectSetExpiryMs;
77
75
  this.MINIMUM_RECONNECT_DELAY_MS = minimumReconnectDelayMs;
78
76
  this.#client = client;
79
77
  this.#logger = client.logger?.child({}, {
80
78
  msgPrefix: "<OSW> "
81
79
  });
82
- !(client.baseUrl.startsWith("https://") || client.baseUrl.startsWith("http://")) ? invariant(false, "Stack must be a URL") : void 0;
80
+ !(client.baseUrl.startsWith("https://") || client.baseUrl.startsWith("http://")) ? process.env.NODE_ENV !== "production" ? invariant(false, "Stack must be a URL") : invariant(false) : void 0;
83
81
  }
84
- async subscribe(objectSet, listener, properties) {
82
+ async subscribe(objectType, objectSet, listener, properties = []) {
85
83
  // Node 18 does not expose 'crypto' on globalThis, so we need to do it ourselves. This
86
84
  // will not be needed after our minimum version is 19 or greater.
87
85
  globalThis.crypto ??= (await import("node:crypto")).webcrypto;
86
+ const objDef = await this.#client.ontologyProvider.getObjectDefinition(objectType.apiName);
87
+ if (properties.length === 0) {
88
+ properties = Object.keys(objDef.properties);
89
+ }
90
+ const objectProperties = properties.filter(p => objDef.properties[p].type !== "geotimeSeriesReference");
91
+ const referenceProperties = properties.filter(p => objDef.properties[p].type === "geotimeSeriesReference");
88
92
  const sub = {
89
93
  listener: fillOutListener(listener),
90
94
  objectSet,
91
- requestedProperties: properties,
95
+ primaryKeyPropertyName: objDef.primaryKeyApiName,
96
+ requestedProperties: objectProperties,
97
+ requestedReferenceProperties: referenceProperties,
92
98
  status: "preparing",
93
99
  // Since we don't have a real subscription id yet but we need to keep
94
100
  // track of this reference, we can just use a random uuid.
@@ -112,16 +118,9 @@ export class ObjectSetListenerWebsocket {
112
118
  * @returns
113
119
  */
114
120
  async #initiateSubscribe(sub) {
115
- if (process?.env?.NODE_ENV !== "production") {
121
+ if (process.env.NODE_ENV !== "production") {
116
122
  this.#logger?.trace("#initiateSubscribe()");
117
123
  }
118
- if (sub.expiry) {
119
- clearTimeout(sub.expiry);
120
- }
121
- // expiry is tied to the temporary object set, which is set to `timeToLive: "ONE_DAY"`
122
- // in `#createTemporaryObjectSet`. They should be in sync
123
- sub.expiry = setTimeout(() => this.#expire(sub), this.OBJECT_SET_EXPIRY_MS);
124
- await this.#client.ontologyRid;
125
124
  try {
126
125
  await this.#ensureWebsocket();
127
126
  // the consumer may have already unsubscribed before we are ready to request a subscription
@@ -140,7 +139,7 @@ export class ObjectSetListenerWebsocket {
140
139
  }
141
140
  }
142
141
  #sendSubscribeMessage() {
143
- if (process?.env?.NODE_ENV !== "production") {
142
+ if (process.env.NODE_ENV !== "production") {
144
143
  this.#logger?.trace("#sendSubscribeMessage()");
145
144
  }
146
145
  // If two calls to `.subscribe()` happen at once (or if the connection is reset),
@@ -148,7 +147,7 @@ export class ObjectSetListenerWebsocket {
148
147
  // so we filter those out.
149
148
  const readySubs = [...this.#subscriptions.values()].filter(isReady);
150
149
  if (readySubs.length === 0) {
151
- if (process?.env?.NODE_ENV !== "production") {
150
+ if (process.env.NODE_ENV !== "production") {
152
151
  this.#logger?.trace("#sendSubscribeMessage(): aborting due to no ready subscriptions");
153
152
  }
154
153
  return;
@@ -163,31 +162,23 @@ export class ObjectSetListenerWebsocket {
163
162
  id,
164
163
  requests: readySubs.map(({
165
164
  objectSet,
166
- requestedProperties
167
- }) => ({
168
- objectSet: objectSet,
169
- propertySet: requestedProperties,
170
- referenceSet: []
171
- }))
165
+ requestedProperties,
166
+ requestedReferenceProperties
167
+ }) => {
168
+ return {
169
+ objectSet: objectSet,
170
+ propertySet: requestedProperties,
171
+ referenceSet: requestedReferenceProperties
172
+ };
173
+ })
172
174
  };
173
- if (process?.env?.NODE_ENV !== "production") {
175
+ if (process.env.NODE_ENV !== "production") {
174
176
  this.#logger?.trace({
175
177
  payload: subscribe
176
178
  }, "sending subscribe message");
177
179
  }
178
180
  this.#ws?.send(JSON.stringify(subscribe));
179
181
  }
180
- #expire(sub) {
181
- if (process?.env?.NODE_ENV !== "production") {
182
- this.#logger?.trace({
183
- subscription: sub
184
- }, "#expire()");
185
- }
186
- // the temporary ObjectSet has expired, we should re-subscribe which will cause the
187
- // listener to get an onOutOfDate message when it becomes subscribed again
188
- sub.status = "expired";
189
- this.#initiateSubscribe(sub);
190
- }
191
182
  #unsubscribe(sub, newStatus = "done") {
192
183
  if (subscriptionIsDone(sub)) {
193
184
  // if we are already done, we don't need to do anything
@@ -196,11 +187,8 @@ export class ObjectSetListenerWebsocket {
196
187
  sub.status = newStatus;
197
188
  // make sure listeners do nothing now
198
189
  sub.listener = fillOutListener({});
199
- if (sub.expiry) {
200
- clearTimeout(sub.expiry);
201
- sub.expiry = undefined;
202
- }
203
190
  this.#subscriptions.delete(sub.subscriptionId);
191
+ this.#sendSubscribeMessage();
204
192
  // If we have no more subscriptions, we can disconnect the websocket
205
193
  // however we should wait a bit to see if we get any more subscriptions.
206
194
  // For example, when switching between react views, you may unsubscribe
@@ -247,7 +235,7 @@ export class ObjectSetListenerWebsocket {
247
235
  this.#lastWsConnect = Date.now();
248
236
  // we again may have lost the race after our minimum backoff time
249
237
  if (this.#ws == null) {
250
- if (process?.env?.NODE_ENV !== "production") {
238
+ if (process.env.NODE_ENV !== "production") {
251
239
  this.#logger?.trace("Creating websocket");
252
240
  }
253
241
  this.#ws = new WebSocket(url, [`Bearer-${token}`]);
@@ -287,7 +275,7 @@ export class ObjectSetListenerWebsocket {
287
275
  };
288
276
  #onMessage = async message => {
289
277
  const data = JSON.parse(message.data.toString());
290
- if (process?.env?.NODE_ENV !== "production") {
278
+ if (process.env.NODE_ENV !== "production") {
291
279
  this.#logger?.trace({
292
280
  payload: data
293
281
  }, "received message from ws");
@@ -304,15 +292,37 @@ export class ObjectSetListenerWebsocket {
304
292
  return this.#handleMessage_subscriptionClosed(data);
305
293
  }
306
294
  default:
307
- invariant(false, "Unexpected message type");
295
+ process.env.NODE_ENV !== "production" ? invariant(false, "Unexpected message type") : invariant(false);
308
296
  }
309
297
  };
310
298
  #handleMessage_objectSetChanged = async payload => {
311
299
  const sub = this.#subscriptions.get(payload.id);
312
- !sub ? invariant(false, `Expected subscription id ${payload.id}`) : void 0;
300
+ if (sub == null) return;
313
301
  const objectUpdates = payload.updates.filter(update => update.type === "object");
314
- payload.updates.filter(update => update.type === "reference");
302
+ const referenceUpdates = payload.updates.filter(update => update.type === "reference");
303
+ const osdkObjectsWithReferenceUpdates = await Promise.all(referenceUpdates.map(async o => {
304
+ const osdkObjectArray = await convertWireToOsdkObjects(this.#client, [{
305
+ __apiName: o.objectType,
306
+ __primaryKey: o.primaryKey[sub.primaryKeyPropertyName],
307
+ ...o.primaryKey,
308
+ [o.property]: o.value
309
+ }], undefined);
310
+ const singleOsdkObject = osdkObjectArray[0] ?? undefined;
311
+ return singleOsdkObject != null ? {
312
+ object: singleOsdkObject,
313
+ state: "ADDED_OR_UPDATED"
314
+ } : undefined;
315
+ }));
316
+ for (const osdkObject of osdkObjectsWithReferenceUpdates) {
317
+ if (osdkObject != null) {
318
+ sub.listener.onChange?.(osdkObject);
319
+ }
320
+ }
315
321
  const osdkObjects = await Promise.all(objectUpdates.map(async o => {
322
+ const keysToDelete = Object.keys(o.object).filter(key => sub.requestedReferenceProperties.includes(key));
323
+ for (const key of keysToDelete) {
324
+ delete o.object[key];
325
+ }
316
326
  const osdkObjectArray = await convertWireToOsdkObjects(this.#client, [o.object], undefined);
317
327
  const singleOsdkObject = osdkObjectArray[0] ?? undefined;
318
328
  return singleOsdkObject != null ? {
@@ -322,13 +332,13 @@ export class ObjectSetListenerWebsocket {
322
332
  }));
323
333
  for (const osdkObject of osdkObjects) {
324
334
  if (osdkObject != null) {
325
- return sub.listener.onChange?.(osdkObject);
335
+ sub.listener.onChange?.(osdkObject);
326
336
  }
327
337
  }
328
338
  };
329
339
  #handleMessage_refreshObjectSet = payload => {
330
340
  const sub = this.#subscriptions.get(payload.id);
331
- !sub ? invariant(false, `Expected subscription id ${payload.id}`) : void 0;
341
+ !sub ? process.env.NODE_ENV !== "production" ? invariant(false, `Expected subscription id ${payload.id}`) : invariant(false) : void 0;
332
342
  sub.listener.onOutOfDate();
333
343
  };
334
344
  #handleMessage_subscribeResponses = payload => {
@@ -337,7 +347,7 @@ export class ObjectSetListenerWebsocket {
337
347
  responses
338
348
  } = payload;
339
349
  const subs = this.#pendingSubscriptions.get(id);
340
- !subs ? invariant(false, `should have a pending subscription for ${id}`) : void 0;
350
+ !subs ? process.env.NODE_ENV !== "production" ? invariant(false, `should have a pending subscription for ${id}`) : invariant(false) : void 0;
341
351
  this.#pendingSubscriptions.delete(id);
342
352
  for (let i = 0; i < responses.length; i++) {
343
353
  const sub = subs[i];
@@ -354,7 +364,7 @@ export class ObjectSetListenerWebsocket {
354
364
  case "success":
355
365
  // `"preparing"` should only be the status on an initial subscribe.
356
366
  const shouldFireOutOfDate = sub.status === "expired" || sub.status === "reconnecting";
357
- if (process?.env?.NODE_ENV !== "production") {
367
+ if (process.env.NODE_ENV !== "production") {
358
368
  this.#logger?.trace({
359
369
  shouldFireOutOfDate
360
370
  }, "success");
@@ -366,7 +376,7 @@ export class ObjectSetListenerWebsocket {
366
376
  sub.subscriptionId = response.id;
367
377
  this.#subscriptions.set(sub.subscriptionId, sub); // future messages come by this subId
368
378
  }
369
- if (shouldFireOutOfDate) sub.listener.onOutOfDate();
379
+ if (shouldFireOutOfDate) sub.listener.onOutOfDate();else sub.listener.onSuccessfulSubscription();
370
380
  break;
371
381
  default:
372
382
  sub.listener.onError(response);
@@ -375,12 +385,12 @@ export class ObjectSetListenerWebsocket {
375
385
  };
376
386
  #handleMessage_subscriptionClosed(payload) {
377
387
  const sub = this.#subscriptions.get(payload.id);
378
- !sub ? invariant(false, `Expected subscription id ${payload.id}`) : void 0;
388
+ !sub ? process.env.NODE_ENV !== "production" ? invariant(false, `Expected subscription id ${payload.id}`) : invariant(false) : void 0;
379
389
  sub.listener.onError([payload.cause]);
380
390
  this.#unsubscribe(sub, "error");
381
391
  }
382
392
  #onClose = event => {
383
- if (process?.env?.NODE_ENV !== "production") {
393
+ if (process.env.NODE_ENV !== "production") {
384
394
  this.#logger?.trace({
385
395
  event
386
396
  }, "Received close event from ws", event);
@@ -388,8 +398,6 @@ export class ObjectSetListenerWebsocket {
388
398
  // TODO we should probably throttle this so we don't abuse the backend
389
399
  this.#cycleWebsocket();
390
400
  };
391
- // TODO: Validate if this is needed
392
- async #enableObjectSetsWatcher() {}
393
401
  #cycleWebsocket = () => {
394
402
  if (this.#ws) {
395
403
  this.#ws.removeEventListener("open", this.#onOpen);
@@ -402,9 +410,9 @@ export class ObjectSetListenerWebsocket {
402
410
  }
403
411
  // if we have any listeners that are still depending on us, go ahead and reopen the websocket
404
412
  if (this.#subscriptions.size > 0) {
405
- if (process?.env?.NODE_ENV !== "production") {
413
+ if (process.env.NODE_ENV !== "production") {
406
414
  for (const s of this.#subscriptions.values()) {
407
- !(s.status !== "done" && s.status !== "error") ? invariant(false, "should not have done/error subscriptions still") : void 0;
415
+ !(s.status !== "done" && s.status !== "error") ? process.env.NODE_ENV !== "production" ? invariant(false, "should not have done/error subscriptions still") : invariant(false) : void 0;
408
416
  }
409
417
  }
410
418
  for (const s of this.#subscriptions.values()) {