@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.
- package/CHANGELOG.md +9 -0
- package/build/browser/Client.js +1 -1
- package/build/browser/Client.js.map +1 -1
- package/build/browser/observable/internal/objectset/ObjectSetQuery.js +67 -21
- package/build/browser/observable/internal/objectset/ObjectSetQuery.js.map +1 -1
- package/build/browser/util/UserAgent.js +2 -2
- package/build/browser/util/UserAgent.js.map +1 -1
- package/build/cjs/{applyStreamingQuery-FHCETZXE.cjs → applyStreamingQuery-VNLWYB4F.cjs} +8 -8
- package/build/cjs/{applyStreamingQuery-FHCETZXE.cjs.map → applyStreamingQuery-VNLWYB4F.cjs.map} +1 -1
- package/build/cjs/{chunk-QGHUEHKJ.cjs → chunk-3TTBITWY.cjs} +8 -8
- package/build/cjs/{chunk-QGHUEHKJ.cjs.map → chunk-3TTBITWY.cjs.map} +1 -1
- package/build/cjs/{chunk-TBLHTG4S.cjs → chunk-FWYTUFP5.cjs} +47 -47
- package/build/cjs/chunk-FWYTUFP5.cjs.map +1 -0
- package/build/cjs/{chunk-V6AYWE7X.cjs → chunk-JA4TRLJJ.cjs} +14 -14
- package/build/cjs/{chunk-V6AYWE7X.cjs.map → chunk-JA4TRLJJ.cjs.map} +1 -1
- package/build/cjs/{chunk-XMYNUOYK.cjs → chunk-JPBFLTLO.cjs} +2 -2
- package/build/cjs/{chunk-XMYNUOYK.cjs.map → chunk-JPBFLTLO.cjs.map} +1 -1
- package/build/cjs/{chunk-FA5WM2PP.cjs → chunk-S25AQGI6.cjs} +151 -104
- package/build/cjs/chunk-S25AQGI6.cjs.map +1 -0
- package/build/cjs/index.cjs +11 -11
- package/build/cjs/public/experimental.cjs +9 -9
- package/build/cjs/public/internal.cjs +8 -8
- package/build/cjs/public/observable.cjs +5 -5
- package/build/cjs/public/unstable-do-not-use.cjs +16 -16
- package/build/esm/Client.js +1 -1
- package/build/esm/Client.js.map +1 -1
- package/build/esm/observable/internal/objectset/ObjectSetQuery.js +67 -21
- package/build/esm/observable/internal/objectset/ObjectSetQuery.js.map +1 -1
- package/build/esm/util/UserAgent.js +2 -2
- package/build/esm/util/UserAgent.js.map +1 -1
- package/build/types/Client.d.ts +1 -1
- package/build/types/observable/internal/objectset/ObjectSetQuery.d.ts.map +1 -1
- package/package.json +5 -5
- package/build/cjs/chunk-FA5WM2PP.cjs.map +0 -1
- 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
|
package/build/browser/Client.js
CHANGED
|
@@ -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.
|
|
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.
|
|
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
|
|
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
|
-
} =
|
|
265
|
-
const
|
|
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,
|
|
330
|
-
const
|
|
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
|
-
|
|
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
|
-
|
|
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.
|
|
18
|
-
export const OBSERVABLE_USER_AGENT = `osdk-observable-client/${"2.74.
|
|
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,
|
|
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
|
|
4
|
-
var
|
|
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(
|
|
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
|
|
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
|
|
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
|
|
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-
|
|
47
|
-
//# sourceMappingURL=applyStreamingQuery-
|
|
46
|
+
//# sourceMappingURL=applyStreamingQuery-VNLWYB4F.cjs.map
|
|
47
|
+
//# sourceMappingURL=applyStreamingQuery-VNLWYB4F.cjs.map
|
package/build/cjs/{applyStreamingQuery-FHCETZXE.cjs.map → applyStreamingQuery-VNLWYB4F.cjs.map}
RENAMED
|
@@ -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
|
|
4
|
-
var
|
|
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[
|
|
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
|
|
22
|
+
const response = await chunkFWYTUFP5_cjs.OntologyScenario_exports.createScenario(ctx, await ctx.ontologyRid, request, {
|
|
23
23
|
preview: true
|
|
24
24
|
});
|
|
25
|
-
return
|
|
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
|
|
30
|
+
return chunkFWYTUFP5_cjs.buildScenarioClient(client, scenarioRid);
|
|
31
31
|
}
|
|
32
32
|
|
|
33
33
|
exports.createScenario = createScenario;
|
|
34
34
|
exports.withScenario = withScenario;
|
|
35
|
-
//# sourceMappingURL=chunk-
|
|
36
|
-
//# sourceMappingURL=chunk-
|
|
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-
|
|
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}"]}
|