@osdk/client 2.2.1 → 2.3.0-beta.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (180) hide show
  1. package/CHANGELOG.md +94 -134
  2. package/build/browser/Client.js +1 -1
  3. package/build/browser/Client.js.map +1 -1
  4. package/build/browser/__unstable/createBulkLinksAsyncIterFactory.js +6 -1
  5. package/build/browser/__unstable/createBulkLinksAsyncIterFactory.js.map +1 -1
  6. package/build/browser/actions/ActionValidationError.js.map +1 -1
  7. package/build/browser/actions/applyAction.js +9 -8
  8. package/build/browser/actions/applyAction.js.map +1 -1
  9. package/build/browser/createClient.js +8 -1
  10. package/build/browser/createClient.js.map +1 -1
  11. package/build/browser/derivedProperties/createWithPropertiesObjectSet.js +41 -1
  12. package/build/browser/derivedProperties/createWithPropertiesObjectSet.js.map +1 -1
  13. package/build/browser/derivedProperties/createWithPropertiesObjectSet.test.js +145 -12
  14. package/build/browser/derivedProperties/createWithPropertiesObjectSet.test.js.map +1 -1
  15. package/build/browser/derivedProperties/derivedPropertyDefinitionFactory.js +93 -0
  16. package/build/browser/derivedProperties/derivedPropertyDefinitionFactory.js.map +1 -0
  17. package/build/browser/logger/BaseLogger.js +1 -1
  18. package/build/browser/logger/BaseLogger.js.map +1 -1
  19. package/build/browser/object/fetchPage.js +9 -7
  20. package/build/browser/object/fetchPage.js.map +1 -1
  21. package/build/browser/object/mediaUpload.js +3 -0
  22. package/build/browser/object/mediaUpload.js.map +1 -1
  23. package/build/browser/objectSet/ObjectSet.test.js +85 -106
  24. package/build/browser/objectSet/ObjectSet.test.js.map +1 -1
  25. package/build/browser/objectSet/createObjectSet.js +1 -1
  26. package/build/browser/objectSet/createObjectSet.js.map +1 -1
  27. package/build/browser/observable/ObservableClient.js +17 -1
  28. package/build/browser/observable/ObservableClient.js.map +1 -1
  29. package/build/browser/observable/OptimisticBuilder.js.map +1 -1
  30. package/build/browser/observable/internal/ActionApplication.js +31 -30
  31. package/build/browser/observable/internal/ActionApplication.js.map +1 -1
  32. package/build/browser/observable/internal/Changes.js +5 -1
  33. package/build/browser/observable/internal/Changes.js.map +1 -1
  34. package/build/browser/observable/internal/ListQuery.js +24 -22
  35. package/build/browser/observable/internal/ListQuery.js.map +1 -1
  36. package/build/browser/observable/internal/ObjectQuery.js +30 -1
  37. package/build/browser/observable/internal/ObjectQuery.js.map +1 -1
  38. package/build/browser/observable/internal/ObservableClientImpl.js +1 -2
  39. package/build/browser/observable/internal/ObservableClientImpl.js.map +1 -1
  40. package/build/browser/observable/internal/OptimisticJob.js +8 -0
  41. package/build/browser/observable/internal/OptimisticJob.js.map +1 -1
  42. package/build/browser/observable/internal/Query.js +2 -2
  43. package/build/browser/observable/internal/Query.js.map +1 -1
  44. package/build/browser/observable/internal/Store.js +4 -0
  45. package/build/browser/observable/internal/Store.js.map +1 -1
  46. package/build/browser/observable/internal/Store.test.js +45 -5
  47. package/build/browser/observable/internal/Store.test.js.map +1 -1
  48. package/build/browser/observable/internal/testUtils.js.map +1 -1
  49. package/build/browser/observable/internal/tombstone.js +18 -0
  50. package/build/browser/observable/internal/tombstone.js.map +1 -0
  51. package/build/browser/public/internal.js +1 -0
  52. package/build/browser/public/internal.js.map +1 -1
  53. package/build/browser/public-utils/hydrateObjectSetFromObjectRids.js +39 -0
  54. package/build/browser/public-utils/hydrateObjectSetFromObjectRids.js.map +1 -0
  55. package/build/browser/queries/applyQuery.js +8 -4
  56. package/build/browser/queries/applyQuery.js.map +1 -1
  57. package/build/browser/util/UserAgent.js +2 -1
  58. package/build/browser/util/UserAgent.js.map +1 -1
  59. package/build/browser/util/extractRdpDefinition.js +2 -0
  60. package/build/browser/util/extractRdpDefinition.js.map +1 -1
  61. package/build/browser/util/toDataValue.js +20 -10
  62. package/build/browser/util/toDataValue.js.map +1 -1
  63. package/build/browser/util/toDataValue.test.js +50 -11
  64. package/build/browser/util/toDataValue.test.js.map +1 -1
  65. package/build/cjs/chunk-VZ57PNLC.cjs +1808 -0
  66. package/build/cjs/chunk-VZ57PNLC.cjs.map +1 -0
  67. package/build/cjs/{chunk-LPYAXRWJ.cjs → chunk-YGJRXE4F.cjs} +757 -36
  68. package/build/cjs/chunk-YGJRXE4F.cjs.map +1 -0
  69. package/build/cjs/index.cjs +16 -1764
  70. package/build/cjs/index.cjs.map +1 -1
  71. package/build/cjs/index.d.cts +4 -3
  72. package/build/cjs/public/internal.cjs +22 -8
  73. package/build/cjs/public/internal.cjs.map +1 -1
  74. package/build/cjs/public/internal.d.cts +10 -1
  75. package/build/cjs/public/unstable-do-not-use.cjs +182 -123
  76. package/build/cjs/public/unstable-do-not-use.cjs.map +1 -1
  77. package/build/cjs/public/unstable-do-not-use.d.cts +2 -1
  78. package/build/esm/Client.js +1 -1
  79. package/build/esm/Client.js.map +1 -1
  80. package/build/esm/__unstable/createBulkLinksAsyncIterFactory.js +6 -1
  81. package/build/esm/__unstable/createBulkLinksAsyncIterFactory.js.map +1 -1
  82. package/build/esm/actions/ActionValidationError.js.map +1 -1
  83. package/build/esm/actions/applyAction.js +9 -8
  84. package/build/esm/actions/applyAction.js.map +1 -1
  85. package/build/esm/createClient.js +8 -1
  86. package/build/esm/createClient.js.map +1 -1
  87. package/build/esm/derivedProperties/createWithPropertiesObjectSet.js +41 -1
  88. package/build/esm/derivedProperties/createWithPropertiesObjectSet.js.map +1 -1
  89. package/build/esm/derivedProperties/createWithPropertiesObjectSet.test.js +145 -12
  90. package/build/esm/derivedProperties/createWithPropertiesObjectSet.test.js.map +1 -1
  91. package/build/esm/derivedProperties/derivedPropertyDefinitionFactory.js +93 -0
  92. package/build/esm/derivedProperties/derivedPropertyDefinitionFactory.js.map +1 -0
  93. package/build/esm/logger/BaseLogger.js +1 -1
  94. package/build/esm/logger/BaseLogger.js.map +1 -1
  95. package/build/esm/object/fetchPage.js +9 -7
  96. package/build/esm/object/fetchPage.js.map +1 -1
  97. package/build/esm/object/mediaUpload.js +3 -0
  98. package/build/esm/object/mediaUpload.js.map +1 -1
  99. package/build/esm/objectSet/ObjectSet.test.js +85 -106
  100. package/build/esm/objectSet/ObjectSet.test.js.map +1 -1
  101. package/build/esm/objectSet/createObjectSet.js +1 -1
  102. package/build/esm/objectSet/createObjectSet.js.map +1 -1
  103. package/build/esm/observable/ObservableClient.js +17 -1
  104. package/build/esm/observable/ObservableClient.js.map +1 -1
  105. package/build/esm/observable/OptimisticBuilder.js.map +1 -1
  106. package/build/esm/observable/internal/ActionApplication.js +31 -30
  107. package/build/esm/observable/internal/ActionApplication.js.map +1 -1
  108. package/build/esm/observable/internal/Changes.js +5 -1
  109. package/build/esm/observable/internal/Changes.js.map +1 -1
  110. package/build/esm/observable/internal/ListQuery.js +24 -22
  111. package/build/esm/observable/internal/ListQuery.js.map +1 -1
  112. package/build/esm/observable/internal/ObjectQuery.js +30 -1
  113. package/build/esm/observable/internal/ObjectQuery.js.map +1 -1
  114. package/build/esm/observable/internal/ObservableClientImpl.js +1 -2
  115. package/build/esm/observable/internal/ObservableClientImpl.js.map +1 -1
  116. package/build/esm/observable/internal/OptimisticJob.js +8 -0
  117. package/build/esm/observable/internal/OptimisticJob.js.map +1 -1
  118. package/build/esm/observable/internal/Query.js +2 -2
  119. package/build/esm/observable/internal/Query.js.map +1 -1
  120. package/build/esm/observable/internal/Store.js +4 -0
  121. package/build/esm/observable/internal/Store.js.map +1 -1
  122. package/build/esm/observable/internal/Store.test.js +45 -5
  123. package/build/esm/observable/internal/Store.test.js.map +1 -1
  124. package/build/esm/observable/internal/testUtils.js.map +1 -1
  125. package/build/esm/observable/internal/tombstone.js +18 -0
  126. package/build/esm/observable/internal/tombstone.js.map +1 -0
  127. package/build/esm/public/internal.js +1 -0
  128. package/build/esm/public/internal.js.map +1 -1
  129. package/build/esm/public-utils/hydrateObjectSetFromObjectRids.js +39 -0
  130. package/build/esm/public-utils/hydrateObjectSetFromObjectRids.js.map +1 -0
  131. package/build/esm/queries/applyQuery.js +8 -4
  132. package/build/esm/queries/applyQuery.js.map +1 -1
  133. package/build/esm/util/UserAgent.js +2 -1
  134. package/build/esm/util/UserAgent.js.map +1 -1
  135. package/build/esm/util/extractRdpDefinition.js +2 -0
  136. package/build/esm/util/extractRdpDefinition.js.map +1 -1
  137. package/build/esm/util/toDataValue.js +20 -10
  138. package/build/esm/util/toDataValue.js.map +1 -1
  139. package/build/esm/util/toDataValue.test.js +50 -11
  140. package/build/esm/util/toDataValue.test.js.map +1 -1
  141. package/build/types/Client.d.ts +1 -1
  142. package/build/types/actions/ActionValidationError.d.ts +1 -1
  143. package/build/types/actions/ActionValidationError.d.ts.map +1 -1
  144. package/build/types/actions/applyAction.d.ts.map +1 -1
  145. package/build/types/createClient.d.ts.map +1 -1
  146. package/build/types/derivedProperties/derivedPropertyDefinitionFactory.d.ts +1 -0
  147. package/build/types/derivedProperties/derivedPropertyDefinitionFactory.d.ts.map +1 -0
  148. package/build/types/object/mediaUpload.d.ts +2 -1
  149. package/build/types/object/mediaUpload.d.ts.map +1 -1
  150. package/build/types/observable/ObservableClient.d.ts +2 -2
  151. package/build/types/observable/ObservableClient.d.ts.map +1 -1
  152. package/build/types/observable/OptimisticBuilder.d.ts +1 -0
  153. package/build/types/observable/OptimisticBuilder.d.ts.map +1 -1
  154. package/build/types/observable/internal/ActionApplication.d.ts +1 -1
  155. package/build/types/observable/internal/ActionApplication.d.ts.map +1 -1
  156. package/build/types/observable/internal/Changes.d.ts +2 -0
  157. package/build/types/observable/internal/Changes.d.ts.map +1 -1
  158. package/build/types/observable/internal/ListQuery.d.ts.map +1 -1
  159. package/build/types/observable/internal/ObjectQuery.d.ts +1 -0
  160. package/build/types/observable/internal/ObjectQuery.d.ts.map +1 -1
  161. package/build/types/observable/internal/OptimisticJob.d.ts.map +1 -1
  162. package/build/types/observable/internal/Store.d.ts +2 -1
  163. package/build/types/observable/internal/Store.d.ts.map +1 -1
  164. package/build/types/observable/internal/testUtils.d.ts +1 -1
  165. package/build/types/observable/internal/testUtils.d.ts.map +1 -1
  166. package/build/types/observable/internal/tombstone.d.ts +1 -0
  167. package/build/types/observable/internal/tombstone.d.ts.map +1 -0
  168. package/build/types/public/internal.d.ts +1 -0
  169. package/build/types/public/internal.d.ts.map +1 -1
  170. package/build/types/public-utils/hydrateObjectSetFromObjectRids.d.ts +10 -0
  171. package/build/types/public-utils/hydrateObjectSetFromObjectRids.d.ts.map +1 -0
  172. package/build/types/queries/applyQuery.d.ts.map +1 -1
  173. package/build/types/util/UserAgent.d.ts +1 -0
  174. package/build/types/util/UserAgent.d.ts.map +1 -1
  175. package/package.json +14 -14
  176. package/build/cjs/chunk-LPYAXRWJ.cjs.map +0 -1
  177. package/build/cjs/chunk-T4NIFYZS.cjs +0 -14
  178. package/build/cjs/chunk-T4NIFYZS.cjs.map +0 -1
  179. package/build/cjs/chunk-UCW7RLKM.cjs +0 -615
  180. package/build/cjs/chunk-UCW7RLKM.cjs.map +0 -1
