diff options
Diffstat (limited to 'packages/idb-bridge/src/util/getIndexKeys.ts')
-rw-r--r-- | packages/idb-bridge/src/util/getIndexKeys.ts | 28 |
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; |