@osdk/client 0.9.0 → 0.11.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (91) hide show
  1. package/build/js/chunk-GOBQUVQZ.mjs +1138 -0
  2. package/build/js/chunk-GOBQUVQZ.mjs.map +1 -0
  3. package/build/js/chunk-LK4VDWCG.cjs +1151 -0
  4. package/build/js/chunk-LK4VDWCG.cjs.map +1 -0
  5. package/build/js/index.cjs +101 -636
  6. package/build/js/index.cjs.map +1 -1
  7. package/build/js/index.mjs +99 -634
  8. package/build/js/index.mjs.map +1 -1
  9. package/build/js/public/objects.cjs +5 -5
  10. package/build/js/public/objects.mjs +1 -1
  11. package/build/types/Client.d.ts +11 -5
  12. package/build/types/MinimalClientContext.d.ts +13 -0
  13. package/build/types/ObjectSetCreator.d.ts +6 -4
  14. package/build/types/OsdkObject.d.ts +1 -1
  15. package/build/types/OsdkObjectFrom.d.ts +17 -16
  16. package/build/types/actions/Actions.d.ts +5 -4
  17. package/build/types/actions/applyAction.d.ts +2 -2
  18. package/build/types/actions/createActionInvoker.d.ts +5 -4
  19. package/build/types/createClient.d.ts +5 -2
  20. package/build/types/createMinimalClient.d.ts +3 -0
  21. package/build/types/definitions/LinkDefinitions.d.ts +8 -12
  22. package/build/types/generatedNoCheck/Ontology.d.ts +5 -5
  23. package/build/types/generatedNoCheck/index.d.ts +3 -0
  24. package/build/types/generatedNoCheck/ontology/actions/actionTakesAttachment.d.ts +1 -1
  25. package/build/types/generatedNoCheck/ontology/actions/actionTakesObjectSet.d.ts +2 -2
  26. package/build/types/generatedNoCheck/ontology/actions/createOffice.d.ts +4 -4
  27. package/build/types/generatedNoCheck/ontology/actions/createOfficeAndEmployee.d.ts +5 -5
  28. package/build/types/generatedNoCheck/ontology/actions/moveOffice.d.ts +4 -4
  29. package/build/types/generatedNoCheck/ontology/actions/promoteEmployee.d.ts +3 -3
  30. package/build/types/generatedNoCheck/ontology/actions/promoteEmployeeObject.d.ts +4 -4
  31. package/build/types/generatedNoCheck/ontology/objects/Employee.d.ts +13 -37
  32. package/build/types/generatedNoCheck/ontology/objects/ObjectWithTimestampPrimaryKey.d.ts +6 -15
  33. package/build/types/generatedNoCheck/ontology/objects/Office.d.ts +10 -29
  34. package/build/types/generatedNoCheck/ontology/objects/equipment.d.ts +6 -16
  35. package/build/types/generatedNoCheck/ontology/objects/objectTypeWithAllPropertyTypes.d.ts +34 -155
  36. package/build/types/index.d.ts +3 -1
  37. package/build/types/object/Cache.d.ts +33 -0
  38. package/build/types/object/aggregate.d.ts +11 -0
  39. package/build/types/object/convertWireToOsdkObjects.d.ts +2 -3
  40. package/build/types/object/fetchPage.d.ts +22 -0
  41. package/build/types/object/fetchPage.test.d.ts +1 -0
  42. package/build/types/object/fetchSingle.d.ts +6 -0
  43. package/build/types/object/index.d.ts +2 -2
  44. package/build/types/objectSet/LinkUtils.d.ts +3 -0
  45. package/build/types/objectSet/ObjectSet.d.ts +18 -10
  46. package/build/types/objectSet/ObjectSetListenerWebsocket.d.ts +4 -4
  47. package/build/types/objectSet/createObjectSet.d.ts +4 -3
  48. package/build/types/ontology/OntologyProvider.d.ts +20 -0
  49. package/build/types/ontology/loadFullObjectMetadata.d.ts +3 -0
  50. package/build/types/ontology/providers/StandardOntologyProvider.d.ts +5 -0
  51. package/build/types/ontology/providers/StandardOntologyProvider.test.d.ts +1 -0
  52. package/build/types/query/WhereClause.d.ts +2 -1
  53. package/build/types/query/aggregations/AggregatableKeys.d.ts +1 -1
  54. package/build/types/query/aggregations/AggregateOpts.d.ts +3 -3
  55. package/build/types/query/aggregations/AggregationResultsWithGroups.d.ts +11 -7
  56. package/build/types/query/aggregations/AggregationResultsWithoutGroups.d.ts +4 -1
  57. package/build/types/query/aggregations/AggregationsClause.d.ts +5 -2
  58. package/build/types/query/aggregations/AggregationsClause.test.d.ts +2 -0
  59. package/build/types/query/aggregations/AggregationsResults.d.ts +3 -2
  60. package/build/types/query/aggregations/GroupByClause.d.ts +8 -0
  61. package/build/types/query/aggregations/GroupByClause.test.d.ts +1 -0
  62. package/build/types/query/aggregations/GroupByMapper.d.ts +7 -1
  63. package/build/types/util/test/mockOntology.d.ts +3 -0
  64. package/changelog/0.10.0/pr-74.v2.yml +5 -0
  65. package/changelog/0.10.0/pr-78.v2.yml +5 -0
  66. package/changelog/0.10.0/pr-79.v2.yml +5 -0
  67. package/changelog/0.11.0/pr-100.v2.yml +5 -0
  68. package/changelog/0.11.0/pr-67.v2.yml +5 -0
  69. package/changelog/0.11.0/pr-83.v2.yml +5 -0
  70. package/changelog/0.11.0/pr-84.v2.yml +5 -0
  71. package/changelog/0.11.0/pr-86.v2.yml +5 -0
  72. package/changelog/0.11.0/pr-88.v2.yml +5 -0
  73. package/changelog/0.11.0/pr-89.v2.yml +5 -0
  74. package/changelog/0.11.0/pr-91.v2.yml +5 -0
  75. package/changelog/0.11.0/pr-95.v2.yml +5 -0
  76. package/changelog/0.11.0/pr-96.v2.yml +5 -0
  77. package/changelog/0.11.0/pr-99.v2.yml +5 -0
  78. package/package.json +7 -5
  79. package/build/js/chunk-BQNFWSLL.mjs +0 -419
  80. package/build/js/chunk-BQNFWSLL.mjs.map +0 -1
  81. package/build/js/chunk-KAL57TC5.cjs +0 -430
  82. package/build/js/chunk-KAL57TC5.cjs.map +0 -1
  83. package/build/types/createCachedOntologyTransform.d.ts +0 -7
  84. package/build/types/object/aggregateOrThrow.d.ts +0 -6
  85. package/build/types/object/fetchPageOrThrow.d.ts +0 -13
  86. package/build/types/object/followLinkOrThrow.d.ts +0 -5
  87. package/build/types/object/getLinkedObjectByPkOrThrow.d.ts +0 -4
  88. package/build/types/object/getLinkedObjectOrThrow.d.ts +0 -7
  89. package/build/types/object/pageLinkedObjectsOrThrow.d.ts +0 -7
  90. package/build/types/objectSet/LinkTypesFrom.d.ts +0 -2
  91. /package/build/types/object/{aggregateOrThrow.test.d.ts → aggregate.test.d.ts} +0 -0
