• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

plusnew / router / 14168719779

31 Mar 2025 09:44AM UTC coverage: 83.428% (-8.3%) from 91.712%
14168719779

Pull #349

github

web-flow
Merge 9cf30c16d into 0b7c03408
Pull Request #349: 4.0.0 Nested Routes, Default Handling

182 of 232 branches covered (78.45%)

Branch coverage included in aggregate %.

850 of 1005 new or added lines in 12 files covered. (84.58%)

850 of 1005 relevant lines covered (84.58%)

29.55 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

61.33
/src/schema/boolean.ts
1
import type { schema } from "../types";
1✔
2

1✔
3
export default function <
2✔
4
  T extends boolean = boolean,
2✔
5
  U extends T | null | undefined = undefined,
2✔
6
>(opt?: {
2✔
7
  validate?: (value: boolean) => value is T;
2✔
8
  default?: U;
2✔
9
}): NoInfer<
2✔
10
  schema<
2✔
11
    T | (null extends U ? null : never),
2✔
12
    T | (U extends number ? null : never) | (U extends null ? null : never)
2✔
13
  >
2✔
14
> {
2✔
15
  return {
2✔
16
    // eslint-disable-next-line require-yield
2✔
17
    fromUrl: function* (tokenizer, hasValues) {
2✔
18
      if (hasValues === false) {
2!
NEW
19
        if (opt?.default !== undefined) {
×
NEW
20
          return opt.default;
×
NEW
21
        }
×
NEW
22
        throw new Error("No default value provided");
×
NEW
23
      }
×
24
      let result: boolean;
2✔
25
      if (tokenizer.lookahead({ type: "TEXT", value: "true" }) === null) {
2✔
26
        tokenizer.eat({ type: "TEXT", value: "false" });
1✔
27
        result = false;
1✔
28
      } else {
1✔
29
        tokenizer.eat({ type: "TEXT", value: "true" });
1✔
30
        result = true;
1✔
31
      }
1✔
32

2✔
33
      if (opt?.validate && opt.validate(result) === false) {
2!
NEW
34
        throw new Error("Validation failed");
×
NEW
35
      }
×
36

2✔
37
      return result as any;
2✔
38
    },
2✔
39
    toUrl: function (value: boolean | null) {
2✔
40
      if (value === null) {
2!
NEW
41
        if (opt?.default === undefined) {
×
NEW
42
          throw new Error("No default value provided");
×
NEW
43
        }
×
NEW
44

×
NEW
45
        if (opt.default === null) {
×
NEW
46
          return null;
×
NEW
47
        }
×
NEW
48
        value = opt.default;
×
NEW
49
      }
×
50

2✔
51
      if (opt?.validate && opt.validate(value) === false) {
2!
NEW
52
        throw new Error("Validation failed");
×
NEW
53
      }
×
54

2✔
55
      return encodeURIComponent(value);
2✔
56
    },
2✔
57
    isEqual: function (a: boolean, b: boolean) {
2✔
NEW
58
      return a === b;
×
NEW
59
    },
×
60
    default: opt?.default,
2!
61
  };
2✔
62
}
2✔
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc