@osdk/client 2.5.2 → 2.6.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 +118 -73
- 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 +2 -1
- package/build/browser/createClient.js.map +1 -1
- package/build/browser/createClient.test.js +19 -1
- package/build/browser/createClient.test.js.map +1 -1
- package/build/browser/createMinimalClient.js +4 -2
- package/build/browser/createMinimalClient.js.map +1 -1
- package/build/browser/derivedProperties/createWithPropertiesObjectSet.js +19 -1
- 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 +2 -2
- package/build/browser/index.js.map +1 -1
- package/build/browser/internal/conversions/extractNamespace.js +22 -0
- package/build/browser/internal/conversions/extractNamespace.js.map +1 -0
- package/build/browser/internal/conversions/fullyQualifyPropName.js +26 -0
- package/build/browser/internal/conversions/fullyQualifyPropName.js.map +1 -0
- package/build/browser/internal/conversions/makeGeoFilterBbox.js +41 -0
- package/build/browser/internal/conversions/makeGeoFilterBbox.js.map +1 -0
- package/build/browser/internal/conversions/makeGeoFilterIntersects.js +29 -0
- package/build/browser/internal/conversions/makeGeoFilterIntersects.js.map +1 -0
- package/build/browser/internal/conversions/makeGeoFilterPolygon.js +30 -0
- package/build/browser/internal/conversions/makeGeoFilterPolygon.js.map +1 -0
- package/build/browser/internal/conversions/makeGeoFilterWithin.js +48 -0
- package/build/browser/internal/conversions/makeGeoFilterWithin.js.map +1 -0
- package/build/browser/internal/conversions/modernToLegacyWhereClause.js +59 -105
- package/build/browser/internal/conversions/modernToLegacyWhereClause.js.map +1 -1
- package/build/browser/internal/conversions/modernToLegacyWhereClause.test.js +309 -0
- package/build/browser/internal/conversions/modernToLegacyWhereClause.test.js.map +1 -1
- package/build/browser/object/aggregate.js +3 -0
- package/build/browser/object/aggregate.js.map +1 -1
- package/build/browser/object/convertWireToOsdkObjects/BaseHolder.js.map +1 -1
- package/build/browser/object/convertWireToOsdkObjects/InterfaceHolder.js.map +1 -1
- package/build/browser/object/convertWireToOsdkObjects/createOsdkInterface.js +5 -1
- package/build/browser/object/convertWireToOsdkObjects/createOsdkInterface.js.map +1 -1
- package/build/browser/object/convertWireToOsdkObjects/createOsdkObject.js +10 -0
- package/build/browser/object/convertWireToOsdkObjects/createOsdkObject.js.map +1 -1
- package/build/browser/object/convertWireToOsdkObjects.test.js +12 -0
- package/build/browser/object/convertWireToOsdkObjects.test.js.map +1 -1
- package/build/browser/object/fetchPage.js +13 -6
- package/build/browser/object/fetchPage.js.map +1 -1
- package/build/browser/object/formatting/applyPropertyFormatter.js +58 -0
- package/build/browser/object/formatting/applyPropertyFormatter.js.map +1 -0
- package/build/browser/object/formatting/applyPropertyFormatter.test.js +726 -0
- package/build/browser/object/formatting/applyPropertyFormatter.test.js.map +1 -0
- package/build/browser/object/formatting/formatBoolean.js +23 -0
- package/build/browser/object/formatting/formatBoolean.js.map +1 -0
- package/build/browser/object/formatting/formatDateTime.js +158 -0
- package/build/browser/object/formatting/formatDateTime.js.map +1 -0
- package/build/browser/object/formatting/formatNumber.js +242 -0
- package/build/browser/object/formatting/formatNumber.js.map +1 -0
- package/build/browser/object/formatting/propertyFormattingUtils.js +39 -0
- package/build/browser/object/formatting/propertyFormattingUtils.js.map +1 -0
- package/build/browser/object/mediaUpload.js +3 -0
- package/build/browser/object/mediaUpload.js.map +1 -1
- package/build/browser/objectSet/ObjectSetListenerWebsocket.js +17 -0
- package/build/browser/objectSet/ObjectSetListenerWebsocket.js.map +1 -1
- package/build/browser/objectSet/createObjectSet.js +11 -0
- package/build/browser/objectSet/createObjectSet.js.map +1 -1
- package/build/browser/observable/ObservableClient.js.map +1 -1
- package/build/browser/observable/internal/BulkObjectLoader.js +12 -4
- package/build/browser/observable/internal/BulkObjectLoader.js.map +1 -1
- package/build/browser/observable/internal/BulkObjectLoader.test.js +48 -0
- package/build/browser/observable/internal/BulkObjectLoader.test.js.map +1 -1
- package/build/browser/observable/internal/CacheKeys.js +9 -3
- package/build/browser/observable/internal/CacheKeys.js.map +1 -1
- package/build/browser/observable/internal/Canonicalizer.js +51 -0
- package/build/browser/observable/internal/Canonicalizer.js.map +1 -0
- package/build/browser/observable/internal/Changes.js.map +1 -1
- package/build/browser/observable/internal/IntersectCanonicalizer.js +35 -0
- package/build/browser/observable/internal/IntersectCanonicalizer.js.map +1 -0
- package/build/browser/observable/internal/KnownCacheKey.js.map +1 -1
- package/build/browser/observable/internal/ObservableClientImpl.js +3 -0
- package/build/browser/observable/internal/ObservableClientImpl.js.map +1 -1
- package/build/browser/observable/internal/OrderByCanonicalizer.js +1 -4
- package/build/browser/observable/internal/OrderByCanonicalizer.js.map +1 -1
- package/build/browser/observable/internal/PivotCanonicalizer.js +33 -0
- package/build/browser/observable/internal/PivotCanonicalizer.js.map +1 -0
- package/build/browser/observable/internal/RdpCanonicalizer.js +66 -0
- package/build/browser/observable/internal/RdpCanonicalizer.js.map +1 -0
- package/build/browser/observable/internal/RdpCanonicalizer.test.js +68 -0
- package/build/browser/observable/internal/RdpCanonicalizer.test.js.map +1 -0
- package/build/browser/observable/internal/SimpleWhereClause.js.map +1 -1
- package/build/browser/observable/internal/Store.js +172 -6
- package/build/browser/observable/internal/Store.js.map +1 -1
- package/build/browser/observable/internal/WhereClauseCanonicalizer.js +1 -1
- package/build/browser/observable/internal/WhereClauseCanonicalizer.js.map +1 -1
- package/build/browser/observable/internal/actions/ActionApplication.js +1 -1
- package/build/browser/observable/internal/actions/ActionApplication.js.map +1 -1
- package/build/browser/observable/internal/actions/OptimisticJob.js +3 -3
- package/build/browser/observable/internal/actions/OptimisticJob.js.map +1 -1
- package/build/browser/observable/internal/aggregation/AggregationCacheKey.js +22 -0
- package/build/browser/observable/internal/aggregation/AggregationCacheKey.js.map +1 -0
- package/build/browser/observable/internal/aggregation/AggregationQuery.js +77 -0
- package/build/browser/observable/internal/aggregation/AggregationQuery.js.map +1 -0
- package/build/browser/observable/internal/aggregation/AggregationsHelper.js +54 -0
- package/build/browser/observable/internal/aggregation/AggregationsHelper.js.map +1 -0
- package/build/browser/observable/internal/aggregation/ObjectAggregationQuery.js +33 -0
- package/build/browser/observable/internal/aggregation/ObjectAggregationQuery.js.map +1 -0
- package/build/browser/observable/internal/base-list/BaseListQuery.js +145 -5
- package/build/browser/observable/internal/base-list/BaseListQuery.js.map +1 -1
- package/build/browser/observable/internal/base-list/createCollectionConnectable.js +0 -5
- package/build/browser/observable/internal/base-list/createCollectionConnectable.js.map +1 -1
- package/build/browser/observable/internal/base-list/createCollectionConnectable.test.js +26 -13
- package/build/browser/observable/internal/base-list/createCollectionConnectable.test.js.map +1 -1
- package/build/browser/observable/internal/evaluateFilter.js +61 -0
- package/build/browser/observable/internal/evaluateFilter.js.map +1 -0
- package/build/browser/observable/internal/links/SpecificLinkCacheKey.js +33 -1
- package/build/browser/observable/internal/links/SpecificLinkCacheKey.js.map +1 -1
- package/build/browser/observable/internal/list/InterfaceListQuery.js +8 -3
- package/build/browser/observable/internal/list/InterfaceListQuery.js.map +1 -1
- package/build/browser/observable/internal/list/ListCacheKey.js +24 -1
- package/build/browser/observable/internal/list/ListCacheKey.js.map +1 -1
- package/build/browser/observable/internal/list/ListQuery.js +35 -62
- package/build/browser/observable/internal/list/ListQuery.js.map +1 -1
- package/build/browser/observable/internal/list/ListQueryOptions.js.map +1 -1
- package/build/browser/observable/internal/list/ListsHelper.js +18 -8
- package/build/browser/observable/internal/list/ListsHelper.js.map +1 -1
- package/build/browser/observable/internal/list/ObjectListQuery.js +51 -3
- package/build/browser/observable/internal/list/ObjectListQuery.js.map +1 -1
- package/build/browser/observable/internal/object/ObjectCacheKey.js +20 -1
- package/build/browser/observable/internal/object/ObjectCacheKey.js.map +1 -1
- package/build/browser/observable/internal/object/ObjectCacheKeyRegistry.js +126 -0
- package/build/browser/observable/internal/object/ObjectCacheKeyRegistry.js.map +1 -0
- package/build/browser/observable/internal/object/ObjectCacheKeyRegistry.test.js +173 -0
- package/build/browser/observable/internal/object/ObjectCacheKeyRegistry.test.js.map +1 -0
- package/build/browser/observable/internal/object/ObjectQuery.js +10 -58
- package/build/browser/observable/internal/object/ObjectQuery.js.map +1 -1
- package/build/browser/observable/internal/object/ObjectsHelper.js +65 -5
- package/build/browser/observable/internal/object/ObjectsHelper.js.map +1 -1
- package/build/browser/observable/internal/objectMatchesWhereClause.js +3 -37
- package/build/browser/observable/internal/objectMatchesWhereClause.js.map +1 -1
- package/build/browser/observable/internal/objectMatchesWhereClause.test.js +2 -1
- package/build/browser/observable/internal/objectMatchesWhereClause.test.js.map +1 -1
- package/build/browser/observable/internal/objectset/ObjectSetHelper.js +5 -1
- package/build/browser/observable/internal/objectset/ObjectSetHelper.js.map +1 -1
- package/build/browser/observable/internal/objectset/ObjectSetQuery.js +3 -0
- package/build/browser/observable/internal/objectset/ObjectSetQuery.js.map +1 -1
- package/build/browser/observable/internal/objectset/ObjectSetQueryOptions.js.map +1 -1
- package/build/browser/observable/internal/testUtils/invalidateList.js +6 -1
- package/build/browser/observable/internal/testUtils/invalidateList.js.map +1 -1
- package/build/browser/observable/internal/testUtils.js +5 -3
- package/build/browser/observable/internal/testUtils.js.map +1 -1
- package/build/browser/observable/internal/types/ObjectUpdate.js +2 -0
- package/build/browser/observable/internal/types/ObjectUpdate.js.map +1 -0
- package/build/browser/observable/internal/utils/rdpFieldOperations.js +83 -0
- package/build/browser/observable/internal/utils/rdpFieldOperations.js.map +1 -0
- 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/internal-node.js +18 -0
- package/build/browser/public/internal-node.js.map +1 -0
- package/build/browser/public/unstable-do-not-use.js.map +1 -1
- package/build/browser/queries/applyQuery.js +5 -4
- package/build/browser/queries/applyQuery.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/extractObjectOrInterfaceType.js +5 -1
- package/build/browser/util/extractObjectOrInterfaceType.js.map +1 -1
- package/build/browser/util/extractObjectOrInterfaceType.test.js +21 -2
- package/build/browser/util/extractObjectOrInterfaceType.test.js.map +1 -1
- package/build/browser/util/toDataValue.js +16 -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-6SCDLAU2.cjs +57 -0
- package/build/cjs/chunk-6SCDLAU2.cjs.map +1 -0
- package/build/cjs/{chunk-SDFKR62Z.cjs → chunk-HJX4D4KL.cjs} +627 -63
- package/build/cjs/chunk-HJX4D4KL.cjs.map +1 -0
- package/build/cjs/{chunk-MEL46GIF.cjs → chunk-RO7XAQOS.cjs} +454 -242
- package/build/cjs/chunk-RO7XAQOS.cjs.map +1 -0
- package/build/cjs/{createClient-BJo8T7Js.d.cts → createClient-mOlFts15.d.cts} +1 -0
- package/build/cjs/{delay-QK4T7RVX.cjs → delay-KIUUJ5NJ.cjs} +4 -3
- package/build/cjs/delay-KIUUJ5NJ.cjs.map +1 -0
- package/build/cjs/index.cjs +24 -8
- package/build/cjs/index.cjs.map +1 -1
- package/build/cjs/index.d.cts +10 -3
- package/build/cjs/public/internal-node.cjs +193767 -0
- package/build/cjs/public/internal-node.cjs.map +1 -0
- package/build/cjs/public/internal-node.d.cts +29 -0
- package/build/cjs/public/internal.cjs +16 -9
- package/build/cjs/public/internal.cjs.map +1 -1
- package/build/cjs/public/unstable-do-not-use.cjs +1736 -868
- package/build/cjs/public/unstable-do-not-use.cjs.map +1 -1
- package/build/cjs/public/unstable-do-not-use.d.cts +43 -7
- 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 +2 -1
- package/build/esm/createClient.js.map +1 -1
- package/build/esm/createClient.test.js +19 -1
- package/build/esm/createClient.test.js.map +1 -1
- package/build/esm/createMinimalClient.js +4 -2
- package/build/esm/createMinimalClient.js.map +1 -1
- package/build/esm/derivedProperties/createWithPropertiesObjectSet.js +19 -1
- 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 +2 -2
- package/build/esm/index.js.map +1 -1
- package/build/esm/internal/conversions/extractNamespace.js +22 -0
- package/build/esm/internal/conversions/extractNamespace.js.map +1 -0
- package/build/esm/internal/conversions/fullyQualifyPropName.js +26 -0
- package/build/esm/internal/conversions/fullyQualifyPropName.js.map +1 -0
- package/build/esm/internal/conversions/makeGeoFilterBbox.js +41 -0
- package/build/esm/internal/conversions/makeGeoFilterBbox.js.map +1 -0
- package/build/esm/internal/conversions/makeGeoFilterIntersects.js +29 -0
- package/build/esm/internal/conversions/makeGeoFilterIntersects.js.map +1 -0
- package/build/esm/internal/conversions/makeGeoFilterPolygon.js +30 -0
- package/build/esm/internal/conversions/makeGeoFilterPolygon.js.map +1 -0
- package/build/esm/internal/conversions/makeGeoFilterWithin.js +48 -0
- package/build/esm/internal/conversions/makeGeoFilterWithin.js.map +1 -0
- package/build/esm/internal/conversions/modernToLegacyWhereClause.js +59 -105
- package/build/esm/internal/conversions/modernToLegacyWhereClause.js.map +1 -1
- package/build/esm/internal/conversions/modernToLegacyWhereClause.test.js +309 -0
- package/build/esm/internal/conversions/modernToLegacyWhereClause.test.js.map +1 -1
- package/build/esm/object/aggregate.js +3 -0
- package/build/esm/object/aggregate.js.map +1 -1
- package/build/esm/object/convertWireToOsdkObjects/BaseHolder.js.map +1 -1
- package/build/esm/object/convertWireToOsdkObjects/InterfaceHolder.js.map +1 -1
- package/build/esm/object/convertWireToOsdkObjects/createOsdkInterface.js +5 -1
- package/build/esm/object/convertWireToOsdkObjects/createOsdkInterface.js.map +1 -1
- package/build/esm/object/convertWireToOsdkObjects/createOsdkObject.js +10 -0
- package/build/esm/object/convertWireToOsdkObjects/createOsdkObject.js.map +1 -1
- package/build/esm/object/convertWireToOsdkObjects.test.js +12 -0
- package/build/esm/object/convertWireToOsdkObjects.test.js.map +1 -1
- package/build/esm/object/fetchPage.js +13 -6
- package/build/esm/object/fetchPage.js.map +1 -1
- package/build/esm/object/formatting/applyPropertyFormatter.js +58 -0
- package/build/esm/object/formatting/applyPropertyFormatter.js.map +1 -0
- package/build/esm/object/formatting/applyPropertyFormatter.test.js +726 -0
- package/build/esm/object/formatting/applyPropertyFormatter.test.js.map +1 -0
- package/build/esm/object/formatting/formatBoolean.js +23 -0
- package/build/esm/object/formatting/formatBoolean.js.map +1 -0
- package/build/esm/object/formatting/formatDateTime.js +158 -0
- package/build/esm/object/formatting/formatDateTime.js.map +1 -0
- package/build/esm/object/formatting/formatNumber.js +242 -0
- package/build/esm/object/formatting/formatNumber.js.map +1 -0
- package/build/esm/object/formatting/propertyFormattingUtils.js +39 -0
- package/build/esm/object/formatting/propertyFormattingUtils.js.map +1 -0
- package/build/esm/object/mediaUpload.js +3 -0
- package/build/esm/object/mediaUpload.js.map +1 -1
- package/build/esm/objectSet/ObjectSetListenerWebsocket.js +17 -0
- package/build/esm/objectSet/ObjectSetListenerWebsocket.js.map +1 -1
- package/build/esm/objectSet/createObjectSet.js +11 -0
- package/build/esm/objectSet/createObjectSet.js.map +1 -1
- package/build/esm/observable/ObservableClient.js.map +1 -1
- package/build/esm/observable/internal/BulkObjectLoader.js +12 -4
- package/build/esm/observable/internal/BulkObjectLoader.js.map +1 -1
- package/build/esm/observable/internal/BulkObjectLoader.test.js +48 -0
- package/build/esm/observable/internal/BulkObjectLoader.test.js.map +1 -1
- package/build/esm/observable/internal/CacheKeys.js +9 -3
- package/build/esm/observable/internal/CacheKeys.js.map +1 -1
- package/build/esm/observable/internal/Canonicalizer.js +51 -0
- package/build/esm/observable/internal/Canonicalizer.js.map +1 -0
- package/build/esm/observable/internal/Changes.js.map +1 -1
- package/build/esm/observable/internal/IntersectCanonicalizer.js +35 -0
- package/build/esm/observable/internal/IntersectCanonicalizer.js.map +1 -0
- package/build/esm/observable/internal/KnownCacheKey.js.map +1 -1
- package/build/esm/observable/internal/ObservableClientImpl.js +3 -0
- package/build/esm/observable/internal/ObservableClientImpl.js.map +1 -1
- package/build/esm/observable/internal/OrderByCanonicalizer.js +1 -4
- package/build/esm/observable/internal/OrderByCanonicalizer.js.map +1 -1
- package/build/esm/observable/internal/PivotCanonicalizer.js +33 -0
- package/build/esm/observable/internal/PivotCanonicalizer.js.map +1 -0
- package/build/esm/observable/internal/RdpCanonicalizer.js +66 -0
- package/build/esm/observable/internal/RdpCanonicalizer.js.map +1 -0
- package/build/esm/observable/internal/RdpCanonicalizer.test.js +68 -0
- package/build/esm/observable/internal/RdpCanonicalizer.test.js.map +1 -0
- package/build/esm/observable/internal/SimpleWhereClause.js.map +1 -1
- package/build/esm/observable/internal/Store.js +172 -6
- package/build/esm/observable/internal/Store.js.map +1 -1
- package/build/esm/observable/internal/WhereClauseCanonicalizer.js +1 -1
- package/build/esm/observable/internal/WhereClauseCanonicalizer.js.map +1 -1
- package/build/esm/observable/internal/actions/ActionApplication.js +1 -1
- package/build/esm/observable/internal/actions/ActionApplication.js.map +1 -1
- package/build/esm/observable/internal/actions/OptimisticJob.js +3 -3
- package/build/esm/observable/internal/actions/OptimisticJob.js.map +1 -1
- package/build/esm/observable/internal/aggregation/AggregationCacheKey.js +22 -0
- package/build/esm/observable/internal/aggregation/AggregationCacheKey.js.map +1 -0
- package/build/esm/observable/internal/aggregation/AggregationQuery.js +77 -0
- package/build/esm/observable/internal/aggregation/AggregationQuery.js.map +1 -0
- package/build/esm/observable/internal/aggregation/AggregationsHelper.js +54 -0
- package/build/esm/observable/internal/aggregation/AggregationsHelper.js.map +1 -0
- package/build/esm/observable/internal/aggregation/ObjectAggregationQuery.js +33 -0
- package/build/esm/observable/internal/aggregation/ObjectAggregationQuery.js.map +1 -0
- package/build/esm/observable/internal/base-list/BaseListQuery.js +145 -5
- package/build/esm/observable/internal/base-list/BaseListQuery.js.map +1 -1
- package/build/esm/observable/internal/base-list/createCollectionConnectable.js +0 -5
- package/build/esm/observable/internal/base-list/createCollectionConnectable.js.map +1 -1
- package/build/esm/observable/internal/base-list/createCollectionConnectable.test.js +26 -13
- package/build/esm/observable/internal/base-list/createCollectionConnectable.test.js.map +1 -1
- package/build/esm/observable/internal/evaluateFilter.js +61 -0
- package/build/esm/observable/internal/evaluateFilter.js.map +1 -0
- package/build/esm/observable/internal/links/SpecificLinkCacheKey.js +33 -1
- package/build/esm/observable/internal/links/SpecificLinkCacheKey.js.map +1 -1
- package/build/esm/observable/internal/list/InterfaceListQuery.js +8 -3
- package/build/esm/observable/internal/list/InterfaceListQuery.js.map +1 -1
- package/build/esm/observable/internal/list/ListCacheKey.js +24 -1
- package/build/esm/observable/internal/list/ListCacheKey.js.map +1 -1
- package/build/esm/observable/internal/list/ListQuery.js +35 -62
- package/build/esm/observable/internal/list/ListQuery.js.map +1 -1
- package/build/esm/observable/internal/list/ListQueryOptions.js.map +1 -1
- package/build/esm/observable/internal/list/ListsHelper.js +18 -8
- package/build/esm/observable/internal/list/ListsHelper.js.map +1 -1
- package/build/esm/observable/internal/list/ObjectListQuery.js +51 -3
- package/build/esm/observable/internal/list/ObjectListQuery.js.map +1 -1
- package/build/esm/observable/internal/object/ObjectCacheKey.js +20 -1
- package/build/esm/observable/internal/object/ObjectCacheKey.js.map +1 -1
- package/build/esm/observable/internal/object/ObjectCacheKeyRegistry.js +126 -0
- package/build/esm/observable/internal/object/ObjectCacheKeyRegistry.js.map +1 -0
- package/build/esm/observable/internal/object/ObjectCacheKeyRegistry.test.js +173 -0
- package/build/esm/observable/internal/object/ObjectCacheKeyRegistry.test.js.map +1 -0
- package/build/esm/observable/internal/object/ObjectQuery.js +10 -58
- package/build/esm/observable/internal/object/ObjectQuery.js.map +1 -1
- package/build/esm/observable/internal/object/ObjectsHelper.js +65 -5
- package/build/esm/observable/internal/object/ObjectsHelper.js.map +1 -1
- package/build/esm/observable/internal/objectMatchesWhereClause.js +3 -37
- package/build/esm/observable/internal/objectMatchesWhereClause.js.map +1 -1
- package/build/esm/observable/internal/objectMatchesWhereClause.test.js +2 -1
- package/build/esm/observable/internal/objectMatchesWhereClause.test.js.map +1 -1
- package/build/esm/observable/internal/objectset/ObjectSetHelper.js +5 -1
- package/build/esm/observable/internal/objectset/ObjectSetHelper.js.map +1 -1
- package/build/esm/observable/internal/objectset/ObjectSetQuery.js +3 -0
- package/build/esm/observable/internal/objectset/ObjectSetQuery.js.map +1 -1
- package/build/esm/observable/internal/objectset/ObjectSetQueryOptions.js.map +1 -1
- package/build/esm/observable/internal/testUtils/invalidateList.js +6 -1
- package/build/esm/observable/internal/testUtils/invalidateList.js.map +1 -1
- package/build/esm/observable/internal/testUtils.js +5 -3
- package/build/esm/observable/internal/testUtils.js.map +1 -1
- package/build/esm/observable/internal/types/ObjectUpdate.js +2 -0
- package/build/esm/observable/internal/types/ObjectUpdate.js.map +1 -0
- package/build/esm/observable/internal/utils/rdpFieldOperations.js +83 -0
- package/build/esm/observable/internal/utils/rdpFieldOperations.js.map +1 -0
- 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/internal-node.js +18 -0
- package/build/esm/public/internal-node.js.map +1 -0
- package/build/esm/public/unstable-do-not-use.js.map +1 -1
- package/build/esm/queries/applyQuery.js +5 -4
- package/build/esm/queries/applyQuery.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/extractObjectOrInterfaceType.js +5 -1
- package/build/esm/util/extractObjectOrInterfaceType.js.map +1 -1
- package/build/esm/util/extractObjectOrInterfaceType.test.js +21 -2
- package/build/esm/util/extractObjectOrInterfaceType.test.js.map +1 -1
- package/build/esm/util/toDataValue.js +16 -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 +3 -1
- 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 +3 -3
- package/build/types/index.d.ts.map +1 -1
- package/build/types/internal/conversions/extractNamespace.d.ts +1 -0
- package/build/types/internal/conversions/extractNamespace.d.ts.map +1 -0
- package/build/types/internal/conversions/fullyQualifyPropName.d.ts +2 -0
- package/build/types/internal/conversions/fullyQualifyPropName.d.ts.map +1 -0
- package/build/types/internal/conversions/makeGeoFilterBbox.d.ts +3 -0
- package/build/types/internal/conversions/makeGeoFilterBbox.d.ts.map +1 -0
- package/build/types/internal/conversions/makeGeoFilterIntersects.d.ts +3 -0
- package/build/types/internal/conversions/makeGeoFilterIntersects.d.ts.map +1 -0
- package/build/types/internal/conversions/makeGeoFilterPolygon.d.ts +3 -0
- package/build/types/internal/conversions/makeGeoFilterPolygon.d.ts.map +1 -0
- package/build/types/internal/conversions/makeGeoFilterWithin.d.ts +3 -0
- package/build/types/internal/conversions/makeGeoFilterWithin.d.ts.map +1 -0
- package/build/types/internal/conversions/modernToLegacyWhereClause.d.ts +1 -1
- package/build/types/internal/conversions/modernToLegacyWhereClause.d.ts.map +1 -1
- package/build/types/object/fetchPage.d.ts.map +1 -1
- package/build/types/object/formatting/applyPropertyFormatter.d.ts +18 -0
- package/build/types/object/formatting/applyPropertyFormatter.d.ts.map +1 -0
- package/build/types/object/formatting/applyPropertyFormatter.test.d.ts +1 -0
- package/build/types/object/formatting/applyPropertyFormatter.test.d.ts.map +1 -0
- package/build/types/object/formatting/formatBoolean.d.ts +5 -0
- package/build/types/object/formatting/formatBoolean.d.ts.map +1 -0
- package/build/types/object/formatting/formatDateTime.d.ts +6 -0
- package/build/types/object/formatting/formatDateTime.d.ts.map +1 -0
- package/build/types/object/formatting/formatNumber.d.ts +15 -0
- package/build/types/object/formatting/formatNumber.d.ts.map +1 -0
- package/build/types/object/formatting/propertyFormattingUtils.d.ts +10 -0
- package/build/types/object/formatting/propertyFormattingUtils.d.ts.map +1 -0
- package/build/types/object/mediaUpload.d.ts +2 -1
- package/build/types/object/mediaUpload.d.ts.map +1 -1
- package/build/types/observable/ObservableClient.d.ts +60 -5
- package/build/types/observable/ObservableClient.d.ts.map +1 -1
- package/build/types/observable/internal/BulkObjectLoader.d.ts.map +1 -1
- package/build/types/observable/internal/CacheKeys.d.ts.map +1 -1
- package/build/types/observable/internal/Canonicalizer.d.ts +37 -0
- package/build/types/observable/internal/Canonicalizer.d.ts.map +1 -0
- package/build/types/observable/internal/Changes.d.ts +4 -3
- package/build/types/observable/internal/Changes.d.ts.map +1 -1
- package/build/types/observable/internal/IntersectCanonicalizer.d.ts +18 -0
- package/build/types/observable/internal/IntersectCanonicalizer.d.ts.map +1 -0
- package/build/types/observable/internal/KnownCacheKey.d.ts +2 -1
- package/build/types/observable/internal/KnownCacheKey.d.ts.map +1 -1
- package/build/types/observable/internal/OrderByCanonicalizer.d.ts.map +1 -1
- package/build/types/observable/internal/PivotCanonicalizer.d.ts +10 -0
- package/build/types/observable/internal/PivotCanonicalizer.d.ts.map +1 -0
- package/build/types/observable/internal/RdpCanonicalizer.d.ts +8 -0
- package/build/types/observable/internal/RdpCanonicalizer.d.ts.map +1 -0
- package/build/types/observable/internal/RdpCanonicalizer.test.d.ts +1 -0
- package/build/types/observable/internal/RdpCanonicalizer.test.d.ts.map +1 -0
- package/build/types/observable/internal/SimpleWhereClause.d.ts +6 -2
- package/build/types/observable/internal/SimpleWhereClause.d.ts.map +1 -1
- package/build/types/observable/internal/Store.d.ts +10 -0
- package/build/types/observable/internal/Store.d.ts.map +1 -1
- package/build/types/observable/internal/WhereClauseCanonicalizer.d.ts +5 -2
- package/build/types/observable/internal/WhereClauseCanonicalizer.d.ts.map +1 -1
- package/build/types/observable/internal/actions/ActionApplication.d.ts.map +1 -1
- package/build/types/observable/internal/aggregation/AggregationCacheKey.d.ts +12 -0
- package/build/types/observable/internal/aggregation/AggregationCacheKey.d.ts.map +1 -0
- package/build/types/observable/internal/aggregation/AggregationQuery.d.ts +49 -0
- package/build/types/observable/internal/aggregation/AggregationQuery.d.ts.map +1 -0
- package/build/types/observable/internal/aggregation/AggregationsHelper.d.ts +37 -0
- package/build/types/observable/internal/aggregation/AggregationsHelper.d.ts.map +1 -0
- package/build/types/observable/internal/aggregation/ObjectAggregationQuery.d.ts +5 -0
- package/build/types/observable/internal/aggregation/ObjectAggregationQuery.d.ts.map +1 -0
- package/build/types/observable/internal/base-list/BaseListQuery.d.ts +48 -2
- package/build/types/observable/internal/base-list/BaseListQuery.d.ts.map +1 -1
- package/build/types/observable/internal/base-list/createCollectionConnectable.d.ts +1 -23
- package/build/types/observable/internal/base-list/createCollectionConnectable.d.ts.map +1 -1
- package/build/types/observable/internal/evaluateFilter.d.ts +6 -0
- package/build/types/observable/internal/evaluateFilter.d.ts.map +1 -0
- package/build/types/observable/internal/links/SpecificLinkCacheKey.d.ts +5 -0
- package/build/types/observable/internal/links/SpecificLinkCacheKey.d.ts.map +1 -1
- package/build/types/observable/internal/list/InterfaceListQuery.d.ts.map +1 -1
- package/build/types/observable/internal/list/ListCacheKey.d.ts +10 -1
- package/build/types/observable/internal/list/ListCacheKey.d.ts.map +1 -1
- package/build/types/observable/internal/list/ListQuery.d.ts +12 -15
- package/build/types/observable/internal/list/ListQuery.d.ts.map +1 -1
- package/build/types/observable/internal/list/ListQueryOptions.d.ts +9 -1
- package/build/types/observable/internal/list/ListQueryOptions.d.ts.map +1 -1
- package/build/types/observable/internal/list/ListsHelper.d.ts +7 -1
- package/build/types/observable/internal/list/ListsHelper.d.ts.map +1 -1
- package/build/types/observable/internal/list/ObjectListQuery.d.ts.map +1 -1
- package/build/types/observable/internal/object/ObjectCacheKey.d.ts +6 -1
- package/build/types/observable/internal/object/ObjectCacheKey.d.ts.map +1 -1
- package/build/types/observable/internal/object/ObjectCacheKeyRegistry.d.ts +60 -0
- package/build/types/observable/internal/object/ObjectCacheKeyRegistry.d.ts.map +1 -0
- package/build/types/observable/internal/object/ObjectCacheKeyRegistry.test.d.ts +1 -0
- package/build/types/observable/internal/object/ObjectCacheKeyRegistry.test.d.ts.map +1 -0
- package/build/types/observable/internal/object/ObjectQuery.d.ts +1 -1
- package/build/types/observable/internal/object/ObjectQuery.d.ts.map +1 -1
- package/build/types/observable/internal/object/ObjectsHelper.d.ts +15 -1
- package/build/types/observable/internal/object/ObjectsHelper.d.ts.map +1 -1
- package/build/types/observable/internal/objectMatchesWhereClause.d.ts.map +1 -1
- package/build/types/observable/internal/objectset/ObjectSetHelper.d.ts.map +1 -1
- package/build/types/observable/internal/objectset/ObjectSetQuery.d.ts +2 -1
- package/build/types/observable/internal/objectset/ObjectSetQuery.d.ts.map +1 -1
- package/build/types/observable/internal/objectset/ObjectSetQueryOptions.d.ts +1 -0
- package/build/types/observable/internal/objectset/ObjectSetQueryOptions.d.ts.map +1 -1
- package/build/types/observable/internal/testUtils.d.ts +1 -1
- package/build/types/observable/internal/testUtils.d.ts.map +1 -1
- package/build/types/observable/internal/types/ObjectUpdate.d.ts +11 -0
- package/build/types/observable/internal/types/ObjectUpdate.d.ts.map +1 -0
- package/build/types/observable/internal/utils/rdpFieldOperations.d.ts +5 -0
- package/build/types/observable/internal/utils/rdpFieldOperations.d.ts.map +1 -0
- package/build/types/public/internal-node.d.ts +2 -0
- package/build/types/public/internal-node.d.ts.map +1 -0
- package/build/types/public/unstable-do-not-use.d.ts +1 -1
- package/build/types/public/unstable-do-not-use.d.ts.map +1 -1
- package/build/types/queries/applyQuery.d.ts.map +1 -1
- package/internal-node.d.ts +17 -0
- package/package.json +23 -13
- package/build/cjs/chunk-MEL46GIF.cjs.map +0 -1
- package/build/cjs/chunk-Q7SFCCGT.cjs +0 -11
- package/build/cjs/chunk-Q7SFCCGT.cjs.map +0 -1
- package/build/cjs/chunk-SDFKR62Z.cjs.map +0 -1
- package/build/cjs/delay-QK4T7RVX.cjs.map +0 -1
|
@@ -78,11 +78,13 @@ describe("createCollectionConnectable", () => {
|
|
|
78
78
|
// Mock object cache keys
|
|
79
79
|
const objectKey1 = {
|
|
80
80
|
type: "object",
|
|
81
|
-
otherKeys: ["Employee", 1]
|
|
81
|
+
otherKeys: ["Employee", 1, undefined],
|
|
82
|
+
__cacheKey: {}
|
|
82
83
|
};
|
|
83
84
|
const objectKey2 = {
|
|
84
85
|
type: "object",
|
|
85
|
-
otherKeys: ["Employee", 2]
|
|
86
|
+
otherKeys: ["Employee", 2, undefined],
|
|
87
|
+
__cacheKey: {}
|
|
86
88
|
};
|
|
87
89
|
|
|
88
90
|
// Create subject payload with mock data
|
|
@@ -191,7 +193,8 @@ describe("createCollectionConnectable", () => {
|
|
|
191
193
|
it("should propagate optimistic flag correctly", async () => {
|
|
192
194
|
const objectKey1 = {
|
|
193
195
|
type: "object",
|
|
194
|
-
otherKeys: ["Employee", 1]
|
|
196
|
+
otherKeys: ["Employee", 1, undefined],
|
|
197
|
+
__cacheKey: {}
|
|
195
198
|
};
|
|
196
199
|
const subjectPayload = {
|
|
197
200
|
cacheKey: mockListCacheKey,
|
|
@@ -229,7 +232,8 @@ describe("createCollectionConnectable", () => {
|
|
|
229
232
|
it("should handle different status values", async () => {
|
|
230
233
|
const objectKey1 = {
|
|
231
234
|
type: "object",
|
|
232
|
-
otherKeys: ["Employee", 1]
|
|
235
|
+
otherKeys: ["Employee", 1, undefined],
|
|
236
|
+
__cacheKey: {}
|
|
233
237
|
};
|
|
234
238
|
const basePayload = {
|
|
235
239
|
cacheKey: mockListCacheKey,
|
|
@@ -283,15 +287,18 @@ describe("createCollectionConnectable", () => {
|
|
|
283
287
|
it("should handle multiple objects in collection", async () => {
|
|
284
288
|
const objectKey1 = {
|
|
285
289
|
type: "object",
|
|
286
|
-
otherKeys: ["Employee", 1]
|
|
290
|
+
otherKeys: ["Employee", 1, undefined],
|
|
291
|
+
__cacheKey: {}
|
|
287
292
|
};
|
|
288
293
|
const objectKey2 = {
|
|
289
294
|
type: "object",
|
|
290
|
-
otherKeys: ["Employee", 2]
|
|
295
|
+
otherKeys: ["Employee", 2, undefined],
|
|
296
|
+
__cacheKey: {}
|
|
291
297
|
};
|
|
292
298
|
const objectKey3 = {
|
|
293
299
|
type: "object",
|
|
294
|
-
otherKeys: ["Employee", 3]
|
|
300
|
+
otherKeys: ["Employee", 3, undefined],
|
|
301
|
+
__cacheKey: {}
|
|
295
302
|
};
|
|
296
303
|
const subjectPayload = {
|
|
297
304
|
cacheKey: mockListCacheKey,
|
|
@@ -351,11 +358,13 @@ describe("createCollectionConnectable", () => {
|
|
|
351
358
|
it("should handle objects being added/removed from collection", async () => {
|
|
352
359
|
const objectKey1 = {
|
|
353
360
|
type: "object",
|
|
354
|
-
otherKeys: ["Employee", 1]
|
|
361
|
+
otherKeys: ["Employee", 1, undefined],
|
|
362
|
+
__cacheKey: {}
|
|
355
363
|
};
|
|
356
364
|
const objectKey2 = {
|
|
357
365
|
type: "object",
|
|
358
|
-
otherKeys: ["Employee", 2]
|
|
366
|
+
otherKeys: ["Employee", 2, undefined],
|
|
367
|
+
__cacheKey: {}
|
|
359
368
|
};
|
|
360
369
|
|
|
361
370
|
// Start with one object
|
|
@@ -425,7 +434,8 @@ describe("createCollectionConnectable", () => {
|
|
|
425
434
|
it("should support multiple subscribers", async () => {
|
|
426
435
|
const objectKey1 = {
|
|
427
436
|
type: "object",
|
|
428
|
-
otherKeys: ["Employee", 1]
|
|
437
|
+
otherKeys: ["Employee", 1, undefined],
|
|
438
|
+
__cacheKey: {}
|
|
429
439
|
};
|
|
430
440
|
const subjectPayload = {
|
|
431
441
|
cacheKey: mockListCacheKey,
|
|
@@ -467,7 +477,8 @@ describe("createCollectionConnectable", () => {
|
|
|
467
477
|
it("should use ReplaySubject behavior (last value replayed)", async () => {
|
|
468
478
|
const objectKey1 = {
|
|
469
479
|
type: "object",
|
|
470
|
-
otherKeys: ["Employee", 1]
|
|
480
|
+
otherKeys: ["Employee", 1, undefined],
|
|
481
|
+
__cacheKey: {}
|
|
471
482
|
};
|
|
472
483
|
const subjectPayload = {
|
|
473
484
|
cacheKey: mockListCacheKey,
|
|
@@ -516,7 +527,8 @@ describe("createCollectionConnectable", () => {
|
|
|
516
527
|
it("should handle store.getSubject returning undefined object entry", async () => {
|
|
517
528
|
const objectKey1 = {
|
|
518
529
|
type: "object",
|
|
519
|
-
otherKeys: ["Employee", 1]
|
|
530
|
+
otherKeys: ["Employee", 1, undefined],
|
|
531
|
+
__cacheKey: {}
|
|
520
532
|
};
|
|
521
533
|
const subjectPayload = {
|
|
522
534
|
cacheKey: mockListCacheKey,
|
|
@@ -556,7 +568,8 @@ describe("createCollectionConnectable", () => {
|
|
|
556
568
|
it("should handle createPayload function throwing errors", async () => {
|
|
557
569
|
const objectKey1 = {
|
|
558
570
|
type: "object",
|
|
559
|
-
otherKeys: ["Employee", 1]
|
|
571
|
+
otherKeys: ["Employee", 1, undefined],
|
|
572
|
+
__cacheKey: {}
|
|
560
573
|
};
|
|
561
574
|
const subjectPayload = {
|
|
562
575
|
cacheKey: mockListCacheKey,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createCollectionConnectable.test.js","names":["BehaviorSubject","beforeEach","describe","expect","it","vi","createClientMockHelper","mockObserver","waitForCall","createCollectionConnectable","actualCreateCollectionConnectable","mockEmployee1","$apiName","$primaryKey","$objectType","$title","employeeId","fullName","mockEmployee2","mockEmployee3","mockSubjects","createPayload","mockListCacheKey","client","get","fn","type","otherKeys","params","data","resolvedData","status","isOptimistic","lastUpdated","count","length","objectKey1","objectKey2","subjectPayload","cacheKey","value","Date","now","subject","mocked","mockImplementation","undefined","connectable","subscription","connect","observer","subscribe","next","toHaveBeenCalledWith","objectContaining","unsubscribe","mockReturnValue","basePayload","mockClear","objectKey3","initialPayload","observer1","observer2","toHaveBeenCalledTimes","not","toHaveBeenCalled","errorThrowingCreatePayload","Error","error","message"],"sources":["createCollectionConnectable.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 type { Osdk } from \"@osdk/api\";\nimport type { Employee } from \"@osdk/client.test.ontology\";\nimport { BehaviorSubject } from \"rxjs\";\nimport { beforeEach, describe, expect, it, vi } from \"vitest\";\nimport type { ObjectHolder } from \"../../../object/convertWireToOsdkObjects/ObjectHolder.js\";\nimport type { Status } from \"../../ObservableClient/common.js\";\nimport type { CacheKey } from \"../CacheKey.js\";\nimport type { ObjectCacheKey } from \"../object/ObjectCacheKey.js\";\nimport type { SubjectPayload } from \"../SubjectPayload.js\";\nimport type { Subjects } from \"../Subjects.js\";\nimport {\n createClientMockHelper,\n mockObserver,\n waitForCall,\n} from \"../testUtils.js\";\nimport { createCollectionConnectable as actualCreateCollectionConnectable } from \"./createCollectionConnectable.js\";\n\n// Test payload type for our collection\ninterface TestPayload {\n data: any[];\n status: Status;\n isOptimistic: boolean;\n lastUpdated: number;\n count: number;\n}\n\n// Mock object instances for testing\nconst mockEmployee1: Osdk.Instance<Employee> & ObjectHolder = {\n $apiName: \"Employee\",\n $primaryKey: 1,\n $objectType: \"Employee\",\n $title: \"Employee 1\",\n employeeId: 1,\n fullName: \"John Doe\",\n} as any;\n\nconst mockEmployee2: Osdk.Instance<Employee> & ObjectHolder = {\n $apiName: \"Employee\",\n $primaryKey: 2,\n $objectType: \"Employee\",\n $title: \"Employee 2\",\n employeeId: 2,\n fullName: \"Jane Smith\",\n} as any;\n\nconst mockEmployee3: Osdk.Instance<Employee> & ObjectHolder = {\n $apiName: \"Employee\",\n $primaryKey: 3,\n $objectType: \"Employee\",\n $title: \"Employee 3\",\n employeeId: 3,\n fullName: \"Bob Johnson\",\n} as any;\n\ndescribe(\"createCollectionConnectable\", () => {\n let mockSubjects: Subjects;\n let createPayload: ReturnType<typeof vi.fn>;\n let mockListCacheKey: CacheKey<any, any, any, any>;\n\n beforeEach(() => {\n const { client } = createClientMockHelper();\n\n mockSubjects = {\n get: vi.fn(),\n } as any;\n\n // Mock cache key for list\n mockListCacheKey = {\n type: \"list\",\n otherKeys: [\"Employee\", {}, {}],\n } as CacheKey<any, any, any, any>;\n\n // Create payload function that mimics real usage\n createPayload = vi.fn((params) => ({\n data: params.resolvedData,\n status: params.status,\n isOptimistic: params.isOptimistic,\n lastUpdated: params.lastUpdated,\n count: params.resolvedData.length,\n }));\n });\n\n describe(\"basic functionality\", () => {\n it(\"should create a connectable observable with resolved data\", async () => {\n // Mock object cache keys\n const objectKey1: ObjectCacheKey = {\n type: \"object\",\n otherKeys: [\"Employee\", 1],\n } as ObjectCacheKey;\n\n const objectKey2: ObjectCacheKey = {\n type: \"object\",\n otherKeys: [\"Employee\", 2],\n } as ObjectCacheKey;\n\n // Create subject payload with mock data\n const subjectPayload: SubjectPayload<typeof mockListCacheKey> = {\n cacheKey: mockListCacheKey,\n value: {\n data: [objectKey1, objectKey2],\n },\n status: \"loaded\",\n lastUpdated: Date.now(),\n isOptimistic: false,\n };\n\n const subject = new BehaviorSubject(subjectPayload);\n\n // Mock store.getSubject to return object observables\n vi.mocked(mockSubjects.get).mockImplementation((cacheKey: any) => {\n if (cacheKey === objectKey1) {\n return new BehaviorSubject({\n cacheKey: objectKey1,\n value: mockEmployee1,\n status: \"loaded\",\n lastUpdated: Date.now(),\n isOptimistic: false,\n } as any);\n }\n if (cacheKey === objectKey2) {\n return new BehaviorSubject({\n cacheKey: objectKey2,\n value: mockEmployee2,\n status: \"loaded\",\n lastUpdated: Date.now(),\n isOptimistic: false,\n } as any);\n }\n return new BehaviorSubject(undefined as any);\n }) as any;\n\n const connectable = actualCreateCollectionConnectable(\n subject,\n mockSubjects,\n createPayload,\n );\n\n // Connect and subscribe\n const subscription = connectable.connect();\n const observer = mockObserver<TestPayload>();\n\n connectable.subscribe(observer);\n\n // Wait for the observable to emit\n await waitForCall(observer);\n\n // Verify the result\n expect(observer.next).toHaveBeenCalledWith(\n expect.objectContaining({\n data: [mockEmployee1, mockEmployee2],\n status: \"loaded\",\n isOptimistic: false,\n count: 2,\n }),\n );\n\n subscription.unsubscribe();\n });\n\n it(\"should handle empty data correctly\", async () => {\n const subjectPayload: SubjectPayload<typeof mockListCacheKey> = {\n cacheKey: mockListCacheKey,\n value: {\n data: [],\n },\n status: \"loaded\",\n lastUpdated: Date.now(),\n isOptimistic: false,\n };\n\n const subject = new BehaviorSubject(subjectPayload);\n\n const connectable = actualCreateCollectionConnectable(\n subject,\n mockSubjects,\n createPayload,\n );\n\n const subscription = connectable.connect();\n const observer = mockObserver<TestPayload>();\n\n connectable.subscribe(observer);\n\n await waitForCall(observer);\n\n expect(observer.next).toHaveBeenCalledWith(\n expect.objectContaining({\n data: [],\n status: \"loaded\",\n isOptimistic: false,\n count: 0,\n }),\n );\n\n subscription.unsubscribe();\n });\n\n it(\"should handle null/undefined data\", async () => {\n const subjectPayload: SubjectPayload<typeof mockListCacheKey> = {\n cacheKey: mockListCacheKey,\n value: {\n data: null as any,\n },\n status: \"loaded\",\n lastUpdated: Date.now(),\n isOptimistic: false,\n };\n\n const subject = new BehaviorSubject(subjectPayload);\n\n const connectable = actualCreateCollectionConnectable(\n subject,\n mockSubjects,\n createPayload,\n );\n\n const subscription = connectable.connect();\n const observer = mockObserver<TestPayload>();\n\n connectable.subscribe(observer);\n\n await waitForCall(observer);\n\n expect(observer.next).toHaveBeenCalledWith(\n expect.objectContaining({\n data: [],\n status: \"loaded\",\n isOptimistic: false,\n count: 0,\n }),\n );\n\n subscription.unsubscribe();\n });\n });\n\n describe(\"optimistic updates\", () => {\n it(\"should propagate optimistic flag correctly\", async () => {\n const objectKey1: ObjectCacheKey = {\n type: \"object\",\n otherKeys: [\"Employee\", 1],\n } as ObjectCacheKey;\n\n const subjectPayload: SubjectPayload<typeof mockListCacheKey> = {\n cacheKey: mockListCacheKey,\n value: {\n data: [objectKey1],\n },\n status: \"loading\",\n lastUpdated: Date.now(),\n isOptimistic: true, // This is an optimistic update\n };\n\n const subject = new BehaviorSubject(subjectPayload);\n\n vi.mocked(mockSubjects.get).mockReturnValue(\n new BehaviorSubject({\n cacheKey: objectKey1,\n value: mockEmployee1,\n status: \"loaded\",\n lastUpdated: Date.now(),\n isOptimistic: false,\n } as any),\n );\n\n const connectable = actualCreateCollectionConnectable(\n subject,\n mockSubjects,\n createPayload,\n );\n\n const subscription = connectable.connect();\n const observer = mockObserver<TestPayload>();\n\n connectable.subscribe(observer);\n\n await waitForCall(observer);\n\n expect(observer.next).toHaveBeenCalledWith(\n expect.objectContaining({\n data: [mockEmployee1],\n status: \"loading\",\n isOptimistic: true, // Should preserve optimistic flag\n count: 1,\n }),\n );\n\n subscription.unsubscribe();\n });\n });\n\n describe(\"status transitions\", () => {\n it(\"should handle different status values\", async () => {\n const objectKey1: ObjectCacheKey = {\n type: \"object\",\n otherKeys: [\"Employee\", 1],\n } as ObjectCacheKey;\n\n const basePayload: SubjectPayload<typeof mockListCacheKey> = {\n cacheKey: mockListCacheKey,\n value: {\n data: [objectKey1],\n },\n status: \"init\",\n lastUpdated: Date.now(),\n isOptimistic: false,\n };\n\n const subject = new BehaviorSubject(basePayload);\n\n vi.mocked(mockSubjects.get).mockReturnValue(\n new BehaviorSubject({\n cacheKey: objectKey1,\n value: mockEmployee1,\n status: \"loaded\",\n lastUpdated: Date.now(),\n isOptimistic: false,\n } as any),\n );\n\n const connectable = actualCreateCollectionConnectable(\n subject,\n mockSubjects,\n createPayload,\n );\n\n const subscription = connectable.connect();\n const observer = mockObserver<TestPayload>();\n\n connectable.subscribe(observer);\n\n // Wait for initial emission\n await waitForCall(observer);\n\n expect(observer.next).toHaveBeenCalledWith(\n expect.objectContaining({\n data: [mockEmployee1],\n status: \"init\",\n isOptimistic: false,\n count: 1,\n }),\n );\n\n observer.next.mockClear();\n\n // Test transition to loading\n subject.next({\n ...basePayload,\n status: \"loading\",\n lastUpdated: Date.now(),\n });\n\n await waitForCall(observer);\n\n expect(observer.next).toHaveBeenCalledWith(\n expect.objectContaining({\n data: [mockEmployee1],\n status: \"loading\",\n isOptimistic: false,\n count: 1,\n }),\n );\n\n subscription.unsubscribe();\n });\n });\n\n describe(\"multiple objects\", () => {\n it(\"should handle multiple objects in collection\", async () => {\n const objectKey1: ObjectCacheKey = {\n type: \"object\",\n otherKeys: [\"Employee\", 1],\n } as ObjectCacheKey;\n\n const objectKey2: ObjectCacheKey = {\n type: \"object\",\n otherKeys: [\"Employee\", 2],\n } as ObjectCacheKey;\n\n const objectKey3: ObjectCacheKey = {\n type: \"object\",\n otherKeys: [\"Employee\", 3],\n } as ObjectCacheKey;\n\n const subjectPayload: SubjectPayload<typeof mockListCacheKey> = {\n cacheKey: mockListCacheKey,\n value: {\n data: [objectKey1, objectKey2, objectKey3],\n },\n status: \"loaded\",\n lastUpdated: Date.now(),\n isOptimistic: false,\n };\n\n const subject = new BehaviorSubject(subjectPayload);\n\n // Mock store.getSubject for all three objects\n vi.mocked(mockSubjects.get).mockImplementation((cacheKey: any) => {\n if (cacheKey === objectKey1) {\n return new BehaviorSubject({\n cacheKey: objectKey1,\n value: mockEmployee1,\n status: \"loaded\",\n lastUpdated: Date.now(),\n isOptimistic: false,\n } as any);\n }\n if (cacheKey === objectKey2) {\n return new BehaviorSubject({\n cacheKey: objectKey2,\n value: mockEmployee2,\n status: \"loaded\",\n lastUpdated: Date.now(),\n isOptimistic: false,\n } as any);\n }\n if (cacheKey === objectKey3) {\n return new BehaviorSubject({\n cacheKey: objectKey3,\n value: mockEmployee3,\n status: \"loaded\",\n lastUpdated: Date.now(),\n isOptimistic: false,\n } as any);\n }\n return new BehaviorSubject(undefined as any);\n }) as any;\n\n const connectable = actualCreateCollectionConnectable(\n subject,\n mockSubjects,\n createPayload,\n );\n\n const subscription = connectable.connect();\n const observer = mockObserver<TestPayload>();\n\n connectable.subscribe(observer);\n\n await waitForCall(observer);\n\n expect(observer.next).toHaveBeenCalledWith(\n expect.objectContaining({\n data: [mockEmployee1, mockEmployee2, mockEmployee3],\n status: \"loaded\",\n isOptimistic: false,\n count: 3,\n }),\n );\n\n subscription.unsubscribe();\n });\n\n it(\"should handle objects being added/removed from collection\", async () => {\n const objectKey1: ObjectCacheKey = {\n type: \"object\",\n otherKeys: [\"Employee\", 1],\n } as ObjectCacheKey;\n\n const objectKey2: ObjectCacheKey = {\n type: \"object\",\n otherKeys: [\"Employee\", 2],\n } as ObjectCacheKey;\n\n // Start with one object\n const initialPayload: SubjectPayload<typeof mockListCacheKey> = {\n cacheKey: mockListCacheKey,\n value: {\n data: [objectKey1],\n },\n status: \"loaded\",\n lastUpdated: Date.now(),\n isOptimistic: false,\n };\n\n const subject = new BehaviorSubject(initialPayload);\n\n vi.mocked(mockSubjects.get).mockImplementation((cacheKey: any) => {\n if (cacheKey === objectKey1) {\n return new BehaviorSubject({\n cacheKey: objectKey1,\n value: mockEmployee1,\n status: \"loaded\",\n lastUpdated: Date.now(),\n isOptimistic: false,\n } as any);\n }\n if (cacheKey === objectKey2) {\n return new BehaviorSubject({\n cacheKey: objectKey2,\n value: mockEmployee2,\n status: \"loaded\",\n lastUpdated: Date.now(),\n isOptimistic: false,\n } as any);\n }\n return new BehaviorSubject(undefined as any);\n }) as any;\n\n const connectable = actualCreateCollectionConnectable(\n subject,\n mockSubjects,\n createPayload,\n );\n\n const subscription = connectable.connect();\n const observer = mockObserver<TestPayload>();\n\n connectable.subscribe(observer);\n\n // First check - single object\n await waitForCall(observer);\n\n expect(observer.next).toHaveBeenCalledWith(\n expect.objectContaining({\n data: [mockEmployee1],\n count: 1,\n }),\n );\n\n observer.next.mockClear();\n\n // Add second object\n subject.next({\n ...initialPayload,\n value: {\n data: [objectKey1, objectKey2],\n },\n lastUpdated: Date.now(),\n });\n\n // Second check - two objects\n await waitForCall(observer);\n\n expect(observer.next).toHaveBeenCalledWith(\n expect.objectContaining({\n data: [mockEmployee1, mockEmployee2],\n count: 2,\n }),\n );\n\n subscription.unsubscribe();\n });\n });\n\n describe(\"subscription behavior\", () => {\n it(\"should support multiple subscribers\", async () => {\n const objectKey1: ObjectCacheKey = {\n type: \"object\",\n otherKeys: [\"Employee\", 1],\n } as ObjectCacheKey;\n\n const subjectPayload: SubjectPayload<typeof mockListCacheKey> = {\n cacheKey: mockListCacheKey,\n value: {\n data: [objectKey1],\n },\n status: \"loaded\",\n lastUpdated: Date.now(),\n isOptimistic: false,\n };\n\n const subject = new BehaviorSubject(subjectPayload);\n\n vi.mocked(mockSubjects.get).mockReturnValue(\n new BehaviorSubject({\n cacheKey: objectKey1,\n value: mockEmployee1,\n status: \"loaded\",\n lastUpdated: Date.now(),\n isOptimistic: false,\n } as any),\n );\n\n const connectable = actualCreateCollectionConnectable(\n subject,\n mockSubjects,\n createPayload,\n );\n\n const subscription = connectable.connect();\n const observer1 = mockObserver<TestPayload>();\n const observer2 = mockObserver<TestPayload>();\n\n connectable.subscribe(observer1);\n connectable.subscribe(observer2);\n\n await waitForCall(observer1);\n await waitForCall(observer2);\n\n // Both observers should receive the data\n expect(observer1.next).toHaveBeenCalledWith(\n expect.objectContaining({\n data: [mockEmployee1],\n count: 1,\n }),\n );\n\n expect(observer2.next).toHaveBeenCalledWith(\n expect.objectContaining({\n data: [mockEmployee1],\n count: 1,\n }),\n );\n\n subscription.unsubscribe();\n });\n\n it(\"should use ReplaySubject behavior (last value replayed)\", async () => {\n const objectKey1: ObjectCacheKey = {\n type: \"object\",\n otherKeys: [\"Employee\", 1],\n } as ObjectCacheKey;\n\n const subjectPayload: SubjectPayload<typeof mockListCacheKey> = {\n cacheKey: mockListCacheKey,\n value: {\n data: [objectKey1],\n },\n status: \"loaded\",\n lastUpdated: Date.now(),\n isOptimistic: false,\n };\n\n const subject = new BehaviorSubject(subjectPayload);\n\n vi.mocked(mockSubjects.get).mockReturnValue(\n new BehaviorSubject({\n cacheKey: objectKey1,\n value: mockEmployee1,\n status: \"loaded\",\n lastUpdated: Date.now(),\n isOptimistic: false,\n } as any),\n );\n\n const connectable = actualCreateCollectionConnectable(\n subject,\n mockSubjects,\n createPayload,\n );\n\n const subscription = connectable.connect();\n const observer1 = mockObserver<TestPayload>();\n\n // Subscribe first observer\n connectable.subscribe(observer1);\n\n await waitForCall(observer1);\n expect(observer1.next).toHaveBeenCalledTimes(1);\n observer1.next.mockClear();\n\n // Subscribe second observer after first has already received data\n const observer2 = mockObserver<TestPayload>();\n connectable.subscribe(observer2);\n\n await waitForCall(observer2);\n\n // Second observer should immediately receive the last value (ReplaySubject behavior)\n expect(observer2.next).toHaveBeenCalledWith(\n expect.objectContaining({\n data: [mockEmployee1],\n count: 1,\n }),\n );\n\n // First observer should not receive additional calls\n expect(observer1.next).not.toHaveBeenCalled();\n\n subscription.unsubscribe();\n });\n });\n\n describe(\"error handling\", () => {\n it(\"should handle store.getSubject returning undefined object entry\", async () => {\n const objectKey1: ObjectCacheKey = {\n type: \"object\",\n otherKeys: [\"Employee\", 1],\n } as ObjectCacheKey;\n\n const subjectPayload: SubjectPayload<typeof mockListCacheKey> = {\n cacheKey: mockListCacheKey,\n value: {\n data: [objectKey1],\n },\n status: \"loaded\",\n lastUpdated: Date.now(),\n isOptimistic: false,\n };\n\n const subject = new BehaviorSubject(subjectPayload);\n\n // Mock store.getSubject to return undefined entry - this creates an object with undefined value\n vi.mocked(mockSubjects.get).mockReturnValue(\n new BehaviorSubject({\n cacheKey: objectKey1,\n value: undefined, // This is the key - undefined value\n status: \"loaded\",\n lastUpdated: Date.now(),\n isOptimistic: false,\n } as any),\n );\n\n const connectable = actualCreateCollectionConnectable(\n subject,\n mockSubjects,\n createPayload,\n );\n\n const subscription = connectable.connect();\n const observer = mockObserver<TestPayload>();\n\n connectable.subscribe(observer);\n\n await waitForCall(observer);\n\n // Should handle undefined object entry gracefully by filtering it out\n expect(observer.next).toHaveBeenCalledWith(\n expect.objectContaining({\n data: [undefined], // The function maps the undefined value from the store\n status: \"loaded\",\n count: 1,\n }),\n );\n\n subscription.unsubscribe();\n });\n\n it(\"should handle createPayload function throwing errors\", async () => {\n const objectKey1: ObjectCacheKey = {\n type: \"object\",\n otherKeys: [\"Employee\", 1],\n } as ObjectCacheKey;\n\n const subjectPayload: SubjectPayload<typeof mockListCacheKey> = {\n cacheKey: mockListCacheKey,\n value: {\n data: [objectKey1],\n },\n status: \"loaded\",\n lastUpdated: Date.now(),\n isOptimistic: false,\n };\n\n const subject = new BehaviorSubject(subjectPayload);\n\n vi.mocked(mockSubjects.get).mockReturnValue(\n new BehaviorSubject({\n cacheKey: objectKey1,\n value: mockEmployee1,\n status: \"loaded\",\n lastUpdated: Date.now(),\n isOptimistic: false,\n } as any),\n );\n\n // Mock createPayload to throw an error\n const errorThrowingCreatePayload = vi.fn(() => {\n throw new Error(\"Test error in createPayload\");\n });\n\n const connectable = actualCreateCollectionConnectable(\n subject,\n mockSubjects,\n errorThrowingCreatePayload,\n );\n\n const subscription = connectable.connect();\n const observer = mockObserver<TestPayload>();\n\n connectable.subscribe(observer);\n\n await waitForCall(observer.error);\n\n // Should call the error handler\n expect(observer.error).toHaveBeenCalledWith(\n expect.objectContaining({\n message: \"Test error in createPayload\",\n }),\n );\n\n subscription.unsubscribe();\n });\n });\n});\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"createCollectionConnectable.test.js","names":["BehaviorSubject","beforeEach","describe","expect","it","vi","createClientMockHelper","mockObserver","waitForCall","createCollectionConnectable","actualCreateCollectionConnectable","mockEmployee1","$apiName","$primaryKey","$objectType","$title","employeeId","fullName","mockEmployee2","mockEmployee3","mockSubjects","createPayload","mockListCacheKey","client","get","fn","type","otherKeys","params","data","resolvedData","status","isOptimistic","lastUpdated","count","length","objectKey1","undefined","__cacheKey","objectKey2","subjectPayload","cacheKey","value","Date","now","subject","mocked","mockImplementation","connectable","subscription","connect","observer","subscribe","next","toHaveBeenCalledWith","objectContaining","unsubscribe","mockReturnValue","basePayload","mockClear","objectKey3","initialPayload","observer1","observer2","toHaveBeenCalledTimes","not","toHaveBeenCalled","errorThrowingCreatePayload","Error","error","message"],"sources":["createCollectionConnectable.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 type { Osdk } from \"@osdk/api\";\nimport type { Employee } from \"@osdk/client.test.ontology\";\nimport { BehaviorSubject } from \"rxjs\";\nimport { beforeEach, describe, expect, it, vi } from \"vitest\";\nimport type { ObjectHolder } from \"../../../object/convertWireToOsdkObjects/ObjectHolder.js\";\nimport type { Status } from \"../../ObservableClient/common.js\";\nimport type { CacheKey } from \"../CacheKey.js\";\nimport type { ObjectCacheKey } from \"../object/ObjectCacheKey.js\";\nimport type { SubjectPayload } from \"../SubjectPayload.js\";\nimport type { Subjects } from \"../Subjects.js\";\nimport {\n createClientMockHelper,\n mockObserver,\n waitForCall,\n} from \"../testUtils.js\";\nimport { createCollectionConnectable as actualCreateCollectionConnectable } from \"./createCollectionConnectable.js\";\n\n// Test payload type for our collection\ninterface TestPayload {\n data: any[];\n status: Status;\n isOptimistic: boolean;\n lastUpdated: number;\n count: number;\n}\n\n// Mock object instances for testing\nconst mockEmployee1: Osdk.Instance<Employee> & ObjectHolder = {\n $apiName: \"Employee\",\n $primaryKey: 1,\n $objectType: \"Employee\",\n $title: \"Employee 1\",\n employeeId: 1,\n fullName: \"John Doe\",\n} as any;\n\nconst mockEmployee2: Osdk.Instance<Employee> & ObjectHolder = {\n $apiName: \"Employee\",\n $primaryKey: 2,\n $objectType: \"Employee\",\n $title: \"Employee 2\",\n employeeId: 2,\n fullName: \"Jane Smith\",\n} as any;\n\nconst mockEmployee3: Osdk.Instance<Employee> & ObjectHolder = {\n $apiName: \"Employee\",\n $primaryKey: 3,\n $objectType: \"Employee\",\n $title: \"Employee 3\",\n employeeId: 3,\n fullName: \"Bob Johnson\",\n} as any;\n\ndescribe(\"createCollectionConnectable\", () => {\n let mockSubjects: Subjects;\n let createPayload: ReturnType<typeof vi.fn>;\n let mockListCacheKey: CacheKey<any, any, any, any>;\n\n beforeEach(() => {\n const { client } = createClientMockHelper();\n\n mockSubjects = {\n get: vi.fn(),\n } as any;\n\n // Mock cache key for list\n mockListCacheKey = {\n type: \"list\",\n otherKeys: [\"Employee\", {}, {}],\n } as CacheKey<any, any, any, any>;\n\n // Create payload function that mimics real usage\n createPayload = vi.fn((params) => ({\n data: params.resolvedData,\n status: params.status,\n isOptimistic: params.isOptimistic,\n lastUpdated: params.lastUpdated,\n count: params.resolvedData.length,\n }));\n });\n\n describe(\"basic functionality\", () => {\n it(\"should create a connectable observable with resolved data\", async () => {\n // Mock object cache keys\n const objectKey1: ObjectCacheKey = {\n type: \"object\",\n otherKeys: [\"Employee\", 1, undefined],\n __cacheKey: {} as ObjectCacheKey[\"__cacheKey\"],\n };\n\n const objectKey2: ObjectCacheKey = {\n type: \"object\",\n otherKeys: [\"Employee\", 2, undefined],\n __cacheKey: {} as ObjectCacheKey[\"__cacheKey\"],\n };\n\n // Create subject payload with mock data\n const subjectPayload: SubjectPayload<typeof mockListCacheKey> = {\n cacheKey: mockListCacheKey,\n value: {\n data: [objectKey1, objectKey2],\n },\n status: \"loaded\",\n lastUpdated: Date.now(),\n isOptimistic: false,\n };\n\n const subject = new BehaviorSubject(subjectPayload);\n\n // Mock store.getSubject to return object observables\n vi.mocked(mockSubjects.get).mockImplementation((cacheKey: any) => {\n if (cacheKey === objectKey1) {\n return new BehaviorSubject({\n cacheKey: objectKey1,\n value: mockEmployee1,\n status: \"loaded\",\n lastUpdated: Date.now(),\n isOptimistic: false,\n } as any);\n }\n if (cacheKey === objectKey2) {\n return new BehaviorSubject({\n cacheKey: objectKey2,\n value: mockEmployee2,\n status: \"loaded\",\n lastUpdated: Date.now(),\n isOptimistic: false,\n } as any);\n }\n return new BehaviorSubject(undefined as any);\n }) as any;\n\n const connectable = actualCreateCollectionConnectable(\n subject,\n mockSubjects,\n createPayload,\n );\n\n // Connect and subscribe\n const subscription = connectable.connect();\n const observer = mockObserver<TestPayload>();\n\n connectable.subscribe(observer);\n\n // Wait for the observable to emit\n await waitForCall(observer);\n\n // Verify the result\n expect(observer.next).toHaveBeenCalledWith(\n expect.objectContaining({\n data: [mockEmployee1, mockEmployee2],\n status: \"loaded\",\n isOptimistic: false,\n count: 2,\n }),\n );\n\n subscription.unsubscribe();\n });\n\n it(\"should handle empty data correctly\", async () => {\n const subjectPayload: SubjectPayload<typeof mockListCacheKey> = {\n cacheKey: mockListCacheKey,\n value: {\n data: [],\n },\n status: \"loaded\",\n lastUpdated: Date.now(),\n isOptimistic: false,\n };\n\n const subject = new BehaviorSubject(subjectPayload);\n\n const connectable = actualCreateCollectionConnectable(\n subject,\n mockSubjects,\n createPayload,\n );\n\n const subscription = connectable.connect();\n const observer = mockObserver<TestPayload>();\n\n connectable.subscribe(observer);\n\n await waitForCall(observer);\n\n expect(observer.next).toHaveBeenCalledWith(\n expect.objectContaining({\n data: [],\n status: \"loaded\",\n isOptimistic: false,\n count: 0,\n }),\n );\n\n subscription.unsubscribe();\n });\n\n it(\"should handle null/undefined data\", async () => {\n const subjectPayload: SubjectPayload<typeof mockListCacheKey> = {\n cacheKey: mockListCacheKey,\n value: {\n data: null as any,\n },\n status: \"loaded\",\n lastUpdated: Date.now(),\n isOptimistic: false,\n };\n\n const subject = new BehaviorSubject(subjectPayload);\n\n const connectable = actualCreateCollectionConnectable(\n subject,\n mockSubjects,\n createPayload,\n );\n\n const subscription = connectable.connect();\n const observer = mockObserver<TestPayload>();\n\n connectable.subscribe(observer);\n\n await waitForCall(observer);\n\n expect(observer.next).toHaveBeenCalledWith(\n expect.objectContaining({\n data: [],\n status: \"loaded\",\n isOptimistic: false,\n count: 0,\n }),\n );\n\n subscription.unsubscribe();\n });\n });\n\n describe(\"optimistic updates\", () => {\n it(\"should propagate optimistic flag correctly\", async () => {\n const objectKey1: ObjectCacheKey = {\n type: \"object\",\n otherKeys: [\"Employee\", 1, undefined],\n __cacheKey: {} as ObjectCacheKey[\"__cacheKey\"],\n };\n\n const subjectPayload: SubjectPayload<typeof mockListCacheKey> = {\n cacheKey: mockListCacheKey,\n value: {\n data: [objectKey1],\n },\n status: \"loading\",\n lastUpdated: Date.now(),\n isOptimistic: true, // This is an optimistic update\n };\n\n const subject = new BehaviorSubject(subjectPayload);\n\n vi.mocked(mockSubjects.get).mockReturnValue(\n new BehaviorSubject({\n cacheKey: objectKey1,\n value: mockEmployee1,\n status: \"loaded\",\n lastUpdated: Date.now(),\n isOptimistic: false,\n } as any),\n );\n\n const connectable = actualCreateCollectionConnectable(\n subject,\n mockSubjects,\n createPayload,\n );\n\n const subscription = connectable.connect();\n const observer = mockObserver<TestPayload>();\n\n connectable.subscribe(observer);\n\n await waitForCall(observer);\n\n expect(observer.next).toHaveBeenCalledWith(\n expect.objectContaining({\n data: [mockEmployee1],\n status: \"loading\",\n isOptimistic: true, // Should preserve optimistic flag\n count: 1,\n }),\n );\n\n subscription.unsubscribe();\n });\n });\n\n describe(\"status transitions\", () => {\n it(\"should handle different status values\", async () => {\n const objectKey1: ObjectCacheKey = {\n type: \"object\",\n otherKeys: [\"Employee\", 1, undefined],\n __cacheKey: {} as ObjectCacheKey[\"__cacheKey\"],\n };\n\n const basePayload: SubjectPayload<typeof mockListCacheKey> = {\n cacheKey: mockListCacheKey,\n value: {\n data: [objectKey1],\n },\n status: \"init\",\n lastUpdated: Date.now(),\n isOptimistic: false,\n };\n\n const subject = new BehaviorSubject(basePayload);\n\n vi.mocked(mockSubjects.get).mockReturnValue(\n new BehaviorSubject({\n cacheKey: objectKey1,\n value: mockEmployee1,\n status: \"loaded\",\n lastUpdated: Date.now(),\n isOptimistic: false,\n } as any),\n );\n\n const connectable = actualCreateCollectionConnectable(\n subject,\n mockSubjects,\n createPayload,\n );\n\n const subscription = connectable.connect();\n const observer = mockObserver<TestPayload>();\n\n connectable.subscribe(observer);\n\n // Wait for initial emission\n await waitForCall(observer);\n\n expect(observer.next).toHaveBeenCalledWith(\n expect.objectContaining({\n data: [mockEmployee1],\n status: \"init\",\n isOptimistic: false,\n count: 1,\n }),\n );\n\n observer.next.mockClear();\n\n // Test transition to loading\n subject.next({\n ...basePayload,\n status: \"loading\",\n lastUpdated: Date.now(),\n });\n\n await waitForCall(observer);\n\n expect(observer.next).toHaveBeenCalledWith(\n expect.objectContaining({\n data: [mockEmployee1],\n status: \"loading\",\n isOptimistic: false,\n count: 1,\n }),\n );\n\n subscription.unsubscribe();\n });\n });\n\n describe(\"multiple objects\", () => {\n it(\"should handle multiple objects in collection\", async () => {\n const objectKey1: ObjectCacheKey = {\n type: \"object\",\n otherKeys: [\"Employee\", 1, undefined],\n __cacheKey: {} as ObjectCacheKey[\"__cacheKey\"],\n };\n\n const objectKey2: ObjectCacheKey = {\n type: \"object\",\n otherKeys: [\"Employee\", 2, undefined],\n __cacheKey: {} as ObjectCacheKey[\"__cacheKey\"],\n };\n\n const objectKey3: ObjectCacheKey = {\n type: \"object\",\n otherKeys: [\"Employee\", 3, undefined],\n __cacheKey: {} as ObjectCacheKey[\"__cacheKey\"],\n };\n\n const subjectPayload: SubjectPayload<typeof mockListCacheKey> = {\n cacheKey: mockListCacheKey,\n value: {\n data: [objectKey1, objectKey2, objectKey3],\n },\n status: \"loaded\",\n lastUpdated: Date.now(),\n isOptimistic: false,\n };\n\n const subject = new BehaviorSubject(subjectPayload);\n\n // Mock store.getSubject for all three objects\n vi.mocked(mockSubjects.get).mockImplementation((cacheKey: any) => {\n if (cacheKey === objectKey1) {\n return new BehaviorSubject({\n cacheKey: objectKey1,\n value: mockEmployee1,\n status: \"loaded\",\n lastUpdated: Date.now(),\n isOptimistic: false,\n } as any);\n }\n if (cacheKey === objectKey2) {\n return new BehaviorSubject({\n cacheKey: objectKey2,\n value: mockEmployee2,\n status: \"loaded\",\n lastUpdated: Date.now(),\n isOptimistic: false,\n } as any);\n }\n if (cacheKey === objectKey3) {\n return new BehaviorSubject({\n cacheKey: objectKey3,\n value: mockEmployee3,\n status: \"loaded\",\n lastUpdated: Date.now(),\n isOptimistic: false,\n } as any);\n }\n return new BehaviorSubject(undefined as any);\n }) as any;\n\n const connectable = actualCreateCollectionConnectable(\n subject,\n mockSubjects,\n createPayload,\n );\n\n const subscription = connectable.connect();\n const observer = mockObserver<TestPayload>();\n\n connectable.subscribe(observer);\n\n await waitForCall(observer);\n\n expect(observer.next).toHaveBeenCalledWith(\n expect.objectContaining({\n data: [mockEmployee1, mockEmployee2, mockEmployee3],\n status: \"loaded\",\n isOptimistic: false,\n count: 3,\n }),\n );\n\n subscription.unsubscribe();\n });\n\n it(\"should handle objects being added/removed from collection\", async () => {\n const objectKey1: ObjectCacheKey = {\n type: \"object\",\n otherKeys: [\"Employee\", 1, undefined],\n __cacheKey: {} as ObjectCacheKey[\"__cacheKey\"],\n };\n\n const objectKey2: ObjectCacheKey = {\n type: \"object\",\n otherKeys: [\"Employee\", 2, undefined],\n __cacheKey: {} as ObjectCacheKey[\"__cacheKey\"],\n };\n\n // Start with one object\n const initialPayload: SubjectPayload<typeof mockListCacheKey> = {\n cacheKey: mockListCacheKey,\n value: {\n data: [objectKey1],\n },\n status: \"loaded\",\n lastUpdated: Date.now(),\n isOptimistic: false,\n };\n\n const subject = new BehaviorSubject(initialPayload);\n\n vi.mocked(mockSubjects.get).mockImplementation((cacheKey: any) => {\n if (cacheKey === objectKey1) {\n return new BehaviorSubject({\n cacheKey: objectKey1,\n value: mockEmployee1,\n status: \"loaded\",\n lastUpdated: Date.now(),\n isOptimistic: false,\n } as any);\n }\n if (cacheKey === objectKey2) {\n return new BehaviorSubject({\n cacheKey: objectKey2,\n value: mockEmployee2,\n status: \"loaded\",\n lastUpdated: Date.now(),\n isOptimistic: false,\n } as any);\n }\n return new BehaviorSubject(undefined as any);\n }) as any;\n\n const connectable = actualCreateCollectionConnectable(\n subject,\n mockSubjects,\n createPayload,\n );\n\n const subscription = connectable.connect();\n const observer = mockObserver<TestPayload>();\n\n connectable.subscribe(observer);\n\n // First check - single object\n await waitForCall(observer);\n\n expect(observer.next).toHaveBeenCalledWith(\n expect.objectContaining({\n data: [mockEmployee1],\n count: 1,\n }),\n );\n\n observer.next.mockClear();\n\n // Add second object\n subject.next({\n ...initialPayload,\n value: {\n data: [objectKey1, objectKey2],\n },\n lastUpdated: Date.now(),\n });\n\n // Second check - two objects\n await waitForCall(observer);\n\n expect(observer.next).toHaveBeenCalledWith(\n expect.objectContaining({\n data: [mockEmployee1, mockEmployee2],\n count: 2,\n }),\n );\n\n subscription.unsubscribe();\n });\n });\n\n describe(\"subscription behavior\", () => {\n it(\"should support multiple subscribers\", async () => {\n const objectKey1: ObjectCacheKey = {\n type: \"object\",\n otherKeys: [\"Employee\", 1, undefined],\n __cacheKey: {} as ObjectCacheKey[\"__cacheKey\"],\n };\n\n const subjectPayload: SubjectPayload<typeof mockListCacheKey> = {\n cacheKey: mockListCacheKey,\n value: {\n data: [objectKey1],\n },\n status: \"loaded\",\n lastUpdated: Date.now(),\n isOptimistic: false,\n };\n\n const subject = new BehaviorSubject(subjectPayload);\n\n vi.mocked(mockSubjects.get).mockReturnValue(\n new BehaviorSubject({\n cacheKey: objectKey1,\n value: mockEmployee1,\n status: \"loaded\",\n lastUpdated: Date.now(),\n isOptimistic: false,\n } as any),\n );\n\n const connectable = actualCreateCollectionConnectable(\n subject,\n mockSubjects,\n createPayload,\n );\n\n const subscription = connectable.connect();\n const observer1 = mockObserver<TestPayload>();\n const observer2 = mockObserver<TestPayload>();\n\n connectable.subscribe(observer1);\n connectable.subscribe(observer2);\n\n await waitForCall(observer1);\n await waitForCall(observer2);\n\n // Both observers should receive the data\n expect(observer1.next).toHaveBeenCalledWith(\n expect.objectContaining({\n data: [mockEmployee1],\n count: 1,\n }),\n );\n\n expect(observer2.next).toHaveBeenCalledWith(\n expect.objectContaining({\n data: [mockEmployee1],\n count: 1,\n }),\n );\n\n subscription.unsubscribe();\n });\n\n it(\"should use ReplaySubject behavior (last value replayed)\", async () => {\n const objectKey1: ObjectCacheKey = {\n type: \"object\",\n otherKeys: [\"Employee\", 1, undefined],\n __cacheKey: {} as ObjectCacheKey[\"__cacheKey\"],\n };\n\n const subjectPayload: SubjectPayload<typeof mockListCacheKey> = {\n cacheKey: mockListCacheKey,\n value: {\n data: [objectKey1],\n },\n status: \"loaded\",\n lastUpdated: Date.now(),\n isOptimistic: false,\n };\n\n const subject = new BehaviorSubject(subjectPayload);\n\n vi.mocked(mockSubjects.get).mockReturnValue(\n new BehaviorSubject({\n cacheKey: objectKey1,\n value: mockEmployee1,\n status: \"loaded\",\n lastUpdated: Date.now(),\n isOptimistic: false,\n } as any),\n );\n\n const connectable = actualCreateCollectionConnectable(\n subject,\n mockSubjects,\n createPayload,\n );\n\n const subscription = connectable.connect();\n const observer1 = mockObserver<TestPayload>();\n\n // Subscribe first observer\n connectable.subscribe(observer1);\n\n await waitForCall(observer1);\n expect(observer1.next).toHaveBeenCalledTimes(1);\n observer1.next.mockClear();\n\n // Subscribe second observer after first has already received data\n const observer2 = mockObserver<TestPayload>();\n connectable.subscribe(observer2);\n\n await waitForCall(observer2);\n\n // Second observer should immediately receive the last value (ReplaySubject behavior)\n expect(observer2.next).toHaveBeenCalledWith(\n expect.objectContaining({\n data: [mockEmployee1],\n count: 1,\n }),\n );\n\n // First observer should not receive additional calls\n expect(observer1.next).not.toHaveBeenCalled();\n\n subscription.unsubscribe();\n });\n });\n\n describe(\"error handling\", () => {\n it(\"should handle store.getSubject returning undefined object entry\", async () => {\n const objectKey1: ObjectCacheKey = {\n type: \"object\",\n otherKeys: [\"Employee\", 1, undefined],\n __cacheKey: {} as ObjectCacheKey[\"__cacheKey\"],\n };\n\n const subjectPayload: SubjectPayload<typeof mockListCacheKey> = {\n cacheKey: mockListCacheKey,\n value: {\n data: [objectKey1],\n },\n status: \"loaded\",\n lastUpdated: Date.now(),\n isOptimistic: false,\n };\n\n const subject = new BehaviorSubject(subjectPayload);\n\n // Mock store.getSubject to return undefined entry - this creates an object with undefined value\n vi.mocked(mockSubjects.get).mockReturnValue(\n new BehaviorSubject({\n cacheKey: objectKey1,\n value: undefined, // This is the key - undefined value\n status: \"loaded\",\n lastUpdated: Date.now(),\n isOptimistic: false,\n } as any),\n );\n\n const connectable = actualCreateCollectionConnectable(\n subject,\n mockSubjects,\n createPayload,\n );\n\n const subscription = connectable.connect();\n const observer = mockObserver<TestPayload>();\n\n connectable.subscribe(observer);\n\n await waitForCall(observer);\n\n // Should handle undefined object entry gracefully by filtering it out\n expect(observer.next).toHaveBeenCalledWith(\n expect.objectContaining({\n data: [undefined], // The function maps the undefined value from the store\n status: \"loaded\",\n count: 1,\n }),\n );\n\n subscription.unsubscribe();\n });\n\n it(\"should handle createPayload function throwing errors\", async () => {\n const objectKey1: ObjectCacheKey = {\n type: \"object\",\n otherKeys: [\"Employee\", 1, undefined],\n __cacheKey: {} as ObjectCacheKey[\"__cacheKey\"],\n };\n\n const subjectPayload: SubjectPayload<typeof mockListCacheKey> = {\n cacheKey: mockListCacheKey,\n value: {\n data: [objectKey1],\n },\n status: \"loaded\",\n lastUpdated: Date.now(),\n isOptimistic: false,\n };\n\n const subject = new BehaviorSubject(subjectPayload);\n\n vi.mocked(mockSubjects.get).mockReturnValue(\n new BehaviorSubject({\n cacheKey: objectKey1,\n value: mockEmployee1,\n status: \"loaded\",\n lastUpdated: Date.now(),\n isOptimistic: false,\n } as any),\n );\n\n // Mock createPayload to throw an error\n const errorThrowingCreatePayload = vi.fn(() => {\n throw new Error(\"Test error in createPayload\");\n });\n\n const connectable = actualCreateCollectionConnectable(\n subject,\n mockSubjects,\n errorThrowingCreatePayload,\n );\n\n const subscription = connectable.connect();\n const observer = mockObserver<TestPayload>();\n\n connectable.subscribe(observer);\n\n await waitForCall(observer.error);\n\n // Should call the error handler\n expect(observer.error).toHaveBeenCalledWith(\n expect.objectContaining({\n message: \"Test error in createPayload\",\n }),\n );\n\n subscription.unsubscribe();\n });\n });\n});\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,61 @@
|
|
|
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 invariant from "tiny-invariant";
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* Evaluates a where clause filter against a value.
|
|
21
|
+
* This is a runtime evaluation function that handles different property types.
|
|
22
|
+
*/
|
|
23
|
+
export function evaluateFilter(f, realValue, expected, strict) {
|
|
24
|
+
switch (f) {
|
|
25
|
+
case "$eq":
|
|
26
|
+
return realValue === expected;
|
|
27
|
+
case "$gt":
|
|
28
|
+
return realValue > expected;
|
|
29
|
+
case "$lt":
|
|
30
|
+
return realValue < expected;
|
|
31
|
+
case "$gte":
|
|
32
|
+
return realValue >= expected;
|
|
33
|
+
case "$lte":
|
|
34
|
+
return realValue <= expected;
|
|
35
|
+
case "$ne":
|
|
36
|
+
return realValue !== expected;
|
|
37
|
+
case "$in":
|
|
38
|
+
return expected.$in.includes(realValue);
|
|
39
|
+
case "$isNull":
|
|
40
|
+
return realValue == null;
|
|
41
|
+
case "$startsWith":
|
|
42
|
+
return realValue.startsWith(expected);
|
|
43
|
+
case "$contains":
|
|
44
|
+
case "$containsAllTerms":
|
|
45
|
+
case "$containsAllTermsInOrder":
|
|
46
|
+
case "$containsAnyTerm":
|
|
47
|
+
case "$intersects":
|
|
48
|
+
case "$within":
|
|
49
|
+
// for these we will strictly say no and loosely say yes
|
|
50
|
+
// so that they don't change things now but may if reloaded
|
|
51
|
+
return !strict;
|
|
52
|
+
default:
|
|
53
|
+
// same thing here as the above cases but we will catch the
|
|
54
|
+
// exhaustive check in dev
|
|
55
|
+
if (process.env.NODE_ENV !== "production") {
|
|
56
|
+
process.env.NODE_ENV !== "production" ? invariant(false, `Unknown where filter ${f}`) : invariant(false);
|
|
57
|
+
}
|
|
58
|
+
return !strict;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
//# sourceMappingURL=evaluateFilter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"evaluateFilter.js","names":["invariant","evaluateFilter","f","realValue","expected","strict","$in","includes","startsWith","process","env","NODE_ENV"],"sources":["evaluateFilter.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 { PossibleWhereClauseFilters } from \"@osdk/api\";\nimport invariant from \"tiny-invariant\";\n\n/**\n * Evaluates a where clause filter against a value.\n * This is a runtime evaluation function that handles different property types.\n */\nexport function evaluateFilter(\n f: PossibleWhereClauseFilters,\n realValue: any,\n expected: any,\n strict: boolean,\n): boolean {\n switch (f) {\n case \"$eq\":\n return realValue === expected;\n case \"$gt\":\n return realValue > expected;\n case \"$lt\":\n return realValue < expected;\n case \"$gte\":\n return realValue >= expected;\n case \"$lte\":\n return realValue <= expected;\n case \"$ne\":\n return realValue !== expected;\n case \"$in\":\n return expected.$in.includes(realValue);\n case \"$isNull\":\n return realValue == null;\n case \"$startsWith\":\n return realValue.startsWith(expected);\n case \"$contains\":\n case \"$containsAllTerms\":\n case \"$containsAllTermsInOrder\":\n case \"$containsAnyTerm\":\n case \"$intersects\":\n case \"$within\":\n // for these we will strictly say no and loosely say yes\n // so that they don't change things now but may if reloaded\n return !strict;\n\n default:\n // same thing here as the above cases but we will catch the\n // exhaustive check in dev\n if (process.env.NODE_ENV !== \"production\") {\n const exhaustive: never = f;\n invariant(false, `Unknown where filter ${f}`);\n }\n return !strict;\n }\n}\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAGA,OAAOA,SAAS,MAAM,gBAAgB;;AAEtC;AACA;AACA;AACA;AACA,OAAO,SAASC,cAAcA,CAC5BC,CAA6B,EAC7BC,SAAc,EACdC,QAAa,EACbC,MAAe,EACN;EACT,QAAQH,CAAC;IACP,KAAK,KAAK;MACR,OAAOC,SAAS,KAAKC,QAAQ;IAC/B,KAAK,KAAK;MACR,OAAOD,SAAS,GAAGC,QAAQ;IAC7B,KAAK,KAAK;MACR,OAAOD,SAAS,GAAGC,QAAQ;IAC7B,KAAK,MAAM;MACT,OAAOD,SAAS,IAAIC,QAAQ;IAC9B,KAAK,MAAM;MACT,OAAOD,SAAS,IAAIC,QAAQ;IAC9B,KAAK,KAAK;MACR,OAAOD,SAAS,KAAKC,QAAQ;IAC/B,KAAK,KAAK;MACR,OAAOA,QAAQ,CAACE,GAAG,CAACC,QAAQ,CAACJ,SAAS,CAAC;IACzC,KAAK,SAAS;MACZ,OAAOA,SAAS,IAAI,IAAI;IAC1B,KAAK,aAAa;MAChB,OAAOA,SAAS,CAACK,UAAU,CAACJ,QAAQ,CAAC;IACvC,KAAK,WAAW;IAChB,KAAK,mBAAmB;IACxB,KAAK,0BAA0B;IAC/B,KAAK,kBAAkB;IACvB,KAAK,aAAa;IAClB,KAAK,SAAS;MACZ;MACA;MACA,OAAO,CAACC,MAAM;IAEhB;MACE;MACA;MACA,IAAII,OAAO,CAACC,GAAG,CAACC,QAAQ,KAAK,YAAY,EAAE;QAEzCF,OAAA,CAAAC,GAAA,CAAAC,QAAA,oBAAAX,SAAS,QAAQ,wBAAwBE,CAAC,EAAE,IAA5CF,SAAS;MACX;MACA,OAAO,CAACK,MAAM;EAClB;AACF","ignoreList":[]}
|
|
@@ -1,2 +1,34 @@
|
|
|
1
|
-
|
|
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
|
+
// Index constants for accessing otherKeys array elements
|
|
18
|
+
export const SOURCE_OBJECT_TYPE_IDX = 0;
|
|
19
|
+
export const SOURCE_PK_IDX = 1;
|
|
20
|
+
export const LINK_NAME_IDX = 2;
|
|
21
|
+
export const WHERE_CLAUSE_IDX = 3;
|
|
22
|
+
export const ORDER_BY_CLAUSE_IDX = 4;
|
|
23
|
+
|
|
24
|
+
/**
|
|
25
|
+
* Storage data format for link query cache entries, similar to ListStorageData
|
|
26
|
+
*/
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* Cache key for a specific link query that uniquely identifies:
|
|
30
|
+
* - The source object type
|
|
31
|
+
* - The source object primary key
|
|
32
|
+
* - The link name
|
|
33
|
+
*/
|
|
2
34
|
//# sourceMappingURL=SpecificLinkCacheKey.js.map
|
|
@@ -1 +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":[]}
|
|
1
|
+
{"version":3,"file":"SpecificLinkCacheKey.js","names":["SOURCE_OBJECT_TYPE_IDX","SOURCE_PK_IDX","LINK_NAME_IDX","WHERE_CLAUSE_IDX","ORDER_BY_CLAUSE_IDX"],"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// Index constants for accessing otherKeys array elements\nexport const SOURCE_OBJECT_TYPE_IDX = 0;\nexport const SOURCE_PK_IDX = 1;\nexport const LINK_NAME_IDX = 2;\nexport const WHERE_CLAUSE_IDX = 3;\nexport const ORDER_BY_CLAUSE_IDX = 4;\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":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AASA;AACA,OAAO,MAAMA,sBAAsB,GAAG,CAAC;AACvC,OAAO,MAAMC,aAAa,GAAG,CAAC;AAC9B,OAAO,MAAMC,aAAa,GAAG,CAAC;AAC9B,OAAO,MAAMC,gBAAgB,GAAG,CAAC;AACjC,OAAO,MAAMC,mBAAmB,GAAG,CAAC;;AAEpC;AACA;AACA;;AAGA;AACA;AACA;AACA;AACA;AACA","ignoreList":[]}
|
|
@@ -17,13 +17,18 @@
|
|
|
17
17
|
import groupBy from "object.groupby";
|
|
18
18
|
import invariant from "tiny-invariant";
|
|
19
19
|
import { ObjectDefRef, UnderlyingOsdkObject } from "../../../object/convertWireToOsdkObjects/InternalSymbols.js";
|
|
20
|
-
import { ListQuery } from "./ListQuery.js";
|
|
20
|
+
import { ListQuery, RDP_IDX } from "./ListQuery.js";
|
|
21
21
|
export class InterfaceListQuery extends ListQuery {
|
|
22
22
|
createObjectSet(store) {
|
|
23
|
-
|
|
23
|
+
const rdpConfig = this.cacheKey.otherKeys[RDP_IDX];
|
|
24
|
+
const objectTypeDef = {
|
|
24
25
|
type: "interface",
|
|
25
26
|
apiName: this.apiName
|
|
26
|
-
}
|
|
27
|
+
};
|
|
28
|
+
if (rdpConfig != null) {
|
|
29
|
+
return store.client(objectTypeDef).withProperties(rdpConfig).where(this.canonicalWhere);
|
|
30
|
+
}
|
|
31
|
+
return store.client(objectTypeDef).where(this.canonicalWhere);
|
|
27
32
|
}
|
|
28
33
|
async revalidateObjectType(apiName) {
|
|
29
34
|
const objectMetadata = await this.store.client.fetchMetadata({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"InterfaceListQuery.js","names":["groupBy","invariant","ObjectDefRef","UnderlyingOsdkObject","ListQuery","InterfaceListQuery","createObjectSet","store","
|
|
1
|
+
{"version":3,"file":"InterfaceListQuery.js","names":["groupBy","invariant","ObjectDefRef","UnderlyingOsdkObject","ListQuery","RDP_IDX","InterfaceListQuery","createObjectSet","store","rdpConfig","cacheKey","otherKeys","objectTypeDef","type","apiName","client","withProperties","where","canonicalWhere","revalidateObjectType","objectMetadata","fetchMetadata","interfaceMap","revalidate","postProcessFetchedData","data","reloadDataAsFullObjects","extractRelevantObjects","changes","matchesApiName","object","added","Array","from","addedObjects","filter","map","$as","modified","modifiedObjects","all","strictMatches","Set","sortaMatches","groups","x","$objectType","objectTypeToPrimaryKeyToObject","Object","fromEntries","Promise","entries","objects","objectDef","primaryKeyApiName","$in","$primaryKey","result","fetchPage","obj","process","env","NODE_ENV"],"sources":["InterfaceListQuery.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, ObjectTypeDefinition, Osdk } from \"@osdk/api\";\nimport groupBy from \"object.groupby\";\nimport invariant from \"tiny-invariant\";\nimport type { Client } from \"../../../Client.js\";\nimport type { InterfaceHolder } from \"../../../object/convertWireToOsdkObjects/InterfaceHolder.js\";\nimport {\n ObjectDefRef,\n UnderlyingOsdkObject,\n} from \"../../../object/convertWireToOsdkObjects/InternalSymbols.js\";\nimport type { ObjectHolder } from \"../../../object/convertWireToOsdkObjects/ObjectHolder.js\";\nimport type { Changes } from \"../Changes.js\";\nimport type { Rdp } from \"../RdpCanonicalizer.js\";\nimport type { SimpleWhereClause } from \"../SimpleWhereClause.js\";\nimport type { Store } from \"../Store.js\";\nimport { ListQuery, RDP_IDX } from \"./ListQuery.js\";\n\ntype ExtractRelevantObjectsResult = Record<\"added\" | \"modified\", {\n all: (ObjectHolder | InterfaceHolder)[];\n strictMatches: Set<(ObjectHolder | InterfaceHolder)>;\n sortaMatches: Set<(ObjectHolder | InterfaceHolder)>;\n}>;\n\nexport class InterfaceListQuery extends ListQuery {\n protected createObjectSet(store: Store): ObjectSet<ObjectTypeDefinition> {\n const rdpConfig = this.cacheKey.otherKeys[RDP_IDX];\n const type: string = \"interface\" as const;\n const objectTypeDef = {\n type,\n apiName: this.apiName,\n } as ObjectTypeDefinition;\n\n if (rdpConfig != null) {\n return store.client(objectTypeDef)\n .withProperties(rdpConfig as Rdp)\n .where(this.canonicalWhere);\n }\n\n return store.client(objectTypeDef)\n .where(this.canonicalWhere);\n }\n\n async revalidateObjectType(apiName: string): Promise<void> {\n const objectMetadata = await this.store.client.fetchMetadata({\n type: \"object\",\n apiName,\n });\n\n if (this.apiName in objectMetadata.interfaceMap) {\n await this.revalidate(/* force */ true);\n }\n }\n\n protected async postProcessFetchedData(\n data: Osdk.Instance<any>[],\n ): Promise<Osdk.Instance<any>[]> {\n return reloadDataAsFullObjects(this.store.client, data);\n }\n\n protected extractRelevantObjects(\n changes: Changes,\n ): ExtractRelevantObjectsResult {\n const matchesApiName = ([, object]: [unknown, ObjectHolder]) => {\n return this.apiName in object[ObjectDefRef].interfaceMap;\n };\n\n const added = Array.from(changes.addedObjects).filter(matchesApiName).map((\n [, object],\n ) => object.$as(this.apiName));\n\n const modified = Array.from(changes.modifiedObjects).filter(matchesApiName)\n .map((\n [, object],\n ) => object.$as(this.apiName));\n\n return {\n added: {\n all: added,\n strictMatches: new Set(),\n sortaMatches: new Set(),\n },\n modified: {\n all: modified,\n strictMatches: new Set(),\n sortaMatches: new Set(),\n },\n };\n }\n}\n\n// Hopefully this can go away when we can just request the full object properties on first load\nasync function reloadDataAsFullObjects(\n client: Client,\n data: Osdk.Instance<any>[],\n) {\n const groups = groupBy(data, (x) => x.$objectType);\n const objectTypeToPrimaryKeyToObject = Object.fromEntries(\n await Promise.all(\n Object.entries(groups).map<\n Promise<\n [\n /** objectType **/ string,\n Record<string | number, Osdk.Instance<ObjectTypeDefinition>>,\n ]\n >\n >(async ([apiName, objects]) => {\n // to keep InternalSimpleOsdkInstance simple, we make both the `ObjectDefRef` and\n // the `InterfaceDefRef` optional but we know that the right one is on there\n // thus we can `!`\n const objectDef = (objects[0] as ObjectHolder)[UnderlyingOsdkObject][\n ObjectDefRef\n ]!;\n const where: SimpleWhereClause = {\n [objectDef.primaryKeyApiName]: {\n $in: objects.map(x => x.$primaryKey),\n },\n };\n\n const result = await client(\n objectDef as ObjectTypeDefinition,\n ).where(\n where as Parameters<ObjectSet<ObjectTypeDefinition>[\"where\"]>[0],\n ).fetchPage();\n return [\n apiName,\n Object.fromEntries(result.data.map(\n x => [x.$primaryKey, x],\n )),\n ];\n }),\n ),\n );\n\n data = data.map((obj) => {\n invariant(\n objectTypeToPrimaryKeyToObject[obj.$objectType][obj.$primaryKey],\n `Could not find object ${obj.$objectType} ${obj.$primaryKey}`,\n );\n return objectTypeToPrimaryKeyToObject[obj.$objectType][obj.$primaryKey];\n });\n\n return data;\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,2 +1,25 @@
|
|
|
1
|
-
|
|
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
|
+
// Index constants for accessing otherKeys array elements
|
|
18
|
+
export const TYPE_IDX = 0;
|
|
19
|
+
export const API_NAME_IDX = 1;
|
|
20
|
+
export const WHERE_IDX = 2;
|
|
21
|
+
export const ORDER_BY_IDX = 3;
|
|
22
|
+
export const RDP_IDX = 4;
|
|
23
|
+
export const INTERSECT_IDX = 5;
|
|
24
|
+
export const PIVOT_IDX = 6;
|
|
2
25
|
//# sourceMappingURL=ListCacheKey.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ListCacheKey.js","names":[],"sources":["ListCacheKey.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 { SimpleWhereClause } from \"../SimpleWhereClause.js\";\nimport type { ListQuery } from \"./ListQuery.js\";\n\nexport interface ListStorageData extends CollectionStorageData {}\n\nexport interface ListCacheKey extends\n CacheKey<\n \"list\",\n ListStorageData,\n ListQuery,\n [\n type: \"object\" | \"interface\",\n apiName: string,\n whereClause: Canonical<SimpleWhereClause>,\n orderByClause: Canonical<Record<string, \"asc\" | \"desc\" | undefined>>,\n ]\n >\n{\n}\n"],"mappings":"","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"ListCacheKey.js","names":["TYPE_IDX","API_NAME_IDX","WHERE_IDX","ORDER_BY_IDX","RDP_IDX","INTERSECT_IDX","PIVOT_IDX"],"sources":["ListCacheKey.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 { PivotInfo } from \"../PivotCanonicalizer.js\";\nimport type { Rdp } from \"../RdpCanonicalizer.js\";\nimport type { SimpleWhereClause } from \"../SimpleWhereClause.js\";\nimport type { ListQuery } from \"./ListQuery.js\";\n\n// Index constants for accessing otherKeys array elements\nexport const TYPE_IDX = 0;\nexport const API_NAME_IDX = 1;\nexport const WHERE_IDX = 2;\nexport const ORDER_BY_IDX = 3;\nexport const RDP_IDX = 4;\nexport const INTERSECT_IDX = 5;\nexport const PIVOT_IDX = 6;\n\nexport interface ListStorageData extends CollectionStorageData {}\n\nexport interface ListCacheKey extends\n CacheKey<\n \"list\",\n ListStorageData,\n ListQuery,\n [\n type: \"object\" | \"interface\",\n apiName: string,\n whereClause: Canonical<SimpleWhereClause>,\n orderByClause: Canonical<Record<string, \"asc\" | \"desc\" | undefined>>,\n rdpConfig?: Canonical<Rdp> | undefined,\n intersectWith?:\n | Canonical<Array<Canonical<SimpleWhereClause>>>\n | undefined,\n pivotInfo?: Canonical<PivotInfo> | undefined,\n ]\n >\n{\n}\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAUA;AACA,OAAO,MAAMA,QAAQ,GAAG,CAAC;AACzB,OAAO,MAAMC,YAAY,GAAG,CAAC;AAC7B,OAAO,MAAMC,SAAS,GAAG,CAAC;AAC1B,OAAO,MAAMC,YAAY,GAAG,CAAC;AAC7B,OAAO,MAAMC,OAAO,GAAG,CAAC;AACxB,OAAO,MAAMC,aAAa,GAAG,CAAC;AAC9B,OAAO,MAAMC,SAAS,GAAG,CAAC","ignoreList":[]}
|