diff options
Diffstat (limited to 'packages/idb-bridge/src/util/canInjectKey.ts')
-rw-r--r-- | packages/idb-bridge/src/util/canInjectKey.ts | 50 |
1 files changed, 0 insertions, 50 deletions
diff --git a/packages/idb-bridge/src/util/canInjectKey.ts b/packages/idb-bridge/src/util/canInjectKey.ts deleted file mode 100644 index 09ecbd3ad..000000000 --- a/packages/idb-bridge/src/util/canInjectKey.ts +++ /dev/null @@ -1,50 +0,0 @@ -/* - Copyright 2017 Jeremy Scheff - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express - or implied. See the License for the specific language governing - permissions and limitations under the License. -*/ - -import { IDBKeyPath } from "../idbtypes"; - -// http://w3c.github.io/IndexedDB/#check-that-a-key-could-be-injected-into-a-value -const canInjectKey = (keyPath: IDBKeyPath, value: any) => { - if (Array.isArray(keyPath)) { - // tslint:disable-next-line max-line-length - throw new Error( - "The key paths used in this section are always strings and never sequences, since it is not possible to create a object store which has a key generator and also has a key path that is a sequence.", - ); - } - - const identifiers = keyPath.split("."); - if (identifiers.length === 0) { - throw new Error("Assert: identifiers is not empty"); - } - identifiers.pop(); - - for (const identifier of identifiers) { - if (typeof value !== "object" && !Array.isArray(value)) { - return false; - } - - const hop = value.hasOwnProperty(identifier); - if (!hop) { - return true; - } - - value = value[identifier]; - } - - return typeof value === "object" || Array.isArray(value); -}; - -export default canInjectKey; |