Skip to content

Commit

Permalink
feat(single): add validator for single item
Browse files Browse the repository at this point in the history
  • Loading branch information
TomokiMiyauci committed May 24, 2023
1 parent 0ab4c62 commit 2bde8c0
Show file tree
Hide file tree
Showing 4 changed files with 24 additions and 1 deletion.
5 changes: 5 additions & 0 deletions _tools/meta.ts
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,11 @@ export const makeOptions = (version: string): BuildOptions => ({
version: "1.3.1",
subPath: "iterable/is_not_empty.js",
},
"https://deno.land/x/isx@1.3.1/iterable/is_single.ts": {
name: "@miyauci/isx",
version: "1.3.1",
subPath: "iterable/is_single.js",
},
"https://deno.land/x/isx@1.3.1/is_string.ts": {
name: "@miyauci/isx",
version: "1.3.1",
Expand Down
4 changes: 3 additions & 1 deletion combinator.ts
Original file line number Diff line number Diff line change
Expand Up @@ -16,14 +16,15 @@ import { UniqueValidator } from "./validators/iterable/unique.ts";
import { MaxCountValidator } from "./validators/iterable/max_count.ts";
import { MinCountValidator } from "./validators/iterable/min_count.ts";
import { NonEmptyValidator } from "./validators/iterable/non_empty.ts";
import { AndValidator } from "./validators/operators/and.ts";
import { SingleValidator } from "./validators/iterable/single.ts";
import { EqualityValidator } from "./validators/operators/eq.ts";
import { LessThenValidator } from "./validators/operators/lt.ts";
import { LessThenOrEqualValidator } from "./validators/operators/lte.ts";
import { GreaterThenValidator } from "./validators/operators/gt.ts";
import { GreaterThenOrEqualValidator } from "./validators/operators/gte.ts";
import { InequalityValidator } from "./validators/operators/inequality.ts";
import { InstanceValidator } from "./validators/operators/instanceof.ts";
import { AndValidator } from "./validators/operators/and.ts";
import { NotValidator } from "./validators/operators/not.ts";
import { OrValidator } from "./validators/operators/or.ts";
import { TypeValidator } from "./validators/operators/typeof.ts";
Expand Down Expand Up @@ -64,6 +65,7 @@ export const item = /* @__PURE__ */ lazy(ItemValidator);
export const maxCount = /* @__PURE__ */ lazy(MaxCountValidator);
export const minCount = /* @__PURE__ */ lazy(MinCountValidator);
export const nonEmpty = /* @__PURE__ */ new NonEmptyValidator();
export const single = /* @__PURE__ */ new SingleValidator();
export const unique = /* @__PURE__ */ new UniqueValidator();

// number
Expand Down
1 change: 1 addition & 0 deletions deps.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@

export { isEmpty } from "https://deno.land/x/isx@1.3.1/iterable/is_empty.ts";
export { isNotEmpty } from "https://deno.land/x/isx@1.3.1/iterable/is_not_empty.ts";
export { isSingle } from "https://deno.land/x/isx@1.3.1/iterable/is_single.ts";
export { isNonNullable } from "https://deno.land/x/isx@1.3.1/is_non_nullable.ts";
export { isString } from "https://deno.land/x/isx@1.3.1/is_string.ts";
export { isPositiveNumber } from "https://deno.land/x/isx@1.3.1/number/is_positive_number.ts";
Expand Down
15 changes: 15 additions & 0 deletions validators/iterable/single.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
// Copyright 2023-latest Tomoki Miyauchi. All rights reserved. MIT license.
// This module is browser compatible.

import { shouldBe } from "../utils.ts";
import { isSingle } from "../../deps.ts";
import { display, ScalarValidator } from "../../utils.ts";

@display("single")
export class SingleValidator extends ScalarValidator<Iterable<unknown>> {
constructor() {
super();
super.expect(shouldBe);
}
override is = isSingle;
}

0 comments on commit 2bde8c0

Please sign in to comment.