@@ -1,16 +1,14 @@
1
1
  'use strict';
2
2
 
3
- var chunkKAL57TC5_cjs = require('./chunk-KAL57TC5.cjs');
4
- var shared_net = require('@osdk/shared.net');
3
+ var chunkLK4VDWCG_cjs = require('./chunk-LK4VDWCG.cjs');
5
4
  var requests = require('@osdk/gateway/requests');
6
- var WebSocket = require('isomorphic-ws');
7
- var invariant = require('tiny-invariant');
8
- var conjureLite = require('conjure-lite');
5
+ var shared_net = require('@osdk/shared.net');
6
+ var deepEqual = require('fast-deep-equal');
7
+ var generatorConverters = require('@osdk/generator-converters');
9
8
 
10
9
  function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
11
10
 
12
- var WebSocket__default = /*#__PURE__*/_interopDefault(WebSocket);
13
- var invariant__default = /*#__PURE__*/_interopDefault(invariant);
11
+ var deepEqual__default = /*#__PURE__*/_interopDefault(deepEqual);
14
12
 
15
13
  // src/util/isOntologyObjectV2.ts
16
14
  function isOntologyObjectV2(o) {
@@ -31,7 +29,7 @@ function toDataValue(value) {
31
29
  if (Array.isArray(value) || value instanceof Set) {
32
30
  return Array.from(value, toDataValue);
33
31
  }
34
- if (chunkKAL57TC5_cjs.isAttachment(value)) {
32
+ if (chunkLK4VDWCG_cjs.isAttachment(value)) {
35
33
  return value.rid;
36
34
  }
37
35
  if (isOntologyObjectV2(value)) {
@@ -93,23 +91,26 @@ function remapActionParams(params) {
93
91
  }
94
92
 
95
93
  // src/actions/createActionInvoker.ts
96
- function createActionInvoker(client) {
94
+ function createActionInvoker(client, action) {
95
+ return function(...args) {
96
+ return applyAction(client, action, ...args);
97
+ };
98
+ }
99
+ function createOldActionInvoker(client, ontology) {
97
100
  const proxy = new Proxy({}, {
98
101
  get: (_target, p, _receiver) => {
99
102
  if (typeof p === "string") {
100
- return function(...args) {
101
- return applyAction(client, client.ontology.actions[p], ...args);
102
- };
103
+ return createActionInvoker(client, ontology.actions[p]);
103
104
  }
104
105
  return void 0;
105
106
  },
106
107
  ownKeys(_target) {
107
- return Object.keys(client.ontology.actions);
108
+ return Object.keys(ontology.actions);
108
109
  },
109
110
  getOwnPropertyDescriptor(_target, p) {
110
111
  if (typeof p === "string") {
111
112
  return {
112
- enumerable: client.ontology.actions[p] != null,
113
+ enumerable: ontology.actions[p] != null,
113
114
  configurable: true,
114
115
  value: proxy[p]
115
116
  };
@@ -118,666 +119,129 @@ function createActionInvoker(client) {
118
119
  });
119
120
  return proxy;
120
121
  }
121
- async function createTemporaryObjectSet(ctx, request) {
122
- return conjureLite.conjureFetch(ctx, `/objectSets/temporary`, "POST", request);
123
- }
124
- async function batchEnableWatcher(ctx, request) {
125
- return conjureLite.conjureFetch(ctx, `/object-set-watcher/batchEnableWatcher`, "POST", request);
126
- }
127
- async function loadAllOntologies(ctx, request) {
128
- return conjureLite.conjureFetch(ctx, `/ontology/ontology/ontologies/load/all`, "POST", request);
122
+ async function loadAllOutgoingLinkTypes(client, objtype) {
123
+ const linkTypes = [];
124
+ let pageToken;
125
+ do {
126
+ const result = await requests.listOutgoingLinkTypesV2(shared_net.createOpenApiRequest(client.stack, client.fetch), client.ontology.metadata.ontologyApiName, objtype, {
127
+ pageToken
128
+ });
129
+ pageToken = result.nextPageToken;
130
+ linkTypes.push(...result.data);
131
+ } while (pageToken != null);
132
+ return linkTypes;
129
133
  }
130
- async function loadOntologyEntities(ctx, request) {
131
- return conjureLite.conjureFetch(ctx, `/ontology/ontology/loadEntities`, "POST", request);
134
+ async function loadFullObjectMetadata(client, objtype) {
135
+ const {
136
+ ontologyApiName
137
+ } = client.ontology.metadata;
138
+ const [objectType, linkTypes] = await Promise.all([requests.getObjectTypeV2(shared_net.createOpenApiRequest(client.stack, client.fetch), ontologyApiName, objtype), loadAllOutgoingLinkTypes(client, objtype)]);
139
+ const full = {
140
+ implementsInterfaces: [],
141
+ // FIXME
142
+ linkTypes,
143
+ objectType,
144
+ sharedPropertyTypeMapping: {}
145
+ // FIXME
146
+ };
147
+ return generatorConverters.wireObjectTypeFullMetadataToSdkObjectTypeDefinition(full, true);
132
148
  }
133
149
 
134
- // src/objectSet/toConjureObjectSet.ts
135
- function toConjureObjectSet(objectSet, objectPropertyMapping) {
136
- switch (objectSet.type) {
137
- case "base":
138
- return {
139
- type: "base",
140
- base: {
141
- objectTypeId: objectPropertyMapping.id
142
- }
143
- };
144
- case "static":
145
- return {
146
- type: "static",
147
- static: {
148
- objectRids: objectSet.objects,
149
- provenance: void 0
150
- }
151
- };
152
- case "reference":
153
- return {
154
- type: "referenced",
155
- referenced: {
156
- objectSetRid: objectSet.reference
157
- }
158
- };
159
- case "filter":
160
- return {
161
- type: "filtered",
162
- filtered: {
163
- objectSet: toConjureObjectSet(objectSet.objectSet, objectPropertyMapping),
164
- runtimeDerivedProperties: void 0,
165
- filter: mapWhereClauseToObjectSetFilter(objectSet.where, objectPropertyMapping)
166
- }
167
- };
168
- case "union":
169
- return {
170
- type: "unioned",
171
- unioned: {
172
- objectSets: objectSet.objectSets.map((os) => toConjureObjectSet(os, objectPropertyMapping))
173
- }
174
- };
175
- case "intersect":
176
- return {
177
- type: "intersected",
178
- intersected: {
179
- objectSets: objectSet.objectSets.map((os) => toConjureObjectSet(os, objectPropertyMapping))
180
- }
181
- };
182
- case "subtract":
183
- return {
184
- type: "subtracted",
185
- subtracted: {
186
- objectSets: objectSet.objectSets.map((os) => toConjureObjectSet(os, objectPropertyMapping))
187
- }
188
- };
189
- case "searchAround":
190
- throw new Error("not implemented");
191
- }
192
- }
193
- async function getObjectSetBaseType(objectSet) {
194
- switch (objectSet.type) {
195
- case "base":
196
- return objectSet.objectType;
197
- case "static":
198
- throw new Error("not implemented");
199
- case "reference":
200
- throw new Error("not implemented");
201
- case "filter":
202
- return getObjectSetBaseType(objectSet.objectSet);
203
- case "union":
204
- return getObjectSetBaseType(objectSet.objectSets[0]);
205
- case "intersect":
206
- return getObjectSetBaseType(objectSet.objectSets[0]);
207
- case "subtract":
208
- return getObjectSetBaseType(objectSet.objectSets[0]);
209
- case "searchAround":
210
- throw new Error("not implemented");
211
- }
212
- }
213
- function mapWhereClauseToObjectSetFilter(objectSetFilter, propertyMapping) {
214
- switch (objectSetFilter.type) {
215
- case "lt":
216
- return {
217
- type: "range",
218
- range: {
219
- propertyId: propertyMapping.propertyApiNameToIdMapping[objectSetFilter.field],
220
- lt: objectSetFilter.value,
221
- lte: void 0,
222
- gt: void 0,
223
- gte: void 0
224
- }
225
- };
226
- case "gt":
227
- return {
228
- type: "range",
229
- range: {
230
- propertyId: propertyMapping.propertyApiNameToIdMapping[objectSetFilter.field],
231
- gt: objectSetFilter.value,
232
- lte: void 0,
233
- lt: void 0,
234
- gte: void 0
235
- }
236
- };
237
- case "lte":
238
- return {
239
- type: "range",
240
- range: {
241
- propertyId: propertyMapping.propertyApiNameToIdMapping[objectSetFilter.field],
242
- lte: objectSetFilter.value,
243
- lt: void 0,
244
- gt: void 0,
245
- gte: void 0
246
- }
247
- };
248
- case "gte":
249
- return {
250
- type: "range",
251
- range: {
252
- propertyId: propertyMapping.propertyApiNameToIdMapping[objectSetFilter.field],
253
- gte: objectSetFilter.value,
254
- lt: void 0,
255
- lte: void 0,
256
- gt: void 0
257
- }
258
- };
259
- case "eq":
260
- return {
261
- type: "exactMatch",
262
- exactMatch: {
263
- propertyId: propertyMapping.propertyApiNameToIdMapping[objectSetFilter.field],
264
- terms: []
265
- }
266
- };
267
- case "and":
268
- return {
269
- type: "and",
270
- and: {
271
- filters: objectSetFilter.value.map((filter) => mapWhereClauseToObjectSetFilter(filter, propertyMapping))
272
- }
273
- };
274
- case "or":
275
- return {
276
- type: "or",
277
- or: {
278
- filters: objectSetFilter.value.map((filter) => mapWhereClauseToObjectSetFilter(filter, propertyMapping))
279
- }
280
- };
281
- case "isNull":
282
- return {
283
- type: "not",
284
- not: {
285
- filter: {
286
- type: "hasProperty",
287
- hasProperty: {
288
- propertyId: propertyMapping.propertyApiNameToIdMapping[objectSetFilter.field]
289
- }
150
+ // src/ontology/providers/StandardOntologyProvider.ts
151
+ var alwaysRevalidateDefault = false;
152
+ var createStandardOntologyProviderFactory = (client) => {
153
+ const alwaysRevalidate = client.alwaysRevalidate ?? alwaysRevalidateDefault;
154
+ return (client2) => {
155
+ const objectCache = chunkLK4VDWCG_cjs.createAsyncCache(loadFullObjectMetadata);
156
+ return {
157
+ getObjectOrInterfaceDefinition: async (apiName) => {
158
+ const n = alwaysRevalidate ? await loadFullObjectMetadata(client2, apiName) : await objectCache.get(client2, apiName);
159
+ if (alwaysRevalidate) {
160
+ const og = objectCache.getOrUndefined(client2, apiName);
161
+ if (deepEqual__default.default(og, n)) {
162
+ return og;
163
+ } else {
164
+ return objectCache.set(client2, apiName, n);
290
165
  }
291
166
  }
292
- };
293
- case "not":
294
- return {
295
- type: "not",
296
- not: {
297
- filter: mapWhereClauseToObjectSetFilter(objectSetFilter.value, propertyMapping)
298
- }
299
- };
300
- case "contains":
301
- case "startsWith":
302
- case "containsAllTermsInOrder":
303
- case "containsAnyTerm":
304
- case "containsAllTerms":
305
- case "withinDistanceOf":
306
- case "withinBoundingBox":
307
- case "intersectsBoundingBox":
308
- case "doesNotIntersectBoundingBox":
309
- case "withinPolygon":
310
- case "intersectsPolygon":
311
- case "doesNotIntersectPolygon":
312
- case "containsAllTermsInOrderPrefixLastTerm":
313
- throw new Error("not implemented");
314
- }
315
- }
316
-
317
- // src/objectSet/ObjectSetListenerWebsocket.ts
318
- var ONE_DAY_MS = 24 * 60 * 60 * 1e3;
319
- var MINIMUM_RECONNECT_DELAY_MS = 5 * 1e3;
320
- var ObjectSetListenerWebsocket = class _ObjectSetListenerWebsocket {
321
- static #instances = /* @__PURE__ */ new WeakMap();
322
- static getInstance(client) {
323
- let instance = _ObjectSetListenerWebsocket.#instances.get(client);
324
- if (instance == null) {
325
- instance = new _ObjectSetListenerWebsocket(client);
326
- _ObjectSetListenerWebsocket.#instances.set(client, instance);
327
- }
328
- return instance;
329
- }
330
- #ws;
331
- #lastWsConnect = 0;
332
- #client;
333
- /** map of listenerId to listener */
334
- #listeners = /* @__PURE__ */ new Map();
335
- /** map of subscriptionId to listenerId */
336
- #subscriptionToRequestId = /* @__PURE__ */ new Map();
337
- #conjureContext;
338
- #metadataContext;
339
- #ossContext;
340
- constructor(client) {
341
- this.#client = client;
342
- const stackUrl = new URL(client.stack);
343
- this.#conjureContext = {
344
- baseUrl: stackUrl.origin,
345
- servicePath: "/object-set-watcher/api",
346
- fetchFn: client.fetch,
347
- tokenProvider: async () => await client.tokenProvider()
348
- };
349
- this.#ossContext = {
350
- baseUrl: stackUrl.origin,
351
- servicePath: "/object-set-service/api",
352
- fetchFn: client.fetch,
353
- tokenProvider: async () => await client.tokenProvider()
354
- };
355
- this.#metadataContext = {
356
- baseUrl: stackUrl.origin,
357
- servicePath: "/ontology-metadata/api",
358
- fetchFn: client.fetch,
359
- tokenProvider: async () => await client.tokenProvider()
360
- };
361
- }
362
- subscribe(objectSet, listener) {
363
- const requestId = crypto.randomUUID();
364
- const expiry = setTimeout(() => {
365
- this.#expire(requestId);
366
- }, ONE_DAY_MS);
367
- this.#listeners.set(requestId, {
368
- listener,
369
- objectSet,
370
- expiry
371
- });
372
- this.#subscribe(requestId, objectSet);
373
- return () => {
374
- this.#unsubscribe(requestId);
375
- };
376
- }
377
- async #subscribe(requestId, objectSet) {
378
- try {
379
- const [temporaryObjectSet] = await Promise.all([
380
- // create a time-bounded object set representation for watching
381
- this.#createTemporaryObjectSet(objectSet),
382
- this.#ensureWebsocket(),
383
- // look up the object type's rid and ensure that we have enabled object set watcher for that rid
384
- // TODO ???
385
- getObjectSetBaseType(objectSet).then((baseType) => requests.getObjectTypeV2(shared_net.createOpenApiRequest(this.#client.stack, this.#client.fetch), this.#client.ontology.metadata.ontologyApiName, baseType)).then((objectType) => this.#enableObjectSetsWatcher([objectType.rid]))
386
- ]);
387
- if (!this.#listeners.has(requestId)) {
388
- return;
389
- }
390
- const subscribe = {
391
- id: requestId,
392
- requests: [{
393
- objectSet: temporaryObjectSet.objectSetRid,
394
- objectSetContext: {
395
- objectSetFilterContext: {
396
- parameterOverrides: {}
397
- }
398
- },
399
- watchAllLinks: false
400
- }]
401
- };
402
- this.#ws?.send(JSON.stringify(subscribe));
403
- } catch (error) {
404
- this.#getCallbackByRequestId(requestId, "onError")?.(error);
405
- }
406
- }
407
- #expire(requestId) {
408
- const state = this.#listeners.get(requestId);
409
- if (state) {
410
- const {
411
- subscriptionId,
412
- objectSet
413
- } = state;
414
- if (subscriptionId) {
415
- state.subscriptionId = void 0;
416
- this.#subscriptionToRequestId.delete(subscriptionId);
417
- }
418
- this.#subscribe(requestId, objectSet);
419
- }
420
- }
421
- #unsubscribe(requestId) {
422
- const data = this.#listeners.get(requestId);
423
- if (data == null) {
424
- return;
425
- }
426
- this.#listeners.delete(requestId);
427
- clearTimeout(data.expiry);
428
- const {
429
- subscriptionId
430
- } = data;
431
- if (subscriptionId != null) {
432
- this.#subscriptionToRequestId.delete(subscriptionId);
433
- }
434
- if (this.#listeners.size === 0) {
435
- this.#destroyWebsocket();
436
- }
437
- }
438
- async #ensureWebsocket() {
439
- if (this.#ws == null) {
440
- const {
441
- stack,
442
- tokenProvider
443
- } = this.#client;
444
- const base = new URL(stack);
445
- const url = `wss://${base.host}/object-set-watcher/ws/subscriptions`;
446
- const token = await tokenProvider();
447
- if (this.#ws == null) {
448
- const nextConnectTime = (this.#lastWsConnect ?? 0) + MINIMUM_RECONNECT_DELAY_MS;
449
- if (nextConnectTime > Date.now()) {
450
- await new Promise((resolve) => {
451
- setTimeout(resolve, nextConnectTime - Date.now());
452
- });
453
- }
454
- this.#lastWsConnect = Date.now();
455
- if (this.#ws == null) {
456
- this.#ws = new WebSocket__default.default(url, [`Bearer-${token}`]);
457
- this.#ws.addEventListener("close", this.#onClose);
458
- this.#ws.addEventListener("message", this.#onMessage);
459
- this.#ws.addEventListener("open", this.#onOpen);
460
- }
461
- }
462
- if (this.#ws.readyState === WebSocket__default.default.CONNECTING) {
463
- return new Promise((resolve, reject) => {
464
- this.#ws.addEventListener("open", () => {
465
- resolve();
466
- });
467
- this.#ws.addEventListener("error", (event) => {
468
- reject(new Error(event.toString()));
469
- });
470
- });
471
- }
472
- }
473
- }
474
- #onOpen = () => {
475
- for (const [requestId, state] of this.#listeners) {
476
- this.#subscribe(requestId, state.objectSet);
477
- }
478
- };
479
- #onMessage = async (message) => {
480
- const data = JSON.parse(message.data.toString());
481
- switch (data.type) {
482
- case "objectSetChanged": {
483
- if (data.objectSetChanged.confidenceValue) {
484
- this.#getCallback(data.objectSetChanged.id, "onOutOfDate")?.();
485
- break;
486
- }
487
- const {
488
- id: subscriptionId,
489
- objects
490
- } = data.objectSetChanged;
491
- const callback = this.#getCallback(subscriptionId, "onChange");
492
- if (callback) {
493
- callback(await convertFoundryToOsdkObjects(this.#client, this.#metadataContext, objects));
494
- }
495
- break;
496
- }
497
- case "refreshObjectSet": {
498
- const {
499
- id: subscriptionId
500
- } = data.refreshObjectSet;
501
- this.#getCallback(subscriptionId, "onOutOfDate")?.();
502
- break;
503
- }
504
- case "subscribeResponses": {
505
- const {
506
- id: requestId,
507
- responses
508
- } = data.subscribeResponses;
509
- const listenerData = this.#listeners.get(requestId);
510
- if (listenerData == null) {
511
- return;
512
- }
513
- if (responses.length !== 1) {
514
- throw new Error("Got more than one response but we only expect a single one");
515
- }
516
- const response = responses[0];
517
- switch (response.type) {
518
- case "error":
519
- this.#getCallbackByRequestId(requestId, "onError")?.(response.error);
520
- this.#unsubscribe(requestId);
521
- return;
522
- case "qos":
523
- this.#destroyWebsocket();
524
- this.#ensureWebsocket();
525
- return;
526
- case "success":
527
- const {
528
- id: subscriptionId
529
- } = response.success;
530
- listenerData.subscriptionId = subscriptionId;
531
- this.#subscriptionToRequestId.set(subscriptionId, requestId);
532
- this.#getCallbackByRequestId(requestId, "onOutOfDate")?.();
533
- break;
534
- default:
535
- this.#getCallbackByRequestId(requestId, "onError")?.(response);
536
- }
537
- break;
538
- }
539
- }
540
- };
541
- #onClose = () => {
542
- this.#destroyWebsocket();
543
- };
544
- async #enableObjectSetsWatcher(objectTypeRids) {
545
- return batchEnableWatcher(this.#conjureContext, {
546
- requests: objectTypeRids
547
- });
548
- }
549
- async #createTemporaryObjectSet(objectSet) {
550
- const objectSetBaseType = await getObjectSetBaseType(objectSet);
551
- const mapping = await getOntologyPropertyMappingForApiName(this.#client, this.#metadataContext, objectSetBaseType);
552
- const temporaryObjectSet = await createTemporaryObjectSet(this.#ossContext, {
553
- objectSet: toConjureObjectSet(objectSet, mapping),
554
- timeToLive: "ONE_DAY",
555
- objectSetFilterContext: {
556
- parameterOverrides: {}
167
+ return n;
168
+ },
169
+ maybeSeed(definition) {
557
170
  }
558
- });
559
- return {
560
- objectSetRid: temporaryObjectSet.objectSetRid
561
171
  };
562
- }
563
- #destroyWebsocket = () => {
564
- if (this.#ws) {
565
- this.#ws.removeEventListener("open", this.#onOpen);
566
- this.#ws.removeEventListener("message", this.#onMessage);
567
- this.#ws.removeEventListener("close", this.#onClose);
568
- if (this.#ws.readyState !== WebSocket__default.default.CLOSING && this.#ws.readyState !== WebSocket__default.default.CLOSED) {
569
- this.#ws.close();
570
- }
571
- this.#ws = void 0;
572
- }
573
- this.#subscriptionToRequestId.clear();
574
- for (const state of this.#listeners.values()) {
575
- state.subscriptionId = void 0;
576
- }
577
- if (this.#listeners.size > 0) {
578
- this.#ensureWebsocket();
579
- }
580
172
  };
581
- #getCallbackByRequestId(requestId, type) {
582
- const maybeListener = this.#listeners.get(requestId);
583
- return maybeListener?.listener?.[type];
584
- }
585
- #getCallback(subscriptionId, type) {
586
- const requestId = this.#subscriptionToRequestId.get(subscriptionId);
587
- if (requestId) {
588
- return this.#getCallbackByRequestId(requestId, type);
589
- }
590
- return;
591
- }
592
173
  };
