@osdk/client 2.74.0 → 2.74.1-main-e5da5150e9db362ea94628ef4ff790271684ff36

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 (35) hide show
  1. package/CHANGELOG.md +9 -0
  2. package/build/browser/Client.js +1 -1
  3. package/build/browser/Client.js.map +1 -1
  4. package/build/browser/observable/internal/objectset/ObjectSetQuery.js +67 -21
  5. package/build/browser/observable/internal/objectset/ObjectSetQuery.js.map +1 -1
  6. package/build/browser/util/UserAgent.js +2 -2
  7. package/build/browser/util/UserAgent.js.map +1 -1
  8. package/build/cjs/{applyStreamingQuery-FHCETZXE.cjs → applyStreamingQuery-VNLWYB4F.cjs} +8 -8
  9. package/build/cjs/{applyStreamingQuery-FHCETZXE.cjs.map → applyStreamingQuery-VNLWYB4F.cjs.map} +1 -1
  10. package/build/cjs/{chunk-QGHUEHKJ.cjs → chunk-3TTBITWY.cjs} +8 -8
  11. package/build/cjs/{chunk-QGHUEHKJ.cjs.map → chunk-3TTBITWY.cjs.map} +1 -1
  12. package/build/cjs/{chunk-TBLHTG4S.cjs → chunk-FWYTUFP5.cjs} +47 -47
  13. package/build/cjs/chunk-FWYTUFP5.cjs.map +1 -0
  14. package/build/cjs/{chunk-V6AYWE7X.cjs → chunk-JA4TRLJJ.cjs} +14 -14
  15. package/build/cjs/{chunk-V6AYWE7X.cjs.map → chunk-JA4TRLJJ.cjs.map} +1 -1
  16. package/build/cjs/{chunk-XMYNUOYK.cjs → chunk-JPBFLTLO.cjs} +2 -2
  17. package/build/cjs/{chunk-XMYNUOYK.cjs.map → chunk-JPBFLTLO.cjs.map} +1 -1
  18. package/build/cjs/{chunk-FA5WM2PP.cjs → chunk-S25AQGI6.cjs} +151 -104
  19. package/build/cjs/chunk-S25AQGI6.cjs.map +1 -0
  20. package/build/cjs/index.cjs +11 -11
  21. package/build/cjs/public/experimental.cjs +9 -9
  22. package/build/cjs/public/internal.cjs +8 -8
  23. package/build/cjs/public/observable.cjs +5 -5
  24. package/build/cjs/public/unstable-do-not-use.cjs +16 -16
  25. package/build/esm/Client.js +1 -1
  26. package/build/esm/Client.js.map +1 -1
  27. package/build/esm/observable/internal/objectset/ObjectSetQuery.js +67 -21
  28. package/build/esm/observable/internal/objectset/ObjectSetQuery.js.map +1 -1
  29. package/build/esm/util/UserAgent.js +2 -2
  30. package/build/esm/util/UserAgent.js.map +1 -1
  31. package/build/types/Client.d.ts +1 -1
  32. package/build/types/observable/internal/objectset/ObjectSetQuery.d.ts.map +1 -1
  33. package/package.json +5 -5
  34. package/build/cjs/chunk-FA5WM2PP.cjs.map +0 -1
  35. package/build/cjs/chunk-TBLHTG4S.cjs.map +0 -1
package/CHANGELOG.md CHANGED
@@ -1,5 +1,14 @@
1
1
  # @osdk/client
2
2
 
3
+ ## 2.74.1-main-e5da5150e9db362ea94628ef4ff790271684ff36
4
+
5
+ ### Patch Changes
6
+
7
+ - a3dd285: Keep observable object set queries loading until objects for their exact derived-property configuration are available.
8
+ - @osdk/api@2.74.1-main-e5da5150e9db362ea94628ef4ff790271684ff36
9
+ - @osdk/client.unstable@2.74.1-main-e5da5150e9db362ea94628ef4ff790271684ff36
10
+ - @osdk/generator-converters@2.74.1-main-e5da5150e9db362ea94628ef4ff790271684ff36
11
+
3
12
  ## 2.74.0
4
13
 
5
14
  ### Minor Changes
@@ -21,7 +21,7 @@
21
21
  export const additionalContext = Symbol("additionalContext");
22
22
 
23
23
  // BEGIN: THIS IS GENERATED CODE. DO NOT EDIT.
24
- const MaxOsdkVersion = "2.74.0";
24
+ const MaxOsdkVersion = "2.74.1";
25
25
  // END: THIS IS GENERATED CODE. DO NOT EDIT.
26
26
 
27
27
  const ErrorMessage = Symbol("ErrorMessage");
@@ -1 +1 @@
1
- {"version":3,"file":"Client.js","names":["additionalContext","Symbol","MaxOsdkVersion","ErrorMessage"],"sources":["Client.ts"],"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 */\n\nimport type {\n ActionDefinition,\n ActionMetadata,\n CompileTimeMetadata,\n InterfaceDefinition,\n InterfaceMetadata,\n ObjectMetadata,\n ObjectSet,\n ObjectTypeDefinition,\n QueryDefinition,\n QueryMetadata,\n VersionBound,\n} from \"@osdk/api\";\nimport type {\n Experiment,\n ExperimentFns,\n MinimalObjectSet,\n} from \"@osdk/api/unstable\";\nimport type { SharedClient } from \"@osdk/shared.client2\";\n\nimport type { ActionSignatureFromDef } from \"./actions/applyAction.js\";\nimport type { MinimalClient } from \"./MinimalClientContext.js\";\nimport type { QuerySignatureFromDef } from \"./queries/types.js\";\nimport type { SatisfiesSemver } from \"./SatisfiesSemver.js\";\n\n// eslint-disable-next-line @typescript-eslint/consistent-type-imports\ntype OldSharedClient = import(\"@osdk/shared.client\").SharedClient;\n\nexport type CheckVersionBound<Q> =\n Q extends VersionBound<infer V>\n ? SatisfiesSemver<V, MaxOsdkVersion> extends true\n ? Q\n : Q & {\n [ErrorMessage]: `Your SDK requires a semver compatible version with ${V}. You have ${MaxOsdkVersion}. Update your package.json`;\n }\n : Q;\n\nexport interface Client extends SharedClient, OldSharedClient {\n /**\n * Returns the operation surface for the given ontology definition. The shape of the\n * returned value is dispatched on what kind of definition is passed:\n * - object type → the object set type for that ontology object (typically a generated extension of {@link ObjectSet})\n * - interface → a {@link MinimalObjectSet} for the interface\n * - action → a callable with `applyAction` / `batchApplyAction`\n * - query → a callable with `executeFunction`\n * - experiment → the unstable feature surface for that experiment\n *\n * @param o - The object type definition to wrap.\n * @example\n * ```ts\n * const employees = await client(Employee).fetchPage({ $pageSize: 30 });\n * const employee = await client(Employee).fetchOne(12345);\n * ```\n * @returns an object set scoped to all objects of this type.\n */\n <Q extends ObjectTypeDefinition>(\n o: Q,\n ): unknown extends CompileTimeMetadata<Q>[\"objectSet\"]\n ? ObjectSet<Q>\n : CompileTimeMetadata<Q>[\"objectSet\"];\n\n /**\n * @param o - The interface definition to wrap.\n * @example\n * ```ts\n * const page = await client(MyInterface).fetchPage({ $pageSize: 30 });\n * ```\n * @returns a minimal object set over all objects implementing the interface.\n */\n <Q extends InterfaceDefinition>(\n o: Q,\n ): unknown extends CompileTimeMetadata<Q>[\"objectSet\"]\n ? MinimalObjectSet<Q>\n : CompileTimeMetadata<Q>[\"objectSet\"];\n\n /**\n * @param o - The action definition to invoke.\n * @example\n * ```ts\n * const result = await client(createEmployee).applyAction(\n * { name: \"Jane\", department: \"Engineering\" },\n * { $returnEdits: true },\n * );\n * ```\n * @returns a callable for applying (or batch-applying) the action.\n */\n <Q extends ActionDefinition<any>>(o: Q): ActionSignatureFromDef<Q>;\n\n /**\n * @param o - The query definition to invoke.\n * @example\n * ```ts\n * const result = await client(getEmployeeCount).executeFunction({ department: \"Engineering\" });\n * ```\n * @returns a callable for executing the query function.\n */\n <Q extends QueryDefinition<any>>(o: Q): QuerySignatureFromDef<Q>;\n\n /**\n * @param experiment - The experiment marker that gates an unstable feature.\n * @example\n * ```ts\n * const employee = await client(__EXPERIMENTAL__NOT_SUPPORTED_YET__fetchOneByRid)\n * .fetchOneByRid(Employee, \"ri.phonograph2-objects.main.object.1234\");\n * ```\n * @returns the experiment-specific function surface.\n */\n <\n Q extends\n | Experiment<\"2.0.8\">\n | Experiment<\"2.1.0\">\n | Experiment<\"2.59.0\">\n | Experiment<\"2.2.0\">\n | Experiment<\"2.8.0\">\n | Experiment<\"2.19.0\">,\n >(\n experiment: Q,\n ): ExperimentFns<Q>;\n\n /**\n * Fetches runtime metadata for the given ontology definition. The returned shape\n * is dispatched on the kind of definition passed: {@link ObjectMetadata},\n * {@link InterfaceMetadata}, {@link ActionMetadata}, or {@link QueryMetadata}.\n * @param o - The object type, interface, action, or query definition to look up.\n * @example\n * ```ts\n * const meta = await client.fetchMetadata(Employee);\n * console.log(meta.displayName, meta.description);\n * ```\n * @returns a promise resolving to the metadata for the given definition.\n */\n fetchMetadata<\n Q extends\n | ObjectTypeDefinition\n | InterfaceDefinition\n | ActionDefinition<any>\n | QueryDefinition<any>,\n >(\n o: Q,\n ): Promise<\n Q extends ObjectTypeDefinition\n ? ObjectMetadata\n : Q extends InterfaceDefinition\n ? InterfaceMetadata\n : Q extends ActionDefinition<any>\n ? ActionMetadata\n : Q extends QueryDefinition<any>\n ? QueryMetadata\n : never\n >;\n\n /** @internal */\n [additionalContext]: MinimalClient;\n}\n\n// DO NOT EXPORT FROM PACKAGE\n/** @internal */\nexport const additionalContext: unique symbol = Symbol(\"additionalContext\");\n\n// BEGIN: THIS IS GENERATED CODE. DO NOT EDIT.\nconst MaxOsdkVersion = \"2.74.0\";\n// END: THIS IS GENERATED CODE. DO NOT EDIT.\nexport type MaxOsdkVersion = typeof MaxOsdkVersion;\nconst ErrorMessage: unique symbol = Symbol(\"ErrorMessage\");\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AA2BA;;AAkIA;AACA;AACA,OAAO,MAAMA,iBAAgC,GAAGC,MAAM,CAAC,mBAAmB,CAAC;;AAE3E;AACA,MAAMC,cAAc,GAAG,QAAQ;AAC/B;;AAEA,MAAMC,YAA2B,GAAGF,MAAM,CAAC,cAAc,CAAC","ignoreList":[]}
1
+ {"version":3,"file":"Client.js","names":["additionalContext","Symbol","MaxOsdkVersion","ErrorMessage"],"sources":["Client.ts"],"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 */\n\nimport type {\n ActionDefinition,\n ActionMetadata,\n CompileTimeMetadata,\n InterfaceDefinition,\n InterfaceMetadata,\n ObjectMetadata,\n ObjectSet,\n ObjectTypeDefinition,\n QueryDefinition,\n QueryMetadata,\n VersionBound,\n} from \"@osdk/api\";\nimport type {\n Experiment,\n ExperimentFns,\n MinimalObjectSet,\n} from \"@osdk/api/unstable\";\nimport type { SharedClient } from \"@osdk/shared.client2\";\n\nimport type { ActionSignatureFromDef } from \"./actions/applyAction.js\";\nimport type { MinimalClient } from \"./MinimalClientContext.js\";\nimport type { QuerySignatureFromDef } from \"./queries/types.js\";\nimport type { SatisfiesSemver } from \"./SatisfiesSemver.js\";\n\n// eslint-disable-next-line @typescript-eslint/consistent-type-imports\ntype OldSharedClient = import(\"@osdk/shared.client\").SharedClient;\n\nexport type CheckVersionBound<Q> =\n Q extends VersionBound<infer V>\n ? SatisfiesSemver<V, MaxOsdkVersion> extends true\n ? Q\n : Q & {\n [ErrorMessage]: `Your SDK requires a semver compatible version with ${V}. You have ${MaxOsdkVersion}. Update your package.json`;\n }\n : Q;\n\nexport interface Client extends SharedClient, OldSharedClient {\n /**\n * Returns the operation surface for the given ontology definition. The shape of the\n * returned value is dispatched on what kind of definition is passed:\n * - object type → the object set type for that ontology object (typically a generated extension of {@link ObjectSet})\n * - interface → a {@link MinimalObjectSet} for the interface\n * - action → a callable with `applyAction` / `batchApplyAction`\n * - query → a callable with `executeFunction`\n * - experiment → the unstable feature surface for that experiment\n *\n * @param o - The object type definition to wrap.\n * @example\n * ```ts\n * const employees = await client(Employee).fetchPage({ $pageSize: 30 });\n * const employee = await client(Employee).fetchOne(12345);\n * ```\n * @returns an object set scoped to all objects of this type.\n */\n <Q extends ObjectTypeDefinition>(\n o: Q,\n ): unknown extends CompileTimeMetadata<Q>[\"objectSet\"]\n ? ObjectSet<Q>\n : CompileTimeMetadata<Q>[\"objectSet\"];\n\n /**\n * @param o - The interface definition to wrap.\n * @example\n * ```ts\n * const page = await client(MyInterface).fetchPage({ $pageSize: 30 });\n * ```\n * @returns a minimal object set over all objects implementing the interface.\n */\n <Q extends InterfaceDefinition>(\n o: Q,\n ): unknown extends CompileTimeMetadata<Q>[\"objectSet\"]\n ? MinimalObjectSet<Q>\n : CompileTimeMetadata<Q>[\"objectSet\"];\n\n /**\n * @param o - The action definition to invoke.\n * @example\n * ```ts\n * const result = await client(createEmployee).applyAction(\n * { name: \"Jane\", department: \"Engineering\" },\n * { $returnEdits: true },\n * );\n * ```\n * @returns a callable for applying (or batch-applying) the action.\n */\n <Q extends ActionDefinition<any>>(o: Q): ActionSignatureFromDef<Q>;\n\n /**\n * @param o - The query definition to invoke.\n * @example\n * ```ts\n * const result = await client(getEmployeeCount).executeFunction({ department: \"Engineering\" });\n * ```\n * @returns a callable for executing the query function.\n */\n <Q extends QueryDefinition<any>>(o: Q): QuerySignatureFromDef<Q>;\n\n /**\n * @param experiment - The experiment marker that gates an unstable feature.\n * @example\n * ```ts\n * const employee = await client(__EXPERIMENTAL__NOT_SUPPORTED_YET__fetchOneByRid)\n * .fetchOneByRid(Employee, \"ri.phonograph2-objects.main.object.1234\");\n * ```\n * @returns the experiment-specific function surface.\n */\n <\n Q extends\n | Experiment<\"2.0.8\">\n | Experiment<\"2.1.0\">\n | Experiment<\"2.59.0\">\n | Experiment<\"2.2.0\">\n | Experiment<\"2.8.0\">\n | Experiment<\"2.19.0\">,\n >(\n experiment: Q,\n ): ExperimentFns<Q>;\n\n /**\n * Fetches runtime metadata for the given ontology definition. The returned shape\n * is dispatched on the kind of definition passed: {@link ObjectMetadata},\n * {@link InterfaceMetadata}, {@link ActionMetadata}, or {@link QueryMetadata}.\n * @param o - The object type, interface, action, or query definition to look up.\n * @example\n * ```ts\n * const meta = await client.fetchMetadata(Employee);\n * console.log(meta.displayName, meta.description);\n * ```\n * @returns a promise resolving to the metadata for the given definition.\n */\n fetchMetadata<\n Q extends\n | ObjectTypeDefinition\n | InterfaceDefinition\n | ActionDefinition<any>\n | QueryDefinition<any>,\n >(\n o: Q,\n ): Promise<\n Q extends ObjectTypeDefinition\n ? ObjectMetadata\n : Q extends InterfaceDefinition\n ? InterfaceMetadata\n : Q extends ActionDefinition<any>\n ? ActionMetadata\n : Q extends QueryDefinition<any>\n ? QueryMetadata\n : never\n >;\n\n /** @internal */\n [additionalContext]: MinimalClient;\n}\n\n// DO NOT EXPORT FROM PACKAGE\n/** @internal */\nexport const additionalContext: unique symbol = Symbol(\"additionalContext\");\n\n// BEGIN: THIS IS GENERATED CODE. DO NOT EDIT.\nconst MaxOsdkVersion = \"2.74.1\";\n// END: THIS IS GENERATED CODE. DO NOT EDIT.\nexport type MaxOsdkVersion = typeof MaxOsdkVersion;\nconst ErrorMessage: unique symbol = Symbol(\"ErrorMessage\");\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AA2BA;;AAkIA;AACA;AACA,OAAO,MAAMA,iBAAgC,GAAGC,MAAM,CAAC,mBAAmB,CAAC;;AAE3E;AACA,MAAMC,cAAc,GAAG,QAAQ;AAC/B;;AAEA,MAAMC,YAA2B,GAAGF,MAAM,CAAC,cAAc,CAAC","ignoreList":[]}
@@ -250,25 +250,45 @@ export class ObjectSetQuery extends BaseListQuery {
250
250
  }