@@ -1,26 +1,26 @@
1
1
  'use strict';
2
2
 
3
- var chunkT4NIFYZS_cjs = require('../chunk-T4NIFYZS.cjs');
4
- var chunkUCW7RLKM_cjs = require('../chunk-UCW7RLKM.cjs');
3
+ var chunkVZ57PNLC_cjs = require('../chunk-VZ57PNLC.cjs');
4
+ var chunkYGJRXE4F_cjs = require('../chunk-YGJRXE4F.cjs');
5
+ var shared_net_fetch = require('@osdk/shared.net.fetch');
5
6
  var rxjs = require('rxjs');
6
7
  var invariant2 = require('tiny-invariant');
7
- var mnemonist = require('mnemonist');
8
8
  var trie = require('@wry/trie');
9
- var deepEqual = require('fast-deep-equal');
9
+ var mnemonist = require('mnemonist');
10
+ var deepEqual2 = require('fast-deep-equal');
10
11
  var groupBy = require('object.groupby');
11
12
  var shared_net_errors = require('@osdk/shared.net.errors');
12
13
 
13
14
  function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
14
15
 
15
16
  var invariant2__default = /*#__PURE__*/_interopDefault(invariant2);
16
- var deepEqual__default = /*#__PURE__*/_interopDefault(deepEqual);
17
+ var deepEqual2__default = /*#__PURE__*/_interopDefault(deepEqual2);
17
18
  var groupBy__default = /*#__PURE__*/_interopDefault(groupBy);