593
- async function convertFoundryToOsdkObjects(client, ctx, objects) {
594
- const osdkObjects = await Promise.all(objects.map(async (object) => {
595
- const propertyMapping = await getOntologyPropertyMappingForRid(ctx, client.ontology.metadata.ontologyRid, object.type);
596
- const convertedObject = Object.fromEntries([...Object.entries(object.properties).map(([key, value]) => {
597
- return [propertyMapping?.propertyIdToApiNameMapping[key], value];
598
- }), [propertyMapping?.propertyIdToApiNameMapping[Object.entries(object.key)[0][0]], Object.entries(object.key)[0][1]], ["__apiName", propertyMapping?.apiName]]);
599
- return convertedObject;
600
- }));
601
- chunkKAL57TC5_cjs.convertWireToOsdkObjects(client, osdkObjects);
602
- return osdkObjects;
603
- }
604
- var objectTypeMapping = /* @__PURE__ */ new WeakMap();
605
- var objectApiNameToRid = /* @__PURE__ */ new Map();
606
- async function getOntologyPropertyMappingForApiName(client, ctx, objectApiName) {
607
- if (objectApiNameToRid.has(objectApiName)) {
608
- return objectTypeMapping.get(ctx)?.get(objectApiNameToRid.get(objectApiName));
609
- }
610
- const wireObjectType = await requests.getObjectTypeV2(shared_net.createOpenApiRequest(client.stack, client.fetch), client.ontology.metadata.ontologyApiName, objectApiName);
611
- return getOntologyPropertyMappingForRid(ctx, client.ontology.metadata.ontologyRid, wireObjectType.rid);
612
- }
613
- var cachedAllOntologies;
614
- async function getOntologyVersionForRid(ctx, ontologyRid) {
615
- cachedAllOntologies ??= await loadAllOntologies(ctx, {});
616
- !cachedAllOntologies.ontologies[ontologyRid] ? process.env.NODE_ENV !== "production" ? invariant__default.default(false, "ontology should be loaded") : invariant__default.default(false) : void 0;
617
- return cachedAllOntologies.ontologies[ontologyRid].currentOntologyVersion;
618
- }
619
- async function getOntologyPropertyMappingForRid(ctx, ontologyRid, objectRid) {
620
- if (!objectTypeMapping.has(ctx)) {
621
- objectTypeMapping.set(ctx, /* @__PURE__ */ new Map());
622
- }
623
- if (!objectTypeMapping.get(ctx).has(objectRid)) {
624
- const ontologyVersion = await getOntologyVersionForRid(ctx, ontologyRid);
625
- const body = {
626
- objectTypeVersions: {
627
- // TODO: Undefined drops this in the body
628
- [objectRid]: ontologyVersion
629
- },
630
- linkTypeVersions: {},
631
- loadRedacted: false,
632
- includeObjectTypesWithoutSearchableDatasources: true
633
- };
634
- const entities = await loadOntologyEntities(ctx, body);
635
- !entities.objectTypes[objectRid] ? process.env.NODE_ENV !== "production" ? invariant__default.default(false, "object type should be loaded") : invariant__default.default(false) : void 0;
636
- const propertyIdToApiNameMapping = Object.fromEntries(Object.values(entities.objectTypes[objectRid].propertyTypes).map((property) => {
637
- return [property.id, property.apiName];
638
- }));
639
- const propertyApiNameToIdMapping = Object.fromEntries(Object.values(entities.objectTypes[objectRid].propertyTypes).map((property) => {
640
- return [property.id, property.apiName];
641
- }));
642
- objectTypeMapping.get(ctx)?.set(objectRid, {
643
- apiName: entities.objectTypes[objectRid].apiName,
644
- id: entities.objectTypes[objectRid].id,
645
- propertyIdToApiNameMapping,
646
- propertyApiNameToIdMapping
647
- });
648
- objectApiNameToRid.set(entities.objectTypes[objectRid].apiName, objectRid);
649
- }
650
- return objectTypeMapping.get(ctx)?.get(objectRid);
651
- }
652
174
 