251
251
  const addedMatches = this.#classifyByWhereMatch(relevant.addedObjects, effectiveWhere);
252
252
  const modifiedMatches = this.#classifyByWhereMatch(relevant.modifiedObjects, effectiveWhere);
253
- const status = optimisticId || addedMatches.uncertain.size > 0 || modifiedMatches.uncertain.size > 0 ? "loading" : "loaded";
254
253
  const {
255
254
  retVal: needsRevalidation
256
255
  } = this.store.batch({
257
256
  optimisticId,
258
257
  changes
259
258
  }, batch => {
260
- const existingKeys = new Set(batch.read(this.cacheKey)?.value?.data);
259
+ const existingEntry = batch.read(this.cacheKey);
260
+ const existingKeys = new Set(existingEntry?.value?.data);
261
+ const reconciliationPlan = getListReconciliationPlan({
262
+ existingKeys,
263
+ addedDefiniteMatches: addedMatches.definite,
264
+ modifiedObjects: relevant.modifiedObjects,
265
+ modifiedMatches,
266
+ deleted: changes.deleted,
267
+ isOptimistic: batch.optimisticWrite,
268
+ getObjectCacheKey: obj => this.#getObjectCacheKey(obj),
269
+ getCachedObjectKey: obj => {
270
+ const key = this.#peekObjectCacheKey(obj);
271
+ if (key == null) {
272
+ return undefined;
273
+ }
274
+ const value = batch.read(key)?.value;
275
+ return value != null && typeof value === "object" ? key : undefined;
276
+ }
277
+ });
261
278
  const {
262
- newList,
263
279
  needsRevalidation
264
- } = reconcileListChanges(existingKeys, addedMatches.definite, relevant.modifiedObjects, modifiedMatches, changes.deleted, batch.optimisticWrite, obj => this.#getObjectCacheKey(obj));
265
- const existingTotalCount = batch.read(this.cacheKey)?.value?.totalCount;
280
+ } = reconciliationPlan;
281
+ const newList = reconcileListChanges(existingKeys, reconciliationPlan);
282
+ const isPendingFetchLoading = this.pendingFetch != null && existingEntry?.status === "loading";
283
+ const hasUncertainMatches = addedMatches.uncertain.size > 0 || modifiedMatches.uncertain.size > 0;
284
+ const status = isPendingFetchLoading || needsRevalidation || optimisticId != null || hasUncertainMatches ? "loading" : "loaded";
285
+ const existingTotalCount = existingEntry?.value?.totalCount;
266
286
  this._updateList(newList, status, batch, {
267
287
  type: "clientOrdered"
268
288
  }, existingTotalCount);
269
289
  return needsRevalidation;
270
290
  });
271
- if (needsRevalidation) {
291
+ if (needsRevalidation && !optimisticId) {
272
292
  return this.revalidate(true);
273
293
  }
274
294
  return undefined;
@@ -303,6 +323,9 @@ export class ObjectSetQuery extends BaseListQuery {
303
323
  const pk = obj.$primaryKey;
304
324
  return this.cacheKeys.get("object", obj.$objectType, pk, this.rdpConfig ?? undefined);
305
325
  }
326
+ #peekObjectCacheKey(obj) {
327
+ return this.cacheKeys.peek("object", obj.$objectType, obj.$primaryKey, this.rdpConfig ?? undefined);
328
+ }
306
329
 
307
330
  // TODO(oxc type-aware): the type-aware typescript/require-await rule does not flag this (it returns a Promise); remove this disable once type-aware linting is enabled.
308
331
  // oxlint-disable-next-line require-await -- intentionally async: returns a Promise to satisfy its declared/contract type; no await needed
@@ -326,15 +349,46 @@ export class ObjectSetQuery extends BaseListQuery {
326
349
  };
327
350
  }
328
351
  }
