@osdk/client 2.1.0-beta.2 → 2.1.0-beta.4

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 (140) hide show
  1. package/CHANGELOG.md +39 -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 +41 -19
  19. package/build/browser/createClient.js.map +1 -1
  20. package/build/browser/createGeotimeSeriesProperty.d.ts +1 -1
  21. package/build/browser/createGeotimeSeriesProperty.d.ts.map +1 -1
  22. package/build/browser/createGeotimeSeriesProperty.js +4 -1
  23. package/build/browser/createGeotimeSeriesProperty.js.map +1 -1
  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/index.d.ts +0 -1
  29. package/build/browser/index.d.ts.map +1 -1
  30. package/build/browser/index.js +0 -1
  31. package/build/browser/index.js.map +1 -1
  32. package/build/browser/intellisense.test.js +1 -1
  33. package/build/browser/intellisense.test.js.map +1 -1
  34. package/build/browser/internal/conversions/legacyToModernSingleAggregationResult.js +1 -1
  35. package/build/browser/internal/conversions/legacyToModernSingleAggregationResult.js.map +1 -1
  36. package/build/browser/internal/conversions/modernToLegacyWhereClause.js +3 -3
  37. package/build/browser/internal/conversions/modernToLegacyWhereClause.js.map +1 -1
  38. package/build/browser/object/aggregate.js +1 -1
  39. package/build/browser/object/aggregate.js.map +1 -1
  40. package/build/browser/object/convertWireToOsdkObjects/InterfaceHolder.d.ts +1 -10
  41. package/build/browser/object/convertWireToOsdkObjects/InterfaceHolder.d.ts.map +1 -1
  42. package/build/browser/object/convertWireToOsdkObjects/InternalSymbols.d.ts +0 -7
  43. package/build/browser/object/convertWireToOsdkObjects/InternalSymbols.d.ts.map +1 -1
  44. package/build/browser/object/convertWireToOsdkObjects/InternalSymbols.js +6 -0
  45. package/build/browser/object/convertWireToOsdkObjects/InternalSymbols.js.map +1 -1
  46. package/build/browser/object/convertWireToOsdkObjects/createOsdkObject.js +7 -1
  47. package/build/browser/object/convertWireToOsdkObjects/createOsdkObject.js.map +1 -1
  48. package/build/browser/object/convertWireToOsdkObjects.js +2 -2
  49. package/build/browser/object/convertWireToOsdkObjects.js.map +1 -1
  50. package/build/browser/object/convertWireToOsdkObjects.test.js +10 -10
  51. package/build/browser/object/convertWireToOsdkObjects.test.js.map +1 -1
  52. package/build/browser/object/fetchPage.js +1 -1
  53. package/build/browser/object/fetchPage.js.map +1 -1
  54. package/build/browser/objectSet/ObjectSet.test.js +43 -47
  55. package/build/browser/objectSet/ObjectSet.test.js.map +1 -1
  56. package/build/browser/objectSet/ObjectSetListenerWebsocket.js +62 -57
  57. package/build/browser/objectSet/ObjectSetListenerWebsocket.js.map +1 -1
  58. package/build/browser/objectSet/ObjectSetListenerWebsocket.test.js +109 -21
  59. package/build/browser/objectSet/ObjectSetListenerWebsocket.test.js.map +1 -1
  60. package/build/browser/objectSet/createObjectSet.js +2 -5
  61. package/build/browser/objectSet/createObjectSet.js.map +1 -1
  62. package/build/browser/ontology/makeConjureContext.d.ts +1 -1
  63. package/build/browser/ontology/makeConjureContext.d.ts.map +1 -1
  64. package/build/browser/queries/applyQuery.js +1 -1
  65. package/build/browser/queries/applyQuery.js.map +1 -1
  66. package/build/browser/queries/queries.test.js +30 -2
  67. package/build/browser/queries/queries.test.js.map +1 -1
  68. package/build/browser/tsserver.js +1 -1
  69. package/build/browser/tsserver.js.map +1 -1
  70. package/build/browser/util/UserAgent.js +1 -1
  71. package/build/esm/Client.d.ts +8 -21
  72. package/build/esm/Client.d.ts.map +1 -1
  73. package/build/esm/Client.js +2 -1
  74. package/build/esm/Client.js.map +1 -1
  75. package/build/esm/MinimalClientContext.d.ts +1 -1
  76. package/build/esm/MinimalClientContext.d.ts.map +1 -1
  77. package/build/esm/__unstable/ConjureSupport.js +4 -4
  78. package/build/esm/__unstable/ConjureSupport.js.map +1 -1
  79. package/build/esm/__unstable/createBulkLinksAsyncIterFactory.d.ts +1 -6
  80. package/build/esm/__unstable/createBulkLinksAsyncIterFactory.d.ts.map +1 -1
  81. package/build/esm/__unstable/createBulkLinksAsyncIterFactory.js +1 -1
  82. package/build/esm/__unstable/createBulkLinksAsyncIterFactory.js.map +1 -1
  83. package/build/esm/actions/applyAction.js +1 -1
  84. package/build/esm/actions/applyAction.js.map +1 -1
  85. package/build/esm/createClient.d.ts +1 -1
  86. package/build/esm/createClient.d.ts.map +1 -1
  87. package/build/esm/createClient.js +41 -19
  88. package/build/esm/createClient.js.map +1 -1
  89. package/build/esm/createGeotimeSeriesProperty.d.ts +1 -1
  90. package/build/esm/createGeotimeSeriesProperty.d.ts.map +1 -1
  91. package/build/esm/createGeotimeSeriesProperty.js +4 -1
  92. package/build/esm/createGeotimeSeriesProperty.js.map +1 -1
  93. package/build/esm/createMinimalClient.js +3 -3
  94. package/build/esm/createMinimalClient.js.map +1 -1
  95. package/build/esm/createPlatformClient.d.ts +1 -1
  96. package/build/esm/createPlatformClient.d.ts.map +1 -1
  97. package/build/esm/index.d.ts +0 -1
  98. package/build/esm/index.d.ts.map +1 -1
  99. package/build/esm/index.js +0 -1
  100. package/build/esm/index.js.map +1 -1
  101. package/build/esm/intellisense.test.js +1 -1
  102. package/build/esm/intellisense.test.js.map +1 -1
  103. package/build/esm/internal/conversions/legacyToModernSingleAggregationResult.js +1 -1
  104. package/build/esm/internal/conversions/legacyToModernSingleAggregationResult.js.map +1 -1
  105. package/build/esm/internal/conversions/modernToLegacyWhereClause.js +3 -3
  106. package/build/esm/internal/conversions/modernToLegacyWhereClause.js.map +1 -1
  107. package/build/esm/object/aggregate.js +1 -1
  108. package/build/esm/object/aggregate.js.map +1 -1
  109. package/build/esm/object/convertWireToOsdkObjects/InterfaceHolder.d.ts +1 -10
  110. package/build/esm/object/convertWireToOsdkObjects/InterfaceHolder.d.ts.map +1 -1
  111. package/build/esm/object/convertWireToOsdkObjects/InternalSymbols.d.ts +0 -7
  112. package/build/esm/object/convertWireToOsdkObjects/InternalSymbols.d.ts.map +1 -1
  113. package/build/esm/object/convertWireToOsdkObjects/InternalSymbols.js +6 -0
  114. package/build/esm/object/convertWireToOsdkObjects/InternalSymbols.js.map +1 -1
  115. package/build/esm/object/convertWireToOsdkObjects/createOsdkObject.js +7 -1
  116. package/build/esm/object/convertWireToOsdkObjects/createOsdkObject.js.map +1 -1
  117. package/build/esm/object/convertWireToOsdkObjects.js +2 -2
  118. package/build/esm/object/convertWireToOsdkObjects.js.map +1 -1
  119. package/build/esm/object/convertWireToOsdkObjects.test.js +10 -10
  120. package/build/esm/object/convertWireToOsdkObjects.test.js.map +1 -1
  121. package/build/esm/object/fetchPage.js +1 -1
  122. package/build/esm/object/fetchPage.js.map +1 -1
  123. package/build/esm/objectSet/ObjectSet.test.js +43 -47
  124. package/build/esm/objectSet/ObjectSet.test.js.map +1 -1
  125. package/build/esm/objectSet/ObjectSetListenerWebsocket.js +62 -57
  126. package/build/esm/objectSet/ObjectSetListenerWebsocket.js.map +1 -1
  127. package/build/esm/objectSet/ObjectSetListenerWebsocket.test.js +109 -21
  128. package/build/esm/objectSet/ObjectSetListenerWebsocket.test.js.map +1 -1
  129. package/build/esm/objectSet/createObjectSet.js +2 -5
  130. package/build/esm/objectSet/createObjectSet.js.map +1 -1
  131. package/build/esm/ontology/makeConjureContext.d.ts +1 -1
  132. package/build/esm/ontology/makeConjureContext.d.ts.map +1 -1
  133. package/build/esm/queries/applyQuery.js +1 -1
  134. package/build/esm/queries/applyQuery.js.map +1 -1
  135. package/build/esm/queries/queries.test.js +30 -2
  136. package/build/esm/queries/queries.test.js.map +1 -1
  137. package/build/esm/tsserver.js +1 -1
  138. package/build/esm/tsserver.js.map +1 -1
  139. package/build/esm/util/UserAgent.js +1 -1
  140. package/package.json +14 -13
@@ -13,10 +13,11 @@
13
13
  * See the License for the specific language governing permissions and
14
14
  * limitations under the License.
15
15
  */
16
- import { $ontologyRid, Employee, Office } from "@osdk/client.test.ontology";
16
+ import { $ontologyRid, Employee } from "@osdk/client.test.ontology";
17
17
  import { apiServer } from "@osdk/shared.test";
18
18
  import ImportedWebSocket from "isomorphic-ws";
19
19
  import { http, HttpResponse } from "msw";
20
+ import pDefer from "p-defer";
20
21
  import { afterAll, afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest";
21
22
  import { z } from "zod";
22
23
  import { createMinimalClient } from "../createMinimalClient.js";
@@ -58,6 +59,7 @@ vi.mock("isomorphic-ws", async importOriginal => {
58
59
  WebSocket
59
60
  };
60
61
  });