18
19
 
19
20
  // src/observable/internal/ObservableClientImpl.ts
20
21
  var ObservableClientImpl = class {
21
- #store;
22
22
  constructor(store) {
23
- this.#store = store;
23
+ this.__experimentalStore = store;
24
24
  this.observeObject = store.observeObject.bind(store);
25
25
  this.observeList = store.observeList.bind(store);
26
26
  this.applyAction = store.applyAction.bind(store);
@@ -87,63 +87,6 @@ function createDelay({
87
87
  var delay = createDelay();
88
88
  var delay_default = delay;
89
89
 
90
- // src/observable/internal/CacheKey.ts
91
- function DEBUG_ONLY__cacheKeyToString(x) {
92
- if (process.env.NODE_ENV !== "production") {
93
- return `${x.type}CacheKey<${x.otherKeys.map((xx) => JSON.stringify(xx)).join(", ")}>`.replaceAll('"', "'");
94
- } else {
95
- throw new Error("not implemented");
96
- }
97
- }
98
- function DEBUG_ONLY__cacheKeysToString(x) {
99
- if (process.env.NODE_ENV !== "production") {
100
- return "\n - " + x.map(DEBUG_ONLY__cacheKeyToString).join("\n - ");
101
- } else {
102
- throw new Error("not implemented");
103
- }
104
- }
105
-
106
- // src/observable/internal/Changes.ts
107
- var Changes = class {
108
- modifiedObjects = new mnemonist.MultiMap();
109
- addedObjects = new mnemonist.MultiMap();
110
- added = /* @__PURE__ */ new Set();
111
- modified = /* @__PURE__ */ new Set();
112
- registerObject = (cacheKey, data, isNew) => {
113
- this[isNew ? "addedObjects" : "modifiedObjects"].set(data.$apiName, data);
114
- this[isNew ? "added" : "modified"].add(cacheKey);
115
- };
116
- registerList = (key) => {
117
- this.modified.add(key);
118
- };
119
- isEmpty() {
120
- return this.modifiedObjects.size === 0 && this.addedObjects.size === 0 && this.added.size === 0 && this.modified.size === 0;
121
- }
122
- };
123
- function createChangedObjects() {
124
- return new Changes();
125
- }
126
- function DEBUG_ONLY__changesToString(changes) {
127
- if (process.env.NODE_ENV !== "production") {
128
- return JSON.stringify({
129
- modifiedObjects: multimapHelper(changes.modifiedObjects),
130
- addedObjects: multimapHelper(changes.addedObjects),
131
- added: listHelper(changes.added),
132
- modified: listHelper(changes.modified)
133
- }, null, 2);
134
- } else {
135
- throw new Error("not implemented");
136
- }
137
- }
138
- function listHelper(set) {
139
- return Array.from(set).map(DEBUG_ONLY__cacheKeyToString);
140
- }
141
- function multimapHelper(multimap) {
142
- return Object.fromEntries(Array.from(multimap.associations()).map(([type, objects]) => {
143
- return [type, objects.map((o) => o.$primaryKey)];
144
- }));
145
- }
146
-
147
90
  // src/observable/internal/OptimisticId.ts
148
91
  function createOptimisticId() {
149
92
  if (process.env.NODE_ENV !== "production") {
@@ -163,6 +106,7 @@ var OptimisticJob = class {
163
106
  constructor(store, optimisticId) {
164
107
  const updatedObjects = [];
165
108
  const addedObjectPromises = [];
109
+ const deletedObjects = [];
166
110
  this.getResult = () => {
167
111
  return this.#result ??= (async () => {
168
112
  const addedObjects = await Promise.allSettled(addedObjectPromises);
@@ -181,6 +125,9 @@ var OptimisticJob = class {
181
125
  for (const obj of updatedObjects) {
182
126
  store.getObjectQuery(obj.$objectType, obj.$primaryKey).writeToStore(obj, "loading", batch);
183
127
  }
128
+ for (const obj of deletedObjects) {
129
+ store.getObjectQuery(obj.$objectType, obj.$primaryKey).deleteFromStore("loading", batch);
130
+ }
184
131
  });
185
132
  return batchResult.changes;
186
133
  })();
@@ -191,7 +138,7 @@ var OptimisticJob = class {
191
138
  return this;
192
139
  },
193
140
  createObject(type, pk, properties) {
194
- const create = store.client[chunkUCW7RLKM_cjs.additionalContext].objectFactory2(store.client[chunkUCW7RLKM_cjs.additionalContext], [{
141
+ const create = store.client[chunkYGJRXE4F_cjs.additionalContext].objectFactory2(store.client[chunkYGJRXE4F_cjs.additionalContext], [{
195
142
  $primaryKey: pk,
196
143
  $apiName: type.apiName,
197
144
  $objectType: type.apiName,
@@ -201,6 +148,10 @@ var OptimisticJob = class {
201
148
  });
202
149
  addedObjectPromises.push(create);
203
150
  return this;
151
+ },
152
+ deleteObject(value) {
153
+ deletedObjects.push(value);
154
+ return this;
204
155
  }
205
156
  };
206
157
  }
@@ -238,6 +189,16 @@ var ActionApplication = class {
238
189
  const removeOptimisticResult = runOptimisticJob(this.store, optimisticUpdate);
239
190
  return await (async () => {
240
191
  try {
192
+ if (Array.isArray(args)) {
193
+ if (process.env.NODE_ENV !== "production") {
194
+ logger?.debug("applying action to multiple args", args);
195
+ }
196
+ const results = await this.store.client(action).batchApplyAction(args, {
197
+ $returnEdits: true
198
+ });
199
+ await this.#invalidateActionEditResponse(results);
200
+ return results;
201
+ }
241
202
  const actionResults = await this.store.client(action).applyAction(args, {
242
203
  $returnEdits: true
243
204
  });
@@ -258,40 +219,40 @@ var ActionApplication = class {
258
219
  }
259
220
  })();
260
221
  };
261
- #invalidateActionEditResponse = async (value) => {
262
- const typesToInvalidate = /* @__PURE__ */ new Set();
222
+ #invalidateActionEditResponse = async ({
223
+ deletedObjects,
224
+ modifiedObjects,
225
+ addedObjects,
226
+ editedObjectTypes,
227
+ type
228
+ }) => {
263
229
  let changes;
264
- if (value.type === "edits") {
230
+ if (type === "edits") {
265
231
  const promisesToWait = [];
266
- for (const obj of value.modifiedObjects) {
267
- promisesToWait.push(this.store.invalidateObject(obj.objectType, obj.primaryKey));
268
- }
269
- for (const obj of value.addedObjects) {
270
- promisesToWait.push(this.store.invalidateObject(obj.objectType, obj.primaryKey));
271
- typesToInvalidate.add(obj.objectType);
232
+ for (const list of [deletedObjects, modifiedObjects, addedObjects]) {
233
+ for (const obj of list ?? []) {
234
+ promisesToWait.push(this.store.invalidateObject(obj.objectType, obj.primaryKey));
235
+ }
272
236
  }
273
- await Promise.all(promisesToWait);
274
- const changes2 = createChangedObjects();
275
- for (const changeType of ["addedObjects", "modifiedObjects"]) {
237
+ this.store.batch({}, (batch) => {
276
238
  for (const {
277
239
  objectType,
278
240
  primaryKey
279
- } of value[changeType] ?? []) {
241
+ } of deletedObjects ?? []) {
280
242
  const cacheKey = this.store.getCacheKey("object", objectType, primaryKey);
281
- const obj = this.store.getValue(cacheKey);
282
- if (obj && obj.value) {
283
- changes2[changeType].set(objectType, obj.value);
284
- (changeType === "addedObjects" ? changes2.added : changes2.modified).add(cacheKey);
285
- }
243
+ this.store.peekQuery(cacheKey)?.deleteFromStore(
244
+ "loaded",
245
+ // this is probably not the best value to use
246
+ batch
247
+ );
286
248
  }
287
- }
249
+ });
250
+ await Promise.all(promisesToWait);
288
251
  } else {
289
- for (const apiName of value.editedObjectTypes) {
290
- typesToInvalidate.add(apiName.toString());
252
+ for (const apiName of editedObjectTypes) {
291
253
  await this.store.invalidateObjectType(apiName, changes);
292
254
  }
293
255
  }
294
- return value;
295
256
  };
296
257
  };
297
258
  var CacheKeys = class {
@@ -329,6 +290,67 @@ var CacheKeys = class {
329
290
  }
330
291
  };
331
292
 
293
+ // src/observable/internal/CacheKey.ts
294
+ function DEBUG_ONLY__cacheKeyToString(x) {
295
+ if (process.env.NODE_ENV !== "production") {
296
+ return `${x.type}CacheKey<${x.otherKeys.map((xx) => JSON.stringify(xx)).join(", ")}>`.replaceAll('"', "'");
297
+ } else {
298
+ throw new Error("not implemented");
299
+ }
300
+ }
301
+ function DEBUG_ONLY__cacheKeysToString(x) {
302
+ if (process.env.NODE_ENV !== "production") {
303
+ return "\n - " + x.map(DEBUG_ONLY__cacheKeyToString).join("\n - ");
304
+ } else {
305
+ throw new Error("not implemented");
306
+ }
307
+ }
308
+
309
+ // src/observable/internal/Changes.ts
310
+ var Changes = class {
311
+ modifiedObjects = new mnemonist.MultiMap();
312
+ addedObjects = new mnemonist.MultiMap();
313
+ added = /* @__PURE__ */ new Set();
314
+ modified = /* @__PURE__ */ new Set();
315
+ deleted = /* @__PURE__ */ new Set();
316
+ registerObject = (cacheKey, data, isNew) => {
317
+ this[isNew ? "addedObjects" : "modifiedObjects"].set(data.$apiName, data);
318
+ this[isNew ? "added" : "modified"].add(cacheKey);
319
+ };
320
+ deleteObject = (cacheKey) => {
321
+ this.deleted.add(cacheKey);
322
+ };
323
+ registerList = (key) => {
324
+ this.modified.add(key);
325
+ };
326
+ isEmpty() {
327
+ return this.modifiedObjects.size === 0 && this.addedObjects.size === 0 && this.added.size === 0 && this.modified.size === 0 && this.deleted.size === 0;
328
+ }
329
+ };
330
+ function createChangedObjects() {
331
+ return new Changes();
332
+ }
333
+ function DEBUG_ONLY__changesToString(changes) {
334
+ if (process.env.NODE_ENV !== "production") {
335
+ return JSON.stringify({
336
+ modifiedObjects: multimapHelper(changes.modifiedObjects),
337
+ addedObjects: multimapHelper(changes.addedObjects),
338
+ added: listHelper(changes.added),
339
+ modified: listHelper(changes.modified)
340
+ }, null, 2);
341
+ } else {
342
+ throw new Error("not implemented");
343
+ }
344
+ }
345
+ function listHelper(set) {
346
+ return Array.from(set).map(DEBUG_ONLY__cacheKeyToString);
347
+ }
348
+ function multimapHelper(multimap) {
349
+ return Object.fromEntries(Array.from(multimap.associations()).map(([type, objects]) => {
350
+ return [type, objects.map((o) => o.$primaryKey)];
351
+ }));
352
+ }
353
+
332
354
  // src/observable/internal/WeakMapWithEntries.ts
333
355
  var WeakMapWithEntries = class {
334
356
  #map = /* @__PURE__ */ new WeakMap();
@@ -511,7 +533,7 @@ function is$not(whereClause) {
511
533
  return "$not" in whereClause;
512
534
  }
513
535
  function objectSortaMatchesWhereClause(o, whereClause, strict) {
514
- if (deepEqual__default.default({}, whereClause)) {
536
+ if (deepEqual2__default.default({}, whereClause)) {
515
537
  return true;
516
538
  }
517
539
  if (is$and(whereClause)) {
@@ -596,7 +618,7 @@ var BulkObjectLoader = class {
596
618
  #maxEntries;
597
619
  constructor(client, maxWait = 25, maxEntries = 100) {
598
620
  this.#client = client;
599
- this.#logger = client[chunkUCW7RLKM_cjs.additionalContext].logger;
621
+ this.#logger = client[chunkYGJRXE4F_cjs.additionalContext].logger;
600
622
  this.#maxWait = maxWait;
601
623
  this.#maxEntries = maxEntries;
602
624
  }
@@ -666,7 +688,7 @@ var Query = class {
666
688
  this.cacheKey = cacheKey;
667
689
  this.store = store;
668
690
  this.#subject = observable;
669
- this.logger = logger ?? (process.env.NODE_ENV === "production" ? store.client[chunkUCW7RLKM_cjs.additionalContext].logger : store.client[chunkUCW7RLKM_cjs.additionalContext].logger?.child({}, {
691
+ this.logger = logger ?? (process.env.NODE_ENV === "production" ? store.client[chunkYGJRXE4F_cjs.additionalContext].logger : store.client[chunkYGJRXE4F_cjs.additionalContext].logger?.child({}, {
670
692
  msgPrefix: process.env.NODE_ENV !== "production" ? `Query<${cacheKey.type}, ${cacheKey.otherKeys.map((x) => JSON.stringify(x)).join(", ")}>` : "Query"
671
693
  }));
672
694
  }
@@ -692,7 +714,7 @@ var Query = class {
692
714
  }
693
715
  if (this.pendingFetch) {
694
716
  if (process.env.NODE_ENV !== "production") {
695
- logger?.info("Fetch is already pending, using it");
717
+ logger?.debug("Fetch is already pending, using it");
696
718
  }
697
719
  await this.pendingFetch;
698
720
  return;
@@ -715,7 +737,7 @@ var Query = class {
715
737
  logger?.debug("calling _fetchAndStore()");
716
738
  }
717
739
  this.pendingFetch = this._fetchAndStore().finally(() => {
718
- logger?.info("finally _fetchAndStore()");
740
+ logger?.debug("finally _fetchAndStore()");
719
741
  this.pendingFetch = void 0;
720
742
  });
721
743
  await this.pendingFetch;
@@ -768,12 +790,15 @@ var Query = class {
768
790
  */
769
791
  };
770
792
 
793
+ // src/observable/internal/tombstone.ts
794
+ var tombstone = void 0;
795
+
771
796
  // src/observable/internal/ObjectQuery.ts
772
797
  var ObjectQuery = class extends Query {
773
798
  #apiName;
774
799
  #pk;
775
800
  constructor(store, subject, type, pk, cacheKey, opts) {
776
- super(store, subject, opts, cacheKey, process.env.NODE_ENV !== "production" ? store.client[chunkUCW7RLKM_cjs.additionalContext].logger?.child({}, {
801
+ super(store, subject, opts, cacheKey, process.env.NODE_ENV !== "production" ? store.client[chunkYGJRXE4F_cjs.additionalContext].logger?.child({}, {
777
802
  msgPrefix: `ObjectQuery<${cacheKey.otherKeys.map((x) => JSON.stringify(x)).join(", ")}>`
778
803
  }) : void 0);
779
804
  this.#apiName = type;
@@ -800,7 +825,7 @@ var ObjectQuery = class extends Query {
800
825
  if (process.env.NODE_ENV !== "production") {
801
826
  this.logger?.child({
802
827
  methodName: "_fetchAndStore"
803
- }).info("calling _fetchAndStore");
828
+ }).debug("calling _fetchAndStore");
804
829
  }
805
830
  const obj = await getBulkObjectLoader(this.store.client).fetch(this.#apiName, this.#pk);
806
831
  this.store.batch({}, (batch) => {
@@ -809,7 +834,7 @@ var ObjectQuery = class extends Query {
809
834
  }
810
835
  writeToStore(data, status, batch) {
811
836
  const entry = batch.read(this.cacheKey);
812
- if (entry && deepEqual__default.default(data, entry.value)) {
837
+ if (entry && deepEqual2__default.default(data, entry.value)) {
813
838
  if (process.env.NODE_ENV !== "production") {
814
839
  this.logger?.child({
815
840
  methodName: "writeToStore"
@@ -833,6 +858,30 @@ var ObjectQuery = class extends Query {
833
858
  );
834
859
  return ret;
835
860
  }
861
+ deleteFromStore(status, batch) {
862
+ const entry = batch.read(this.cacheKey);
863
+ if (entry && deepEqual2__default.default(tombstone, entry.value)) {
864
+ if (process.env.NODE_ENV !== "production") {
865
+ this.logger?.child({
866
+ methodName: "deleteFromStore"
867
+ }).debug(`Object was deep equal, just setting status`);
868
+ }
869
+ return batch.write(this.cacheKey, entry.value, status);
870
+ }
871
+ if (process.env.NODE_ENV !== "production") {
872
+ this.logger?.child({
873
+ methodName: "deleteFromStore"
874
+ }).debug(JSON.stringify({
875
+ status
876
+ }));
877
+ }
878
+ if (!entry || !entry.value) {
879
+ return;
880
+ }
881
+ const ret = batch.delete(this.cacheKey, status);
882
+ batch.changes.deleteObject(this.cacheKey);
883
+ return ret;
884
+ }
836
885
  };
837
886
  function storeOsdkInstances(store, values, batch) {
838
887
  return values.map((v) => {
@@ -875,7 +924,7 @@ var BaseListQuery = class extends Query {
875
924
  }
876
925
  writeToStore(data, status, batch) {
877
926
  const entry = batch.read(this.cacheKey);
878
- if (entry && deepEqual__default.default(data, entry.value)) {
927
+ if (entry && deepEqual2__default.default(data, entry.value)) {
879
928
  if (process.env.NODE_ENV !== "production") {
880
929
  this.logger?.child({
881
930
  methodName: "writeToStore"
@@ -934,7 +983,7 @@ var ListQuery = class extends BaseListQuery {
934
983
  #objectSet;
935
984
  #sortFns;
936
985
  constructor(store, subject, apiType, apiName, whereClause, orderBy, cacheKey, opts) {
937
- super(store, subject, opts, cacheKey, process.env.NODE_ENV !== "production" ? store.client[chunkUCW7RLKM_cjs.additionalContext].logger?.child({}, {
986
+ super(store, subject, opts, cacheKey, process.env.NODE_ENV !== "production" ? store.client[chunkYGJRXE4F_cjs.additionalContext].logger?.child({}, {
938
987
  msgPrefix: `ListQuery<${cacheKey.otherKeys.map((x) => JSON.stringify(x)).join(", ")}>`
939
988
  }) : void 0);
940
989
  this.#type = apiType;
@@ -954,7 +1003,7 @@ var ListQuery = class extends BaseListQuery {
954
1003
  return rxjs.connectable(subject.pipe(
955
1004
  rxjs.switchMap((listEntry) => {
956
1005
  return rxjs.combineLatest({
957
- resolvedList: listEntry?.value?.data == null ? rxjs.of([]) : rxjs.combineLatest(listEntry.value.data.map((cacheKey) => this.store.getSubject(cacheKey).pipe(rxjs.map((objectEntry) => objectEntry?.value)))),
1006
+ resolvedList: listEntry?.value?.data == null || listEntry.value.data.length === 0 ? rxjs.of([]) : rxjs.combineLatest(listEntry.value.data.map((cacheKey) => this.store.getSubject(cacheKey).pipe(rxjs.map((objectEntry) => objectEntry?.value)))),
958
1007
  isOptimistic: rxjs.of(listEntry.isOptimistic),
959
1008
  fetchMore: rxjs.of(this.fetchMore),
960
1009
  hasMore: rxjs.of(this.#nextPageToken != null),
@@ -976,7 +1025,7 @@ var ListQuery = class extends BaseListQuery {
976
1025
  if (process.env.NODE_ENV !== "production") {
977
1026
  this.logger?.child({
978
1027
  methodName: "_fetchAndStore"
979
- }).info("fetching pages");
1028
+ }).debug("fetching pages");
980
1029
  }
981
1030
  while (true) {
982
1031
  const entry = await this.#fetchPageAndUpdate(this.#objectSet, "loading", this.abortController?.signal);
@@ -1099,9 +1148,6 @@ var ListQuery = class extends BaseListQuery {
1099
1148
  changes.modified.add(this.cacheKey);
1100
1149
  try {
1101
1150
  const relevantObjects = this._extractRelevantObjects(changes);
1102
- if (relevantObjects.added.all.length === 0 && relevantObjects.modified.all.length === 0) {
1103
- return;
1104
- }
1105
1151
  const status = optimisticId || relevantObjects.added.sortaMatches.size > 0 || relevantObjects.modified.sortaMatches.size > 0 ? "loading" : "loaded";
1106
1152
  const newList = [];
1107
1153
  let needsRevalidation = false;
@@ -1114,7 +1160,7 @@ var ListQuery = class extends BaseListQuery {
1114
1160
  // easy case. objects are new to the cache and they match this filter
1115
1161
  relevantObjects.added.strictMatches
1116
1162
  );
1117
- const toRemove = /* @__PURE__ */ new Set();
1163
+ const toRemove = new Set(changes.deleted);
1118
1164
  for (const obj of relevantObjects.modified.all) {
1119
1165
  if (relevantObjects.modified.strictMatches.has(obj)) {
1120
1166
  const objectCacheKey = this.store.getCacheKey("object", obj.$objectType, obj.$primaryKey);
@@ -1159,30 +1205,33 @@ var ListQuery = class extends BaseListQuery {
1159
1205
  }
1160
1206
  }
1161
1207
  };
1208
+ #matchType(obj) {
1209
+ if (objectSortaMatchesWhereClause(obj, this.#whereClause, true)) {
1210
+ return "strict";
1211
+ }
1212
+ if (objectSortaMatchesWhereClause(obj, this.#whereClause, false)) {
1213
+ return "sorta";
1214
+ }
1215
+ return false;
1216
+ }
1162
1217
  _extractRelevantObjects(changes) {
1163
1218
  const relevantObjects = this.#type === "object" ? this.#extractRelevantObjectsForTypeObject(changes) : this.#extractRelevantObjectsForTypeInterface(changes);
1164
1219
  for (const group of Object.values(relevantObjects)) {
1165
1220
  for (const obj of group.all ?? []) {
1166
- const strictMatch = objectSortaMatchesWhereClause(obj, this.#whereClause, true);
1167
- if (strictMatch) {
1168
- group.strictMatches.add(obj);
1169
- } else {
1170
- const sortaMatch = objectSortaMatchesWhereClause(obj, this.#whereClause, false);
1171
- if (sortaMatch) {
1172
- group.sortaMatches.add(obj);
1173
- }
1221
+ const matchType = this.#matchType(obj);
1222
+ if (matchType) {
1223
+ group[`${matchType}Matches`].add(obj);
1174
1224
  }
1175
1225
  }
1176
1226
  }
1177
1227
  return relevantObjects;
1178
1228
  }
1179
1229
  #extractRelevantObjectsForTypeInterface(changes) {
1180
- const added = Array.from(changes.addedObjects).filter(([, object]) => {
1181
- return this.#apiName in object[chunkT4NIFYZS_cjs.ObjectDefRef].interfaceMap;
1182
- }).map(([, object]) => object.$as(this.#apiName));
1183
- const modified = Array.from(changes.modifiedObjects).filter(([, object]) => {
1184
- return this.#apiName in object[chunkT4NIFYZS_cjs.ObjectDefRef].interfaceMap;
1185
- }).map(([, object]) => object.$as(this.#apiName));
1230
+ const matchesApiName = ([, object]) => {
1231
+ return this.#apiName in object[chunkVZ57PNLC_cjs.ObjectDefRef].interfaceMap;
1232
+ };
1233
+ const added = Array.from(changes.addedObjects).filter(matchesApiName).map(([, object]) => object.$as(this.#apiName));
1234
+ const modified = Array.from(changes.modifiedObjects).filter(matchesApiName).map(([, object]) => object.$as(this.#apiName));
1186
1235
  return {
1187
1236
  added: {
1188
1237
  all: added,
@@ -1259,7 +1308,7 @@ var ListQuery = class extends BaseListQuery {
1259
1308
  if (process.env.NODE_ENV !== "production") {
1260
1309
  this.logger?.child({
1261
1310
  methodName: "onOutOfDate"
1262
- }).info("");
1311
+ }).debug("");
1263
1312
  }
1264
1313
  }
1265
1314
  #onOswError(errors) {
@@ -1355,7 +1404,7 @@ function createOrderBySortFns(orderBy) {
1355
1404
  async function reloadDataAsFullObjects(client, data) {
1356
1405
  const groups = groupBy__default.default(data, (x) => x.$objectType);
1357
1406
  const objectTypeToPrimaryKeyToObject = Object.fromEntries(await Promise.all(Object.entries(groups).map(async ([apiName, objects]) => {
1358
- const objectDef = objects[0][chunkT4NIFYZS_cjs.UnderlyingOsdkObject][chunkT4NIFYZS_cjs.ObjectDefRef];
1407
+ const objectDef = objects[0][chunkVZ57PNLC_cjs.UnderlyingOsdkObject][chunkVZ57PNLC_cjs.ObjectDefRef];
1359
1408
  const where = {
1360
1409
  [objectDef.primaryKeyApiName]: {
1361
1410
  $in: objects.map((x) => x.$primaryKey)
@@ -1504,7 +1553,7 @@ var WhereClauseCanonicalizer = class {
1504
1553
  options: []
1505
1554
  };
1506
1555
  this.#existingOptions.set(cacheKey, lookupEntry);
1507
- const canon = lookupEntry.options.find((ref) => deepEqual__default.default(ref.deref(), calculatedCanon))?.deref() ?? calculatedCanon;
1556
+ const canon = lookupEntry.options.find((ref) => deepEqual2__default.default(ref.deref(), calculatedCanon))?.deref() ?? calculatedCanon;
1508
1557
  if (canon === calculatedCanon) {
1509
1558
  lookupEntry.options.push(new WeakRef(canon));
1510
1559
  }
@@ -1563,7 +1612,7 @@ var Store = class {
1563
1612
  #finalizationRegistry;
1564
1613
  constructor(client) {
1565
1614
  this.client = client;
1566
- this.logger = client[chunkUCW7RLKM_cjs.additionalContext].logger?.child({}, {
1615
+ this.logger = client[chunkYGJRXE4F_cjs.additionalContext].logger?.child({}, {
1567
1616
  msgPrefix: "Store"
1568
1617
  });
1569
1618
  this.#topLayer = this.#truthLayer;
@@ -1757,6 +1806,9 @@ var Store = class {
1757
1806
  }
1758
1807
  return newValue;
1759
1808
  },
1809
+ delete: (cacheKey, status) => {
1810
+ return batchContext.write(cacheKey, tombstone, status);
1811
+ },
1760
1812
  read: (cacheKey) => {
1761
1813
  return optimisticId ? this.#topLayer.get(cacheKey) : this.#truthLayer.get(cacheKey);
1762
1814
  }
@@ -1854,7 +1906,14 @@ var Store = class {
1854
1906
 
1855
1907
  // src/observable/ObservableClient.ts
1856
1908
  function createObservableClient(client) {
1857
- return new ObservableClientImpl(new Store(client));
1909
+ const tweakedClient = chunkVZ57PNLC_cjs.createClientFromContext({
1910
+ ...client[chunkYGJRXE4F_cjs.additionalContext],
1911
+ fetch: shared_net_fetch.createFetchHeaderMutator(client[chunkYGJRXE4F_cjs.additionalContext].fetch, (headers) => {
1912
+ headers.set("Fetch-User-Agent", [headers.get("Fetch-User-Agent"), chunkVZ57PNLC_cjs.OBSERVABLE_USER_AGENT].filter((x) => x && x?.length > 0).join(" "));
1913
+ return headers;
1914
+ })
1915
+ });
1916
+ return new ObservableClientImpl(new Store(tweakedClient));
1858
1917
  }
1859
1918
 
1860
1919
  // src/public-utils/osdkConfig.ts
@@ -1893,7 +1952,7 @@ function getOsdkConfig(ontologyRid) {
1893
1952
 
1894
1953
  Object.defineProperty(exports, "augment", {
1895
1954
  enumerable: true,
1896
- get: function () { return chunkUCW7RLKM_cjs.augment; }
1955
+ get: function () { return chunkYGJRXE4F_cjs.augment; }
1897
1956
  });
1898
1957
  exports.createObservableClient = createObservableClient;
1899
1958
  exports.getMetaTagContent = getMetaTagContent;