@osdk/client 2.7.0-beta.12 → 2.7.0-beta.14

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (49) hide show
  1. package/CHANGELOG.md +26 -0
  2. package/build/browser/internal/conversions/modernToLegacyWhereClause.js +14 -9
  3. package/build/browser/internal/conversions/modernToLegacyWhereClause.js.map +1 -1
  4. package/build/browser/internal/conversions/modernToLegacyWhereClause.test.js +74 -0
  5. package/build/browser/internal/conversions/modernToLegacyWhereClause.test.js.map +1 -1
  6. package/build/browser/observable/internal/evaluateFilter.js +1 -1
  7. package/build/browser/observable/internal/evaluateFilter.js.map +1 -1
  8. package/build/browser/observable/internal/evaluateFilter.test.js +105 -0
  9. package/build/browser/observable/internal/evaluateFilter.test.js.map +1 -0
  10. package/build/browser/observable/internal/list/ListQuery.test.js +86 -1
  11. package/build/browser/observable/internal/list/ListQuery.test.js.map +1 -1
  12. package/build/browser/observable/internal/list/ObjectListQuery.js +4 -4
  13. package/build/browser/observable/internal/list/ObjectListQuery.js.map +1 -1
  14. package/build/browser/observable/internal/object/ObjectQuery.js +12 -1
  15. package/build/browser/observable/internal/object/ObjectQuery.js.map +1 -1
  16. package/build/browser/observable/internal/objectMatchesWhereClause.test.js +11 -1
  17. package/build/browser/observable/internal/objectMatchesWhereClause.test.js.map +1 -1
  18. package/build/browser/util/UserAgent.js +2 -2
  19. package/build/cjs/{chunk-4HXJEKQT.cjs → chunk-VVKEXIIO.cjs} +16 -9
  20. package/build/cjs/chunk-VVKEXIIO.cjs.map +1 -0
  21. package/build/cjs/{chunk-62RUUOW2.cjs → chunk-VX7CVNQZ.cjs} +65 -65
  22. package/build/cjs/{chunk-62RUUOW2.cjs.map → chunk-VX7CVNQZ.cjs.map} +1 -1
  23. package/build/cjs/index.cjs +8 -8
  24. package/build/cjs/public/internal.cjs +8 -8
  25. package/build/cjs/public/unstable-do-not-use.cjs +65 -55
  26. package/build/cjs/public/unstable-do-not-use.cjs.map +1 -1
  27. package/build/esm/internal/conversions/modernToLegacyWhereClause.js +14 -9
  28. package/build/esm/internal/conversions/modernToLegacyWhereClause.js.map +1 -1
  29. package/build/esm/internal/conversions/modernToLegacyWhereClause.test.js +74 -0
  30. package/build/esm/internal/conversions/modernToLegacyWhereClause.test.js.map +1 -1
  31. package/build/esm/observable/internal/evaluateFilter.js +1 -1
  32. package/build/esm/observable/internal/evaluateFilter.js.map +1 -1
  33. package/build/esm/observable/internal/evaluateFilter.test.js +105 -0
  34. package/build/esm/observable/internal/evaluateFilter.test.js.map +1 -0
  35. package/build/esm/observable/internal/list/ListQuery.test.js +86 -1
  36. package/build/esm/observable/internal/list/ListQuery.test.js.map +1 -1
  37. package/build/esm/observable/internal/list/ObjectListQuery.js +4 -4
  38. package/build/esm/observable/internal/list/ObjectListQuery.js.map +1 -1
  39. package/build/esm/observable/internal/object/ObjectQuery.js +12 -1
  40. package/build/esm/observable/internal/object/ObjectQuery.js.map +1 -1
  41. package/build/esm/observable/internal/objectMatchesWhereClause.test.js +11 -1
  42. package/build/esm/observable/internal/objectMatchesWhereClause.test.js.map +1 -1
  43. package/build/esm/util/UserAgent.js +2 -2
  44. package/build/types/observable/internal/evaluateFilter.test.d.ts +1 -0
  45. package/build/types/observable/internal/evaluateFilter.test.d.ts.map +1 -0
  46. package/build/types/observable/internal/list/ObjectListQuery.d.ts.map +1 -1
  47. package/build/types/observable/internal/object/ObjectQuery.d.ts.map +1 -1
  48. package/package.json +9 -9
  49. package/build/cjs/chunk-4HXJEKQT.cjs.map +0 -1
