@osdk/client 2.4.2 → 2.5.0-beta.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +106 -93
- package/build/browser/Client.js +1 -1
- package/build/browser/Client.js.map +1 -1
- package/build/browser/MinimalClientContext.js.map +1 -1
- package/build/browser/actions/applyAction.js +4 -0
- package/build/browser/actions/applyAction.js.map +1 -1
- package/build/browser/createClient.js +6 -2
- package/build/browser/createClient.js.map +1 -1
- package/build/browser/createMinimalClient.js +2 -1
- package/build/browser/createMinimalClient.js.map +1 -1
- package/build/browser/derivedProperties/createWithPropertiesObjectSet.js +17 -0
- package/build/browser/derivedProperties/createWithPropertiesObjectSet.js.map +1 -1
- package/build/browser/fetchMetadata.test.js +11 -0
- package/build/browser/fetchMetadata.test.js.map +1 -1
- package/build/browser/index.js +3 -1
- package/build/browser/index.js.map +1 -1
- package/build/browser/intellisense.test.helpers/orderBySuggestionIsRight.js +8 -1
- package/build/browser/intellisense.test.helpers/orderBySuggestionIsRight.js.map +1 -1
- package/build/browser/intellisense.test.js +14 -4
- package/build/browser/intellisense.test.js.map +1 -1
- package/build/browser/object/Cache.js +1 -1
- package/build/browser/object/Cache.js.map +1 -1
- package/build/browser/object/Cache.test.js +1 -1
- package/build/browser/object/Cache.test.js.map +1 -1
- package/build/browser/object/SimpleCache.js +1 -1
- package/build/browser/object/SimpleCache.js.map +1 -1
- package/build/browser/object/aggregate.js +2 -0
- package/build/browser/object/aggregate.js.map +1 -1
- package/build/browser/object/aggregate.test.js +30 -0
- package/build/browser/object/aggregate.test.js.map +1 -1
- package/build/browser/object/convertWireToOsdkObjects/OsdkCustomInspectPrototype.js +1 -0
- package/build/browser/object/convertWireToOsdkObjects/OsdkCustomInspectPrototype.js.map +1 -1
- package/build/browser/object/convertWireToOsdkObjects/createOsdkInterface.js +6 -0
- package/build/browser/object/convertWireToOsdkObjects/createOsdkInterface.js.map +1 -1
- package/build/browser/object/convertWireToOsdkObjects/getDollarLink.js +20 -1
- package/build/browser/object/convertWireToOsdkObjects/getDollarLink.js.map +1 -1
- package/build/browser/object/convertWireToOsdkObjects.js +4 -0
- package/build/browser/object/convertWireToOsdkObjects.js.map +1 -1
- package/build/browser/object/convertWireToOsdkObjects.test.js +14 -0
- package/build/browser/object/convertWireToOsdkObjects.test.js.map +1 -1
- package/build/browser/object/fetchPage.js +96 -21
- package/build/browser/object/fetchPage.js.map +1 -1
- package/build/browser/object/fetchPage.test.js +35 -1
- package/build/browser/object/fetchPage.test.js.map +1 -1
- package/build/browser/object/geotimeseriesreference.test.js +0 -2
- package/build/browser/object/geotimeseriesreference.test.js.map +1 -1
- package/build/browser/object/mediaUpload.js +3 -0
- package/build/browser/object/mediaUpload.js.map +1 -1
- package/build/browser/objectSet/ObjectSet.test.js +6 -0
- package/build/browser/objectSet/ObjectSet.test.js.map +1 -1
- package/build/browser/objectSet/ObjectSetListenerWebsocket.js +31 -9
- package/build/browser/objectSet/ObjectSetListenerWebsocket.js.map +1 -1
- package/build/browser/objectSet/ObjectSetListenerWebsocket.test.js +69 -4
- package/build/browser/objectSet/ObjectSetListenerWebsocket.test.js.map +1 -1
- package/build/browser/objectSet/createObjectSet.js +3 -1
- package/build/browser/objectSet/createObjectSet.js.map +1 -1
- package/build/browser/observable/LinkPayload.js +2 -0
- package/build/browser/observable/LinkPayload.js.map +1 -0
- package/build/browser/observable/ObjectPayload.js.map +1 -1
- package/build/browser/observable/ObservableClient/ObserveLink.js +17 -0
- package/build/browser/observable/ObservableClient/ObserveLink.js.map +1 -0
- package/build/browser/observable/ObservableClient/common.js +2 -0
- package/build/browser/observable/ObservableClient/common.js.map +1 -0
- package/build/browser/observable/ObservableClient.js +20 -0
- package/build/browser/observable/ObservableClient.js.map +1 -1
- package/build/browser/observable/Unsubscribable.js +2 -0
- package/build/browser/observable/Unsubscribable.js.map +1 -0
- package/build/browser/observable/internal/AbstractHelper.js +54 -0
- package/build/browser/observable/internal/AbstractHelper.js.map +1 -0
- package/build/browser/observable/internal/BatchContext.js +2 -0
- package/build/browser/observable/internal/BatchContext.js.map +1 -0
- package/build/browser/observable/internal/BulkObjectLoader.js +3 -3
- package/build/browser/observable/internal/BulkObjectLoader.js.map +1 -1
- package/build/browser/observable/internal/CacheKeys.js +65 -25
- package/build/browser/observable/internal/CacheKeys.js.map +1 -1
- package/build/browser/observable/internal/Changes.js +6 -0
- package/build/browser/observable/internal/Changes.js.map +1 -1
- package/build/browser/observable/internal/KnownCacheKey.js +2 -0
- package/build/browser/observable/internal/KnownCacheKey.js.map +1 -0
- package/build/browser/observable/internal/Layer.js +0 -8
- package/build/browser/observable/internal/Layer.js.map +1 -1
- package/build/browser/observable/internal/Layers.js +151 -0
- package/build/browser/observable/internal/Layers.js.map +1 -0
- package/build/browser/observable/internal/ObservableClientImpl.js +54 -3
- package/build/browser/observable/internal/ObservableClientImpl.js.map +1 -1
- package/build/browser/observable/internal/OrderByCanonicalizer.js +1 -37
- package/build/browser/observable/internal/OrderByCanonicalizer.js.map +1 -1
- package/build/browser/observable/internal/Queries.js +40 -0
- package/build/browser/observable/internal/Queries.js.map +1 -0
- package/build/browser/observable/internal/Query.js +45 -4
- package/build/browser/observable/internal/Query.js.map +1 -1
- package/build/browser/observable/internal/QuerySubscription.js +48 -0
- package/build/browser/observable/internal/QuerySubscription.js.map +1 -0
- package/build/browser/observable/internal/Store.invalidation.test.js +646 -0
- package/build/browser/observable/internal/Store.invalidation.test.js.map +1 -0
- package/build/browser/observable/internal/Store.js +87 -308
- package/build/browser/observable/internal/Store.js.map +1 -1
- package/build/browser/observable/internal/Store.test.js +330 -73
- package/build/browser/observable/internal/Store.test.js.map +1 -1
- package/build/browser/observable/internal/SubjectPayload.js +2 -0
- package/build/browser/observable/internal/SubjectPayload.js.map +1 -0
- package/build/browser/observable/internal/Subjects.js +55 -0
- package/build/browser/observable/internal/Subjects.js.map +1 -0
- package/build/browser/observable/internal/UnsubscribableWrapper.js +30 -0
- package/build/browser/observable/internal/UnsubscribableWrapper.js.map +1 -0
- package/build/browser/observable/internal/WeakRefTrie.js +61 -0
- package/build/browser/observable/internal/WeakRefTrie.js.map +1 -0
- package/build/browser/observable/internal/{ActionApplication.js → actions/ActionApplication.js} +2 -2
- package/build/browser/observable/internal/actions/ActionApplication.js.map +1 -0
- package/build/{esm/observable/internal → browser/observable/internal/actions}/OptimisticJob.js +15 -6
- package/build/browser/observable/internal/actions/OptimisticJob.js.map +1 -0
- package/build/browser/observable/internal/base-list/BaseCollectionQuery.js +2 -0
- package/build/browser/observable/internal/base-list/BaseCollectionQuery.js.map +1 -0
- package/build/browser/observable/internal/base-list/BaseListQuery.js +411 -0
- package/build/browser/observable/internal/base-list/BaseListQuery.js.map +1 -0
- package/build/browser/observable/internal/base-list/createCollectionConnectable.js +50 -0
- package/build/browser/observable/internal/base-list/createCollectionConnectable.js.map +1 -0
- package/build/browser/observable/internal/base-list/createCollectionConnectable.test.js +597 -0
- package/build/browser/observable/internal/base-list/createCollectionConnectable.test.js.map +1 -0
- package/build/browser/observable/internal/base-list/removeDuplicates.js +36 -0
- package/build/browser/observable/internal/base-list/removeDuplicates.js.map +1 -0
- package/build/browser/observable/internal/createInitEntry.js +25 -0
- package/build/browser/observable/internal/createInitEntry.js.map +1 -0
- package/build/browser/observable/internal/getObjectTypesThatInvalidate.js +216 -0
- package/build/browser/observable/internal/getObjectTypesThatInvalidate.js.map +1 -0
- package/build/browser/observable/internal/getObjectTypesThatInvalidate.test.js +382 -0
- package/build/browser/observable/internal/getObjectTypesThatInvalidate.test.js.map +1 -0
- package/build/browser/observable/internal/isObjectInstance.js +23 -0
- package/build/browser/observable/internal/isObjectInstance.js.map +1 -0
- package/build/browser/observable/internal/links/LinksHelper.js +37 -0
- package/build/browser/observable/internal/links/LinksHelper.js.map +1 -0
- package/build/browser/observable/internal/links/SpecificLinkCacheKey.js +2 -0
- package/build/browser/observable/internal/links/SpecificLinkCacheKey.js.map +1 -0
- package/build/browser/observable/internal/links/SpecificLinkQuery.js +185 -0
- package/build/browser/observable/internal/links/SpecificLinkQuery.js.map +1 -0
- package/build/browser/observable/internal/list/InterfaceListQuery.js +83 -0
- package/build/browser/observable/internal/list/InterfaceListQuery.js.map +1 -0
- package/build/browser/observable/internal/list/ListCacheKey.js +2 -0
- package/build/browser/observable/internal/list/ListCacheKey.js.map +1 -0
- package/build/browser/observable/internal/list/ListQuery.js +372 -0
- package/build/browser/observable/internal/list/ListQuery.js.map +1 -0
- package/build/browser/observable/internal/list/ListQueryOptions.js +2 -0
- package/build/browser/observable/internal/list/ListQueryOptions.js.map +1 -0
- package/build/browser/observable/internal/list/ListsHelper.js +51 -0
- package/build/browser/observable/internal/list/ListsHelper.js.map +1 -0
- package/build/browser/observable/internal/list/ObjectListQuery.js +48 -0
- package/build/browser/observable/internal/list/ObjectListQuery.js.map +1 -0
- package/build/browser/observable/internal/object/ObjectCacheKey.js +2 -0
- package/build/browser/observable/internal/object/ObjectCacheKey.js.map +1 -0
- package/build/browser/observable/internal/{ObjectQuery.js → object/ObjectQuery.js} +27 -18
- package/build/browser/observable/internal/object/ObjectQuery.js.map +1 -0
- package/build/browser/observable/internal/object/ObjectsHelper.js +48 -0
- package/build/browser/observable/internal/object/ObjectsHelper.js.map +1 -0
- package/build/browser/observable/internal/sorting/SortingStrategy.js +78 -0
- package/build/browser/observable/internal/sorting/SortingStrategy.js.map +1 -0
- package/build/browser/observable/internal/testUtils/invalidateList.js +23 -0
- package/build/browser/observable/internal/testUtils/invalidateList.js.map +1 -0
- package/build/browser/observable/internal/testUtils/observeLink/expectStandardObserveLink.js +69 -0
- package/build/browser/observable/internal/testUtils/observeLink/expectStandardObserveLink.js.map +1 -0
- package/build/browser/observable/internal/testUtils/observeObject/expectStandardObserveObject.js +56 -0
- package/build/browser/observable/internal/testUtils/observeObject/expectStandardObserveObject.js.map +1 -0
- package/build/browser/observable/internal/testUtils.js +72 -10
- package/build/browser/observable/internal/testUtils.js.map +1 -1
- package/build/browser/ontology/loadActionMetadata.js +3 -1
- package/build/browser/ontology/loadActionMetadata.js.map +1 -1
- package/build/browser/ontology/loadFullObjectMetadata.js +2 -1
- package/build/browser/ontology/loadFullObjectMetadata.js.map +1 -1
- package/build/browser/ontology/loadInterfaceMetadata.js +2 -1
- package/build/browser/ontology/loadInterfaceMetadata.js.map +1 -1
- package/build/browser/public/unstable-do-not-use.js.map +1 -1
- package/build/browser/util/UserAgent.js +2 -2
- package/build/browser/util/UserAgent.js.map +1 -1
- package/build/browser/util/exponentialBackoff.js +51 -0
- package/build/browser/util/exponentialBackoff.js.map +1 -0
- package/build/browser/util/exponentialBackoff.test.js +81 -0
- package/build/browser/util/exponentialBackoff.test.js.map +1 -0
- package/build/browser/util/extractObjectOrInterfaceType.js +9 -1
- package/build/browser/util/extractObjectOrInterfaceType.js.map +1 -1
- package/build/browser/util/extractObjectOrInterfaceType.test.js +2 -2
- package/build/browser/util/extractObjectOrInterfaceType.test.js.map +1 -1
- package/build/browser/util/streamutils.js +1 -1
- package/build/browser/util/streamutils.js.map +1 -1
- package/build/browser/util/toDataValue.js +15 -1
- package/build/browser/util/toDataValue.js.map +1 -1
- package/build/browser/util/toDataValue.test.js +42 -2
- package/build/browser/util/toDataValue.test.js.map +1 -1
- package/build/cjs/{chunk-633AI7EA.cjs → chunk-GVGP7T5P.cjs} +407 -257
- package/build/cjs/chunk-GVGP7T5P.cjs.map +1 -0
- package/build/cjs/{chunk-26WFEZQO.cjs → chunk-YADG7KA6.cjs} +136 -84
- package/build/cjs/chunk-YADG7KA6.cjs.map +1 -0
- package/build/cjs/{createClient-BJo8T7Js.d.cts → createClient-mOlFts15.d.cts} +1 -0
- package/build/cjs/index.cjs +11 -7
- package/build/cjs/index.d.cts +2 -2
- package/build/cjs/public/internal.cjs +8 -8
- package/build/cjs/public/unstable-do-not-use.cjs +1502 -851
- package/build/cjs/public/unstable-do-not-use.cjs.map +1 -1
- package/build/cjs/public/unstable-do-not-use.d.cts +183 -13
- package/build/esm/Client.js +1 -1
- package/build/esm/Client.js.map +1 -1
- package/build/esm/MinimalClientContext.js.map +1 -1
- package/build/esm/actions/applyAction.js +4 -0
- package/build/esm/actions/applyAction.js.map +1 -1
- package/build/esm/createClient.js +6 -2
- package/build/esm/createClient.js.map +1 -1
- package/build/esm/createMinimalClient.js +2 -1
- package/build/esm/createMinimalClient.js.map +1 -1
- package/build/esm/derivedProperties/createWithPropertiesObjectSet.js +17 -0
- package/build/esm/derivedProperties/createWithPropertiesObjectSet.js.map +1 -1
- package/build/esm/fetchMetadata.test.js +11 -0
- package/build/esm/fetchMetadata.test.js.map +1 -1
- package/build/esm/index.js +3 -1
- package/build/esm/index.js.map +1 -1
- package/build/esm/intellisense.test.helpers/orderBySuggestionIsRight.js +8 -1
- package/build/esm/intellisense.test.helpers/orderBySuggestionIsRight.js.map +1 -1
- package/build/esm/intellisense.test.js +14 -4
- package/build/esm/intellisense.test.js.map +1 -1
- package/build/esm/object/Cache.js +1 -1
- package/build/esm/object/Cache.js.map +1 -1
- package/build/esm/object/Cache.test.js +1 -1
- package/build/esm/object/Cache.test.js.map +1 -1
- package/build/esm/object/SimpleCache.js +1 -1
- package/build/esm/object/SimpleCache.js.map +1 -1
- package/build/esm/object/aggregate.js +2 -0
- package/build/esm/object/aggregate.js.map +1 -1
- package/build/esm/object/aggregate.test.js +30 -0
- package/build/esm/object/aggregate.test.js.map +1 -1
- package/build/esm/object/convertWireToOsdkObjects/OsdkCustomInspectPrototype.js +1 -0
- package/build/esm/object/convertWireToOsdkObjects/OsdkCustomInspectPrototype.js.map +1 -1
- package/build/esm/object/convertWireToOsdkObjects/createOsdkInterface.js +6 -0
- package/build/esm/object/convertWireToOsdkObjects/createOsdkInterface.js.map +1 -1
- package/build/esm/object/convertWireToOsdkObjects/getDollarLink.js +20 -1
- package/build/esm/object/convertWireToOsdkObjects/getDollarLink.js.map +1 -1
- package/build/esm/object/convertWireToOsdkObjects.js +4 -0
- package/build/esm/object/convertWireToOsdkObjects.js.map +1 -1
- package/build/esm/object/convertWireToOsdkObjects.test.js +14 -0
- package/build/esm/object/convertWireToOsdkObjects.test.js.map +1 -1
- package/build/esm/object/fetchPage.js +96 -21
- package/build/esm/object/fetchPage.js.map +1 -1
- package/build/esm/object/fetchPage.test.js +35 -1
- package/build/esm/object/fetchPage.test.js.map +1 -1
- package/build/esm/object/geotimeseriesreference.test.js +0 -2
- package/build/esm/object/geotimeseriesreference.test.js.map +1 -1
- package/build/esm/object/mediaUpload.js +3 -0
- package/build/esm/object/mediaUpload.js.map +1 -1
- package/build/esm/objectSet/ObjectSet.test.js +6 -0
- package/build/esm/objectSet/ObjectSet.test.js.map +1 -1
- package/build/esm/objectSet/ObjectSetListenerWebsocket.js +31 -9
- package/build/esm/objectSet/ObjectSetListenerWebsocket.js.map +1 -1
- package/build/esm/objectSet/ObjectSetListenerWebsocket.test.js +69 -4
- package/build/esm/objectSet/ObjectSetListenerWebsocket.test.js.map +1 -1
- package/build/esm/objectSet/createObjectSet.js +3 -1
- package/build/esm/objectSet/createObjectSet.js.map +1 -1
- package/build/esm/observable/LinkPayload.js +2 -0
- package/build/esm/observable/LinkPayload.js.map +1 -0
- package/build/esm/observable/ObjectPayload.js.map +1 -1
- package/build/esm/observable/ObservableClient/ObserveLink.js +17 -0
- package/build/esm/observable/ObservableClient/ObserveLink.js.map +1 -0
- package/build/esm/observable/ObservableClient/common.js +2 -0
- package/build/esm/observable/ObservableClient/common.js.map +1 -0
- package/build/esm/observable/ObservableClient.js +20 -0
- package/build/esm/observable/ObservableClient.js.map +1 -1
- package/build/esm/observable/Unsubscribable.js +2 -0
- package/build/esm/observable/Unsubscribable.js.map +1 -0
- package/build/esm/observable/internal/AbstractHelper.js +54 -0
- package/build/esm/observable/internal/AbstractHelper.js.map +1 -0
- package/build/esm/observable/internal/BatchContext.js +2 -0
- package/build/esm/observable/internal/BatchContext.js.map +1 -0
- package/build/esm/observable/internal/BulkObjectLoader.js +3 -3
- package/build/esm/observable/internal/BulkObjectLoader.js.map +1 -1
- package/build/esm/observable/internal/CacheKeys.js +65 -25
- package/build/esm/observable/internal/CacheKeys.js.map +1 -1
- package/build/esm/observable/internal/Changes.js +6 -0
- package/build/esm/observable/internal/Changes.js.map +1 -1
- package/build/esm/observable/internal/KnownCacheKey.js +2 -0
- package/build/esm/observable/internal/KnownCacheKey.js.map +1 -0
- package/build/esm/observable/internal/Layer.js +0 -8
- package/build/esm/observable/internal/Layer.js.map +1 -1
- package/build/esm/observable/internal/Layers.js +151 -0
- package/build/esm/observable/internal/Layers.js.map +1 -0
- package/build/esm/observable/internal/ObservableClientImpl.js +54 -3
- package/build/esm/observable/internal/ObservableClientImpl.js.map +1 -1
- package/build/esm/observable/internal/OrderByCanonicalizer.js +1 -37
- package/build/esm/observable/internal/OrderByCanonicalizer.js.map +1 -1
- package/build/esm/observable/internal/Queries.js +40 -0
- package/build/esm/observable/internal/Queries.js.map +1 -0
- package/build/esm/observable/internal/Query.js +45 -4
- package/build/esm/observable/internal/Query.js.map +1 -1
- package/build/esm/observable/internal/QuerySubscription.js +48 -0
- package/build/esm/observable/internal/QuerySubscription.js.map +1 -0
- package/build/esm/observable/internal/Store.invalidation.test.js +646 -0
- package/build/esm/observable/internal/Store.invalidation.test.js.map +1 -0
- package/build/esm/observable/internal/Store.js +87 -308
- package/build/esm/observable/internal/Store.js.map +1 -1
- package/build/esm/observable/internal/Store.test.js +330 -73
- package/build/esm/observable/internal/Store.test.js.map +1 -1
- package/build/esm/observable/internal/SubjectPayload.js +2 -0
- package/build/esm/observable/internal/SubjectPayload.js.map +1 -0
- package/build/esm/observable/internal/Subjects.js +55 -0
- package/build/esm/observable/internal/Subjects.js.map +1 -0
- package/build/esm/observable/internal/UnsubscribableWrapper.js +30 -0
- package/build/esm/observable/internal/UnsubscribableWrapper.js.map +1 -0
- package/build/esm/observable/internal/WeakRefTrie.js +61 -0
- package/build/esm/observable/internal/WeakRefTrie.js.map +1 -0
- package/build/esm/observable/internal/{ActionApplication.js → actions/ActionApplication.js} +2 -2
- package/build/esm/observable/internal/actions/ActionApplication.js.map +1 -0
- package/build/{browser/observable/internal → esm/observable/internal/actions}/OptimisticJob.js +15 -6
- package/build/esm/observable/internal/actions/OptimisticJob.js.map +1 -0
- package/build/esm/observable/internal/base-list/BaseCollectionQuery.js +2 -0
- package/build/esm/observable/internal/base-list/BaseCollectionQuery.js.map +1 -0
- package/build/esm/observable/internal/base-list/BaseListQuery.js +411 -0
- package/build/esm/observable/internal/base-list/BaseListQuery.js.map +1 -0
- package/build/esm/observable/internal/base-list/createCollectionConnectable.js +50 -0
- package/build/esm/observable/internal/base-list/createCollectionConnectable.js.map +1 -0
- package/build/esm/observable/internal/base-list/createCollectionConnectable.test.js +597 -0
- package/build/esm/observable/internal/base-list/createCollectionConnectable.test.js.map +1 -0
- package/build/esm/observable/internal/base-list/removeDuplicates.js +36 -0
- package/build/esm/observable/internal/base-list/removeDuplicates.js.map +1 -0
- package/build/esm/observable/internal/createInitEntry.js +25 -0
- package/build/esm/observable/internal/createInitEntry.js.map +1 -0
- package/build/esm/observable/internal/getObjectTypesThatInvalidate.js +216 -0
- package/build/esm/observable/internal/getObjectTypesThatInvalidate.js.map +1 -0
- package/build/esm/observable/internal/getObjectTypesThatInvalidate.test.js +382 -0
- package/build/esm/observable/internal/getObjectTypesThatInvalidate.test.js.map +1 -0
- package/build/esm/observable/internal/isObjectInstance.js +23 -0
- package/build/esm/observable/internal/isObjectInstance.js.map +1 -0
- package/build/esm/observable/internal/links/LinksHelper.js +37 -0
- package/build/esm/observable/internal/links/LinksHelper.js.map +1 -0
- package/build/esm/observable/internal/links/SpecificLinkCacheKey.js +2 -0
- package/build/esm/observable/internal/links/SpecificLinkCacheKey.js.map +1 -0
- package/build/esm/observable/internal/links/SpecificLinkQuery.js +185 -0
- package/build/esm/observable/internal/links/SpecificLinkQuery.js.map +1 -0
- package/build/esm/observable/internal/list/InterfaceListQuery.js +83 -0
- package/build/esm/observable/internal/list/InterfaceListQuery.js.map +1 -0
- package/build/esm/observable/internal/list/ListCacheKey.js +2 -0
- package/build/esm/observable/internal/list/ListCacheKey.js.map +1 -0
- package/build/esm/observable/internal/list/ListQuery.js +372 -0
- package/build/esm/observable/internal/list/ListQuery.js.map +1 -0
- package/build/esm/observable/internal/list/ListQueryOptions.js +2 -0
- package/build/esm/observable/internal/list/ListQueryOptions.js.map +1 -0
- package/build/esm/observable/internal/list/ListsHelper.js +51 -0
- package/build/esm/observable/internal/list/ListsHelper.js.map +1 -0
- package/build/esm/observable/internal/list/ObjectListQuery.js +48 -0
- package/build/esm/observable/internal/list/ObjectListQuery.js.map +1 -0
- package/build/esm/observable/internal/object/ObjectCacheKey.js +2 -0
- package/build/esm/observable/internal/object/ObjectCacheKey.js.map +1 -0
- package/build/esm/observable/internal/{ObjectQuery.js → object/ObjectQuery.js} +27 -18
- package/build/esm/observable/internal/object/ObjectQuery.js.map +1 -0
- package/build/esm/observable/internal/object/ObjectsHelper.js +48 -0
- package/build/esm/observable/internal/object/ObjectsHelper.js.map +1 -0
- package/build/esm/observable/internal/sorting/SortingStrategy.js +78 -0
- package/build/esm/observable/internal/sorting/SortingStrategy.js.map +1 -0
- package/build/esm/observable/internal/testUtils/invalidateList.js +23 -0
- package/build/esm/observable/internal/testUtils/invalidateList.js.map +1 -0
- package/build/esm/observable/internal/testUtils/observeLink/expectStandardObserveLink.js +69 -0
- package/build/esm/observable/internal/testUtils/observeLink/expectStandardObserveLink.js.map +1 -0
- package/build/esm/observable/internal/testUtils/observeObject/expectStandardObserveObject.js +56 -0
- package/build/esm/observable/internal/testUtils/observeObject/expectStandardObserveObject.js.map +1 -0
- package/build/esm/observable/internal/testUtils.js +72 -10
- package/build/esm/observable/internal/testUtils.js.map +1 -1
- package/build/esm/ontology/loadActionMetadata.js +3 -1
- package/build/esm/ontology/loadActionMetadata.js.map +1 -1
- package/build/esm/ontology/loadFullObjectMetadata.js +2 -1
- package/build/esm/ontology/loadFullObjectMetadata.js.map +1 -1
- package/build/esm/ontology/loadInterfaceMetadata.js +2 -1
- package/build/esm/ontology/loadInterfaceMetadata.js.map +1 -1
- package/build/esm/public/unstable-do-not-use.js.map +1 -1
- package/build/esm/util/UserAgent.js +2 -2
- package/build/esm/util/UserAgent.js.map +1 -1
- package/build/esm/util/exponentialBackoff.js +51 -0
- package/build/esm/util/exponentialBackoff.js.map +1 -0
- package/build/esm/util/exponentialBackoff.test.js +81 -0
- package/build/esm/util/exponentialBackoff.test.js.map +1 -0
- package/build/esm/util/extractObjectOrInterfaceType.js +9 -1
- package/build/esm/util/extractObjectOrInterfaceType.js.map +1 -1
- package/build/esm/util/extractObjectOrInterfaceType.test.js +2 -2
- package/build/esm/util/extractObjectOrInterfaceType.test.js.map +1 -1
- package/build/esm/util/streamutils.js +1 -1
- package/build/esm/util/streamutils.js.map +1 -1
- package/build/esm/util/toDataValue.js +15 -1
- package/build/esm/util/toDataValue.js.map +1 -1
- package/build/esm/util/toDataValue.test.js +42 -2
- package/build/esm/util/toDataValue.test.js.map +1 -1
- package/build/types/Client.d.ts +1 -1
- package/build/types/MinimalClientContext.d.ts +1 -0
- package/build/types/MinimalClientContext.d.ts.map +1 -1
- package/build/types/actions/applyAction.d.ts.map +1 -1
- package/build/types/createClient.d.ts +1 -0
- package/build/types/createClient.d.ts.map +1 -1
- package/build/types/index.d.ts +1 -1
- package/build/types/index.d.ts.map +1 -1
- package/build/types/object/fetchPage.d.ts.map +1 -1
- package/build/types/object/mediaUpload.d.ts +2 -1
- package/build/types/object/mediaUpload.d.ts.map +1 -1
- package/build/types/observable/LinkPayload.d.ts +9 -0
- package/build/types/observable/LinkPayload.d.ts.map +1 -0
- package/build/types/observable/ObjectPayload.d.ts +4 -0
- package/build/types/observable/ObjectPayload.d.ts.map +1 -1
- package/build/types/observable/ObservableClient/ObserveLink.d.ts +32 -0
- package/build/types/observable/ObservableClient/ObserveLink.d.ts.map +1 -0
- package/build/types/observable/ObservableClient/common.d.ts +67 -0
- package/build/types/observable/ObservableClient/common.d.ts.map +1 -0
- package/build/types/observable/ObservableClient.d.ts +103 -15
- package/build/types/observable/ObservableClient.d.ts.map +1 -1
- package/build/types/observable/Unsubscribable.d.ts +3 -0
- package/build/types/observable/Unsubscribable.d.ts.map +1 -0
- package/build/types/observable/internal/AbstractHelper.d.ts +17 -0
- package/build/types/observable/internal/AbstractHelper.d.ts.map +1 -0
- package/build/types/observable/internal/BatchContext.d.ts +11 -0
- package/build/types/observable/internal/BatchContext.d.ts.map +1 -0
- package/build/types/observable/internal/BulkObjectLoader.d.ts.map +1 -1
- package/build/types/observable/internal/CacheKeys.d.ts +12 -6
- package/build/types/observable/internal/CacheKeys.d.ts.map +1 -1
- package/build/types/observable/internal/Changes.d.ts +8 -5
- package/build/types/observable/internal/Changes.d.ts.map +1 -1
- package/build/types/observable/internal/KnownCacheKey.d.ts +4 -0
- package/build/types/observable/internal/KnownCacheKey.d.ts.map +1 -0
- package/build/types/observable/internal/Layer.d.ts +6 -7
- package/build/types/observable/internal/Layer.d.ts.map +1 -1
- package/build/types/observable/internal/Layers.d.ts +26 -0
- package/build/types/observable/internal/Layers.d.ts.map +1 -0
- package/build/types/observable/internal/OrderByCanonicalizer.d.ts +0 -7
- package/build/types/observable/internal/OrderByCanonicalizer.d.ts.map +1 -1
- package/build/types/observable/internal/Queries.d.ts +9 -0
- package/build/types/observable/internal/Queries.d.ts.map +1 -0
- package/build/types/observable/internal/Query.d.ts +23 -6
- package/build/types/observable/internal/Query.d.ts.map +1 -1
- package/build/types/observable/internal/QuerySubscription.d.ts +1 -0
- package/build/types/observable/internal/QuerySubscription.d.ts.map +1 -0
- package/build/types/observable/internal/Store.d.ts +41 -51
- package/build/types/observable/internal/Store.d.ts.map +1 -1
- package/build/types/observable/internal/Store.invalidation.test.d.ts +1 -0
- package/build/types/observable/internal/Store.invalidation.test.d.ts.map +1 -0
- package/build/types/observable/internal/Store.test.d.ts +4 -1
- package/build/types/observable/internal/Store.test.d.ts.map +1 -1
- package/build/types/observable/internal/SubjectPayload.d.ts +5 -0
- package/build/types/observable/internal/SubjectPayload.d.ts.map +1 -0
- package/build/types/observable/internal/Subjects.d.ts +16 -0
- package/build/types/observable/internal/Subjects.d.ts.map +1 -0
- package/build/types/observable/internal/UnsubscribableWrapper.d.ts +1 -0
- package/build/types/observable/internal/UnsubscribableWrapper.d.ts.map +1 -0
- package/build/types/observable/internal/WeakRefTrie.d.ts +13 -0
- package/build/types/observable/internal/WeakRefTrie.d.ts.map +1 -0
- package/build/types/observable/internal/{ActionApplication.d.ts → actions/ActionApplication.d.ts} +2 -2
- package/build/types/observable/internal/{ActionApplication.d.ts.map → actions/ActionApplication.d.ts.map} +1 -1
- package/build/types/observable/internal/{OptimisticJob.d.ts → actions/OptimisticJob.d.ts} +4 -4
- package/build/types/observable/internal/actions/OptimisticJob.d.ts.map +1 -0
- package/build/types/observable/internal/base-list/BaseCollectionQuery.d.ts +64 -0
- package/build/types/observable/internal/base-list/BaseCollectionQuery.d.ts.map +1 -0
- package/build/types/observable/internal/base-list/BaseListQuery.d.ts +145 -0
- package/build/types/observable/internal/base-list/BaseListQuery.d.ts.map +1 -0
- package/build/types/observable/internal/base-list/createCollectionConnectable.d.ts +39 -0
- package/build/types/observable/internal/base-list/createCollectionConnectable.d.ts.map +1 -0
- package/build/types/observable/internal/base-list/createCollectionConnectable.test.d.ts +1 -0
- package/build/types/observable/internal/base-list/createCollectionConnectable.test.d.ts.map +1 -0
- package/build/types/observable/internal/base-list/removeDuplicates.d.ts +11 -0
- package/build/types/observable/internal/base-list/removeDuplicates.d.ts.map +1 -0
- package/build/types/observable/internal/createInitEntry.d.ts +3 -0
- package/build/types/observable/internal/createInitEntry.d.ts.map +1 -0
- package/build/types/observable/internal/getObjectTypesThatInvalidate.d.ts +9 -0
- package/build/types/observable/internal/getObjectTypesThatInvalidate.d.ts.map +1 -0
- package/build/types/observable/internal/getObjectTypesThatInvalidate.test.d.ts +1 -0
- package/build/types/observable/internal/getObjectTypesThatInvalidate.test.d.ts.map +1 -0
- package/build/types/observable/internal/isObjectInstance.d.ts +5 -0
- package/build/types/observable/internal/isObjectInstance.d.ts.map +1 -0
- package/build/types/observable/internal/links/LinksHelper.d.ts +31 -0
- package/build/types/observable/internal/links/LinksHelper.d.ts.map +1 -0
- package/build/types/observable/internal/links/SpecificLinkCacheKey.d.ts +17 -0
- package/build/types/observable/internal/links/SpecificLinkCacheKey.d.ts.map +1 -0
- package/build/types/observable/internal/links/SpecificLinkQuery.d.ts +47 -0
- package/build/types/observable/internal/links/SpecificLinkQuery.d.ts.map +1 -0
- package/build/types/observable/internal/list/InterfaceListQuery.d.ts +18 -0
- package/build/types/observable/internal/list/InterfaceListQuery.d.ts.map +1 -0
- package/build/types/observable/internal/list/ListCacheKey.d.ts +7 -0
- package/build/types/observable/internal/list/ListCacheKey.d.ts.map +1 -0
- package/build/types/observable/internal/list/ListQuery.d.ts +106 -0
- package/build/types/observable/internal/list/ListQuery.d.ts.map +1 -0
- package/build/types/observable/internal/list/ListQueryOptions.d.ts +4 -0
- package/build/types/observable/internal/list/ListQueryOptions.d.ts.map +1 -0
- package/build/types/observable/internal/list/ListsHelper.d.ts +19 -0
- package/build/types/observable/internal/list/ListsHelper.d.ts.map +1 -0
- package/build/types/observable/internal/list/ObjectListQuery.d.ts +18 -0
- package/build/types/observable/internal/list/ObjectListQuery.d.ts.map +1 -0
- package/build/types/observable/internal/object/ObjectCacheKey.d.ts +5 -0
- package/build/types/observable/internal/object/ObjectCacheKey.d.ts.map +1 -0
- package/build/types/observable/internal/{ObjectQuery.d.ts → object/ObjectQuery.d.ts} +11 -9
- package/build/types/observable/internal/object/ObjectQuery.d.ts.map +1 -0
- package/build/types/observable/internal/object/ObjectsHelper.d.ts +11 -0
- package/build/types/observable/internal/object/ObjectsHelper.d.ts.map +1 -0
- package/build/types/observable/internal/sorting/SortingStrategy.d.ts +41 -0
- package/build/types/observable/internal/sorting/SortingStrategy.d.ts.map +1 -0
- package/build/types/observable/internal/testUtils/invalidateList.d.ts +9 -0
- package/build/types/observable/internal/testUtils/invalidateList.d.ts.map +1 -0
- package/build/types/observable/internal/testUtils/observeLink/expectStandardObserveLink.d.ts +46 -0
- package/build/types/observable/internal/testUtils/observeLink/expectStandardObserveLink.d.ts.map +1 -0
- package/build/types/observable/internal/testUtils/observeObject/expectStandardObserveObject.d.ts +26 -0
- package/build/types/observable/internal/testUtils/observeObject/expectStandardObserveObject.d.ts.map +1 -0
- package/build/types/observable/internal/testUtils.d.ts +26 -4
- package/build/types/observable/internal/testUtils.d.ts.map +1 -1
- package/build/types/public/unstable-do-not-use.d.ts +4 -2
- package/build/types/public/unstable-do-not-use.d.ts.map +1 -1
- package/build/types/util/exponentialBackoff.d.ts +14 -0
- package/build/types/util/exponentialBackoff.d.ts.map +1 -0
- package/build/types/util/exponentialBackoff.test.d.ts +1 -0
- package/build/types/util/exponentialBackoff.test.d.ts.map +1 -0
- package/package.json +27 -27
- package/build/browser/observable/internal/ActionApplication.js.map +0 -1
- package/build/browser/observable/internal/ListQuery.js +0 -618
- package/build/browser/observable/internal/ListQuery.js.map +0 -1
- package/build/browser/observable/internal/ObjectQuery.js.map +0 -1
- package/build/browser/observable/internal/OptimisticJob.js.map +0 -1
- package/build/cjs/chunk-26WFEZQO.cjs.map +0 -1
- package/build/cjs/chunk-633AI7EA.cjs.map +0 -1
- package/build/esm/observable/internal/ActionApplication.js.map +0 -1
- package/build/esm/observable/internal/ListQuery.js +0 -618
- package/build/esm/observable/internal/ListQuery.js.map +0 -1
- package/build/esm/observable/internal/ObjectQuery.js.map +0 -1
- package/build/esm/observable/internal/OptimisticJob.js.map +0 -1
- package/build/types/observable/internal/ListQuery.d.ts +0 -88
- package/build/types/observable/internal/ListQuery.d.ts.map +0 -1
- package/build/types/observable/internal/ObjectQuery.d.ts.map +0 -1
- package/build/types/observable/internal/OptimisticJob.d.ts.map +0 -1
|
@@ -0,0 +1,382 @@
|
|
|
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 { Employee, FooInterface } from "@osdk/client.test.ontology";
|
|
18
|
+
import { FauxFoundry, ontologies, startNodeApiServer } from "@osdk/shared.test";
|
|
19
|
+
import invariant from "tiny-invariant";
|
|
20
|
+
import { beforeAll, describe, expect, it } from "vitest";
|
|
21
|
+
import { additionalContext } from "../../Client.js";
|
|
22
|
+
import { createClient } from "../../createClient.js";
|
|
23
|
+
import { TestLogger } from "../../logger/TestLogger.js";
|
|
24
|
+
import { objectSetDefinitions } from "../../objectSet/createObjectSet.js";
|
|
25
|
+
import { getObjectTypesThatInvalidate } from "./getObjectTypesThatInvalidate.js";
|
|
26
|
+
function setupOntology(fauxFoundry) {
|
|
27
|
+
const fauxOntology = fauxFoundry.getDefaultOntology();
|
|
28
|
+
ontologies.addEmployeeOntology(fauxOntology);
|
|
29
|
+
}
|
|
30
|
+
describe(getObjectTypesThatInvalidate, () => {
|
|
31
|
+
let client;
|
|
32
|
+
let apiServer;
|
|
33
|
+
let fauxFoundry;
|
|
34
|
+
beforeAll(() => {
|
|
35
|
+
const logger = new TestLogger();
|
|
36
|
+
const testSetup = startNodeApiServer(new FauxFoundry("https://stack.palantir.com/", undefined, {
|
|
37
|
+
logger
|
|
38
|
+
}), createClient, {
|
|
39
|
+
logger
|
|
40
|
+
});
|
|
41
|
+
({
|
|
42
|
+
client,
|
|
43
|
+
apiServer,
|
|
44
|
+
fauxFoundry
|
|
45
|
+
} = testSetup);
|
|
46
|
+
setupOntology(fauxFoundry);
|
|
47
|
+
return () => {
|
|
48
|
+
testSetup.apiServer.close();
|
|
49
|
+
};
|
|
50
|
+
});
|
|
51
|
+
async function helper(osdkObjectSet) {
|
|
52
|
+
const wireObjectSet = objectSetDefinitions.get(osdkObjectSet);
|
|
53
|
+
!wireObjectSet ? process.env.NODE_ENV !== "production" ? invariant(false) : invariant(false) : void 0;
|
|
54
|
+
const {
|
|
55
|
+
resultType,
|
|
56
|
+
invalidationSet,
|
|
57
|
+
counts
|
|
58
|
+
} = await getObjectTypesThatInvalidate(client[additionalContext], wireObjectSet);
|
|
59
|
+
return {
|
|
60
|
+
resultType: resultType.apiName,
|
|
61
|
+
invalidationSet,
|
|
62
|
+
counts
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
it("supports basic object set", async () => {
|
|
66
|
+
const osdkObjectSet = client(Employee);
|
|
67
|
+
const {
|
|
68
|
+
resultType,
|
|
69
|
+
invalidationSet
|
|
70
|
+
} = await helper(osdkObjectSet);
|
|
71
|
+
expect(resultType).toEqual("Employee");
|
|
72
|
+
expect([...invalidationSet]).toEqual([]);
|
|
73
|
+
});
|
|
74
|
+
it("supports basic pivotTo another type", async () => {
|
|
75
|
+
const osdkObjectSet = client(Employee).pivotTo("officeLink");
|
|
76
|
+
const {
|
|
77
|
+
resultType,
|
|
78
|
+
invalidationSet
|
|
79
|
+
} = await helper(osdkObjectSet);
|
|
80
|
+
expect(resultType).toEqual("Office");
|
|
81
|
+
expect([...invalidationSet]).toEqual(["Employee"]);
|
|
82
|
+
});
|
|
83
|
+
it("supports basic pivotTo same type", async () => {
|
|
84
|
+
const osdkObjectSet = client(Employee).pivotTo("lead");
|
|
85
|
+
const {
|
|
86
|
+
resultType,
|
|
87
|
+
invalidationSet
|
|
88
|
+
} = await helper(osdkObjectSet);
|
|
89
|
+
expect(resultType).toEqual("Employee");
|
|
90
|
+
expect([...invalidationSet]).toEqual(["Employee"]);
|
|
91
|
+
});
|
|
92
|
+
it("supports A -> B -> A", async () => {
|
|
93
|
+
const empOS = client(Employee).pivotTo("officeLink").pivotTo("occupants");
|
|
94
|
+
const {
|
|
95
|
+
resultType,
|
|
96
|
+
invalidationSet
|
|
97
|
+
} = await helper(empOS);
|
|
98
|
+
expect(resultType).toEqual("Employee");
|
|
99
|
+
expect([...invalidationSet]).toEqual(["Employee", "Office"]);
|
|
100
|
+
});
|
|
101
|
+
it("supports basic pivot property rdps", async () => {
|
|
102
|
+
const empOS = client(Employee).withProperties({
|
|
103
|
+
x: b => b.pivotTo("officeLink").selectProperty("name")
|
|
104
|
+
});
|
|
105
|
+
const {
|
|
106
|
+
resultType,
|
|
107
|
+
invalidationSet
|
|
108
|
+
} = await helper(empOS);
|
|
109
|
+
expect(resultType).toEqual("Employee");
|
|
110
|
+
expect([...invalidationSet]).toEqual(["Office"]);
|
|
111
|
+
});
|
|
112
|
+
it("supports basic localized", async () => {
|
|
113
|
+
const empOS = client(Employee).withProperties({
|
|
114
|
+
x: b => b.selectProperty("employeeId")
|
|
115
|
+
});
|
|
116
|
+
const {
|
|
117
|
+
resultType,
|
|
118
|
+
invalidationSet
|
|
119
|
+
} = await helper(empOS);
|
|
120
|
+
expect(resultType).toEqual("Employee");
|
|
121
|
+
expect([...invalidationSet]).toEqual([]);
|
|
122
|
+
});
|
|
123
|
+
|
|
124
|
+
// Filter Operations Tests
|
|
125
|
+
it("supports filter operations", async () => {
|
|
126
|
+
const osdkObjectSet = client(Employee).where({
|
|
127
|
+
employeeId: {
|
|
128
|
+
$gt: 100
|
|
129
|
+
}
|
|
130
|
+
});
|
|
131
|
+
const {
|
|
132
|
+
resultType,
|
|
133
|
+
invalidationSet
|
|
134
|
+
} = await helper(osdkObjectSet);
|
|
135
|
+
expect(resultType).toEqual("Employee");
|
|
136
|
+
expect([...invalidationSet]).toEqual([]);
|
|
137
|
+
});
|
|
138
|
+
it("supports filter with chained pivots", async () => {
|
|
139
|
+
const osdkObjectSet = client(Employee).where({
|
|
140
|
+
employeeId: {
|
|
141
|
+
$gt: 100
|
|
142
|
+
}
|
|
143
|
+
}).pivotTo("officeLink").where({
|
|
144
|
+
capacity: {
|
|
145
|
+
$gte: 10
|
|
146
|
+
}
|
|
147
|
+
});
|
|
148
|
+
const {
|
|
149
|
+
resultType,
|
|
150
|
+
invalidationSet
|
|
151
|
+
} = await helper(osdkObjectSet);
|
|
152
|
+
expect(resultType).toEqual("Office");
|
|
153
|
+
expect([...invalidationSet]).toEqual(["Employee"]);
|
|
154
|
+
});
|
|
155
|
+
|
|
156
|
+
// Union/Intersect/Subtract Tests
|
|
157
|
+
it("supports union of same type", async () => {
|
|
158
|
+
const set1 = client(Employee).where({
|
|
159
|
+
employeeId: {
|
|
160
|
+
$lt: 100
|
|
161
|
+
}
|
|
162
|
+
});
|
|
163
|
+
const set2 = client(Employee).where({
|
|
164
|
+
employeeId: {
|
|
165
|
+
$gt: 200
|
|
166
|
+
}
|
|
167
|
+
});
|
|
168
|
+
const unionSet = set1.union(set2);
|
|
169
|
+
const {
|
|
170
|
+
resultType,
|
|
171
|
+
invalidationSet,
|
|
172
|
+
counts
|
|
173
|
+
} = await helper(unionSet);
|
|
174
|
+
console.log(counts);
|
|
175
|
+
expect(resultType).toEqual("Employee");
|
|
176
|
+
expect([...invalidationSet]).toEqual([]);
|
|
177
|
+
});
|
|
178
|
+
it("supports crazy unions union of same type", async () => {
|
|
179
|
+
const set1 = client(Employee).where({
|
|
180
|
+
employeeId: {
|
|
181
|
+
$lt: 100
|
|
182
|
+
}
|
|
183
|
+
}).pivotTo("lead").pivotTo("peeps");
|
|
184
|
+
const set2 = client(Employee).where({
|
|
185
|
+
employeeId: {
|
|
186
|
+
$gt: 200
|
|
187
|
+
}
|
|
188
|
+
});
|
|
189
|
+
const unionSet = set1.union(set2);
|
|
190
|
+
const {
|
|
191
|
+
resultType,
|
|
192
|
+
invalidationSet,
|
|
193
|
+
counts
|
|
194
|
+
} = await helper(unionSet);
|
|
195
|
+
console.log(counts);
|
|
196
|
+
expect(resultType).toEqual("Employee");
|
|
197
|
+
expect([...invalidationSet]).toEqual(["Employee"]);
|
|
198
|
+
});
|
|
199
|
+
it("supports crazy unions union of different types", async () => {
|
|
200
|
+
const set1 = client(Employee).pivotTo("officeLink").pivotTo("occupants");
|
|
201
|
+
const set2 = client(Employee).where({
|
|
202
|
+
employeeId: {
|
|
203
|
+
$gt: 200
|
|
204
|
+
}
|
|
205
|
+
});
|
|
206
|
+
const unionSet = set1.union(set2);
|
|
207
|
+
const {
|
|
208
|
+
resultType,
|
|
209
|
+
invalidationSet,
|
|
210
|
+
counts
|
|
211
|
+
} = await helper(unionSet);
|
|
212
|
+
console.log(counts);
|
|
213
|
+
expect(resultType).toEqual("Employee");
|
|
214
|
+
expect([...invalidationSet]).toEqual(["Employee", "Office"]);
|
|
215
|
+
});
|
|
216
|
+
it("supports intersect with pivoted sets", async () => {
|
|
217
|
+
const set1 = client(Employee).pivotTo("officeLink");
|
|
218
|
+
const set2 = client(Employee).where({
|
|
219
|
+
employeeId: 5
|
|
220
|
+
}).pivotTo("officeLink");
|
|
221
|
+
const intersectSet = set1.intersect(set2);
|
|
222
|
+
const {
|
|
223
|
+
resultType,
|
|
224
|
+
invalidationSet
|
|
225
|
+
} = await helper(intersectSet);
|
|
226
|
+
expect(resultType).toEqual("Office");
|
|
227
|
+
expect([...invalidationSet]).toEqual(["Employee"]);
|
|
228
|
+
});
|
|
229
|
+
it("supports subtract operations", async () => {
|
|
230
|
+
const allEmployees = client(Employee);
|
|
231
|
+
const managers = client(Employee).where({
|
|
232
|
+
employeeId: 5
|
|
233
|
+
});
|
|
234
|
+
const nonManagers = allEmployees.subtract(managers);
|
|
235
|
+
const {
|
|
236
|
+
resultType,
|
|
237
|
+
invalidationSet
|
|
238
|
+
} = await helper(nonManagers);
|
|
239
|
+
expect(resultType).toEqual("Employee");
|
|
240
|
+
expect([...invalidationSet]).toEqual([]);
|
|
241
|
+
});
|
|
242
|
+
|
|
243
|
+
// Interface Tests
|
|
244
|
+
it("supports interface base object sets", async () => {
|
|
245
|
+
const osdkObjectSet = client(FooInterface);
|
|
246
|
+
const {
|
|
247
|
+
resultType,
|
|
248
|
+
invalidationSet,
|
|
249
|
+
counts
|
|
250
|
+
} = await helper(osdkObjectSet);
|
|
251
|
+
expect(resultType).toEqual("FooInterface");
|
|
252
|
+
// Should bump counts for all implementing types
|
|
253
|
+
expect(Object.keys(counts).length).toBeGreaterThan(0);
|
|
254
|
+
});
|
|
255
|
+
it.skip("supports interface link search around", async () => {
|
|
256
|
+
// FIXME, we don't have a good interface link example right now
|
|
257
|
+
|
|
258
|
+
// Assuming FooInterface has links - skip if not available
|
|
259
|
+
// const osdkObjectSet = client(FooInterface).pivotTo("someLink");
|
|
260
|
+
|
|
261
|
+
// const { resultType, invalidationSet } = await helper(osdkObjectSet);
|
|
262
|
+
// Verify it handles interface pivots correctly
|
|
263
|
+
});
|
|
264
|
+
|
|
265
|
+
// Complex RDP Tests
|
|
266
|
+
it("supports multiple RDP properties", async () => {
|
|
267
|
+
const osdkObjectSet = client(Employee).withProperties({
|
|
268
|
+
officeCapacity: b => b.pivotTo("officeLink").selectProperty("capacity"),
|
|
269
|
+
managerName: b => b.pivotTo("lead").selectProperty("fullName"),
|
|
270
|
+
localProp: b => b.selectProperty("employeeId")
|
|
271
|
+
});
|
|
272
|
+
const {
|
|
273
|
+
resultType,
|
|
274
|
+
invalidationSet
|
|
275
|
+
} = await helper(osdkObjectSet);
|
|
276
|
+
expect(resultType).toEqual("Employee");
|
|
277
|
+
expect([...invalidationSet]).toContain("Office");
|
|
278
|
+
expect([...invalidationSet]).toContain("Employee"); // from lead pivot
|
|
279
|
+
});
|
|
280
|
+
it("supports nested RDP operations", async () => {
|
|
281
|
+
const osdkObjectSet = client(Employee).withProperties({
|
|
282
|
+
computation: b => b.selectProperty("employeeId").add(b.pivotTo("officeLink").aggregate("$count"))
|
|
283
|
+
});
|
|
284
|
+
const {
|
|
285
|
+
resultType,
|
|
286
|
+
invalidationSet
|
|
287
|
+
} = await helper(osdkObjectSet);
|
|
288
|
+
expect(resultType).toEqual("Employee");
|
|
289
|
+
expect([...invalidationSet]).toEqual(["Office"]);
|
|
290
|
+
});
|
|
291
|
+
|
|
292
|
+
// Edge Cases and Error Handling
|
|
293
|
+
it("handles empty union sets gracefully", async () => {
|
|
294
|
+
// Create an empty union somehow
|
|
295
|
+
const emptyUnion = client(Employee).where({
|
|
296
|
+
employeeId: -1
|
|
297
|
+
}).union(client(Employee).where({
|
|
298
|
+
employeeId: -2
|
|
299
|
+
}));
|
|
300
|
+
const {
|
|
301
|
+
resultType,
|
|
302
|
+
invalidationSet
|
|
303
|
+
} = await helper(emptyUnion);
|
|
304
|
+
expect(resultType).toEqual("Employee");
|
|
305
|
+
expect([...invalidationSet]).toEqual([]);
|
|
306
|
+
});
|
|
307
|
+
it("verifies counts are calculated correctly", async () => {
|
|
308
|
+
const osdkObjectSet = client(Employee).pivotTo("officeLink").pivotTo("occupants").pivotTo("lead");
|
|
309
|
+
const {
|
|
310
|
+
counts
|
|
311
|
+
} = await helper(osdkObjectSet);
|
|
312
|
+
// Employee should be counted multiple times
|
|
313
|
+
expect(counts["Employee"]).toBeGreaterThan(1);
|
|
314
|
+
expect(counts["Office"]).toBeGreaterThan(0);
|
|
315
|
+
});
|
|
316
|
+
it("handles count adjustment for result type", async () => {
|
|
317
|
+
const osdkObjectSet = client(Employee);
|
|
318
|
+
const {
|
|
319
|
+
resultType,
|
|
320
|
+
counts,
|
|
321
|
+
invalidationSet
|
|
322
|
+
} = await helper(osdkObjectSet);
|
|
323
|
+
// Result type should not be in invalidation set even if in counts
|
|
324
|
+
expect(resultType).toEqual("Employee");
|
|
325
|
+
expect(counts["Employee"]).toBeDefined();
|
|
326
|
+
expect([...invalidationSet]).not.toContain("Employee");
|
|
327
|
+
});
|
|
328
|
+
it("handles nearest neighbor", async () => {
|
|
329
|
+
const osdkObjectSet = client(Employee).nearestNeighbors("hi", 3, "skillSetEmbedding").pivotTo("officeLink");
|
|
330
|
+
const {
|
|
331
|
+
resultType,
|
|
332
|
+
invalidationSet
|
|
333
|
+
} = await helper(osdkObjectSet);
|
|
334
|
+
expect(resultType).toEqual("Office");
|
|
335
|
+
expect([...invalidationSet]).toContain("Employee");
|
|
336
|
+
});
|
|
337
|
+
|
|
338
|
+
// Test for Unhandled Types
|
|
339
|
+
it("verifies errors for unhandled types", async () => {
|
|
340
|
+
// Create mock objects for unsupported types
|
|
341
|
+
const unsupportedTypes = [{
|
|
342
|
+
type: "reference",
|
|
343
|
+
objectType: "Employee",
|
|
344
|
+
id: "123"
|
|
345
|
+
}, {
|
|
346
|
+
type: "static",
|
|
347
|
+
objects: []
|
|
348
|
+
}, {
|
|
349
|
+
type: "asType",
|
|
350
|
+
objectSet: {
|
|
351
|
+
type: "base",
|
|
352
|
+
objectType: "Employee"
|
|
353
|
+
},
|
|
354
|
+
targetType: "Office"
|
|
355
|
+
}, {
|
|
356
|
+
type: "asBaseObjectTypes",
|
|
357
|
+
objectSet: {
|
|
358
|
+
type: "base",
|
|
359
|
+
objectType: "Employee"
|
|
360
|
+
}
|
|
361
|
+
}];
|
|
362
|
+
|
|
363
|
+
// Test each type throws an appropriate error
|
|
364
|
+
for (const wireObjectSet of unsupportedTypes) {
|
|
365
|
+
await expect(getObjectTypesThatInvalidate(client[additionalContext], wireObjectSet)).rejects.toThrow(/Unsupported|Unhandled ObjectSet type/);
|
|
366
|
+
}
|
|
367
|
+
});
|
|
368
|
+
it("supports RDP unary operations", async () => {
|
|
369
|
+
const osdkObjectSet = client(Employee).withProperties({
|
|
370
|
+
absolute: b => b.selectProperty("employeeId").abs(),
|
|
371
|
+
negated: b => b.selectProperty("employeeId").negate(),
|
|
372
|
+
extracted: b => b.selectProperty("startDate").extractPart("YEARS")
|
|
373
|
+
});
|
|
374
|
+
const {
|
|
375
|
+
resultType,
|
|
376
|
+
invalidationSet
|
|
377
|
+
} = await helper(osdkObjectSet);
|
|
378
|
+
expect(resultType).toEqual("Employee");
|
|
379
|
+
expect([...invalidationSet]).toEqual([]);
|
|
380
|
+
});
|
|
381
|
+
});
|
|
382
|
+
//# sourceMappingURL=getObjectTypesThatInvalidate.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getObjectTypesThatInvalidate.test.js","names":["Employee","FooInterface","FauxFoundry","ontologies","startNodeApiServer","invariant","beforeAll","describe","expect","it","additionalContext","createClient","TestLogger","objectSetDefinitions","getObjectTypesThatInvalidate","setupOntology","fauxFoundry","fauxOntology","getDefaultOntology","addEmployeeOntology","client","apiServer","logger","testSetup","undefined","close","helper","osdkObjectSet","wireObjectSet","get","process","env","NODE_ENV","resultType","invalidationSet","counts","apiName","toEqual","pivotTo","empOS","withProperties","x","b","selectProperty","where","employeeId","$gt","capacity","$gte","set1","$lt","set2","unionSet","union","console","log","intersectSet","intersect","allEmployees","managers","nonManagers","subtract","Object","keys","length","toBeGreaterThan","skip","officeCapacity","managerName","localProp","toContain","computation","add","aggregate","emptyUnion","toBeDefined","not","nearestNeighbors","unsupportedTypes","type","objectType","id","objects","objectSet","targetType","rejects","toThrow","absolute","abs","negated","negate","extracted","extractPart"],"sources":["getObjectTypesThatInvalidate.test.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 { Employee, FooInterface } from \"@osdk/client.test.ontology\";\n\nimport type { ObjectOrInterfaceDefinition, ObjectSet } from \"@osdk/api\";\nimport type { SetupServer } from \"@osdk/shared.test\";\nimport { FauxFoundry, ontologies, startNodeApiServer } from \"@osdk/shared.test\";\nimport invariant from \"tiny-invariant\";\nimport { beforeAll, describe, expect, it } from \"vitest\";\nimport type { Client } from \"../../Client.js\";\nimport { additionalContext } from \"../../Client.js\";\nimport { createClient } from \"../../createClient.js\";\nimport { TestLogger } from \"../../logger/TestLogger.js\";\nimport { objectSetDefinitions } from \"../../objectSet/createObjectSet.js\";\nimport { getObjectTypesThatInvalidate } from \"./getObjectTypesThatInvalidate.js\";\n\nfunction setupOntology(fauxFoundry: FauxFoundry) {\n const fauxOntology = fauxFoundry.getDefaultOntology();\n ontologies.addEmployeeOntology(fauxOntology);\n}\n\ndescribe(getObjectTypesThatInvalidate, () => {\n let client: Client;\n let apiServer: SetupServer;\n let fauxFoundry: FauxFoundry;\n\n beforeAll(() => {\n const logger = new TestLogger();\n const testSetup = startNodeApiServer(\n new FauxFoundry(\"https://stack.palantir.com/\", undefined, { logger }),\n createClient,\n { logger },\n );\n ({ client, apiServer, fauxFoundry } = testSetup);\n\n setupOntology(fauxFoundry);\n\n return () => {\n testSetup.apiServer.close();\n };\n });\n\n async function helper<T extends ObjectOrInterfaceDefinition>(\n osdkObjectSet: ObjectSet<T>,\n ) {\n const wireObjectSet = objectSetDefinitions.get(osdkObjectSet);\n invariant(wireObjectSet);\n\n const { resultType, invalidationSet, counts } =\n await getObjectTypesThatInvalidate(\n client[additionalContext],\n wireObjectSet,\n );\n\n return {\n resultType: resultType.apiName,\n invalidationSet,\n counts,\n };\n }\n\n it(\"supports basic object set\", async () => {\n const osdkObjectSet = client(Employee);\n\n const { resultType, invalidationSet } = await helper(osdkObjectSet);\n expect(resultType).toEqual(\"Employee\");\n expect([...invalidationSet]).toEqual([]);\n });\n\n it(\"supports basic pivotTo another type\", async () => {\n const osdkObjectSet = client(Employee).pivotTo(\"officeLink\");\n\n const { resultType, invalidationSet } = await helper(osdkObjectSet);\n\n expect(resultType).toEqual(\"Office\");\n expect([...invalidationSet]).toEqual([\"Employee\"]);\n });\n\n it(\"supports basic pivotTo same type\", async () => {\n const osdkObjectSet = client(Employee).pivotTo(\"lead\");\n\n const { resultType, invalidationSet } = await helper(osdkObjectSet);\n expect(resultType).toEqual(\"Employee\");\n expect([...invalidationSet]).toEqual([\"Employee\"]);\n });\n\n it(\"supports A -> B -> A\", async () => {\n const empOS = client(Employee)\n .pivotTo(\"officeLink\")\n .pivotTo(\"occupants\");\n\n const { resultType, invalidationSet } = await helper(empOS);\n expect(resultType).toEqual(\"Employee\");\n expect([...invalidationSet]).toEqual([\"Employee\", \"Office\"]);\n });\n\n it(\"supports basic pivot property rdps\", async () => {\n const empOS = client(Employee)\n .withProperties({\n x: (b) => b.pivotTo(\"officeLink\").selectProperty(\"name\"),\n });\n\n const { resultType, invalidationSet } = await helper(empOS);\n expect(resultType).toEqual(\"Employee\");\n expect([...invalidationSet]).toEqual([\"Office\"]);\n });\n\n it(\"supports basic localized\", async () => {\n const empOS = client(Employee)\n .withProperties({\n x: (b) => b.selectProperty(\"employeeId\"),\n });\n\n const { resultType, invalidationSet } = await helper(empOS);\n expect(resultType).toEqual(\"Employee\");\n expect([...invalidationSet]).toEqual([]);\n });\n\n // Filter Operations Tests\n it(\"supports filter operations\", async () => {\n const osdkObjectSet = client(Employee).where({\n employeeId: { $gt: 100 },\n });\n\n const { resultType, invalidationSet } = await helper(osdkObjectSet);\n expect(resultType).toEqual(\"Employee\");\n expect([...invalidationSet]).toEqual([]);\n });\n\n it(\"supports filter with chained pivots\", async () => {\n const osdkObjectSet = client(Employee)\n .where({ employeeId: { $gt: 100 } })\n .pivotTo(\"officeLink\")\n .where({ capacity: { $gte: 10 } });\n\n const { resultType, invalidationSet } = await helper(osdkObjectSet);\n expect(resultType).toEqual(\"Office\");\n expect([...invalidationSet]).toEqual([\"Employee\"]);\n });\n\n // Union/Intersect/Subtract Tests\n it(\"supports union of same type\", async () => {\n const set1 = client(Employee).where({ employeeId: { $lt: 100 } });\n const set2 = client(Employee).where({ employeeId: { $gt: 200 } });\n const unionSet = set1.union(set2);\n\n const { resultType, invalidationSet, counts } = await helper(unionSet);\n console.log(counts);\n expect(resultType).toEqual(\"Employee\");\n expect([...invalidationSet]).toEqual([]);\n });\n\n it(\"supports crazy unions union of same type\", async () => {\n const set1 = client(Employee).where({ employeeId: { $lt: 100 } }).pivotTo(\n \"lead\",\n ).pivotTo(\"peeps\");\n const set2 = client(Employee).where({ employeeId: { $gt: 200 } });\n const unionSet = set1.union(set2);\n\n const { resultType, invalidationSet, counts } = await helper(unionSet);\n console.log(counts);\n expect(resultType).toEqual(\"Employee\");\n expect([...invalidationSet]).toEqual([\"Employee\"]);\n });\n\n it(\"supports crazy unions union of different types\", async () => {\n const set1 = client(Employee).pivotTo(\"officeLink\").pivotTo(\"occupants\");\n const set2 = client(Employee).where({ employeeId: { $gt: 200 } });\n const unionSet = set1.union(set2);\n\n const { resultType, invalidationSet, counts } = await helper(unionSet);\n console.log(counts);\n expect(resultType).toEqual(\"Employee\");\n expect([...invalidationSet]).toEqual([\"Employee\", \"Office\"]);\n });\n\n it(\"supports intersect with pivoted sets\", async () => {\n const set1 = client(Employee).pivotTo(\"officeLink\");\n const set2 = client(Employee).where({ employeeId: 5 }).pivotTo(\n \"officeLink\",\n );\n const intersectSet = set1.intersect(set2);\n\n const { resultType, invalidationSet } = await helper(intersectSet);\n expect(resultType).toEqual(\"Office\");\n expect([...invalidationSet]).toEqual([\"Employee\"]);\n });\n\n it(\"supports subtract operations\", async () => {\n const allEmployees = client(Employee);\n const managers = client(Employee).where({ employeeId: 5 });\n const nonManagers = allEmployees.subtract(managers);\n\n const { resultType, invalidationSet } = await helper(nonManagers);\n expect(resultType).toEqual(\"Employee\");\n expect([...invalidationSet]).toEqual([]);\n });\n\n // Interface Tests\n it(\"supports interface base object sets\", async () => {\n const osdkObjectSet = client(FooInterface);\n\n const { resultType, invalidationSet, counts } = await helper(osdkObjectSet);\n expect(resultType).toEqual(\"FooInterface\");\n // Should bump counts for all implementing types\n expect(Object.keys(counts).length).toBeGreaterThan(0);\n });\n\n it.skip(\"supports interface link search around\", async () => {\n // FIXME, we don't have a good interface link example right now\n\n // Assuming FooInterface has links - skip if not available\n // const osdkObjectSet = client(FooInterface).pivotTo(\"someLink\");\n\n // const { resultType, invalidationSet } = await helper(osdkObjectSet);\n // Verify it handles interface pivots correctly\n });\n\n // Complex RDP Tests\n it(\"supports multiple RDP properties\", async () => {\n const osdkObjectSet = client(Employee)\n .withProperties({\n officeCapacity: (b) =>\n b.pivotTo(\"officeLink\").selectProperty(\"capacity\"),\n managerName: (b) => b.pivotTo(\"lead\").selectProperty(\"fullName\"),\n localProp: (b) => b.selectProperty(\"employeeId\"),\n });\n\n const { resultType, invalidationSet } = await helper(osdkObjectSet);\n expect(resultType).toEqual(\"Employee\");\n expect([...invalidationSet]).toContain(\"Office\");\n expect([...invalidationSet]).toContain(\"Employee\"); // from lead pivot\n });\n\n it(\"supports nested RDP operations\", async () => {\n const osdkObjectSet = client(Employee)\n .withProperties({\n computation: (b) =>\n b.selectProperty(\"employeeId\").add(\n b.pivotTo(\"officeLink\").aggregate(\"$count\"),\n ),\n });\n\n const { resultType, invalidationSet } = await helper(osdkObjectSet);\n expect(resultType).toEqual(\"Employee\");\n expect([...invalidationSet]).toEqual([\"Office\"]);\n });\n\n // Edge Cases and Error Handling\n it(\"handles empty union sets gracefully\", async () => {\n // Create an empty union somehow\n const emptyUnion = client(Employee).where({ employeeId: -1 })\n .union(client(Employee).where({ employeeId: -2 }));\n\n const { resultType, invalidationSet } = await helper(emptyUnion);\n expect(resultType).toEqual(\"Employee\");\n expect([...invalidationSet]).toEqual([]);\n });\n\n it(\"verifies counts are calculated correctly\", async () => {\n const osdkObjectSet = client(Employee)\n .pivotTo(\"officeLink\")\n .pivotTo(\"occupants\")\n .pivotTo(\"lead\");\n\n const { counts } = await helper(osdkObjectSet);\n // Employee should be counted multiple times\n expect(counts[\"Employee\"]).toBeGreaterThan(1);\n expect(counts[\"Office\"]).toBeGreaterThan(0);\n });\n\n it(\"handles count adjustment for result type\", async () => {\n const osdkObjectSet = client(Employee);\n\n const { resultType, counts, invalidationSet } = await helper(osdkObjectSet);\n // Result type should not be in invalidation set even if in counts\n expect(resultType).toEqual(\"Employee\");\n expect(counts[\"Employee\"]).toBeDefined();\n expect([...invalidationSet]).not.toContain(\"Employee\");\n });\n\n it(\"handles nearest neighbor\", async () => {\n const osdkObjectSet = client(Employee)\n .nearestNeighbors(\"hi\", 3, \"skillSetEmbedding\")\n .pivotTo(\"officeLink\");\n\n const { resultType, invalidationSet } = await helper(osdkObjectSet);\n expect(resultType).toEqual(\"Office\");\n expect([...invalidationSet]).toContain(\"Employee\");\n });\n\n // Test for Unhandled Types\n it(\"verifies errors for unhandled types\", async () => {\n // Create mock objects for unsupported types\n const unsupportedTypes = [\n { type: \"reference\", objectType: \"Employee\", id: \"123\" },\n { type: \"static\", objects: [] },\n {\n type: \"asType\",\n objectSet: { type: \"base\", objectType: \"Employee\" },\n targetType: \"Office\",\n },\n {\n type: \"asBaseObjectTypes\",\n objectSet: { type: \"base\", objectType: \"Employee\" },\n },\n ];\n\n // Test each type throws an appropriate error\n for (const wireObjectSet of unsupportedTypes) {\n await expect(\n getObjectTypesThatInvalidate(\n client[additionalContext],\n wireObjectSet as any,\n ),\n ).rejects.toThrow(/Unsupported|Unhandled ObjectSet type/);\n }\n });\n\n it(\"supports RDP unary operations\", async () => {\n const osdkObjectSet = client(Employee)\n .withProperties({\n absolute: (b) => b.selectProperty(\"employeeId\").abs(),\n negated: (b) => b.selectProperty(\"employeeId\").negate(),\n extracted: (b) => b.selectProperty(\"startDate\").extractPart(\"YEARS\"),\n });\n\n const { resultType, invalidationSet } = await helper(osdkObjectSet);\n expect(resultType).toEqual(\"Employee\");\n expect([...invalidationSet]).toEqual([]);\n });\n});\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,23 @@
|
|
|
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
|
+
/**
|
|
18
|
+
* Type guard to check if an item is an object instance
|
|
19
|
+
*/
|
|
20
|
+
export function isObjectInstance(item) {
|
|
21
|
+
return item != null && typeof item === "object" && "$primaryKey" in item;
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=isObjectInstance.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"isObjectInstance.js","names":["isObjectInstance","item"],"sources":["isObjectInstance.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 { Osdk } from \"@osdk/api\";\n\n/**\n * Type guard to check if an item is an object instance\n */\nexport function isObjectInstance(item: any): item is Osdk.Instance<any> {\n return item != null && typeof item === \"object\" && \"$primaryKey\" in item;\n}\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAIA;AACA;AACA;AACA,OAAO,SAASA,gBAAgBA,CAACC,IAAS,EAA8B;EACtE,OAAOA,IAAI,IAAI,IAAI,IAAI,OAAOA,IAAI,KAAK,QAAQ,IAAI,aAAa,IAAIA,IAAI;AAC1E","ignoreList":[]}
|
|
@@ -0,0 +1,37 @@
|
|
|
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 { AbstractHelper } from "../AbstractHelper.js";
|
|
18
|
+
import { SpecificLinkQuery } from "./SpecificLinkQuery.js";
|
|
19
|
+
export class LinksHelper extends AbstractHelper {
|
|
20
|
+
constructor(store, cacheKeys, whereCanonicalizer, orderByCanonicalizer) {
|
|
21
|
+
super(store, cacheKeys);
|
|
22
|
+
this.whereCanonicalizer = whereCanonicalizer;
|
|
23
|
+
this.orderByCanonicalizer = orderByCanonicalizer;
|
|
24
|
+
}
|
|
25
|
+
getQuery(options) {
|
|
26
|
+
const {
|
|
27
|
+
apiName
|
|
28
|
+
} = options.srcType;
|
|
29
|
+
const canonWhere = this.whereCanonicalizer.canonicalize(options.where ?? {});
|
|
30
|
+
const canonOrderBy = this.orderByCanonicalizer.canonicalize(options.orderBy ?? {});
|
|
31
|
+
const linkCacheKey = this.cacheKeys.get("specificLink", apiName, options.pk, options.linkName, canonWhere, canonOrderBy);
|
|
32
|
+
return this.store.queries.get(linkCacheKey, () => {
|
|
33
|
+
return new SpecificLinkQuery(this.store, this.store.subjects.get(linkCacheKey), linkCacheKey, options);
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=LinksHelper.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LinksHelper.js","names":["AbstractHelper","SpecificLinkQuery","LinksHelper","constructor","store","cacheKeys","whereCanonicalizer","orderByCanonicalizer","getQuery","options","apiName","srcType","canonWhere","canonicalize","where","canonOrderBy","orderBy","linkCacheKey","get","pk","linkName","queries","subjects"],"sources":["LinksHelper.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 { CompileTimeMetadata, ObjectTypeDefinition } from \"@osdk/api\";\nimport type { SpecificLinkPayload } from \"../../LinkPayload.js\";\n\nimport type { Observer } from \"../../ObservableClient/common.js\";\nimport type { ObserveLinks } from \"../../ObservableClient/ObserveLink.js\";\nimport { AbstractHelper } from \"../AbstractHelper.js\";\nimport type { CacheKeys } from \"../CacheKeys.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 { SpecificLinkCacheKey } from \"./SpecificLinkCacheKey.js\";\nimport { SpecificLinkQuery } from \"./SpecificLinkQuery.js\";\n\nexport interface LinksHelper {\n observe<\n T extends ObjectTypeDefinition,\n L extends keyof CompileTimeMetadata<T>[\"links\"] & string,\n >(\n options: ObserveLinks.Options<T, L>,\n subFn: Observer<SpecificLinkPayload>,\n ): QuerySubscription<SpecificLinkQuery>;\n\n getQuery<\n T extends ObjectTypeDefinition,\n L extends keyof CompileTimeMetadata<T>[\"links\"] & string,\n >(options: ObserveLinks.Options<T, L>): SpecificLinkQuery;\n}\n\nexport class LinksHelper extends AbstractHelper<\n SpecificLinkQuery,\n ObserveLinks.Options<ObjectTypeDefinition, string>\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 getQuery<\n T extends ObjectTypeDefinition,\n L extends keyof CompileTimeMetadata<T>[\"links\"] & string,\n >(options: ObserveLinks.Options<T, L>): SpecificLinkQuery {\n const { apiName } = options.srcType;\n\n const canonWhere = this.whereCanonicalizer.canonicalize(\n options.where ?? {},\n );\n const canonOrderBy = this.orderByCanonicalizer.canonicalize(\n options.orderBy ?? {},\n );\n const linkCacheKey = this.cacheKeys.get<SpecificLinkCacheKey>(\n \"specificLink\",\n apiName,\n options.pk,\n options.linkName,\n canonWhere,\n canonOrderBy,\n );\n\n return this.store.queries.get(linkCacheKey, () => {\n return new SpecificLinkQuery(\n this.store,\n this.store.subjects.get(linkCacheKey),\n linkCacheKey,\n options,\n );\n });\n }\n}\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAOA,SAASA,cAAc,QAAQ,sBAAsB;AAQrD,SAASC,iBAAiB,QAAQ,wBAAwB;AAiB1D,OAAO,MAAMC,WAAW,SAASF,cAAc,CAG7C;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,QAAQA,CAGNC,OAAmC,EAAqB;IACxD,MAAM;MAAEC;IAAQ,CAAC,GAAGD,OAAO,CAACE,OAAO;IAEnC,MAAMC,UAAU,GAAG,IAAI,CAACN,kBAAkB,CAACO,YAAY,CACrDJ,OAAO,CAACK,KAAK,IAAI,CAAC,CACpB,CAAC;IACD,MAAMC,YAAY,GAAG,IAAI,CAACR,oBAAoB,CAACM,YAAY,CACzDJ,OAAO,CAACO,OAAO,IAAI,CAAC,CACtB,CAAC;IACD,MAAMC,YAAY,GAAG,IAAI,CAACZ,SAAS,CAACa,GAAG,CACrC,cAAc,EACdR,OAAO,EACPD,OAAO,CAACU,EAAE,EACVV,OAAO,CAACW,QAAQ,EAChBR,UAAU,EACVG,YACF,CAAC;IAED,OAAO,IAAI,CAACX,KAAK,CAACiB,OAAO,CAACH,GAAG,CAACD,YAAY,EAAE,MAAM;MAChD,OAAO,IAAIhB,iBAAiB,CAC1B,IAAI,CAACG,KAAK,EACV,IAAI,CAACA,KAAK,CAACkB,QAAQ,CAACJ,GAAG,CAACD,YAAY,CAAC,EACrCA,YAAY,EACZR,OACF,CAAC;IACH,CAAC,CAAC;EACJ;AACF","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SpecificLinkCacheKey.js","names":[],"sources":["SpecificLinkCacheKey.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 { ObjectTypeDefinition, PrimaryKeyType } from \"@osdk/api\";\nimport type { CollectionStorageData } from \"../base-list/BaseCollectionQuery.js\";\nimport type { CacheKey } from \"../CacheKey.js\";\nimport type { Canonical } from \"../Canonical.js\";\nimport type { SimpleWhereClause } from \"../SimpleWhereClause.js\";\nimport type { SpecificLinkQuery } from \"./SpecificLinkQuery.js\";\n\n/**\n * Storage data format for link query cache entries, similar to ListStorageData\n */\nexport interface LinkStorageData extends CollectionStorageData {\n}\n/**\n * Cache key for a specific link query that uniquely identifies:\n * - The source object type\n * - The source object primary key\n * - The link name\n */\n\nexport interface SpecificLinkCacheKey extends\n CacheKey<\n \"specificLink\",\n LinkStorageData,\n SpecificLinkQuery,\n [\n sourceObjectType: string,\n sourcePk: PrimaryKeyType<ObjectTypeDefinition>,\n linkName: string,\n whereClause: Canonical<SimpleWhereClause>,\n orderByClause: Canonical<Record<string, \"asc\" | \"desc\" | undefined>>,\n ]\n >\n{\n}\n"],"mappings":"","ignoreList":[]}
|