@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":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASA,IAAI,QAAQ,WAAW;AAChC,SAASC,YAAY,EAAEC,QAAQ,EAAEC,YAAY,EAAEC,MAAM,QAAS,4BAA4B;AAC1F,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,EAAEZ,YAAY,EAAE,YAAY,eAAe,CAAC;EAClG,CAAC,CAAC;EACFM,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;IACf,CAAC,EACD;MACIR,QAAQ,EAAE,UAAU;MACpBC,WAAW,EAAE,UAAU;MACvBC,WAAW,EAAE,KAAK;MAClBO,MAAM,EAAE,UAAU;MAClBN,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;IACf,CAAC,EACD;MACIR,QAAQ,EAAE,UAAU;MACpBC,WAAW,EAAE,UAAU;MACvBC,WAAW,EAAE,KAAK;MAClBO,MAAM,EAAE,YAAY;MACpBN,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;IACf,CAAC,CACJ,CAAC;EACN,CAAC,CAAC;EACFjC,EAAE,CAAC,yDAAyD,EAAE,YAAY;IACtE,MAAMmC,QAAQ,GAAG,MAAMjC,MAAM,CAACZ,QAAQ,CAAC,CAAC8C,QAAQ,CAAC1C,QAAQ,CAAC2C,SAAS,CAACpB,UAAU,CAAC;IAC/ElB,YAAY,CAAC,CAAC,CAACuC,aAAa;IAC5BxC,MAAM,CAACqC,QAAQ,CAACR,WAAW,CAAC,CAACY,IAAI,CAAC7C,QAAQ,CAAC2C,SAAS,CAACpB,UAAU,CAAC;EACpE,CAAC,CAAC;EACFjB,EAAE,CAAC,mEAAmE,EAAE,YAAY;IAChF,MAAMwC,cAAc,GAAG,MAAMtC,MAAM,CAACZ,QAAQ,CAAC,CACxCmD,kBAAkB,CAAC/C,QAAQ,CAAC2C,SAAS,CAACpB,UAAU,CAAC;IACtDlB,YAAY,CAAC,CAAC,CAACuC,aAAa;IAC5B,IAAIlD,IAAI,CAACoD,cAAc,CAAC,EAAE;MACtB,MAAML,QAAQ,GAAGK,cAAc,CAACE,KAAK;MACrC5C,MAAM,CAACqC,QAAQ,CAACR,WAAW,CAAC,CAACY,IAAI,CAAC7C,QAAQ,CAAC2C,SAAS,CAACpB,UAAU,CAAC;IACpE;EACJ,CAAC,CAAC;EACFjB,EAAE,CAAC,kFAAkF,EAAE,YAAY;IAC/F,MAAMmC,QAAQ,GAAG,MAAMjC,MAAM,CAACZ,QAAQ,CAAC,CAAC8C,QAAQ,CAAC1C,QAAQ,CAAC2C,SAAS,CAACpB,UAAU,EAAE;MAAE0B,OAAO,EAAE,CAAC,UAAU;IAAE,CAAC,CAAC;IAC1G5C,YAAY,CAAC,CAAC,CAAC6C,OAAO,CAACC,aAAa;IACpC/C,MAAM,CAACqC,QAAQ,CAACR,WAAW,CAAC,CAACY,IAAI,CAAC7C,QAAQ,CAAC2C,SAAS,CAACpB,UAAU,CAAC;EACpE,CAAC,CAAC;EACFjB,EAAE,CAAC,4FAA4F,EAAE,YAAY;IACzG,MAAMwC,cAAc,GAAG,MAAMtC,MAAM,CAACZ,QAAQ,CAAC,CACxCmD,kBAAkB,CAAC/C,QAAQ,CAAC2C,SAAS,CAACpB,UAAU,EAAE;MAAE0B,OAAO,EAAE,CAAC,UAAU;IAAE,CAAC,CAAC;IACjF5C,YAAY,CAAC,CAAC,CAAC6C,OAAO,CAACC,aAAa;IACpC,IAAIzD,IAAI,CAACoD,cAAc,CAAC,EAAE;MACtB,MAAML,QAAQ,GAAGK,cAAc,CAACE,KAAK;MACrC5C,MAAM,CAACqC,QAAQ,CAACR,WAAW,CAAC,CAACY,IAAI,CAAC7C,QAAQ,CAAC2C,SAAS,CAACpB,UAAU,CAAC;IACpE;EACJ,CAAC,CAAC;EACFjB,EAAE,CAAC,0EAA0E,EAAE,YAAY;IACvF,MAAMF,MAAM,CAACI,MAAM,CAACZ,QAAQ,CAAC,CAAC8C,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAACU,OAAO,CAC9CC,OAAO,CAAC,CAAC;EAClB,CAAC,CAAC;EACF/C,EAAE,CAAC,oFAAoF,EAAE,YAAY;IACjG,MAAMwC,cAAc,GAAG,MAAMtC,MAAM,CAACZ,QAAQ,CAAC,CACxCmD,kBAAkB,CAAC,CAAC,CAAC,CAAC;IAC3B1C,YAAY,CAAC,CAAC,CAAC6C,OAAO,CAACC,aAAa;IACpC/C,MAAM,CAAC,OAAO,IAAI0C,cAAc,CAAC;EACrC,CAAC,CAAC;EACFxC,EAAE,CAAC,4DAA4D,EAAE,YAAY;IACzE,MAAMmC,QAAQ,GAAG,MAAMjC,MAAM,CAACZ,QAAQ,CAAC,CAAC8B,KAAK,CAAC;MAC1CH,UAAU,EAAEvB,QAAQ,CAACsD,SAAS,CAAC/B;IACnC,CAAC,CAAC,CACGgC,OAAO,CAAC,OAAO,CAAC,CAACb,QAAQ,CAAC1C,QAAQ,CAAC2C,SAAS,CAACpB,UAAU,CAAC;IAC7DnB,MAAM,CAACqC,QAAQ,CAACR,WAAW,CAAC,CAACY,IAAI,CAAC7C,QAAQ,CAAC2C,SAAS,CAACpB,UAAU,CAAC;EACpE,CAAC,CAAC;EACFjB,EAAE,CAAC,sEAAsE,EAAE,YAAY;IACnF,MAAMwC,cAAc,GAAG,MAAMtC,MAAM,CAACZ,QAAQ,CAAC,CAAC8B,KAAK,CAAC;MAChDH,UAAU,EAAEvB,QAAQ,CAACsD,SAAS,CAAC/B;IACnC,CAAC,CAAC,CACGgC,OAAO,CAAC,OAAO,CAAC,CAACR,kBAAkB,CAAC/C,QAAQ,CAAC2C,SAAS,CAACpB,UAAU,CAAC;IACvE,IAAI7B,IAAI,CAACoD,cAAc,CAAC,EAAE;MACtB,MAAML,QAAQ,GAAGK,cAAc,CAACE,KAAK;MACrC5C,MAAM,CAACqC,QAAQ,CAACR,WAAW,CAAC,CAACY,IAAI,CAAC7C,QAAQ,CAAC2C,SAAS,CAACpB,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,MAAMsC,MAAM,GAAG,MAAMvC,gBAAgB,CAACwC,mBAAmB,CAAC,CAAC;IAC3D,IAAI/D,IAAI,CAAC8D,MAAM,CAAC,EAAE;MACd,MAAMpC,SAAS,GAAGoC,MAAM,CAACR,KAAK,CAAC7B,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;EACFrB,QAAQ,CAACuD,IAAI,CAAC,CAAC,WAAW,EAAE,qBAAqB,CAAC,CAAC,CAAC,IAAI,EAAGC,CAAC,IAAK;IAC7DxD,QAAQ,CAAC,yBAAyB,EAAE,MAAM;MACtCA,QAAQ,CAAC,kBAAkB,EAAE,MAAM;QAC/BG,EAAE,CAAC,gBAAgB,EAAE,YAAY;UAC7B,MAAMsD,IAAI,GAAG;YACTC,6BAA6B,EAAE,MAAM;YACrCC,WAAW,EAAE;UACjB,CAAC;UACD,MAAMN,MAAM,GAAGG,CAAC,KAAK,WAAW,GAC1B,MAAMnD,MAAM,CAACZ,QAAQ,CAAC,CAACyB,SAAS,CAACuC,IAAI,CAAC,GACtC,CAAC,MAAMpD,MAAM,CAACZ,QAAQ,CAAC,CAAC6D,mBAAmB,CAACG,IAAI,CAAC,EAAEZ,KAAK;UAC9D5C,MAAM,CAACoD,MAAM,CAACrC,IAAI,CAAC,CAAC4C,YAAY,CAAC,CAAC,CAAC;UACnC1D,YAAY,CAACmD,MAAM,CAACrC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC+B,OAAO,CAACC,aAAa,CAAC,CAAC;UACpD9C,YAAY,CAACmD,MAAM,CAACrC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC+B,OAAO,CAACC,aAAa,CAAC,CAAC;QACxD,CAAC,CAAC;MACN,CAAC,CAAC;MACFhD,QAAQ,CAAC,mBAAmB,EAAE,MAAM;QAChCG,EAAE,CAAC,gBAAgB,EAAE,YAAY;UAC7B,MAAMsD,IAAI,GAAG;YACTC,6BAA6B,EAAE,MAAM;YACrCC,WAAW,EAAE;UACjB,CAAC;UACD,MAAMN,MAAM,GAAGG,CAAC,KAAK,WAAW,GAC1B,MAAMnD,MAAM,CAACZ,QAAQ,CAAC,CAACyB,SAAS,CAACuC,IAAI,CAAC,GACtC,CAAC,MAAMpD,MAAM,CAACZ,QAAQ,CAAC,CAAC6D,mBAAmB,CAACG,IAAI,CAAC,EAAEZ,KAAK;UAC9D5C,MAAM,CAACoD,MAAM,CAACrC,IAAI,CAAC,CAAC4C,YAAY,CAAC,CAAC,CAAC;UACnC1D,YAAY,CAACmD,MAAM,CAACrC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC+B,OAAO,CAACC,aAAa,CAAC,CAAC;UACpD9C,YAAY,CAACmD,MAAM,CAACrC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC+B,OAAO,CAACC,aAAa,CAAC,CAAC;UACpD9C,YAAY,CAACmD,MAAM,CAACrC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC+B,OAAO,CAACC,aAAa,CAAC,CAAC;QACxD,CAAC,CAAC;MACN,CAAC,CAAC;IACN,CAAC,CAAC;IACFhD,QAAQ,CAAC,sBAAsB,EAAE,MAAM;MACnCA,QAAQ,CAAC,kBAAkB,EAAE,MAAM;QAC/BG,EAAE,CAAC,kBAAkB,EAAE,YAAY;UAC/B,MAAMsD,IAAI,GAAG;YACTC,6BAA6B,EAAE,KAAK;YACpCC,WAAW,EAAE;UACjB,CAAC;UACD,MAAMN,MAAM,GAAGG,CAAC,KAAK,WAAW,GAC1B,MAAMnD,MAAM,CAACZ,QAAQ,CAAC,CAACyB,SAAS,CAACuC,IAAI,CAAC,GACtC,CAAC,MAAMpD,MAAM,CAACZ,QAAQ,CAAC,CAAC6D,mBAAmB,CAACG,IAAI,CAAC,EAAEZ,KAAK;UAC9D5C,MAAM,CAACoD,MAAM,CAACrC,IAAI,CAAC,CAAC4C,YAAY,CAAC,CAAC,CAAC;UACnC1D,YAAY,CAACmD,MAAM,CAACrC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC+B,OAAO,CAACC,aAAa,CAAC,CAAC;QACxD,CAAC,CAAC;MACN,CAAC,CAAC;MACFhD,QAAQ,CAAC,mBAAmB,EAAE,MAAM;QAChCG,EAAE,CAAC,kBAAkB,EAAE,YAAY;UAC/B,MAAMsD,IAAI,GAAG;YACTC,6BAA6B,EAAE,KAAK;YACpCG,UAAU,EAAE;UAChB,CAAC;UACD,MAAMR,MAAM,GAAGG,CAAC,KAAK,WAAW,GAC1B,MAAMnD,MAAM,CAACZ,QAAQ,CAAC,CAACyB,SAAS,CAACuC,IAAI,CAAC,GACtC,CAAC,MAAMpD,MAAM,CAACZ,QAAQ,CAAC,CAAC6D,mBAAmB,CAACG,IAAI,CAAC,EAAEZ,KAAK;UAC9D5C,MAAM,CAACoD,MAAM,CAACrC,IAAI,CAAC,CAAC4C,YAAY,CAAC,CAAC,CAAC;UACnC1D,YAAY,CAACmD,MAAM,CAACrC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC+B,OAAO,CAACC,aAAa,CAAC,CAAC;QACxD,CAAC,CAAC;MACN,CAAC,CAAC;IACN,CAAC,CAAC;EACN,CAAC,CAAC;EACFhD,QAAQ,CAAC,0BAA0B,EAAE,MAAM;IACvCG,EAAE,CAAC,8BAA8B,EAAE,MAAM;MACrCF,MAAM,CAAC,MAAMI,MAAM,CAACZ,QAAQ,CAAC,CAACyB,SAAS,CAAC;QACpCwC,6BAA6B,EAAE;MACnC,CAAC,CAAC,CAAC,CAACT,OAAO,CAACa,kCAAkC,CAAC,oFAAoF,CAAC;IACxI,CAAC,CAAC;EACN,CAAC,CAAC;EACF9D,QAAQ,CAACuD,IAAI,CAAC,CAAC,UAAU,EAAE,oBAAoB,CAAC,CAAC,CAAC,IAAI,EAAGC,CAAC,IAAK;IAC3DxD,QAAQ,CAAC,sBAAsB,EAAE,MAAM;MACnCA,QAAQ,CAAC,kBAAkB,EAAE,MAAM;QAC/BG,EAAE,CAAC,kBAAkB,EAAE,YAAY;UAC/B,MAAMsD,IAAI,GAAG;YACTC,6BAA6B,EAAE,KAAK;YACpCC,WAAW,EAAE;UACjB,CAAC;UACD,MAAMN,MAAM,GAAGG,CAAC,KAAK,UAAU,GACzB,MAAMnD,MAAM,CAACZ,QAAQ,CAAC,CAAC8C,QAAQ,CAAC,KAAK,EAAEkB,IAAI,CAAC,GAC5C,CAAC,MAAMpD,MAAM,CAACZ,QAAQ,CAAC,CAACmD,kBAAkB,CAAC,KAAK,EAAEa,IAAI,CAAC,EAAEZ,KAAK;UACpE5C,MAAM,CAACoD,MAAM,CAAC,CAACU,GAAG,CAACC,aAAa,CAAC,CAAC;UAClC9D,YAAY,CAACmD,MAAM,CAAC,CAACN,OAAO,CAACC,aAAa,CAAC,CAAC;QAChD,CAAC,CAAC;MACN,CAAC,CAAC;MACFhD,QAAQ,CAAC,mBAAmB,EAAE,MAAM;QAChCG,EAAE,CAAC,kBAAkB,EAAE,YAAY;UAC/B,MAAMsD,IAAI,GAAG;YACTC,6BAA6B,EAAE,KAAK;YACpCG,UAAU,EAAE;UAChB,CAAC;UACD,MAAMR,MAAM,GAAGG,CAAC,KAAK,UAAU,GACzB,MAAMnD,MAAM,CAACZ,QAAQ,CAAC,CAAC8C,QAAQ,CAAC,KAAK,EAAEkB,IAAI,CAAC,GAC5C,CAAC,MAAMpD,MAAM,CAACZ,QAAQ,CAAC,CAACmD,kBAAkB,CAAC,KAAK,EAAEa,IAAI,CAAC,EAAEZ,KAAK;UACpE5C,MAAM,CAACoD,MAAM,CAAC,CAACU,GAAG,CAACC,aAAa,CAAC,CAAC;UAClC9D,YAAY,CAACmD,MAAM,CAAC,CAACN,OAAO,CAACC,aAAa,CAAC,CAAC;QAChD,CAAC,CAAC;MACN,CAAC,CAAC;IACN,CAAC,CAAC;EACN,CAAC,CAAC;EACFhD,QAAQ,CAAC,0BAA0B,EAAE,MAAM;IACvCG,EAAE,CAAC,8BAA8B,EAAE,MAAM;MACrCF,MAAM,CAAC,MAAMI,MAAM,CAACZ,QAAQ,CAAC,CAACyB,SAAS,CAAC;QACpCwC,6BAA6B,EAAE;MACnC,CAAC,CAAC,CAAC,CAACT,OAAO,CAACa,kCAAkC,CAAC,oFAAoF,CAAC;IACxI,CAAC,CAAC;EACN,CAAC,CAAC;EACF9D,QAAQ,CAAC,aAAa,EAAE,MAAM;IAC1BA,QAAQ,CAAC,sBAAsB,EAAE,MAAM;MACnCG,EAAE,CAAC,kBAAkB,EAAE,YAAY;QAC/B,MAAMkD,MAAM,GAAG,MAAMhD,MAAM,CAACZ,QAAQ,CAAC,CAACyB,SAAS,CAAC;UAC5CwC,6BAA6B,EAAE;QACnC,CAAC,CAAC;QACF,MAAMO,YAAY,GAAGZ,MAAM,CAACrC,IAAI,CAAC,CAAC,CAAC;QAEnCd,YAAY,CAAC+D,YAAY,CAAC,CAAClB,OAAO,CAACC,aAAa,CAAC,CAAC;QAClD9C,YAAY,CAAC+D,YAAY,CAAC,CAAClB,OAAO,CAACC,aAAa,CAAC,CAAC;QAClD9C,YAAY,CAAC+D,YAAY,CAAC,CAAClB,OAAO,CAACC,aAAa,CAAC,CAAC;QAClD9C,YAAY,CAAC+D,YAAY,CAAC7C,UAAU,CAAC,CAAC4B,aAAa,CAAC,CAAC;QACrD9C,YAAY,CALU+D,YAAY,CAKP7C,UAAU,CAAC,CAAC4B,aAAa,CAAC,CAAC;QACtD9C,YAAY,CAAC,CAAC,CACT8C,aAAa,CAAC,CAAC;QACpB9C,YAAY,CAAC,CAAC,CACT8C,aAAa,CAAC,CAAC;QACpB9C,YAAY,CAAC,CAAC,CACT8C,aAAa,CAAC,CAAC;QACpB9C,YAAY,CAAC,CAAC,CACT8C,aAAa,CAAC,CAAC;QACpB9C,YAAY,CAAC,CAAC,CACT8C,aAAa,CAAC,CAAC;QACpB9C,YAAY,CAAC,CAAC,CACT8C,aAAa,CAAC,CAAC;QACpB9C,YAAY,CAAC,CAAC,CACT8C,aAAa,CAAC,CAAC;QACpB9C,YAAY,CAAC,CAAC,CACT8C,aAAa,CAAC,CAAC;QAEpB,MAAMkB,mBAAmB,GAAGb,MAAM,CAACrC,IAAI,CAAC,CAAC,CAAC,CAACmD,GAAG,CAD3BzE,YACsC,CAAC;QAC1DQ,YAAY,CAACgE,mBAAmB,CAAC,CAACnB,OAAO,CAACC,aAAa,CAAC,CAAC;QACzDkB,mBAAmB,CAACE,MAAM;MAC9B,CAAC,CAAC;IACN,CAAC,CAAC;EACN,CAAC,CAAC;AACN,CAAC,CAAC","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":"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","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,22 +70,28 @@ 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 = []) {
83
+ const objDef = await this.#client.ontologyProvider.getObjectDefinition(objectType.apiName);
84
+ if (properties.length === 0) {
85
+ properties = Object.keys(objDef.properties);
86
+ }
87
+ const objectProperties = properties.filter(p => objDef.properties[p].type !== "geotimeSeriesReference");
88
+ const referenceProperties = properties.filter(p => objDef.properties[p].type === "geotimeSeriesReference");
85
89
  const sub = {
86
90
  listener: fillOutListener(listener),
87
91
  objectSet,
88
- requestedProperties: properties,
92
+ primaryKeyPropertyName: objDef.primaryKeyApiName,
93
+ requestedProperties: objectProperties,
94
+ requestedReferenceProperties: referenceProperties,
89
95
  status: "preparing",
90
96
  // Since we don't have a real subscription id yet but we need to keep
91
97
  // track of this reference, we can just use a random uuid.
@@ -109,16 +115,9 @@ export class ObjectSetListenerWebsocket {
109
115
  * @returns
110
116
  */
111
117
  async #initiateSubscribe(sub) {
112
- if (process?.env?.NODE_ENV !== "production") {
118
+ if (process.env.NODE_ENV !== "production") {
113
119
  this.#logger?.trace("#initiateSubscribe()");
114
120
  }
115
- if (sub.expiry) {
116
- clearTimeout(sub.expiry);
117
- }
118
- // expiry is tied to the temporary object set, which is set to `timeToLive: "ONE_DAY"`
119
- // in `#createTemporaryObjectSet`. They should be in sync
120
- sub.expiry = setTimeout(() => this.#expire(sub), this.OBJECT_SET_EXPIRY_MS);
121
- await this.#client.ontologyRid;
122
121
  try {
123
122
  await this.#ensureWebsocket();
124
123
  // the consumer may have already unsubscribed before we are ready to request a subscription
@@ -137,7 +136,7 @@ export class ObjectSetListenerWebsocket {
137
136
  }
138
137
  }
139
138
  #sendSubscribeMessage() {
140
- if (process?.env?.NODE_ENV !== "production") {
139
+ if (process.env.NODE_ENV !== "production") {
141
140
  this.#logger?.trace("#sendSubscribeMessage()");
142
141
  }
143
142
  // If two calls to `.subscribe()` happen at once (or if the connection is reset),
@@ -145,7 +144,7 @@ export class ObjectSetListenerWebsocket {
145
144
  // so we filter those out.
146
145
  const readySubs = [...this.#subscriptions.values()].filter(isReady);
147
146
  if (readySubs.length === 0) {
148
- if (process?.env?.NODE_ENV !== "production") {
147
+ if (process.env.NODE_ENV !== "production") {
149
148
  this.#logger?.trace("#sendSubscribeMessage(): aborting due to no ready subscriptions");
150
149
  }
151
150
  return;
@@ -160,31 +159,23 @@ export class ObjectSetListenerWebsocket {
160
159
  id,
161
160
  requests: readySubs.map(({
162
161
  objectSet,
163
- requestedProperties
164
- }) => ({
165
- objectSet: objectSet,
166
- propertySet: requestedProperties,
167
- referenceSet: []
168
- }))
162
+ requestedProperties,
163
+ requestedReferenceProperties
164
+ }) => {
165
+ return {
166
+ objectSet: objectSet,
167
+ propertySet: requestedProperties,
168
+ referenceSet: requestedReferenceProperties
169
+ };
170
+ })
169
171
  };
170
- if (process?.env?.NODE_ENV !== "production") {
172
+ if (process.env.NODE_ENV !== "production") {
171
173
  this.#logger?.trace({
172
174
  payload: subscribe
173
175
  }, "sending subscribe message");
174
176
  }
175
177
  this.#ws?.send(JSON.stringify(subscribe));
176
178
  }
177
- #expire(sub) {
178
- if (process?.env?.NODE_ENV !== "production") {
179
- this.#logger?.trace({
180
- subscription: sub
181
- }, "#expire()");
182
- }
183
- // the temporary ObjectSet has expired, we should re-subscribe which will cause the
184
- // listener to get an onOutOfDate message when it becomes subscribed again
185
- sub.status = "expired";
186
- this.#initiateSubscribe(sub);
187
- }
188
179
  #unsubscribe(sub, newStatus = "done") {
189
180
  if (subscriptionIsDone(sub)) {
190
181
  // if we are already done, we don't need to do anything
@@ -193,11 +184,8 @@ export class ObjectSetListenerWebsocket {
193
184
  sub.status = newStatus;
194
185
  // make sure listeners do nothing now
195
186
  sub.listener = fillOutListener({});
196
- if (sub.expiry) {
197
- clearTimeout(sub.expiry);
198
- sub.expiry = undefined;
199
- }
200
187
  this.#subscriptions.delete(sub.subscriptionId);
188
+ this.#sendSubscribeMessage();
201
189
  // If we have no more subscriptions, we can disconnect the websocket
202
190
  // however we should wait a bit to see if we get any more subscriptions.
203
191
  // For example, when switching between react views, you may unsubscribe
@@ -244,7 +232,7 @@ export class ObjectSetListenerWebsocket {
244
232
  this.#lastWsConnect = Date.now();
245
233
  // we again may have lost the race after our minimum backoff time
246
234
  if (this.#ws == null) {
247
- if (process?.env?.NODE_ENV !== "production") {
235
+ if (process.env.NODE_ENV !== "production") {
248
236
  this.#logger?.trace("Creating websocket");
249
237
  }
250
238
  this.#ws = new WebSocket(url, [`Bearer-${token}`]);
@@ -284,7 +272,7 @@ export class ObjectSetListenerWebsocket {
284
272
  };
285
273
  #onMessage = async message => {
286
274
  const data = JSON.parse(message.data.toString());
287
- if (process?.env?.NODE_ENV !== "production") {
275
+ if (process.env.NODE_ENV !== "production") {
288
276
  this.#logger?.trace({
289
277
  payload: data
290
278
  }, "received message from ws");
@@ -301,15 +289,37 @@ export class ObjectSetListenerWebsocket {
301
289
  return this.#handleMessage_subscriptionClosed(data);
302
290
  }
303
291
  default:
304
- invariant(false, "Unexpected message type");
292
+ process.env.NODE_ENV !== "production" ? invariant(false, "Unexpected message type") : invariant(false);
305
293
  }
306
294
  };
307
295
  #handleMessage_objectSetChanged = async payload => {
308
296
  const sub = this.#subscriptions.get(payload.id);
309
- !sub ? invariant(false, `Expected subscription id ${payload.id}`) : void 0;
297
+ if (sub == null) return;
310
298
  const objectUpdates = payload.updates.filter(update => update.type === "object");
311
- payload.updates.filter(update => update.type === "reference");
299
+ const referenceUpdates = payload.updates.filter(update => update.type === "reference");
300
+ const osdkObjectsWithReferenceUpdates = await Promise.all(referenceUpdates.map(async o => {
301
+ const osdkObjectArray = await convertWireToOsdkObjects(this.#client, [{
302
+ __apiName: o.objectType,
303
+ __primaryKey: o.primaryKey[sub.primaryKeyPropertyName],
304
+ ...o.primaryKey,
305
+ [o.property]: o.value
306
+ }], undefined);
307
+ const singleOsdkObject = osdkObjectArray[0] ?? undefined;
308
+ return singleOsdkObject != null ? {
309
+ object: singleOsdkObject,
310
+ state: "ADDED_OR_UPDATED"
311
+ } : undefined;
312
+ }));
313
+ for (const osdkObject of osdkObjectsWithReferenceUpdates) {
314
+ if (osdkObject != null) {
315
+ sub.listener.onChange?.(osdkObject);
316
+ }
317
+ }
312
318
  const osdkObjects = await Promise.all(objectUpdates.map(async o => {
319
+ const keysToDelete = Object.keys(o.object).filter(key => sub.requestedReferenceProperties.includes(key));
320
+ for (const key of keysToDelete) {
321
+ delete o.object[key];
322
+ }
313
323
  const osdkObjectArray = await convertWireToOsdkObjects(this.#client, [o.object], undefined);
314
324
  const singleOsdkObject = osdkObjectArray[0] ?? undefined;
315
325
  return singleOsdkObject != null ? {
@@ -319,13 +329,13 @@ export class ObjectSetListenerWebsocket {
319
329
  }));
320
330
  for (const osdkObject of osdkObjects) {
321
331
  if (osdkObject != null) {
322
- return sub.listener.onChange?.(osdkObject);
332
+ sub.listener.onChange?.(osdkObject);
323
333
  }
324
334
  }
325
335
  };
326
336
  #handleMessage_refreshObjectSet = payload => {
327
337
  const sub = this.#subscriptions.get(payload.id);
328
- !sub ? invariant(false, `Expected subscription id ${payload.id}`) : void 0;
338
+ !sub ? process.env.NODE_ENV !== "production" ? invariant(false, `Expected subscription id ${payload.id}`) : invariant(false) : void 0;
329
339
  sub.listener.onOutOfDate();
330
340
  };
331
341
  #handleMessage_subscribeResponses = payload => {
@@ -334,7 +344,7 @@ export class ObjectSetListenerWebsocket {
334
344
  responses
335
345
  } = payload;
336
346
  const subs = this.#pendingSubscriptions.get(id);
337
- !subs ? invariant(false, `should have a pending subscription for ${id}`) : void 0;
347
+ !subs ? process.env.NODE_ENV !== "production" ? invariant(false, `should have a pending subscription for ${id}`) : invariant(false) : void 0;
338
348
  this.#pendingSubscriptions.delete(id);
339
349
  for (let i = 0; i < responses.length; i++) {
340
350
  const sub = subs[i];
@@ -351,7 +361,7 @@ export class ObjectSetListenerWebsocket {
351
361
  case "success":
352
362
  // `"preparing"` should only be the status on an initial subscribe.
353
363
  const shouldFireOutOfDate = sub.status === "expired" || sub.status === "reconnecting";
354
- if (process?.env?.NODE_ENV !== "production") {
364
+ if (process.env.NODE_ENV !== "production") {
355
365
  this.#logger?.trace({
356
366
  shouldFireOutOfDate
357
367
  }, "success");
@@ -363,7 +373,7 @@ export class ObjectSetListenerWebsocket {
363
373
  sub.subscriptionId = response.id;
364
374
  this.#subscriptions.set(sub.subscriptionId, sub); // future messages come by this subId
365
375
  }
366
- if (shouldFireOutOfDate) sub.listener.onOutOfDate();
376
+ if (shouldFireOutOfDate) sub.listener.onOutOfDate();else sub.listener.onSuccessfulSubscription();
367
377
  break;
368
378
  default:
369
379
  sub.listener.onError(response);
@@ -372,12 +382,12 @@ export class ObjectSetListenerWebsocket {
372
382
  };
373
383
  #handleMessage_subscriptionClosed(payload) {
374
384
  const sub = this.#subscriptions.get(payload.id);
375
- !sub ? invariant(false, `Expected subscription id ${payload.id}`) : void 0;
385
+ !sub ? process.env.NODE_ENV !== "production" ? invariant(false, `Expected subscription id ${payload.id}`) : invariant(false) : void 0;
376
386
  sub.listener.onError([payload.cause]);
377
387
  this.#unsubscribe(sub, "error");
378
388
  }
379
389
  #onClose = event => {
380
- if (process?.env?.NODE_ENV !== "production") {
390
+ if (process.env.NODE_ENV !== "production") {
381
391
  this.#logger?.trace({
382
392
  event
383
393
  }, "Received close event from ws", event);
@@ -385,8 +395,6 @@ export class ObjectSetListenerWebsocket {
385
395
  // TODO we should probably throttle this so we don't abuse the backend
386
396
  this.#cycleWebsocket();
387
397
  };
388
- // TODO: Validate if this is needed
389
- async #enableObjectSetsWatcher() {}
390
398
  #cycleWebsocket = () => {
391
399
  if (this.#ws) {
392
400
  this.#ws.removeEventListener("open", this.#onOpen);
@@ -399,9 +407,9 @@ export class ObjectSetListenerWebsocket {
399
407
  }
400
408
  // if we have any listeners that are still depending on us, go ahead and reopen the websocket
401
409
  if (this.#subscriptions.size > 0) {
402
- if (process?.env?.NODE_ENV !== "production") {
410
+ if (process.env.NODE_ENV !== "production") {
403
411
  for (const s of this.#subscriptions.values()) {
404
- !(s.status !== "done" && s.status !== "error") ? invariant(false, "should not have done/error subscriptions still") : void 0;
412
+ !(s.status !== "done" && s.status !== "error") ? process.env.NODE_ENV !== "production" ? invariant(false, "should not have done/error subscriptions still") : invariant(false) : void 0;
405
413
  }
406
414
  }
407
415
  for (const s of this.#subscriptions.values()) {