package/CHANGELOG.md CHANGED
@@ -1,5 +1,31 @@
1
1
  # @osdk/client
2
2
 
3
+ ## 2.7.0-beta.14
4
+
5
+ ### Minor Changes
6
+
7
+ - 24730c7: fix rdp pivot behavior
8
+ - ecd18e2: fix pivotTo with where usage
9
+
10
+ ### Patch Changes
11
+
12
+ - @osdk/api@2.7.0-beta.14
13
+ - @osdk/client.unstable@2.7.0-beta.14
14
+ - @osdk/generator-converters@2.7.0-beta.14
15
+
16
+ ## 2.7.0-beta.13
17
+
18
+ ### Minor Changes
19
+
20
+ - fb83808: Allow arrays to use all subtype filters
21
+
22
+ ### Patch Changes
23
+
24
+ - Updated dependencies [fb83808]
25
+ - @osdk/api@2.7.0-beta.13
26
+ - @osdk/client.unstable@2.7.0-beta.13
27
+ - @osdk/generator-converters@2.7.0-beta.13
28
+
3
29
  ## 2.7.0-beta.12
4
30
 
5
31
  ### Minor Changes
@@ -106,16 +106,21 @@ function handleWherePair([fieldName, filter], objectOrInterface, structFieldSele
106
106
  }
107
107
  const firstKey = keysOfFilter[0];
108
108
  !(filter[firstKey] != null) ? process.env.NODE_ENV !== "production" ? invariant(false) : invariant(false) : void 0;
109
-
110
- // Struct array
111
109
  if (firstKey === "$contains" && filter[firstKey] instanceof Object) {
112
- const structFilter = Object.entries(filter[firstKey]);
113
- !(structFilter.length === 1) ? process.env.NODE_ENV !== "production" ? invariant(false, "Cannot filter on more than one struct field in the same clause, need to use an and clause") : invariant(false) : void 0;
114
- const structFieldApiName = structFilter[0][0];
115
- return handleWherePair(structFilter[0], objectOrInterface, {
116
- propertyApiName: fieldName,
117
- structFieldApiName
118
- });
110
+ const containsValue = filter[firstKey];
111
+ const containsKeys = Object.keys(containsValue);
112
+ const isFilterObject = containsKeys.some(key => key.startsWith("$"));
113
+ if (isFilterObject) {
114
+ return handleWherePair([fieldName, containsValue], objectOrInterface, structFieldSelector, rdpNames);
115
+ } else {
116
+ const structFilter = Object.entries(containsValue);
117
+ !(structFilter.length === 1) ? process.env.NODE_ENV !== "production" ? invariant(false, "Cannot filter on more than one struct field in the same clause, need to use an and clause") : invariant(false) : void 0;
118
+ const structFieldApiName = structFilter[0][0];
119
+ return handleWherePair(structFilter[0], objectOrInterface, {
120
+ propertyApiName: fieldName,
121
+ structFieldApiName
122
+ });
123
+ }
119
124
  }
