Skip to content

Commit 0608102

Browse files
authored
Merge pull request #393 from vim-denops/unknownutil-v4
📦 Update unknownutil to v4
2 parents cd628cd + 56debde commit 0608102

File tree

10 files changed

+77
-49
lines changed

10 files changed

+77
-49
lines changed

denops/@denops-private/denops.ts

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,14 @@ import {
55
type Dispatcher,
66
type Meta,
77
} from "jsr:@denops/core@^7.0.0";
8-
import { ensure, is } from "jsr:@core/unknownutil@^3.18.1";
8+
import { ensure } from "jsr:@core/unknownutil@^4.0.0/ensure";
9+
import { isTupleOf } from "jsr:@core/unknownutil@^4.0.0/is/tuple-of";
10+
import { isArray } from "jsr:@core/unknownutil@^4.0.0/is/array";
11+
import { isString } from "jsr:@core/unknownutil@^4.0.0/is/string";
912
import type { Host as HostOrigin } from "./host.ts";
1013
import type { Service as ServiceOrigin } from "./service.ts";
1114

12-
const isBatchReturn = is.TupleOf([is.Array, is.String] as const);
15+
const isBatchReturn = isTupleOf([isArray, isString] as const);
1316

1417
export type Host = Pick<HostOrigin, "redraw" | "call" | "batch">;
1518

