@osdk/client 2.5.0-beta.10 → 2.5.0-beta.12

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (99) hide show
  1. package/CHANGELOG.md +25 -0
  2. package/build/browser/definitions/LinkDefinitions.test.js.map +1 -1
  3. package/build/browser/fetchMetadata.test.js +4 -0
  4. package/build/browser/fetchMetadata.test.js.map +1 -1
  5. package/build/browser/object/convertWireToOsdkObjects.test.js +5 -1
  6. package/build/browser/object/convertWireToOsdkObjects.test.js.map +1 -1
  7. package/build/browser/object/fetchPage.js +3 -2
  8. package/build/browser/object/fetchPage.js.map +1 -1
  9. package/build/browser/observable/ObjectSetPayload.js +2 -0
  10. package/build/browser/observable/ObjectSetPayload.js.map +1 -0
  11. package/build/browser/observable/ObservableClient.js.map +1 -1
  12. package/build/browser/observable/computeObjectSetCacheKey.js +64 -0
  13. package/build/browser/observable/computeObjectSetCacheKey.js.map +1 -0
  14. package/build/browser/observable/internal/Changes.js +3 -0
  15. package/build/browser/observable/internal/Changes.js.map +1 -1
  16. package/build/browser/observable/internal/KnownCacheKey.js.map +1 -1
  17. package/build/browser/observable/internal/ObservableClientImpl.js +8 -0
  18. package/build/browser/observable/internal/ObservableClientImpl.js.map +1 -1
  19. package/build/browser/observable/internal/Query.js +18 -1
  20. package/build/browser/observable/internal/Query.js.map +1 -1
  21. package/build/browser/observable/internal/Store.js +2 -0
  22. package/build/browser/observable/internal/Store.js.map +1 -1
  23. package/build/browser/observable/internal/objectset/ObjectSetCacheKey.js +2 -0
  24. package/build/browser/observable/internal/objectset/ObjectSetCacheKey.js.map +1 -0
  25. package/build/browser/observable/internal/objectset/ObjectSetHelper.js +69 -0
  26. package/build/browser/observable/internal/objectset/ObjectSetHelper.js.map +1 -0
  27. package/build/browser/observable/internal/objectset/ObjectSetQuery.js +151 -0
  28. package/build/browser/observable/internal/objectset/ObjectSetQuery.js.map +1 -0
  29. package/build/browser/observable/internal/objectset/ObjectSetQueryOptions.js +2 -0
  30. package/build/browser/observable/internal/objectset/ObjectSetQueryOptions.js.map +1 -0
  31. package/build/browser/public/unstable-do-not-use.js +1 -0
  32. package/build/browser/public/unstable-do-not-use.js.map +1 -1
  33. package/build/browser/util/UserAgent.js +2 -2
  34. package/build/cjs/{chunk-GVGP7T5P.cjs → chunk-2YVNXAHH.cjs} +4 -3
  35. package/build/cjs/chunk-2YVNXAHH.cjs.map +1 -0
  36. package/build/cjs/{chunk-YADG7KA6.cjs → chunk-DQKB6WZY.cjs} +54 -54
  37. package/build/cjs/{chunk-YADG7KA6.cjs.map → chunk-DQKB6WZY.cjs.map} +1 -1
  38. package/build/cjs/index.cjs +7 -7
  39. package/build/cjs/public/internal.cjs +8 -8
  40. package/build/cjs/public/unstable-do-not-use.cjs +402 -156
  41. package/build/cjs/public/unstable-do-not-use.cjs.map +1 -1
  42. package/build/cjs/public/unstable-do-not-use.d.cts +57 -6
  43. package/build/esm/definitions/LinkDefinitions.test.js.map +1 -1
  44. package/build/esm/fetchMetadata.test.js +4 -0
  45. package/build/esm/fetchMetadata.test.js.map +1 -1
  46. package/build/esm/object/convertWireToOsdkObjects.test.js +5 -1
  47. package/build/esm/object/convertWireToOsdkObjects.test.js.map +1 -1
  48. package/build/esm/object/fetchPage.js +3 -2
  49. package/build/esm/object/fetchPage.js.map +1 -1
  50. package/build/esm/observable/ObjectSetPayload.js +2 -0
  51. package/build/esm/observable/ObjectSetPayload.js.map +1 -0
  52. package/build/esm/observable/ObservableClient.js.map +1 -1
  53. package/build/esm/observable/computeObjectSetCacheKey.js +64 -0
  54. package/build/esm/observable/computeObjectSetCacheKey.js.map +1 -0
  55. package/build/esm/observable/internal/Changes.js +3 -0
  56. package/build/esm/observable/internal/Changes.js.map +1 -1
  57. package/build/esm/observable/internal/KnownCacheKey.js.map +1 -1
  58. package/build/esm/observable/internal/ObservableClientImpl.js +8 -0
  59. package/build/esm/observable/internal/ObservableClientImpl.js.map +1 -1
  60. package/build/esm/observable/internal/Query.js +18 -1
  61. package/build/esm/observable/internal/Query.js.map +1 -1
  62. package/build/esm/observable/internal/Store.js +2 -0
  63. package/build/esm/observable/internal/Store.js.map +1 -1
  64. package/build/esm/observable/internal/objectset/ObjectSetCacheKey.js +2 -0
  65. package/build/esm/observable/internal/objectset/ObjectSetCacheKey.js.map +1 -0
  66. package/build/esm/observable/internal/objectset/ObjectSetHelper.js +69 -0
  67. package/build/esm/observable/internal/objectset/ObjectSetHelper.js.map +1 -0
  68. package/build/esm/observable/internal/objectset/ObjectSetQuery.js +151 -0
  69. package/build/esm/observable/internal/objectset/ObjectSetQuery.js.map +1 -0
  70. package/build/esm/observable/internal/objectset/ObjectSetQueryOptions.js +2 -0
  71. package/build/esm/observable/internal/objectset/ObjectSetQueryOptions.js.map +1 -0
  72. package/build/esm/public/unstable-do-not-use.js +1 -0
  73. package/build/esm/public/unstable-do-not-use.js.map +1 -1
  74. package/build/esm/util/UserAgent.js +2 -2
  75. package/build/types/observable/ObjectSetPayload.d.ts +5 -0
  76. package/build/types/observable/ObjectSetPayload.d.ts.map +1 -0
  77. package/build/types/observable/ObservableClient.d.ts +33 -1
  78. package/build/types/observable/ObservableClient.d.ts.map +1 -1
  79. package/build/types/observable/computeObjectSetCacheKey.d.ts +16 -0
  80. package/build/types/observable/computeObjectSetCacheKey.d.ts.map +1 -0
  81. package/build/types/observable/internal/Changes.d.ts +5 -3
  82. package/build/types/observable/internal/Changes.d.ts.map +1 -1
  83. package/build/types/observable/internal/KnownCacheKey.d.ts +2 -1
  84. package/build/types/observable/internal/KnownCacheKey.d.ts.map +1 -1
  85. package/build/types/observable/internal/Query.d.ts.map +1 -1
  86. package/build/types/observable/internal/Store.d.ts +2 -0
  87. package/build/types/observable/internal/Store.d.ts.map +1 -1
  88. package/build/types/observable/internal/objectset/ObjectSetCacheKey.d.ts +16 -0
  89. package/build/types/observable/internal/objectset/ObjectSetCacheKey.d.ts.map +1 -0
  90. package/build/types/observable/internal/objectset/ObjectSetHelper.d.ts +19 -0
  91. package/build/types/observable/internal/objectset/ObjectSetHelper.d.ts.map +1 -0
  92. package/build/types/observable/internal/objectset/ObjectSetQuery.d.ts +34 -0
  93. package/build/types/observable/internal/objectset/ObjectSetQuery.d.ts.map +1 -0
  94. package/build/types/observable/internal/objectset/ObjectSetQueryOptions.d.ts +18 -0
  95. package/build/types/observable/internal/objectset/ObjectSetQueryOptions.d.ts.map +1 -0
  96. package/build/types/public/unstable-do-not-use.d.ts +2 -1
  97. package/build/types/public/unstable-do-not-use.d.ts.map +1 -1
  98. package/package.json +7 -7
  99. package/build/cjs/chunk-GVGP7T5P.cjs.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"Store.js","names":["invariant","additionalContext","DEBUG_REFCOUNTS","ActionApplication","CacheKeys","createChangedObjects","DEBUG_ONLY__changesToString","Layers","LinksHelper","ListsHelper","ObjectsHelper","OrderByCanonicalizer","Queries","WhereClauseCanonicalizer","Store","whereCanonicalizer","orderByCanonicalizer","queries","layers","logger","onRevalidate","maybeRevalidateQueries","bind","subjects","constructor","client","child","msgPrefix","cacheKeys","onDestroy","cleanupCacheKey","lists","objects","links","key","subject","peek","console","log","JSON","stringify","closed","observed","type","otherKeys","process","env","NODE_ENV","delete","applyAction","action","args","opts","validateAction","result","$validateOnly","$returnEdits","getValue","cacheKey","top","get","batch","optimisticId","changes","batchFn","invalidateObject","apiName","pk","getQuery","revalidate","#maybeRevalidateQueries","methodName","undefined","isEmpty","debug","promises","keys","promise","maybeUpdateAndRevalidate","push","Promise","all","invalidateObjectType","info","truth","modified","has","query","allSettled","then","invalidateAll","invalidateObjects","objectsArray","Array","isArray","obj","$objectType","$primaryKey"],"sources":["Store.ts"],"sourcesContent":["/*\n * Copyright 2025 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 ActionEditResponse,\n ActionValidationResponse,\n Logger,\n ObjectTypeDefinition,\n Osdk,\n PrimaryKeyType,\n} from \"@osdk/api\";\nimport invariant from \"tiny-invariant\";\nimport type { ActionSignatureFromDef } from \"../../actions/applyAction.js\";\nimport { additionalContext, type Client } from \"../../Client.js\";\nimport { DEBUG_REFCOUNTS } from \"../DebugFlags.js\";\nimport type { OptimisticBuilder } from \"../OptimisticBuilder.js\";\nimport { ActionApplication } from \"./actions/ActionApplication.js\";\nimport type { BatchContext } from \"./BatchContext.js\";\nimport { CacheKeys } from \"./CacheKeys.js\";\nimport {\n type Changes,\n createChangedObjects,\n DEBUG_ONLY__changesToString,\n} from \"./Changes.js\";\nimport type { KnownCacheKey } from \"./KnownCacheKey.js\";\nimport type { Entry } from \"./Layer.js\";\nimport { Layers } from \"./Layers.js\";\nimport { LinksHelper } from \"./links/LinksHelper.js\";\nimport { ListsHelper } from \"./list/ListsHelper.js\";\nimport { ObjectsHelper } from \"./object/ObjectsHelper.js\";\nimport { type OptimisticId } from \"./OptimisticId.js\";\nimport { OrderByCanonicalizer } from \"./OrderByCanonicalizer.js\";\nimport { Queries } from \"./Queries.js\";\nimport type { Subjects } from \"./Subjects.js\";\nimport { WhereClauseCanonicalizer } from \"./WhereClauseCanonicalizer.js\";\n\nexport namespace Store {\n export interface ApplyActionOptions {\n optimisticUpdate?: (ctx: OptimisticBuilder) => void;\n }\n}\n\n/*\n Notes:\n - Subjects are one per type per store (by cache key)\n - Data is one per layer per cache key\n*/\n\n/**\n * Central data store with layered cache architecture.\n * - Truth layer: server state | Optimistic layers: pending changes\n * - Reference counting prevents memory leaks\n * - Batch operations ensure consistency\n */\nexport class Store {\n readonly whereCanonicalizer: WhereClauseCanonicalizer =\n new WhereClauseCanonicalizer();\n readonly orderByCanonicalizer: OrderByCanonicalizer =\n new OrderByCanonicalizer();\n\n readonly client: Client;\n\n /** @internal */\n readonly logger?: Logger;\n\n readonly cacheKeys: CacheKeys<KnownCacheKey>;\n readonly queries: Queries = new Queries();\n\n readonly layers: Layers = new Layers({\n logger: this.logger,\n onRevalidate: this.#maybeRevalidateQueries.bind(this),\n });\n readonly subjects: Subjects = this.layers.subjects;\n\n // these are hopefully temporary\n readonly lists: ListsHelper;\n readonly objects: ObjectsHelper;\n readonly links: LinksHelper;\n\n constructor(client: Client) {\n this.logger = client[additionalContext].logger?.child({}, {\n msgPrefix: \"Store\",\n });\n this.client = client;\n\n this.cacheKeys = new CacheKeys<KnownCacheKey>({\n onDestroy: this.#cleanupCacheKey,\n });\n\n this.lists = new ListsHelper(\n this,\n this.cacheKeys,\n this.whereCanonicalizer,\n this.orderByCanonicalizer,\n );\n this.objects = new ObjectsHelper(this, this.cacheKeys);\n this.links = new LinksHelper(\n this,\n this.cacheKeys,\n this.whereCanonicalizer,\n this.orderByCanonicalizer,\n );\n }\n\n /**\n * Called after a key is no longer retained and the timeout has elapsed\n * @param key\n */\n #cleanupCacheKey = (key: KnownCacheKey) => {\n const subject = this.subjects.peek(key);\n\n if (DEBUG_REFCOUNTS) {\n // eslint-disable-next-line no-console\n console.log(\n `CacheKey cleaning up (${\n JSON.stringify({\n closed: subject?.closed,\n observed: subject?.observed,\n })\n })`,\n JSON.stringify([key.type, ...key.otherKeys], null, 2),\n );\n }\n\n if (process.env.NODE_ENV !== \"production\") {\n invariant(subject);\n }\n\n this.subjects.delete(key);\n this.queries.delete(key);\n };\n\n applyAction: <Q extends ActionDefinition<any>>(\n action: Q,\n args:\n | Parameters<ActionSignatureFromDef<Q>[\"applyAction\"]>[0]\n | Array<Parameters<ActionSignatureFromDef<Q>[\"applyAction\"]>[0]>,\n opts?: Store.ApplyActionOptions,\n ) => Promise<ActionEditResponse> = async (action, args, opts) => {\n return await new ActionApplication(this).applyAction(action, args, opts);\n };\n\n validateAction: <Q extends ActionDefinition<any>>(\n action: Q,\n args: Parameters<ActionSignatureFromDef<Q>[\"applyAction\"]>[0],\n ) => Promise<ActionValidationResponse> = async (action, args) => {\n const result = await this.client(action).applyAction(args as any, {\n $validateOnly: true,\n $returnEdits: false,\n });\n return result as ActionValidationResponse;\n };\n\n public getValue<K extends KnownCacheKey>(\n cacheKey: K,\n ): Entry<K> | undefined {\n return this.layers.top.get(cacheKey);\n }\n\n batch<X>(\n { optimisticId, changes = createChangedObjects() }: {\n optimisticId?: OptimisticId;\n changes?: Changes;\n },\n batchFn: (batchContext: BatchContext) => X,\n ): {\n batchResult: BatchContext;\n retVal: X;\n changes: Changes;\n } {\n return this.layers.batch({ optimisticId, changes }, batchFn);\n }\n\n public invalidateObject<T extends ObjectTypeDefinition>(\n apiName: T[\"apiName\"] | T,\n pk: PrimaryKeyType<T>,\n ): Promise<unknown> {\n if (typeof apiName !== \"string\") {\n apiName = apiName.apiName;\n }\n\n return this.objects.getQuery({\n apiName,\n pk,\n }).revalidate(/* force */ true);\n }\n\n async #maybeRevalidateQueries(\n changes: Changes,\n optimisticId?: OptimisticId | undefined,\n ): Promise<void> {\n const logger = process.env.NODE_ENV !== \"production\"\n ? this.logger?.child({ methodName: \"maybeRevalidateQueries\" })\n : undefined;\n\n if (changes.isEmpty()) {\n if (process.env.NODE_ENV !== \"production\") {\n logger?.debug(\"No changes, aborting\");\n }\n return;\n }\n\n if (process.env.NODE_ENV !== \"production\") {\n logger?.debug(DEBUG_ONLY__changesToString(changes), { optimisticId });\n }\n\n try {\n const promises: Array<Promise<unknown>> = [];\n for (const cacheKey of this.queries.keys()) {\n const promise = this.queries.peek(cacheKey)?.maybeUpdateAndRevalidate?.(\n changes,\n optimisticId,\n );\n if (promise) promises.push(promise);\n }\n await Promise.all(promises);\n } finally {\n if (process.env.NODE_ENV !== \"production\") {\n logger?.debug(\"in finally\", DEBUG_ONLY__changesToString(changes));\n }\n }\n }\n\n /**\n * Invalidates all cache entries for a specific object type.\n * This will revalidate:\n * 1. All objects of the specified type\n * 2. All lists of the specified type\n * 3. All links where the source object is of the specified type\n *\n * @param apiName - The API name of the object type to invalidate\n * @param changes - Optional changes object to track what has been modified\n * @returns Promise that resolves when all invalidations are complete\n */\n public invalidateObjectType<T extends ObjectTypeDefinition>(\n apiName: T[\"apiName\"] | T,\n changes: Changes | undefined,\n ): Promise<void> {\n if (typeof apiName !== \"string\") {\n apiName = apiName.apiName;\n }\n if (process.env.NODE_ENV !== \"production\") {\n this.logger?.child({ methodName: \"invalidateObjectType\" }).info(\n changes ? DEBUG_ONLY__changesToString(changes) : void 0,\n );\n }\n\n const promises: Array<Promise<void>> = [];\n\n for (const cacheKey of this.layers.truth.keys()) {\n if (changes && changes.modified.has(cacheKey)) {\n continue;\n }\n const query = this.queries.peek(cacheKey);\n if (!query) continue;\n\n promises.push(query.invalidateObjectType(apiName, changes));\n }\n\n // we use allSettled here because we don't care if it succeeds or fails, just that they all complete.\n return Promise.allSettled(promises).then(() => void 0);\n }\n\n public async invalidateAll(): Promise<void> {\n const promises: Array<Promise<unknown>> = [];\n for (const cacheKey of this.queries.keys()) {\n const query = this.queries.peek(cacheKey);\n if (query) {\n promises.push(query.revalidate(true));\n }\n }\n // we use allSettled here because we don't care if it succeeds or fails, just that they all complete.\n return Promise.allSettled(promises).then(() => void 0);\n }\n\n public async invalidateObjects(\n objects:\n | Osdk.Instance<ObjectTypeDefinition>\n | ReadonlyArray<Osdk.Instance<ObjectTypeDefinition>>,\n ): Promise<void> {\n const objectsArray = Array.isArray(objects) ? objects : [objects];\n const promises: Array<Promise<unknown>> = [];\n\n for (const obj of objectsArray) {\n promises.push(this.invalidateObject(obj.$objectType, obj.$primaryKey));\n }\n\n // we use allSettled here because we don't care if it succeeds or fails, just that they all complete.\n return Promise.allSettled(promises).then(() => void 0);\n }\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"Store.js","names":["invariant","additionalContext","DEBUG_REFCOUNTS","ActionApplication","CacheKeys","createChangedObjects","DEBUG_ONLY__changesToString","Layers","LinksHelper","ListsHelper","ObjectsHelper","ObjectSetHelper","OrderByCanonicalizer","Queries","WhereClauseCanonicalizer","Store","whereCanonicalizer","orderByCanonicalizer","queries","layers","logger","onRevalidate","maybeRevalidateQueries","bind","subjects","constructor","client","child","msgPrefix","cacheKeys","onDestroy","cleanupCacheKey","lists","objects","links","objectSets","key","subject","peek","console","log","JSON","stringify","closed","observed","type","otherKeys","process","env","NODE_ENV","delete","applyAction","action","args","opts","validateAction","result","$validateOnly","$returnEdits","getValue","cacheKey","top","get","batch","optimisticId","changes","batchFn","invalidateObject","apiName","pk","getQuery","revalidate","#maybeRevalidateQueries","methodName","undefined","isEmpty","debug","promises","keys","promise","maybeUpdateAndRevalidate","push","Promise","all","invalidateObjectType","info","truth","modified","has","query","allSettled","then","invalidateAll","invalidateObjects","objectsArray","Array","isArray","obj","$objectType","$primaryKey"],"sources":["Store.ts"],"sourcesContent":["/*\n * Copyright 2025 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 ActionEditResponse,\n ActionValidationResponse,\n Logger,\n ObjectTypeDefinition,\n Osdk,\n PrimaryKeyType,\n} from \"@osdk/api\";\nimport invariant from \"tiny-invariant\";\nimport type { ActionSignatureFromDef } from \"../../actions/applyAction.js\";\nimport { additionalContext, type Client } from \"../../Client.js\";\nimport { DEBUG_REFCOUNTS } from \"../DebugFlags.js\";\nimport type { OptimisticBuilder } from \"../OptimisticBuilder.js\";\nimport { ActionApplication } from \"./actions/ActionApplication.js\";\nimport type { BatchContext } from \"./BatchContext.js\";\nimport { CacheKeys } from \"./CacheKeys.js\";\nimport {\n type Changes,\n createChangedObjects,\n DEBUG_ONLY__changesToString,\n} from \"./Changes.js\";\nimport type { KnownCacheKey } from \"./KnownCacheKey.js\";\nimport type { Entry } from \"./Layer.js\";\nimport { Layers } from \"./Layers.js\";\nimport { LinksHelper } from \"./links/LinksHelper.js\";\nimport { ListsHelper } from \"./list/ListsHelper.js\";\nimport { ObjectsHelper } from \"./object/ObjectsHelper.js\";\nimport { ObjectSetHelper } from \"./objectset/ObjectSetHelper.js\";\nimport { type OptimisticId } from \"./OptimisticId.js\";\nimport { OrderByCanonicalizer } from \"./OrderByCanonicalizer.js\";\nimport { Queries } from \"./Queries.js\";\nimport type { Subjects } from \"./Subjects.js\";\nimport { WhereClauseCanonicalizer } from \"./WhereClauseCanonicalizer.js\";\n\nexport namespace Store {\n export interface ApplyActionOptions {\n optimisticUpdate?: (ctx: OptimisticBuilder) => void;\n }\n}\n\n/*\n Notes:\n - Subjects are one per type per store (by cache key)\n - Data is one per layer per cache key\n*/\n\n/**\n * Central data store with layered cache architecture.\n * - Truth layer: server state | Optimistic layers: pending changes\n * - Reference counting prevents memory leaks\n * - Batch operations ensure consistency\n */\nexport class Store {\n readonly whereCanonicalizer: WhereClauseCanonicalizer =\n new WhereClauseCanonicalizer();\n readonly orderByCanonicalizer: OrderByCanonicalizer =\n new OrderByCanonicalizer();\n\n readonly client: Client;\n\n /** @internal */\n readonly logger?: Logger;\n\n readonly cacheKeys: CacheKeys<KnownCacheKey>;\n readonly queries: Queries = new Queries();\n\n readonly layers: Layers = new Layers({\n logger: this.logger,\n onRevalidate: this.#maybeRevalidateQueries.bind(this),\n });\n readonly subjects: Subjects = this.layers.subjects;\n\n // these are hopefully temporary\n readonly lists: ListsHelper;\n readonly objects: ObjectsHelper;\n readonly links: LinksHelper;\n readonly objectSets: ObjectSetHelper;\n\n constructor(client: Client) {\n this.logger = client[additionalContext].logger?.child({}, {\n msgPrefix: \"Store\",\n });\n this.client = client;\n\n this.cacheKeys = new CacheKeys<KnownCacheKey>({\n onDestroy: this.#cleanupCacheKey,\n });\n\n this.lists = new ListsHelper(\n this,\n this.cacheKeys,\n this.whereCanonicalizer,\n this.orderByCanonicalizer,\n );\n this.objects = new ObjectsHelper(this, this.cacheKeys);\n this.links = new LinksHelper(\n this,\n this.cacheKeys,\n this.whereCanonicalizer,\n this.orderByCanonicalizer,\n );\n this.objectSets = new ObjectSetHelper(\n this,\n this.cacheKeys,\n this.whereCanonicalizer,\n this.orderByCanonicalizer,\n );\n }\n\n /**\n * Called after a key is no longer retained and the timeout has elapsed\n * @param key\n */\n #cleanupCacheKey = (key: KnownCacheKey) => {\n const subject = this.subjects.peek(key);\n\n if (DEBUG_REFCOUNTS) {\n // eslint-disable-next-line no-console\n console.log(\n `CacheKey cleaning up (${\n JSON.stringify({\n closed: subject?.closed,\n observed: subject?.observed,\n })\n })`,\n JSON.stringify([key.type, ...key.otherKeys], null, 2),\n );\n }\n\n if (process.env.NODE_ENV !== \"production\") {\n invariant(subject);\n }\n\n this.subjects.delete(key);\n this.queries.delete(key);\n };\n\n applyAction: <Q extends ActionDefinition<any>>(\n action: Q,\n args:\n | Parameters<ActionSignatureFromDef<Q>[\"applyAction\"]>[0]\n | Array<Parameters<ActionSignatureFromDef<Q>[\"applyAction\"]>[0]>,\n opts?: Store.ApplyActionOptions,\n ) => Promise<ActionEditResponse> = async (action, args, opts) => {\n return await new ActionApplication(this).applyAction(action, args, opts);\n };\n\n validateAction: <Q extends ActionDefinition<any>>(\n action: Q,\n args: Parameters<ActionSignatureFromDef<Q>[\"applyAction\"]>[0],\n ) => Promise<ActionValidationResponse> = async (action, args) => {\n const result = await this.client(action).applyAction(args as any, {\n $validateOnly: true,\n $returnEdits: false,\n });\n return result as ActionValidationResponse;\n };\n\n public getValue<K extends KnownCacheKey>(\n cacheKey: K,\n ): Entry<K> | undefined {\n return this.layers.top.get(cacheKey);\n }\n\n batch<X>(\n { optimisticId, changes = createChangedObjects() }: {\n optimisticId?: OptimisticId;\n changes?: Changes;\n },\n batchFn: (batchContext: BatchContext) => X,\n ): {\n batchResult: BatchContext;\n retVal: X;\n changes: Changes;\n } {\n return this.layers.batch({ optimisticId, changes }, batchFn);\n }\n\n public invalidateObject<T extends ObjectTypeDefinition>(\n apiName: T[\"apiName\"] | T,\n pk: PrimaryKeyType<T>,\n ): Promise<unknown> {\n if (typeof apiName !== \"string\") {\n apiName = apiName.apiName;\n }\n\n return this.objects.getQuery({\n apiName,\n pk,\n }).revalidate(/* force */ true);\n }\n\n async #maybeRevalidateQueries(\n changes: Changes,\n optimisticId?: OptimisticId | undefined,\n ): Promise<void> {\n const logger = process.env.NODE_ENV !== \"production\"\n ? this.logger?.child({ methodName: \"maybeRevalidateQueries\" })\n : undefined;\n\n if (changes.isEmpty()) {\n if (process.env.NODE_ENV !== \"production\") {\n logger?.debug(\"No changes, aborting\");\n }\n return;\n }\n\n if (process.env.NODE_ENV !== \"production\") {\n logger?.debug(DEBUG_ONLY__changesToString(changes), { optimisticId });\n }\n\n try {\n const promises: Array<Promise<unknown>> = [];\n for (const cacheKey of this.queries.keys()) {\n const promise = this.queries.peek(cacheKey)?.maybeUpdateAndRevalidate?.(\n changes,\n optimisticId,\n );\n if (promise) promises.push(promise);\n }\n await Promise.all(promises);\n } finally {\n if (process.env.NODE_ENV !== \"production\") {\n logger?.debug(\"in finally\", DEBUG_ONLY__changesToString(changes));\n }\n }\n }\n\n /**\n * Invalidates all cache entries for a specific object type.\n * This will revalidate:\n * 1. All objects of the specified type\n * 2. All lists of the specified type\n * 3. All links where the source object is of the specified type\n *\n * @param apiName - The API name of the object type to invalidate\n * @param changes - Optional changes object to track what has been modified\n * @returns Promise that resolves when all invalidations are complete\n */\n public invalidateObjectType<T extends ObjectTypeDefinition>(\n apiName: T[\"apiName\"] | T,\n changes: Changes | undefined,\n ): Promise<void> {\n if (typeof apiName !== \"string\") {\n apiName = apiName.apiName;\n }\n if (process.env.NODE_ENV !== \"production\") {\n this.logger?.child({ methodName: \"invalidateObjectType\" }).info(\n changes ? DEBUG_ONLY__changesToString(changes) : void 0,\n );\n }\n\n const promises: Array<Promise<void>> = [];\n\n for (const cacheKey of this.layers.truth.keys()) {\n if (changes && changes.modified.has(cacheKey)) {\n continue;\n }\n const query = this.queries.peek(cacheKey);\n if (!query) continue;\n\n promises.push(query.invalidateObjectType(apiName, changes));\n }\n\n // we use allSettled here because we don't care if it succeeds or fails, just that they all complete.\n return Promise.allSettled(promises).then(() => void 0);\n }\n\n public async invalidateAll(): Promise<void> {\n const promises: Array<Promise<unknown>> = [];\n for (const cacheKey of this.queries.keys()) {\n const query = this.queries.peek(cacheKey);\n if (query) {\n promises.push(query.revalidate(true));\n }\n }\n // we use allSettled here because we don't care if it succeeds or fails, just that they all complete.\n return Promise.allSettled(promises).then(() => void 0);\n }\n\n public async invalidateObjects(\n objects:\n | Osdk.Instance<ObjectTypeDefinition>\n | ReadonlyArray<Osdk.Instance<ObjectTypeDefinition>>,\n ): Promise<void> {\n const objectsArray = Array.isArray(objects) ? objects : [objects];\n const promises: Array<Promise<unknown>> = [];\n\n for (const obj of objectsArray) {\n promises.push(this.invalidateObject(obj.$objectType, obj.$primaryKey));\n }\n\n // we use allSettled here because we don't care if it succeeds or fails, just that they all complete.\n return Promise.allSettled(promises).then(() => void 0);\n }\n}\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAWA,OAAOA,SAAS,MAAM,gBAAgB;AAEtC,SAASC,iBAAiB,QAAqB,iBAAiB;AAChE,SAASC,eAAe,QAAQ,kBAAkB;AAElD,SAASC,iBAAiB,QAAQ,gCAAgC;AAElE,SAASC,SAAS,QAAQ,gBAAgB;AAC1C,SAEEC,oBAAoB,EACpBC,2BAA2B,QACtB,cAAc;AAGrB,SAASC,MAAM,QAAQ,aAAa;AACpC,SAASC,WAAW,QAAQ,wBAAwB;AACpD,SAASC,WAAW,QAAQ,uBAAuB;AACnD,SAASC,aAAa,QAAQ,2BAA2B;AACzD,SAASC,eAAe,QAAQ,gCAAgC;AAEhE,SAASC,oBAAoB,QAAQ,2BAA2B;AAChE,SAASC,OAAO,QAAQ,cAAc;AAEtC,SAASC,wBAAwB,QAAQ,+BAA+B;AAQxE;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMC,KAAK,CAAC;EACRC,kBAAkB,GACzB,IAAIF,wBAAwB,CAAC,CAAC;EACvBG,oBAAoB,GAC3B,IAAIL,oBAAoB,CAAC,CAAC;;EAI5B;;EAISM,OAAO,GAAY,IAAIL,OAAO,CAAC,CAAC;EAEhCM,MAAM,GAAW,IAAIZ,MAAM,CAAC;IACnCa,MAAM,EAAE,IAAI,CAACA,MAAM;IACnBC,YAAY,EAAE,IAAI,CAAC,CAACC,sBAAsB,CAACC,IAAI,CAAC,IAAI;EACtD,CAAC,CAAC;EACOC,QAAQ,GAAa,IAAI,CAACL,MAAM,CAACK,QAAQ;;EAElD;;EAMAC,WAAWA,CAACC,MAAc,EAAE;IAC1B,IAAI,CAACN,MAAM,GAAGM,MAAM,CAACzB,iBAAiB,CAAC,CAACmB,MAAM,EAAEO,KAAK,CAAC,CAAC,CAAC,EAAE;MACxDC,SAAS,EAAE;IACb,CAAC,CAAC;IACF,IAAI,CAACF,MAAM,GAAGA,MAAM;IAEpB,IAAI,CAACG,SAAS,GAAG,IAAIzB,SAAS,CAAgB;MAC5C0B,SAAS,EAAE,IAAI,CAAC,CAACC;IACnB,CAAC,CAAC;IAEF,IAAI,CAACC,KAAK,GAAG,IAAIvB,WAAW,CAC1B,IAAI,EACJ,IAAI,CAACoB,SAAS,EACd,IAAI,CAACb,kBAAkB,EACvB,IAAI,CAACC,oBACP,CAAC;IACD,IAAI,CAACgB,OAAO,GAAG,IAAIvB,aAAa,CAAC,IAAI,EAAE,IAAI,CAACmB,SAAS,CAAC;IACtD,IAAI,CAACK,KAAK,GAAG,IAAI1B,WAAW,CAC1B,IAAI,EACJ,IAAI,CAACqB,SAAS,EACd,IAAI,CAACb,kBAAkB,EACvB,IAAI,CAACC,oBACP,CAAC;IACD,IAAI,CAACkB,UAAU,GAAG,IAAIxB,eAAe,CACnC,IAAI,EACJ,IAAI,CAACkB,SAAS,EACd,IAAI,CAACb,kBAAkB,EACvB,IAAI,CAACC,oBACP,CAAC;EACH;;EAEA;AACF;AACA;AACA;EACE,CAACc,eAAe,GAAIK,GAAkB,IAAK;IACzC,MAAMC,OAAO,GAAG,IAAI,CAACb,QAAQ,CAACc,IAAI,CAACF,GAAG,CAAC;IAEvC,IAAIlC,eAAe,EAAE;MACnB;MACAqC,OAAO,CAACC,GAAG,CACT,yBACEC,IAAI,CAACC,SAAS,CAAC;QACbC,MAAM,EAAEN,OAAO,EAAEM,MAAM;QACvBC,QAAQ,EAAEP,OAAO,EAAEO;MACrB,CAAC,CAAC,GACD,EACHH,IAAI,CAACC,SAAS,CAAC,CAACN,GAAG,CAACS,IAAI,EAAE,GAAGT,GAAG,CAACU,SAAS,CAAC,EAAE,IAAI,EAAE,CAAC,CACtD,CAAC;IACH;IAEA,IAAIC,OAAO,CAACC,GAAG,CAACC,QAAQ,KAAK,YAAY,EAAE;MACzC,CAAUZ,OAAO,GAAAU,OAAA,CAAAC,GAAA,CAAAC,QAAA,oBAAjBjD,SAAS,UAATA,SAAS;IACX;IAEA,IAAI,CAACwB,QAAQ,CAAC0B,MAAM,CAACd,GAAG,CAAC;IACzB,IAAI,CAAClB,OAAO,CAACgC,MAAM,CAACd,GAAG,CAAC;EAC1B,CAAC;EAEDe,WAAW,GAMwB,MAAAA,CAAOC,MAAM,EAAEC,IAAI,EAAEC,IAAI,KAAK;IAC/D,OAAO,MAAM,IAAInD,iBAAiB,CAAC,IAAI,CAAC,CAACgD,WAAW,CAACC,MAAM,EAAEC,IAAI,EAAEC,IAAI,CAAC;EAC1E,CAAC;EAEDC,cAAc,GAG2B,MAAAA,CAAOH,MAAM,EAAEC,IAAI,KAAK;IAC/D,MAAMG,MAAM,GAAG,MAAM,IAAI,CAAC9B,MAAM,CAAC0B,MAAM,CAAC,CAACD,WAAW,CAACE,IAAI,EAAS;MAChEI,aAAa,EAAE,IAAI;MACnBC,YAAY,EAAE;IAChB,CAAC,CAAC;IACF,OAAOF,MAAM;EACf,CAAC;EAEMG,QAAQA,CACbC,QAAW,EACW;IACtB,OAAO,IAAI,CAACzC,MAAM,CAAC0C,GAAG,CAACC,GAAG,CAACF,QAAQ,CAAC;EACtC;EAEAG,KAAKA,CACH;IAAEC,YAAY;IAAEC,OAAO,GAAG5D,oBAAoB,CAAC;EAG/C,CAAC,EACD6D,OAA0C,EAK1C;IACA,OAAO,IAAI,CAAC/C,MAAM,CAAC4C,KAAK,CAAC;MAAEC,YAAY;MAAEC;IAAQ,CAAC,EAAEC,OAAO,CAAC;EAC9D;EAEOC,gBAAgBA,CACrBC,OAAyB,EACzBC,EAAqB,EACH;IAClB,IAAI,OAAOD,OAAO,KAAK,QAAQ,EAAE;MAC/BA,OAAO,GAAGA,OAAO,CAACA,OAAO;IAC3B;IAEA,OAAO,IAAI,CAACnC,OAAO,CAACqC,QAAQ,CAAC;MAC3BF,OAAO;MACPC;IACF,CAAC,CAAC,CAACE,UAAU,CAAC,WAAY,IAAI,CAAC;EACjC;EAEA,MAAM,CAACjD,sBAAsBkD,CAC3BP,OAAgB,EAChBD,YAAuC,EACxB;IACf,MAAM5C,MAAM,GAAG2B,OAAO,CAACC,GAAG,CAACC,QAAQ,KAAK,YAAY,GAChD,IAAI,CAAC7B,MAAM,EAAEO,KAAK,CAAC;MAAE8C,UAAU,EAAE;IAAyB,CAAC,CAAC,GAC5DC,SAAS;IAEb,IAAIT,OAAO,CAACU,OAAO,CAAC,CAAC,EAAE;MACrB,IAAI5B,OAAO,CAACC,GAAG,CAACC,QAAQ,KAAK,YAAY,EAAE;QACzC7B,MAAM,EAAEwD,KAAK,CAAC,sBAAsB,CAAC;MACvC;MACA;IACF;IAEA,IAAI7B,OAAO,CAACC,GAAG,CAACC,QAAQ,KAAK,YAAY,EAAE;MACzC7B,MAAM,EAAEwD,KAAK,CAACtE,2BAA2B,CAAC2D,OAAO,CAAC,EAAE;QAAED;MAAa,CAAC,CAAC;IACvE;IAEA,IAAI;MACF,MAAMa,QAAiC,GAAG,EAAE;MAC5C,KAAK,MAAMjB,QAAQ,IAAI,IAAI,CAAC1C,OAAO,CAAC4D,IAAI,CAAC,CAAC,EAAE;QAC1C,MAAMC,OAAO,GAAG,IAAI,CAAC7D,OAAO,CAACoB,IAAI,CAACsB,QAAQ,CAAC,EAAEoB,wBAAwB,GACnEf,OAAO,EACPD,YACF,CAAC;QACD,IAAIe,OAAO,EAAEF,QAAQ,CAACI,IAAI,CAACF,OAAO,CAAC;MACrC;MACA,MAAMG,OAAO,CAACC,GAAG,CAACN,QAAQ,CAAC;IAC7B,CAAC,SAAS;MACR,IAAI9B,OAAO,CAACC,GAAG,CAACC,QAAQ,KAAK,YAAY,EAAE;QACzC7B,MAAM,EAAEwD,KAAK,CAAC,YAAY,EAAEtE,2BAA2B,CAAC2D,OAAO,CAAC,CAAC;MACnE;IACF;EACF;;EAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACSmB,oBAAoBA,CACzBhB,OAAyB,EACzBH,OAA4B,EACb;IACf,IAAI,OAAOG,OAAO,KAAK,QAAQ,EAAE;MAC/BA,OAAO,GAAGA,OAAO,CAACA,OAAO;IAC3B;IACA,IAAIrB,OAAO,CAACC,GAAG,CAACC,QAAQ,KAAK,YAAY,EAAE;MACzC,IAAI,CAAC7B,MAAM,EAAEO,KAAK,CAAC;QAAE8C,UAAU,EAAE;MAAuB,CAAC,CAAC,CAACY,IAAI,CAC7DpB,OAAO,GAAG3D,2BAA2B,CAAC2D,OAAO,CAAC,GAAG,KAAK,CACxD,CAAC;IACH;IAEA,MAAMY,QAA8B,GAAG,EAAE;IAEzC,KAAK,MAAMjB,QAAQ,IAAI,IAAI,CAACzC,MAAM,CAACmE,KAAK,CAACR,IAAI,CAAC,CAAC,EAAE;MAC/C,IAAIb,OAAO,IAAIA,OAAO,CAACsB,QAAQ,CAACC,GAAG,CAAC5B,QAAQ,CAAC,EAAE;QAC7C;MACF;MACA,MAAM6B,KAAK,GAAG,IAAI,CAACvE,OAAO,CAACoB,IAAI,CAACsB,QAAQ,CAAC;MACzC,IAAI,CAAC6B,KAAK,EAAE;MAEZZ,QAAQ,CAACI,IAAI,CAACQ,KAAK,CAACL,oBAAoB,CAAChB,OAAO,EAAEH,OAAO,CAAC,CAAC;IAC7D;;IAEA;IACA,OAAOiB,OAAO,CAACQ,UAAU,CAACb,QAAQ,CAAC,CAACc,IAAI,CAAC,MAAM,KAAK,CAAC,CAAC;EACxD;EAEA,MAAaC,aAAaA,CAAA,EAAkB;IAC1C,MAAMf,QAAiC,GAAG,EAAE;IAC5C,KAAK,MAAMjB,QAAQ,IAAI,IAAI,CAAC1C,OAAO,CAAC4D,IAAI,CAAC,CAAC,EAAE;MAC1C,MAAMW,KAAK,GAAG,IAAI,CAACvE,OAAO,CAACoB,IAAI,CAACsB,QAAQ,CAAC;MACzC,IAAI6B,KAAK,EAAE;QACTZ,QAAQ,CAACI,IAAI,CAACQ,KAAK,CAAClB,UAAU,CAAC,IAAI,CAAC,CAAC;MACvC;IACF;IACA;IACA,OAAOW,OAAO,CAACQ,UAAU,CAACb,QAAQ,CAAC,CAACc,IAAI,CAAC,MAAM,KAAK,CAAC,CAAC;EACxD;EAEA,MAAaE,iBAAiBA,CAC5B5D,OAEsD,EACvC;IACf,MAAM6D,YAAY,GAAGC,KAAK,CAACC,OAAO,CAAC/D,OAAO,CAAC,GAAGA,OAAO,GAAG,CAACA,OAAO,CAAC;IACjE,MAAM4C,QAAiC,GAAG,EAAE;IAE5C,KAAK,MAAMoB,GAAG,IAAIH,YAAY,EAAE;MAC9BjB,QAAQ,CAACI,IAAI,CAAC,IAAI,CAACd,gBAAgB,CAAC8B,GAAG,CAACC,WAAW,EAAED,GAAG,CAACE,WAAW,CAAC,CAAC;IACxE;;IAEA;IACA,OAAOjB,OAAO,CAACQ,UAAU,CAACb,QAAQ,CAAC,CAACc,IAAI,CAAC,MAAM,KAAK,CAAC,CAAC;EACxD;AACF","ignoreList":[]}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=ObjectSetCacheKey.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ObjectSetCacheKey.js","names":[],"sources":["ObjectSetCacheKey.ts"],"sourcesContent":["/*\n * Copyright 2025 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 { CollectionStorageData } from \"../base-list/BaseCollectionQuery.js\";\nimport type { CacheKey } from \"../CacheKey.js\";\nimport type { Canonical } from \"../Canonical.js\";\nimport type { ObjectSetQuery } from \"./ObjectSetQuery.js\";\n\nexport interface ObjectSetStorageData extends CollectionStorageData {}\n\nexport interface ObjectSetOperations {\n where?: Canonical<any>;\n withProperties?: string[];\n union?: string[];\n intersect?: string[];\n subtract?: string[];\n pivotTo?: string;\n orderBy?: Canonical<Record<string, \"asc\" | \"desc\" | undefined>>;\n pageSize?: number;\n}\n\nexport interface ObjectSetCacheKey extends\n CacheKey<\n \"objectSet\",\n ObjectSetStorageData,\n ObjectSetQuery,\n [\n baseObjectSetWire: string,\n operations: Canonical<ObjectSetOperations>,\n ]\n >\n{\n}\n"],"mappings":"","ignoreList":[]}
@@ -0,0 +1,69 @@
1
+ /*
2
+ * Copyright 2025 Palantir Technologies, Inc. All rights reserved.
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+
17
+ import { getWireObjectSet } from "../../../objectSet/createObjectSet.js";
18
+ import { AbstractHelper } from "../AbstractHelper.js";
19
+ import { ObjectSetQuery } from "./ObjectSetQuery.js";
20
+ export class ObjectSetHelper extends AbstractHelper {
21
+ constructor(store, cacheKeys, whereCanonicalizer, orderByCanonicalizer) {
22
+ super(store, cacheKeys);
23
+ this.whereCanonicalizer = whereCanonicalizer;
24
+ this.orderByCanonicalizer = orderByCanonicalizer;
25
+ }
26
+ observe(options, subFn) {
27
+ return super.observe(options, subFn);
28
+ }
29
+ getQuery(options) {
30
+ const {
31
+ baseObjectSet
32
+ } = options;
33
+ const baseObjectSetWire = JSON.stringify(getWireObjectSet(baseObjectSet));
34
+ const operations = this.buildCanonicalizedOperations(options);
35
+ const objectSetCacheKey = this.cacheKeys.get("objectSet", baseObjectSetWire, operations);
36
+ return this.store.queries.get(objectSetCacheKey, () => {
37
+ return new ObjectSetQuery(this.store, this.store.subjects.get(objectSetCacheKey), baseObjectSetWire, operations, objectSetCacheKey, options);
38
+ });
39
+ }
40
+ buildCanonicalizedOperations(options) {
41
+ const operations = {};
42
+ if (options.where) {
43
+ operations.where = this.whereCanonicalizer.canonicalize(options.where);
44
+ }
45
+ if (options.withProperties) {
46
+ operations.withProperties = Object.keys(options.withProperties).sort();
47
+ }
48
+ if (options.union && options.union.length > 0) {
49
+ operations.union = options.union.map(os => JSON.stringify(getWireObjectSet(os)));
50
+ }
51
+ if (options.intersect && options.intersect.length > 0) {
52
+ operations.intersect = options.intersect.map(os => JSON.stringify(getWireObjectSet(os)));
53
+ }
54
+ if (options.subtract && options.subtract.length > 0) {
55
+ operations.subtract = options.subtract.map(os => JSON.stringify(getWireObjectSet(os)));
56
+ }
57
+ if (options.pivotTo) {
58
+ operations.pivotTo = options.pivotTo;
59
+ }
60
+ if (options.orderBy) {
61
+ operations.orderBy = this.orderByCanonicalizer.canonicalize(options.orderBy);
62
+ }
63
+ if (options.pageSize) {
64
+ operations.pageSize = options.pageSize;
65
+ }
66
+ return operations;
67
+ }
68
+ }
69
+ //# sourceMappingURL=ObjectSetHelper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ObjectSetHelper.js","names":["getWireObjectSet","AbstractHelper","ObjectSetQuery","ObjectSetHelper","constructor","store","cacheKeys","whereCanonicalizer","orderByCanonicalizer","observe","options","subFn","getQuery","baseObjectSet","baseObjectSetWire","JSON","stringify","operations","buildCanonicalizedOperations","objectSetCacheKey","get","queries","subjects","where","canonicalize","withProperties","Object","keys","sort","union","length","map","os","intersect","subtract","pivotTo","orderBy","pageSize"],"sources":["ObjectSetHelper.ts"],"sourcesContent":["/*\n * Copyright 2025 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 { getWireObjectSet } from \"../../../objectSet/createObjectSet.js\";\nimport type { ObjectSetPayload } from \"../../ObjectSetPayload.js\";\nimport type { Observer } from \"../../ObservableClient/common.js\";\nimport { AbstractHelper } from \"../AbstractHelper.js\";\nimport type { CacheKeys } from \"../CacheKeys.js\";\nimport type { Canonical } from \"../Canonical.js\";\nimport type { KnownCacheKey } from \"../KnownCacheKey.js\";\nimport type { OrderByCanonicalizer } from \"../OrderByCanonicalizer.js\";\nimport type { QuerySubscription } from \"../QuerySubscription.js\";\nimport type { Store } from \"../Store.js\";\nimport type { WhereClauseCanonicalizer } from \"../WhereClauseCanonicalizer.js\";\nimport type {\n ObjectSetCacheKey,\n ObjectSetOperations,\n} from \"./ObjectSetCacheKey.js\";\nimport { ObjectSetQuery } from \"./ObjectSetQuery.js\";\nimport type { ObjectSetQueryOptions } from \"./ObjectSetQueryOptions.js\";\n\nexport class ObjectSetHelper extends AbstractHelper<\n ObjectSetQuery,\n ObjectSetQueryOptions\n> {\n whereCanonicalizer: WhereClauseCanonicalizer;\n orderByCanonicalizer: OrderByCanonicalizer;\n\n constructor(\n store: Store,\n cacheKeys: CacheKeys<KnownCacheKey>,\n whereCanonicalizer: WhereClauseCanonicalizer,\n orderByCanonicalizer: OrderByCanonicalizer,\n ) {\n super(store, cacheKeys);\n\n this.whereCanonicalizer = whereCanonicalizer;\n this.orderByCanonicalizer = orderByCanonicalizer;\n }\n\n observe(\n options: ObjectSetQueryOptions,\n subFn: Observer<ObjectSetPayload>,\n ): QuerySubscription<ObjectSetQuery> {\n return super.observe(options, subFn);\n }\n\n getQuery(options: ObjectSetQueryOptions): ObjectSetQuery {\n const { baseObjectSet } = options;\n const baseObjectSetWire = JSON.stringify(getWireObjectSet(baseObjectSet));\n const operations = this.buildCanonicalizedOperations(options);\n\n const objectSetCacheKey = this.cacheKeys.get<ObjectSetCacheKey>(\n \"objectSet\",\n baseObjectSetWire,\n operations,\n );\n\n return this.store.queries.get(objectSetCacheKey, () => {\n return new ObjectSetQuery(\n this.store,\n this.store.subjects.get(objectSetCacheKey),\n baseObjectSetWire,\n operations,\n objectSetCacheKey,\n options,\n );\n });\n }\n\n private buildCanonicalizedOperations(\n options: ObjectSetQueryOptions,\n ): Canonical<ObjectSetOperations> {\n const operations: ObjectSetOperations = {};\n\n if (options.where) {\n operations.where = this.whereCanonicalizer.canonicalize(options.where);\n }\n\n if (options.withProperties) {\n operations.withProperties = Object.keys(options.withProperties).sort();\n }\n\n if (options.union && options.union.length > 0) {\n operations.union = options.union.map(os =>\n JSON.stringify(getWireObjectSet(os))\n );\n }\n\n if (options.intersect && options.intersect.length > 0) {\n operations.intersect = options.intersect.map(os =>\n JSON.stringify(getWireObjectSet(os))\n );\n }\n\n if (options.subtract && options.subtract.length > 0) {\n operations.subtract = options.subtract.map(os =>\n JSON.stringify(getWireObjectSet(os))\n );\n }\n\n if (options.pivotTo) {\n operations.pivotTo = options.pivotTo as string;\n }\n\n if (options.orderBy) {\n operations.orderBy = this.orderByCanonicalizer.canonicalize(\n options.orderBy,\n );\n }\n\n if (options.pageSize) {\n operations.pageSize = options.pageSize;\n }\n\n return operations as Canonical<ObjectSetOperations>;\n }\n}\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAASA,gBAAgB,QAAQ,uCAAuC;AAGxE,SAASC,cAAc,QAAQ,sBAAsB;AAYrD,SAASC,cAAc,QAAQ,qBAAqB;AAGpD,OAAO,MAAMC,eAAe,SAASF,cAAc,CAGjD;EAIAG,WAAWA,CACTC,KAAY,EACZC,SAAmC,EACnCC,kBAA4C,EAC5CC,oBAA0C,EAC1C;IACA,KAAK,CAACH,KAAK,EAAEC,SAAS,CAAC;IAEvB,IAAI,CAACC,kBAAkB,GAAGA,kBAAkB;IAC5C,IAAI,CAACC,oBAAoB,GAAGA,oBAAoB;EAClD;EAEAC,OAAOA,CACLC,OAA8B,EAC9BC,KAAiC,EACE;IACnC,OAAO,KAAK,CAACF,OAAO,CAACC,OAAO,EAAEC,KAAK,CAAC;EACtC;EAEAC,QAAQA,CAACF,OAA8B,EAAkB;IACvD,MAAM;MAAEG;IAAc,CAAC,GAAGH,OAAO;IACjC,MAAMI,iBAAiB,GAAGC,IAAI,CAACC,SAAS,CAAChB,gBAAgB,CAACa,aAAa,CAAC,CAAC;IACzE,MAAMI,UAAU,GAAG,IAAI,CAACC,4BAA4B,CAACR,OAAO,CAAC;IAE7D,MAAMS,iBAAiB,GAAG,IAAI,CAACb,SAAS,CAACc,GAAG,CAC1C,WAAW,EACXN,iBAAiB,EACjBG,UACF,CAAC;IAED,OAAO,IAAI,CAACZ,KAAK,CAACgB,OAAO,CAACD,GAAG,CAACD,iBAAiB,EAAE,MAAM;MACrD,OAAO,IAAIjB,cAAc,CACvB,IAAI,CAACG,KAAK,EACV,IAAI,CAACA,KAAK,CAACiB,QAAQ,CAACF,GAAG,CAACD,iBAAiB,CAAC,EAC1CL,iBAAiB,EACjBG,UAAU,EACVE,iBAAiB,EACjBT,OACF,CAAC;IACH,CAAC,CAAC;EACJ;EAEQQ,4BAA4BA,CAClCR,OAA8B,EACE;IAChC,MAAMO,UAA+B,GAAG,CAAC,CAAC;IAE1C,IAAIP,OAAO,CAACa,KAAK,EAAE;MACjBN,UAAU,CAACM,KAAK,GAAG,IAAI,CAAChB,kBAAkB,CAACiB,YAAY,CAACd,OAAO,CAACa,KAAK,CAAC;IACxE;IAEA,IAAIb,OAAO,CAACe,cAAc,EAAE;MAC1BR,UAAU,CAACQ,cAAc,GAAGC,MAAM,CAACC,IAAI,CAACjB,OAAO,CAACe,cAAc,CAAC,CAACG,IAAI,CAAC,CAAC;IACxE;IAEA,IAAIlB,OAAO,CAACmB,KAAK,IAAInB,OAAO,CAACmB,KAAK,CAACC,MAAM,GAAG,CAAC,EAAE;MAC7Cb,UAAU,CAACY,KAAK,GAAGnB,OAAO,CAACmB,KAAK,CAACE,GAAG,CAACC,EAAE,IACrCjB,IAAI,CAACC,SAAS,CAAChB,gBAAgB,CAACgC,EAAE,CAAC,CACrC,CAAC;IACH;IAEA,IAAItB,OAAO,CAACuB,SAAS,IAAIvB,OAAO,CAACuB,SAAS,CAACH,MAAM,GAAG,CAAC,EAAE;MACrDb,UAAU,CAACgB,SAAS,GAAGvB,OAAO,CAACuB,SAAS,CAACF,GAAG,CAACC,EAAE,IAC7CjB,IAAI,CAACC,SAAS,CAAChB,gBAAgB,CAACgC,EAAE,CAAC,CACrC,CAAC;IACH;IAEA,IAAItB,OAAO,CAACwB,QAAQ,IAAIxB,OAAO,CAACwB,QAAQ,CAACJ,MAAM,GAAG,CAAC,EAAE;MACnDb,UAAU,CAACiB,QAAQ,GAAGxB,OAAO,CAACwB,QAAQ,CAACH,GAAG,CAACC,EAAE,IAC3CjB,IAAI,CAACC,SAAS,CAAChB,gBAAgB,CAACgC,EAAE,CAAC,CACrC,CAAC;IACH;IAEA,IAAItB,OAAO,CAACyB,OAAO,EAAE;MACnBlB,UAAU,CAACkB,OAAO,GAAGzB,OAAO,CAACyB,OAAiB;IAChD;IAEA,IAAIzB,OAAO,CAAC0B,OAAO,EAAE;MACnBnB,UAAU,CAACmB,OAAO,GAAG,IAAI,CAAC5B,oBAAoB,CAACgB,YAAY,CACzDd,OAAO,CAAC0B,OACV,CAAC;IACH;IAEA,IAAI1B,OAAO,CAAC2B,QAAQ,EAAE;MACpBpB,UAAU,CAACoB,QAAQ,GAAG3B,OAAO,CAAC2B,QAAQ;IACxC;IAEA,OAAOpB,UAAU;EACnB;AACF","ignoreList":[]}
@@ -0,0 +1,151 @@
1
+ /*
2
+ * Copyright 2025 Palantir Technologies, Inc. All rights reserved.
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+
17
+ import { additionalContext } from "../../../Client.js";
18
+ import { getWireObjectSet } from "../../../objectSet/createObjectSet.js";
19
+ import { BaseListQuery } from "../base-list/BaseListQuery.js";
20
+ import { OrderBySortingStrategy } from "../sorting/SortingStrategy.js";
21
+ export class ObjectSetQuery extends BaseListQuery {
22
+ #baseObjectSetWire;
23
+ #operations;
24
+ #composedObjectSet;
25
+ #objectTypes;
26
+ constructor(store, subject, baseObjectSetWire, operations, cacheKey, opts) {
27
+ super(store, subject, opts, cacheKey, process.env.NODE_ENV !== "production" ? store.client[additionalContext].logger?.child({}, {
28
+ msgPrefix: `ObjectSetQuery<${cacheKey.otherKeys.map(x => JSON.stringify(x)).join(", ")}>`
29
+ }) : undefined);
30
+ this.#baseObjectSetWire = baseObjectSetWire;
31
+ this.#operations = operations;
32
+ this.#composedObjectSet = this.#composeObjectSet(opts);
33
+ this.#objectTypes = this.#extractObjectTypes(opts);
34
+ if (operations.orderBy && Object.keys(operations.orderBy).length > 0) {
35
+ const firstType = Array.from(this.#objectTypes)[0];
36
+ this.sortingStrategy = new OrderBySortingStrategy(firstType, operations.orderBy);
37
+ }
38
+ this.minResultsToLoad = opts.pageSize || 0;
39
+ }
40
+ #composeObjectSet(opts) {
41
+ let result = opts.baseObjectSet;
42
+ if (opts.withProperties) {
43
+ result = result.withProperties(opts.withProperties);
44
+ }
45
+ if (opts.where) {
46
+ result = result.where(opts.where);
47
+ }
48
+ if (opts.union && opts.union.length > 0) {
49
+ result = result.union(...opts.union);
50
+ }
51
+ if (opts.intersect && opts.intersect.length > 0) {
52
+ result = result.intersect(...opts.intersect);
53
+ }
54
+ if (opts.subtract && opts.subtract.length > 0) {
55
+ result = result.subtract(...opts.subtract);
56
+ }
57
+ if (opts.pivotTo) {
58
+ result = result.pivotTo(opts.pivotTo);
59
+ }
60
+ return result;
61
+ }
62
+ #extractObjectTypes(opts) {
63
+ const types = new Set();
64
+ const baseWire = JSON.parse(this.#baseObjectSetWire);
65
+ if (baseWire.type) {
66
+ types.add(baseWire.type);
67
+ }
68
+ if (opts.union) {
69
+ for (const os of opts.union) {
70
+ const wire = getWireObjectSet(os);
71
+ if (wire.type) {
72
+ types.add(wire.type);
73
+ }
74
+ }
75
+ }
76
+ if (opts.intersect) {
77
+ for (const os of opts.intersect) {
78
+ const wire = getWireObjectSet(os);
79
+ if (wire.type) {
80
+ types.add(wire.type);
81
+ }
82
+ }
83
+ }
84
+ if (opts.subtract) {
85
+ for (const os of opts.subtract) {
86
+ const wire = getWireObjectSet(os);
87
+ if (wire.type) {
88
+ types.add(wire.type);
89
+ }
90
+ }
91
+ }
92
+
93
+ // TODO: support pivotTo, requires resolving the target type from link metadata
94
+
95
+ return types;
96
+ }
97
+
98
+ /**
99
+ * Register changes to the cache specific to ObjectSetQuery
100
+ */
101
+ registerCacheChanges(batch) {
102
+ batch.changes.registerObjectSet(this.cacheKey);
103
+ }
104
+
105
+ /**
106
+ * Implements fetchPageData from BaseListQuery template method
107
+ * Fetches a page of data from the composed ObjectSet
108
+ */
109
+ async fetchPageData(signal) {
110
+ // Fetch the data with pagination
111
+ const resp = await this.#composedObjectSet.fetchPage({
112
+ $nextPageToken: this.nextPageToken,
113
+ $pageSize: this.options.pageSize,
114
+ // OrderBy is already applied in the composed ObjectSet
115
+ ...(this.#operations.orderBy && Object.keys(this.#operations.orderBy).length > 0 ? {
116
+ $orderBy: this.#operations.orderBy
117
+ } : {})
118
+ });
119
+ if (signal?.aborted) {
120
+ throw new Error("Aborted");
121
+ }
122
+ this.nextPageToken = resp.nextPageToken;
123
+ return resp;
124
+ }
125
+ handleFetchError(error, _status, batch) {
126
+ this.logger?.error("error", error);
127
+ this.store.subjects.get(this.cacheKey).error(error);
128
+ return this.writeToStore({
129
+ data: []
130
+ }, "error", batch);
131
+ }
132
+ invalidateObjectType = async (objectType, changes) => {
133
+ if (this.#objectTypes.has(objectType)) {
134
+ changes?.modified.add(this.cacheKey);
135
+ return this.revalidate(true);
136
+ }
137
+ return Promise.resolve();
138
+ };
139
+ createPayload(params) {
140
+ return {
141
+ resolvedList: params.resolvedData,
142
+ isOptimistic: params.isOptimistic,
143
+ fetchMore: this.fetchMore,
144
+ hasMore: this.nextPageToken != null,
145
+ status: params.status,
146
+ lastUpdated: params.lastUpdated,
147
+ objectSet: this.#composedObjectSet
148
+ };
149
+ }
150
+ }
151
+ //# sourceMappingURL=ObjectSetQuery.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ObjectSetQuery.js","names":["additionalContext","getWireObjectSet","BaseListQuery","OrderBySortingStrategy","ObjectSetQuery","baseObjectSetWire","operations","composedObjectSet","objectTypes","constructor","store","subject","cacheKey","opts","process","env","NODE_ENV","client","logger","child","msgPrefix","otherKeys","map","x","JSON","stringify","join","undefined","composeObjectSet","extractObjectTypes","orderBy","Object","keys","length","firstType","Array","from","sortingStrategy","minResultsToLoad","pageSize","#composeObjectSet","result","baseObjectSet","withProperties","where","union","intersect","subtract","pivotTo","#extractObjectTypes","types","Set","baseWire","parse","type","add","os","wire","registerCacheChanges","batch","changes","registerObjectSet","fetchPageData","signal","resp","fetchPage","$nextPageToken","nextPageToken","$pageSize","options","$orderBy","aborted","Error","handleFetchError","error","_status","subjects","get","writeToStore","data","invalidateObjectType","objectType","has","modified","revalidate","Promise","resolve","createPayload","params","resolvedList","resolvedData","isOptimistic","fetchMore","hasMore","status","lastUpdated","objectSet"],"sources":["ObjectSetQuery.ts"],"sourcesContent":["/*\n * Copyright 2025 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 { Observable } from \"rxjs\";\nimport { additionalContext } from \"../../../Client.js\";\nimport { getWireObjectSet } from \"../../../objectSet/createObjectSet.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 { Canonical } from \"../Canonical.js\";\nimport type { Changes } from \"../Changes.js\";\nimport type { Entry } from \"../Layer.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\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 ? (\n store.client[additionalContext].logger?.child({}, {\n msgPrefix: `ObjectSetQuery<${\n cacheKey.otherKeys.map(x => JSON.stringify(x)).join(\", \")\n }>`,\n })\n )\n : undefined,\n );\n\n this.#baseObjectSetWire = baseObjectSetWire;\n this.#operations = operations;\n this.#composedObjectSet = this.#composeObjectSet(opts);\n this.#objectTypes = this.#extractObjectTypes(opts);\n\n if (operations.orderBy && Object.keys(operations.orderBy).length > 0) {\n const firstType = Array.from(this.#objectTypes)[0];\n this.sortingStrategy = new OrderBySortingStrategy(\n firstType,\n operations.orderBy,\n );\n }\n\n this.minResultsToLoad = opts.pageSize || 0;\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(opts: ObjectSetQueryOptions): Set<string> {\n const types = new Set<string>();\n const baseWire = JSON.parse(this.#baseObjectSetWire);\n if (baseWire.type) {\n types.add(baseWire.type);\n }\n\n if (opts.union) {\n for (const os of opts.union) {\n const wire = getWireObjectSet(os);\n if (wire.type) {\n types.add(wire.type);\n }\n }\n }\n\n if (opts.intersect) {\n for (const os of opts.intersect) {\n const wire = getWireObjectSet(os);\n if (wire.type) {\n types.add(wire.type);\n }\n }\n }\n\n if (opts.subtract) {\n for (const os of opts.subtract) {\n const wire = getWireObjectSet(os);\n if (wire.type) {\n types.add(wire.type);\n }\n }\n }\n\n // TODO: support pivotTo, requires resolving the target type from link metadata\n\n return types;\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 // Fetch the data with pagination\n const resp = await this.#composedObjectSet.fetchPage({\n $nextPageToken: this.nextPageToken,\n $pageSize: this.options.pageSize,\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 });\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 return this.writeToStore({ data: [] }, \"error\", batch);\n }\n\n invalidateObjectType = async (\n objectType: string,\n changes: Changes | undefined,\n ): Promise<void> => {\n if (this.#objectTypes.has(objectType)) {\n changes?.modified.add(this.cacheKey);\n return this.revalidate(true);\n }\n return Promise.resolve();\n };\n\n protected createPayload(\n params: {\n resolvedData: any[];\n isOptimistic: boolean;\n status: Status;\n lastUpdated: number;\n },\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 };\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=ObjectSetQueryOptions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ObjectSetQueryOptions.js","names":[],"sources":["ObjectSetQueryOptions.ts"],"sourcesContent":["/*\n * Copyright 2025 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 DerivedProperty,\n LinkNames,\n ObjectSet,\n ObjectTypeDefinition,\n PropertyKeys,\n WhereClause,\n WirePropertyTypes,\n} from \"@osdk/api\";\nimport type { CommonObserveOptions } from \"../../ObservableClient/common.js\";\n\nexport interface ObserveObjectSetOptions<\n Q extends ObjectTypeDefinition,\n RDPs extends Record<\n string,\n WirePropertyTypes | undefined | Array<WirePropertyTypes>\n > = {},\n> extends CommonObserveOptions {\n where?: WhereClause<Q>;\n withProperties?: { [K in keyof RDPs]: DerivedProperty.Creator<Q, RDPs[K]> };\n union?: ObjectSet<Q>[];\n intersect?: ObjectSet<Q>[];\n subtract?: ObjectSet<Q>[];\n pivotTo?: LinkNames<Q>;\n pageSize?: number;\n orderBy?: { [K in PropertyKeys<Q>]?: \"asc\" | \"desc\" };\n}\n\nexport interface ObjectSetQueryOptions\n extends ObserveObjectSetOptions<any, any>\n{\n baseObjectSet: ObjectSet<any>;\n}\n"],"mappings":"","ignoreList":[]}
@@ -18,6 +18,7 @@ export { augment } from "../object/fetchPage.js";
18
18
 
