diff --git a/CHANGELOG.md b/CHANGELOG.md index de08153e81..f42d038c0b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,6 +8,7 @@ Changes: - Support for Metadata v12 with fixed indices - Cleanups for WebSocket class detection and creation +- Ensure that ignored map params yield an error on `iterKey` ## 1.33.1 Sep 14, 2020 diff --git a/packages/metadata/src/Decorated/storage/fromMetadata/createFunction.ts b/packages/metadata/src/Decorated/storage/fromMetadata/createFunction.ts index 23efef4870..c4865a2707 100644 --- a/packages/metadata/src/Decorated/storage/fromMetadata/createFunction.ts +++ b/packages/metadata/src/Decorated/storage/fromMetadata/createFunction.ts @@ -181,11 +181,13 @@ function extendLinkedMap (registry: Registry, itemFn: CreateItemFn, storageFn: S function extendPrefixedMap (registry: Registry, itemFn: CreateItemFn, storageFn: StorageEntry): StorageEntry { const { meta: { type } } = itemFn; - storageFn.iterKey = extendHeadMeta(registry, itemFn, storageFn, (arg?: any): Raw => - type.isDoubleMap && !isUndefined(arg) && !isNull(arg) + storageFn.iterKey = extendHeadMeta(registry, itemFn, storageFn, (arg?: any): Raw => { + assert(type.isDoubleMap || isUndefined(arg), 'Filtering arguments for keys/entries are only valid on double maps'); + + return type.isDoubleMap && !isUndefined(arg) && !isNull(arg) ? new Raw(registry, u8aConcat(createPrefixedKey(itemFn), getHasher(type.asDoubleMap.hasher)(registry.createType(type.asDoubleMap.key1.toString() as 'Raw', arg).toU8a()))) - : new Raw(registry, createPrefixedKey(itemFn)) - ); + : new Raw(registry, createPrefixedKey(itemFn)); + }); return storageFn; }