denops/@denops-private/error.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { is } from "jsr:@core/unknownutil@^3.18.1";
1+
import { isString } from "jsr:@core/unknownutil@^4.0.0/is/string";
22
import {
33
fromErrorObject,
44
isErrorObject,
@@ -16,7 +16,7 @@ export function errorSerializer(err: unknown): unknown {
1616
}
1717

1818
export function errorDeserializer(err: unknown): unknown {
19-
if (is.String(err)) {
19+
if (isString(err)) {
2020
const obj = tryOr(() => JSON.parse(err), undefined);
2121
if (isErrorObject(obj)) {
2222
return fromErrorObject(obj);

denops/@denops-private/error_test.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
import { assert, assertEquals, assertInstanceOf } from "jsr:@std/assert@^1.0.1";
2-
import { is } from "jsr:@core/unknownutil@^3.18.1";
2+
import { isString } from "jsr:@core/unknownutil@^4.0.0/is/string";
33
import { errorDeserializer, errorSerializer } from "./error.ts";
44

55
Deno.test("errorSerializer", async (t) => {
66
await t.step("serializes Error", () => {
77
const err = new Error("error message");
88
const ret = errorSerializer(err);
9-
assert(is.String(ret));
9+
assert(isString(ret));
1010
assertEquals({ ...JSON.parse(ret), stack: "stack" }, {
1111
attributes: {},
1212
message: "error message",
@@ -19,7 +19,7 @@ Deno.test("errorSerializer", async (t) => {
1919
await t.step("serializes String", () => {
2020
const err = "error message";
2121
const ret = errorSerializer(err);
22-
assert(is.String(ret));
22+
assert(isString(ret));
2323
assertEquals(ret, "error message");
2424
});
2525

@@ -29,7 +29,7 @@ Deno.test("errorSerializer", async (t) => {
2929
message: "error message",
3030
};
3131
const ret = errorSerializer(err);
32-
assert(is.String(ret));
32+
assert(isString(ret));
3333
assertEquals(JSON.parse(ret), {
3434
type: "error",
3535
message: "error message",

denops/@denops-private/host.ts

Lines changed: 15 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,10 @@
1-
import { ensure, is, type Predicate } from "jsr:@core/unknownutil@^3.18.1";
1+
import type { Predicate } from "jsr:@core/unknownutil@^4.0.0/type";
2+
import { ensure } from "jsr:@core/unknownutil@^4.0.0/ensure";
3+
import { asOptional } from "jsr:@core/unknownutil@^4.0.0/as/optional";
4+
import { isArray } from "jsr:@core/unknownutil@^4.0.0/is/array";
5+
import { isParametersOf } from "jsr:@core/unknownutil@^4.0.0/is/parameters-of";
6+
import { isString } from "jsr:@core/unknownutil@^4.0.0/is/string";
7+
import { isUnknown } from "jsr:@core/unknownutil@^4.0.0/is/unknown";
28

39
/**
410
* Host (Vim/Neovim) which is visible from Service
@@ -94,15 +100,15 @@ export function invoke(
94100
}
95101

96102
const serviceMethodArgs = {
97-
load: is.ParametersOf([is.String, is.String] as const),
98-
unload: is.ParametersOf([is.String] as const),
99-
reload: is.ParametersOf([is.String] as const),
100-
interrupt: is.ParametersOf([is.OptionalOf(is.Unknown)] as const),
101-
dispatch: is.ParametersOf([is.String, is.String, is.Array] as const),
102-
dispatchAsync: is.ParametersOf(
103-
[is.String, is.String, is.Array, is.String, is.String] as const,
103+
load: isParametersOf([isString, isString] as const),
104+
unload: isParametersOf([isString] as const),
105+
reload: isParametersOf([isString] as const),
106+
interrupt: isParametersOf([asOptional(isUnknown)] as const),
107+
dispatch: isParametersOf([isString, isString, isArray] as const),
108+
dispatchAsync: isParametersOf(
109+
[isString, isString, isArray, isString, isString] as const,
104110
),
105-
close: is.ParametersOf([] as const),
111+
close: isParametersOf([] as const),
106112
} as const satisfies {
107113
[K in keyof ServiceForInvoke]: Predicate<Parameters<ServiceForInvoke[K]>>;
108114
};

denops/@denops-private/host/nvim.ts

Lines changed: 15 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,10 @@
1-
import { ensure, is } from "jsr:@core/unknownutil@^3.18.1";
1+
import { ensure } from "jsr:@core/unknownutil@^4.0.0/ensure";
2+
import { isArray } from "jsr:@core/unknownutil@^4.0.0/is/array";
3+
import { isNull } from "jsr:@core/unknownutil@^4.0.0/is/null";
4+
import { isNumber } from "jsr:@core/unknownutil@^4.0.0/is/number";
5+
import { isString } from "jsr:@core/unknownutil@^4.0.0/is/string";
6+
import { isTupleOf } from "jsr:@core/unknownutil@^4.0.0/is/tuple-of";
7+
import { isUnionOf } from "jsr:@core/unknownutil@^4.0.0/is/union-of";
28
import { Client, Session } from "jsr:@lambdalisue/messagepack-rpc@^2.4.0";
39
import { errorDeserializer, errorSerializer } from "../error.ts";
410
import { getVersionOr } from "../version.ts";
@@ -27,8 +33,8 @@ export class Neovim implements Host {
2733
}
2834
return invoke(
2935
this.#service,
30-
ensure(method, is.String),
31-
ensure(args, is.Array),
36+
ensure(method, isString),
37+
ensure(args, isArray),
3238
);
3339
},
3440

@@ -130,16 +136,16 @@ export class Neovim implements Host {
130136
// nvim_call_function throws a special error object
131137
// https://github.com/neovim/neovim/blob/5dc0bdfe98b59bb03226167ed541d17cc5af30b1/src/nvim/api/vimscript.c#L260
132138
// https://github.com/neovim/neovim/blob/5dc0bdfe98b59bb03226167ed541d17cc5af30b1/src/nvim/api/private/defs.h#L63-L66
133-
const isNvimErrorObject = is.TupleOf([is.Number, is.String] as const);
139+
const isNvimErrorObject = isTupleOf([isNumber, isString] as const);
134140

135141
// nvim_call_atomics returns a tuple of [return values, error details]
136-
const isNvimCallAtomicReturn = is.TupleOf(
142+
const isNvimCallAtomicReturn = isTupleOf(
137143
[
138-
is.Array,
139-
is.OneOf([
140-
is.Null,
144+
isArray,
145+
isUnionOf([
146+
isNull,
141147
// the index, the error type, the error message
142-
is.TupleOf([is.Number, is.Number, is.String] as const),
148+
isTupleOf([isNumber, isNumber, isString] as const),
143149
]),
144150
] as const,
145151
);

denops/@denops-private/host/vim.ts

Lines changed: 13 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,9 @@
1-
import { ensure, is } from "jsr:@core/unknownutil@^3.18.1";
1+
import { ensure } from "jsr:@core/unknownutil@^4.0.0/ensure";
2+
import { isArray } from "jsr:@core/unknownutil@^4.0.0/is/array";
3+
import { isLiteralOf } from "jsr:@core/unknownutil@^4.0.0/is/literal-of";
4+
import { isString } from "jsr:@core/unknownutil@^4.0.0/is/string";
5+
import { isTupleOf } from "jsr:@core/unknownutil@^4.0.0/is/tuple-of";
6+
import { isUnknown } from "jsr:@core/unknownutil@^4.0.0/is/unknown";
27
import {
38
Client,
49
type Message,
@@ -120,16 +125,16 @@ export class Vim implements Host {
120125
}
121126
}
122127

123-
const isCallReturn = is.TupleOf([is.Unknown, is.String] as const);
128+
const isCallReturn = isTupleOf([isUnknown, isString] as const);
124129

125-
const isBatchReturn = is.TupleOf([is.Array, is.String] as const);
130+
const isBatchReturn = isTupleOf([isArray, isString] as const);
126131

127-
const isVoidMessage = is.TupleOf([is.LiteralOf("void")] as const);
132+
const isVoidMessage = isTupleOf([isLiteralOf("void")] as const);
128133

129-
const isInvokeMessage = is.TupleOf(
134+
const isInvokeMessage = isTupleOf(
130135
[
131-
is.LiteralOf("invoke"),
132-
is.String,
133-
is.Array,
136+
isLiteralOf("invoke"),
137+
isString,
138+
isArray,
134139
] as const,
135140
);

denops/@denops-private/host_test.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import {
44
assertSpyCalls,
55
stub,
66
} from "jsr:@std/testing@^1.0.0-rc.5/mock";
7-
import { AssertError } from "jsr:@core/unknownutil@^3.18.1";
7+
import { AssertError } from "jsr:@core/unknownutil@^4.0.0/assert";
88
import { unimplemented } from "jsr:@lambdalisue/errorutil@^1.1.0";
99
import { invoke, type Service } from "./host.ts";
1010

denops/@denops-private/util.ts

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,12 @@
11
import type { Meta } from "jsr:@denops/core@^7.0.0";
2-
import { is, type Predicate } from "jsr:@core/unknownutil@^3.18.1";
2+
import type { Predicate } from "jsr:@core/unknownutil@^4.0.0/type";
3+
import { isLiteralOneOf } from "jsr:@core/unknownutil@^4.0.0/is/literal-one-of";
4+
import { isObjectOf } from "jsr:@core/unknownutil@^4.0.0/is/object-of";
5+
import { isString } from "jsr:@core/unknownutil@^4.0.0/is/string";
36

4-
export const isMeta: Predicate<Meta> = is.ObjectOf({
5-
mode: is.LiteralOneOf(["release", "debug", "test"] as const),
6-
host: is.LiteralOneOf(["vim", "nvim"] as const),
7-
version: is.String,
8-
platform: is.LiteralOneOf(["windows", "mac", "linux"] as const),
7+
export const isMeta: Predicate<Meta> = isObjectOf({
8+
mode: isLiteralOneOf(["release", "debug", "test"] as const),
9+
host: isLiteralOneOf(["vim", "nvim"] as const),
10+
version: isString,
11+
platform: isLiteralOneOf(["windows", "mac", "linux"] as const),
912
});

denops/@denops-private/version_test.ts

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,12 @@
11
import { assert, assertEquals } from "jsr:@std/assert@^1.0.1";
22
import { resolvesNext, stub } from "jsr:@std/testing@^1.0.0-rc.5/mock";
33
import type { SemVer } from "jsr:@std/semver@^0.224.3/types";
4-
import { is, type Predicate } from "jsr:@core/unknownutil@^3.18.1";
4+
import type { Predicate } from "jsr:@core/unknownutil@^4.0.0/type";
5+
import { isArrayOf } from "jsr:@core/unknownutil@^4.0.0/is/array-of";
6+
import { isNumber } from "jsr:@core/unknownutil@^4.0.0/is/number";
7+
import { isObjectOf } from "jsr:@core/unknownutil@^4.0.0/is/object-of";
8+
import { isString } from "jsr:@core/unknownutil@^4.0.0/is/string";
9+
import { isUnionOf } from "jsr:@core/unknownutil@^4.0.0/is/union-of";
510
import { getVersionOr } from "./version.ts";
611

712
Deno.test("getVersionOr()", async (t) => {
@@ -53,12 +58,12 @@ Deno.test("getVersionOr()", async (t) => {
5358
});
5459
});
5560

56-
const isSemVer = is.ObjectOf({
57-
major: is.Number,
58-
minor: is.Number,
59-
patch: is.Number,
60-
prerelease: is.ArrayOf(is.UnionOf([is.String, is.Number])),
61-
build: is.ArrayOf(is.String),
61+
const isSemVer = isObjectOf({
62+
major: isNumber,
63+
minor: isNumber,
64+
patch: isNumber,
65+
prerelease: isArrayOf(isUnionOf([isString, isNumber])),
66+
build: isArrayOf(isString),
6267
}) satisfies Predicate<SemVer>;
6368

6469
async function isInsideWorkTree(): Promise<boolean> {

denops/@denops-private/worker.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import {
55
readableStreamFromWorker,
66
writableStreamFromWorker,
77
} from "jsr:@lambdalisue/workerio@^4.0.1";
8-
import { ensure } from "jsr:@core/unknownutil@^3.18.1";
8+
import { ensure } from "jsr:@core/unknownutil@^4.0.0/ensure";
99
import { pop } from "jsr:@lambdalisue/streamtools@^1.0.0";
1010
import { asyncSignal } from "jsr:@milly/async-signal@^1.0.0";
1111
import type { Meta } from "jsr:@denops/core@^7.0.0";

0 commit comments

Comments
 (0)