19
19
  // THIS IS NOT THE FINAL NAME DO NOT SHIP LIKE THIS
20
20
 
21
+ export { computeObjectSetCacheKey } from "../observable/computeObjectSetCacheKey.js";
21
22
  export { createObservableClient } from "../observable/ObservableClient.js";
22
23
  export { getMetaTagContent, getOsdkConfig } from "../public-utils/osdkConfig.js";
23
24
  export { createClientWithTransaction } from "../createClient.js";
@@ -1 +1 @@
1
- {"version":3,"file":"unstable-do-not-use.js","names":["augment","createObservableClient","getMetaTagContent","getOsdkConfig","createClientWithTransaction"],"sources":["unstable-do-not-use.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 { augment } from \"../object/fetchPage.js\";\n\n// THIS IS NOT THE FINAL NAME DO NOT SHIP LIKE THIS\nexport type { ActionSignatureFromDef } from \"../actions/applyAction.js\";\nexport { createObservableClient } from \"../observable/ObservableClient.js\";\nexport type {\n ObservableClient,\n ObserveObjectArgs,\n ObserveObjectsArgs,\n Unsubscribable,\n} from \"../observable/ObservableClient.js\";\nexport type { Observer } from \"../observable/ObservableClient/common.js\";\nexport type { ObserveLinks } from \"../observable/ObservableClient/ObserveLink.js\";\nexport {\n getMetaTagContent,\n getOsdkConfig,\n} from \"../public-utils/osdkConfig.js\";\nexport type { OsdkConfig } from \"../public-utils/osdkConfig.js\";\n\nexport { createClientWithTransaction } from \"../createClient.js\";\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAASA,OAAO,QAAQ,wBAAwB;;AAEhD;;AAEA,SAASC,sBAAsB,QAAQ,mCAAmC;AAS1E,SACEC,iBAAiB,EACjBC,aAAa,QACR,+BAA+B;AAGtC,SAASC,2BAA2B,QAAQ,oBAAoB","ignoreList":[]}
1
+ {"version":3,"file":"unstable-do-not-use.js","names":["augment","computeObjectSetCacheKey","createObservableClient","getMetaTagContent","getOsdkConfig","createClientWithTransaction"],"sources":["unstable-do-not-use.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 { augment } from \"../object/fetchPage.js\";\n\n// THIS IS NOT THE FINAL NAME DO NOT SHIP LIKE THIS\nexport type { ActionSignatureFromDef } from \"../actions/applyAction.js\";\nexport { computeObjectSetCacheKey } from \"../observable/computeObjectSetCacheKey.js\";\nexport { createObservableClient } from \"../observable/ObservableClient.js\";\nexport type {\n ObservableClient,\n ObserveObjectArgs,\n ObserveObjectsArgs,\n ObserveObjectSetArgs,\n Unsubscribable,\n} from \"../observable/ObservableClient.js\";\nexport type { Observer } from \"../observable/ObservableClient/common.js\";\nexport type { ObserveLinks } from \"../observable/ObservableClient/ObserveLink.js\";\nexport {\n getMetaTagContent,\n getOsdkConfig,\n} from \"../public-utils/osdkConfig.js\";\nexport type { OsdkConfig } from \"../public-utils/osdkConfig.js\";\n\nexport { createClientWithTransaction } from \"../createClient.js\";\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAASA,OAAO,QAAQ,wBAAwB;;AAEhD;;AAEA,SAASC,wBAAwB,QAAQ,2CAA2C;AACpF,SAASC,sBAAsB,QAAQ,mCAAmC;AAU1E,SACEC,iBAAiB,EACjBC,aAAa,QACR,+BAA+B;AAGtC,SAASC,2BAA2B,QAAQ,oBAAoB","ignoreList":[]}
@@ -14,6 +14,6 @@
14
14
  * limitations under the License.
15
15
  */
16
16
 
17
- export const USER_AGENT = `osdk-client/${"2.5.0-beta.10"}`;
18
- export const OBSERVABLE_USER_AGENT = `osdk-observable-client/${"2.5.0-beta.10"}`;
17
+ export const USER_AGENT = `osdk-client/${"2.5.0-beta.12"}`;
18
+ export const OBSERVABLE_USER_AGENT = `osdk-observable-client/${"2.5.0-beta.12"}`;
19
19
  //# sourceMappingURL=UserAgent.js.map
@@ -928,7 +928,8 @@ async function applyFetchArgs(args, body, _client, objectType) {
928
928
  return body;
929
929
  }
930
930
  async function fetchObjectPage(client, objectType, args, objectSet, useSnapshot = false) {
931
- void client.ontologyProvider.getObjectDefinition(objectType.apiName);
931
+ void client.ontologyProvider.getObjectDefinition(objectType.apiName).catch(() => {
932
+ });
932
933
  const requestBody = await buildAndRemapRequestBody(args, {
933
934
  objectSet,
934
935
  select: args?.$select ? [...args.$select] : [],
@@ -2052,5 +2053,5 @@ exports.hydrateAttachmentFromRidInternal = hydrateAttachmentFromRidInternal;
2052
2053
  exports.isObjectSet = isObjectSet;
2053
2054
  exports.isWireObjectSet = isWireObjectSet;
2054
2055
  exports.symbolClientContext = symbolClientContext;
2055
- //# sourceMappingURL=chunk-GVGP7T5P.cjs.map
2056
- //# sourceMappingURL=chunk-GVGP7T5P.cjs.map
2056
+ //# sourceMappingURL=chunk-2YVNXAHH.cjs.map
2057
+ //# sourceMappingURL=chunk-2YVNXAHH.cjs.map