aboutsummaryrefslogtreecommitdiff
path: root/packages/idb-bridge/src/util/getIndexKeys.ts
diff options
context:
space:
mode:
Diffstat (limited to 'packages/idb-bridge/src/util/getIndexKeys.ts')
-rw-r--r--packages/idb-bridge/src/util/getIndexKeys.ts28
1 files changed, 28 insertions, 0 deletions
diff --git a/packages/idb-bridge/src/util/getIndexKeys.ts b/packages/idb-bridge/src/util/getIndexKeys.ts
new file mode 100644
index 000000000..416cf9ea2
--- /dev/null
+++ b/packages/idb-bridge/src/util/getIndexKeys.ts
@@ -0,0 +1,28 @@
+import { Key, Value, KeyPath } from "./types";
+import extractKey from "./extractKey";
+import valueToKey from "./valueToKey";
+
+export function getIndexKeys(
+ value: Value,
+ keyPath: KeyPath,
+ multiEntry: boolean,
+): Key[] {
+ if (multiEntry && Array.isArray(keyPath)) {
+ const keys = [];
+ for (const subkeyPath of keyPath) {
+ const key = extractKey(subkeyPath, value);
+ try {
+ const k = valueToKey(key);
+ keys.push(k);
+ } catch {
+ // Ignore invalid subkeys
+ }
+ }
+ return keys;
+ } else {
+ let key = extractKey(keyPath, value);
+ return [valueToKey(key)];
+ }
+}
+
+export default getIndexKeys;