diff --git a/CHANGELOG.md b/CHANGELOG.md
index 9b5aa82b..55baf524 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -53,10 +53,6 @@
- @cosmjs/utils: Added `assertDefinedAndNotNull`.
-### Removed
-
-- @cosmjs/utils: `assertDefined` removed in favour of `assertDefinedAndNotNull`.
-
## 0.23.2 (2021-01-06)
### Security
diff --git a/packages/cosmwasm-stargate/src/queries/wasm.spec.ts b/packages/cosmwasm-stargate/src/queries/wasm.spec.ts
index 48363469..78b7897f 100644
--- a/packages/cosmwasm-stargate/src/queries/wasm.spec.ts
+++ b/packages/cosmwasm-stargate/src/queries/wasm.spec.ts
@@ -9,7 +9,7 @@ import {
parseRawLog,
SigningStargateClient,
} from "@cosmjs/stargate";
-import { assert, assertDefinedAndNotNull } from "@cosmjs/utils";
+import { assert, assertDefined } from "@cosmjs/utils";
import Long from "long";
import { cosmwasm } from "../codec";
@@ -395,7 +395,7 @@ describe("WasmExtension", () => {
expect(codeId).toBeGreaterThanOrEqual(1);
expect(codeId).toBeLessThanOrEqual(200);
- assertDefinedAndNotNull(result.data);
+ assertDefined(result.data);
const msgData = fromOneElementArray(result.data);
expect(msgData.msgType).toEqual("store-code");
expect(MsgStoreCodeResponse.decode(msgData.data!)).toEqual(
@@ -415,7 +415,7 @@ describe("WasmExtension", () => {
const amountAttr = logs.findAttribute(parsedLogs, "transfer", "amount");
expect(amountAttr.value).toEqual("1234ucosm,321ustake");
- assertDefinedAndNotNull(result.data);
+ assertDefined(result.data);
const msgData = fromOneElementArray(result.data);
expect(msgData.msgType).toEqual("instantiate");
expect(MsgInstantiateContractResponse.decode(msgData.data!)).toEqual(
@@ -441,7 +441,7 @@ describe("WasmExtension", () => {
value: beneficiaryAddress,
});
- assertDefinedAndNotNull(result.data);
+ assertDefined(result.data);
const msgData = fromOneElementArray(result.data);
expect(msgData.msgType).toEqual("execute");
expect(MsgExecuteContractResponse.decode(msgData.data!)).toEqual(
diff --git a/packages/stargate/src/queries/queryclient.ts b/packages/stargate/src/queries/queryclient.ts
index f9d636cd..31cf9ef1 100644
--- a/packages/stargate/src/queries/queryclient.ts
+++ b/packages/stargate/src/queries/queryclient.ts
@@ -3,7 +3,7 @@ import { iavlSpec, ics23, tendermintSpec, verifyExistence, verifyNonExistence }
import { toAscii, toHex } from "@cosmjs/encoding";
import { firstEvent } from "@cosmjs/stream";
import { Client as TendermintClient, Header, NewBlockHeaderEvent, ProofOp } from "@cosmjs/tendermint-rpc";
-import { arrayContentEquals, assert, assertDefinedAndNotNull, isNonNullObject, sleep } from "@cosmjs/utils";
+import { arrayContentEquals, assert, assertDefined, isNonNullObject, sleep } from "@cosmjs/utils";
import { Stream } from "xstream";
type QueryExtensionSetup
= (base: QueryClient) => P;
@@ -233,7 +233,7 @@ export class QueryClient {
// this must return the header for height+1
// throws an error if height is 0 or undefined
private async getNextHeader(height?: number): Promise {
- assertDefinedAndNotNull(height);
+ assertDefined(height);
if (height === 0) {
throw new Error("Query returned height 0, cannot prove it");
}
diff --git a/packages/utils/src/assert.spec.ts b/packages/utils/src/assert.spec.ts
index d22b5c16..669405a5 100644
--- a/packages/utils/src/assert.spec.ts
+++ b/packages/utils/src/assert.spec.ts
@@ -1,6 +1,55 @@
-import { assertDefinedAndNotNull } from "./assert";
+import { assertDefined, assertDefinedAndNotNull } from "./assert";
describe("assert", () => {
+ describe("assertDefined", () => {
+ it("passes for simple values", () => {
+ {
+ const value: number | undefined = 123;
+ assertDefined(value);
+ expect(value).toEqual(123);
+ }
+ {
+ const value: string | undefined = "abc";
+ assertDefined(value);
+ expect(value).toEqual("abc");
+ }
+ });
+
+ it("passes for falsy values", () => {
+ {
+ const value: number | undefined = 0;
+ assertDefined(value);
+ expect(value).toEqual(0);
+ }
+ {
+ const value: string | undefined = "";
+ assertDefined(value);
+ expect(value).toEqual("");
+ }
+ {
+ const value: null | undefined = null;
+ assertDefined(value);
+ expect(value).toBeNull();
+ }
+ });
+
+ it("throws for undefined values", () => {
+ {
+ const value: number | undefined = undefined;
+ expect(() => assertDefined(value)).toThrowError("value is undefined");
+ }
+ {
+ let value: string | undefined;
+ expect(() => assertDefined(value)).toThrowError("value is undefined");
+ }
+ });
+
+ it("throws with custom message", () => {
+ const value: number | undefined = undefined;
+ expect(() => assertDefined(value, "Bug in the data source")).toThrowError("Bug in the data source");
+ });
+ });
+
describe("assertDefinedAndNotNull", () => {
it("passes for simple values", () => {
{
diff --git a/packages/utils/src/assert.ts b/packages/utils/src/assert.ts
index 14f37517..65b7ca24 100644
--- a/packages/utils/src/assert.ts
+++ b/packages/utils/src/assert.ts
@@ -5,6 +5,12 @@ export function assert(condition: any, msg?: string): asserts condition {
}
}
+export function assertDefined(value: T | undefined, msg?: string): asserts value is T {
+ if (value === undefined) {
+ throw new Error(msg ?? "value is undefined");
+ }
+}
+
export function assertDefinedAndNotNull(value: T | undefined | null, msg?: string): asserts value is T {
if (value === undefined || value === null) {
throw new Error(msg ?? "value is undefined or null");
diff --git a/packages/utils/src/index.ts b/packages/utils/src/index.ts
index 596d63db..372b3615 100644
--- a/packages/utils/src/index.ts
+++ b/packages/utils/src/index.ts
@@ -1,4 +1,4 @@
export { arrayContentEquals } from "./arrays";
-export { assert, assertDefinedAndNotNull } from "./assert";
+export { assert, assertDefined, assertDefinedAndNotNull } from "./assert";
export { sleep } from "./sleep";
export { isNonNullObject, isUint8Array } from "./typechecks";
diff --git a/packages/utils/types/assert.d.ts b/packages/utils/types/assert.d.ts
index 65f3dfdb..36ab18e0 100644
--- a/packages/utils/types/assert.d.ts
+++ b/packages/utils/types/assert.d.ts
@@ -1,4 +1,5 @@
export declare function assert(condition: any, msg?: string): asserts condition;
+export declare function assertDefined(value: T | undefined, msg?: string): asserts value is T;
export declare function assertDefinedAndNotNull(
value: T | undefined | null,
msg?: string,
diff --git a/packages/utils/types/index.d.ts b/packages/utils/types/index.d.ts
index 596d63db..372b3615 100644
--- a/packages/utils/types/index.d.ts
+++ b/packages/utils/types/index.d.ts
@@ -1,4 +1,4 @@
export { arrayContentEquals } from "./arrays";
-export { assert, assertDefinedAndNotNull } from "./assert";
+export { assert, assertDefined, assertDefinedAndNotNull } from "./assert";
export { sleep } from "./sleep";
export { isNonNullObject, isUint8Array } from "./typechecks";