329
- function reconcileListChanges(existingKeys, addedDefiniteMatches, modifiedObjects, modifiedMatches, deleted, isOptimistic, getObjectCacheKey) {
330
- const objectsToInsert = new Set(addedDefiniteMatches);
352
+ function reconcileListChanges(existingKeys, plan) {
353
+ const newList = [];
354
+ for (const key of existingKeys) {
355
+ if (!plan.keysToRemove.has(key)) {
356
+ newList.push(key);
357
+ }
358
+ }
359
+ newList.push(...plan.keysToInsert);
360
+ return newList;
361
+ }
362
+ function getListReconciliationPlan({
363
+ existingKeys,
364
+ addedDefiniteMatches,
365
+ modifiedObjects,
366
+ modifiedMatches,
367
+ deleted,
368
+ isOptimistic,
369
+ getObjectCacheKey,
370
+ getCachedObjectKey
371
+ }) {
372
+ const keysToInsert = new Set();
331
373
  const keysToRemove = new Set(deleted);
332
374
  let needsRevalidation = false;
375
+ const addIfAvailable = obj => {
376
+ const key = getCachedObjectKey(obj);
377
+ if (key == null) {
378
+ needsRevalidation = true;
379
+ return;
380
+ }
381
+ if (existingKeys.has(key)) {
382
+ return;
383
+ }
384
+ keysToInsert.add(key);
385
+ };
386
+ for (const obj of addedDefiniteMatches) {
387
+ addIfAvailable(obj);
388
+ }
333
389
  for (const obj of modifiedObjects) {
334
390
  if (modifiedMatches.definite.has(obj)) {
335
- if (!existingKeys.has(getObjectCacheKey(obj))) {
336
- objectsToInsert.add(obj);
337
- }
391
+ addIfAvailable(obj);
338
392
  } else if (!isOptimistic) {
339
393
  keysToRemove.add(getObjectCacheKey(obj));
340
394
  if (modifiedMatches.uncertain.has(obj)) {
@@ -342,17 +396,9 @@ function reconcileListChanges(existingKeys, addedDefiniteMatches, modifiedObject
342
396
  }
343
397
  }
344
398
  }
345
- const newList = [];
346
- for (const key of existingKeys) {
347
- if (!keysToRemove.has(key)) {
348
- newList.push(key);
349
- }
350
- }
351
- for (const obj of objectsToInsert) {
352
- newList.push(getObjectCacheKey(obj));
353
- }
354
399
  return {
355
- newList,
400
+ keysToInsert,
401
+ keysToRemove,
356
402
  needsRevalidation
357
403
  };
358
404
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ObjectSetQuery.js","names":["additionalContext","getWireObjectSet","extractRdpDefinition","BaseListQuery","DEBUG_ONLY__changesToString","getObjectTypesThatInvalidate","API_NAME_IDX","OBJECT_API_NAME_IDX","objectSortaMatchesWhereClause","objectMatchesWhereClause","OrderBySortingStrategy","ObjectSetQuery","baseObjectSetWire","operations","composedObjectSet","objectTypes","requiresServerEvaluation","resultTypeApiName","rdpInvalidationSet","constructor","store","subject","cacheKey","opts","process","env","NODE_ENV","client","logger","child","msgPrefix","otherKeys","map","x","JSON","stringify","join","undefined","composeObjectSet","baseWire","parse","extractObjectTypes","pivotTo","union","length","intersect","subtract","extractTypeFromWireObjectSet","autoFetchMore","minResultsToLoad","Number","MAX_SAFE_INTEGER","Math","max","pageSize","rdpConfig","withProperties","selectFields","select","rawSelect","#composeObjectSet","result","baseObjectSet","where","#extractObjectTypes","types","Set","baseTypeName","add","addTypesFromObjectSets","#addTypesFromObjectSets","sets","os","typeName","#extractTypeFromWireObjectSet","wire","type","objectType","interfaceType","registerCacheChanges","batch","changes","registerObjectSet","fetchPageData","signal","orderBy","Object","keys","sortingStrategy","wireObjectSet","resultType","invalidationSet","apiName","computeInvalidationTypes","resp","fetchPage","$nextPageToken","nextPageToken","$pageSize","getEffectiveFetchPageSize","$includeRid","$select","$orderBy","options","$loadPropertySecurityMetadata","aborted","Error","handleFetchError","error","_status","subjects","get","existingTotalCount","read","value","totalCount","writeToStore","data","registerStreamUpdates","sub","createWebsocketSubscription","maybeUpdateAndRevalidate","optimisticId","methodName","debug","modified","has","handleServerRevalidation","handleLocalUpdate","#handleServerRevalidation","added","addedObjects","modifiedObjects","revalidate","deletedKey","deleted","getRelevantChanges","#getRelevantChanges","resultApiName","hasRelevantDeletions","key","#handleLocalUpdate","whereClause","effectiveWhere","whereCanonicalizer","canonicalize","$and","relevant","addedMatches","classifyByWhereMatch","modifiedMatches","status","uncertain","size","retVal","needsRevalidation","existingKeys","newList","reconcileListChanges","definite","optimisticWrite","obj","getObjectCacheKey","_updateList","#classifyByWhereMatch","objects","#computeInvalidationTypes","#getObjectCacheKey","pk","$primaryKey","cacheKeys","$objectType","invalidateObjectType","Promise","resolve","createPayload","params","resolvedList","resolvedData","isOptimistic","fetchMore","hasMore","lastUpdated","objectSet","addedDefiniteMatches","objectsToInsert","keysToRemove","push"],"sources":["ObjectSetQuery.ts"],"sourcesContent":["/*\n * Copyright 2026 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 */\n\nimport type { ObjectSet, Osdk, PageResult } from \"@osdk/api\";\nimport type { ObjectSet as WireObjectSet } from \"@osdk/foundry.ontologies\";\nimport type { Observable, Subscription } from \"rxjs\";\n\nimport { additionalContext } from \"../../../Client.js\";\nimport type { InterfaceHolder } from \"../../../object/convertWireToOsdkObjects/InterfaceHolder.js\";\nimport type { ObjectHolder } from \"../../../object/convertWireToOsdkObjects/ObjectHolder.js\";\nimport { getWireObjectSet } from \"../../../objectSet/createObjectSet.js\";\nimport { extractRdpDefinition } from \"../../../util/extractRdpDefinition.js\";\nimport type { ObjectSetPayload } from \"../../ObjectSetPayload.js\";\nimport type { Status } from \"../../ObservableClient/common.js\";\nimport { BaseListQuery } from \"../base-list/BaseListQuery.js\";\nimport type { BatchContext } from \"../BatchContext.js\";\nimport type { CacheKey } from \"../CacheKey.js\";\nimport type { Canonical } from \"../Canonical.js\";\nimport { type Changes, DEBUG_ONLY__changesToString } from \"../Changes.js\";\nimport { getObjectTypesThatInvalidate } from \"../getObjectTypesThatInvalidate.js\";\nimport type { Entry } from \"../Layer.js\";\nimport {\n API_NAME_IDX as OBJECT_API_NAME_IDX,\n type ObjectCacheKey,\n} from \"../object/ObjectCacheKey.js\";\nimport { objectSortaMatchesWhereClause as objectMatchesWhereClause } from \"../objectMatchesWhereClause.js\";\nimport type { OptimisticId } from \"../OptimisticId.js\";\nimport type { Rdp } from \"../RdpCanonicalizer.js\";\nimport type { SimpleWhereClause } from \"../SimpleWhereClause.js\";\nimport { OrderBySortingStrategy } from \"../sorting/SortingStrategy.js\";\nimport type { Store } from \"../Store.js\";\nimport type { SubjectPayload } from \"../SubjectPayload.js\";\nimport type {\n ObjectSetCacheKey,\n ObjectSetOperations,\n} from \"./ObjectSetCacheKey.js\";\nimport type { ObjectSetQueryOptions } from \"./ObjectSetQueryOptions.js\";\n\nexport class ObjectSetQuery extends BaseListQuery<\n ObjectSetCacheKey,\n ObjectSetPayload,\n ObjectSetQueryOptions\n> {\n #baseObjectSetWire: string;\n #operations: Canonical<ObjectSetOperations>;\n #composedObjectSet: ObjectSet<any, any>;\n #objectTypes: Set<string>;\n #requiresServerEvaluation: boolean;\n #resultTypeApiName: string;\n\n // Object types this query's RDPs traverse; an edit to any of these triggers\n // revalidation. Lazily populated on first fetch when `withProperties` is set.\n #rdpInvalidationSet: ReadonlySet<string> | undefined;\n\n constructor(\n store: Store,\n subject: Observable<SubjectPayload<ObjectSetCacheKey>>,\n baseObjectSetWire: string,\n operations: Canonical<ObjectSetOperations>,\n cacheKey: ObjectSetCacheKey,\n opts: ObjectSetQueryOptions,\n ) {\n super(\n store,\n subject,\n opts,\n cacheKey,\n process.env.NODE_ENV !== \"production\"\n ? store.client[additionalContext].logger?.child(\n {},\n {\n msgPrefix: `ObjectSetQuery<${cacheKey.otherKeys\n .map((x) => JSON.stringify(x))\n .join(\", \")}>`,\n },\n )\n : undefined,\n );\n\n this.#baseObjectSetWire = baseObjectSetWire;\n this.#operations = operations;\n this.#composedObjectSet = this.#composeObjectSet(opts);\n\n const baseWire: WireObjectSet = JSON.parse(baseObjectSetWire);\n this.#objectTypes = this.#extractObjectTypes(baseWire, opts);\n\n this.#requiresServerEvaluation = !!(\n operations.pivotTo ||\n (operations.union && operations.union.length > 0) ||\n (operations.intersect && operations.intersect.length > 0) ||\n (operations.subtract && operations.subtract.length > 0)\n );\n\n this.#resultTypeApiName =\n ObjectSetQuery.#extractTypeFromWireObjectSet(baseWire) ?? \"\";\n\n if (opts.autoFetchMore === true) {\n this.minResultsToLoad = Number.MAX_SAFE_INTEGER;\n } else if (typeof opts.autoFetchMore === \"number\") {\n this.minResultsToLoad = Math.max(0, opts.autoFetchMore);\n } else {\n this.minResultsToLoad = opts.pageSize || 0;\n }\n }\n\n get objectTypes(): ReadonlySet<string> {\n return this.#objectTypes;\n }\n\n public override get rdpConfig(): Canonical<Rdp> | undefined {\n return this.#operations.withProperties;\n }\n\n public get selectFields(): Canonical<readonly string[]> | undefined {\n return this.#operations.select;\n }\n\n protected get rawSelect(): Canonical<readonly string[]> | undefined {\n return this.#operations.select;\n }\n\n #composeObjectSet(opts: ObjectSetQueryOptions): ObjectSet<any, any> {\n let result = opts.baseObjectSet;\n\n if (opts.withProperties) {\n result = result.withProperties(opts.withProperties);\n }\n if (opts.where) {\n result = result.where(opts.where);\n }\n if (opts.union && opts.union.length > 0) {\n result = result.union(...opts.union);\n }\n if (opts.intersect && opts.intersect.length > 0) {\n result = result.intersect(...opts.intersect);\n }\n if (opts.subtract && opts.subtract.length > 0) {\n result = result.subtract(...opts.subtract);\n }\n if (opts.pivotTo) {\n result = result.pivotTo(opts.pivotTo);\n }\n\n return result;\n }\n\n #extractObjectTypes(\n baseWire: WireObjectSet,\n opts: ObjectSetQueryOptions,\n ): Set<string> {\n const types = new Set<string>();\n const baseTypeName = ObjectSetQuery.#extractTypeFromWireObjectSet(baseWire);\n if (baseTypeName) {\n types.add(baseTypeName);\n }\n ObjectSetQuery.#addTypesFromObjectSets(opts.union, types);\n ObjectSetQuery.#addTypesFromObjectSets(opts.intersect, types);\n ObjectSetQuery.#addTypesFromObjectSets(opts.subtract, types);\n return types;\n }\n\n static #addTypesFromObjectSets(\n sets: ReadonlyArray<ObjectSet<any, any>> | undefined,\n types: Set<string>,\n ): void {\n if (!sets) {\n return;\n }\n for (const os of sets) {\n const typeName = ObjectSetQuery.#extractTypeFromWireObjectSet(\n getWireObjectSet(os),\n );\n if (typeName) {\n types.add(typeName);\n }\n }\n }\n\n static #extractTypeFromWireObjectSet(\n wire: WireObjectSet,\n ): string | undefined {\n if (wire.type === \"base\") {\n return wire.objectType;\n }\n if (wire.type === \"interfaceBase\") {\n return wire.interfaceType;\n }\n return undefined;\n }\n\n /**\n * Register changes to the cache specific to ObjectSetQuery\n */\n protected registerCacheChanges(batch: BatchContext): void {\n batch.changes.registerObjectSet(this.cacheKey);\n }\n\n /**\n * Implements fetchPageData from BaseListQuery template method\n * Fetches a page of data from the composed ObjectSet\n */\n protected async fetchPageData(\n signal: AbortSignal | undefined,\n ): Promise<PageResult<Osdk.Instance<any>>> {\n if (\n this.#operations.orderBy &&\n Object.keys(this.#operations.orderBy).length > 0 &&\n !(this.sortingStrategy instanceof OrderBySortingStrategy)\n ) {\n const wireObjectSet = getWireObjectSet(this.#composedObjectSet);\n const { resultType, invalidationSet } =\n await getObjectTypesThatInvalidate(\n this.store.client[additionalContext],\n wireObjectSet,\n );\n this.sortingStrategy = new OrderBySortingStrategy(\n resultType.apiName,\n this.#operations.orderBy,\n await extractRdpDefinition(\n this.store.client[additionalContext],\n wireObjectSet,\n ),\n );\n this.#rdpInvalidationSet = invalidationSet;\n }\n\n if (\n this.#rdpInvalidationSet == null &&\n this.#operations.withProperties != null\n ) {\n const wireObjectSet = getWireObjectSet(this.#composedObjectSet);\n this.#rdpInvalidationSet =\n await this.#computeInvalidationTypes(wireObjectSet);\n }\n\n // Fetch the data with pagination\n const resp = await this.#composedObjectSet.fetchPage({\n $nextPageToken: this.nextPageToken,\n $pageSize: this.getEffectiveFetchPageSize(),\n $includeRid: true,\n ...(this.#operations.select && this.#operations.select.length > 0\n ? { $select: this.#operations.select }\n : {}),\n // OrderBy is already applied in the composed ObjectSet\n ...(this.#operations.orderBy &&\n Object.keys(this.#operations.orderBy).length > 0\n ? { $orderBy: this.#operations.orderBy }\n : {}),\n ...(this.options.$loadPropertySecurityMetadata\n ? { $loadPropertySecurityMetadata: true }\n : {}),\n });\n\n if (signal?.aborted) {\n throw new Error(\"Aborted\");\n }\n\n this.nextPageToken = resp.nextPageToken;\n\n return resp;\n }\n\n protected handleFetchError(\n error: unknown,\n _status: Status,\n batch: BatchContext,\n ): Entry<ObjectSetCacheKey> {\n this.logger?.error(\"error\", error);\n this.store.subjects.get(this.cacheKey).error(error);\n\n const existingTotalCount = batch.read(this.cacheKey)?.value?.totalCount;\n return this.writeToStore(\n { data: [], totalCount: existingTotalCount },\n \"error\",\n batch,\n );\n }\n\n registerStreamUpdates(sub: Subscription): void {\n this.createWebsocketSubscription(\n this.#composedObjectSet,\n sub,\n \"observeObjectSet\",\n );\n }\n\n maybeUpdateAndRevalidate = (\n changes: Changes,\n optimisticId: OptimisticId | undefined,\n ): Promise<void> | undefined => {\n if (process.env.NODE_ENV !== \"production\") {\n this.logger\n ?.child({ methodName: \"maybeUpdateAndRevalidate\" })\n .debug(DEBUG_ONLY__changesToString(changes));\n this.logger\n ?.child({ methodName: \"maybeUpdateAndRevalidate\" })\n .debug(`Already in changes? ${changes.modified.has(this.cacheKey)}`);\n }\n\n if (changes.modified.has(this.cacheKey)) {\n return;\n }\n changes.modified.add(this.cacheKey);\n\n try {\n if (this.#requiresServerEvaluation) {\n return this.#handleServerRevalidation(changes);\n }\n return this.#handleLocalUpdate(changes, optimisticId);\n } finally {\n if (process.env.NODE_ENV !== \"production\") {\n this.logger\n ?.child({ methodName: \"maybeUpdateAndRevalidate\" })\n .debug(\"in finally\");\n }\n }\n };\n\n #handleServerRevalidation(changes: Changes): Promise<void> | undefined {\n for (const objectType of this.#objectTypes) {\n const added = changes.addedObjects.get(objectType);\n const modified = changes.modifiedObjects.get(objectType);\n if ((added && added.length > 0) || (modified && modified.length > 0)) {\n return this.revalidate(true);\n }\n }\n\n for (const deletedKey of changes.deleted) {\n if (\n deletedKey.type === \"object\" &&\n this.#objectTypes.has(deletedKey.otherKeys[OBJECT_API_NAME_IDX])\n ) {\n return this.revalidate(true);\n }\n }\n\n return undefined;\n }\n\n #getRelevantChanges(\n changes: Changes,\n ):\n | { addedObjects: ObjectHolder[]; modifiedObjects: ObjectHolder[] }\n | undefined {\n const resultApiName = this.#resultTypeApiName;\n const addedObjects = changes.addedObjects.get(resultApiName) ?? [];\n const modifiedObjects = changes.modifiedObjects.get(resultApiName) ?? [];\n\n let hasRelevantDeletions = false;\n for (const key of changes.deleted) {\n if (\n key.type === \"object\" &&\n key.otherKeys[OBJECT_API_NAME_IDX] === resultApiName\n ) {\n hasRelevantDeletions = true;\n break;\n }\n }\n\n if (\n addedObjects.length === 0 &&\n modifiedObjects.length === 0 &&\n !hasRelevantDeletions\n ) {\n return undefined;\n }\n\n return { addedObjects, modifiedObjects };\n }\n\n #handleLocalUpdate(\n changes: Changes,\n optimisticId: OptimisticId | undefined,\n ): Promise<void> | undefined {\n const whereClause = this.#operations.where as\n | Canonical<SimpleWhereClause>\n | undefined;\n const effectiveWhere =\n whereClause ?? this.store.whereCanonicalizer.canonicalize({ $and: [] });\n\n const relevant = this.#getRelevantChanges(changes);\n if (!relevant) {\n return undefined;\n }\n\n const addedMatches = this.#classifyByWhereMatch(\n relevant.addedObjects,\n effectiveWhere,\n );\n const modifiedMatches = this.#classifyByWhereMatch(\n relevant.modifiedObjects,\n effectiveWhere,\n );\n\n const status =\n optimisticId ||\n addedMatches.uncertain.size > 0 ||\n modifiedMatches.uncertain.size > 0\n ? \"loading\"\n : \"loaded\";\n\n const { retVal: needsRevalidation } = this.store.batch(\n { optimisticId, changes },\n (batch) => {\n const existingKeys = new Set(batch.read(this.cacheKey)?.value?.data);\n\n const { newList, needsRevalidation } = reconcileListChanges(\n existingKeys,\n addedMatches.definite,\n relevant.modifiedObjects,\n modifiedMatches,\n changes.deleted,\n batch.optimisticWrite,\n (obj) => this.#getObjectCacheKey(obj),\n );\n\n const existingTotalCount = batch.read(this.cacheKey)?.value?.totalCount;\n this._updateList(\n newList,\n status,\n batch,\n { type: \"clientOrdered\" },\n existingTotalCount,\n );\n\n return needsRevalidation;\n },\n );\n\n if (needsRevalidation) {\n return this.revalidate(true);\n }\n return undefined;\n }\n\n #classifyByWhereMatch(\n objects: ReadonlyArray<ObjectHolder | InterfaceHolder>,\n whereClause: Canonical<SimpleWhereClause>,\n ): {\n definite: ReadonlySet<ObjectHolder | InterfaceHolder>;\n uncertain: ReadonlySet<ObjectHolder | InterfaceHolder>;\n } {\n const definite = new Set<ObjectHolder | InterfaceHolder>();\n const uncertain = new Set<ObjectHolder | InterfaceHolder>();\n for (const obj of objects) {\n if (objectMatchesWhereClause(obj, whereClause, true)) {\n definite.add(obj);\n } else if (objectMatchesWhereClause(obj, whereClause, false)) {\n uncertain.add(obj);\n }\n }\n return { definite, uncertain };\n }\n\n async #computeInvalidationTypes(\n wireObjectSet: WireObjectSet,\n ): Promise<Set<string>> {\n try {\n const { invalidationSet } = await getObjectTypesThatInvalidate(\n this.store.client[additionalContext],\n wireObjectSet,\n );\n return invalidationSet;\n } catch (error) {\n this.store.logger?.error(\n \"Failed to compute invalidation types for object set query, falling back to empty set\",\n error,\n );\n return new Set();\n }\n }\n\n #getObjectCacheKey(obj: {\n $objectType: string;\n $primaryKey: string | number;\n }): ObjectCacheKey {\n const pk = obj.$primaryKey;\n return this.cacheKeys.get<ObjectCacheKey>(\n \"object\",\n obj.$objectType,\n pk,\n this.rdpConfig ?? undefined,\n );\n }\n\n // TODO(oxc type-aware): the type-aware typescript/require-await rule does not flag this (it returns a Promise); remove this disable once type-aware linting is enabled.\n // oxlint-disable-next-line require-await -- intentionally async: returns a Promise to satisfy its declared/contract type; no await needed\n invalidateObjectType = async (\n objectType: string,\n changes: Changes | undefined,\n ): Promise<void> => {\n if (\n this.#objectTypes.has(objectType) ||\n (this.#rdpInvalidationSet?.has(objectType) ?? false)\n ) {\n changes?.modified.add(this.cacheKey);\n return this.revalidate(true);\n }\n return Promise.resolve();\n };\n\n protected createPayload(params: {\n resolvedData: any[] | undefined;\n isOptimistic: boolean;\n status: Status;\n lastUpdated: number;\n totalCount?: string;\n }): ObjectSetPayload {\n return {\n resolvedList: params.resolvedData,\n isOptimistic: params.isOptimistic,\n fetchMore: this.fetchMore,\n hasMore: this.nextPageToken != null,\n status: params.status,\n lastUpdated: params.lastUpdated,\n objectSet: this.#composedObjectSet,\n totalCount: params.totalCount,\n };\n }\n}\n\nfunction reconcileListChanges(\n existingKeys: ReadonlySet<ObjectCacheKey>,\n addedDefiniteMatches: ReadonlySet<ObjectHolder | InterfaceHolder>,\n modifiedObjects: ReadonlyArray<ObjectHolder>,\n modifiedMatches: {\n definite: ReadonlySet<ObjectHolder | InterfaceHolder>;\n uncertain: ReadonlySet<ObjectHolder | InterfaceHolder>;\n },\n deleted: ReadonlySet<CacheKey>,\n isOptimistic: boolean,\n getObjectCacheKey: (obj: ObjectHolder | InterfaceHolder) => ObjectCacheKey,\n): { newList: ObjectCacheKey[]; needsRevalidation: boolean } {\n const objectsToInsert = new Set<ObjectHolder | InterfaceHolder>(\n addedDefiniteMatches,\n );\n const keysToRemove = new Set<CacheKey>(deleted);\n\n let needsRevalidation = false;\n for (const obj of modifiedObjects) {\n if (modifiedMatches.definite.has(obj)) {\n if (!existingKeys.has(getObjectCacheKey(obj))) {\n objectsToInsert.add(obj);\n }\n } else if (!isOptimistic) {\n keysToRemove.add(getObjectCacheKey(obj));\n if (modifiedMatches.uncertain.has(obj)) {\n needsRevalidation = true;\n }\n }\n }\n\n const newList: ObjectCacheKey[] = [];\n for (const key of existingKeys) {\n if (!keysToRemove.has(key)) {\n newList.push(key);\n }\n }\n for (const obj of objectsToInsert) {\n newList.push(getObjectCacheKey(obj));\n }\n\n return { newList, needsRevalidation };\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"ObjectSetQuery.js","names":["additionalContext","getWireObjectSet","extractRdpDefinition","BaseListQuery","DEBUG_ONLY__changesToString","getObjectTypesThatInvalidate","API_NAME_IDX","OBJECT_API_NAME_IDX","objectSortaMatchesWhereClause","objectMatchesWhereClause","OrderBySortingStrategy","ObjectSetQuery","baseObjectSetWire","operations","composedObjectSet","objectTypes","requiresServerEvaluation","resultTypeApiName","rdpInvalidationSet","constructor","store","subject","cacheKey","opts","process","env","NODE_ENV","client","logger","child","msgPrefix","otherKeys","map","x","JSON","stringify","join","undefined","composeObjectSet","baseWire","parse","extractObjectTypes","pivotTo","union","length","intersect","subtract","extractTypeFromWireObjectSet","autoFetchMore","minResultsToLoad","Number","MAX_SAFE_INTEGER","Math","max","pageSize","rdpConfig","withProperties","selectFields","select","rawSelect","#composeObjectSet","result","baseObjectSet","where","#extractObjectTypes","types","Set","baseTypeName","add","addTypesFromObjectSets","#addTypesFromObjectSets","sets","os","typeName","#extractTypeFromWireObjectSet","wire","type","objectType","interfaceType","registerCacheChanges","batch","changes","registerObjectSet","fetchPageData","signal","orderBy","Object","keys","sortingStrategy","wireObjectSet","resultType","invalidationSet","apiName","computeInvalidationTypes","resp","fetchPage","$nextPageToken","nextPageToken","$pageSize","getEffectiveFetchPageSize","$includeRid","$select","$orderBy","options","$loadPropertySecurityMetadata","aborted","Error","handleFetchError","error","_status","subjects","get","existingTotalCount","read","value","totalCount","writeToStore","data","registerStreamUpdates","sub","createWebsocketSubscription","maybeUpdateAndRevalidate","optimisticId","methodName","debug","modified","has","handleServerRevalidation","handleLocalUpdate","#handleServerRevalidation","added","addedObjects","modifiedObjects","revalidate","deletedKey","deleted","getRelevantChanges","#getRelevantChanges","resultApiName","hasRelevantDeletions","key","#handleLocalUpdate","whereClause","effectiveWhere","whereCanonicalizer","canonicalize","$and","relevant","addedMatches","classifyByWhereMatch","modifiedMatches","retVal","needsRevalidation","existingEntry","existingKeys","reconciliationPlan","getListReconciliationPlan","addedDefiniteMatches","definite","isOptimistic","optimisticWrite","getObjectCacheKey","obj","getCachedObjectKey","peekObjectCacheKey","newList","reconcileListChanges","isPendingFetchLoading","pendingFetch","status","hasUncertainMatches","uncertain","size","_updateList","#classifyByWhereMatch","objects","#computeInvalidationTypes","#getObjectCacheKey","pk","$primaryKey","cacheKeys","$objectType","#peekObjectCacheKey","peek","invalidateObjectType","Promise","resolve","createPayload","params","resolvedList","resolvedData","fetchMore","hasMore","lastUpdated","objectSet","plan","keysToRemove","push","keysToInsert","addIfAvailable"],"sources":["ObjectSetQuery.ts"],"sourcesContent":["/*\n * Copyright 2026 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 */\n\nimport type { ObjectSet, Osdk, PageResult } from \"@osdk/api\";\nimport type { ObjectSet as WireObjectSet } from \"@osdk/foundry.ontologies\";\nimport type { Observable, Subscription } from \"rxjs\";\n\nimport { additionalContext } from \"../../../Client.js\";\nimport type { InterfaceHolder } from \"../../../object/convertWireToOsdkObjects/InterfaceHolder.js\";\nimport type { ObjectHolder } from \"../../../object/convertWireToOsdkObjects/ObjectHolder.js\";\nimport { getWireObjectSet } from \"../../../objectSet/createObjectSet.js\";\nimport { extractRdpDefinition } from \"../../../util/extractRdpDefinition.js\";\nimport type { ObjectSetPayload } from \"../../ObjectSetPayload.js\";\nimport type { Status } from \"../../ObservableClient/common.js\";\nimport { BaseListQuery } from \"../base-list/BaseListQuery.js\";\nimport type { BatchContext } from \"../BatchContext.js\";\nimport type { CacheKey } from \"../CacheKey.js\";\nimport type { Canonical } from \"../Canonical.js\";\nimport { type Changes, DEBUG_ONLY__changesToString } from \"../Changes.js\";\nimport { getObjectTypesThatInvalidate } from \"../getObjectTypesThatInvalidate.js\";\nimport type { Entry } from \"../Layer.js\";\nimport {\n API_NAME_IDX as OBJECT_API_NAME_IDX,\n type ObjectCacheKey,\n} from \"../object/ObjectCacheKey.js\";\nimport { objectSortaMatchesWhereClause as objectMatchesWhereClause } from \"../objectMatchesWhereClause.js\";\nimport type { OptimisticId } from \"../OptimisticId.js\";\nimport type { Rdp } from \"../RdpCanonicalizer.js\";\nimport type { SimpleWhereClause } from \"../SimpleWhereClause.js\";\nimport { OrderBySortingStrategy } from \"../sorting/SortingStrategy.js\";\nimport type { Store } from \"../Store.js\";\nimport type { SubjectPayload } from \"../SubjectPayload.js\";\nimport type {\n ObjectSetCacheKey,\n ObjectSetOperations,\n} from \"./ObjectSetCacheKey.js\";\nimport type { ObjectSetQueryOptions } from \"./ObjectSetQueryOptions.js\";\n\nexport class ObjectSetQuery extends BaseListQuery<\n ObjectSetCacheKey,\n ObjectSetPayload,\n ObjectSetQueryOptions\n> {\n #baseObjectSetWire: string;\n #operations: Canonical<ObjectSetOperations>;\n #composedObjectSet: ObjectSet<any, any>;\n #objectTypes: Set<string>;\n #requiresServerEvaluation: boolean;\n #resultTypeApiName: string;\n\n // Object types this query's RDPs traverse; an edit to any of these triggers\n // revalidation. Lazily populated on first fetch when `withProperties` is set.\n #rdpInvalidationSet: ReadonlySet<string> | undefined;\n\n constructor(\n store: Store,\n subject: Observable<SubjectPayload<ObjectSetCacheKey>>,\n baseObjectSetWire: string,\n operations: Canonical<ObjectSetOperations>,\n cacheKey: ObjectSetCacheKey,\n opts: ObjectSetQueryOptions,\n ) {\n super(\n store,\n subject,\n opts,\n cacheKey,\n process.env.NODE_ENV !== \"production\"\n ? store.client[additionalContext].logger?.child(\n {},\n {\n msgPrefix: `ObjectSetQuery<${cacheKey.otherKeys\n .map((x) => JSON.stringify(x))\n .join(\", \")}>`,\n },\n )\n : undefined,\n );\n\n this.#baseObjectSetWire = baseObjectSetWire;\n this.#operations = operations;\n this.#composedObjectSet = this.#composeObjectSet(opts);\n\n const baseWire: WireObjectSet = JSON.parse(baseObjectSetWire);\n this.#objectTypes = this.#extractObjectTypes(baseWire, opts);\n\n this.#requiresServerEvaluation = !!(\n operations.pivotTo ||\n (operations.union && operations.union.length > 0) ||\n (operations.intersect && operations.intersect.length > 0) ||\n (operations.subtract && operations.subtract.length > 0)\n );\n\n this.#resultTypeApiName =\n ObjectSetQuery.#extractTypeFromWireObjectSet(baseWire) ?? \"\";\n\n if (opts.autoFetchMore === true) {\n this.minResultsToLoad = Number.MAX_SAFE_INTEGER;\n } else if (typeof opts.autoFetchMore === \"number\") {\n this.minResultsToLoad = Math.max(0, opts.autoFetchMore);\n } else {\n this.minResultsToLoad = opts.pageSize || 0;\n }\n }\n\n get objectTypes(): ReadonlySet<string> {\n return this.#objectTypes;\n }\n\n public override get rdpConfig(): Canonical<Rdp> | undefined {\n return this.#operations.withProperties;\n }\n\n public get selectFields(): Canonical<readonly string[]> | undefined {\n return this.#operations.select;\n }\n\n protected get rawSelect(): Canonical<readonly string[]> | undefined {\n return this.#operations.select;\n }\n\n #composeObjectSet(opts: ObjectSetQueryOptions): ObjectSet<any, any> {\n let result = opts.baseObjectSet;\n\n if (opts.withProperties) {\n result = result.withProperties(opts.withProperties);\n }\n if (opts.where) {\n result = result.where(opts.where);\n }\n if (opts.union && opts.union.length > 0) {\n result = result.union(...opts.union);\n }\n if (opts.intersect && opts.intersect.length > 0) {\n result = result.intersect(...opts.intersect);\n }\n if (opts.subtract && opts.subtract.length > 0) {\n result = result.subtract(...opts.subtract);\n }\n if (opts.pivotTo) {\n result = result.pivotTo(opts.pivotTo);\n }\n\n return result;\n }\n\n #extractObjectTypes(\n baseWire: WireObjectSet,\n opts: ObjectSetQueryOptions,\n ): Set<string> {\n const types = new Set<string>();\n const baseTypeName = ObjectSetQuery.#extractTypeFromWireObjectSet(baseWire);\n if (baseTypeName) {\n types.add(baseTypeName);\n }\n ObjectSetQuery.#addTypesFromObjectSets(opts.union, types);\n ObjectSetQuery.#addTypesFromObjectSets(opts.intersect, types);\n ObjectSetQuery.#addTypesFromObjectSets(opts.subtract, types);\n return types;\n }\n\n static #addTypesFromObjectSets(\n sets: ReadonlyArray<ObjectSet<any, any>> | undefined,\n types: Set<string>,\n ): void {\n if (!sets) {\n return;\n }\n for (const os of sets) {\n const typeName = ObjectSetQuery.#extractTypeFromWireObjectSet(\n getWireObjectSet(os),\n );\n if (typeName) {\n types.add(typeName);\n }\n }\n }\n\n static #extractTypeFromWireObjectSet(\n wire: WireObjectSet,\n ): string | undefined {\n if (wire.type === \"base\") {\n return wire.objectType;\n }\n if (wire.type === \"interfaceBase\") {\n return wire.interfaceType;\n }\n return undefined;\n }\n\n /**\n * Register changes to the cache specific to ObjectSetQuery\n */\n protected registerCacheChanges(batch: BatchContext): void {\n batch.changes.registerObjectSet(this.cacheKey);\n }\n\n /**\n * Implements fetchPageData from BaseListQuery template method\n * Fetches a page of data from the composed ObjectSet\n */\n protected async fetchPageData(\n signal: AbortSignal | undefined,\n ): Promise<PageResult<Osdk.Instance<any>>> {\n if (\n this.#operations.orderBy &&\n Object.keys(this.#operations.orderBy).length > 0 &&\n !(this.sortingStrategy instanceof OrderBySortingStrategy)\n ) {\n const wireObjectSet = getWireObjectSet(this.#composedObjectSet);\n const { resultType, invalidationSet } =\n await getObjectTypesThatInvalidate(\n this.store.client[additionalContext],\n wireObjectSet,\n );\n this.sortingStrategy = new OrderBySortingStrategy(\n resultType.apiName,\n this.#operations.orderBy,\n await extractRdpDefinition(\n this.store.client[additionalContext],\n wireObjectSet,\n ),\n );\n this.#rdpInvalidationSet = invalidationSet;\n }\n\n if (\n this.#rdpInvalidationSet == null &&\n this.#operations.withProperties != null\n ) {\n const wireObjectSet = getWireObjectSet(this.#composedObjectSet);\n this.#rdpInvalidationSet =\n await this.#computeInvalidationTypes(wireObjectSet);\n }\n\n // Fetch the data with pagination\n const resp = await this.#composedObjectSet.fetchPage({\n $nextPageToken: this.nextPageToken,\n $pageSize: this.getEffectiveFetchPageSize(),\n $includeRid: true,\n ...(this.#operations.select && this.#operations.select.length > 0\n ? { $select: this.#operations.select }\n : {}),\n // OrderBy is already applied in the composed ObjectSet\n ...(this.#operations.orderBy &&\n Object.keys(this.#operations.orderBy).length > 0\n ? { $orderBy: this.#operations.orderBy }\n : {}),\n ...(this.options.$loadPropertySecurityMetadata\n ? { $loadPropertySecurityMetadata: true }\n : {}),\n });\n\n if (signal?.aborted) {\n throw new Error(\"Aborted\");\n }\n\n this.nextPageToken = resp.nextPageToken;\n\n return resp;\n }\n\n protected handleFetchError(\n error: unknown,\n _status: Status,\n batch: BatchContext,\n ): Entry<ObjectSetCacheKey> {\n this.logger?.error(\"error\", error);\n this.store.subjects.get(this.cacheKey).error(error);\n\n const existingTotalCount = batch.read(this.cacheKey)?.value?.totalCount;\n return this.writeToStore(\n { data: [], totalCount: existingTotalCount },\n \"error\",\n batch,\n );\n }\n\n registerStreamUpdates(sub: Subscription): void {\n this.createWebsocketSubscription(\n this.#composedObjectSet,\n sub,\n \"observeObjectSet\",\n );\n }\n\n maybeUpdateAndRevalidate = (\n changes: Changes,\n optimisticId: OptimisticId | undefined,\n ): Promise<void> | undefined => {\n if (process.env.NODE_ENV !== \"production\") {\n this.logger\n ?.child({ methodName: \"maybeUpdateAndRevalidate\" })\n .debug(DEBUG_ONLY__changesToString(changes));\n this.logger\n ?.child({ methodName: \"maybeUpdateAndRevalidate\" })\n .debug(`Already in changes? ${changes.modified.has(this.cacheKey)}`);\n }\n\n if (changes.modified.has(this.cacheKey)) {\n return;\n }\n changes.modified.add(this.cacheKey);\n\n try {\n if (this.#requiresServerEvaluation) {\n return this.#handleServerRevalidation(changes);\n }\n return this.#handleLocalUpdate(changes, optimisticId);\n } finally {\n if (process.env.NODE_ENV !== \"production\") {\n this.logger\n ?.child({ methodName: \"maybeUpdateAndRevalidate\" })\n .debug(\"in finally\");\n }\n }\n };\n\n #handleServerRevalidation(changes: Changes): Promise<void> | undefined {\n for (const objectType of this.#objectTypes) {\n const added = changes.addedObjects.get(objectType);\n const modified = changes.modifiedObjects.get(objectType);\n if ((added && added.length > 0) || (modified && modified.length > 0)) {\n return this.revalidate(true);\n }\n }\n\n for (const deletedKey of changes.deleted) {\n if (\n deletedKey.type === \"object\" &&\n this.#objectTypes.has(deletedKey.otherKeys[OBJECT_API_NAME_IDX])\n ) {\n return this.revalidate(true);\n }\n }\n\n return undefined;\n }\n\n #getRelevantChanges(\n changes: Changes,\n ):\n | { addedObjects: ObjectHolder[]; modifiedObjects: ObjectHolder[] }\n | undefined {\n const resultApiName = this.#resultTypeApiName;\n const addedObjects = changes.addedObjects.get(resultApiName) ?? [];\n const modifiedObjects = changes.modifiedObjects.get(resultApiName) ?? [];\n\n let hasRelevantDeletions = false;\n for (const key of changes.deleted) {\n if (\n key.type === \"object\" &&\n key.otherKeys[OBJECT_API_NAME_IDX] === resultApiName\n ) {\n hasRelevantDeletions = true;\n break;\n }\n }\n\n if (\n addedObjects.length === 0 &&\n modifiedObjects.length === 0 &&\n !hasRelevantDeletions\n ) {\n return undefined;\n }\n\n return { addedObjects, modifiedObjects };\n }\n\n #handleLocalUpdate(\n changes: Changes,\n optimisticId: OptimisticId | undefined,\n ): Promise<void> | undefined {\n const whereClause = this.#operations.where as\n | Canonical<SimpleWhereClause>\n | undefined;\n const effectiveWhere =\n whereClause ?? this.store.whereCanonicalizer.canonicalize({ $and: [] });\n\n const relevant = this.#getRelevantChanges(changes);\n if (!relevant) {\n return undefined;\n }\n\n const addedMatches = this.#classifyByWhereMatch(\n relevant.addedObjects,\n effectiveWhere,\n );\n const modifiedMatches = this.#classifyByWhereMatch(\n relevant.modifiedObjects,\n effectiveWhere,\n );\n\n const { retVal: needsRevalidation } = this.store.batch(\n { optimisticId, changes },\n (batch) => {\n const existingEntry = batch.read(this.cacheKey);\n const existingKeys = new Set(existingEntry?.value?.data);\n\n const reconciliationPlan = getListReconciliationPlan({\n existingKeys,\n addedDefiniteMatches: addedMatches.definite,\n modifiedObjects: relevant.modifiedObjects,\n modifiedMatches,\n deleted: changes.deleted,\n isOptimistic: batch.optimisticWrite,\n getObjectCacheKey: (obj) => this.#getObjectCacheKey(obj),\n getCachedObjectKey: (obj) => {\n const key = this.#peekObjectCacheKey(obj);\n if (key == null) {\n return undefined;\n }\n const value = batch.read(key)?.value;\n return value != null && typeof value === \"object\" ? key : undefined;\n },\n });\n const { needsRevalidation } = reconciliationPlan;\n const newList = reconcileListChanges(existingKeys, reconciliationPlan);\n\n const isPendingFetchLoading =\n this.pendingFetch != null && existingEntry?.status === \"loading\";\n const hasUncertainMatches =\n addedMatches.uncertain.size > 0 || modifiedMatches.uncertain.size > 0;\n const shouldBeLoading =\n isPendingFetchLoading ||\n needsRevalidation ||\n optimisticId != null ||\n hasUncertainMatches;\n const status = shouldBeLoading ? \"loading\" : \"loaded\";\n\n const existingTotalCount = existingEntry?.value?.totalCount;\n this._updateList(\n newList,\n status,\n batch,\n { type: \"clientOrdered\" },\n existingTotalCount,\n );\n\n return needsRevalidation;\n },\n );\n\n if (needsRevalidation && !optimisticId) {\n return this.revalidate(true);\n }\n return undefined;\n }\n\n #classifyByWhereMatch(\n objects: ReadonlyArray<ObjectHolder | InterfaceHolder>,\n whereClause: Canonical<SimpleWhereClause>,\n ): {\n definite: ReadonlySet<ObjectHolder | InterfaceHolder>;\n uncertain: ReadonlySet<ObjectHolder | InterfaceHolder>;\n } {\n const definite = new Set<ObjectHolder | InterfaceHolder>();\n const uncertain = new Set<ObjectHolder | InterfaceHolder>();\n for (const obj of objects) {\n if (objectMatchesWhereClause(obj, whereClause, true)) {\n definite.add(obj);\n } else if (objectMatchesWhereClause(obj, whereClause, false)) {\n uncertain.add(obj);\n }\n }\n return { definite, uncertain };\n }\n\n async #computeInvalidationTypes(\n wireObjectSet: WireObjectSet,\n ): Promise<Set<string>> {\n try {\n const { invalidationSet } = await getObjectTypesThatInvalidate(\n this.store.client[additionalContext],\n wireObjectSet,\n );\n return invalidationSet;\n } catch (error) {\n this.store.logger?.error(\n \"Failed to compute invalidation types for object set query, falling back to empty set\",\n error,\n );\n return new Set();\n }\n }\n\n #getObjectCacheKey(obj: {\n $objectType: string;\n $primaryKey: string | number;\n }): ObjectCacheKey {\n const pk = obj.$primaryKey;\n return this.cacheKeys.get<ObjectCacheKey>(\n \"object\",\n obj.$objectType,\n pk,\n this.rdpConfig ?? undefined,\n );\n }\n\n #peekObjectCacheKey(obj: {\n $objectType: string;\n $primaryKey: string | number;\n }): ObjectCacheKey | undefined {\n return this.cacheKeys.peek<ObjectCacheKey>(\n \"object\",\n obj.$objectType,\n obj.$primaryKey,\n this.rdpConfig ?? undefined,\n );\n }\n\n // TODO(oxc type-aware): the type-aware typescript/require-await rule does not flag this (it returns a Promise); remove this disable once type-aware linting is enabled.\n // oxlint-disable-next-line require-await -- intentionally async: returns a Promise to satisfy its declared/contract type; no await needed\n invalidateObjectType = async (\n objectType: string,\n changes: Changes | undefined,\n ): Promise<void> => {\n if (\n this.#objectTypes.has(objectType) ||\n (this.#rdpInvalidationSet?.has(objectType) ?? false)\n ) {\n changes?.modified.add(this.cacheKey);\n return this.revalidate(true);\n }\n return Promise.resolve();\n };\n\n protected createPayload(params: {\n resolvedData: any[] | undefined;\n isOptimistic: boolean;\n status: Status;\n lastUpdated: number;\n totalCount?: string;\n }): ObjectSetPayload {\n return {\n resolvedList: params.resolvedData,\n isOptimistic: params.isOptimistic,\n fetchMore: this.fetchMore,\n hasMore: this.nextPageToken != null,\n status: params.status,\n lastUpdated: params.lastUpdated,\n objectSet: this.#composedObjectSet,\n totalCount: params.totalCount,\n };\n }\n}\n\nfunction reconcileListChanges(\n existingKeys: ReadonlySet<ObjectCacheKey>,\n plan: {\n keysToInsert: ReadonlySet<ObjectCacheKey>;\n keysToRemove: ReadonlySet<CacheKey>;\n },\n): ObjectCacheKey[] {\n const newList: ObjectCacheKey[] = [];\n for (const key of existingKeys) {\n if (!plan.keysToRemove.has(key)) {\n newList.push(key);\n }\n }\n newList.push(...plan.keysToInsert);\n\n return newList;\n}\n\nfunction getListReconciliationPlan({\n existingKeys,\n addedDefiniteMatches,\n modifiedObjects,\n modifiedMatches,\n deleted,\n isOptimistic,\n getObjectCacheKey,\n getCachedObjectKey,\n}: {\n existingKeys: ReadonlySet<ObjectCacheKey>;\n addedDefiniteMatches: ReadonlySet<ObjectHolder | InterfaceHolder>;\n modifiedObjects: ReadonlyArray<ObjectHolder>;\n modifiedMatches: {\n definite: ReadonlySet<ObjectHolder | InterfaceHolder>;\n uncertain: ReadonlySet<ObjectHolder | InterfaceHolder>;\n };\n deleted: ReadonlySet<CacheKey>;\n isOptimistic: boolean;\n getObjectCacheKey: (obj: ObjectHolder | InterfaceHolder) => ObjectCacheKey;\n getCachedObjectKey: (\n obj: ObjectHolder | InterfaceHolder,\n ) => ObjectCacheKey | undefined;\n}): {\n keysToInsert: ReadonlySet<ObjectCacheKey>;\n keysToRemove: ReadonlySet<CacheKey>;\n needsRevalidation: boolean;\n} {\n const keysToInsert = new Set<ObjectCacheKey>();\n const keysToRemove = new Set<CacheKey>(deleted);\n\n let needsRevalidation = false;\n const addIfAvailable = (obj: ObjectHolder | InterfaceHolder): void => {\n const key = getCachedObjectKey(obj);\n if (key == null) {\n needsRevalidation = true;\n return;\n }\n if (existingKeys.has(key)) {\n return;\n }\n keysToInsert.add(key);\n };\n\n for (const obj of addedDefiniteMatches) {\n addIfAvailable(obj);\n }\n for (const obj of modifiedObjects) {\n if (modifiedMatches.definite.has(obj)) {\n addIfAvailable(obj);\n } else if (!isOptimistic) {\n keysToRemove.add(getObjectCacheKey(obj));\n if (modifiedMatches.uncertain.has(obj)) {\n needsRevalidation = true;\n }\n }\n }\n\n return { keysToInsert, keysToRemove, needsRevalidation };\n}\n"],"mappings":"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","ignoreList":[]}
@@ -14,6 +14,6 @@
14
14
  * limitations under the License.
15
15
  */
16
16
 
17
- export const USER_AGENT = `osdk-client/${"2.74.0"}`;
18
- export const OBSERVABLE_USER_AGENT = `osdk-observable-client/${"2.74.0"}`;
17
+ export const USER_AGENT = `osdk-client/${"2.74.1-main-e5da5150e9db362ea94628ef4ff790271684ff36"}`;
18
+ export const OBSERVABLE_USER_AGENT = `osdk-observable-client/${"2.74.1-main-e5da5150e9db362ea94628ef4ff790271684ff36"}`;
19
19
  //# sourceMappingURL=UserAgent.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"UserAgent.js","names":["USER_AGENT","OBSERVABLE_USER_AGENT"],"sources":["UserAgent.ts"],"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 */\n\nexport const USER_AGENT: string = `osdk-client/${process.env.PACKAGE_VERSION}`;\nexport const OBSERVABLE_USER_AGENT: string = `osdk-observable-client/${process.env.PACKAGE_VERSION}`;\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,OAAO,MAAMA,UAAkB,GAAG,yBAA4C;AAC9E,OAAO,MAAMC,qBAA6B,GAAG,oCAAuD","ignoreList":[]}
1
+ {"version":3,"file":"UserAgent.js","names":["USER_AGENT","OBSERVABLE_USER_AGENT"],"sources":["UserAgent.ts"],"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 */\n\nexport const USER_AGENT: string = `osdk-client/${process.env.PACKAGE_VERSION}`;\nexport const OBSERVABLE_USER_AGENT: string = `osdk-observable-client/${process.env.PACKAGE_VERSION}`;\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,OAAO,MAAMA,UAAkB,GAAG,uEAA4C;AAC9E,OAAO,MAAMC,qBAA6B,GAAG,kFAAuD","ignoreList":[]}
@@ -1,7 +1,7 @@
1
1
  'use strict';
2
2
 
3
- var chunkV6AYWE7X_cjs = require('./chunk-V6AYWE7X.cjs');
4
- var chunkXMYNUOYK_cjs = require('./chunk-XMYNUOYK.cjs');
3
+ var chunkJA4TRLJJ_cjs = require('./chunk-JA4TRLJJ.cjs');
4
+ var chunkJPBFLTLO_cjs = require('./chunk-JPBFLTLO.cjs');
5
5
  var chunk4L3NEGLF_cjs = require('./chunk-4L3NEGLF.cjs');
6
6
  require('./chunk-Q7SFCCGT.cjs');
7
7
 
@@ -17,21 +17,21 @@ async function* applyStreamingQuery(client, query, params) {
17
17
  if (client.flushEdits != null) {
18
18
  await client.flushEdits();
19
19
  }
20
- const response = await streamingExecute(chunkXMYNUOYK_cjs.addUserAgentAndRequestContextHeaders(chunkXMYNUOYK_cjs.augmentRequestContext(client, (_) => ({
20
+ const response = await streamingExecute(chunkJPBFLTLO_cjs.addUserAgentAndRequestContextHeaders(chunkJPBFLTLO_cjs.augmentRequestContext(client, (_) => ({
21
21
  finalMethodCall: "applyStreamingQuery"
22
22
  })), query), query.apiName, {
23
23
  ontology: await client.ontologyRid,
24
- parameters: params ? await chunkV6AYWE7X_cjs.remapQueryParams(params, client, qd.parameters) : {},
24
+ parameters: params ? await chunkJA4TRLJJ_cjs.remapQueryParams(params, client, qd.parameters) : {},
25
25
  version: query.isFixedVersion ? query.version : void 0,
26
26
  branch: client.branch
27
27
  }, {
28
28
  transactionId: client.transactionId,
29
29
  preview: true
30
30
  });
31
- const definitions = await chunkV6AYWE7X_cjs.getRequiredDefinitions(qd.output, client);
31
+ const definitions = await chunkJA4TRLJJ_cjs.getRequiredDefinitions(qd.output, client);
32
32
  for await (const event of response) {
33
33
  if (event.type !== "data") continue;
34
- const remapped = await chunkV6AYWE7X_cjs.remapQueryResponse(client, qd.output, event.value, definitions);
34
+ const remapped = await chunkJA4TRLJJ_cjs.remapQueryResponse(client, qd.output, event.value, definitions);
35
35
  if (qd.output.type === "array" && Array.isArray(remapped)) {
36
36
  for (const item of remapped) {
37
37
  yield item;
@@ -43,5 +43,5 @@ async function* applyStreamingQuery(client, query, params) {
43
43
  }
44
44
 
45
45
  exports.applyStreamingQuery = applyStreamingQuery;
46
- //# sourceMappingURL=applyStreamingQuery-FHCETZXE.cjs.map
47
- //# sourceMappingURL=applyStreamingQuery-FHCETZXE.cjs.map
46
+ //# sourceMappingURL=applyStreamingQuery-VNLWYB4F.cjs.map
47
+ //# sourceMappingURL=applyStreamingQuery-VNLWYB4F.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../node_modules/.pnpm/@osdk+foundry.functions@2.78.0/node_modules/@osdk/foundry.functions/build/esm/public/Query.js","../../src/queries/applyStreamingQuery.ts"],"names":["foundryPlatformFetch","addUserAgentAndRequestContextHeaders","augmentRequestContext","remapQueryParams","getRequiredDefinitions","remapQueryResponse"],"mappings":";;;;;;;;AAgFA,IAAM,oBAAoB,CAAC,CAAA,EAAG,4CAAA,EAA8C,CAAA,IAAI,mBAAmB,CAAA;AA2B5F,SAAS,gBAAA,CAAiB,SAAS,IAAA,EAAM;AAC9C,EAAA,OAAOA,sCAAA,CAAsB,IAAA,EAAM,iBAAA,EAAmB,GAAG,IAAI,CAAA;AAC/D;;;ACzFA,gBAAuB,mBAAA,CAAoB,MAAA,EAAQ,KAAA,EAAO,MAAA,EAAQ;AAChE,EAAA,MAAM,EAAA,GAAK,MAAM,MAAA,CAAO,gBAAA,CAAiB,kBAAA,CAAmB,KAAA,CAAM,OAAA,EAAS,KAAA,CAAM,cAAA,GAAiB,KAAA,CAAM,OAAA,GAAU,MAAS,CAAA;AAC3H,EAAA,IAAI,MAAA,CAAO,cAAc,IAAA,EAAM;AAC7B,IAAA,MAAM,OAAO,UAAA,EAAW;AAAA,EAC1B;AACA,EAAA,MAAM,WAAW,MAAgB,gBAAA,CAAiBC,sDAAA,CAAqCC,uCAAA,CAAsB,QAAQ,CAAA,CAAA,MAAM;AAAA,IACzH,eAAA,EAAiB;AAAA,GACnB,CAAE,CAAA,EAAG,KAAK,CAAA,EAAG,MAAM,OAAA,EAAS;AAAA,IAC1B,QAAA,EAAU,MAAM,MAAA,CAAO,WAAA;AAAA,IACvB,UAAA,EAAY,SAAS,MAAMC,kCAAA,CAAiB,QAAQ,MAAA,EAAQ,EAAA,CAAG,UAAU,CAAA,GAAI,EAAC;AAAA,IAC9E,OAAA,EAAS,KAAA,CAAM,cAAA,GAAiB,KAAA,CAAM,OAAA,GAAU,MAAA;AAAA,IAChD,QAAQ,MAAA,CAAO;AAAA,GACjB,EAAG;AAAA,IACD,eAAe,MAAA,CAAO,aAAA;AAAA,IACtB,OAAA,EAAS;AAAA,GACV,CAAA;AACD,EAAA,MAAM,WAAA,GAAc,MAAMC,wCAAA,CAAuB,EAAA,CAAG,QAAQ,MAAM,CAAA;AAClE,EAAA,WAAA,MAAiB,SAAS,QAAA,EAAU;AAClC,IAAA,IAAI,KAAA,CAAM,SAAS,MAAA,EAAQ;AAC3B,IAAA,MAAM,QAAA,GAAW,MAAMC,oCAAA,CAAmB,MAAA,EAAQ,GAAG,MAAA,EAAQ,KAAA,CAAM,OAAO,WAAW,CAAA;AACrF,IAAA,IAAI,GAAG,MAAA,CAAO,IAAA,KAAS,WAAW,KAAA,CAAM,OAAA,CAAQ,QAAQ,CAAA,EAAG;AACzD,MAAA,KAAA,MAAW,QAAQ,QAAA,EAAU;AAC3B,QAAA,MAAM,IAAA;AAAA,MACR;AAAA,IACF,CAAA,MAAO;AACL,MAAA,MAAM,QAAA;AAAA,IACR;AAAA,EACF;AACF","file":"applyStreamingQuery-FHCETZXE.cjs","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 { foundryPlatformFetch as $foundryPlatformFetch } from \"@osdk/shared.net.platformapi\";\n//\nconst _get = [0, \"/v2/functions/queries/{0}\", 2];\n/**\n * Gets a specific query type with the given API name. By default, this returns the highest semantic\n * version of the query, excluding pre-release versions. To resolve the most recently published version\n * instead, including pre-release versions, set `latestVersionResolution` to `PUBLISH_TIME`.\n *\n * @beta\n *\n * Required Scopes: [api:functions-read]\n * URL: /v2/functions/queries/{queryApiName}\n */\nexport function get($ctx, ...args) {\n return $foundryPlatformFetch($ctx, _get, ...args);\n}\nconst _getByRid = [0, \"/v2/functions/queries/getByRid\", 2];\n/**\n * Gets a specific query type with the given RID. By default, this gets the latest version of the query.\n *\n * @beta\n *\n * Required Scopes: [api:functions-read]\n * URL: /v2/functions/queries/getByRid\n */\nexport function getByRid($ctx, ...args) {\n return $foundryPlatformFetch($ctx, _getByRid, ...args);\n}\nconst _getByRidBatch = [1, \"/v2/functions/queries/getByRidBatch\", 3];\n/**\n * Gets a list of query types by RID in bulk. By default, this gets the latest version of each query.\n *\n * Queries are filtered from the response if they don't exist or the requesting token lacks the required\n * permissions.\n *\n * The maximum batch size for this endpoint is 100.\n *\n * @beta\n *\n * Required Scopes: [api:functions-read]\n * URL: /v2/functions/queries/getByRidBatch\n */\nexport function getByRidBatch($ctx, ...args) {\n return $foundryPlatformFetch($ctx, _getByRidBatch, ...args);\n}\nconst _execute = [1, \"/v2/functions/queries/{0}/execute\", 7];\n/**\n * Executes a Query and returns the result as a single JSON object. By default, this executes\n * the highest semantic version of the query, excluding pre-release versions. To resolve the\n * most recently published version instead, including pre-release versions, set\n * `latestVersionResolution` to `PUBLISH_TIME`.\n *\n * This endpoint executes global (non-ontology-scoped) query functions. For ontology-scoped\n * functions, use the equivalent endpoint under\n * `/v2/ontologies/{ontology}/queries/{queryApiName}/execute`. For streaming or incremental\n * result delivery, use `streamingExecute`.\n *\n * @beta\n *\n * Required Scopes: [api:functions-execute]\n * URL: /v2/functions/queries/{queryApiName}/execute\n */\nexport function execute($ctx, ...args) {\n return $foundryPlatformFetch($ctx, _execute, ...args);\n}\nconst _streamingExecute = [1, \"/v2/functions/queries/{0}/streamingExecute\", 7,, \"text/event-stream\"];\n/**\n * Executes a Query and returns results as a Server-Sent Events (`text/event-stream`) stream.\n * By default, this executes the highest semantic version of the query, excluding pre-release\n * versions. To resolve the most recently published version instead, including pre-release\n * versions, set `latestVersionResolution` to `PUBLISH_TIME`.\n *\n * This endpoint supports all Query functions. Each SSE event's `data` field is a JSON-encoded\n * `StreamingExecuteQueryResponse` – either a data batch (`type: data`) carrying one or more\n * result values, or an error (`type: error`) emitted before stream termination if execution\n * fails. Non-streaming functions emit a single data event containing the entire result;\n * streaming functions emit a data event per batch as results become available.\n *\n * Per the Server-Sent Events specification, each event is terminated by a blank line:\n *\n * ```\n * data: {\"type\":\"data\",\"value\":[{\"productId\":\"SKU-001\",\"price\":29.99}]}\n *\n * data: {\"type\":\"error\",\"errorCode\":\"INVALID_ARGUMENT\",\"errorName\":\"QueryRuntimeError\",\"errorInstanceId\":\"3f8a9c7b-2e4d-4a1f-9b8c-7d6e5f4a3b2c\",\"errorDescription\":\"Division by zero\",\"parameters\":{}}\n *\n * ```\n *\n * @beta\n *\n * Required Scopes: [api:functions-execute]\n * URL: /v2/functions/queries/{queryApiName}/streamingExecute\n */\nexport function streamingExecute($ctx, ...args) {\n return $foundryPlatformFetch($ctx, _streamingExecute, ...args);\n}\nconst _streamingExecuteEvents = [1, \"/v2/functions/queries/{0}/streamingExecuteEvents\", 7,, \"text/event-stream\"];\n/**\n * Executes a Query and returns results as a Server-Sent Events (`text/event-stream`) stream.\n * By default, this executes the highest semantic version of the query, excluding pre-release\n * versions. To resolve the most recently published version instead, including pre-release\n * versions, set `latestVersionResolution` to `PUBLISH_TIME`.\n *\n * This endpoint supports all Query functions. Each SSE event's `data` field is a JSON-encoded\n * `StreamingExecuteQueryResponse` – either a data batch (`type: data`) carrying one or more\n * result values, or an error (`type: error`) emitted before stream termination if execution\n * fails. Non-streaming functions emit a single data event containing the entire result;\n * streaming functions emit a data event per batch as results become available.\n *\n * Per the Server-Sent Events specification, each event is terminated by a blank line:\n *\n * ```\n * data: {\"type\":\"data\",\"value\":[{\"productId\":\"SKU-001\",\"price\":29.99}]}\n *\n * data: {\"type\":\"error\",\"errorCode\":\"INVALID_ARGUMENT\",\"errorName\":\"QueryRuntimeError\",\"errorInstanceId\":\"3f8a9c7b-2e4d-4a1f-9b8c-7d6e5f4a3b2c\",\"errorDescription\":\"Division by zero\",\"parameters\":{}}\n *\n * ```\n *\n * @alpha\n *\n * Required Scopes: [api:functions-execute]\n * URL: /v2/functions/queries/{queryApiName}/streamingExecuteEvents\n */\nexport function streamingExecuteEvents($ctx, ...args) {\n return $foundryPlatformFetch($ctx, _streamingExecuteEvents, ...args);\n}\nconst _executeAsync = [1, \"/v2/functions/queries/{0}/executeAsync\", 7];\n/**\n * Submits a Query for asynchronous execution. Returns either an execution ID\n * for polling, or the complete result if execution finished immediately.\n *\n * Use the Execution resource's getResult endpoint to poll for the\n * result of a submitted execution.\n *\n * @alpha\n *\n * Required Scopes: [api:functions-execute]\n * URL: /v2/functions/queries/{queryApiName}/executeAsync\n */\nexport function executeAsync($ctx, ...args) {\n return $foundryPlatformFetch($ctx, _executeAsync, ...args);\n}","/*\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 */\n\nimport * as Functions from \"@osdk/foundry.functions/Query\";\nimport { addUserAgentAndRequestContextHeaders } from \"../util/addUserAgentAndRequestContextHeaders.js\";\nimport { augmentRequestContext } from \"../util/augmentRequestContext.js\";\nimport { getRequiredDefinitions, remapQueryParams, remapQueryResponse } from \"./applyQuery.js\";\nexport async function* applyStreamingQuery(client, query, params) {\n const qd = await client.ontologyProvider.getQueryDefinition(query.apiName, query.isFixedVersion ? query.version : undefined);\n if (client.flushEdits != null) {\n await client.flushEdits();\n }\n const response = await Functions.streamingExecute(addUserAgentAndRequestContextHeaders(augmentRequestContext(client, _ => ({\n finalMethodCall: \"applyStreamingQuery\"\n })), query), query.apiName, {\n ontology: await client.ontologyRid,\n parameters: params ? await remapQueryParams(params, client, qd.parameters) : {},\n version: query.isFixedVersion ? query.version : undefined,\n branch: client.branch\n }, {\n transactionId: client.transactionId,\n preview: true\n });\n const definitions = await getRequiredDefinitions(qd.output, client);\n for await (const event of response) {\n if (event.type !== \"data\") continue;\n const remapped = await remapQueryResponse(client, qd.output, event.value, definitions);\n if (qd.output.type === \"array\" && Array.isArray(remapped)) {\n for (const item of remapped) {\n yield item;\n }\n } else {\n yield remapped;\n }\n }\n}"]}
1
+ {"version":3,"sources":["../../../../node_modules/.pnpm/@osdk+foundry.functions@2.78.0/node_modules/@osdk/foundry.functions/build/esm/public/Query.js","../../src/queries/applyStreamingQuery.ts"],"names":["foundryPlatformFetch","addUserAgentAndRequestContextHeaders","augmentRequestContext","remapQueryParams","getRequiredDefinitions","remapQueryResponse"],"mappings":";;;;;;;;AAgFA,IAAM,oBAAoB,CAAC,CAAA,EAAG,4CAAA,EAA8C,CAAA,IAAI,mBAAmB,CAAA;AA2B5F,SAAS,gBAAA,CAAiB,SAAS,IAAA,EAAM;AAC9C,EAAA,OAAOA,sCAAA,CAAsB,IAAA,EAAM,iBAAA,EAAmB,GAAG,IAAI,CAAA;AAC/D;;;ACzFA,gBAAuB,mBAAA,CAAoB,MAAA,EAAQ,KAAA,EAAO,MAAA,EAAQ;AAChE,EAAA,MAAM,EAAA,GAAK,MAAM,MAAA,CAAO,gBAAA,CAAiB,kBAAA,CAAmB,KAAA,CAAM,OAAA,EAAS,KAAA,CAAM,cAAA,GAAiB,KAAA,CAAM,OAAA,GAAU,MAAS,CAAA;AAC3H,EAAA,IAAI,MAAA,CAAO,cAAc,IAAA,EAAM;AAC7B,IAAA,MAAM,OAAO,UAAA,EAAW;AAAA,EAC1B;AACA,EAAA,MAAM,WAAW,MAAgB,gBAAA,CAAiBC,sDAAA,CAAqCC,uCAAA,CAAsB,QAAQ,CAAA,CAAA,MAAM;AAAA,IACzH,eAAA,EAAiB;AAAA,GACnB,CAAE,CAAA,EAAG,KAAK,CAAA,EAAG,MAAM,OAAA,EAAS;AAAA,IAC1B,QAAA,EAAU,MAAM,MAAA,CAAO,WAAA;AAAA,IACvB,UAAA,EAAY,SAAS,MAAMC,kCAAA,CAAiB,QAAQ,MAAA,EAAQ,EAAA,CAAG,UAAU,CAAA,GAAI,EAAC;AAAA,IAC9E,OAAA,EAAS,KAAA,CAAM,cAAA,GAAiB,KAAA,CAAM,OAAA,GAAU,MAAA;AAAA,IAChD,QAAQ,MAAA,CAAO;AAAA,GACjB,EAAG;AAAA,IACD,eAAe,MAAA,CAAO,aAAA;AAAA,IACtB,OAAA,EAAS;AAAA,GACV,CAAA;AACD,EAAA,MAAM,WAAA,GAAc,MAAMC,wCAAA,CAAuB,EAAA,CAAG,QAAQ,MAAM,CAAA;AAClE,EAAA,WAAA,MAAiB,SAAS,QAAA,EAAU;AAClC,IAAA,IAAI,KAAA,CAAM,SAAS,MAAA,EAAQ;AAC3B,IAAA,MAAM,QAAA,GAAW,MAAMC,oCAAA,CAAmB,MAAA,EAAQ,GAAG,MAAA,EAAQ,KAAA,CAAM,OAAO,WAAW,CAAA;AACrF,IAAA,IAAI,GAAG,MAAA,CAAO,IAAA,KAAS,WAAW,KAAA,CAAM,OAAA,CAAQ,QAAQ,CAAA,EAAG;AACzD,MAAA,KAAA,MAAW,QAAQ,QAAA,EAAU;AAC3B,QAAA,MAAM,IAAA;AAAA,MACR;AAAA,IACF,CAAA,MAAO;AACL,MAAA,MAAM,QAAA;AAAA,IACR;AAAA,EACF;AACF","file":"applyStreamingQuery-VNLWYB4F.cjs","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 { foundryPlatformFetch as $foundryPlatformFetch } from \"@osdk/shared.net.platformapi\";\n//\nconst _get = [0, \"/v2/functions/queries/{0}\", 2];\n/**\n * Gets a specific query type with the given API name. By default, this returns the highest semantic\n * version of the query, excluding pre-release versions. To resolve the most recently published version\n * instead, including pre-release versions, set `latestVersionResolution` to `PUBLISH_TIME`.\n *\n * @beta\n *\n * Required Scopes: [api:functions-read]\n * URL: /v2/functions/queries/{queryApiName}\n */\nexport function get($ctx, ...args) {\n return $foundryPlatformFetch($ctx, _get, ...args);\n}\nconst _getByRid = [0, \"/v2/functions/queries/getByRid\", 2];\n/**\n * Gets a specific query type with the given RID. By default, this gets the latest version of the query.\n *\n * @beta\n *\n * Required Scopes: [api:functions-read]\n * URL: /v2/functions/queries/getByRid\n */\nexport function getByRid($ctx, ...args) {\n return $foundryPlatformFetch($ctx, _getByRid, ...args);\n}\nconst _getByRidBatch = [1, \"/v2/functions/queries/getByRidBatch\", 3];\n/**\n * Gets a list of query types by RID in bulk. By default, this gets the latest version of each query.\n *\n * Queries are filtered from the response if they don't exist or the requesting token lacks the required\n * permissions.\n *\n * The maximum batch size for this endpoint is 100.\n *\n * @beta\n *\n * Required Scopes: [api:functions-read]\n * URL: /v2/functions/queries/getByRidBatch\n */\nexport function getByRidBatch($ctx, ...args) {\n return $foundryPlatformFetch($ctx, _getByRidBatch, ...args);\n}\nconst _execute = [1, \"/v2/functions/queries/{0}/execute\", 7];\n/**\n * Executes a Query and returns the result as a single JSON object. By default, this executes\n * the highest semantic version of the query, excluding pre-release versions. To resolve the\n * most recently published version instead, including pre-release versions, set\n * `latestVersionResolution` to `PUBLISH_TIME`.\n *\n * This endpoint executes global (non-ontology-scoped) query functions. For ontology-scoped\n * functions, use the equivalent endpoint under\n * `/v2/ontologies/{ontology}/queries/{queryApiName}/execute`. For streaming or incremental\n * result delivery, use `streamingExecute`.\n *\n * @beta\n *\n * Required Scopes: [api:functions-execute]\n * URL: /v2/functions/queries/{queryApiName}/execute\n */\nexport function execute($ctx, ...args) {\n return $foundryPlatformFetch($ctx, _execute, ...args);\n}\nconst _streamingExecute = [1, \"/v2/functions/queries/{0}/streamingExecute\", 7,, \"text/event-stream\"];\n/**\n * Executes a Query and returns results as a Server-Sent Events (`text/event-stream`) stream.\n * By default, this executes the highest semantic version of the query, excluding pre-release\n * versions. To resolve the most recently published version instead, including pre-release\n * versions, set `latestVersionResolution` to `PUBLISH_TIME`.\n *\n * This endpoint supports all Query functions. Each SSE event's `data` field is a JSON-encoded\n * `StreamingExecuteQueryResponse` – either a data batch (`type: data`) carrying one or more\n * result values, or an error (`type: error`) emitted before stream termination if execution\n * fails. Non-streaming functions emit a single data event containing the entire result;\n * streaming functions emit a data event per batch as results become available.\n *\n * Per the Server-Sent Events specification, each event is terminated by a blank line:\n *\n * ```\n * data: {\"type\":\"data\",\"value\":[{\"productId\":\"SKU-001\",\"price\":29.99}]}\n *\n * data: {\"type\":\"error\",\"errorCode\":\"INVALID_ARGUMENT\",\"errorName\":\"QueryRuntimeError\",\"errorInstanceId\":\"3f8a9c7b-2e4d-4a1f-9b8c-7d6e5f4a3b2c\",\"errorDescription\":\"Division by zero\",\"parameters\":{}}\n *\n * ```\n *\n * @beta\n *\n * Required Scopes: [api:functions-execute]\n * URL: /v2/functions/queries/{queryApiName}/streamingExecute\n */\nexport function streamingExecute($ctx, ...args) {\n return $foundryPlatformFetch($ctx, _streamingExecute, ...args);\n}\nconst _streamingExecuteEvents = [1, \"/v2/functions/queries/{0}/streamingExecuteEvents\", 7,, \"text/event-stream\"];\n/**\n * Executes a Query and returns results as a Server-Sent Events (`text/event-stream`) stream.\n * By default, this executes the highest semantic version of the query, excluding pre-release\n * versions. To resolve the most recently published version instead, including pre-release\n * versions, set `latestVersionResolution` to `PUBLISH_TIME`.\n *\n * This endpoint supports all Query functions. Each SSE event's `data` field is a JSON-encoded\n * `StreamingExecuteQueryResponse` – either a data batch (`type: data`) carrying one or more\n * result values, or an error (`type: error`) emitted before stream termination if execution\n * fails. Non-streaming functions emit a single data event containing the entire result;\n * streaming functions emit a data event per batch as results become available.\n *\n * Per the Server-Sent Events specification, each event is terminated by a blank line:\n *\n * ```\n * data: {\"type\":\"data\",\"value\":[{\"productId\":\"SKU-001\",\"price\":29.99}]}\n *\n * data: {\"type\":\"error\",\"errorCode\":\"INVALID_ARGUMENT\",\"errorName\":\"QueryRuntimeError\",\"errorInstanceId\":\"3f8a9c7b-2e4d-4a1f-9b8c-7d6e5f4a3b2c\",\"errorDescription\":\"Division by zero\",\"parameters\":{}}\n *\n * ```\n *\n * @alpha\n *\n * Required Scopes: [api:functions-execute]\n * URL: /v2/functions/queries/{queryApiName}/streamingExecuteEvents\n */\nexport function streamingExecuteEvents($ctx, ...args) {\n return $foundryPlatformFetch($ctx, _streamingExecuteEvents, ...args);\n}\nconst _executeAsync = [1, \"/v2/functions/queries/{0}/executeAsync\", 7];\n/**\n * Submits a Query for asynchronous execution. Returns either an execution ID\n * for polling, or the complete result if execution finished immediately.\n *\n * Use the Execution resource's getResult endpoint to poll for the\n * result of a submitted execution.\n *\n * @alpha\n *\n * Required Scopes: [api:functions-execute]\n * URL: /v2/functions/queries/{queryApiName}/executeAsync\n */\nexport function executeAsync($ctx, ...args) {\n return $foundryPlatformFetch($ctx, _executeAsync, ...args);\n}","/*\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 */\n\nimport * as Functions from \"@osdk/foundry.functions/Query\";\nimport { addUserAgentAndRequestContextHeaders } from \"../util/addUserAgentAndRequestContextHeaders.js\";\nimport { augmentRequestContext } from \"../util/augmentRequestContext.js\";\nimport { getRequiredDefinitions, remapQueryParams, remapQueryResponse } from \"./applyQuery.js\";\nexport async function* applyStreamingQuery(client, query, params) {\n const qd = await client.ontologyProvider.getQueryDefinition(query.apiName, query.isFixedVersion ? query.version : undefined);\n if (client.flushEdits != null) {\n await client.flushEdits();\n }\n const response = await Functions.streamingExecute(addUserAgentAndRequestContextHeaders(augmentRequestContext(client, _ => ({\n finalMethodCall: \"applyStreamingQuery\"\n })), query), query.apiName, {\n ontology: await client.ontologyRid,\n parameters: params ? await remapQueryParams(params, client, qd.parameters) : {},\n version: query.isFixedVersion ? query.version : undefined,\n branch: client.branch\n }, {\n transactionId: client.transactionId,\n preview: true\n });\n const definitions = await getRequiredDefinitions(qd.output, client);\n for await (const event of response) {\n if (event.type !== \"data\") continue;\n const remapped = await remapQueryResponse(client, qd.output, event.value, definitions);\n if (qd.output.type === \"array\" && Array.isArray(remapped)) {\n for (const item of remapped) {\n yield item;\n }\n } else {\n yield remapped;\n }\n }\n}"]}
@@ -1,11 +1,11 @@
1
1
  'use strict';
2
2
 
3
- var chunkTBLHTG4S_cjs = require('./chunk-TBLHTG4S.cjs');
4
- var chunkXMYNUOYK_cjs = require('./chunk-XMYNUOYK.cjs');
3
+ var chunkFWYTUFP5_cjs = require('./chunk-FWYTUFP5.cjs');
4
+ var chunkJPBFLTLO_cjs = require('./chunk-JPBFLTLO.cjs');
5
5
 
6
6
  // src/scenarios/createScenario.ts
7
7
  async function createScenario(client, options) {
8
- const ctx = client[chunkXMYNUOYK_cjs.additionalContext];
8
+ const ctx = client[chunkJPBFLTLO_cjs.additionalContext];
9
9
  if (ctx.scenarioRid != null) {
10
10
  throw new Error("createScenario: the supplied client already has an active scenario. Scenarios cannot be nested.");
11
11
  }
@@ -19,18 +19,18 @@ async function createScenario(client, options) {
19
19
  if (options?.expireAfter != null) {
20
20
  request.expireAfter = options.expireAfter.toISOString();
21
21
  }
22
- const response = await chunkTBLHTG4S_cjs.OntologyScenario_exports.createScenario(ctx, await ctx.ontologyRid, request, {
22
+ const response = await chunkFWYTUFP5_cjs.OntologyScenario_exports.createScenario(ctx, await ctx.ontologyRid, request, {
23
23
  preview: true
24
24
  });
25
- return chunkTBLHTG4S_cjs.buildScenarioClient(client, response.scenarioRid);
25
+ return chunkFWYTUFP5_cjs.buildScenarioClient(client, response.scenarioRid);
26
26
  }
27
27
 
28
28
  // src/scenarios/withScenario.ts
29
29
  function withScenario(client, scenarioRid) {
30
- return chunkTBLHTG4S_cjs.buildScenarioClient(client, scenarioRid);
30
+ return chunkFWYTUFP5_cjs.buildScenarioClient(client, scenarioRid);
31
31
  }
32
32
 
33
33
  exports.createScenario = createScenario;
34
34
  exports.withScenario = withScenario;
35
- //# sourceMappingURL=chunk-QGHUEHKJ.cjs.map
36
- //# sourceMappingURL=chunk-QGHUEHKJ.cjs.map
35
+ //# sourceMappingURL=chunk-3TTBITWY.cjs.map
36
+ //# sourceMappingURL=chunk-3TTBITWY.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/scenarios/createScenario.ts","../../src/scenarios/withScenario.ts"],"names":["additionalContext","OntologyScenario_exports","buildScenarioClient"],"mappings":";;;;;;AAyCA,eAAsB,cAAA,CAAe,QAAQ,OAAA,EAAS;AACpD,EAAA,MAAM,GAAA,GAAM,OAAOA,mCAAiB,CAAA;AACpC,EAAA,IAAI,GAAA,CAAI,eAAe,IAAA,EAAM;AAC3B,IAAA,MAAM,IAAI,MAAM,iGAAiG,CAAA;AAAA,EACnH;AACA,EAAA,MAAM,UAAU,EAAC;AACjB,EAAA,IAAI,GAAA,CAAI,UAAU,IAAA,EAAM;AACtB,IAAA,OAAA,CAAQ,IAAA,GAAO;AAAA,MACb,IAAA,EAAM,QAAA;AAAA,MACN,QAAQ,GAAA,CAAI;AAAA,KACd;AAAA,EACF;AACA,EAAA,IAAI,OAAA,EAAS,eAAe,IAAA,EAAM;AAChC,IAAA,OAAA,CAAQ,WAAA,GAAc,OAAA,CAAQ,WAAA,CAAY,WAAA,EAAY;AAAA,EACxD;AACA,EAAA,MAAM,QAAA,GAAW,MAAMC,0CAAA,CAAkB,cAAA,CAAe,KAAK,MAAM,GAAA,CAAI,aAAa,OAAA,EAAS;AAAA,IAC3F,OAAA,EAAS;AAAA,GACV,CAAA;AACD,EAAA,OAAOC,qCAAA,CAAoB,MAAA,EAAQ,QAAA,CAAS,WAAW,CAAA;AACzD;;;ACrBO,SAAS,YAAA,CAAa,QAAQ,WAAA,EAAa;AAChD,EAAA,OAAOA,qCAAA,CAAoB,QAAQ,WAAW,CAAA;AAChD","file":"chunk-QGHUEHKJ.cjs","sourcesContent":["/*\n * Copyright 2026 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 */\n\nimport { OntologyScenarios } from \"@osdk/foundry.ontologies\";\nimport { additionalContext } from \"../Client.js\";\nimport { buildScenarioClient } from \"./ScenarioClient.js\";\n\n/**\n * Mint a fresh ontology scenario and return a client scoped to it.\n *\n * @param client - The base {@link Client} to derive context (`baseUrl`, `ontologyRid`, `tokenProvider`, `branch`, …)\n * from. Throws at runtime if the client is already scoped to a scenario. If the client has an active transaction,\n * the transaction is ignored (a warning is logged) and the client is scoped to the new scenario. When the base\n * client has a branch set, the newly minted scenario uses that branch as its base.\n * @param options - Optional settings for the new scenario.\n * @returns a {@link EXPERIMENTAL_ScenarioClient} bound to the freshly minted scenario RID.\n *\n * @beta This is an experimental, unstable feature subject to change.\n *\n * @example\n * ```ts\n * import { createScenario } from \"@osdk/client/unstable-do-not-use\";\n *\n * const expireAfter = new Date(Date.now() + 60 * 60 * 1000);\n * const scenario = await createScenario(client, { expireAfter });\n * const scenarioRid = scenario.getScenarioReference();\n * ```\n */\nexport async function createScenario(client, options) {\n const ctx = client[additionalContext];\n if (ctx.scenarioRid != null) {\n throw new Error(\"createScenario: the supplied client already has an active scenario. Scenarios cannot be nested.\");\n }\n const request = {};\n if (ctx.branch != null) {\n request.base = {\n type: \"branch\",\n branch: ctx.branch\n };\n }\n if (options?.expireAfter != null) {\n request.expireAfter = options.expireAfter.toISOString();\n }\n const response = await OntologyScenarios.createScenario(ctx, await ctx.ontologyRid, request, {\n preview: true\n });\n return buildScenarioClient(client, response.scenarioRid);\n}","/*\n * Copyright 2026 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 */\n\nimport { buildScenarioClient } from \"./ScenarioClient.js\";\n\n/**\n * Attach to an existing ontology scenario. Synchronous — no network call is made. The returned client scopes all\n * subsequent operations (`fetchPage`, `applyAction`, `executeFunction`, etc.) to the given `scenarioRid`.\n *\n * @param client - The base {@link Client} to derive context (`baseUrl`, `ontologyRid`, `tokenProvider`, `branch`, …)\n * from. Throws at runtime if the client is already scoped to a scenario. If the client has an active transaction,\n * the transaction is ignored (a warning is logged) and the client is scoped to the scenario.\n * @param scenarioRid - The RID of the scenario to attach to.\n * @returns a {@link EXPERIMENTAL_ScenarioClient} bound to `scenarioRid`.\n *\n * @beta This is an experimental, unstable feature subject to change.\n *\n * @example\n * ```ts\n * import { withScenario } from \"@osdk/client/unstable-do-not-use\";\n *\n * const scenario = withScenario(client, \"ri.actions..scenario.abc\");\n * const page = await scenario(Doctor).fetchPage();\n * await scenario(Schedule).applyAction({ doctor: page.data[0], shift: \"AM\" });\n * ```\n */\nexport function withScenario(client, scenarioRid) {\n return buildScenarioClient(client, scenarioRid);\n}"]}
1
+ {"version":3,"sources":["../../src/scenarios/createScenario.ts","../../src/scenarios/withScenario.ts"],"names":["additionalContext","OntologyScenario_exports","buildScenarioClient"],"mappings":";;;;;;AAyCA,eAAsB,cAAA,CAAe,QAAQ,OAAA,EAAS;AACpD,EAAA,MAAM,GAAA,GAAM,OAAOA,mCAAiB,CAAA;AACpC,EAAA,IAAI,GAAA,CAAI,eAAe,IAAA,EAAM;AAC3B,IAAA,MAAM,IAAI,MAAM,iGAAiG,CAAA;AAAA,EACnH;AACA,EAAA,MAAM,UAAU,EAAC;AACjB,EAAA,IAAI,GAAA,CAAI,UAAU,IAAA,EAAM;AACtB,IAAA,OAAA,CAAQ,IAAA,GAAO;AAAA,MACb,IAAA,EAAM,QAAA;AAAA,MACN,QAAQ,GAAA,CAAI;AAAA,KACd;AAAA,EACF;AACA,EAAA,IAAI,OAAA,EAAS,eAAe,IAAA,EAAM;AAChC,IAAA,OAAA,CAAQ,WAAA,GAAc,OAAA,CAAQ,WAAA,CAAY,WAAA,EAAY;AAAA,EACxD;AACA,EAAA,MAAM,QAAA,GAAW,MAAMC,0CAAA,CAAkB,cAAA,CAAe,KAAK,MAAM,GAAA,CAAI,aAAa,OAAA,EAAS;AAAA,IAC3F,OAAA,EAAS;AAAA,GACV,CAAA;AACD,EAAA,OAAOC,qCAAA,CAAoB,MAAA,EAAQ,QAAA,CAAS,WAAW,CAAA;AACzD;;;ACrBO,SAAS,YAAA,CAAa,QAAQ,WAAA,EAAa;AAChD,EAAA,OAAOA,qCAAA,CAAoB,QAAQ,WAAW,CAAA;AAChD","file":"chunk-3TTBITWY.cjs","sourcesContent":["/*\n * Copyright 2026 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 */\n\nimport { OntologyScenarios } from \"@osdk/foundry.ontologies\";\nimport { additionalContext } from \"../Client.js\";\nimport { buildScenarioClient } from \"./ScenarioClient.js\";\n\n/**\n * Mint a fresh ontology scenario and return a client scoped to it.\n *\n * @param client - The base {@link Client} to derive context (`baseUrl`, `ontologyRid`, `tokenProvider`, `branch`, …)\n * from. Throws at runtime if the client is already scoped to a scenario. If the client has an active transaction,\n * the transaction is ignored (a warning is logged) and the client is scoped to the new scenario. When the base\n * client has a branch set, the newly minted scenario uses that branch as its base.\n * @param options - Optional settings for the new scenario.\n * @returns a {@link EXPERIMENTAL_ScenarioClient} bound to the freshly minted scenario RID.\n *\n * @beta This is an experimental, unstable feature subject to change.\n *\n * @example\n * ```ts\n * import { createScenario } from \"@osdk/client/unstable-do-not-use\";\n *\n * const expireAfter = new Date(Date.now() + 60 * 60 * 1000);\n * const scenario = await createScenario(client, { expireAfter });\n * const scenarioRid = scenario.getScenarioReference();\n * ```\n */\nexport async function createScenario(client, options) {\n const ctx = client[additionalContext];\n if (ctx.scenarioRid != null) {\n throw new Error(\"createScenario: the supplied client already has an active scenario. Scenarios cannot be nested.\");\n }\n const request = {};\n if (ctx.branch != null) {\n request.base = {\n type: \"branch\",\n branch: ctx.branch\n };\n }\n if (options?.expireAfter != null) {\n request.expireAfter = options.expireAfter.toISOString();\n }\n const response = await OntologyScenarios.createScenario(ctx, await ctx.ontologyRid, request, {\n preview: true\n });\n return buildScenarioClient(client, response.scenarioRid);\n}","/*\n * Copyright 2026 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 */\n\nimport { buildScenarioClient } from \"./ScenarioClient.js\";\n\n/**\n * Attach to an existing ontology scenario. Synchronous — no network call is made. The returned client scopes all\n * subsequent operations (`fetchPage`, `applyAction`, `executeFunction`, etc.) to the given `scenarioRid`.\n *\n * @param client - The base {@link Client} to derive context (`baseUrl`, `ontologyRid`, `tokenProvider`, `branch`, …)\n * from. Throws at runtime if the client is already scoped to a scenario. If the client has an active transaction,\n * the transaction is ignored (a warning is logged) and the client is scoped to the scenario.\n * @param scenarioRid - The RID of the scenario to attach to.\n * @returns a {@link EXPERIMENTAL_ScenarioClient} bound to `scenarioRid`.\n *\n * @beta This is an experimental, unstable feature subject to change.\n *\n * @example\n * ```ts\n * import { withScenario } from \"@osdk/client/unstable-do-not-use\";\n *\n * const scenario = withScenario(client, \"ri.actions..scenario.abc\");\n * const page = await scenario(Doctor).fetchPage();\n * await scenario(Schedule).applyAction({ doctor: page.data[0], shift: \"AM\" });\n * ```\n */\nexport function withScenario(client, scenarioRid) {\n return buildScenarioClient(client, scenarioRid);\n}"]}