62
+ let currentSubscriptionId = 0;
61
63
  describe("ObjectSetListenerWebsocket", async () => {
62
64
  beforeAll(async () => {
63
65
  apiServer.listen();
@@ -69,10 +71,11 @@ describe("ObjectSetListenerWebsocket", async () => {
69
71
  describe("basic setup", () => {
70
72
  let minimalClient;
71
73
  const MINIMUM_RECONNECT_DELAY = 2_000;
72
- const OBJECT_SET_EXPIRY_MS = 60_000;
73
74
  let client;
74
75
  let listener;
75
76
  let oslwInst = 0;
77
+ let updateReceived = undefined;
78
+ let listenerPromise;
76
79
  beforeEach(() => {
77
80
  minimalClient = createMinimalClient({
78
81
  ontologyRid: $ontologyRid
@@ -85,13 +88,17 @@ describe("ObjectSetListenerWebsocket", async () => {
85
88
  oslwInst: oslwInst++
86
89
  })
87
90
  }, {
88
- minimumReconnectDelayMs: MINIMUM_RECONNECT_DELAY,
89
- objectSetExpiryMs: OBJECT_SET_EXPIRY_MS
91
+ minimumReconnectDelayMs: MINIMUM_RECONNECT_DELAY
90
92
  });
93
+ listenerPromise = pDefer();
91
94
  listener = {
92
- onChange: vi.fn(),
95
+ onChange: vi.fn(o => {
96
+ updateReceived = o;
97
+ listenerPromise.resolve();
98
+ }),
93
99
  onError: vi.fn(),
94
- onOutOfDate: vi.fn()
100
+ onOutOfDate: vi.fn(),
101
+ onSuccessfulSubscription: vi.fn()
95
102
  };
96
103
  let objectSetRidCounter = 0;
97
104
  apiServer.use(http.post(`${STACK}api/v2/ontologySubscriptions/ontologies/${$ontologyRid}/streamSubscriptions`, () => HttpResponse.json({
@@ -134,6 +141,12 @@ describe("ObjectSetListenerWebsocket", async () => {
134
141
  unsubscribe();
135
142
  expect(ws.send).not.toHaveBeenCalled();
136
143
  });
144
+ it("currently requests regular object properties", () => {
145
+ expect(subReq1.requests[0].propertySet).toEqual(["employeeId"]);
146
+ });
147
+ it("currently requests reference backed properties", () => {
148
+ expect(subReq1.requests[0].referenceSet).toEqual(["employeeLocation"]);
149
+ });
137
150
  describe("socket closed before subscription confirmed", () => {
138
151
  beforeEach(() => {
139
152
  setWebSocketState(ws, "close");
@@ -161,13 +174,64 @@ describe("ObjectSetListenerWebsocket", async () => {
161
174
  beforeEach(() => {
162
175
  respondSuccessToSubscribe(ws, subReq1);
163
176
  });
177
+ it("should call onSuccessfulSubscription", () => {
178
+ expect(listener.onSuccessfulSubscription).toHaveBeenCalled();
179
+ });
180
+ it("should correctly return regular updates", async () => {
181
+ const idNum2 = currentSubscriptionId;
182
+ sendObjectUpdateResponse(ws, `${idNum2}`);
183
+ await listenerPromise.promise;
184
+ expect(listener.onChange).toHaveBeenCalled();
185
+ expect(updateReceived).toMatchInlineSnapshot(`
186
+ {
187
+ "object": {
188
+ "$apiName": "Employee",
189
+ "$objectType": "Employee",
190
+ "employeeId": 1,
191
+ },
192
+ "state": "ADDED_OR_UPDATED",
193
+ }
194
+ `);
195
+ });
196
+ it("should correctly return reference update", async () => {
197
+ const idNum2 = currentSubscriptionId;
198
+ sendReferenceUpdatesResponse(ws, `${idNum2}`);
199
+ await listenerPromise.promise;
200
+ expect(listener.onChange).toHaveBeenCalled();
201
+ expect(updateReceived).toMatchInlineSnapshot(`
202
+ {
203
+ "object": {
204
+ "$apiName": "Employee",
205
+ "$objectType": "Employee",
206
+ "$primaryKey": "12345",
207
+ "employeeId": "12345",
208
+ "employeeLocation": GeotimeSeriesPropertyImpl {
209
+ "lastFetchedValue": {
210
+ "time": "111",
211
+ "value": {
212
+ "coordinates": [
213
+ 100,
214
+ 200,
215
+ ],
216
+ "type": "Point",
217
+ },
218
+ },
219
+ },
220
+ },
221
+ "state": "ADDED_OR_UPDATED",
222
+ }
223
+ `);
224
+ });
164
225
  describe("additional subscription", async () => {
165
226
  let unsubscribe2;
166
227
  let subReq2;
167
228
  beforeEach(async () => {
168
229
  [unsubscribe2, subReq2] = await Promise.all([client.subscribe({
230
+ type: "object",
231
+ apiName: "Employee"
232
+ }, {
169
233
  type: "base",
170
- objectType: Office.apiName
234
+ objectType: Employee.apiName
171
235
  }, listener, ["employeeStatus"]), expectSingleSubscribeMessage(ws)]);
172
236
  rootLogger.fatal({
173
237
  subReq2
@@ -181,18 +245,6 @@ describe("ObjectSetListenerWebsocket", async () => {
181
245
  expect(listener.onOutOfDate).not.toHaveBeenCalled();
182
246
  });
183
247
  });
184
- describe("temporary object set expires", () => {
185
- beforeEach(async () => {
186
- await vi.advanceTimersByTimeAsync(OBJECT_SET_EXPIRY_MS + 1000);
187
- });
188
- it("should resubscribe and fire out of date", async () => {
189
- vi.runAllTicks();
190
- const subReq2 = await expectSingleSubscribeMessage(ws);
191
- expect(subReq2.id).not.toEqual(subReq1.id);
192
- respondSuccessToSubscribe(ws, subReq2);
193
- expect(listener.onOutOfDate).toHaveBeenCalledTimes(1);
194
- });
195
- });
196
248
  describe("socket closed abruptly", () => {
197
249
  beforeEach(() => {
198
250
  setWebSocketState(ws, "close");
@@ -228,7 +280,40 @@ function respondSuccessToSubscribe(ws, subReq2) {
228
280
  type: "subscribeResponses",
229
281
  responses: [{
230
282
  type: "success",
231
- id: "subId"
283
+ id: `${++currentSubscriptionId}`
284
+ }]
285
+ });
286
+ }
287
+ function sendObjectUpdateResponse(ws, subId) {
288
+ sendToClient(ws, {
289
+ type: "objectSetChanged",
290
+ id: subId,
291
+ updates: [{
292
+ type: "object",
293
+ state: "ADDED_OR_UPDATED",
294
+ object: {
295
+ __apiName: "Employee",
296
+ employeeId: 1
297
+ }
298
+ }]
299
+ });
300
+ }
301
+ function sendReferenceUpdatesResponse(ws, subId) {
302
+ sendToClient(ws, {
303
+ type: "objectSetChanged",
304
+ id: subId,
305
+ updates: [{
306
+ "type": "reference",
307
+ "objectType": "Employee",
308
+ "primaryKey": {
309
+ "employeeId": "12345"
310
+ },
311
+ "property": "employeeLocation",
312
+ "value": {
313
+ "timestamp": "111",
314
+ "type": "geotimeSeriesValue",
315
+ "position": [100, 200]
316
+ }
232
317
  }]
233
318
  });
234
319
  }
@@ -240,9 +325,12 @@ async function expectSingleSubscribeMessage(ws) {
240
325
  }
241
326
  async function subscribeAndExpectWebSocket(client, listener) {
242
327
  const [ws, unsubscribe] = await Promise.all([expectWebSocketConstructed(), client.subscribe({
328
+ apiName: "Employee",
329
+ type: "object"
330
+ }, {
243
331
  type: "base",
244
332
  objectType: Employee.apiName
245
- }, listener, ["employeeStatus"])]);
333
+ }, listener, ["employeeId", "employeeLocation"])]);
246
334
  // otherwise the ObjectSetListenerWebSocket is sitting waiting for it to "connect"
247
335
  setWebSocketState(ws, "open");
248
336
  return [ws, unsubscribe];
@@ -1 +1 @@
1
- {"version":3,"file":"ObjectSetListenerWebsocket.test.js","names":["$ontologyRid","Employee","Office","apiServer","ImportedWebSocket","http","HttpResponse","afterAll","afterEach","beforeAll","beforeEach","describe","expect","it","vi","z","createMinimalClient","ObjectSetListenerWebsocket","rootLogger","hoisted","pino","pinoPretty","EventEmitter","Promise","resolve","level","build","sync","timestampKey","undefined","errorLikeObjectKeys","errorProps","ignore","destination","write","a","at","slice","console","log","MockedWebSocket","STACK","mock","importOriginal","original","WebSocket","createMockWebSocketConstructor","default","listen","addLoggerToApiServer","close","minimalClient","MINIMUM_RECONNECT_DELAY","OBJECT_SET_EXPIRY_MS","client","listener","oslwInst","ontologyRid","logger","child","minimumReconnectDelayMs","objectSetExpiryMs","onChange","fn","onError","onOutOfDate","objectSetRidCounter","use","post","json","objectSetRid","useFakeTimers","restoreAllMocks","resetHandlers","not","toHaveBeenCalled","ws","unsubscribe","subReq1","subscribeAndExpectWebSocket","expectSingleSubscribeMessage","setWebSocketState","runAllTicks","expectEqualRemoveAndAddListeners","respondSuccessToSubscribe","send","all","expectWebSocketConstructed","advanceTimersByTimeAsync","subReq2","unsubscribe2","subscribe","type","objectType","apiName","fatal","id","toEqual","toHaveBeenCalledTimes","sendToClient","responses","removeEventListener","addEventListener","calls","length","consumeSingleSend","waitFor","results","value","mockClear","toBeCalledTimes","result","JSON","parse","lastCall","toString","OriginalWebSocket","i","ret","_args","webSocketInst","debug","eventEmitter","EventTarget","bind","message","_eventEmitter","readyState","CONNECTING","Object","assign","OPEN","CLOSED","CLOSING","newState","dispatchEvent","Event","name","requestId","request","trace","url","eventNames","c","events","on","SubscribeMessage","object","string","requests","array","objectSet","propertySet","referenceSet","MessageEvent","data","constructor","stringify","t"],"sources":["ObjectSetListenerWebsocket.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 { $ontologyRid, Employee, Office } from \"@osdk/client.test.ontology\";\nimport { apiServer } from \"@osdk/shared.test\";\nimport ImportedWebSocket from \"isomorphic-ws\";\nimport { http, HttpResponse } from \"msw\";\nimport { afterAll, afterEach, beforeAll, beforeEach, describe, expect, it, vi, } from \"vitest\";\nimport { z } from \"zod\";\nimport { createMinimalClient } from \"../createMinimalClient.js\";\nimport { ObjectSetListenerWebsocket } from \"./ObjectSetListenerWebsocket.js\";\n// it needs to be hoisted because its referenced from our mocked WebSocket\n// which must be hoisted to work\nconst rootLogger = await vi.hoisted(async () => {\n const pino = (await import(\"pino\")).pino;\n const pinoPretty = await import(\"pino-pretty\");\n const { EventEmitter } = await import(\"node:events\");\n class PinoConsoleLogDestination extends EventEmitter {\n write(a) {\n // remove trailing newline since console.log adds one\n if (a.at(-1) === \"\\n\")\n a = a.slice(0, -1);\n // This lets the test framework aggregate the logs per test, whereas direct to stdout does not\n console.log(a);\n }\n }\n return Promise.resolve(pino({ level: \"info\" }, (pinoPretty.build)({\n sync: true,\n timestampKey: undefined,\n errorLikeObjectKeys: [\"error\", \"err\", \"exception\"],\n errorProps: \"stack,cause,properties\",\n ignore: \"time,hostname,pid\",\n destination: new PinoConsoleLogDestination(),\n })));\n});\n// make local uses of WebSocket typed right\nconst MockedWebSocket = ImportedWebSocket;\nconst STACK = \"https://stack.palantir.com\";\nvi.mock(\"isomorphic-ws\", async (importOriginal) => {\n const original = await importOriginal();\n const WebSocket = createMockWebSocketConstructor(original.default, rootLogger);\n return { default: WebSocket, WebSocket };\n});\ndescribe(\"ObjectSetListenerWebsocket\", async () => {\n beforeAll(async () => {\n apiServer.listen();\n addLoggerToApiServer(rootLogger);\n });\n afterAll(() => {\n apiServer.close();\n });\n describe(\"basic setup\", () => {\n let minimalClient;\n const MINIMUM_RECONNECT_DELAY = 2_000;\n const OBJECT_SET_EXPIRY_MS = 60_000;\n let client;\n let listener;\n let oslwInst = 0;\n beforeEach(() => {\n minimalClient = createMinimalClient({ ontologyRid: $ontologyRid }, STACK, async () => \"myAccessToken\", { logger: rootLogger });\n client = new ObjectSetListenerWebsocket({\n ...minimalClient,\n logger: rootLogger.child({ oslwInst: oslwInst++ }),\n }, {\n minimumReconnectDelayMs: MINIMUM_RECONNECT_DELAY,\n objectSetExpiryMs: OBJECT_SET_EXPIRY_MS,\n });\n listener = {\n onChange: vi.fn(),\n onError: vi.fn(),\n onOutOfDate: vi.fn(),\n };\n let objectSetRidCounter = 0;\n apiServer.use(http.post(`${STACK}api/v2/ontologySubscriptions/ontologies/${$ontologyRid}/streamSubscriptions`, () => HttpResponse.json({\n objectSetRid: `rid.hi.${objectSetRidCounter++}`,\n })));\n vi.useFakeTimers();\n });\n afterEach(() => {\n vi.restoreAllMocks();\n apiServer.resetHandlers();\n });\n it(\"should not send onOutOfDate since it has not subscribed yet\", () => {\n expect(MockedWebSocket).not.toHaveBeenCalled();\n expect(listener.onOutOfDate).not.toHaveBeenCalled();\n expect(listener.onChange).not.toHaveBeenCalled();\n expect(listener.onError).not.toHaveBeenCalled();\n });\n describe(\"requests subscription\", () => {\n let ws;\n let unsubscribe;\n let subReq1;\n beforeEach(async () => {\n [ws, unsubscribe] = await subscribeAndExpectWebSocket(client, listener);\n subReq1 = await expectSingleSubscribeMessage(ws);\n });\n afterEach(() => {\n // just ensure we ended in good states, as we clear these as we consume them\n expect(MockedWebSocket).not.toHaveBeenCalled();\n // make sure we are unsubscribed so closing the socket doesn't trigger reconnects\n unsubscribe();\n // disconnect the socket\n setWebSocketState(ws, \"close\");\n vi.runAllTicks();\n // Make sure we cleaned up\n expectEqualRemoveAndAddListeners(ws);\n });\n it(\"only sends a single request\", async () => {\n respondSuccessToSubscribe(ws, subReq1);\n // actually this is broken FIXME\n unsubscribe();\n expect(ws.send).not.toHaveBeenCalled();\n });\n describe(\"socket closed before subscription confirmed\", () => {\n beforeEach(() => {\n setWebSocketState(ws, \"close\");\n expectEqualRemoveAndAddListeners(ws);\n });\n describe(\"reconnect\", async () => {\n beforeEach(async () => {\n [ws] = await Promise.all([\n expectWebSocketConstructed(),\n // delay for connection reconnect\n vi.advanceTimersByTimeAsync(MINIMUM_RECONNECT_DELAY),\n ]);\n setWebSocketState(ws, \"open\");\n });\n describe(\"subscribe and respond\", () => {\n beforeEach(async () => {\n const subReq2 = await expectSingleSubscribeMessage(ws);\n respondSuccessToSubscribe(ws, subReq2);\n });\n it(\"should not send out of date\", () => {\n expect(listener.onOutOfDate).not.toHaveBeenCalled();\n });\n });\n });\n });\n describe(\"successfully subscribed\", () => {\n beforeEach(() => {\n respondSuccessToSubscribe(ws, subReq1);\n });\n describe(\"additional subscription\", async () => {\n let unsubscribe2;\n let subReq2;\n beforeEach(async () => {\n [unsubscribe2, subReq2] = await Promise.all([\n client.subscribe({\n type: \"base\",\n objectType: Office.apiName,\n }, listener, [\"employeeStatus\"]),\n expectSingleSubscribeMessage(ws),\n ]);\n rootLogger.fatal({ subReq2 });\n respondSuccessToSubscribe(ws, subReq2);\n });\n afterEach(() => {\n unsubscribe2();\n });\n it(\"does not trigger an out of date \", () => {\n expect(listener.onOutOfDate).not.toHaveBeenCalled();\n });\n });\n describe(\"temporary object set expires\", () => {\n beforeEach(async () => {\n await vi.advanceTimersByTimeAsync(OBJECT_SET_EXPIRY_MS + 1000);\n });\n it(\"should resubscribe and fire out of date\", async () => {\n vi.runAllTicks();\n const subReq2 = await expectSingleSubscribeMessage(ws);\n expect(subReq2.id).not.toEqual(subReq1.id);\n respondSuccessToSubscribe(ws, subReq2);\n expect(listener.onOutOfDate).toHaveBeenCalledTimes(1);\n });\n });\n describe(\"socket closed abruptly\", () => {\n beforeEach(() => {\n setWebSocketState(ws, \"close\");\n expectEqualRemoveAndAddListeners(ws);\n });\n describe(\"reconnect, resubscribe successfully\", async () => {\n beforeEach(async () => {\n [ws] = await Promise.all([\n expectWebSocketConstructed(),\n // delay for connection reconnect\n vi.advanceTimersByTimeAsync(MINIMUM_RECONNECT_DELAY),\n ]);\n setWebSocketState(ws, \"open\");\n const subReq2 = await expectSingleSubscribeMessage(ws);\n respondSuccessToSubscribe(ws, subReq2);\n });\n it(\"should send out of date\", () => {\n expect(listener.onOutOfDate).toHaveBeenCalledTimes(1);\n });\n });\n });\n it(\"should not send onOutOfDate for first call\", () => {\n expect(MockedWebSocket).not.toHaveBeenCalled();\n expect(listener.onOutOfDate).not.toHaveBeenCalled();\n expect(listener.onChange).not.toHaveBeenCalled();\n expect(listener.onError).not.toHaveBeenCalled();\n });\n });\n });\n });\n});\nfunction respondSuccessToSubscribe(ws, subReq2) {\n sendToClient(ws, {\n id: subReq2.id,\n type: \"subscribeResponses\",\n responses: [{\n type: \"success\",\n id: \"subId\",\n }],\n });\n}\nfunction expectEqualRemoveAndAddListeners(ws) {\n expect(ws.removeEventListener).toHaveBeenCalledTimes(ws.addEventListener.mock.calls.length);\n}\nasync function expectSingleSubscribeMessage(ws) {\n return await consumeSingleSend(ws);\n}\nasync function subscribeAndExpectWebSocket(client, listener) {\n const [ws, unsubscribe] = await Promise.all([\n expectWebSocketConstructed(),\n client.subscribe({\n type: \"base\",\n objectType: Employee.apiName,\n }, listener, [\"employeeStatus\"]),\n ]);\n // otherwise the ObjectSetListenerWebSocket is sitting waiting for it to \"connect\"\n setWebSocketState(ws, \"open\");\n return [ws, unsubscribe];\n}\nasync function expectWebSocketConstructed() {\n expect(MockedWebSocket).toHaveBeenCalledTimes(0);\n const ws = await vi.waitFor(() => {\n expect(MockedWebSocket).toHaveBeenCalled();\n expect(MockedWebSocket.mock.results[0].type === \"return\");\n return MockedWebSocket.mock.results[0].value;\n });\n expect(MockedWebSocket).toHaveBeenCalledTimes(1);\n MockedWebSocket.mockClear();\n expect(MockedWebSocket).toHaveBeenCalledTimes(0);\n return ws;\n}\nasync function consumeSingleSend(ws) {\n return await vi.waitFor(() => {\n expect(ws.send).toBeCalledTimes(1);\n const result = JSON.parse(ws.send.mock.lastCall[0].toString());\n ws.send.mockClear();\n return result;\n });\n}\nfunction createMockWebSocketConstructor(OriginalWebSocket, logger) {\n let i = 0;\n const ret = vi.fn(function (..._args) {\n const webSocketInst = i++;\n logger.debug(\"WebSocket constructor called\");\n const eventEmitter = new EventTarget();\n return {\n addEventListener: vi.fn(eventEmitter.addEventListener.bind(eventEmitter)),\n removeEventListener: vi.fn(eventEmitter.removeEventListener.bind(eventEmitter)),\n send: vi.fn((a, _b) => {\n logger.debug({ message: JSON.parse(a.toString()), webSocketInst }, \"send() called\");\n }),\n close: vi.fn(),\n _eventEmitter: eventEmitter,\n readyState: OriginalWebSocket.CONNECTING,\n };\n // ^ we only implement some things but the type system wants to think its the full deal,\n // thus the satisfies plus the cast\n });\n Object.assign(ret, {\n OPEN: OriginalWebSocket.OPEN,\n CLOSED: OriginalWebSocket.CLOSED,\n CLOSING: OriginalWebSocket.CLOSING,\n CONNECTING: OriginalWebSocket.CONNECTING,\n });\n return ret;\n}\nfunction setWebSocketState(ws, readyState) {\n const newState = readyState === \"open\"\n ? ImportedWebSocket.OPEN\n : ImportedWebSocket.CLOSED;\n if (newState === ws.readyState)\n return;\n ws.readyState = newState;\n ws._eventEmitter.dispatchEvent(new Event(readyState, {}));\n}\nfunction addLoggerToApiServer(logger) {\n const z = (name, { requestId, request }) => logger.trace({ requestId, url: request.url }, name);\n const eventNames = [\n \"request:start\",\n \"request:match\",\n \"request:end\",\n \"request:unhandled\",\n \"response:bypass\",\n \"response:mocked\",\n ];\n for (const c of eventNames) {\n apiServer.events.on(c, z.bind(undefined, c));\n }\n}\nconst SubscribeMessage = z.object({\n id: z.string(),\n requests: z.array(z.object({\n objectSet: z.object({ id: z.string() }),\n propertySet: z.array(z.string()),\n referenceSet: z.array(z.string()),\n })),\n});\nclass MessageEvent extends Event {\n data;\n constructor(data) {\n super(\"message\");\n this.data = JSON.stringify(data);\n }\n}\nfunction sendToClient(ws, t) {\n ws._eventEmitter.dispatchEvent(new MessageEvent(t));\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"ObjectSetListenerWebsocket.test.js","names":["$ontologyRid","Employee","apiServer","ImportedWebSocket","http","HttpResponse","pDefer","afterAll","afterEach","beforeAll","beforeEach","describe","expect","it","vi","z","createMinimalClient","ObjectSetListenerWebsocket","rootLogger","hoisted","pino","pinoPretty","EventEmitter","Promise","resolve","level","build","sync","timestampKey","undefined","errorLikeObjectKeys","errorProps","ignore","destination","write","a","at","slice","console","log","MockedWebSocket","STACK","mock","importOriginal","original","WebSocket","createMockWebSocketConstructor","default","currentSubscriptionId","listen","addLoggerToApiServer","close","minimalClient","MINIMUM_RECONNECT_DELAY","client","listener","oslwInst","updateReceived","listenerPromise","ontologyRid","logger","child","minimumReconnectDelayMs","onChange","fn","o","onError","onOutOfDate","onSuccessfulSubscription","objectSetRidCounter","use","post","json","objectSetRid","useFakeTimers","restoreAllMocks","resetHandlers","not","toHaveBeenCalled","ws","unsubscribe","subReq1","subscribeAndExpectWebSocket","expectSingleSubscribeMessage","setWebSocketState","runAllTicks","expectEqualRemoveAndAddListeners","respondSuccessToSubscribe","send","requests","propertySet","toEqual","referenceSet","all","expectWebSocketConstructed","advanceTimersByTimeAsync","subReq2","idNum2","sendObjectUpdateResponse","promise","toMatchInlineSnapshot","sendReferenceUpdatesResponse","unsubscribe2","subscribe","type","apiName","objectType","fatal","toHaveBeenCalledTimes","sendToClient","id","responses","subId","updates","state","object","__apiName","employeeId","removeEventListener","addEventListener","calls","length","consumeSingleSend","waitFor","results","value","mockClear","toBeCalledTimes","result","JSON","parse","lastCall","toString","OriginalWebSocket","i","ret","_args","webSocketInst","debug","eventEmitter","EventTarget","bind","message","_eventEmitter","readyState","CONNECTING","Object","assign","OPEN","CLOSED","CLOSING","newState","dispatchEvent","Event","name","requestId","request","trace","url","eventNames","c","events","on","SubscribeMessage","string","array","objectSet","MessageEvent","data","constructor","stringify","t"],"sources":["ObjectSetListenerWebsocket.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 { $ontologyRid, Employee } from \"@osdk/client.test.ontology\";\nimport { apiServer } from \"@osdk/shared.test\";\nimport ImportedWebSocket from \"isomorphic-ws\";\nimport { http, HttpResponse } from \"msw\";\nimport pDefer from \"p-defer\";\nimport { afterAll, afterEach, beforeAll, beforeEach, describe, expect, it, vi, } from \"vitest\";\nimport { z } from \"zod\";\nimport { createMinimalClient } from \"../createMinimalClient.js\";\nimport { ObjectSetListenerWebsocket } from \"./ObjectSetListenerWebsocket.js\";\n// it needs to be hoisted because its referenced from our mocked WebSocket\n// which must be hoisted to work\nconst rootLogger = await vi.hoisted(async () => {\n const pino = (await import(\"pino\")).pino;\n const pinoPretty = await import(\"pino-pretty\");\n const { EventEmitter } = await import(\"node:events\");\n class PinoConsoleLogDestination extends EventEmitter {\n write(a) {\n // remove trailing newline since console.log adds one\n if (a.at(-1) === \"\\n\")\n a = a.slice(0, -1);\n // This lets the test framework aggregate the logs per test, whereas direct to stdout does not\n console.log(a);\n }\n }\n return Promise.resolve(pino({ level: \"info\" }, (pinoPretty.build)({\n sync: true,\n timestampKey: undefined,\n errorLikeObjectKeys: [\"error\", \"err\", \"exception\"],\n errorProps: \"stack,cause,properties\",\n ignore: \"time,hostname,pid\",\n destination: new PinoConsoleLogDestination(),\n })));\n});\n// make local uses of WebSocket typed right\nconst MockedWebSocket = ImportedWebSocket;\nconst STACK = \"https://stack.palantir.com\";\nvi.mock(\"isomorphic-ws\", async (importOriginal) => {\n const original = await importOriginal();\n const WebSocket = createMockWebSocketConstructor(original.default, rootLogger);\n return { default: WebSocket, WebSocket };\n});\nlet currentSubscriptionId = 0;\ndescribe(\"ObjectSetListenerWebsocket\", async () => {\n beforeAll(async () => {\n apiServer.listen();\n addLoggerToApiServer(rootLogger);\n });\n afterAll(() => {\n apiServer.close();\n });\n describe(\"basic setup\", () => {\n let minimalClient;\n const MINIMUM_RECONNECT_DELAY = 2_000;\n const OBJECT_SET_EXPIRY_MS = 60_000;\n let client;\n let listener;\n let oslwInst = 0;\n let updateReceived = undefined;\n let listenerPromise;\n beforeEach(() => {\n minimalClient = createMinimalClient({ ontologyRid: $ontologyRid }, STACK, async () => \"myAccessToken\", { logger: rootLogger });\n client = new ObjectSetListenerWebsocket({\n ...minimalClient,\n logger: rootLogger.child({ oslwInst: oslwInst++ }),\n }, {\n minimumReconnectDelayMs: MINIMUM_RECONNECT_DELAY,\n });\n listenerPromise = pDefer();\n listener = {\n onChange: vi.fn((o) => {\n updateReceived = o;\n listenerPromise.resolve();\n }),\n onError: vi.fn(),\n onOutOfDate: vi.fn(),\n onSuccessfulSubscription: vi.fn(),\n };\n let objectSetRidCounter = 0;\n apiServer.use(http.post(`${STACK}api/v2/ontologySubscriptions/ontologies/${$ontologyRid}/streamSubscriptions`, () => HttpResponse.json({\n objectSetRid: `rid.hi.${objectSetRidCounter++}`,\n })));\n vi.useFakeTimers();\n });\n afterEach(() => {\n vi.restoreAllMocks();\n apiServer.resetHandlers();\n });\n it(\"should not send onOutOfDate since it has not subscribed yet\", () => {\n expect(MockedWebSocket).not.toHaveBeenCalled();\n expect(listener.onOutOfDate).not.toHaveBeenCalled();\n expect(listener.onChange).not.toHaveBeenCalled();\n expect(listener.onError).not.toHaveBeenCalled();\n });\n describe(\"requests subscription\", () => {\n let ws;\n let unsubscribe;\n let subReq1;\n beforeEach(async () => {\n [ws, unsubscribe] = await subscribeAndExpectWebSocket(client, listener);\n subReq1 = await expectSingleSubscribeMessage(ws);\n });\n afterEach(() => {\n // just ensure we ended in good states, as we clear these as we consume them\n expect(MockedWebSocket).not.toHaveBeenCalled();\n // make sure we are unsubscribed so closing the socket doesn't trigger reconnects\n unsubscribe();\n // disconnect the socket\n setWebSocketState(ws, \"close\");\n vi.runAllTicks();\n // Make sure we cleaned up\n expectEqualRemoveAndAddListeners(ws);\n });\n it(\"only sends a single request\", async () => {\n respondSuccessToSubscribe(ws, subReq1);\n // actually this is broken FIXME\n unsubscribe();\n expect(ws.send).not.toHaveBeenCalled();\n });\n it(\"currently requests regular object properties\", () => {\n expect(subReq1.requests[0].propertySet).toEqual([\n \"employeeId\",\n ]);\n });\n it(\"currently requests reference backed properties\", () => {\n expect(subReq1.requests[0].referenceSet).toEqual([\"employeeLocation\"]);\n });\n describe(\"socket closed before subscription confirmed\", () => {\n beforeEach(() => {\n setWebSocketState(ws, \"close\");\n expectEqualRemoveAndAddListeners(ws);\n });\n describe(\"reconnect\", async () => {\n beforeEach(async () => {\n [ws] = await Promise.all([\n expectWebSocketConstructed(),\n // delay for connection reconnect\n vi.advanceTimersByTimeAsync(MINIMUM_RECONNECT_DELAY),\n ]);\n setWebSocketState(ws, \"open\");\n });\n describe(\"subscribe and respond\", () => {\n beforeEach(async () => {\n const subReq2 = await expectSingleSubscribeMessage(ws);\n respondSuccessToSubscribe(ws, subReq2);\n });\n it(\"should not send out of date\", () => {\n expect(listener.onOutOfDate).not.toHaveBeenCalled();\n });\n });\n });\n });\n describe(\"successfully subscribed\", () => {\n beforeEach(() => {\n respondSuccessToSubscribe(ws, subReq1);\n });\n it(\"should call onSuccessfulSubscription\", () => {\n expect(listener.onSuccessfulSubscription).toHaveBeenCalled();\n });\n it(\"should correctly return regular updates\", async () => {\n const idNum2 = currentSubscriptionId;\n sendObjectUpdateResponse(ws, `${idNum2}`);\n await listenerPromise.promise;\n expect(listener.onChange).toHaveBeenCalled();\n expect(updateReceived).toMatchInlineSnapshot(`\n {\n \"object\": {\n \"$apiName\": \"Employee\",\n \"$objectType\": \"Employee\",\n \"employeeId\": 1,\n },\n \"state\": \"ADDED_OR_UPDATED\",\n }\n `);\n });\n it(\"should correctly return reference update\", async () => {\n const idNum2 = currentSubscriptionId;\n sendReferenceUpdatesResponse(ws, `${idNum2}`);\n await listenerPromise.promise;\n expect(listener.onChange).toHaveBeenCalled();\n expect(updateReceived).toMatchInlineSnapshot(`\n {\n \"object\": {\n \"$apiName\": \"Employee\",\n \"$objectType\": \"Employee\",\n \"$primaryKey\": \"12345\",\n \"employeeId\": \"12345\",\n \"employeeLocation\": GeotimeSeriesPropertyImpl {\n \"lastFetchedValue\": {\n \"time\": \"111\",\n \"value\": {\n \"coordinates\": [\n 100,\n 200,\n ],\n \"type\": \"Point\",\n },\n },\n },\n },\n \"state\": \"ADDED_OR_UPDATED\",\n }\n `);\n });\n describe(\"additional subscription\", async () => {\n let unsubscribe2;\n let subReq2;\n beforeEach(async () => {\n [unsubscribe2, subReq2] = await Promise.all([\n client.subscribe({\n type: \"object\",\n apiName: \"Employee\",\n }, {\n type: \"base\",\n objectType: Employee.apiName,\n }, listener, [\"employeeStatus\"]),\n expectSingleSubscribeMessage(ws),\n ]);\n rootLogger.fatal({ subReq2 });\n respondSuccessToSubscribe(ws, subReq2);\n });\n afterEach(() => {\n unsubscribe2();\n });\n it(\"does not trigger an out of date \", () => {\n expect(listener.onOutOfDate).not.toHaveBeenCalled();\n });\n });\n describe(\"socket closed abruptly\", () => {\n beforeEach(() => {\n setWebSocketState(ws, \"close\");\n expectEqualRemoveAndAddListeners(ws);\n });\n describe(\"reconnect, resubscribe successfully\", async () => {\n beforeEach(async () => {\n [ws] = await Promise.all([\n expectWebSocketConstructed(),\n // delay for connection reconnect\n vi.advanceTimersByTimeAsync(MINIMUM_RECONNECT_DELAY),\n ]);\n setWebSocketState(ws, \"open\");\n const subReq2 = await expectSingleSubscribeMessage(ws);\n respondSuccessToSubscribe(ws, subReq2);\n });\n it(\"should send out of date\", () => {\n expect(listener.onOutOfDate).toHaveBeenCalledTimes(1);\n });\n });\n });\n it(\"should not send onOutOfDate for first call\", () => {\n expect(MockedWebSocket).not.toHaveBeenCalled();\n expect(listener.onOutOfDate).not.toHaveBeenCalled();\n expect(listener.onChange).not.toHaveBeenCalled();\n expect(listener.onError).not.toHaveBeenCalled();\n });\n });\n });\n });\n});\nfunction respondSuccessToSubscribe(ws, subReq2) {\n sendToClient(ws, {\n id: subReq2.id,\n type: \"subscribeResponses\",\n responses: [{\n type: \"success\",\n id: `${++currentSubscriptionId}`,\n }],\n });\n}\nfunction sendObjectUpdateResponse(ws, subId) {\n const updateMessage = {\n type: \"objectSetChanged\",\n id: subId,\n updates: [{\n type: \"object\",\n state: \"ADDED_OR_UPDATED\",\n object: {\n __apiName: \"Employee\",\n employeeId: 1,\n },\n }],\n };\n sendToClient(ws, updateMessage);\n}\nfunction sendReferenceUpdatesResponse(ws, subId) {\n const referenceUpdateMessage = {\n type: \"objectSetChanged\",\n id: subId,\n updates: [{\n \"type\": \"reference\",\n \"objectType\": \"Employee\",\n \"primaryKey\": { \"employeeId\": \"12345\" },\n \"property\": \"employeeLocation\",\n \"value\": {\n \"timestamp\": \"111\",\n \"type\": \"geotimeSeriesValue\",\n \"position\": [100, 200],\n },\n }],\n };\n sendToClient(ws, referenceUpdateMessage);\n}\nfunction expectEqualRemoveAndAddListeners(ws) {\n expect(ws.removeEventListener).toHaveBeenCalledTimes(ws.addEventListener.mock.calls.length);\n}\nasync function expectSingleSubscribeMessage(ws) {\n return await consumeSingleSend(ws);\n}\nasync function subscribeAndExpectWebSocket(client, listener) {\n const [ws, unsubscribe] = await Promise.all([\n expectWebSocketConstructed(),\n client.subscribe({\n apiName: \"Employee\",\n type: \"object\",\n }, {\n type: \"base\",\n objectType: Employee.apiName,\n }, listener, [\"employeeId\", \"employeeLocation\"]),\n ]);\n // otherwise the ObjectSetListenerWebSocket is sitting waiting for it to \"connect\"\n setWebSocketState(ws, \"open\");\n return [ws, unsubscribe];\n}\nasync function expectWebSocketConstructed() {\n expect(MockedWebSocket).toHaveBeenCalledTimes(0);\n const ws = await vi.waitFor(() => {\n expect(MockedWebSocket).toHaveBeenCalled();\n expect(MockedWebSocket.mock.results[0].type === \"return\");\n return MockedWebSocket.mock.results[0].value;\n });\n expect(MockedWebSocket).toHaveBeenCalledTimes(1);\n MockedWebSocket.mockClear();\n expect(MockedWebSocket).toHaveBeenCalledTimes(0);\n return ws;\n}\nasync function consumeSingleSend(ws) {\n return await vi.waitFor(() => {\n expect(ws.send).toBeCalledTimes(1);\n const result = JSON.parse(ws.send.mock.lastCall[0].toString());\n ws.send.mockClear();\n return result;\n });\n}\nfunction createMockWebSocketConstructor(OriginalWebSocket, logger) {\n let i = 0;\n const ret = vi.fn(function (..._args) {\n const webSocketInst = i++;\n logger.debug(\"WebSocket constructor called\");\n const eventEmitter = new EventTarget();\n return {\n addEventListener: vi.fn(eventEmitter.addEventListener.bind(eventEmitter)),\n removeEventListener: vi.fn(eventEmitter.removeEventListener.bind(eventEmitter)),\n send: vi.fn((a, _b) => {\n logger.debug({ message: JSON.parse(a.toString()), webSocketInst }, \"send() called\");\n }),\n close: vi.fn(),\n _eventEmitter: eventEmitter,\n readyState: OriginalWebSocket.CONNECTING,\n };\n // ^ we only implement some things but the type system wants to think its the full deal,\n // thus the satisfies plus the cast\n });\n Object.assign(ret, {\n OPEN: OriginalWebSocket.OPEN,\n CLOSED: OriginalWebSocket.CLOSED,\n CLOSING: OriginalWebSocket.CLOSING,\n CONNECTING: OriginalWebSocket.CONNECTING,\n });\n return ret;\n}\nfunction setWebSocketState(ws, readyState) {\n const newState = readyState === \"open\"\n ? ImportedWebSocket.OPEN\n : ImportedWebSocket.CLOSED;\n if (newState === ws.readyState)\n return;\n ws.readyState = newState;\n ws._eventEmitter.dispatchEvent(new Event(readyState, {}));\n}\nfunction addLoggerToApiServer(logger) {\n const z = (name, { requestId, request }) => logger.trace({ requestId, url: request.url }, name);\n const eventNames = [\n \"request:start\",\n \"request:match\",\n \"request:end\",\n \"request:unhandled\",\n \"response:bypass\",\n \"response:mocked\",\n ];\n for (const c of eventNames) {\n apiServer.events.on(c, z.bind(undefined, c));\n }\n}\nconst SubscribeMessage = z.object({\n id: z.string(),\n requests: z.array(z.object({\n objectSet: z.object({ id: z.string() }),\n propertySet: z.array(z.string()),\n referenceSet: z.array(z.string()),\n })),\n});\nclass MessageEvent extends Event {\n data;\n constructor(data) {\n super(\"message\");\n this.data = JSON.stringify(data);\n }\n}\nfunction sendToClient(ws, t) {\n ws._eventEmitter.dispatchEvent(new MessageEvent(t));\n}\n"],"mappings":"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","ignoreList":[]}
@@ -13,14 +13,12 @@
13
13
  * See the License for the specific language governing permissions and
14
14
  * limitations under the License.
15
15
  */
16
- import { __EXPERIMENTAL__NOT_SUPPORTED_YET_subscribe } from "@osdk/api/unstable";
17
16
  import { modernToLegacyWhereClause } from "../internal/conversions/modernToLegacyWhereClause.js";
18
17
  import { aggregate } from "../object/aggregate.js";
19
18
  import { fetchPageInternal, fetchPageWithErrorsInternal } from "../object/fetchPage.js";
20
19
  import { fetchSingle, fetchSingleWithErrors } from "../object/fetchSingle.js";
21
20
  import { augmentRequestContext } from "../util/augmentRequestContext.js";
22
21
  import { isWireObjectSet } from "../util/WireObjectSet.js";
23
- import { ObjectSetListenerWebsocket } from "./ObjectSetListenerWebsocket.js";
24
22
  function isObjectTypeDefinition(def) {
25
23
  return def.type === "object";
26
24
  }
@@ -101,9 +99,8 @@ export function createObjectSet(objectType, clientCtx, objectSet = {
101
99
  finalMethodCall: "fetchOneWithErrors"
102
100
  })), objectType, options, await createWithPk(clientCtx, objectType, objectSet, primaryKey));
103
101
  } : undefined,
104
- [__EXPERIMENTAL__NOT_SUPPORTED_YET_subscribe]: (properties, listener) => {
105
- const pendingSubscribe = ObjectSetListenerWebsocket.getInstance(clientCtx).subscribe(objectSet, listener, properties);
106
- return async () => (await pendingSubscribe)();
102
+ $objectSetInternals: {
103
+ def: objectType
107
104
  }
108
105
  };
109
106
  function createSearchAround(link) {
@@ -1 +1 @@
1
- {"version":3,"file":"createObjectSet.js","names":["__EXPERIMENTAL__NOT_SUPPORTED_YET_subscribe","modernToLegacyWhereClause","aggregate","fetchPageInternal","fetchPageWithErrorsInternal","fetchSingle","fetchSingleWithErrors","augmentRequestContext","isWireObjectSet","ObjectSetListenerWebsocket","isObjectTypeDefinition","def","type","isObjectSet","o","objectSetDefinitions","get","getWireObjectSet","objectSet","WeakMap","createObjectSet","objectType","clientCtx","base","bind","globalThis","finalMethodCall","fetchPage","fetchPageWithErrors","where","clause","objectSetFactory","pivotTo","createSearchAround","union","objectSets","map","os","intersect","subtract","asyncIter","args","$nextPageToken","undefined","result","nextPageToken","obj","data","fetchOne","primaryKey","options","createWithPk","fetchOneWithErrors","properties","listener","pendingSubscribe","getInstance","subscribe","link","set","objDef","ontologyProvider","getObjectDefinition","apiName","withPk","field","primaryKeyApiName","value"],"sources":["createObjectSet.js"],"sourcesContent":["/*\n * Copyright 2023 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { __EXPERIMENTAL__NOT_SUPPORTED_YET_subscribe } from \"@osdk/api/unstable\";\nimport { modernToLegacyWhereClause } from \"../internal/conversions/modernToLegacyWhereClause.js\";\nimport { aggregate } from \"../object/aggregate.js\";\nimport { fetchPageInternal, fetchPageWithErrorsInternal, } from \"../object/fetchPage.js\";\nimport { fetchSingle, fetchSingleWithErrors } from \"../object/fetchSingle.js\";\nimport { augmentRequestContext } from \"../util/augmentRequestContext.js\";\nimport { isWireObjectSet } from \"../util/WireObjectSet.js\";\nimport { ObjectSetListenerWebsocket } from \"./ObjectSetListenerWebsocket.js\";\nfunction isObjectTypeDefinition(def) {\n return def.type === \"object\";\n}\n/* @internal */\nexport function isObjectSet(o) {\n return o != null && typeof o === \"object\"\n && isWireObjectSet(objectSetDefinitions.get(o));\n}\n/** @internal */\nexport function getWireObjectSet(objectSet) {\n return objectSetDefinitions.get(objectSet);\n}\nconst objectSetDefinitions = new WeakMap();\n/** @internal */\nexport function createObjectSet(objectType, clientCtx, objectSet = {\n type: \"base\",\n objectType: objectType[\"apiName\"],\n}) {\n const base = {\n aggregate: (aggregate).bind(globalThis, augmentRequestContext(clientCtx, _ => ({ finalMethodCall: \"aggregate\" })), objectType, objectSet),\n fetchPage: fetchPageInternal.bind(globalThis, augmentRequestContext(clientCtx, _ => ({ finalMethodCall: \"fetchPage\" })), objectType, objectSet),\n fetchPageWithErrors: fetchPageWithErrorsInternal.bind(globalThis, augmentRequestContext(clientCtx, _ => ({ finalMethodCall: \"fetchPageWithErrors\" })), objectType, objectSet),\n where: (clause) => {\n return clientCtx.objectSetFactory(objectType, clientCtx, {\n type: \"filter\",\n objectSet: objectSet,\n where: modernToLegacyWhereClause(clause, objectType),\n });\n },\n pivotTo: function (type) {\n return createSearchAround(type)();\n },\n union: (...objectSets) => {\n return clientCtx.objectSetFactory(objectType, clientCtx, {\n type: \"union\",\n objectSets: [\n objectSet,\n ...objectSets.map(os => objectSetDefinitions.get(os)),\n ],\n });\n },\n intersect: (...objectSets) => {\n return clientCtx.objectSetFactory(objectType, clientCtx, {\n type: \"intersect\",\n objectSets: [\n objectSet,\n ...objectSets.map(os => objectSetDefinitions.get(os)),\n ],\n });\n },\n subtract: (...objectSets) => {\n return clientCtx.objectSetFactory(objectType, clientCtx, {\n type: \"subtract\",\n objectSets: [\n objectSet,\n ...objectSets.map(os => objectSetDefinitions.get(os)),\n ],\n });\n },\n asyncIter: async function* (args) {\n let $nextPageToken = undefined;\n do {\n const result = await fetchPageInternal(augmentRequestContext(clientCtx, _ => ({ finalMethodCall: \"asyncIter\" })), objectType, objectSet, { ...args, $nextPageToken });\n $nextPageToken = result.nextPageToken;\n for (const obj of result.data) {\n yield obj;\n }\n } while ($nextPageToken != null);\n },\n fetchOne: (isObjectTypeDefinition(objectType)\n ? async (primaryKey, options) => {\n return await fetchSingle(augmentRequestContext(clientCtx, _ => ({ finalMethodCall: \"fetchOne\" })), objectType, options, await createWithPk(clientCtx, objectType, objectSet, primaryKey));\n }\n : undefined),\n fetchOneWithErrors: (isObjectTypeDefinition(objectType)\n ? async (primaryKey, options) => {\n return await fetchSingleWithErrors(augmentRequestContext(clientCtx, _ => ({ finalMethodCall: \"fetchOneWithErrors\" })), objectType, options, await createWithPk(clientCtx, objectType, objectSet, primaryKey));\n }\n : undefined),\n [__EXPERIMENTAL__NOT_SUPPORTED_YET_subscribe]: (properties, listener) => {\n const pendingSubscribe = ObjectSetListenerWebsocket.getInstance(clientCtx).subscribe(objectSet, listener, properties);\n return async () => (await pendingSubscribe)();\n },\n };\n function createSearchAround(link) {\n return () => {\n return clientCtx.objectSetFactory(objectType, clientCtx, {\n type: \"searchAround\",\n objectSet,\n link,\n });\n };\n }\n objectSetDefinitions.set(base, objectSet);\n // we are using a type assertion because the marker symbol defined in BaseObjectSet isn't actually used\n // at runtime.\n return base;\n}\nasync function createWithPk(clientCtx, objectType, objectSet, primaryKey) {\n const objDef = await clientCtx.ontologyProvider.getObjectDefinition(objectType.apiName);\n const withPk = {\n type: \"filter\",\n objectSet: objectSet,\n where: {\n type: \"eq\",\n field: objDef.primaryKeyApiName,\n value: primaryKey,\n },\n };\n return withPk;\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"createObjectSet.js","names":["modernToLegacyWhereClause","aggregate","fetchPageInternal","fetchPageWithErrorsInternal","fetchSingle","fetchSingleWithErrors","augmentRequestContext","isWireObjectSet","isObjectTypeDefinition","def","type","isObjectSet","o","objectSetDefinitions","get","getWireObjectSet","objectSet","WeakMap","createObjectSet","objectType","clientCtx","base","bind","globalThis","finalMethodCall","fetchPage","fetchPageWithErrors","where","clause","objectSetFactory","pivotTo","createSearchAround","union","objectSets","map","os","intersect","subtract","asyncIter","args","$nextPageToken","undefined","result","nextPageToken","obj","data","fetchOne","primaryKey","options","createWithPk","fetchOneWithErrors","$objectSetInternals","link","set","objDef","ontologyProvider","getObjectDefinition","apiName","withPk","field","primaryKeyApiName","value"],"sources":["createObjectSet.js"],"sourcesContent":["/*\n * Copyright 2023 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { modernToLegacyWhereClause } from \"../internal/conversions/modernToLegacyWhereClause.js\";\nimport { aggregate } from \"../object/aggregate.js\";\nimport { fetchPageInternal, fetchPageWithErrorsInternal, } from \"../object/fetchPage.js\";\nimport { fetchSingle, fetchSingleWithErrors } from \"../object/fetchSingle.js\";\nimport { augmentRequestContext } from \"../util/augmentRequestContext.js\";\nimport { isWireObjectSet } from \"../util/WireObjectSet.js\";\nfunction isObjectTypeDefinition(def) {\n return def.type === \"object\";\n}\n/* @internal */\nexport function isObjectSet(o) {\n return o != null && typeof o === \"object\"\n && isWireObjectSet(objectSetDefinitions.get(o));\n}\n/** @internal */\nexport function getWireObjectSet(objectSet) {\n return objectSetDefinitions.get(objectSet);\n}\nconst objectSetDefinitions = new WeakMap();\n/** @internal */\nexport function createObjectSet(objectType, clientCtx, objectSet = {\n type: \"base\",\n objectType: objectType[\"apiName\"],\n}) {\n const base = {\n aggregate: (aggregate).bind(globalThis, augmentRequestContext(clientCtx, _ => ({ finalMethodCall: \"aggregate\" })), objectType, objectSet),\n fetchPage: fetchPageInternal.bind(globalThis, augmentRequestContext(clientCtx, _ => ({ finalMethodCall: \"fetchPage\" })), objectType, objectSet),\n fetchPageWithErrors: fetchPageWithErrorsInternal.bind(globalThis, augmentRequestContext(clientCtx, _ => ({ finalMethodCall: \"fetchPageWithErrors\" })), objectType, objectSet),\n where: (clause) => {\n return clientCtx.objectSetFactory(objectType, clientCtx, {\n type: \"filter\",\n objectSet: objectSet,\n where: modernToLegacyWhereClause(clause, objectType),\n });\n },\n pivotTo: function (type) {\n return createSearchAround(type)();\n },\n union: (...objectSets) => {\n return clientCtx.objectSetFactory(objectType, clientCtx, {\n type: \"union\",\n objectSets: [\n objectSet,\n ...objectSets.map(os => objectSetDefinitions.get(os)),\n ],\n });\n },\n intersect: (...objectSets) => {\n return clientCtx.objectSetFactory(objectType, clientCtx, {\n type: \"intersect\",\n objectSets: [\n objectSet,\n ...objectSets.map(os => objectSetDefinitions.get(os)),\n ],\n });\n },\n subtract: (...objectSets) => {\n return clientCtx.objectSetFactory(objectType, clientCtx, {\n type: \"subtract\",\n objectSets: [\n objectSet,\n ...objectSets.map(os => objectSetDefinitions.get(os)),\n ],\n });\n },\n asyncIter: async function* (args) {\n let $nextPageToken = undefined;\n do {\n const result = await fetchPageInternal(augmentRequestContext(clientCtx, _ => ({ finalMethodCall: \"asyncIter\" })), objectType, objectSet, { ...args, $nextPageToken });\n $nextPageToken = result.nextPageToken;\n for (const obj of result.data) {\n yield obj;\n }\n } while ($nextPageToken != null);\n },\n fetchOne: (isObjectTypeDefinition(objectType)\n ? async (primaryKey, options) => {\n return await fetchSingle(augmentRequestContext(clientCtx, _ => ({ finalMethodCall: \"fetchOne\" })), objectType, options, await createWithPk(clientCtx, objectType, objectSet, primaryKey));\n }\n : undefined),\n fetchOneWithErrors: (isObjectTypeDefinition(objectType)\n ? async (primaryKey, options) => {\n return await fetchSingleWithErrors(augmentRequestContext(clientCtx, _ => ({ finalMethodCall: \"fetchOneWithErrors\" })), objectType, options, await createWithPk(clientCtx, objectType, objectSet, primaryKey));\n }\n : undefined),\n $objectSetInternals: {\n def: objectType,\n },\n };\n function createSearchAround(link) {\n return () => {\n return clientCtx.objectSetFactory(objectType, clientCtx, {\n type: \"searchAround\",\n objectSet,\n link,\n });\n };\n }\n objectSetDefinitions.set(base, objectSet);\n // we are using a type assertion because the marker symbol defined in BaseObjectSet isn't actually used\n // at runtime.\n return base;\n}\nasync function createWithPk(clientCtx, objectType, objectSet, primaryKey) {\n const objDef = await clientCtx.ontologyProvider.getObjectDefinition(objectType.apiName);\n const withPk = {\n type: \"filter\",\n objectSet: objectSet,\n where: {\n type: \"eq\",\n field: objDef.primaryKeyApiName,\n value: primaryKey,\n },\n };\n return withPk;\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1,4 +1,4 @@
1
- import type { SharedClientContext } from "@osdk/shared.client";
1
+ import type { SharedClientContext } from "@osdk/shared.client2";
2
2
  import type { ConjureContext } from "conjure-lite";
3
3
  export declare function makeConjureContext({ baseUrl, fetch: fetchFn, tokenProvider }: SharedClientContext, servicePath: string): ConjureContext;
4
4
  //# sourceMappingURL=makeConjureContext.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"makeConjureContext.d.ts","sourceRoot":"","sources":["../../../src/ontology/makeConjureContext.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC/D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAEnD,wBAAgB,kBAAkB,CAChC,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,aAAa,EAAE,EAAE,mBAAmB,EAC/D,WAAW,EAAE,MAAM,GAClB,cAAc,CAOhB"}
1
+ {"version":3,"file":"makeConjureContext.d.ts","sourceRoot":"","sources":["../../../src/ontology/makeConjureContext.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAEnD,wBAAgB,kBAAkB,CAChC,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,aAAa,EAAE,EAAE,mBAAmB,EAC/D,WAAW,EAAE,MAAM,GAClB,cAAc,CAOhB"}
@@ -204,7 +204,6 @@ function requiresConversion(dataType) {
204
204
  case "float":
205
205
  case "integer":
206
206
  case "long":
207
- case "object": // JSON encoded primary key
208
207
  case "string":
209
208
  case "timestamp":
210
209
  return false;
@@ -218,6 +217,7 @@ function requiresConversion(dataType) {
218
217
  case "objectSet":
219
218
  case "twoDimensionalAggregation":
220
219
  case "threeDimensionalAggregation":
220
+ case "object":
221
221
  return true;
222
222
  default:
223
223
  return false;
@@ -1 +1 @@
1
- {"version":3,"file":"applyQuery.js","names":["OntologiesV2","createAttachmentFromRid","createObjectSet","addUserAgentAndRequestContextHeaders","augmentRequestContext","toDataValueQueries","applyQuery","client","query","params","qd","ontologyProvider","getQueryDefinition","apiName","response","Queries","execute","finalMethodCall","ontologyRid","parameters","remapQueryParams","objectOutputDefs","getRequiredDefinitions","output","remappedResponse","remapQueryResponse","value","paramTypes","parameterMap","key","Object","entries","responseDataType","responseValue","definitions","nullable","undefined","Error","multiplicity","withoutMultiplicity","i","length","type","set","def","get","object","createQueryObjectResponse","objectSet","objectSets","objectType","reference","subtype","struct","requiresConversion","result","groups","push","subResult","subKey","dataType","Map","objectDef","getObjectDefinition","values","some","primaryKey","$apiName","$title","$objectType","$primaryKey"],"sources":["applyQuery.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 * as OntologiesV2 from \"@osdk/internal.foundry.ontologiesv2\";\nimport { createAttachmentFromRid } from \"../createAttachmentFromRid.js\";\nimport { createObjectSet } from \"../objectSet/createObjectSet.js\";\nimport { addUserAgentAndRequestContextHeaders } from \"../util/addUserAgentAndRequestContextHeaders.js\";\nimport { augmentRequestContext } from \"../util/augmentRequestContext.js\";\nimport { toDataValueQueries } from \"../util/toDataValueQueries.js\";\nexport async function applyQuery(client, query, params) {\n const qd = await client.ontologyProvider.getQueryDefinition(query.apiName);\n const response = await OntologiesV2.Queries.execute(addUserAgentAndRequestContextHeaders(augmentRequestContext(client, _ => ({ finalMethodCall: \"applyQuery\" })), query), await client.ontologyRid, query.apiName, {\n parameters: params\n ? await remapQueryParams(params, client, qd.parameters)\n : {},\n });\n const objectOutputDefs = await getRequiredDefinitions(qd.output, client);\n const remappedResponse = await remapQueryResponse(client, qd.output, response.value, objectOutputDefs);\n return remappedResponse;\n}\nasync function remapQueryParams(params, client, paramTypes) {\n const parameterMap = {};\n for (const [key, value] of Object.entries(params)) {\n parameterMap[key] = await toDataValueQueries(value, client, paramTypes[key]);\n }\n return parameterMap;\n}\nasync function remapQueryResponse(client, responseDataType, responseValue, definitions) {\n // handle null responses\n if (responseValue == null) {\n if (responseDataType.nullable) {\n return undefined;\n }\n else {\n throw new Error(\"Got null response when nullable was not allowed\");\n }\n }\n if (responseDataType.multiplicity != null\n && responseDataType.multiplicity !== false) {\n const withoutMultiplicity = { ...responseDataType, multiplicity: false };\n for (let i = 0; i < responseValue.length; i++) {\n responseValue[i] = await remapQueryResponse(client, withoutMultiplicity, responseValue[i], definitions);\n }\n return responseValue;\n }\n switch (responseDataType.type) {\n case \"union\": {\n throw new Error(\"Union return types are not yet supported\");\n }\n case \"set\": {\n for (let i = 0; i < responseValue.length; i++) {\n responseValue[i] = await remapQueryResponse(client, responseDataType.set, responseValue[i], definitions);\n }\n return responseValue;\n }\n case \"attachment\": {\n return createAttachmentFromRid(client, responseValue);\n }\n case \"object\": {\n const def = definitions.get(responseDataType.object);\n if (!def) {\n throw new Error(`Missing definition for ${responseDataType.object}`);\n }\n return createQueryObjectResponse(responseValue, def);\n }\n case \"objectSet\": {\n const def = definitions.get(responseDataType.objectSet);\n if (!def) {\n throw new Error(`Missing definition for ${responseDataType.objectSet}`);\n }\n if (typeof responseValue === \"string\") {\n return createObjectSet(def, client, {\n type: \"intersect\",\n objectSets: [\n { type: \"base\", objectType: responseDataType.objectSet },\n { type: \"reference\", reference: responseValue },\n ],\n });\n }\n return createObjectSet(def, client, responseValue);\n }\n case \"struct\": {\n // figure out what keys need to be fixed up\n for (const [key, subtype] of Object.entries(responseDataType.struct)) {\n if (requiresConversion(subtype)) {\n responseValue[key] = await remapQueryResponse(client, subtype, responseValue[key], definitions);\n }\n }\n return responseValue;\n }\n case \"twoDimensionalAggregation\": {\n const result = [];\n for (const { key, value } of responseValue.groups) {\n result.push({ key, value });\n }\n return result;\n }\n case \"threeDimensionalAggregation\": {\n const result = [];\n for (const { key, groups } of responseValue.groups) {\n const subResult = [];\n for (const { key: subKey, value } of groups) {\n subResult.push({ key: subKey, value });\n }\n result.push({ key, groups: subResult });\n }\n return result;\n }\n }\n return responseValue;\n}\nasync function getRequiredDefinitions(dataType, client) {\n const result = new Map();\n switch (dataType.type) {\n case \"objectSet\": {\n const objectDef = await client.ontologyProvider.getObjectDefinition(dataType.objectSet);\n result.set(dataType.objectSet, objectDef);\n break;\n }\n case \"object\": {\n const objectDef = await client.ontologyProvider.getObjectDefinition(dataType.object);\n result.set(dataType.object, objectDef);\n break;\n }\n case \"set\": {\n return getRequiredDefinitions(dataType.set, client);\n }\n case \"struct\": {\n for (const value of Object.values(dataType.struct)) {\n for (const [type, objectDef] of await getRequiredDefinitions(value, client)) {\n result.set(type, objectDef);\n }\n }\n break;\n }\n case \"attachment\":\n case \"boolean\":\n case \"date\":\n case \"double\":\n case \"float\":\n case \"integer\":\n case \"long\":\n case \"object\":\n case \"string\":\n case \"threeDimensionalAggregation\":\n case \"timestamp\":\n case \"twoDimensionalAggregation\":\n case \"union\":\n break;\n }\n return result;\n}\nfunction requiresConversion(dataType) {\n switch (dataType.type) {\n case \"boolean\":\n case \"date\":\n case \"double\":\n case \"float\":\n case \"integer\":\n case \"long\":\n case \"object\": // JSON encoded primary key\n case \"string\":\n case \"timestamp\":\n return false;\n case \"union\":\n return true;\n case \"struct\":\n return Object.values(dataType.struct).some(requiresConversion);\n case \"set\":\n return requiresConversion(dataType.set);\n case \"attachment\":\n case \"objectSet\":\n case \"twoDimensionalAggregation\":\n case \"threeDimensionalAggregation\":\n return true;\n default:\n return false;\n }\n}\nexport function createQueryObjectResponse(primaryKey, objectDef) {\n return {\n $apiName: objectDef.apiName,\n $title: undefined,\n $objectType: objectDef.apiName,\n $primaryKey: primaryKey,\n };\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"applyQuery.js","names":["OntologiesV2","createAttachmentFromRid","createObjectSet","addUserAgentAndRequestContextHeaders","augmentRequestContext","toDataValueQueries","applyQuery","client","query","params","qd","ontologyProvider","getQueryDefinition","apiName","response","Queries","execute","finalMethodCall","ontologyRid","parameters","remapQueryParams","objectOutputDefs","getRequiredDefinitions","output","remappedResponse","remapQueryResponse","value","paramTypes","parameterMap","key","Object","entries","responseDataType","responseValue","definitions","nullable","undefined","Error","multiplicity","withoutMultiplicity","i","length","type","set","def","get","object","createQueryObjectResponse","objectSet","objectSets","objectType","reference","subtype","struct","requiresConversion","result","groups","push","subResult","subKey","dataType","Map","objectDef","getObjectDefinition","values","some","primaryKey","$apiName","$title","$objectType","$primaryKey"],"sources":["applyQuery.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 * as OntologiesV2 from \"@osdk/internal.foundry.ontologiesv2\";\nimport { createAttachmentFromRid } from \"../createAttachmentFromRid.js\";\nimport { createObjectSet } from \"../objectSet/createObjectSet.js\";\nimport { addUserAgentAndRequestContextHeaders } from \"../util/addUserAgentAndRequestContextHeaders.js\";\nimport { augmentRequestContext } from \"../util/augmentRequestContext.js\";\nimport { toDataValueQueries } from \"../util/toDataValueQueries.js\";\nexport async function applyQuery(client, query, params) {\n const qd = await client.ontologyProvider.getQueryDefinition(query.apiName);\n const response = await OntologiesV2.Queries.execute(addUserAgentAndRequestContextHeaders(augmentRequestContext(client, _ => ({ finalMethodCall: \"applyQuery\" })), query), await client.ontologyRid, query.apiName, {\n parameters: params\n ? await remapQueryParams(params, client, qd.parameters)\n : {},\n });\n const objectOutputDefs = await getRequiredDefinitions(qd.output, client);\n const remappedResponse = await remapQueryResponse(client, qd.output, response.value, objectOutputDefs);\n return remappedResponse;\n}\nasync function remapQueryParams(params, client, paramTypes) {\n const parameterMap = {};\n for (const [key, value] of Object.entries(params)) {\n parameterMap[key] = await toDataValueQueries(value, client, paramTypes[key]);\n }\n return parameterMap;\n}\nasync function remapQueryResponse(client, responseDataType, responseValue, definitions) {\n // handle null responses\n if (responseValue == null) {\n if (responseDataType.nullable) {\n return undefined;\n }\n else {\n throw new Error(\"Got null response when nullable was not allowed\");\n }\n }\n if (responseDataType.multiplicity != null\n && responseDataType.multiplicity !== false) {\n const withoutMultiplicity = { ...responseDataType, multiplicity: false };\n for (let i = 0; i < responseValue.length; i++) {\n responseValue[i] = await remapQueryResponse(client, withoutMultiplicity, responseValue[i], definitions);\n }\n return responseValue;\n }\n switch (responseDataType.type) {\n case \"union\": {\n throw new Error(\"Union return types are not yet supported\");\n }\n case \"set\": {\n for (let i = 0; i < responseValue.length; i++) {\n responseValue[i] = await remapQueryResponse(client, responseDataType.set, responseValue[i], definitions);\n }\n return responseValue;\n }\n case \"attachment\": {\n return createAttachmentFromRid(client, responseValue);\n }\n case \"object\": {\n const def = definitions.get(responseDataType.object);\n if (!def) {\n throw new Error(`Missing definition for ${responseDataType.object}`);\n }\n return createQueryObjectResponse(responseValue, def);\n }\n case \"objectSet\": {\n const def = definitions.get(responseDataType.objectSet);\n if (!def) {\n throw new Error(`Missing definition for ${responseDataType.objectSet}`);\n }\n if (typeof responseValue === \"string\") {\n return createObjectSet(def, client, {\n type: \"intersect\",\n objectSets: [\n { type: \"base\", objectType: responseDataType.objectSet },\n { type: \"reference\", reference: responseValue },\n ],\n });\n }\n return createObjectSet(def, client, responseValue);\n }\n case \"struct\": {\n // figure out what keys need to be fixed up\n for (const [key, subtype] of Object.entries(responseDataType.struct)) {\n if (requiresConversion(subtype)) {\n responseValue[key] = await remapQueryResponse(client, subtype, responseValue[key], definitions);\n }\n }\n return responseValue;\n }\n case \"twoDimensionalAggregation\": {\n const result = [];\n for (const { key, value } of responseValue.groups) {\n result.push({ key, value });\n }\n return result;\n }\n case \"threeDimensionalAggregation\": {\n const result = [];\n for (const { key, groups } of responseValue.groups) {\n const subResult = [];\n for (const { key: subKey, value } of groups) {\n subResult.push({ key: subKey, value });\n }\n result.push({ key, groups: subResult });\n }\n return result;\n }\n }\n return responseValue;\n}\nasync function getRequiredDefinitions(dataType, client) {\n const result = new Map();\n switch (dataType.type) {\n case \"objectSet\": {\n const objectDef = await client.ontologyProvider.getObjectDefinition(dataType.objectSet);\n result.set(dataType.objectSet, objectDef);\n break;\n }\n case \"object\": {\n const objectDef = await client.ontologyProvider.getObjectDefinition(dataType.object);\n result.set(dataType.object, objectDef);\n break;\n }\n case \"set\": {\n return getRequiredDefinitions(dataType.set, client);\n }\n case \"struct\": {\n for (const value of Object.values(dataType.struct)) {\n for (const [type, objectDef] of await getRequiredDefinitions(value, client)) {\n result.set(type, objectDef);\n }\n }\n break;\n }\n case \"attachment\":\n case \"boolean\":\n case \"date\":\n case \"double\":\n case \"float\":\n case \"integer\":\n case \"long\":\n case \"object\":\n case \"string\":\n case \"threeDimensionalAggregation\":\n case \"timestamp\":\n case \"twoDimensionalAggregation\":\n case \"union\":\n break;\n }\n return result;\n}\nfunction requiresConversion(dataType) {\n switch (dataType.type) {\n case \"boolean\":\n case \"date\":\n case \"double\":\n case \"float\":\n case \"integer\":\n case \"long\":\n case \"string\":\n case \"timestamp\":\n return false;\n case \"union\":\n return true;\n case \"struct\":\n return Object.values(dataType.struct).some(requiresConversion);\n case \"set\":\n return requiresConversion(dataType.set);\n case \"attachment\":\n case \"objectSet\":\n case \"twoDimensionalAggregation\":\n case \"threeDimensionalAggregation\":\n case \"object\":\n return true;\n default:\n return false;\n }\n}\nexport function createQueryObjectResponse(primaryKey, objectDef) {\n return {\n $apiName: objectDef.apiName,\n $title: undefined,\n $objectType: objectDef.apiName,\n $primaryKey: primaryKey,\n };\n}\n"],"mappings":"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","ignoreList":[]}
@@ -13,7 +13,7 @@
13
13
  * See the License for the specific language governing permissions and
14
14
  * limitations under the License.
15
15
  */
16
- import { $ontologyRid, $Queries, acceptsThreeDimensionalAggregationFunction, acceptsTwoDimensionalAggregationFunction, addOne, Employee, incrementPersonAge, queryAcceptsObject, queryAcceptsObjectSets, returnsDate, returnsTimestamp, threeDimensionalAggregationFunction, twoDimensionalAggregationFunction } from "@osdk/client.test.ontology";
16
+ import { $ontologyRid, $Queries, acceptsThreeDimensionalAggregationFunction, acceptsTwoDimensionalAggregationFunction, addOne, Employee, incrementPersonAge, incrementPersonAgeComplex, queryAcceptsObject, queryAcceptsObjectSets, returnsDate, returnsTimestamp, threeDimensionalAggregationFunction, twoDimensionalAggregationFunction } from "@osdk/client.test.ontology";
17
17
  import { apiServer } from "@osdk/shared.test";
18
18
  import { afterAll, beforeAll, describe, expect, expectTypeOf, it } from "vitest";
19
19
  import { createClient } from "../createClient.js";
@@ -79,6 +79,27 @@ describe("queries", () => {
79
79
  age: 43
80
80
  });
81
81
  });
82
+ it("returns and accepts complex structs property", async () => {
83
+ const employee = await client(Employee).fetchOne(50030);
84
+ const result = await client(incrementPersonAgeComplex).executeFunction({
85
+ person: {
86
+ firstName: "John",
87
+ lastName: "Doe",
88
+ age: 42,
89
+ object: employee
90
+ }
91
+ });
92
+ expect(result).toEqual({
93
+ firstName: "John",
94
+ lastName: "Doe",
95
+ age: 43,
96
+ object: {
97
+ $apiName: "Employee",
98
+ $objectType: "Employee",
99
+ $primaryKey: 50031
100
+ }
101
+ });
102
+ });
82
103
  it("two dimensional aggregation response works", async () => {
83
104
  const result = await client(twoDimensionalAggregationFunction).executeFunction();
84
105
  expect(result).toEqual([{
@@ -163,9 +184,16 @@ describe("queries", () => {
163
184
  groups: []
164
185
  }]);
165
186
  });
187
+ it("accepts and returns objects", async () => {
188
+ const employeeObjectSet = client(Employee);
189
+ await client(queryAcceptsObjectSets).executeFunction({
190
+ objectSet: employeeObjectSet
191
+ });
192
+ expectTypeOf().toMatchTypeOf();
193
+ });
166
194
  it("queries are enumerable", async () => {
167
195
  const queries = Object.keys($Queries);
168
- expect(queries).toStrictEqual(["acceptsThreeDimensionalAggregationFunction", "acceptsTwoDimensionalAggregationFunction", "addOne", "incrementPersonAge", "queryAcceptsObject", "queryAcceptsObjectSets", "queryTypeReturnsArray", "returnsDate", "returnsObject", "returnsTimestamp", "threeDimensionalAggregationFunction", "twoDimensionalAggregationFunction"]);
196
+ expect(queries).toStrictEqual(["acceptsThreeDimensionalAggregationFunction", "acceptsTwoDimensionalAggregationFunction", "addOne", "incrementPersonAge", "incrementPersonAgeComplex", "queryAcceptsObject", "queryAcceptsObjectSets", "queryTypeReturnsArray", "returnsDate", "returnsObject", "returnsTimestamp", "threeDimensionalAggregationFunction", "twoDimensionalAggregationFunction"]);
169
197
  });
170
198
  it("queries work with arrays", async () => {
171
199
  const result = await client($Queries.queryTypeReturnsArray).executeFunction({