@osdk/client 2.6.0-beta.2 → 2.6.0-beta.4
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 +28 -0
- package/build/browser/derivedProperties/createWithPropertiesObjectSet.js +2 -1
- package/build/browser/derivedProperties/createWithPropertiesObjectSet.js.map +1 -1
- 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 +30 -99
- package/build/browser/internal/conversions/modernToLegacyWhereClause.js.map +1 -1
- package/build/browser/internal/conversions/modernToLegacyWhereClause.test.js +139 -0
- package/build/browser/internal/conversions/modernToLegacyWhereClause.test.js.map +1 -1
- package/build/browser/object/convertWireToOsdkObjects/createOsdkInterface.js +1 -1
- package/build/browser/object/convertWireToOsdkObjects/createOsdkInterface.js.map +1 -1
- package/build/browser/object/fetchPage.js +1 -1
- package/build/browser/object/fetchPage.js.map +1 -1
- package/build/browser/object/formatting/applyPropertyFormatter.js +7 -1
- package/build/browser/object/formatting/applyPropertyFormatter.js.map +1 -1
- package/build/browser/object/formatting/applyPropertyFormatter.test.js +305 -2
- package/build/browser/object/formatting/applyPropertyFormatter.test.js.map +1 -1
- package/build/browser/object/formatting/formatDateTime.js +158 -0
- package/build/browser/object/formatting/formatDateTime.js.map +1 -0
- package/build/browser/objectSet/ObjectSetListenerWebsocket.js +17 -0
- package/build/browser/objectSet/ObjectSetListenerWebsocket.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/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/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 +160 -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/base-list/BaseListQuery.js +12 -3
- 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 +22 -1
- package/build/browser/observable/internal/list/ListCacheKey.js.map +1 -1
- package/build/browser/observable/internal/list/ListQuery.js +19 -13
- package/build/browser/observable/internal/list/ListQuery.js.map +1 -1
- package/build/browser/observable/internal/list/ListsHelper.js +12 -8
- package/build/browser/observable/internal/list/ListsHelper.js.map +1 -1
- package/build/browser/observable/internal/list/ObjectListQuery.js +10 -1
- 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/testUtils.js +3 -2
- package/build/browser/observable/internal/testUtils.js.map +1 -1
- package/build/browser/observable/internal/utils/rdpFieldOperations.js +83 -0
- package/build/browser/observable/internal/utils/rdpFieldOperations.js.map +1 -0
- package/build/browser/util/UserAgent.js +2 -2
- package/build/cjs/{chunk-X7WMWKLM.cjs → chunk-7567LSZD.cjs} +192 -55
- package/build/cjs/chunk-7567LSZD.cjs.map +1 -0
- package/build/cjs/{chunk-6L3MX4LH.cjs → chunk-VNLY3YOJ.cjs} +241 -196
- package/build/cjs/chunk-VNLY3YOJ.cjs.map +1 -0
- package/build/cjs/index.cjs +8 -8
- package/build/cjs/index.d.cts +1 -1
- package/build/cjs/public/internal.cjs +8 -8
- package/build/cjs/public/unstable-do-not-use.cjs +633 -208
- package/build/cjs/public/unstable-do-not-use.cjs.map +1 -1
- package/build/cjs/public/unstable-do-not-use.d.cts +6 -5
- package/build/esm/derivedProperties/createWithPropertiesObjectSet.js +2 -1
- package/build/esm/derivedProperties/createWithPropertiesObjectSet.js.map +1 -1
- 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 +30 -99
- package/build/esm/internal/conversions/modernToLegacyWhereClause.js.map +1 -1
- package/build/esm/internal/conversions/modernToLegacyWhereClause.test.js +139 -0
- package/build/esm/internal/conversions/modernToLegacyWhereClause.test.js.map +1 -1
- package/build/esm/object/convertWireToOsdkObjects/createOsdkInterface.js +1 -1
- package/build/esm/object/convertWireToOsdkObjects/createOsdkInterface.js.map +1 -1
- package/build/esm/object/fetchPage.js +1 -1
- package/build/esm/object/fetchPage.js.map +1 -1
- package/build/esm/object/formatting/applyPropertyFormatter.js +7 -1
- package/build/esm/object/formatting/applyPropertyFormatter.js.map +1 -1
- package/build/esm/object/formatting/applyPropertyFormatter.test.js +305 -2
- package/build/esm/object/formatting/applyPropertyFormatter.test.js.map +1 -1
- package/build/esm/object/formatting/formatDateTime.js +158 -0
- package/build/esm/object/formatting/formatDateTime.js.map +1 -0
- package/build/esm/objectSet/ObjectSetListenerWebsocket.js +17 -0
- package/build/esm/objectSet/ObjectSetListenerWebsocket.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/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/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 +160 -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/base-list/BaseListQuery.js +12 -3
- 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 +22 -1
- package/build/esm/observable/internal/list/ListCacheKey.js.map +1 -1
- package/build/esm/observable/internal/list/ListQuery.js +19 -13
- package/build/esm/observable/internal/list/ListQuery.js.map +1 -1
- package/build/esm/observable/internal/list/ListsHelper.js +12 -8
- package/build/esm/observable/internal/list/ListsHelper.js.map +1 -1
- package/build/esm/observable/internal/list/ObjectListQuery.js +10 -1
- 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/testUtils.js +3 -2
- package/build/esm/observable/internal/testUtils.js.map +1 -1
- package/build/esm/observable/internal/utils/rdpFieldOperations.js +83 -0
- package/build/esm/observable/internal/utils/rdpFieldOperations.js.map +1 -0
- package/build/esm/util/UserAgent.js +2 -2
- package/build/types/index.d.ts +1 -1
- 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/formatting/applyPropertyFormatter.d.ts.map +1 -1
- package/build/types/object/formatting/formatDateTime.d.ts +6 -0
- package/build/types/object/formatting/formatDateTime.d.ts.map +1 -0
- package/build/types/observable/ObservableClient.d.ts +15 -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/OrderByCanonicalizer.d.ts.map +1 -1
- 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 +4 -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/base-list/BaseListQuery.d.ts +6 -0
- 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 +7 -1
- package/build/types/observable/internal/list/ListCacheKey.d.ts.map +1 -1
- package/build/types/observable/internal/list/ListQuery.d.ts +7 -7
- package/build/types/observable/internal/list/ListQuery.d.ts.map +1 -1
- package/build/types/observable/internal/list/ListsHelper.d.ts +3 -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/testUtils.d.ts.map +1 -1
- package/build/types/observable/internal/utils/rdpFieldOperations.d.ts +5 -0
- package/build/types/observable/internal/utils/rdpFieldOperations.d.ts.map +1 -0
- package/package.json +9 -9
- package/build/cjs/chunk-6L3MX4LH.cjs.map +0 -1
- package/build/cjs/chunk-X7WMWKLM.cjs.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"modernToLegacyWhereClause.js","names":["DistanceUnitMapping","invariant","extractNamespace","fqApiName","last","lastIndexOf","undefined","slice","modernToLegacyWhereClause","whereClause","objectOrInterface","type","value","$and","map","clause","$or","$not","parts","Object","entries","length","handleWherePair","v","makeGeoFilterBbox","bbox","filterType","propertyIdentifier","field","topLeft","coordinates","bottomRight","makeGeoFilterPolygon","fieldName","filter","structFieldSelector","process","env","NODE_ENV","propertyApiName","fullyQualifyPropName","keysOfFilter","keys","hasDollarSign","some","key","startsWith","structFilter","structFieldApiName","firstKey","withinBody","Array","isArray","$bbox","$distance","$of","center","distance","unit","$polygon","intersectsBody","substring","fuzzy","objApiNamespace","apiName","fieldApiNamespace","fieldShortName"],"sources":["modernToLegacyWhereClause.ts"],"sourcesContent":["/*\n * Copyright 2023 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport type {\n GeoFilterOptions,\n ObjectOrInterfaceDefinition,\n PossibleWhereClauseFilters,\n WhereClause,\n} from \"@osdk/api\";\nimport { DistanceUnitMapping } from \"@osdk/api\";\n\nimport type {\n PropertyIdentifier,\n SearchJsonQueryV2,\n} from \"@osdk/foundry.ontologies\";\nimport type { BBox, Position } from \"geojson\";\nimport invariant from \"tiny-invariant\";\n\nexport function extractNamespace(\n fqApiName: string,\n): [string | undefined, string] {\n const last = fqApiName.lastIndexOf(\".\");\n if (last === -1) return [undefined, fqApiName];\n return [fqApiName.slice(0, last), fqApiName.slice(last + 1)];\n}\n\n/** @internal */\nexport function modernToLegacyWhereClause<\n T extends ObjectOrInterfaceDefinition,\n>(\n whereClause: WhereClause<T>,\n objectOrInterface: T,\n): SearchJsonQueryV2 {\n if (\"$and\" in whereClause) {\n return {\n type: \"and\",\n value: (whereClause.$and as WhereClause<T>[]).map(\n (clause) => modernToLegacyWhereClause(clause, objectOrInterface),\n ),\n };\n } else if (\"$or\" in whereClause) {\n return {\n type: \"or\",\n value: (whereClause.$or as WhereClause<T>[]).map(\n (clause) => modernToLegacyWhereClause(clause, objectOrInterface),\n ),\n };\n } else if (\"$not\" in whereClause) {\n return {\n type: \"not\",\n value: modernToLegacyWhereClause(\n whereClause.$not as WhereClause<T>,\n objectOrInterface,\n ),\n };\n }\n\n const parts = Object.entries(whereClause);\n\n if (parts.length === 1) {\n return handleWherePair(parts[0], objectOrInterface);\n }\n\n return {\n type: \"and\",\n value: parts.map<SearchJsonQueryV2>(\n v => handleWherePair(v, objectOrInterface),\n ),\n };\n}\n\nfunction makeGeoFilterBbox(\n bbox: BBox,\n filterType: \"$within\" | \"$intersects\",\n propertyIdentifier?: PropertyIdentifier,\n field?: string,\n): SearchJsonQueryV2 {\n return {\n type: filterType === \"$within\"\n ? \"withinBoundingBox\"\n : \"intersectsBoundingBox\",\n /**\n * This is a bit ugly, but did this so that propertyIdentifier only shows up in the return object if its defined,\n * this makes it so we don't need to go update our entire test bed either to include a field which may change in near future.\n * Once we solidify that this is the way forward, I can remove field and clean this up\n */\n ...(propertyIdentifier != null && { propertyIdentifier }),\n field,\n value: {\n topLeft: {\n type: \"Point\",\n coordinates: [bbox[0], bbox[3]],\n },\n bottomRight: {\n type: \"Point\",\n coordinates: [bbox[2], bbox[1]],\n },\n },\n };\n}\n\nfunction makeGeoFilterPolygon(\n coordinates: Position[][],\n filterType: \"intersectsPolygon\" | \"withinPolygon\",\n propertyIdentifier?: PropertyIdentifier,\n field?: string,\n): SearchJsonQueryV2 {\n return {\n type: filterType,\n ...(propertyIdentifier != null && { propertyIdentifier }),\n field,\n value: {\n type: \"Polygon\",\n coordinates,\n },\n };\n}\n\nfunction handleWherePair(\n [fieldName, filter]: [string, any],\n objectOrInterface: ObjectOrInterfaceDefinition,\n structFieldSelector?: { propertyApiName: string; structFieldApiName: string },\n): SearchJsonQueryV2 {\n invariant(\n filter != null,\n \"Defined key values are only allowed when they are not undefined.\",\n );\n\n const propertyIdentifier: PropertyIdentifier | undefined =\n structFieldSelector != null\n ? {\n type: \"structField\",\n ...structFieldSelector,\n propertyApiName: fullyQualifyPropName(\n structFieldSelector.propertyApiName,\n objectOrInterface,\n ),\n }\n : undefined;\n const field = structFieldSelector == null\n ? fullyQualifyPropName(fieldName, objectOrInterface)\n : undefined;\n\n if (\n typeof filter === \"string\" || typeof filter === \"number\"\n || typeof filter === \"boolean\"\n ) {\n propertyIdentifier;\n return {\n type: \"eq\",\n ...(propertyIdentifier != null\n && { propertyIdentifier }),\n field,\n value: filter,\n };\n }\n\n const keysOfFilter = Object.keys(filter);\n\n // If any of the keys start with `$` then they must be the only one.\n // e.g. `where({ name: { $eq: \"foo\", $ne: \"bar\" } })` is invalid currently\n const hasDollarSign = keysOfFilter.some((key) => key.startsWith(\"$\"));\n invariant(\n !hasDollarSign\n || keysOfFilter.length === 1,\n \"A WhereClause Filter with multiple clauses/fields is not allowed. Instead, use an 'or'/'and' clause to combine multiple filters.\",\n );\n\n if (!hasDollarSign) {\n const structFilter = Object.entries(filter);\n invariant(\n structFilter.length === 1,\n \"Cannot filter on more than one struct field in the same clause, need to use an and clause\",\n );\n const structFieldApiName = keysOfFilter[0];\n return handleWherePair(Object.entries(filter)[0], objectOrInterface, {\n propertyApiName: fieldName,\n structFieldApiName,\n });\n }\n\n const firstKey = keysOfFilter[0] as PossibleWhereClauseFilters;\n invariant(filter[firstKey] != null);\n\n if (firstKey === \"$ne\") {\n return {\n type: \"not\",\n value: {\n type: \"eq\",\n ...(propertyIdentifier != null && { propertyIdentifier }),\n field,\n value: filter[firstKey],\n },\n };\n }\n\n if (firstKey === \"$within\") {\n const withinBody = filter[firstKey] as GeoFilterOptions[\"$within\"];\n\n if (Array.isArray(withinBody)) {\n return makeGeoFilterBbox(withinBody, firstKey, propertyIdentifier, field);\n } else if (\"$bbox\" in withinBody && withinBody.$bbox != null) {\n return makeGeoFilterBbox(\n withinBody.$bbox,\n firstKey,\n propertyIdentifier,\n field,\n );\n } else if (\n (\"$distance\" in withinBody && \"$of\" in withinBody)\n && withinBody.$distance != null\n && withinBody.$of != null\n ) {\n return {\n type: \"withinDistanceOf\",\n ...(propertyIdentifier != null && { propertyIdentifier }),\n field,\n value: {\n center: Array.isArray(withinBody.$of)\n ? {\n type: \"Point\",\n coordinates: withinBody.$of,\n }\n : withinBody.$of,\n distance: {\n value: withinBody.$distance[0],\n unit: DistanceUnitMapping[withinBody.$distance[1]],\n },\n },\n };\n } else {\n const coordinates = (\"$polygon\" in withinBody)\n ? withinBody.$polygon\n : withinBody.coordinates;\n return makeGeoFilterPolygon(\n coordinates,\n \"withinPolygon\",\n propertyIdentifier,\n fieldName,\n );\n }\n }\n if (firstKey === \"$intersects\") {\n const intersectsBody = filter[firstKey] as GeoFilterOptions[\"$intersects\"];\n if (Array.isArray(intersectsBody)) {\n return makeGeoFilterBbox(\n intersectsBody,\n firstKey,\n propertyIdentifier,\n field,\n );\n } else if (\"$bbox\" in intersectsBody && intersectsBody.$bbox != null) {\n return makeGeoFilterBbox(\n intersectsBody.$bbox,\n firstKey,\n propertyIdentifier,\n field,\n );\n } else {\n const coordinates = (\"$polygon\" in intersectsBody)\n ? intersectsBody.$polygon\n : intersectsBody.coordinates;\n return makeGeoFilterPolygon(\n coordinates,\n \"intersectsPolygon\",\n propertyIdentifier,\n field,\n );\n }\n }\n\n if (firstKey === \"$containsAllTerms\" || firstKey === \"$containsAnyTerm\") {\n return {\n type: firstKey.substring(1) as DropDollarSign<typeof firstKey>,\n ...(propertyIdentifier != null && { propertyIdentifier }),\n field,\n value: typeof filter[firstKey] === \"string\"\n ? filter[firstKey]\n : filter[firstKey][\"term\"],\n fuzzy: typeof filter[firstKey] === \"string\"\n ? false\n : filter[firstKey][\"fuzzySearch\"] ?? false,\n };\n }\n\n if (firstKey === \"$contains\" && filter[firstKey] instanceof Object) {\n const structFilter: [string, any][] = Object.entries(filter[firstKey]);\n invariant(\n structFilter.length === 1,\n \"Cannot filter on more than one struct field in the same clause, need to use an and clause\",\n );\n const structFieldApiName = structFilter[0][0];\n invariant(\n structFilter[0][1] != null\n && Object.keys(structFilter[0][1]).length === 1\n && \"$eq\" in structFilter[0][1],\n \"Cannot filter on a struct field in an array with anything other than a single $eq\",\n );\n return {\n type: \"contains\",\n propertyIdentifier: {\n type: \"structField\",\n propertyApiName: fieldName,\n structFieldApiName,\n },\n value: structFilter[0][1][\"$eq\"],\n };\n }\n\n return {\n type: firstKey.substring(1) as DropDollarSign<typeof firstKey>,\n ...(propertyIdentifier != null && { propertyIdentifier }),\n field,\n value: filter[firstKey] as any,\n };\n}\n\ntype DropDollarSign<T extends `$${string}`> = T extends `$${infer U}` ? U\n : never;\n\nfunction fullyQualifyPropName(\n fieldName: string,\n objectOrInterface: ObjectOrInterfaceDefinition,\n) {\n if (objectOrInterface.type === \"interface\") {\n const [objApiNamespace] = extractNamespace(objectOrInterface.apiName);\n const [fieldApiNamespace, fieldShortName] = extractNamespace(fieldName);\n return (fieldApiNamespace == null && objApiNamespace != null)\n ? `${objApiNamespace}.${fieldShortName}`\n : fieldName;\n }\n return fieldName;\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"modernToLegacyWhereClause.js","names":["invariant","fullyQualifyPropName","makeGeoFilterIntersects","makeGeoFilterWithin","isAndClause","whereClause","$and","undefined","isOrClause","$or","isNotClause","$not","modernToLegacyWhereClause","objectOrInterface","rdpNames","type","value","map","clause","parts","Object","entries","length","handleWherePair","v","fieldName","filter","structFieldSelector","process","env","NODE_ENV","isRdp","has","propertyIdentifier","apiName","propertyApiName","field","keysOfFilter","keys","hasDollarSign","some","key","startsWith","structFilter","structFieldApiName","firstKey","substring","fuzzy"],"sources":["modernToLegacyWhereClause.ts"],"sourcesContent":["/*\n * Copyright 2023 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport type {\n AndWhereClause,\n NotWhereClause,\n ObjectOrInterfaceDefinition,\n OrWhereClause,\n PossibleWhereClauseFilters,\n SimplePropertyDef,\n WhereClause,\n} from \"@osdk/api\";\n\nimport type {\n PropertyIdentifier,\n SearchJsonQueryV2,\n} from \"@osdk/foundry.ontologies\";\nimport invariant from \"tiny-invariant\";\nimport { fullyQualifyPropName } from \"./fullyQualifyPropName.js\";\nimport { makeGeoFilterIntersects } from \"./makeGeoFilterIntersects.js\";\nimport { makeGeoFilterWithin } from \"./makeGeoFilterWithin.js\";\n\ntype DropDollarSign<T extends `$${string}`> = T extends `$${infer U}` ? U\n : never;\n\nfunction isAndClause<\n T extends ObjectOrInterfaceDefinition,\n RDPs extends Record<string, SimplePropertyDef> = {},\n>(\n whereClause: WhereClause<T, RDPs>,\n): whereClause is AndWhereClause<T, RDPs> {\n return \"$and\" in whereClause && whereClause.$and !== undefined;\n}\n\nfunction isOrClause<\n T extends ObjectOrInterfaceDefinition,\n RDPs extends Record<string, SimplePropertyDef> = {},\n>(\n whereClause: WhereClause<T, RDPs>,\n): whereClause is OrWhereClause<T, RDPs> {\n return \"$or\" in whereClause && whereClause.$or !== undefined;\n}\n\nfunction isNotClause<\n T extends ObjectOrInterfaceDefinition,\n RDPs extends Record<string, SimplePropertyDef> = {},\n>(\n whereClause: WhereClause<T, RDPs>,\n): whereClause is NotWhereClause<T, RDPs> {\n return \"$not\" in whereClause && whereClause.$not !== undefined;\n}\n\n/** @internal */\nexport function modernToLegacyWhereClause<\n T extends ObjectOrInterfaceDefinition,\n RDPs extends Record<string, SimplePropertyDef> = {},\n>(\n whereClause: WhereClause<T, RDPs>,\n objectOrInterface: T,\n rdpNames?: Set<string>,\n): SearchJsonQueryV2 {\n if (isAndClause(whereClause)) {\n return {\n type: \"and\",\n value: (whereClause.$and as WhereClause<T, RDPs>[]).map(\n (clause) =>\n modernToLegacyWhereClause(clause, objectOrInterface, rdpNames),\n ),\n };\n } else if (isOrClause(whereClause)) {\n return {\n type: \"or\",\n value: (whereClause.$or as WhereClause<T, RDPs>[]).map(\n (clause) =>\n modernToLegacyWhereClause(clause, objectOrInterface, rdpNames),\n ),\n };\n } else if (isNotClause(whereClause)) {\n return {\n type: \"not\",\n value: modernToLegacyWhereClause(\n whereClause.$not as WhereClause<T, RDPs>,\n objectOrInterface,\n rdpNames,\n ),\n };\n }\n\n const parts = Object.entries(whereClause);\n\n if (parts.length === 1) {\n return handleWherePair(parts[0], objectOrInterface, undefined, rdpNames);\n }\n\n return {\n type: \"and\",\n value: parts.map<SearchJsonQueryV2>(\n v => handleWherePair(v, objectOrInterface, undefined, rdpNames),\n ),\n };\n}\n\nfunction handleWherePair(\n [fieldName, filter]: [string, any],\n objectOrInterface: ObjectOrInterfaceDefinition,\n structFieldSelector?: { propertyApiName: string; structFieldApiName: string },\n rdpNames?: Set<string>,\n): SearchJsonQueryV2 {\n invariant(\n filter != null,\n \"Defined key values are only allowed when they are not undefined.\",\n );\n\n const isRdp = !structFieldSelector && rdpNames?.has(fieldName);\n\n const propertyIdentifier: PropertyIdentifier | undefined = isRdp\n ? {\n type: \"property\",\n apiName: fieldName,\n }\n : structFieldSelector != null\n ? {\n type: \"structField\",\n ...structFieldSelector,\n propertyApiName: fullyQualifyPropName(\n structFieldSelector.propertyApiName,\n objectOrInterface,\n ),\n }\n : undefined;\n\n const field = !isRdp && structFieldSelector == null\n ? fullyQualifyPropName(fieldName, objectOrInterface)\n : undefined;\n\n if (\n typeof filter === \"string\" || typeof filter === \"number\"\n || typeof filter === \"boolean\"\n ) {\n propertyIdentifier;\n return {\n type: \"eq\",\n ...(propertyIdentifier != null\n && { propertyIdentifier }),\n field,\n value: filter,\n };\n }\n\n const keysOfFilter = Object.keys(filter);\n\n // If any of the keys start with `$` then they must be the only one.\n // e.g. `where({ name: { $eq: \"foo\", $ne: \"bar\" } })` is invalid currently\n const hasDollarSign = keysOfFilter.some((key) => key.startsWith(\"$\"));\n invariant(\n !hasDollarSign\n || keysOfFilter.length === 1,\n \"A WhereClause Filter with multiple clauses/fields is not allowed. Instead, use an 'or'/'and' clause to combine multiple filters.\",\n );\n\n if (!hasDollarSign) {\n const structFilter = Object.entries(filter);\n invariant(\n structFilter.length === 1,\n \"Cannot filter on more than one struct field in the same clause, need to use an and clause\",\n );\n const structFieldApiName = keysOfFilter[0];\n return handleWherePair(Object.entries(filter)[0], objectOrInterface, {\n propertyApiName: fieldName,\n structFieldApiName,\n }, rdpNames);\n }\n\n const firstKey = keysOfFilter[0] as PossibleWhereClauseFilters;\n invariant(filter[firstKey] != null);\n\n if (firstKey === \"$ne\") {\n return {\n type: \"not\",\n value: {\n type: \"eq\",\n ...(propertyIdentifier != null && { propertyIdentifier }),\n field,\n value: filter[firstKey],\n },\n };\n }\n\n if (firstKey === \"$within\") {\n return makeGeoFilterWithin(filter[firstKey], propertyIdentifier, field);\n }\n if (firstKey === \"$intersects\") {\n return makeGeoFilterIntersects(filter[firstKey], propertyIdentifier, field);\n }\n\n if (firstKey === \"$containsAllTerms\" || firstKey === \"$containsAnyTerm\") {\n return {\n type: firstKey.substring(1) as DropDollarSign<typeof firstKey>,\n ...(propertyIdentifier != null && { propertyIdentifier }),\n field,\n value: typeof filter[firstKey] === \"string\"\n ? filter[firstKey]\n : filter[firstKey][\"term\"],\n fuzzy: typeof filter[firstKey] === \"string\"\n ? false\n : filter[firstKey][\"fuzzySearch\"] ?? false,\n };\n }\n\n if (firstKey === \"$contains\" && filter[firstKey] instanceof Object) {\n const structFilter: [string, any][] = Object.entries(filter[firstKey]);\n invariant(\n structFilter.length === 1,\n \"Cannot filter on more than one struct field in the same clause, need to use an and clause\",\n );\n const structFieldApiName = structFilter[0][0];\n invariant(\n structFilter[0][1] != null\n && Object.keys(structFilter[0][1]).length === 1\n && \"$eq\" in structFilter[0][1],\n \"Cannot filter on a struct field in an array with anything other than a single $eq\",\n );\n return {\n type: \"contains\",\n propertyIdentifier: {\n type: \"structField\",\n propertyApiName: fieldName,\n structFieldApiName,\n },\n value: structFilter[0][1][\"$eq\"],\n };\n }\n\n return {\n type: firstKey.substring(1) as DropDollarSign<typeof firstKey>,\n ...(propertyIdentifier != null && { propertyIdentifier }),\n field,\n value: filter[firstKey] as any,\n };\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -983,5 +983,144 @@ describe(modernToLegacyWhereClause, () => {
|
|
|
983
983
|
});
|
|
984
984
|
});
|
|
985
985
|
});
|
|
986
|
+
describe("RDP properties", () => {
|
|
987
|
+
const mockObjectType = {
|
|
988
|
+
type: "object",
|
|
989
|
+
apiName: "TestObject",
|
|
990
|
+
__DefinitionMetadata: {
|
|
991
|
+
type: "object",
|
|
992
|
+
apiName: "TestObject",
|
|
993
|
+
displayName: "Test Object",
|
|
994
|
+
description: undefined,
|
|
995
|
+
properties: {
|
|
996
|
+
department: {
|
|
997
|
+
type: "string"
|
|
998
|
+
},
|
|
999
|
+
status: {
|
|
1000
|
+
type: "string"
|
|
1001
|
+
}
|
|
1002
|
+
},
|
|
1003
|
+
rid: "test-rid",
|
|
1004
|
+
primaryKeyApiName: "id",
|
|
1005
|
+
titleProperty: "department",
|
|
1006
|
+
links: {},
|
|
1007
|
+
primaryKeyType: "string",
|
|
1008
|
+
icon: undefined,
|
|
1009
|
+
visibility: undefined,
|
|
1010
|
+
pluralDisplayName: "Test Objects",
|
|
1011
|
+
status: undefined,
|
|
1012
|
+
interfaceMap: {},
|
|
1013
|
+
inverseInterfaceMap: {}
|
|
1014
|
+
}
|
|
1015
|
+
};
|
|
1016
|
+
it("should handle RDP properties at top level", () => {
|
|
1017
|
+
const rdpNames = new Set(["reportCount", "managerName"]);
|
|
1018
|
+
const result = modernToLegacyWhereClause({
|
|
1019
|
+
department: "Engineering",
|
|
1020
|
+
reportCount: {
|
|
1021
|
+
$gte: 5
|
|
1022
|
+
},
|
|
1023
|
+
managerName: "John"
|
|
1024
|
+
}, mockObjectType, rdpNames);
|
|
1025
|
+
expect(result).toEqual({
|
|
1026
|
+
type: "and",
|
|
1027
|
+
value: [{
|
|
1028
|
+
type: "eq",
|
|
1029
|
+
field: "department",
|
|
1030
|
+
value: "Engineering"
|
|
1031
|
+
}, {
|
|
1032
|
+
type: "gte",
|
|
1033
|
+
propertyIdentifier: {
|
|
1034
|
+
type: "property",
|
|
1035
|
+
apiName: "reportCount"
|
|
1036
|
+
},
|
|
1037
|
+
value: 5
|
|
1038
|
+
}, {
|
|
1039
|
+
type: "eq",
|
|
1040
|
+
propertyIdentifier: {
|
|
1041
|
+
type: "property",
|
|
1042
|
+
apiName: "managerName"
|
|
1043
|
+
},
|
|
1044
|
+
value: "John"
|
|
1045
|
+
}]
|
|
1046
|
+
});
|
|
1047
|
+
});
|
|
1048
|
+
it("should handle RDP properties in $and clauses", () => {
|
|
1049
|
+
const rdpNames = new Set(["reportCount"]);
|
|
1050
|
+
const result = modernToLegacyWhereClause({
|
|
1051
|
+
$and: [{
|
|
1052
|
+
department: "Engineering"
|
|
1053
|
+
}, {
|
|
1054
|
+
reportCount: {
|
|
1055
|
+
$gte: 5
|
|
1056
|
+
}
|
|
1057
|
+
}]
|
|
1058
|
+
}, mockObjectType, rdpNames);
|
|
1059
|
+
expect(result).toEqual({
|
|
1060
|
+
type: "and",
|
|
1061
|
+
value: [{
|
|
1062
|
+
type: "eq",
|
|
1063
|
+
field: "department",
|
|
1064
|
+
value: "Engineering"
|
|
1065
|
+
}, {
|
|
1066
|
+
type: "gte",
|
|
1067
|
+
propertyIdentifier: {
|
|
1068
|
+
type: "property",
|
|
1069
|
+
apiName: "reportCount"
|
|
1070
|
+
},
|
|
1071
|
+
value: 5
|
|
1072
|
+
}]
|
|
1073
|
+
});
|
|
1074
|
+
});
|
|
1075
|
+
it("should handle complex nested structures with RDP", () => {
|
|
1076
|
+
const rdpNames = new Set(["reportCount", "managerName"]);
|
|
1077
|
+
const result = modernToLegacyWhereClause({
|
|
1078
|
+
department: "Engineering",
|
|
1079
|
+
$and: [{
|
|
1080
|
+
$or: [{
|
|
1081
|
+
status: "active"
|
|
1082
|
+
}, {
|
|
1083
|
+
reportCount: {
|
|
1084
|
+
$gte: 10
|
|
1085
|
+
}
|
|
1086
|
+
}]
|
|
1087
|
+
}, {
|
|
1088
|
+
managerName: {
|
|
1089
|
+
$ne: "Admin"
|
|
1090
|
+
}
|
|
1091
|
+
}]
|
|
1092
|
+
}, mockObjectType, rdpNames);
|
|
1093
|
+
|
|
1094
|
+
// The actual structure flattens the nested $and differently
|
|
1095
|
+
expect(result).toEqual({
|
|
1096
|
+
type: "and",
|
|
1097
|
+
value: [{
|
|
1098
|
+
type: "or",
|
|
1099
|
+
value: [{
|
|
1100
|
+
type: "eq",
|
|
1101
|
+
field: "status",
|
|
1102
|
+
value: "active"
|
|
1103
|
+
}, {
|
|
1104
|
+
type: "gte",
|
|
1105
|
+
propertyIdentifier: {
|
|
1106
|
+
type: "property",
|
|
1107
|
+
apiName: "reportCount"
|
|
1108
|
+
},
|
|
1109
|
+
value: 10
|
|
1110
|
+
}]
|
|
1111
|
+
}, {
|
|
1112
|
+
type: "not",
|
|
1113
|
+
value: {
|
|
1114
|
+
type: "eq",
|
|
1115
|
+
propertyIdentifier: {
|
|
1116
|
+
type: "property",
|
|
1117
|
+
apiName: "managerName"
|
|
1118
|
+
},
|
|
1119
|
+
value: "Admin"
|
|
1120
|
+
}
|
|
1121
|
+
}]
|
|
1122
|
+
});
|
|
1123
|
+
});
|
|
1124
|
+
});
|
|
986
1125
|
});
|
|
987
1126
|
//# sourceMappingURL=modernToLegacyWhereClause.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"modernToLegacyWhereClause.test.js","names":["BgaoNflPlayer","objectTypeWithAllPropertyTypes","expectType","describe","expect","it","modernToLegacyWhereClause","T","type","apiName","__DefinitionMetadata","properties","displayName","links","rid","description","undefined","r","$and","prop","$eq","prop2","innerProp1","toMatchInlineSnapshot","foo","geoPoint","$within","$bbox","$distance","$of","coordinates","$polygon","geoShape","$intersects","integer","$ne","string","$containsAllTerms","term","fuzzySearch","$containsAnyTerm","address","state","city","$or","gamesPlayed","$gt","decimal"],"sources":["modernToLegacyWhereClause.test.ts"],"sourcesContent":["/*\n * Copyright 2023 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport type { ObjectOrInterfaceDefinition, WhereClause } from \"@osdk/api\";\nimport {\n BgaoNflPlayer,\n objectTypeWithAllPropertyTypes,\n} from \"@osdk/client.test.ontology\";\nimport type { Point } from \"geojson\";\nimport { expectType } from \"ts-expect\";\nimport { describe, expect, it } from \"vitest\";\nimport { modernToLegacyWhereClause } from \"./modernToLegacyWhereClause.js\";\n\ntype ObjAllProps = objectTypeWithAllPropertyTypes;\ntype structObj = BgaoNflPlayer;\ndescribe(modernToLegacyWhereClause, () => {\n describe(\"api namespaces\", () => {\n describe(\"interfaces\", () => {\n it(\"properly converts shortname to fqApiName\", () => {\n const T = {\n type: \"interface\",\n apiName: \"a.Foo\",\n __DefinitionMetadata: {\n type: \"interface\",\n properties: {\n \"prop\": { type: \"integer\" },\n \"prop2\": {\n type: { \"innerProp1\": \"string\", \"innerProp2\": \"float\" },\n },\n },\n apiName: \"a.Foo\",\n displayName: \"\",\n links: {},\n rid: \"\",\n description: undefined,\n },\n } as const satisfies ObjectOrInterfaceDefinition;\n\n const r = modernToLegacyWhereClause({\n $and: [\n { prop: { $eq: 5 } },\n { prop2: { innerProp1: { $eq: \"myProp\" } } },\n ],\n }, T);\n\n expect(r).toMatchInlineSnapshot(`\n {\n \"type\": \"and\",\n \"value\": [\n {\n \"field\": \"a.prop\",\n \"type\": \"eq\",\n \"value\": 5,\n },\n {\n \"field\": undefined,\n \"propertyIdentifier\": {\n \"propertyApiName\": \"a.prop2\",\n \"structFieldApiName\": \"innerProp1\",\n \"type\": \"structField\",\n },\n \"type\": \"eq\",\n \"value\": \"myProp\",\n },\n ],\n }\n `);\n });\n\n it(\"properly does not convert when interface has no apiNamespace\", () => {\n const T = {\n type: \"interface\",\n apiName: \"Foo\",\n __DefinitionMetadata: {\n type: \"interface\",\n properties: {\n \"foo\": { type: \"integer\" },\n \"b.prop\": { type: \"integer\" },\n \"prop\": { type: \"integer\" },\n \"c.prop2\": {\n type: { \"innerProp1\": \"string\", \"innerProp2\": \"float\" },\n },\n },\n apiName: \"Foo\",\n displayName: \"\",\n links: {},\n rid: \"\",\n description: undefined,\n },\n } as const satisfies ObjectOrInterfaceDefinition;\n\n const r = modernToLegacyWhereClause({\n \"b.prop\": 5,\n foo: 6,\n \"c.prop2\": { innerProp1: { $eq: \"myProp\" } },\n }, T);\n\n expect(r).toMatchInlineSnapshot(`\n {\n \"type\": \"and\",\n \"value\": [\n {\n \"field\": \"b.prop\",\n \"type\": \"eq\",\n \"value\": 5,\n },\n {\n \"field\": \"foo\",\n \"type\": \"eq\",\n \"value\": 6,\n },\n {\n \"field\": undefined,\n \"propertyIdentifier\": {\n \"propertyApiName\": \"c.prop2\",\n \"structFieldApiName\": \"innerProp1\",\n \"type\": \"structField\",\n },\n \"type\": \"eq\",\n \"value\": \"myProp\",\n },\n ],\n }\n `);\n });\n\n it(\"gracefully handles redundant apiNamespace in property\", () => {\n const T = {\n type: \"interface\",\n apiName: \"a.Foo\",\n __DefinitionMetadata: {\n type: \"interface\",\n properties: {\n \"a.foo\": { type: \"integer\" },\n \"b.prop\": { type: \"integer\" },\n \"prop\": { type: \"integer\" },\n \"c.prop2\": {\n type: { \"innerProp1\": \"string\", \"innerProp2\": \"float\" },\n },\n },\n apiName: \"a.Foo\",\n displayName: \"\",\n links: {},\n rid: \"\",\n description: undefined,\n },\n } as const satisfies ObjectOrInterfaceDefinition;\n\n const r = modernToLegacyWhereClause({\n \"b.prop\": 5,\n \"a.foo\": 6,\n \"c.prop2\": { innerProp1: { $eq: \"myProp\" } },\n }, T);\n\n expect(r).toMatchInlineSnapshot(`\n {\n \"type\": \"and\",\n \"value\": [\n {\n \"field\": \"b.prop\",\n \"type\": \"eq\",\n \"value\": 5,\n },\n {\n \"field\": \"a.foo\",\n \"type\": \"eq\",\n \"value\": 6,\n },\n {\n \"field\": undefined,\n \"propertyIdentifier\": {\n \"propertyApiName\": \"c.prop2\",\n \"structFieldApiName\": \"innerProp1\",\n \"type\": \"structField\",\n },\n \"type\": \"eq\",\n \"value\": \"myProp\",\n },\n ],\n }\n `);\n });\n\n it(\"properly does not convert different apiNamespaces\", () => {\n const T = {\n type: \"interface\",\n apiName: \"a.Foo\",\n __DefinitionMetadata: {\n type: \"interface\",\n properties: {\n \"a.foo\": { type: \"integer\" },\n \"b.prop\": { type: \"integer\" },\n \"prop\": { type: \"integer\" },\n },\n apiName: \"a.Foo\",\n displayName: \"\",\n links: {},\n rid: \"\",\n description: undefined,\n },\n } as const satisfies ObjectOrInterfaceDefinition;\n\n expect(modernToLegacyWhereClause({\n \"b.prop\": 5,\n }, T)).toMatchInlineSnapshot(`\n {\n \"field\": \"b.prop\",\n \"type\": \"eq\",\n \"value\": 5,\n }\n `);\n });\n });\n\n describe(\"objects\", () => {\n it(\"does not convert object short property names to fq\", () => {\n const T = {\n type: \"interface\",\n apiName: \"a.Foo\",\n __DefinitionMetadata: {\n type: \"interface\",\n properties: {\n \"a.foo\": { type: \"integer\" },\n \"prop\": { type: \"integer\" },\n },\n apiName: \"a.Foo\",\n displayName: \"\",\n links: {},\n rid: \"\",\n description: undefined,\n },\n } as const satisfies ObjectOrInterfaceDefinition;\n const r = modernToLegacyWhereClause({\n prop: 5,\n }, T);\n\n expect(r).toMatchInlineSnapshot(`\n {\n \"field\": \"a.prop\",\n \"type\": \"eq\",\n \"value\": 5,\n }\n `);\n });\n });\n });\n\n describe(\"single checks\", () => {\n describe(\"$within\", () => {\n it(\"properly generates bbox shortcut\", async () => {\n expect(modernToLegacyWhereClause<ObjAllProps>(\n {\n geoPoint: {\n $within: [-5, 5, -10, 10],\n },\n },\n objectTypeWithAllPropertyTypes,\n )).toMatchInlineSnapshot(`\n {\n \"field\": \"geoPoint\",\n \"type\": \"withinBoundingBox\",\n \"value\": {\n \"bottomRight\": {\n \"coordinates\": [\n -10,\n 5,\n ],\n \"type\": \"Point\",\n },\n \"topLeft\": {\n \"coordinates\": [\n -5,\n 10,\n ],\n \"type\": \"Point\",\n },\n },\n }\n `);\n });\n\n it(\"properly generates bbox long form\", async () => {\n expect(modernToLegacyWhereClause<ObjAllProps>(\n {\n geoPoint: {\n $within: {\n $bbox: [-5, 5, -10, 10],\n },\n },\n },\n objectTypeWithAllPropertyTypes,\n )).toMatchInlineSnapshot(`\n {\n \"field\": \"geoPoint\",\n \"type\": \"withinBoundingBox\",\n \"value\": {\n \"bottomRight\": {\n \"coordinates\": [\n -10,\n 5,\n ],\n \"type\": \"Point\",\n },\n \"topLeft\": {\n \"coordinates\": [\n -5,\n 10,\n ],\n \"type\": \"Point\",\n },\n },\n }\n `);\n });\n\n it(\"properly generates within radius\", async () => {\n expect(modernToLegacyWhereClause<ObjAllProps>(\n {\n geoPoint: {\n $within: { $distance: [5, \"km\"], $of: [-5, 5] },\n },\n },\n objectTypeWithAllPropertyTypes,\n )).toMatchInlineSnapshot(`\n {\n \"field\": \"geoPoint\",\n \"type\": \"withinDistanceOf\",\n \"value\": {\n \"center\": {\n \"coordinates\": [\n -5,\n 5,\n ],\n \"type\": \"Point\",\n },\n \"distance\": {\n \"unit\": \"KILOMETERS\",\n \"value\": 5,\n },\n },\n }\n `);\n });\n\n it(\"properly generates within radius of geopoint\", async () => {\n // suppose you loaded an object with a geopoint field\n // and you want to find all objects within 5 km of that point\n const pointAsGeoJsonPoint: Point = {\n type: \"Point\",\n coordinates: [-5, 5],\n };\n expect(modernToLegacyWhereClause<ObjAllProps>(\n {\n geoPoint: {\n $within: { $distance: [5, \"km\"], $of: pointAsGeoJsonPoint },\n },\n },\n objectTypeWithAllPropertyTypes,\n )).toMatchInlineSnapshot(`\n {\n \"field\": \"geoPoint\",\n \"type\": \"withinDistanceOf\",\n \"value\": {\n \"center\": {\n \"coordinates\": [\n -5,\n 5,\n ],\n \"type\": \"Point\",\n },\n \"distance\": {\n \"unit\": \"KILOMETERS\",\n \"value\": 5,\n },\n },\n }\n `);\n });\n\n it(\"properly generates within polygon\", async () => {\n expect(modernToLegacyWhereClause<ObjAllProps>(\n {\n geoPoint: {\n $within: { $polygon: [[[0, 1], [3, 2], [0, 1]]] },\n },\n },\n objectTypeWithAllPropertyTypes,\n )).toMatchInlineSnapshot(`\n {\n \"field\": \"geoPoint\",\n \"type\": \"withinPolygon\",\n \"value\": {\n \"coordinates\": [\n [\n [\n 0,\n 1,\n ],\n [\n 3,\n 2,\n ],\n [\n 0,\n 1,\n ],\n ],\n ],\n \"type\": \"Polygon\",\n },\n }\n `);\n });\n\n it(\"properly generates within polygon geojson\", async () => {\n expect(modernToLegacyWhereClause<ObjAllProps>(\n {\n geoPoint: {\n $within: {\n type: \"Polygon\",\n coordinates: [[[0, 1], [3, 2], [0, 1]]],\n },\n },\n },\n objectTypeWithAllPropertyTypes,\n )).toMatchInlineSnapshot(`\n {\n \"field\": \"geoPoint\",\n \"type\": \"withinPolygon\",\n \"value\": {\n \"coordinates\": [\n [\n [\n 0,\n 1,\n ],\n [\n 3,\n 2,\n ],\n [\n 0,\n 1,\n ],\n ],\n ],\n \"type\": \"Polygon\",\n },\n }\n `);\n });\n it(\"check types\", async () => {\n expectType<WhereClause<ObjAllProps>>({\n geoPoint: {\n $within: [-5, 5, -10, 10],\n },\n });\n\n expectType<WhereClause<ObjAllProps>>({\n geoPoint: {\n $within: { $distance: [2, \"centimeter\"], $of: [2, 2] },\n },\n });\n\n expectType<WhereClause<ObjAllProps>>({\n geoPoint: {\n $within: { $polygon: [[[0, 1], [3, 2], [0, 1]]] },\n },\n });\n\n expectType<WhereClause<ObjAllProps>>({\n geoPoint: {\n $within: {\n type: \"Polygon\",\n coordinates: [[[0, 1], [3, 2], [0, 1]]],\n },\n },\n });\n\n expectType<WhereClause<ObjAllProps>>({\n geoPoint: {\n $within: { $bbox: [-5, 5, -10, 10] },\n },\n });\n\n expectType<WhereClause<ObjAllProps>>({\n geoPoint: {\n $within: {\n $bbox: [-5, 5, -10, 10],\n // @ts-expect-error\n $distance: [2, \"centimeter\"],\n // @ts-expect-error\n $of: [2, 2],\n },\n },\n });\n expectType<WhereClause<ObjAllProps>>({\n geoPoint: {\n $within: {\n $polygon: [[[0, 1], [3, 2], [0, 1]]],\n // @ts-expect-error\n $bbox: [2, 2, 2, 2],\n },\n },\n });\n });\n describe(\"$intersects\", () => {\n it(\"properly generates bbox shortcut\", async () => {\n expect(modernToLegacyWhereClause<ObjAllProps>(\n {\n geoShape: {\n $intersects: [-5, 5, -10, 10],\n },\n },\n objectTypeWithAllPropertyTypes,\n )).toMatchInlineSnapshot(`\n {\n \"field\": \"geoShape\",\n \"type\": \"intersectsBoundingBox\",\n \"value\": {\n \"bottomRight\": {\n \"coordinates\": [\n -10,\n 5,\n ],\n \"type\": \"Point\",\n },\n \"topLeft\": {\n \"coordinates\": [\n -5,\n 10,\n ],\n \"type\": \"Point\",\n },\n },\n }\n `);\n });\n it(\"properly generates bbox long form\", async () => {\n expect(modernToLegacyWhereClause<ObjAllProps>(\n {\n geoShape: {\n $intersects: {\n $bbox: [-5, 5, -10, 10],\n },\n },\n },\n objectTypeWithAllPropertyTypes,\n )).toMatchInlineSnapshot(`\n {\n \"field\": \"geoShape\",\n \"type\": \"intersectsBoundingBox\",\n \"value\": {\n \"bottomRight\": {\n \"coordinates\": [\n -10,\n 5,\n ],\n \"type\": \"Point\",\n },\n \"topLeft\": {\n \"coordinates\": [\n -5,\n 10,\n ],\n \"type\": \"Point\",\n },\n },\n }\n `);\n });\n\n it(\"properly generates intersects polygon\", async () => {\n expect(modernToLegacyWhereClause<ObjAllProps>(\n {\n geoShape: {\n $intersects: { $polygon: [[[0, 1], [3, 2], [0, 1]]] },\n },\n },\n objectTypeWithAllPropertyTypes,\n )).toMatchInlineSnapshot(`\n {\n \"field\": \"geoShape\",\n \"type\": \"intersectsPolygon\",\n \"value\": {\n \"coordinates\": [\n [\n [\n 0,\n 1,\n ],\n [\n 3,\n 2,\n ],\n [\n 0,\n 1,\n ],\n ],\n ],\n \"type\": \"Polygon\",\n },\n }\n `);\n });\n\n it(\"properly generates within polygon geojson\", async () => {\n expect(modernToLegacyWhereClause<ObjAllProps>(\n {\n geoShape: {\n $intersects: {\n type: \"Polygon\",\n coordinates: [[[0, 1], [3, 2], [0, 1]]],\n },\n },\n },\n objectTypeWithAllPropertyTypes,\n )).toMatchInlineSnapshot(`\n {\n \"field\": \"geoShape\",\n \"type\": \"intersectsPolygon\",\n \"value\": {\n \"coordinates\": [\n [\n [\n 0,\n 1,\n ],\n [\n 3,\n 2,\n ],\n [\n 0,\n 1,\n ],\n ],\n ],\n \"type\": \"Polygon\",\n },\n }\n `);\n });\n });\n\n it(\"inverts ne short hand properly\", () => {\n expect(modernToLegacyWhereClause<ObjAllProps>({\n integer: { $ne: 5 },\n }, objectTypeWithAllPropertyTypes)).toMatchInlineSnapshot(`\n {\n \"type\": \"not\",\n \"value\": {\n \"field\": \"integer\",\n \"type\": \"eq\",\n \"value\": 5,\n },\n }\n `);\n });\n it(\"converts $containsAllTerms correctly if using new type\", () => {\n expect(modernToLegacyWhereClause<ObjAllProps>({\n string: { $containsAllTerms: { term: \"test\", fuzzySearch: true } },\n }, objectTypeWithAllPropertyTypes)).toMatchInlineSnapshot(`\n {\n \"field\": \"string\",\n \"fuzzy\": true,\n \"type\": \"containsAllTerms\",\n \"value\": \"test\",\n }\n `);\n\n expect(modernToLegacyWhereClause<ObjAllProps>({\n string: { $containsAllTerms: { term: \"test\", fuzzySearch: false } },\n }, objectTypeWithAllPropertyTypes)).toMatchInlineSnapshot(`\n {\n \"field\": \"string\",\n \"fuzzy\": false,\n \"type\": \"containsAllTerms\",\n \"value\": \"test\",\n }\n `);\n\n expect(modernToLegacyWhereClause<ObjAllProps>({\n string: { $containsAllTerms: { term: \"test\" } },\n }, objectTypeWithAllPropertyTypes)).toMatchInlineSnapshot(`\n {\n \"field\": \"string\",\n \"fuzzy\": false,\n \"type\": \"containsAllTerms\",\n \"value\": \"test\",\n }\n `);\n });\n\n it(\"converts $containsAllTerms correctly if using old type\", () => {\n expect(modernToLegacyWhereClause<ObjAllProps>({\n string: { $containsAllTerms: \"test\" },\n }, objectTypeWithAllPropertyTypes)).toMatchInlineSnapshot(`\n {\n \"field\": \"string\",\n \"fuzzy\": false,\n \"type\": \"containsAllTerms\",\n \"value\": \"test\",\n }\n `);\n });\n it(\"converts $containsAnyTerm correctly if using new type\", () => {\n expect(modernToLegacyWhereClause<ObjAllProps>({\n string: { $containsAnyTerm: { term: \"test\", fuzzySearch: true } },\n }, objectTypeWithAllPropertyTypes)).toMatchInlineSnapshot(`\n {\n \"field\": \"string\",\n \"fuzzy\": true,\n \"type\": \"containsAnyTerm\",\n \"value\": \"test\",\n }\n `);\n\n expect(modernToLegacyWhereClause<ObjAllProps>({\n string: { $containsAnyTerm: { term: \"test\", fuzzySearch: false } },\n }, objectTypeWithAllPropertyTypes)).toMatchInlineSnapshot(`\n {\n \"field\": \"string\",\n \"fuzzy\": false,\n \"type\": \"containsAnyTerm\",\n \"value\": \"test\",\n }\n `);\n\n expect(modernToLegacyWhereClause<ObjAllProps>({\n string: { $containsAnyTerm: { term: \"test\" } },\n }, objectTypeWithAllPropertyTypes)).toMatchInlineSnapshot(`\n {\n \"field\": \"string\",\n \"fuzzy\": false,\n \"type\": \"containsAnyTerm\",\n \"value\": \"test\",\n }\n `);\n });\n\n it(\"converts $containsAnyTerm correctly if using old type\", () => {\n expect(modernToLegacyWhereClause<ObjAllProps>({\n string: { $containsAnyTerm: \"test\" },\n }, objectTypeWithAllPropertyTypes)).toMatchInlineSnapshot(`\n {\n \"field\": \"string\",\n \"fuzzy\": false,\n \"type\": \"containsAnyTerm\",\n \"value\": \"test\",\n }\n `);\n });\n it(\"converts struct where clauses correctly\", () => {\n expect(modernToLegacyWhereClause<structObj>({\n address: { state: { $eq: \"NJ\" } },\n }, BgaoNflPlayer)).toMatchInlineSnapshot(`\n {\n \"field\": undefined,\n \"propertyIdentifier\": {\n \"propertyApiName\": \"address\",\n \"structFieldApiName\": \"state\",\n \"type\": \"structField\",\n },\n \"type\": \"eq\",\n \"value\": \"NJ\",\n }\n `);\n\n expect(modernToLegacyWhereClause<structObj>({\n $and: [\n { address: { state: { $eq: \"NJ\" } } },\n { address: { city: { $containsAnyTerm: \"N\" } } },\n ],\n }, BgaoNflPlayer)).toMatchInlineSnapshot(`\n {\n \"type\": \"and\",\n \"value\": [\n {\n \"field\": undefined,\n \"propertyIdentifier\": {\n \"propertyApiName\": \"address\",\n \"structFieldApiName\": \"state\",\n \"type\": \"structField\",\n },\n \"type\": \"eq\",\n \"value\": \"NJ\",\n },\n {\n \"field\": undefined,\n \"fuzzy\": false,\n \"propertyIdentifier\": {\n \"propertyApiName\": \"address\",\n \"structFieldApiName\": \"city\",\n \"type\": \"structField\",\n },\n \"type\": \"containsAnyTerm\",\n \"value\": \"N\",\n },\n ],\n }\n `);\n\n expect(modernToLegacyWhereClause<structObj>({\n $or: [\n { address: { state: { $eq: \"NJ\" } } },\n { address: { city: { $containsAnyTerm: \"N\" } } },\n { gamesPlayed: { $gt: 5 } },\n ],\n }, BgaoNflPlayer)).toMatchInlineSnapshot(`\n {\n \"type\": \"or\",\n \"value\": [\n {\n \"field\": undefined,\n \"propertyIdentifier\": {\n \"propertyApiName\": \"address\",\n \"structFieldApiName\": \"state\",\n \"type\": \"structField\",\n },\n \"type\": \"eq\",\n \"value\": \"NJ\",\n },\n {\n \"field\": undefined,\n \"fuzzy\": false,\n \"propertyIdentifier\": {\n \"propertyApiName\": \"address\",\n \"structFieldApiName\": \"city\",\n \"type\": \"structField\",\n },\n \"type\": \"containsAnyTerm\",\n \"value\": \"N\",\n },\n {\n \"field\": \"gamesPlayed\",\n \"type\": \"gt\",\n \"value\": 5,\n },\n ],\n }\n `);\n });\n });\n\n describe(\"multiple checks\", () => {\n it(\"properly handles multiple simple where checks\", () => {\n expect(modernToLegacyWhereClause<ObjAllProps>(\n {\n decimal: 5,\n integer: 10,\n },\n objectTypeWithAllPropertyTypes,\n )).toMatchInlineSnapshot(`\n {\n \"type\": \"and\",\n \"value\": [\n {\n \"field\": \"decimal\",\n \"type\": \"eq\",\n \"value\": 5,\n },\n {\n \"field\": \"integer\",\n \"type\": \"eq\",\n \"value\": 10,\n },\n ],\n }\n `);\n });\n\n it(\"properly handles $and\", () => {\n expect(modernToLegacyWhereClause<ObjAllProps>(\n {\n $and: [{\n decimal: 5,\n }, {\n integer: 10,\n }],\n },\n objectTypeWithAllPropertyTypes,\n )).toMatchInlineSnapshot(`\n {\n \"type\": \"and\",\n \"value\": [\n {\n \"field\": \"decimal\",\n \"type\": \"eq\",\n \"value\": 5,\n },\n {\n \"field\": \"integer\",\n \"type\": \"eq\",\n \"value\": 10,\n },\n ],\n }\n `);\n });\n\n it(\"properly handles $or\", () => {\n expect(modernToLegacyWhereClause<ObjAllProps>(\n {\n $or: [{\n decimal: 5,\n }, {\n integer: 10,\n }],\n },\n objectTypeWithAllPropertyTypes,\n )).toMatchInlineSnapshot(`\n {\n \"type\": \"or\",\n \"value\": [\n {\n \"field\": \"decimal\",\n \"type\": \"eq\",\n \"value\": 5,\n },\n {\n \"field\": \"integer\",\n \"type\": \"eq\",\n \"value\": 10,\n },\n ],\n }\n `);\n });\n });\n });\n});\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"modernToLegacyWhereClause.test.js","names":["BgaoNflPlayer","objectTypeWithAllPropertyTypes","expectType","describe","expect","it","modernToLegacyWhereClause","T","type","apiName","__DefinitionMetadata","properties","displayName","links","rid","description","undefined","r","$and","prop","$eq","prop2","innerProp1","toMatchInlineSnapshot","foo","geoPoint","$within","$bbox","$distance","$of","coordinates","$polygon","geoShape","$intersects","integer","$ne","string","$containsAllTerms","term","fuzzySearch","$containsAnyTerm","address","state","city","$or","gamesPlayed","$gt","decimal","mockObjectType","department","status","primaryKeyApiName","titleProperty","primaryKeyType","icon","visibility","pluralDisplayName","interfaceMap","inverseInterfaceMap","rdpNames","Set","result","reportCount","$gte","managerName","toEqual","value","field","propertyIdentifier"],"sources":["modernToLegacyWhereClause.test.ts"],"sourcesContent":["/*\n * Copyright 2023 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport type { ObjectOrInterfaceDefinition, WhereClause } from \"@osdk/api\";\nimport {\n BgaoNflPlayer,\n objectTypeWithAllPropertyTypes,\n} from \"@osdk/client.test.ontology\";\nimport type { Point } from \"geojson\";\nimport { expectType } from \"ts-expect\";\nimport { describe, expect, it } from \"vitest\";\nimport { modernToLegacyWhereClause } from \"./modernToLegacyWhereClause.js\";\n\ntype ObjAllProps = objectTypeWithAllPropertyTypes;\ntype structObj = BgaoNflPlayer;\ndescribe(modernToLegacyWhereClause, () => {\n describe(\"api namespaces\", () => {\n describe(\"interfaces\", () => {\n it(\"properly converts shortname to fqApiName\", () => {\n const T = {\n type: \"interface\",\n apiName: \"a.Foo\",\n __DefinitionMetadata: {\n type: \"interface\",\n properties: {\n \"prop\": { type: \"integer\" },\n \"prop2\": {\n type: { \"innerProp1\": \"string\", \"innerProp2\": \"float\" },\n },\n },\n apiName: \"a.Foo\",\n displayName: \"\",\n links: {},\n rid: \"\",\n description: undefined,\n },\n } as const satisfies ObjectOrInterfaceDefinition;\n\n const r = modernToLegacyWhereClause({\n $and: [\n { prop: { $eq: 5 } },\n { prop2: { innerProp1: { $eq: \"myProp\" } } },\n ],\n }, T);\n\n expect(r).toMatchInlineSnapshot(`\n {\n \"type\": \"and\",\n \"value\": [\n {\n \"field\": \"a.prop\",\n \"type\": \"eq\",\n \"value\": 5,\n },\n {\n \"field\": undefined,\n \"propertyIdentifier\": {\n \"propertyApiName\": \"a.prop2\",\n \"structFieldApiName\": \"innerProp1\",\n \"type\": \"structField\",\n },\n \"type\": \"eq\",\n \"value\": \"myProp\",\n },\n ],\n }\n `);\n });\n\n it(\"properly does not convert when interface has no apiNamespace\", () => {\n const T = {\n type: \"interface\",\n apiName: \"Foo\",\n __DefinitionMetadata: {\n type: \"interface\",\n properties: {\n \"foo\": { type: \"integer\" },\n \"b.prop\": { type: \"integer\" },\n \"prop\": { type: \"integer\" },\n \"c.prop2\": {\n type: { \"innerProp1\": \"string\", \"innerProp2\": \"float\" },\n },\n },\n apiName: \"Foo\",\n displayName: \"\",\n links: {},\n rid: \"\",\n description: undefined,\n },\n } as const satisfies ObjectOrInterfaceDefinition;\n\n const r = modernToLegacyWhereClause({\n \"b.prop\": 5,\n foo: 6,\n \"c.prop2\": { innerProp1: { $eq: \"myProp\" } },\n }, T);\n\n expect(r).toMatchInlineSnapshot(`\n {\n \"type\": \"and\",\n \"value\": [\n {\n \"field\": \"b.prop\",\n \"type\": \"eq\",\n \"value\": 5,\n },\n {\n \"field\": \"foo\",\n \"type\": \"eq\",\n \"value\": 6,\n },\n {\n \"field\": undefined,\n \"propertyIdentifier\": {\n \"propertyApiName\": \"c.prop2\",\n \"structFieldApiName\": \"innerProp1\",\n \"type\": \"structField\",\n },\n \"type\": \"eq\",\n \"value\": \"myProp\",\n },\n ],\n }\n `);\n });\n\n it(\"gracefully handles redundant apiNamespace in property\", () => {\n const T = {\n type: \"interface\",\n apiName: \"a.Foo\",\n __DefinitionMetadata: {\n type: \"interface\",\n properties: {\n \"a.foo\": { type: \"integer\" },\n \"b.prop\": { type: \"integer\" },\n \"prop\": { type: \"integer\" },\n \"c.prop2\": {\n type: { \"innerProp1\": \"string\", \"innerProp2\": \"float\" },\n },\n },\n apiName: \"a.Foo\",\n displayName: \"\",\n links: {},\n rid: \"\",\n description: undefined,\n },\n } as const satisfies ObjectOrInterfaceDefinition;\n\n const r = modernToLegacyWhereClause({\n \"b.prop\": 5,\n \"a.foo\": 6,\n \"c.prop2\": { innerProp1: { $eq: \"myProp\" } },\n }, T);\n\n expect(r).toMatchInlineSnapshot(`\n {\n \"type\": \"and\",\n \"value\": [\n {\n \"field\": \"b.prop\",\n \"type\": \"eq\",\n \"value\": 5,\n },\n {\n \"field\": \"a.foo\",\n \"type\": \"eq\",\n \"value\": 6,\n },\n {\n \"field\": undefined,\n \"propertyIdentifier\": {\n \"propertyApiName\": \"c.prop2\",\n \"structFieldApiName\": \"innerProp1\",\n \"type\": \"structField\",\n },\n \"type\": \"eq\",\n \"value\": \"myProp\",\n },\n ],\n }\n `);\n });\n\n it(\"properly does not convert different apiNamespaces\", () => {\n const T = {\n type: \"interface\",\n apiName: \"a.Foo\",\n __DefinitionMetadata: {\n type: \"interface\",\n properties: {\n \"a.foo\": { type: \"integer\" },\n \"b.prop\": { type: \"integer\" },\n \"prop\": { type: \"integer\" },\n },\n apiName: \"a.Foo\",\n displayName: \"\",\n links: {},\n rid: \"\",\n description: undefined,\n },\n } as const satisfies ObjectOrInterfaceDefinition;\n\n expect(modernToLegacyWhereClause({\n \"b.prop\": 5,\n }, T)).toMatchInlineSnapshot(`\n {\n \"field\": \"b.prop\",\n \"type\": \"eq\",\n \"value\": 5,\n }\n `);\n });\n });\n\n describe(\"objects\", () => {\n it(\"does not convert object short property names to fq\", () => {\n const T = {\n type: \"interface\",\n apiName: \"a.Foo\",\n __DefinitionMetadata: {\n type: \"interface\",\n properties: {\n \"a.foo\": { type: \"integer\" },\n \"prop\": { type: \"integer\" },\n },\n apiName: \"a.Foo\",\n displayName: \"\",\n links: {},\n rid: \"\",\n description: undefined,\n },\n } as const satisfies ObjectOrInterfaceDefinition;\n const r = modernToLegacyWhereClause({\n prop: 5,\n }, T);\n\n expect(r).toMatchInlineSnapshot(`\n {\n \"field\": \"a.prop\",\n \"type\": \"eq\",\n \"value\": 5,\n }\n `);\n });\n });\n });\n\n describe(\"single checks\", () => {\n describe(\"$within\", () => {\n it(\"properly generates bbox shortcut\", async () => {\n expect(modernToLegacyWhereClause<ObjAllProps>(\n {\n geoPoint: {\n $within: [-5, 5, -10, 10],\n },\n },\n objectTypeWithAllPropertyTypes,\n )).toMatchInlineSnapshot(`\n {\n \"field\": \"geoPoint\",\n \"type\": \"withinBoundingBox\",\n \"value\": {\n \"bottomRight\": {\n \"coordinates\": [\n -10,\n 5,\n ],\n \"type\": \"Point\",\n },\n \"topLeft\": {\n \"coordinates\": [\n -5,\n 10,\n ],\n \"type\": \"Point\",\n },\n },\n }\n `);\n });\n\n it(\"properly generates bbox long form\", async () => {\n expect(modernToLegacyWhereClause<ObjAllProps>(\n {\n geoPoint: {\n $within: {\n $bbox: [-5, 5, -10, 10],\n },\n },\n },\n objectTypeWithAllPropertyTypes,\n )).toMatchInlineSnapshot(`\n {\n \"field\": \"geoPoint\",\n \"type\": \"withinBoundingBox\",\n \"value\": {\n \"bottomRight\": {\n \"coordinates\": [\n -10,\n 5,\n ],\n \"type\": \"Point\",\n },\n \"topLeft\": {\n \"coordinates\": [\n -5,\n 10,\n ],\n \"type\": \"Point\",\n },\n },\n }\n `);\n });\n\n it(\"properly generates within radius\", async () => {\n expect(modernToLegacyWhereClause<ObjAllProps>(\n {\n geoPoint: {\n $within: { $distance: [5, \"km\"], $of: [-5, 5] },\n },\n },\n objectTypeWithAllPropertyTypes,\n )).toMatchInlineSnapshot(`\n {\n \"field\": \"geoPoint\",\n \"type\": \"withinDistanceOf\",\n \"value\": {\n \"center\": {\n \"coordinates\": [\n -5,\n 5,\n ],\n \"type\": \"Point\",\n },\n \"distance\": {\n \"unit\": \"KILOMETERS\",\n \"value\": 5,\n },\n },\n }\n `);\n });\n\n it(\"properly generates within radius of geopoint\", async () => {\n // suppose you loaded an object with a geopoint field\n // and you want to find all objects within 5 km of that point\n const pointAsGeoJsonPoint: Point = {\n type: \"Point\",\n coordinates: [-5, 5],\n };\n expect(modernToLegacyWhereClause<ObjAllProps>(\n {\n geoPoint: {\n $within: { $distance: [5, \"km\"], $of: pointAsGeoJsonPoint },\n },\n },\n objectTypeWithAllPropertyTypes,\n )).toMatchInlineSnapshot(`\n {\n \"field\": \"geoPoint\",\n \"type\": \"withinDistanceOf\",\n \"value\": {\n \"center\": {\n \"coordinates\": [\n -5,\n 5,\n ],\n \"type\": \"Point\",\n },\n \"distance\": {\n \"unit\": \"KILOMETERS\",\n \"value\": 5,\n },\n },\n }\n `);\n });\n\n it(\"properly generates within polygon\", async () => {\n expect(modernToLegacyWhereClause<ObjAllProps>(\n {\n geoPoint: {\n $within: { $polygon: [[[0, 1], [3, 2], [0, 1]]] },\n },\n },\n objectTypeWithAllPropertyTypes,\n )).toMatchInlineSnapshot(`\n {\n \"field\": \"geoPoint\",\n \"type\": \"withinPolygon\",\n \"value\": {\n \"coordinates\": [\n [\n [\n 0,\n 1,\n ],\n [\n 3,\n 2,\n ],\n [\n 0,\n 1,\n ],\n ],\n ],\n \"type\": \"Polygon\",\n },\n }\n `);\n });\n\n it(\"properly generates within polygon geojson\", async () => {\n expect(modernToLegacyWhereClause<ObjAllProps>(\n {\n geoPoint: {\n $within: {\n type: \"Polygon\",\n coordinates: [[[0, 1], [3, 2], [0, 1]]],\n },\n },\n },\n objectTypeWithAllPropertyTypes,\n )).toMatchInlineSnapshot(`\n {\n \"field\": \"geoPoint\",\n \"type\": \"withinPolygon\",\n \"value\": {\n \"coordinates\": [\n [\n [\n 0,\n 1,\n ],\n [\n 3,\n 2,\n ],\n [\n 0,\n 1,\n ],\n ],\n ],\n \"type\": \"Polygon\",\n },\n }\n `);\n });\n it(\"check types\", async () => {\n expectType<WhereClause<ObjAllProps>>({\n geoPoint: {\n $within: [-5, 5, -10, 10],\n },\n });\n\n expectType<WhereClause<ObjAllProps>>({\n geoPoint: {\n $within: { $distance: [2, \"centimeter\"], $of: [2, 2] },\n },\n });\n\n expectType<WhereClause<ObjAllProps>>({\n geoPoint: {\n $within: { $polygon: [[[0, 1], [3, 2], [0, 1]]] },\n },\n });\n\n expectType<WhereClause<ObjAllProps>>({\n geoPoint: {\n $within: {\n type: \"Polygon\",\n coordinates: [[[0, 1], [3, 2], [0, 1]]],\n },\n },\n });\n\n expectType<WhereClause<ObjAllProps>>({\n geoPoint: {\n $within: { $bbox: [-5, 5, -10, 10] },\n },\n });\n\n expectType<WhereClause<ObjAllProps>>({\n geoPoint: {\n $within: {\n $bbox: [-5, 5, -10, 10],\n // @ts-expect-error\n $distance: [2, \"centimeter\"],\n // @ts-expect-error\n $of: [2, 2],\n },\n },\n });\n expectType<WhereClause<ObjAllProps>>({\n geoPoint: {\n $within: {\n $polygon: [[[0, 1], [3, 2], [0, 1]]],\n // @ts-expect-error\n $bbox: [2, 2, 2, 2],\n },\n },\n });\n });\n describe(\"$intersects\", () => {\n it(\"properly generates bbox shortcut\", async () => {\n expect(modernToLegacyWhereClause<ObjAllProps>(\n {\n geoShape: {\n $intersects: [-5, 5, -10, 10],\n },\n },\n objectTypeWithAllPropertyTypes,\n )).toMatchInlineSnapshot(`\n {\n \"field\": \"geoShape\",\n \"type\": \"intersectsBoundingBox\",\n \"value\": {\n \"bottomRight\": {\n \"coordinates\": [\n -10,\n 5,\n ],\n \"type\": \"Point\",\n },\n \"topLeft\": {\n \"coordinates\": [\n -5,\n 10,\n ],\n \"type\": \"Point\",\n },\n },\n }\n `);\n });\n it(\"properly generates bbox long form\", async () => {\n expect(modernToLegacyWhereClause<ObjAllProps>(\n {\n geoShape: {\n $intersects: {\n $bbox: [-5, 5, -10, 10],\n },\n },\n },\n objectTypeWithAllPropertyTypes,\n )).toMatchInlineSnapshot(`\n {\n \"field\": \"geoShape\",\n \"type\": \"intersectsBoundingBox\",\n \"value\": {\n \"bottomRight\": {\n \"coordinates\": [\n -10,\n 5,\n ],\n \"type\": \"Point\",\n },\n \"topLeft\": {\n \"coordinates\": [\n -5,\n 10,\n ],\n \"type\": \"Point\",\n },\n },\n }\n `);\n });\n\n it(\"properly generates intersects polygon\", async () => {\n expect(modernToLegacyWhereClause<ObjAllProps>(\n {\n geoShape: {\n $intersects: { $polygon: [[[0, 1], [3, 2], [0, 1]]] },\n },\n },\n objectTypeWithAllPropertyTypes,\n )).toMatchInlineSnapshot(`\n {\n \"field\": \"geoShape\",\n \"type\": \"intersectsPolygon\",\n \"value\": {\n \"coordinates\": [\n [\n [\n 0,\n 1,\n ],\n [\n 3,\n 2,\n ],\n [\n 0,\n 1,\n ],\n ],\n ],\n \"type\": \"Polygon\",\n },\n }\n `);\n });\n\n it(\"properly generates within polygon geojson\", async () => {\n expect(modernToLegacyWhereClause<ObjAllProps>(\n {\n geoShape: {\n $intersects: {\n type: \"Polygon\",\n coordinates: [[[0, 1], [3, 2], [0, 1]]],\n },\n },\n },\n objectTypeWithAllPropertyTypes,\n )).toMatchInlineSnapshot(`\n {\n \"field\": \"geoShape\",\n \"type\": \"intersectsPolygon\",\n \"value\": {\n \"coordinates\": [\n [\n [\n 0,\n 1,\n ],\n [\n 3,\n 2,\n ],\n [\n 0,\n 1,\n ],\n ],\n ],\n \"type\": \"Polygon\",\n },\n }\n `);\n });\n });\n\n it(\"inverts ne short hand properly\", () => {\n expect(modernToLegacyWhereClause<ObjAllProps>({\n integer: { $ne: 5 },\n }, objectTypeWithAllPropertyTypes)).toMatchInlineSnapshot(`\n {\n \"type\": \"not\",\n \"value\": {\n \"field\": \"integer\",\n \"type\": \"eq\",\n \"value\": 5,\n },\n }\n `);\n });\n it(\"converts $containsAllTerms correctly if using new type\", () => {\n expect(modernToLegacyWhereClause<ObjAllProps>({\n string: { $containsAllTerms: { term: \"test\", fuzzySearch: true } },\n }, objectTypeWithAllPropertyTypes)).toMatchInlineSnapshot(`\n {\n \"field\": \"string\",\n \"fuzzy\": true,\n \"type\": \"containsAllTerms\",\n \"value\": \"test\",\n }\n `);\n\n expect(modernToLegacyWhereClause<ObjAllProps>({\n string: { $containsAllTerms: { term: \"test\", fuzzySearch: false } },\n }, objectTypeWithAllPropertyTypes)).toMatchInlineSnapshot(`\n {\n \"field\": \"string\",\n \"fuzzy\": false,\n \"type\": \"containsAllTerms\",\n \"value\": \"test\",\n }\n `);\n\n expect(modernToLegacyWhereClause<ObjAllProps>({\n string: { $containsAllTerms: { term: \"test\" } },\n }, objectTypeWithAllPropertyTypes)).toMatchInlineSnapshot(`\n {\n \"field\": \"string\",\n \"fuzzy\": false,\n \"type\": \"containsAllTerms\",\n \"value\": \"test\",\n }\n `);\n });\n\n it(\"converts $containsAllTerms correctly if using old type\", () => {\n expect(modernToLegacyWhereClause<ObjAllProps>({\n string: { $containsAllTerms: \"test\" },\n }, objectTypeWithAllPropertyTypes)).toMatchInlineSnapshot(`\n {\n \"field\": \"string\",\n \"fuzzy\": false,\n \"type\": \"containsAllTerms\",\n \"value\": \"test\",\n }\n `);\n });\n it(\"converts $containsAnyTerm correctly if using new type\", () => {\n expect(modernToLegacyWhereClause<ObjAllProps>({\n string: { $containsAnyTerm: { term: \"test\", fuzzySearch: true } },\n }, objectTypeWithAllPropertyTypes)).toMatchInlineSnapshot(`\n {\n \"field\": \"string\",\n \"fuzzy\": true,\n \"type\": \"containsAnyTerm\",\n \"value\": \"test\",\n }\n `);\n\n expect(modernToLegacyWhereClause<ObjAllProps>({\n string: { $containsAnyTerm: { term: \"test\", fuzzySearch: false } },\n }, objectTypeWithAllPropertyTypes)).toMatchInlineSnapshot(`\n {\n \"field\": \"string\",\n \"fuzzy\": false,\n \"type\": \"containsAnyTerm\",\n \"value\": \"test\",\n }\n `);\n\n expect(modernToLegacyWhereClause<ObjAllProps>({\n string: { $containsAnyTerm: { term: \"test\" } },\n }, objectTypeWithAllPropertyTypes)).toMatchInlineSnapshot(`\n {\n \"field\": \"string\",\n \"fuzzy\": false,\n \"type\": \"containsAnyTerm\",\n \"value\": \"test\",\n }\n `);\n });\n\n it(\"converts $containsAnyTerm correctly if using old type\", () => {\n expect(modernToLegacyWhereClause<ObjAllProps>({\n string: { $containsAnyTerm: \"test\" },\n }, objectTypeWithAllPropertyTypes)).toMatchInlineSnapshot(`\n {\n \"field\": \"string\",\n \"fuzzy\": false,\n \"type\": \"containsAnyTerm\",\n \"value\": \"test\",\n }\n `);\n });\n it(\"converts struct where clauses correctly\", () => {\n expect(modernToLegacyWhereClause<structObj>({\n address: { state: { $eq: \"NJ\" } },\n }, BgaoNflPlayer)).toMatchInlineSnapshot(`\n {\n \"field\": undefined,\n \"propertyIdentifier\": {\n \"propertyApiName\": \"address\",\n \"structFieldApiName\": \"state\",\n \"type\": \"structField\",\n },\n \"type\": \"eq\",\n \"value\": \"NJ\",\n }\n `);\n\n expect(modernToLegacyWhereClause<structObj>({\n $and: [\n { address: { state: { $eq: \"NJ\" } } },\n { address: { city: { $containsAnyTerm: \"N\" } } },\n ],\n }, BgaoNflPlayer)).toMatchInlineSnapshot(`\n {\n \"type\": \"and\",\n \"value\": [\n {\n \"field\": undefined,\n \"propertyIdentifier\": {\n \"propertyApiName\": \"address\",\n \"structFieldApiName\": \"state\",\n \"type\": \"structField\",\n },\n \"type\": \"eq\",\n \"value\": \"NJ\",\n },\n {\n \"field\": undefined,\n \"fuzzy\": false,\n \"propertyIdentifier\": {\n \"propertyApiName\": \"address\",\n \"structFieldApiName\": \"city\",\n \"type\": \"structField\",\n },\n \"type\": \"containsAnyTerm\",\n \"value\": \"N\",\n },\n ],\n }\n `);\n\n expect(modernToLegacyWhereClause<structObj>({\n $or: [\n { address: { state: { $eq: \"NJ\" } } },\n { address: { city: { $containsAnyTerm: \"N\" } } },\n { gamesPlayed: { $gt: 5 } },\n ],\n }, BgaoNflPlayer)).toMatchInlineSnapshot(`\n {\n \"type\": \"or\",\n \"value\": [\n {\n \"field\": undefined,\n \"propertyIdentifier\": {\n \"propertyApiName\": \"address\",\n \"structFieldApiName\": \"state\",\n \"type\": \"structField\",\n },\n \"type\": \"eq\",\n \"value\": \"NJ\",\n },\n {\n \"field\": undefined,\n \"fuzzy\": false,\n \"propertyIdentifier\": {\n \"propertyApiName\": \"address\",\n \"structFieldApiName\": \"city\",\n \"type\": \"structField\",\n },\n \"type\": \"containsAnyTerm\",\n \"value\": \"N\",\n },\n {\n \"field\": \"gamesPlayed\",\n \"type\": \"gt\",\n \"value\": 5,\n },\n ],\n }\n `);\n });\n });\n\n describe(\"multiple checks\", () => {\n it(\"properly handles multiple simple where checks\", () => {\n expect(modernToLegacyWhereClause<ObjAllProps>(\n {\n decimal: 5,\n integer: 10,\n },\n objectTypeWithAllPropertyTypes,\n )).toMatchInlineSnapshot(`\n {\n \"type\": \"and\",\n \"value\": [\n {\n \"field\": \"decimal\",\n \"type\": \"eq\",\n \"value\": 5,\n },\n {\n \"field\": \"integer\",\n \"type\": \"eq\",\n \"value\": 10,\n },\n ],\n }\n `);\n });\n\n it(\"properly handles $and\", () => {\n expect(modernToLegacyWhereClause<ObjAllProps>(\n {\n $and: [{\n decimal: 5,\n }, {\n integer: 10,\n }],\n },\n objectTypeWithAllPropertyTypes,\n )).toMatchInlineSnapshot(`\n {\n \"type\": \"and\",\n \"value\": [\n {\n \"field\": \"decimal\",\n \"type\": \"eq\",\n \"value\": 5,\n },\n {\n \"field\": \"integer\",\n \"type\": \"eq\",\n \"value\": 10,\n },\n ],\n }\n `);\n });\n\n it(\"properly handles $or\", () => {\n expect(modernToLegacyWhereClause<ObjAllProps>(\n {\n $or: [{\n decimal: 5,\n }, {\n integer: 10,\n }],\n },\n objectTypeWithAllPropertyTypes,\n )).toMatchInlineSnapshot(`\n {\n \"type\": \"or\",\n \"value\": [\n {\n \"field\": \"decimal\",\n \"type\": \"eq\",\n \"value\": 5,\n },\n {\n \"field\": \"integer\",\n \"type\": \"eq\",\n \"value\": 10,\n },\n ],\n }\n `);\n });\n });\n });\n\n describe(\"RDP properties\", () => {\n type TestRDPs = {\n reportCount: \"integer\";\n managerName: \"string\";\n };\n\n const mockObjectType = {\n type: \"object\" as const,\n apiName: \"TestObject\",\n __DefinitionMetadata: {\n type: \"object\" as const,\n apiName: \"TestObject\",\n displayName: \"Test Object\",\n description: undefined,\n properties: {\n department: { type: \"string\" as const },\n status: { type: \"string\" as const },\n },\n rid: \"test-rid\",\n primaryKeyApiName: \"id\",\n titleProperty: \"department\",\n links: {},\n primaryKeyType: \"string\" as const,\n icon: undefined,\n visibility: undefined,\n pluralDisplayName: \"Test Objects\",\n status: undefined,\n interfaceMap: {},\n inverseInterfaceMap: {},\n },\n };\n\n it(\"should handle RDP properties at top level\", () => {\n const whereClause: WhereClause<typeof mockObjectType, TestRDPs> = {\n department: \"Engineering\",\n reportCount: { $gte: 5 },\n managerName: \"John\",\n };\n\n const rdpNames = new Set([\"reportCount\", \"managerName\"]);\n\n const result = modernToLegacyWhereClause(\n whereClause,\n mockObjectType,\n rdpNames,\n );\n\n expect(result).toEqual({\n type: \"and\",\n value: [\n {\n type: \"eq\",\n field: \"department\",\n value: \"Engineering\",\n },\n {\n type: \"gte\",\n propertyIdentifier: {\n type: \"property\",\n apiName: \"reportCount\",\n },\n value: 5,\n },\n {\n type: \"eq\",\n propertyIdentifier: {\n type: \"property\",\n apiName: \"managerName\",\n },\n value: \"John\",\n },\n ],\n });\n });\n\n it(\"should handle RDP properties in $and clauses\", () => {\n const whereClause: WhereClause<typeof mockObjectType, TestRDPs> = {\n $and: [\n { department: \"Engineering\" },\n { reportCount: { $gte: 5 } },\n ],\n };\n\n const rdpNames = new Set([\"reportCount\"]);\n\n const result = modernToLegacyWhereClause(\n whereClause,\n mockObjectType,\n rdpNames,\n );\n\n expect(result).toEqual({\n type: \"and\",\n value: [\n {\n type: \"eq\",\n field: \"department\",\n value: \"Engineering\",\n },\n {\n type: \"gte\",\n propertyIdentifier: {\n type: \"property\",\n apiName: \"reportCount\",\n },\n value: 5,\n },\n ],\n });\n });\n\n it(\"should handle complex nested structures with RDP\", () => {\n const whereClause: WhereClause<typeof mockObjectType, TestRDPs> = {\n department: \"Engineering\",\n $and: [\n {\n $or: [\n { status: \"active\" },\n { reportCount: { $gte: 10 } },\n ],\n },\n {\n managerName: { $ne: \"Admin\" },\n },\n ],\n };\n\n const rdpNames = new Set([\"reportCount\", \"managerName\"]);\n\n const result = modernToLegacyWhereClause(\n whereClause,\n mockObjectType,\n rdpNames,\n );\n\n // The actual structure flattens the nested $and differently\n expect(result).toEqual({\n type: \"and\",\n value: [\n {\n type: \"or\",\n value: [\n {\n type: \"eq\",\n field: \"status\",\n value: \"active\",\n },\n {\n type: \"gte\",\n propertyIdentifier: {\n type: \"property\",\n apiName: \"reportCount\",\n },\n value: 10,\n },\n ],\n },\n {\n type: \"not\",\n value: {\n type: \"eq\",\n propertyIdentifier: {\n type: \"property\",\n apiName: \"managerName\",\n },\n value: \"Admin\",\n },\n },\n ],\n });\n });\n });\n});\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
* limitations under the License.
|
|
15
15
|
*/
|
|
16
16
|
|
|
17
|
-
import { extractNamespace } from "../../internal/conversions/
|
|
17
|
+
import { extractNamespace } from "../../internal/conversions/extractNamespace.js";
|
|
18
18
|
import { get$linkForInterface } from "./getDollarLink.js";
|
|
19
19
|
import { InterfaceDefRef, ObjectDefRef, UnderlyingOsdkObject } from "./InternalSymbols.js";
|
|
20
20
|
/** @internal */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createOsdkInterface.js","names":["extractNamespace","get$linkForInterface","InterfaceDefRef","ObjectDefRef","UnderlyingOsdkObject","createOsdkInterface","underlying","interfaceDef","objApiNamespace","apiName","Object","freeze","defineProperties","value","enumerable","$as","$objectType","$primaryKey","$objectSpecifier","$title","$rid","clone","$__EXPERIMENTAL__NOT_SUPPORTED_YET__getFormattedValue","get","fromEntries","keys","properties","map","p","objDef","apiNamespace","targetPropName","interfaceMap","update","$clone","key","Error","remappedProps","mapProperty","filter","x","propertyName"],"sources":["createOsdkInterface.ts"],"sourcesContent":["/*\n * Copyright 2024 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport type { InterfaceMetadata } from \"@osdk/api\";\nimport { extractNamespace } from \"../../internal/conversions/
|
|
1
|
+
{"version":3,"file":"createOsdkInterface.js","names":["extractNamespace","get$linkForInterface","InterfaceDefRef","ObjectDefRef","UnderlyingOsdkObject","createOsdkInterface","underlying","interfaceDef","objApiNamespace","apiName","Object","freeze","defineProperties","value","enumerable","$as","$objectType","$primaryKey","$objectSpecifier","$title","$rid","clone","$__EXPERIMENTAL__NOT_SUPPORTED_YET__getFormattedValue","get","fromEntries","keys","properties","map","p","objDef","apiNamespace","targetPropName","interfaceMap","update","$clone","key","Error","remappedProps","mapProperty","filter","x","propertyName"],"sources":["createOsdkInterface.ts"],"sourcesContent":["/*\n * Copyright 2024 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport type { InterfaceMetadata } from \"@osdk/api\";\nimport { extractNamespace } from \"../../internal/conversions/extractNamespace.js\";\nimport type { FetchedObjectTypeDefinition } from \"../../ontology/OntologyProvider.js\";\nimport { get$linkForInterface } from \"./getDollarLink.js\";\nimport type { InterfaceHolder } from \"./InterfaceHolder.js\";\nimport {\n InterfaceDefRef,\n ObjectDefRef,\n UnderlyingOsdkObject,\n} from \"./InternalSymbols.js\";\nimport type { ObjectHolder } from \"./ObjectHolder.js\";\n\n/** @internal */\nexport function createOsdkInterface<\n Q extends FetchedObjectTypeDefinition,\n>(\n underlying: ObjectHolder,\n interfaceDef: InterfaceMetadata,\n): InterfaceHolder {\n const [objApiNamespace] = extractNamespace(interfaceDef.apiName);\n\n return Object.freeze(\n Object.defineProperties({}, {\n // first to minimize hidden classes\n [UnderlyingOsdkObject]: { value: underlying },\n\n \"$apiName\": { value: interfaceDef.apiName, enumerable: true },\n \"$as\": {\n value: underlying.$as,\n enumerable: false,\n },\n \"$objectType\": {\n value: underlying.$objectType,\n enumerable: \"$objectType\" in underlying,\n },\n \"$primaryKey\": {\n value: underlying.$primaryKey,\n enumerable: \"$primaryKey\" in underlying,\n },\n \"$objectSpecifier\": {\n value: underlying.$objectSpecifier,\n enumerable: \"$objectSpecifier\" in underlying,\n },\n \"$title\": {\n value: underlying.$title,\n enumerable: \"$title\" in underlying,\n },\n \"$rid\": {\n value: (underlying as any).$rid,\n enumerable: \"$rid\" in underlying,\n },\n \"$clone\": {\n value: clone,\n enumerable: false,\n },\n \"$__EXPERIMENTAL__NOT_SUPPORTED_YET__metadata\": {\n value: {\n \"ObjectMetadata\": underlying[ObjectDefRef],\n \"InterfaceMetadata\": interfaceDef,\n },\n enumerable: false,\n },\n \"$__EXPERIMENTAL__NOT_SUPPORTED_YET__getFormattedValue\": {\n value: underlying.$__EXPERIMENTAL__NOT_SUPPORTED_YET__getFormattedValue,\n enumerable: false,\n },\n\n \"$link\": {\n get: function(this: InterfaceHolder) {\n return get$linkForInterface(this);\n },\n },\n\n [InterfaceDefRef]: { value: interfaceDef },\n\n ...Object.fromEntries(\n Object.keys(interfaceDef.properties).map(p => {\n const objDef = underlying[ObjectDefRef];\n\n const [apiNamespace, apiName] = extractNamespace(p);\n\n const targetPropName = objDef\n .interfaceMap![interfaceDef.apiName][p];\n\n return [apiNamespace === objApiNamespace ? apiName : p, {\n enumerable: targetPropName in underlying,\n value: underlying[targetPropName as keyof typeof underlying],\n }];\n }),\n ),\n }) as InterfaceHolder,\n );\n function clone(update: Record<string, any> | undefined) {\n if (update == null) {\n return underlying.$clone().$as(interfaceDef);\n }\n\n for (const key of Object.keys(update)) {\n if (!(key in interfaceDef.properties)) {\n throw new Error(\n `Invalid property ${key} for interface ${interfaceDef.apiName}`,\n );\n }\n }\n\n const remappedProps = Object.fromEntries(\n Object.keys(update).map(p => mapProperty(p, update[p])).filter(x =>\n x != null\n ),\n );\n\n return underlying.$clone(remappedProps).$as(interfaceDef);\n }\n function mapProperty(propertyName: string, value: any) {\n const objDef = underlying[ObjectDefRef];\n const targetPropName =\n objDef.interfaceMap![interfaceDef.apiName][propertyName];\n // If the underlying object does not implement the SPT, throw errors\n if (targetPropName == null) {\n throw new Error(\n `Cannot clone interface with ${propertyName} as property is not implemented by the underlying object type ${objDef.apiName}`,\n );\n }\n return [targetPropName, value];\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
*/
|
|
16
16
|
|
|
17
17
|
import * as OntologiesV2 from "@osdk/foundry.ontologies";
|
|
18
|
-
import { extractNamespace } from "../internal/conversions/
|
|
18
|
+
import { extractNamespace } from "../internal/conversions/extractNamespace.js";
|
|
19
19
|
import { addUserAgentAndRequestContextHeaders } from "../util/addUserAgentAndRequestContextHeaders.js";
|
|
20
20
|
import { extractObjectOrInterfaceType } from "../util/extractObjectOrInterfaceType.js";
|
|
21
21
|
import { extractRdpDefinition } from "../util/extractRdpDefinition.js";
|