@osdk/faux 0.2.0-beta.1 → 0.2.0-beta.2
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 +10 -0
- package/build/browser/FauxFoundry/getObjectsFromSet.js +7 -1
- package/build/browser/FauxFoundry/getObjectsFromSet.js.map +1 -1
- package/build/cjs/index.cjs +16 -11
- package/build/cjs/index.cjs.map +1 -1
- package/build/esm/FauxFoundry/getObjectsFromSet.js +7 -1
- package/build/esm/FauxFoundry/getObjectsFromSet.js.map +1 -1
- package/build/types/FauxFoundry/getObjectsFromSet.d.ts.map +1 -1
- package/package.json +5 -5
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,15 @@
|
|
|
1
1
|
# @osdk/shared.test
|
|
2
2
|
|
|
3
|
+
## 0.2.0-beta.2
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- Updated dependencies [29d2ada]
|
|
8
|
+
- Updated dependencies [8c95154]
|
|
9
|
+
- Updated dependencies [c32dcf2]
|
|
10
|
+
- @osdk/api@2.4.0-beta.2
|
|
11
|
+
- @osdk/generator-converters@2.4.0-beta.2
|
|
12
|
+
|
|
3
13
|
## 0.1.0-beta.6
|
|
4
14
|
|
|
5
15
|
### Patch Changes
|
|
@@ -116,8 +116,14 @@ export function getObjectsFromSet(ds, objectSet, methodInput) {
|
|
|
116
116
|
$propsToReturn
|
|
117
117
|
};
|
|
118
118
|
});
|
|
119
|
+
|
|
120
|
+
// This does not mimic KNN, it just returns `numNeighbors` objects
|
|
119
121
|
case "nearestNeighbors":
|
|
120
|
-
|
|
122
|
+
const {
|
|
123
|
+
numNeighbors
|
|
124
|
+
} = objectSet;
|
|
125
|
+
const set = getObjectsFromSet(ds, objectSet.objectSet, methodInput);
|
|
126
|
+
return set.slice(0, numNeighbors);
|
|
121
127
|
case "reference":
|
|
122
128
|
throw new Error(`Unhandled objectSet type ${JSON.stringify(objectSet)} in shared.test`);
|
|
123
129
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getObjectsFromSet.js","names":["invariant","filterObjects","getObjectsFromSet","ds","objectSet","methodInput","type","ret","Array","from","getObjectsOfType","objectType","base","where","set","Set","objSet","objectSets","objects","obj","add","i","length","toSubtract","delete","toIntersect","match","find","x","__apiName","__primaryKey","flatMap","o","getLinksOrThrow","link","map","getObjectByRid","filter","derivedProperties","extra","Object","fromEntries","entries","k","v","getDerivedPropertyValue","process","env","NODE_ENV","Error","JSON","stringify","relevantObjectTypes","ontology","getAllObjectTypes","interfaceType","implementsInterfaces2","apiName","objDef","getObjectTypeFullMetadataOrThrow","ifaceMap","$propsToReturn","includeAllBaseObjectProperties","values","properties","propApiName","objToInterface","iface","getInterfaceType","propMap","__rid","__title","sptApiName","def","getDerivedPropertySelection","operation","objs","selectedPropertyApiName","toString","createOrderBySortFn","orderBy","fns","fields","field","direction","a","b","aValue","bValue","m","sortFn"],"sources":["getObjectsFromSet.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 * as OntologiesV2 from \"@osdk/foundry.ontologies\";\nimport invariant from \"tiny-invariant\";\nimport type { BaseServerObject } from \"./BaseServerObject.js\";\nimport type { FauxDataStore } from \"./FauxDataStore.js\";\nimport { filterObjects } from \"./filterObjects.js\";\n\nexport function getObjectsFromSet(\n ds: FauxDataStore,\n objectSet: OntologiesV2.ObjectSet,\n methodInput: BaseServerObject | undefined,\n): Array<BaseServerObject> {\n switch (objectSet.type) {\n case \"base\":\n const ret = Array.from(ds.getObjectsOfType(objectSet.objectType));\n return ret;\n\n case \"filter\": {\n const base = getObjectsFromSet(ds, objectSet.objectSet, methodInput);\n return filterObjects(\n base,\n objectSet.where,\n );\n }\n\n case \"union\": {\n const set = new Set<BaseServerObject>();\n for (const objSet of objectSet.objectSets) {\n const objects = getObjectsFromSet(ds, objSet, methodInput);\n for (const obj of objects) {\n set.add(obj);\n }\n }\n return Array.from(set);\n }\n\n case \"subtract\": {\n const set = new Set<BaseServerObject>(\n getObjectsFromSet(ds, objectSet.objectSets[0], methodInput),\n );\n for (let i = 1; i < objectSet.objectSets.length; i++) {\n const toSubtract = getObjectsFromSet(\n ds,\n objectSet.objectSets[i],\n methodInput,\n );\n for (const obj of toSubtract) {\n set.delete(obj);\n }\n }\n return Array.from(set);\n }\n\n case \"intersect\": {\n const set = new Set<BaseServerObject>(\n getObjectsFromSet(ds, objectSet.objectSets[0], methodInput),\n );\n for (let i = 1; i < objectSet.objectSets.length; i++) {\n const toIntersect = getObjectsFromSet(\n ds,\n objectSet.objectSets[i],\n methodInput,\n );\n for (const obj of set) {\n const match = toIntersect.find(x =>\n x.__apiName === obj.__apiName\n && x.__primaryKey === obj.__primaryKey\n );\n\n if (!match) {\n set.delete(obj);\n } else if (obj[\"$propsToReturn\"] || match[\"$propsToReturn\"]) {\n obj[\"$propsToReturn\"] = {\n ...obj[\"$propsToReturn\"],\n ...match[\"$propsToReturn\"],\n };\n }\n }\n }\n return Array.from(set);\n }\n\n case \"searchAround\": {\n const base = getObjectsFromSet(ds, objectSet.objectSet, methodInput);\n return base.flatMap(o => {\n const ret = ds.getLinksOrThrow(\n o.__apiName,\n o.__primaryKey,\n objectSet.link,\n );\n return ret;\n });\n }\n\n case \"static\": {\n return objectSet.objects.map(x => ds.getObjectByRid(x)).filter(x =>\n x != null\n );\n }\n\n case \"withProperties\": {\n const { derivedProperties } = objectSet;\n\n const base = getObjectsFromSet(ds, objectSet.objectSet, methodInput);\n return base.map(obj => {\n const extra = Object.fromEntries(\n Object.entries(derivedProperties).map(([k, v]) => {\n return [k, getDerivedPropertyValue(ds, obj, v)];\n }),\n );\n\n return { ...obj, ...extra };\n });\n }\n\n case \"methodInput\":\n invariant(methodInput, \"expected a methodInput\");\n return [methodInput];\n\n case \"asBaseObjectTypes\":\n throw new Error(\n `Unhandled objectSet type ${JSON.stringify(objectSet)} in shared.test`,\n );\n\n case \"asType\":\n throw new Error(\n `Unhandled objectSet type ${JSON.stringify(objectSet)} in shared.test`,\n );\n\n case \"interfaceBase\":\n const relevantObjectTypes = ds\n .ontology\n .getAllObjectTypes().filter(x =>\n objectSet.interfaceType in x.implementsInterfaces2\n );\n\n // const ifaceDef = ds.ontology.getInterfaceType(objectTypeWithAllPropertyTypes);\n\n return relevantObjectTypes.flatMap(x =>\n Array.from(ds.getObjectsOfType(x.objectType.apiName))\n ).map(obj => {\n const objDef = ds.ontology.getObjectTypeFullMetadataOrThrow(\n obj.__apiName,\n );\n const ifaceMap = objDef.implementsInterfaces2[objectSet.interfaceType];\n const $propsToReturn = objectSet.includeAllBaseObjectProperties\n ? obj\n : Object.fromEntries(\n Object.values(ifaceMap.properties).map(\n (propApiName) => [propApiName, obj[propApiName]],\n ),\n );\n\n return ({\n ...objToInterface(ds, obj, objectSet.interfaceType),\n $propsToReturn,\n });\n });\n\n case \"nearestNeighbors\":\n throw new Error(\n `Unhandled objectSet type ${JSON.stringify(objectSet)} in shared.test`,\n );\n\n case \"reference\":\n throw new Error(\n `Unhandled objectSet type ${JSON.stringify(objectSet)} in shared.test`,\n );\n }\n\n throw new Error(\n `Unhandled objectSet type ${JSON.stringify(objectSet)} in shared.test`,\n );\n}\n\nfunction objToInterface(\n ds: FauxDataStore,\n o: BaseServerObject,\n iface: OntologiesV2.InterfaceTypeApiName,\n): BaseServerObject {\n const ifaceDef = ds.ontology.getInterfaceType(iface);\n const propMap = ds.ontology\n .getObjectTypeFullMetadataOrThrow(o.__apiName)\n .implementsInterfaces2[iface].properties;\n\n const { __apiName, __primaryKey, __rid, __title } = o;\n\n const ret: BaseServerObject = {\n __apiName,\n __primaryKey,\n __rid,\n __title,\n };\n for (const [sptApiName, propApiName] of Object.entries(propMap)) {\n ret[sptApiName] = o[propApiName];\n }\n return ret;\n}\n\nexport function getDerivedPropertyValue(\n ds: FauxDataStore,\n obj: BaseServerObject,\n def: OntologiesV2.DerivedPropertyDefinition,\n): any {\n switch (def.type) {\n case \"selection\": {\n return getDerivedPropertySelection(ds, obj, def);\n }\n }\n throw new Error(\n `Unhandled derived property type ${def.type} in ${JSON.stringify(def)}`,\n );\n // return obj[property.propertyIdentifier];\n}\n\nfunction getDerivedPropertySelection(\n ds: FauxDataStore,\n obj: BaseServerObject,\n { operation, objectSet }: OntologiesV2.SelectedPropertyExpression,\n) {\n switch (operation.type) {\n case \"get\": {\n const objs = getObjectsFromSet(ds, objectSet, obj);\n if (objs.length > 1) {\n throw new Error(\"Cannot get more than one object from a set\");\n }\n return objs[0]?.[operation.selectedPropertyApiName];\n }\n case \"collectList\": {\n const objs = getObjectsFromSet(ds, objectSet, obj);\n return objs.map(o => o[operation.selectedPropertyApiName]);\n }\n case \"collectSet\": {\n const objs = getObjectsFromSet(ds, objectSet, obj);\n return Array.from(\n new Set(objs.map(o => o[operation.selectedPropertyApiName])),\n );\n }\n case \"count\": {\n const objs = getObjectsFromSet(ds, objectSet, obj);\n return objs.length.toString();\n }\n }\n}\n\nexport function createOrderBySortFn(\n orderBy: OntologiesV2.SearchOrderByV2,\n) {\n const fns = orderBy.fields.map(({ field, direction }) => {\n return (\n a: BaseServerObject | undefined,\n b: BaseServerObject | undefined,\n ): number => {\n const aValue = a?.[field];\n const bValue = b?.[field];\n\n if (aValue == null && bValue == null) {\n return 0;\n }\n if (aValue == null) {\n return 1;\n }\n if (bValue == null) {\n return -1;\n }\n const m = direction === \"asc\" ? -1 : 1;\n return aValue < bValue ? m : aValue > bValue ? -m : 0;\n };\n });\n\n return (\n a: BaseServerObject | undefined,\n b: BaseServerObject | undefined,\n ): number => {\n for (const sortFn of fns) {\n const ret = sortFn(a, b);\n if (ret !== 0) {\n return ret;\n }\n }\n return 0;\n };\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"getObjectsFromSet.js","names":["invariant","filterObjects","getObjectsFromSet","ds","objectSet","methodInput","type","ret","Array","from","getObjectsOfType","objectType","base","where","set","Set","objSet","objectSets","objects","obj","add","i","length","toSubtract","delete","toIntersect","match","find","x","__apiName","__primaryKey","flatMap","o","getLinksOrThrow","link","map","getObjectByRid","filter","derivedProperties","extra","Object","fromEntries","entries","k","v","getDerivedPropertyValue","process","env","NODE_ENV","Error","JSON","stringify","relevantObjectTypes","ontology","getAllObjectTypes","interfaceType","implementsInterfaces2","apiName","objDef","getObjectTypeFullMetadataOrThrow","ifaceMap","$propsToReturn","includeAllBaseObjectProperties","values","properties","propApiName","objToInterface","numNeighbors","slice","iface","getInterfaceType","propMap","__rid","__title","sptApiName","def","getDerivedPropertySelection","operation","objs","selectedPropertyApiName","toString","createOrderBySortFn","orderBy","fns","fields","field","direction","a","b","aValue","bValue","m","sortFn"],"sources":["getObjectsFromSet.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 * as OntologiesV2 from \"@osdk/foundry.ontologies\";\nimport invariant from \"tiny-invariant\";\nimport type { BaseServerObject } from \"./BaseServerObject.js\";\nimport type { FauxDataStore } from \"./FauxDataStore.js\";\nimport { filterObjects } from \"./filterObjects.js\";\n\nexport function getObjectsFromSet(\n ds: FauxDataStore,\n objectSet: OntologiesV2.ObjectSet,\n methodInput: BaseServerObject | undefined,\n): Array<BaseServerObject> {\n switch (objectSet.type) {\n case \"base\":\n const ret = Array.from(ds.getObjectsOfType(objectSet.objectType));\n return ret;\n\n case \"filter\": {\n const base = getObjectsFromSet(ds, objectSet.objectSet, methodInput);\n return filterObjects(\n base,\n objectSet.where,\n );\n }\n\n case \"union\": {\n const set = new Set<BaseServerObject>();\n for (const objSet of objectSet.objectSets) {\n const objects = getObjectsFromSet(ds, objSet, methodInput);\n for (const obj of objects) {\n set.add(obj);\n }\n }\n return Array.from(set);\n }\n\n case \"subtract\": {\n const set = new Set<BaseServerObject>(\n getObjectsFromSet(ds, objectSet.objectSets[0], methodInput),\n );\n for (let i = 1; i < objectSet.objectSets.length; i++) {\n const toSubtract = getObjectsFromSet(\n ds,\n objectSet.objectSets[i],\n methodInput,\n );\n for (const obj of toSubtract) {\n set.delete(obj);\n }\n }\n return Array.from(set);\n }\n\n case \"intersect\": {\n const set = new Set<BaseServerObject>(\n getObjectsFromSet(ds, objectSet.objectSets[0], methodInput),\n );\n for (let i = 1; i < objectSet.objectSets.length; i++) {\n const toIntersect = getObjectsFromSet(\n ds,\n objectSet.objectSets[i],\n methodInput,\n );\n for (const obj of set) {\n const match = toIntersect.find(x =>\n x.__apiName === obj.__apiName\n && x.__primaryKey === obj.__primaryKey\n );\n\n if (!match) {\n set.delete(obj);\n } else if (obj[\"$propsToReturn\"] || match[\"$propsToReturn\"]) {\n obj[\"$propsToReturn\"] = {\n ...obj[\"$propsToReturn\"],\n ...match[\"$propsToReturn\"],\n };\n }\n }\n }\n return Array.from(set);\n }\n\n case \"searchAround\": {\n const base = getObjectsFromSet(ds, objectSet.objectSet, methodInput);\n return base.flatMap(o => {\n const ret = ds.getLinksOrThrow(\n o.__apiName,\n o.__primaryKey,\n objectSet.link,\n );\n return ret;\n });\n }\n\n case \"static\": {\n return objectSet.objects.map(x => ds.getObjectByRid(x)).filter(x =>\n x != null\n );\n }\n\n case \"withProperties\": {\n const { derivedProperties } = objectSet;\n\n const base = getObjectsFromSet(ds, objectSet.objectSet, methodInput);\n return base.map(obj => {\n const extra = Object.fromEntries(\n Object.entries(derivedProperties).map(([k, v]) => {\n return [k, getDerivedPropertyValue(ds, obj, v)];\n }),\n );\n\n return { ...obj, ...extra };\n });\n }\n\n case \"methodInput\":\n invariant(methodInput, \"expected a methodInput\");\n return [methodInput];\n\n case \"asBaseObjectTypes\":\n throw new Error(\n `Unhandled objectSet type ${JSON.stringify(objectSet)} in shared.test`,\n );\n\n case \"asType\":\n throw new Error(\n `Unhandled objectSet type ${JSON.stringify(objectSet)} in shared.test`,\n );\n\n case \"interfaceBase\":\n const relevantObjectTypes = ds\n .ontology\n .getAllObjectTypes().filter(x =>\n objectSet.interfaceType in x.implementsInterfaces2\n );\n\n // const ifaceDef = ds.ontology.getInterfaceType(objectTypeWithAllPropertyTypes);\n\n return relevantObjectTypes.flatMap(x =>\n Array.from(ds.getObjectsOfType(x.objectType.apiName))\n ).map(obj => {\n const objDef = ds.ontology.getObjectTypeFullMetadataOrThrow(\n obj.__apiName,\n );\n const ifaceMap = objDef.implementsInterfaces2[objectSet.interfaceType];\n const $propsToReturn = objectSet.includeAllBaseObjectProperties\n ? obj\n : Object.fromEntries(\n Object.values(ifaceMap.properties).map(\n (propApiName) => [propApiName, obj[propApiName]],\n ),\n );\n\n return ({\n ...objToInterface(ds, obj, objectSet.interfaceType),\n $propsToReturn,\n });\n });\n\n // This does not mimic KNN, it just returns `numNeighbors` objects\n case \"nearestNeighbors\":\n const { numNeighbors } = objectSet;\n const set = getObjectsFromSet(ds, objectSet.objectSet, methodInput);\n return set.slice(0, numNeighbors);\n\n case \"reference\":\n throw new Error(\n `Unhandled objectSet type ${JSON.stringify(objectSet)} in shared.test`,\n );\n }\n\n throw new Error(\n `Unhandled objectSet type ${JSON.stringify(objectSet)} in shared.test`,\n );\n}\n\nfunction objToInterface(\n ds: FauxDataStore,\n o: BaseServerObject,\n iface: OntologiesV2.InterfaceTypeApiName,\n): BaseServerObject {\n const ifaceDef = ds.ontology.getInterfaceType(iface);\n const propMap = ds.ontology\n .getObjectTypeFullMetadataOrThrow(o.__apiName)\n .implementsInterfaces2[iface].properties;\n\n const { __apiName, __primaryKey, __rid, __title } = o;\n\n const ret: BaseServerObject = {\n __apiName,\n __primaryKey,\n __rid,\n __title,\n };\n for (const [sptApiName, propApiName] of Object.entries(propMap)) {\n ret[sptApiName] = o[propApiName];\n }\n return ret;\n}\n\nexport function getDerivedPropertyValue(\n ds: FauxDataStore,\n obj: BaseServerObject,\n def: OntologiesV2.DerivedPropertyDefinition,\n): any {\n switch (def.type) {\n case \"selection\": {\n return getDerivedPropertySelection(ds, obj, def);\n }\n }\n throw new Error(\n `Unhandled derived property type ${def.type} in ${JSON.stringify(def)}`,\n );\n // return obj[property.propertyIdentifier];\n}\n\nfunction getDerivedPropertySelection(\n ds: FauxDataStore,\n obj: BaseServerObject,\n { operation, objectSet }: OntologiesV2.SelectedPropertyExpression,\n) {\n switch (operation.type) {\n case \"get\": {\n const objs = getObjectsFromSet(ds, objectSet, obj);\n if (objs.length > 1) {\n throw new Error(\"Cannot get more than one object from a set\");\n }\n return objs[0]?.[operation.selectedPropertyApiName];\n }\n case \"collectList\": {\n const objs = getObjectsFromSet(ds, objectSet, obj);\n return objs.map(o => o[operation.selectedPropertyApiName]);\n }\n case \"collectSet\": {\n const objs = getObjectsFromSet(ds, objectSet, obj);\n return Array.from(\n new Set(objs.map(o => o[operation.selectedPropertyApiName])),\n );\n }\n case \"count\": {\n const objs = getObjectsFromSet(ds, objectSet, obj);\n return objs.length.toString();\n }\n }\n}\n\nexport function createOrderBySortFn(\n orderBy: OntologiesV2.SearchOrderByV2,\n) {\n const fns = orderBy.fields.map(({ field, direction }) => {\n return (\n a: BaseServerObject | undefined,\n b: BaseServerObject | undefined,\n ): number => {\n const aValue = a?.[field];\n const bValue = b?.[field];\n\n if (aValue == null && bValue == null) {\n return 0;\n }\n if (aValue == null) {\n return 1;\n }\n if (bValue == null) {\n return -1;\n }\n const m = direction === \"asc\" ? -1 : 1;\n return aValue < bValue ? m : aValue > bValue ? -m : 0;\n };\n });\n\n return (\n a: BaseServerObject | undefined,\n b: BaseServerObject | undefined,\n ): number => {\n for (const sortFn of fns) {\n const ret = sortFn(a, b);\n if (ret !== 0) {\n return ret;\n }\n }\n return 0;\n };\n}\n"],"mappings":"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","ignoreList":[]}
|
package/build/cjs/index.cjs
CHANGED
|
@@ -719,33 +719,33 @@ function getObjectsFromSet(ds, objectSet, methodInput) {
|
|
|
719
719
|
return filterObjects(base, objectSet.where);
|
|
720
720
|
}
|
|
721
721
|
case "union": {
|
|
722
|
-
const
|
|
722
|
+
const set2 = /* @__PURE__ */ new Set();
|
|
723
723
|
for (const objSet of objectSet.objectSets) {
|
|
724
724
|
const objects = getObjectsFromSet(ds, objSet, methodInput);
|
|
725
725
|
for (const obj of objects) {
|
|
726
|
-
|
|
726
|
+
set2.add(obj);
|
|
727
727
|
}
|
|
728
728
|
}
|
|
729
|
-
return Array.from(
|
|
729
|
+
return Array.from(set2);
|
|
730
730
|
}
|
|
731
731
|
case "subtract": {
|
|
732
|
-
const
|
|
732
|
+
const set2 = new Set(getObjectsFromSet(ds, objectSet.objectSets[0], methodInput));
|
|
733
733
|
for (let i = 1; i < objectSet.objectSets.length; i++) {
|
|
734
734
|
const toSubtract = getObjectsFromSet(ds, objectSet.objectSets[i], methodInput);
|
|
735
735
|
for (const obj of toSubtract) {
|
|
736
|
-
|
|
736
|
+
set2.delete(obj);
|
|
737
737
|
}
|
|
738
738
|
}
|
|
739
|
-
return Array.from(
|
|
739
|
+
return Array.from(set2);
|
|
740
740
|
}
|
|
741
741
|
case "intersect": {
|
|
742
|
-
const
|
|
742
|
+
const set2 = new Set(getObjectsFromSet(ds, objectSet.objectSets[0], methodInput));
|
|
743
743
|
for (let i = 1; i < objectSet.objectSets.length; i++) {
|
|
744
744
|
const toIntersect = getObjectsFromSet(ds, objectSet.objectSets[i], methodInput);
|
|
745
|
-
for (const obj of
|
|
745
|
+
for (const obj of set2) {
|
|
746
746
|
const match = toIntersect.find((x) => x.__apiName === obj.__apiName && x.__primaryKey === obj.__primaryKey);
|
|
747
747
|
if (!match) {
|
|
748
|
-
|
|
748
|
+
set2.delete(obj);
|
|
749
749
|
} else if (obj["$propsToReturn"] || match["$propsToReturn"]) {
|
|
750
750
|
obj["$propsToReturn"] = {
|
|
751
751
|
...obj["$propsToReturn"],
|
|
@@ -754,7 +754,7 @@ function getObjectsFromSet(ds, objectSet, methodInput) {
|
|
|
754
754
|
}
|
|
755
755
|
}
|
|
756
756
|
}
|
|
757
|
-
return Array.from(
|
|
757
|
+
return Array.from(set2);
|
|
758
758
|
}
|
|
759
759
|
case "searchAround": {
|
|
760
760
|
const base = getObjectsFromSet(ds, objectSet.objectSet, methodInput);
|
|
@@ -799,8 +799,13 @@ function getObjectsFromSet(ds, objectSet, methodInput) {
|
|
|
799
799
|
$propsToReturn
|
|
800
800
|
};
|
|
801
801
|
});
|
|
802
|
+
// This does not mimic KNN, it just returns `numNeighbors` objects
|
|
802
803
|
case "nearestNeighbors":
|
|
803
|
-
|
|
804
|
+
const {
|
|
805
|
+
numNeighbors
|
|
806
|
+
} = objectSet;
|
|
807
|
+
const set = getObjectsFromSet(ds, objectSet.objectSet, methodInput);
|
|
808
|
+
return set.slice(0, numNeighbors);
|
|
804
809
|
case "reference":
|
|
805
810
|
throw new Error(`Unhandled objectSet type ${JSON.stringify(objectSet)} in shared.test`);
|
|
806
811
|
}
|