Skip to content

Commit 219d486

Browse files
committed
rename json types
1 parent 41e8092 commit 219d486

File tree

6 files changed

+91
-101
lines changed

6 files changed

+91
-101
lines changed

packages/json-rpc/src/parse.ts

Lines changed: 11 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,5 @@
1-
import {
2-
isJsonCompatibleArray,
3-
isJsonCompatibleDictionary,
4-
isJsonCompatibleValue,
5-
JsonCompatibleDictionary,
6-
JsonCompatibleValue,
7-
} from "@cosmjs/utils";
1+
import { type JsonObject, type JsonValue, isJsonArray, isJsonObject, isJsonValue } from "@cosmjs/utils";
2+
83
import {
94
JsonRpcError,
105
JsonRpcErrorResponse,
@@ -20,7 +15,7 @@ import {
2015
* Returns `null` when no valid ID was found.
2116
*/
2217
export function parseJsonRpcId(data: unknown): JsonRpcId | null {
23-
if (!isJsonCompatibleDictionary(data)) {
18+
if (!isJsonObject(data)) {
2419
throw new Error("Data must be JSON compatible dictionary");
2520
}
2621

@@ -32,7 +27,7 @@ export function parseJsonRpcId(data: unknown): JsonRpcId | null {
3227
}
3328

3429
export function parseJsonRpcRequest(data: unknown): JsonRpcRequest {
35-
if (!isJsonCompatibleDictionary(data)) {
30+
if (!isJsonObject(data)) {
3631
throw new Error("Data must be JSON compatible dictionary");
3732
}
3833

@@ -53,7 +48,7 @@ export function parseJsonRpcRequest(data: unknown): JsonRpcRequest {
5348
throw new Error(`Invalid "method" field. Must be a string.`);
5449
}
5550

56-
if (!isJsonCompatibleArray(data.params) && !isJsonCompatibleDictionary(data.params)) {
51+
if (!isJsonArray(data.params) && !isJsonObject(data.params)) {
5752
throw new Error("Invalid params field");
5853
}
5954

@@ -65,7 +60,7 @@ export function parseJsonRpcRequest(data: unknown): JsonRpcRequest {
6560
};
6661
}
6762

68-
function parseError(error: JsonCompatibleDictionary): JsonRpcError {
63+
function parseError(error: JsonObject): JsonRpcError {
6964
if (typeof error.code !== "number") {
7065
throw new Error("Error property 'code' is not a number");
7166
}
@@ -74,11 +69,11 @@ function parseError(error: JsonCompatibleDictionary): JsonRpcError {
7469
throw new Error("Error property 'message' is not a string");
7570
}
7671

77-
let maybeUndefinedData: JsonCompatibleValue | undefined;
72+
let maybeUndefinedData: JsonValue | undefined;
7873

7974
if (error.data === undefined) {
8075
maybeUndefinedData = undefined;
81-
} else if (isJsonCompatibleValue(error.data)) {
76+
} else if (isJsonValue(error.data)) {
8277
maybeUndefinedData = error.data;
8378
} else {
8479
throw new Error("Error property 'data' is defined but not a JSON compatible value.");
@@ -93,7 +88,7 @@ function parseError(error: JsonCompatibleDictionary): JsonRpcError {
9388

9489
/** Throws if data is not a JsonRpcErrorResponse */
9590
export function parseJsonRpcErrorResponse(data: unknown): JsonRpcErrorResponse {
96-
if (!isJsonCompatibleDictionary(data)) {
91+
if (!isJsonObject(data)) {
9792
throw new Error("Data must be JSON compatible dictionary");
9893
}
9994

@@ -106,7 +101,7 @@ export function parseJsonRpcErrorResponse(data: unknown): JsonRpcErrorResponse {
106101
throw new Error("Invalid id field");
107102
}
108103

109-
if (typeof data.error === "undefined" || !isJsonCompatibleDictionary(data.error)) {
104+
if (typeof data.error === "undefined" || !isJsonObject(data.error)) {
110105
throw new Error("Invalid error field");
111106
}
112107

@@ -119,7 +114,7 @@ export function parseJsonRpcErrorResponse(data: unknown): JsonRpcErrorResponse {
119114

120115
/** Throws if data is not a JsonRpcSuccessResponse */
121116
export function parseJsonRpcSuccessResponse(data: unknown): JsonRpcSuccessResponse {
122-
if (!isJsonCompatibleDictionary(data)) {
117+
if (!isJsonObject(data)) {
123118
throw new Error("Data must be JSON compatible dictionary");
124119
}
125120

packages/json-rpc/src/types.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
1-
import type { JsonCompatibleArray, JsonCompatibleDictionary, JsonCompatibleValue } from "@cosmjs/utils";
1+
import type { JsonArray, JsonObject, JsonValue } from "@cosmjs/utils";
22

33
export type JsonRpcId = number | string;
44

55
export interface JsonRpcRequest {
66
readonly jsonrpc: "2.0";
77
readonly id: JsonRpcId;
88
readonly method: string;
9-
readonly params: JsonCompatibleArray | JsonCompatibleDictionary;
9+
readonly params: JsonArray | JsonObject;
1010
}
1111

1212
export interface JsonRpcSuccessResponse {
@@ -18,7 +18,7 @@ export interface JsonRpcSuccessResponse {
1818
export interface JsonRpcError {
1919
readonly code: number;
2020
readonly message: string;
21-
readonly data?: JsonCompatibleValue;
21+
readonly data?: JsonValue;
2222
}
2323

2424
/**

packages/json-rpc/src/workers/dummyservice.worker.ts

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,8 @@
22

33
// for testing only
44

5-
import { isJsonCompatibleDictionary } from "@cosmjs/utils";
5+
import { isJsonObject } from "@cosmjs/utils";
6+
67
import { parseJsonRpcId, parseJsonRpcRequest } from "../parse";
78
import {
89
jsonRpcCode,
@@ -31,7 +32,7 @@ function handleRequest(event: MessageEvent): JsonRpcResponse {
3132

3233
// This is just a text representation of the request. It can be lossy as it is not needed for further processing.
3334
let paramsString: string;
34-
if (isJsonCompatibleDictionary(request.params)) {
35+
if (isJsonObject(request.params)) {
3536
paramsString = JSON.stringify(request.params);
3637
} else {
3738
paramsString = request.params
@@ -44,7 +45,7 @@ function handleRequest(event: MessageEvent): JsonRpcResponse {
4445
return `"${p}"`;
4546
} else {
4647
// Nested arrays or dictionaries. No need to traverse.
47-
return isJsonCompatibleDictionary(p) ? "{ … }" : "[ … ]";
48+
return isJsonObject(p) ? "{ … }" : "[ … ]";
4849
}
4950
})
5051
.join(", ");

packages/utils/src/index.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
export { arrayContentEquals, arrayContentStartsWith } from "./arrays";
22
export { assert, assertDefined, assertDefinedAndNotNull } from "./assert";
3-
export type { JsonCompatibleArray, JsonCompatibleDictionary, JsonCompatibleValue } from "./json";
4-
export { isJsonCompatibleArray, isJsonCompatibleDictionary, isJsonCompatibleValue } from "./json";
3+
export type { JsonArray, JsonObject, JsonValue } from "./json";
4+
export { isJsonArray, isJsonObject, isJsonValue } from "./json";
55
export { sleep } from "./sleep";
66
export { isDefined, isNonNullObject, isUint8Array } from "./typechecks";

packages/utils/src/json.spec.ts

Lines changed: 59 additions & 59 deletions
Original file line numberDiff line numberDiff line change
@@ -1,125 +1,125 @@
1-
import { isJsonCompatibleArray, isJsonCompatibleDictionary, isJsonCompatibleValue } from "./json";
1+
import { isJsonArray, isJsonObject, isJsonValue } from "./json";
22

33
describe("json", () => {
44
function sum(a: number, b: number): number {
55
return a + b;
66
}
77

8-
describe("isJsonCompatibleValue", () => {
8+
describe("isJsonValue", () => {
99
it("returns true for primitive types", () => {
10-
expect(isJsonCompatibleValue(null)).toEqual(true);
11-
expect(isJsonCompatibleValue(0)).toEqual(true);
12-
expect(isJsonCompatibleValue(1)).toEqual(true);
13-
expect(isJsonCompatibleValue("abc")).toEqual(true);
14-
expect(isJsonCompatibleValue(true)).toEqual(true);
15-
expect(isJsonCompatibleValue(false)).toEqual(true);
10+
expect(isJsonValue(null)).toEqual(true);
11+
expect(isJsonValue(0)).toEqual(true);
12+
expect(isJsonValue(1)).toEqual(true);
13+
expect(isJsonValue("abc")).toEqual(true);
14+
expect(isJsonValue(true)).toEqual(true);
15+
expect(isJsonValue(false)).toEqual(true);
1616
});
1717

1818
it("returns true for arrays", () => {
19-
expect(isJsonCompatibleValue([1, 2, 3])).toEqual(true);
20-
expect(isJsonCompatibleValue([1, "2", true, null])).toEqual(true);
21-
expect(isJsonCompatibleValue([1, "2", true, null, [1, "2", true, null]])).toEqual(true);
22-
expect(isJsonCompatibleValue([{ a: 123 }])).toEqual(true);
19+
expect(isJsonValue([1, 2, 3])).toEqual(true);
20+
expect(isJsonValue([1, "2", true, null])).toEqual(true);
21+
expect(isJsonValue([1, "2", true, null, [1, "2", true, null]])).toEqual(true);
22+
expect(isJsonValue([{ a: 123 }])).toEqual(true);
2323
});
2424

2525
it("returns true for simple dicts", () => {
26-
expect(isJsonCompatibleValue({ a: 123 })).toEqual(true);
27-
expect(isJsonCompatibleValue({ a: "abc" })).toEqual(true);
28-
expect(isJsonCompatibleValue({ a: true })).toEqual(true);
29-
expect(isJsonCompatibleValue({ a: null })).toEqual(true);
26+
expect(isJsonValue({ a: 123 })).toEqual(true);
27+
expect(isJsonValue({ a: "abc" })).toEqual(true);
28+
expect(isJsonValue({ a: true })).toEqual(true);
29+
expect(isJsonValue({ a: null })).toEqual(true);
3030
});
3131

3232
it("returns true for dict with array", () => {
33-
expect(isJsonCompatibleValue({ a: [1, 2, 3] })).toEqual(true);
34-
expect(isJsonCompatibleValue({ a: [1, "2", true, null] })).toEqual(true);
33+
expect(isJsonValue({ a: [1, 2, 3] })).toEqual(true);
34+
expect(isJsonValue({ a: [1, "2", true, null] })).toEqual(true);
3535
});
3636

3737
it("returns true for nested dicts", () => {
38-
expect(isJsonCompatibleValue({ a: { b: 123 } })).toEqual(true);
38+
expect(isJsonValue({ a: { b: 123 } })).toEqual(true);
3939
});
4040

4141
it("returns false for functions", () => {
42-
expect(isJsonCompatibleValue(sum)).toEqual(false);
42+
expect(isJsonValue(sum)).toEqual(false);
4343
});
4444

4545
it("returns true for empty dicts", () => {
46-
expect(isJsonCompatibleValue({})).toEqual(true);
46+
expect(isJsonValue({})).toEqual(true);
4747
});
4848
});
4949

50-
describe("isJsonCompatibleArray", () => {
50+
describe("isJsonArray", () => {
5151
it("returns false for primitive types", () => {
52-
expect(isJsonCompatibleArray(null)).toEqual(false);
53-
expect(isJsonCompatibleArray(undefined)).toEqual(false);
54-
expect(isJsonCompatibleArray(0)).toEqual(false);
55-
expect(isJsonCompatibleArray(1)).toEqual(false);
56-
expect(isJsonCompatibleArray("abc")).toEqual(false);
57-
expect(isJsonCompatibleArray(true)).toEqual(false);
58-
expect(isJsonCompatibleArray(false)).toEqual(false);
52+
expect(isJsonArray(null)).toEqual(false);
53+
expect(isJsonArray(undefined)).toEqual(false);
54+
expect(isJsonArray(0)).toEqual(false);
55+
expect(isJsonArray(1)).toEqual(false);
56+
expect(isJsonArray("abc")).toEqual(false);
57+
expect(isJsonArray(true)).toEqual(false);
58+
expect(isJsonArray(false)).toEqual(false);
5959
});
6060

6161
it("returns true for arrays", () => {
62-
expect(isJsonCompatibleArray([1, 2, 3])).toEqual(true);
63-
expect(isJsonCompatibleArray([1, "2", true, null])).toEqual(true);
64-
expect(isJsonCompatibleArray([1, "2", true, null, [1, "2", true, null]])).toEqual(true);
65-
expect(isJsonCompatibleArray([{ a: 123 }])).toEqual(true);
62+
expect(isJsonArray([1, 2, 3])).toEqual(true);
63+
expect(isJsonArray([1, "2", true, null])).toEqual(true);
64+
expect(isJsonArray([1, "2", true, null, [1, "2", true, null]])).toEqual(true);
65+
expect(isJsonArray([{ a: 123 }])).toEqual(true);
6666
});
6767

6868
it("returns false for dicts", () => {
69-
expect(isJsonCompatibleArray({ a: 123 })).toEqual(false);
70-
expect(isJsonCompatibleArray({ a: "abc" })).toEqual(false);
71-
expect(isJsonCompatibleArray({ a: true })).toEqual(false);
72-
expect(isJsonCompatibleArray({ a: null })).toEqual(false);
69+
expect(isJsonArray({ a: 123 })).toEqual(false);
70+
expect(isJsonArray({ a: "abc" })).toEqual(false);
71+
expect(isJsonArray({ a: true })).toEqual(false);
72+
expect(isJsonArray({ a: null })).toEqual(false);
7373
});
7474

7575
it("returns false for functions", () => {
76-
expect(isJsonCompatibleArray(sum)).toEqual(false);
76+
expect(isJsonArray(sum)).toEqual(false);
7777
});
7878
});
7979

80-
describe("isJsonCompatibleDictionary", () => {
80+
describe("isJsonObject", () => {
8181
it("returns false for primitive types", () => {
82-
expect(isJsonCompatibleDictionary(null)).toEqual(false);
83-
expect(isJsonCompatibleDictionary(undefined)).toEqual(false);
84-
expect(isJsonCompatibleDictionary(0)).toEqual(false);
85-
expect(isJsonCompatibleDictionary(1)).toEqual(false);
86-
expect(isJsonCompatibleDictionary("abc")).toEqual(false);
87-
expect(isJsonCompatibleDictionary(true)).toEqual(false);
88-
expect(isJsonCompatibleDictionary(false)).toEqual(false);
82+
expect(isJsonObject(null)).toEqual(false);
83+
expect(isJsonObject(undefined)).toEqual(false);
84+
expect(isJsonObject(0)).toEqual(false);
85+
expect(isJsonObject(1)).toEqual(false);
86+
expect(isJsonObject("abc")).toEqual(false);
87+
expect(isJsonObject(true)).toEqual(false);
88+
expect(isJsonObject(false)).toEqual(false);
8989
});
9090

9191
it("returns false for other objects", () => {
92-
expect(isJsonCompatibleDictionary(new Uint8Array([0x00]))).toEqual(false);
93-
expect(isJsonCompatibleDictionary(/123/)).toEqual(false);
94-
expect(isJsonCompatibleDictionary(new Date())).toEqual(false);
92+
expect(isJsonObject(new Uint8Array([0x00]))).toEqual(false);
93+
expect(isJsonObject(/123/)).toEqual(false);
94+
expect(isJsonObject(new Date())).toEqual(false);
9595
});
9696

9797
it("returns false for arrays", () => {
98-
expect(isJsonCompatibleDictionary([1, 2, 3])).toEqual(false);
98+
expect(isJsonObject([1, 2, 3])).toEqual(false);
9999
});
100100

101101
it("returns false for functions", () => {
102-
expect(isJsonCompatibleDictionary(sum)).toEqual(false);
102+
expect(isJsonObject(sum)).toEqual(false);
103103
});
104104

105105
it("returns true for empty dicts", () => {
106-
expect(isJsonCompatibleDictionary({})).toEqual(true);
106+
expect(isJsonObject({})).toEqual(true);
107107
});
108108

109109
it("returns true for simple dicts", () => {
110-
expect(isJsonCompatibleDictionary({ a: 123 })).toEqual(true);
111-
expect(isJsonCompatibleDictionary({ a: "abc" })).toEqual(true);
112-
expect(isJsonCompatibleDictionary({ a: true })).toEqual(true);
113-
expect(isJsonCompatibleDictionary({ a: null })).toEqual(true);
110+
expect(isJsonObject({ a: 123 })).toEqual(true);
111+
expect(isJsonObject({ a: "abc" })).toEqual(true);
112+
expect(isJsonObject({ a: true })).toEqual(true);
113+
expect(isJsonObject({ a: null })).toEqual(true);
114114
});
115115

116116
it("returns true for dict with array", () => {
117-
expect(isJsonCompatibleDictionary({ a: [1, 2, 3] })).toEqual(true);
118-
expect(isJsonCompatibleDictionary({ a: [1, "2", true, null] })).toEqual(true);
117+
expect(isJsonObject({ a: [1, 2, 3] })).toEqual(true);
118+
expect(isJsonObject({ a: [1, "2", true, null] })).toEqual(true);
119119
});
120120

121121
it("returns true for nested dicts", () => {
122-
expect(isJsonCompatibleDictionary({ a: { b: 123 } })).toEqual(true);
122+
expect(isJsonObject({ a: { b: 123 } })).toEqual(true);
123123
});
124124
});
125125
});

0 commit comments

Comments
 (0)