653
- // src/objectSet/createObjectSet.ts
654
- var searchAroundPrefix = "searchAround_";
655
- function createObjectSet2(objectType, clientCtx, objectSet = {
656
- type: "base",
657
- objectType: objectType["apiName"]
658
- }) {
659
- const base = {
660
- definition: objectSet,
661
- // aggregate: <
662
- // AC extends AggregationClause<O, K>,
663
- // GBC extends GroupByClause<O, K> | undefined = undefined,
664
- // >(req: {
665
- // select: AC;
666
- // where?: WhereClause<ObjectTypeDefinitionFrom<O, K>>;
667
- // groupBy?: GBC;
668
- // }) => {
669
- // throw "TODO";
670
- // },
671
- aggregateOrThrow: async (req) => {
672
- return chunkKAL57TC5_cjs.aggregateOrThrow(clientCtx, objectType, objectSet, req);
673
- },
674
- // fetchPage: async (args?: { nextPageToken?: string }) => {
675
- // throw "TODO";
676
- // },
677
- fetchPageOrThrow: async (args) => {
678
- return chunkKAL57TC5_cjs.fetchPageOrThrow(clientCtx, objectType, args ?? {}, objectSet);
679
- },
680
- // asyncIter: () => {
681
- // throw "";
682
- // },
683
- where: (clause) => {
684
- return createObjectSet2(objectType, clientCtx, {
685
- type: "filter",
686
- objectSet,
687
- where: chunkKAL57TC5_cjs.modernToLegacyWhereClause(clause)
688
- });
689
- },
690
- // [Symbol.asyncIterator]: () => {
691
- // throw "";
692
- // },
693
- pivotTo: function(type) {
694
- return createSearchAround(type)();
695
- },
696
- union: (...objectSets) => {
697
- return createObjectSet2(objectType, clientCtx, {
698
- type: "union",
699
- objectSets: [objectSet, ...objectSets.map((os) => os.definition)]
700
- });
701
- },
702
- intersect: (...objectSets) => {
703
- return createObjectSet2(objectType, clientCtx, {
704
- type: "intersect",
705
- objectSets: [objectSet, ...objectSets.map((os) => os.definition)]
706
- });
707
- },
708
- subtract: (...objectSets) => {
709
- return createObjectSet2(objectType, clientCtx, {
710
- type: "subtract",
711
- objectSets: [objectSet, ...objectSets.map((os) => os.definition)]
712
- });
713
- },
714
- subscribe(listener) {
715
- const instance = ObjectSetListenerWebsocket.getInstance(clientCtx);
716
- return instance.subscribe(objectSet, listener);
717
- }
718
- };
719
- function createSearchAround(link) {
720
- return () => {
721
- return createObjectSet2(objectType, clientCtx, {
722
- type: "searchAround",
723
- objectSet,
724
- link
725
- });
726
- };
727
- }
728
- return new Proxy(base, {
729
- get(target, p, receiver) {
730
- if (typeof p === "string" && p.startsWith(searchAroundPrefix)) {
731
- return createSearchAround(p.substring(searchAroundPrefix.length));
732
- }
733
- return target[p];
734
- }
735
- });
175
+ // src/util/UserAgent.ts
176
+ var USER_AGENT = `osdk-client/${"0.11.0"}`;
177
+
178
+ // src/createMinimalClient.ts
179
+ function createMinimalClient(metadata, stack, tokenProvider, ontologyCachingOptions = {}, fetchFn = global.fetch) {
180
+ const clientCtx = shared_net.createClientContext({
181
+ metadata,
182
+ provider: void 0
183
+ }, stack, tokenProvider, USER_AGENT, fetchFn);
184
+ clientCtx.ontology.provider = createStandardOntologyProviderFactory(ontologyCachingOptions)(clientCtx);
185
+ return clientCtx;
736
186
  }
737
187
 
738
188
  // src/ObjectSetCreator.ts
739
- function createObjectSetCreator(client, clientContext) {
189
+ function createObjectSetCreator(client, ontology) {
740
190
  return new Proxy({}, {
741
191
  get: (target, p, receiver) => {
742
- if (typeof p === "string")
743
- return client.objectSet(p);
192
+ if (typeof p === "string") {
193
+ return client(ontology.objects[p] ?? ontology.interfaces?.[p]);
194
+ }
744
195
  return void 0;
745
196
  },
746
197
  ownKeys(target) {
747
- return Object.keys(clientContext.ontology.objects);
198
+ return Object.keys(ontology.objects);
748
199
  },
749
200
  getOwnPropertyDescriptor(target, p) {
750
201
  if (typeof p === "string") {
751
202
  return {
752
- enumerable: clientContext.ontology.objects[p] != null,
203
+ enumerable: ontology.objects[p] != null,
753
204
  configurable: true,
754
- value: client.objectSet(p)
205
+ get: () => client(ontology.objects[p] ?? ontology.interfaces?.[p])
755
206
  };
756
207
  }
757
208
  }
758
209
  });
759
210
  }
760
211
 
761
- // src/util/UserAgent.ts
762
- var USER_AGENT = `osdk-client/${"0.9.0"}`;
763
-
764
212
  // src/createClient.ts
765
- function createClient(ontology, stack, tokenProvider, fetchFn = fetch) {
766
- const clientCtx = shared_net.createClientContext(ontology, stack, tokenProvider, USER_AGENT, fetchFn);
767
- const objectSetFactory = (type) => createObjectSet2(ontology["objects"][type] ?? ontology["interfaces"]?.[type], clientCtx);
768
- const client = Object.defineProperties({}, {
213
+ function createFutureClientPlus(metadata, stack, tokenProvider, ontologyCachingOptions = {}, fetchFn = fetch) {
214
+ const clientCtx = createMinimalClient(metadata, stack, tokenProvider, ontologyCachingOptions, fetchFn);
215
+ function clientFn(o) {
216
+ if (o.type === "object" || o.type === "interface") {
217
+ clientCtx.ontology.provider.maybeSeed(o);
218
+ return chunkLK4VDWCG_cjs.createBaseObjectSet(o, clientCtx);
219
+ } else if (o.type === "action") {
220
+ clientCtx.ontology.provider.maybeSeed(o);
221
+ return createActionInvoker(clientCtx, o);
222
+ } else {
223
+ throw new Error("Unknown definition: " + JSON.stringify(o));
224
+ }
225
+ }
226
+ return [clientCtx, clientFn];
227
+ }
228
+ function createClient(ontology, stack, tokenProvider, ontologyCachingOptions = {}, fetchFn = fetch) {
229
+ const [clientCtx, clientFn] = createFutureClientPlus(ontology.metadata, stack, tokenProvider, ontologyCachingOptions, fetchFn);
230
+ const objectSetFactory = (type) => chunkLK4VDWCG_cjs.createBaseObjectSet(ontology["objects"][type] ?? ontology["interfaces"]?.[type], clientCtx);
231
+ const oldActionInvoker = createOldActionInvoker(clientCtx, ontology);
232
+ const client = Object.defineProperties(clientFn, {
769
233
  objectSet: {
770
234
  get: () => objectSetFactory
771
235
  },
772
236
  objects: {
773
- get: () => createObjectSetCreator(client, clientCtx)
237
+ get: () => createObjectSetCreator(client, ontology)
774
238
  },
775
239
  actions: {
776
- get: () => createActionInvoker(clientCtx)
240
+ get: () => oldActionInvoker
777
241
  },
778
242
  __UNSTABLE_preexistingObjectSet: {
779
243
  get: () => (objectType, rid) => {
780
- return createObjectSet2(ontology["interfaces"]?.[objectType] ?? ontology["objects"][objectType], clientCtx, {
244
+ return chunkLK4VDWCG_cjs.createObjectSet(ontology["interfaces"]?.[objectType] ?? ontology["objects"][objectType], clientCtx, {
781
245
  type: "intersect",
782
246
  objectSets: [{
783
247
  type: "base",
@@ -795,7 +259,7 @@ function createClient(ontology, stack, tokenProvider, fetchFn = fetch) {
795
259
 
796
260
  Object.defineProperty(exports, 'Objects', {
797
261
  enumerable: true,
798
- get: function () { return chunkKAL57TC5_cjs.object_exports; }
262
+ get: function () { return chunkLK4VDWCG_cjs.object_exports; }
799
263
  });
800
264
  Object.defineProperty(exports, 'createClientContext', {
801
265
  enumerable: true,
@@ -807,5 +271,6 @@ Object.defineProperty(exports, 'isOk', {
807
271
  });
808
272
  exports.ActionValidationError = ActionValidationError;
809
273
  exports.createClient = createClient;
274
+ exports.createMinimalClient = createMinimalClient;
810
275
  //# sourceMappingURL=out.js.map
811
276
  //# sourceMappingURL=index.cjs.map