120
125
  if (firstKey === "$ne") {
121
126
  return {
@@ -1 +1 @@
1
- {"version":3,"file":"modernToLegacyWhereClause.js","names":["invariant","fullyQualifyPropName","makeGeoFilterIntersects","makeGeoFilterWithin","isAndClause","whereClause","$and","undefined","isOrClause","$or","isNotClause","$not","modernToLegacyWhereClause","objectOrInterface","rdpNames","parts","Object","entries","map","key","value","length","modernToLegacyWhereClauseInner","type","v","process","env","NODE_ENV","clause","handleWherePair","fieldName","filter","structFieldSelector","isRdp","has","propertyIdentifier","apiName","propertyApiName","field","keysOfFilter","keys","hasDollarSign","some","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 const parts = Object.entries(whereClause).map(([key, value]) => ({\n [key]: value,\n })) as WhereClause<T, RDPs>[];\n if (parts.length === 1) {\n return modernToLegacyWhereClauseInner(\n whereClause,\n objectOrInterface,\n rdpNames,\n );\n }\n return {\n type: \"and\",\n value: parts.map<SearchJsonQueryV2>(\n v => modernToLegacyWhereClauseInner(v, objectOrInterface, rdpNames),\n ),\n };\n}\n\n/** @internal */\nexport function modernToLegacyWhereClauseInner<\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 const parts = Object.entries(whereClause);\n\n invariant(parts.length === 1, \"Invalid where clause provided.\");\n\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 return handleWherePair(parts[0], objectOrInterface, undefined, rdpNames);\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 invariant(\n field == null\n || propertyIdentifier == null && (field != null || isRdp != null),\n \"Encountered error constructing where clause: field and propertyIdentifier cannot both be defined\",\n );\n\n if (\n typeof filter === \"string\" || typeof filter === \"number\"\n || typeof filter === \"boolean\"\n ) {\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 // Struct\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 // Struct array\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\n return handleWherePair(structFilter[0], objectOrInterface, {\n propertyApiName: fieldName,\n structFieldApiName,\n });\n }\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 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":[]}
1
+ {"version":3,"file":"modernToLegacyWhereClause.js","names":["invariant","fullyQualifyPropName","makeGeoFilterIntersects","makeGeoFilterWithin","isAndClause","whereClause","$and","undefined","isOrClause","$or","isNotClause","$not","modernToLegacyWhereClause","objectOrInterface","rdpNames","parts","Object","entries","map","key","value","length","modernToLegacyWhereClauseInner","type","v","process","env","NODE_ENV","clause","handleWherePair","fieldName","filter","structFieldSelector","isRdp","has","propertyIdentifier","apiName","propertyApiName","field","keysOfFilter","keys","hasDollarSign","some","startsWith","structFilter","structFieldApiName","firstKey","containsValue","containsKeys","isFilterObject","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 const parts = Object.entries(whereClause).map(([key, value]) => ({\n [key]: value,\n })) as WhereClause<T, RDPs>[];\n if (parts.length === 1) {\n return modernToLegacyWhereClauseInner(\n whereClause,\n objectOrInterface,\n rdpNames,\n );\n }\n return {\n type: \"and\",\n value: parts.map<SearchJsonQueryV2>(\n v => modernToLegacyWhereClauseInner(v, objectOrInterface, rdpNames),\n ),\n };\n}\n\n/** @internal */\nexport function modernToLegacyWhereClauseInner<\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 const parts = Object.entries(whereClause);\n\n invariant(parts.length === 1, \"Invalid where clause provided.\");\n\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 return handleWherePair(parts[0], objectOrInterface, undefined, rdpNames);\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 invariant(\n field == null\n || propertyIdentifier == null && (field != null || isRdp != null),\n \"Encountered error constructing where clause: field and propertyIdentifier cannot both be defined\",\n );\n\n if (\n typeof filter === \"string\" || typeof filter === \"number\"\n || typeof filter === \"boolean\"\n ) {\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 // Struct\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 === \"$contains\" && filter[firstKey] instanceof Object) {\n const containsValue = filter[firstKey];\n const containsKeys = Object.keys(containsValue);\n\n const isFilterObject = containsKeys.some(key => key.startsWith(\"$\"));\n\n if (isFilterObject) {\n return handleWherePair(\n [fieldName, containsValue],\n objectOrInterface,\n structFieldSelector,\n rdpNames,\n );\n } else {\n const structFilter: [string, any][] = Object.entries(containsValue);\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\n return handleWherePair(structFilter[0], objectOrInterface, {\n propertyApiName: fieldName,\n structFieldApiName,\n });\n }\n }\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 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":[]}
@@ -969,6 +969,80 @@ describe(modernToLegacyWhereClause, () => {
969
969
  }
970
970
  `);
971
971
  });
972
+ it("converts primitive arrays with nested filters correctly", () => {
973
+ expect(modernToLegacyWhereClause({
974
+ integerArray: {
975
+ $contains: {
976
+ $lt: 5
977
+ }
978
+ }
979
+ }, objectTypeWithAllPropertyTypes)).toMatchInlineSnapshot(`
980
+ {
981
+ "field": "integerArray",
982
+ "type": "lt",
983
+ "value": 5,
984
+ }
985
+ `);
986
+ expect(modernToLegacyWhereClause({
987
+ stringArray: {
988
+ $contains: {
989
+ $startsWith: "test"
990
+ }
991
+ }
992
+ }, objectTypeWithAllPropertyTypes)).toMatchInlineSnapshot(`
993
+ {
994
+ "field": "stringArray",
995
+ "type": "startsWith",
996
+ "value": "test",
997
+ }
998
+ `);
999
+ expect(modernToLegacyWhereClause({
1000
+ booleanArray: {
1001
+ $contains: {
1002
+ $eq: true
1003
+ }
1004
+ }
1005
+ }, objectTypeWithAllPropertyTypes)).toMatchInlineSnapshot(`
1006
+ {
1007
+ "field": "booleanArray",
1008
+ "type": "eq",
1009
+ "value": true,
1010
+ }
1011
+ `);
1012
+ });
1013
+ it("converts primitive arrays with multiple nested filter conditions", () => {
1014
+ expect(modernToLegacyWhereClause({
1015
+ $and: [{
1016
+ integerArray: {
1017
+ $contains: {
1018
+ $gte: 1
1019
+ }
1020
+ }
1021
+ }, {
1022
+ integerArray: {
1023
+ $contains: {
1024
+ $lt: 10
1025
+ }
1026
+ }
1027
+ }]
1028
+ }, objectTypeWithAllPropertyTypes)).toMatchInlineSnapshot(`
1029
+ {
1030
+ "type": "and",
1031
+ "value": [
1032
+ {
1033
+ "field": "integerArray",
1034
+ "type": "gte",
1035
+ "value": 1,
1036
+ },
1037
+ {
1038
+ "field": "integerArray",
1039
+ "type": "lt",
1040
+ "value": 10,
1041
+ },
1042
+ ],
1043
+ }
1044
+ `);
1045
+ });
972
1046
  });
973
1047
  describe("multiple checks", () => {
974
1048
  it("properly handles multiple simple where checks", () => {
@@ -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","addressArray","$contains","zipCode","$gte","location","decimal","result","$not","$in","boolean","mockObjectType","department","status","primaryKeyApiName","titleProperty","primaryKeyType","icon","visibility","pluralDisplayName","interfaceMap","inverseInterfaceMap","rdpNames","Set","reportCount","managerName"],"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 it(\"converts struct arrays correctly\", () => {\n expect(\n modernToLegacyWhereClause<structObj>({\n $and: [{\n addressArray: { $contains: { zipCode: { $gte: 10001 } } },\n }, {\n addressArray: {\n $contains: {\n location: {\n $within: [1, 2, 3, 4],\n },\n },\n },\n }],\n }, BgaoNflPlayer),\n )\n .toMatchInlineSnapshot(`\n {\n \"type\": \"and\",\n \"value\": [\n {\n \"field\": undefined,\n \"propertyIdentifier\": {\n \"propertyApiName\": \"addressArray\",\n \"structFieldApiName\": \"zipCode\",\n \"type\": \"structField\",\n },\n \"type\": \"gte\",\n \"value\": 10001,\n },\n {\n \"field\": undefined,\n \"propertyIdentifier\": {\n \"propertyApiName\": \"addressArray\",\n \"structFieldApiName\": \"location\",\n \"type\": \"structField\",\n },\n \"type\": \"withinBoundingBox\",\n \"value\": {\n \"bottomRight\": {\n \"coordinates\": [\n 3,\n 2,\n ],\n \"type\": \"Point\",\n },\n \"topLeft\": {\n \"coordinates\": [\n 1,\n 4,\n ],\n \"type\": \"Point\",\n },\n },\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(\"mixed $ operators and regular properties\", () => {\n it(\"should handle $not operator with regular properties at top level\", () => {\n const whereClause: WhereClause<ObjAllProps> = {\n integer: { $eq: 5 },\n $not: { string: { $in: [\"a\", \"b\", \"c\"] } },\n };\n\n const result = modernToLegacyWhereClause(\n whereClause,\n objectTypeWithAllPropertyTypes,\n );\n\n expect(result).toMatchInlineSnapshot(`\n {\n \"type\": \"and\",\n \"value\": [\n {\n \"field\": \"integer\",\n \"type\": \"eq\",\n \"value\": 5,\n },\n {\n \"type\": \"not\",\n \"value\": {\n \"field\": \"string\",\n \"type\": \"in\",\n \"value\": [\n \"a\",\n \"b\",\n \"c\",\n ],\n },\n },\n ],\n }\n `);\n });\n\n it(\"should handle multiple regular properties with $not at top level\", () => {\n const whereClause: WhereClause<ObjAllProps> = {\n integer: 5,\n boolean: true,\n $not: { string: { $eq: \"excluded\" } },\n };\n\n const result = modernToLegacyWhereClause(\n whereClause,\n objectTypeWithAllPropertyTypes,\n );\n\n expect(result).toMatchInlineSnapshot(`\n {\n \"type\": \"and\",\n \"value\": [\n {\n \"field\": \"integer\",\n \"type\": \"eq\",\n \"value\": 5,\n },\n {\n \"field\": \"boolean\",\n \"type\": \"eq\",\n \"value\": true,\n },\n {\n \"type\": \"not\",\n \"value\": {\n \"field\": \"string\",\n \"type\": \"eq\",\n \"value\": \"excluded\",\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).toMatchInlineSnapshot(`\n {\n \"type\": \"and\",\n \"value\": [\n {\n \"field\": \"department\",\n \"type\": \"eq\",\n \"value\": \"Engineering\",\n },\n {\n \"field\": undefined,\n \"propertyIdentifier\": {\n \"apiName\": \"reportCount\",\n \"type\": \"property\",\n },\n \"type\": \"gte\",\n \"value\": 5,\n },\n {\n \"field\": undefined,\n \"propertyIdentifier\": {\n \"apiName\": \"managerName\",\n \"type\": \"property\",\n },\n \"type\": \"eq\",\n \"value\": \"John\",\n },\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).toMatchInlineSnapshot(`\n {\n \"type\": \"and\",\n \"value\": [\n {\n \"field\": \"department\",\n \"type\": \"eq\",\n \"value\": \"Engineering\",\n },\n {\n \"field\": undefined,\n \"propertyIdentifier\": {\n \"apiName\": \"reportCount\",\n \"type\": \"property\",\n },\n \"type\": \"gte\",\n \"value\": 5,\n },\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).toMatchInlineSnapshot(`\n {\n \"type\": \"and\",\n \"value\": [\n {\n \"field\": \"department\",\n \"type\": \"eq\",\n \"value\": \"Engineering\",\n },\n {\n \"type\": \"and\",\n \"value\": [\n {\n \"type\": \"or\",\n \"value\": [\n {\n \"field\": \"status\",\n \"type\": \"eq\",\n \"value\": \"active\",\n },\n {\n \"field\": undefined,\n \"propertyIdentifier\": {\n \"apiName\": \"reportCount\",\n \"type\": \"property\",\n },\n \"type\": \"gte\",\n \"value\": 10,\n },\n ],\n },\n {\n \"type\": \"not\",\n \"value\": {\n \"field\": undefined,\n \"propertyIdentifier\": {\n \"apiName\": \"managerName\",\n \"type\": \"property\",\n },\n \"type\": \"eq\",\n \"value\": \"Admin\",\n },\n },\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","addressArray","$contains","zipCode","$gte","location","integerArray","$lt","stringArray","$startsWith","booleanArray","decimal","result","$not","$in","boolean","mockObjectType","department","status","primaryKeyApiName","titleProperty","primaryKeyType","icon","visibility","pluralDisplayName","interfaceMap","inverseInterfaceMap","rdpNames","Set","reportCount","managerName"],"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 it(\"converts struct arrays correctly\", () => {\n expect(\n modernToLegacyWhereClause<structObj>({\n $and: [{\n addressArray: { $contains: { zipCode: { $gte: 10001 } } },\n }, {\n addressArray: {\n $contains: {\n location: {\n $within: [1, 2, 3, 4],\n },\n },\n },\n }],\n }, BgaoNflPlayer),\n )\n .toMatchInlineSnapshot(`\n {\n \"type\": \"and\",\n \"value\": [\n {\n \"field\": undefined,\n \"propertyIdentifier\": {\n \"propertyApiName\": \"addressArray\",\n \"structFieldApiName\": \"zipCode\",\n \"type\": \"structField\",\n },\n \"type\": \"gte\",\n \"value\": 10001,\n },\n {\n \"field\": undefined,\n \"propertyIdentifier\": {\n \"propertyApiName\": \"addressArray\",\n \"structFieldApiName\": \"location\",\n \"type\": \"structField\",\n },\n \"type\": \"withinBoundingBox\",\n \"value\": {\n \"bottomRight\": {\n \"coordinates\": [\n 3,\n 2,\n ],\n \"type\": \"Point\",\n },\n \"topLeft\": {\n \"coordinates\": [\n 1,\n 4,\n ],\n \"type\": \"Point\",\n },\n },\n },\n ],\n }\n `);\n });\n\n it(\"converts primitive arrays with nested filters correctly\", () => {\n expect(\n modernToLegacyWhereClause<ObjAllProps>({\n integerArray: { $contains: { $lt: 5 } },\n }, objectTypeWithAllPropertyTypes),\n ).toMatchInlineSnapshot(`\n {\n \"field\": \"integerArray\",\n \"type\": \"lt\",\n \"value\": 5,\n }\n `);\n\n expect(\n modernToLegacyWhereClause<ObjAllProps>({\n stringArray: { $contains: { $startsWith: \"test\" } },\n }, objectTypeWithAllPropertyTypes),\n ).toMatchInlineSnapshot(`\n {\n \"field\": \"stringArray\",\n \"type\": \"startsWith\",\n \"value\": \"test\",\n }\n `);\n\n expect(\n modernToLegacyWhereClause<ObjAllProps>({\n booleanArray: { $contains: { $eq: true } },\n }, objectTypeWithAllPropertyTypes),\n ).toMatchInlineSnapshot(`\n {\n \"field\": \"booleanArray\",\n \"type\": \"eq\",\n \"value\": true,\n }\n `);\n });\n\n it(\"converts primitive arrays with multiple nested filter conditions\", () => {\n expect(\n modernToLegacyWhereClause<ObjAllProps>({\n $and: [\n { integerArray: { $contains: { $gte: 1 } } },\n { integerArray: { $contains: { $lt: 10 } } },\n ],\n }, objectTypeWithAllPropertyTypes),\n ).toMatchInlineSnapshot(`\n {\n \"type\": \"and\",\n \"value\": [\n {\n \"field\": \"integerArray\",\n \"type\": \"gte\",\n \"value\": 1,\n },\n {\n \"field\": \"integerArray\",\n \"type\": \"lt\",\n \"value\": 10,\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(\"mixed $ operators and regular properties\", () => {\n it(\"should handle $not operator with regular properties at top level\", () => {\n const whereClause: WhereClause<ObjAllProps> = {\n integer: { $eq: 5 },\n $not: { string: { $in: [\"a\", \"b\", \"c\"] } },\n };\n\n const result = modernToLegacyWhereClause(\n whereClause,\n objectTypeWithAllPropertyTypes,\n );\n\n expect(result).toMatchInlineSnapshot(`\n {\n \"type\": \"and\",\n \"value\": [\n {\n \"field\": \"integer\",\n \"type\": \"eq\",\n \"value\": 5,\n },\n {\n \"type\": \"not\",\n \"value\": {\n \"field\": \"string\",\n \"type\": \"in\",\n \"value\": [\n \"a\",\n \"b\",\n \"c\",\n ],\n },\n },\n ],\n }\n `);\n });\n\n it(\"should handle multiple regular properties with $not at top level\", () => {\n const whereClause: WhereClause<ObjAllProps> = {\n integer: 5,\n boolean: true,\n $not: { string: { $eq: \"excluded\" } },\n };\n\n const result = modernToLegacyWhereClause(\n whereClause,\n objectTypeWithAllPropertyTypes,\n );\n\n expect(result).toMatchInlineSnapshot(`\n {\n \"type\": \"and\",\n \"value\": [\n {\n \"field\": \"integer\",\n \"type\": \"eq\",\n \"value\": 5,\n },\n {\n \"field\": \"boolean\",\n \"type\": \"eq\",\n \"value\": true,\n },\n {\n \"type\": \"not\",\n \"value\": {\n \"field\": \"string\",\n \"type\": \"eq\",\n \"value\": \"excluded\",\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).toMatchInlineSnapshot(`\n {\n \"type\": \"and\",\n \"value\": [\n {\n \"field\": \"department\",\n \"type\": \"eq\",\n \"value\": \"Engineering\",\n },\n {\n \"field\": undefined,\n \"propertyIdentifier\": {\n \"apiName\": \"reportCount\",\n \"type\": \"property\",\n },\n \"type\": \"gte\",\n \"value\": 5,\n },\n {\n \"field\": undefined,\n \"propertyIdentifier\": {\n \"apiName\": \"managerName\",\n \"type\": \"property\",\n },\n \"type\": \"eq\",\n \"value\": \"John\",\n },\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).toMatchInlineSnapshot(`\n {\n \"type\": \"and\",\n \"value\": [\n {\n \"field\": \"department\",\n \"type\": \"eq\",\n \"value\": \"Engineering\",\n },\n {\n \"field\": undefined,\n \"propertyIdentifier\": {\n \"apiName\": \"reportCount\",\n \"type\": \"property\",\n },\n \"type\": \"gte\",\n \"value\": 5,\n },\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).toMatchInlineSnapshot(`\n {\n \"type\": \"and\",\n \"value\": [\n {\n \"field\": \"department\",\n \"type\": \"eq\",\n \"value\": \"Engineering\",\n },\n {\n \"type\": \"and\",\n \"value\": [\n {\n \"type\": \"or\",\n \"value\": [\n {\n \"field\": \"status\",\n \"type\": \"eq\",\n \"value\": \"active\",\n },\n {\n \"field\": undefined,\n \"propertyIdentifier\": {\n \"apiName\": \"reportCount\",\n \"type\": \"property\",\n },\n \"type\": \"gte\",\n \"value\": 10,\n },\n ],\n },\n {\n \"type\": \"not\",\n \"value\": {\n \"field\": undefined,\n \"propertyIdentifier\": {\n \"apiName\": \"managerName\",\n \"type\": \"property\",\n },\n \"type\": \"eq\",\n \"value\": \"Admin\",\n },\n },\n ],\n },\n ],\n }\n `);\n });\n });\n});\n"],"mappings":"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","ignoreList":[]}
@@ -35,7 +35,7 @@ export function evaluateFilter(f, realValue, expected, strict) {
35
35
  case "$ne":
36
36
  return realValue !== expected;
37
37
  case "$in":
38
- return expected.$in.includes(realValue);
38
+ return Array.isArray(expected) && expected.includes(realValue);
39
39
  case "$isNull":
40
40
  return realValue == null;
41
41
  case "$startsWith":
@@ -1 +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
+ {"version":3,"file":"evaluateFilter.js","names":["invariant","evaluateFilter","f","realValue","expected","strict","Array","isArray","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 Array.isArray(expected) && expected.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,OAAOE,KAAK,CAACC,OAAO,CAACH,QAAQ,CAAC,IAAIA,QAAQ,CAACI,QAAQ,CAACL,SAAS,CAAC;IAChE,KAAK,SAAS;MACZ,OAAOA,SAAS,IAAI,IAAI;IAC1B,KAAK,aAAa;MAChB,OAAOA,SAAS,CAACM,UAAU,CAACL,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,IAAIK,OAAO,CAACC,GAAG,CAACC,QAAQ,KAAK,YAAY,EAAE;QAEzCF,OAAA,CAAAC,GAAA,CAAAC,QAAA,oBAAAZ,SAAS,QAAQ,wBAAwBE,CAAC,EAAE,IAA5CF,SAAS;MACX;MACA,OAAO,CAACK,MAAM;EAClB;AACF","ignoreList":[]}