@atcute/util-fetch 1.0.5 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,43 +1,43 @@
1
- import * as v from '@badrap/valita';
1
+ import * as v from 'valibot';
2
2
  /** DoH JSON response schema for TXT record queries */
3
- export declare const dohJsonTxtResult: v.ObjectType<{
3
+ export declare const dohJsonTxtResult: v.LooseObjectSchema<{
4
4
  /** DNS response code */
5
- Status: v.Type<number>;
5
+ readonly Status: v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.CheckAction<number, undefined>]>;
6
6
  /** whether response is truncated */
7
- TC: v.Type<boolean>;
7
+ readonly TC: v.BooleanSchema<undefined>;
8
8
  /** whether recursive desired bit is set, always true for Google and Cloudflare DoH */
9
- RD: v.Type<boolean>;
9
+ readonly RD: v.BooleanSchema<undefined>;
10
10
  /** whether recursive available bit is set, always true for Google and Cloudflare DoH */
11
- RA: v.Type<boolean>;
11
+ readonly RA: v.BooleanSchema<undefined>;
12
12
  /** whether response data was validated with DNSSEC */
13
- AD: v.Type<boolean>;
13
+ readonly AD: v.BooleanSchema<undefined>;
14
14
  /** whether client asked to disable DNSSEC validation */
15
- CD: v.Type<boolean>;
15
+ readonly CD: v.BooleanSchema<undefined>;
16
16
  /** requested records */
17
- Question: v.TupleType<[v.ObjectType<{
18
- name: v.Type<string>;
19
- type: v.Type<16>;
20
- }, undefined>]>;
17
+ readonly Question: v.TupleSchema<[v.LooseObjectSchema<{
18
+ readonly name: v.StringSchema<undefined>;
19
+ readonly type: v.LiteralSchema<16, undefined>;
20
+ }, undefined>], undefined>;
21
21
  /** answers */
22
- Answer: v.Type<{
23
- name: string;
24
- type: 16;
25
- TTL: number;
26
- data: string;
27
- }[]>;
22
+ readonly Answer: v.OptionalSchema<v.ArraySchema<v.LooseObjectSchema<{
23
+ readonly name: v.StringSchema<undefined>;
24
+ readonly type: v.LiteralSchema<16, undefined>;
25
+ readonly TTL: v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.CheckAction<number, undefined>]>;
26
+ readonly data: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TransformAction<string, string>]>;
27
+ }, undefined>, undefined>, () => never[]>;
28
28
  /** authority */
29
- Authority: v.Optional<{
30
- name: string;
31
- type: number;
32
- TTL: number;
33
- data: string;
34
- }[]>;
29
+ readonly Authority: v.OptionalSchema<v.ArraySchema<v.LooseObjectSchema<{
30
+ readonly name: v.StringSchema<undefined>;
31
+ readonly type: v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.CheckAction<number, undefined>]>;
32
+ readonly TTL: v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.CheckAction<number, undefined>]>;
33
+ readonly data: v.StringSchema<undefined>;
34
+ }, undefined>, undefined>, undefined>;
35
35
  /** comment from the DNS server */
36
- Comment: v.Optional<string | string[]>;
36
+ readonly Comment: v.OptionalSchema<v.UnionSchema<[v.StringSchema<undefined>, v.ArraySchema<v.StringSchema<undefined>, undefined>], undefined>, undefined>;
37
37
  }, undefined>;
38
- export type DohJsonTxtResult = v.Infer<typeof dohJsonTxtResult>;
38
+ export type DohJsonTxtResult = v.InferOutput<typeof dohJsonTxtResult>;
39
39
  /** fetch handler pipeline for DoH JSON TXT record responses */
40
- export declare const fetchDohJsonTxt: (input: Response) => Promise<import("./transformers.js").ParsedJsonResponse<{
40
+ export declare const fetchDohJsonTxt: (input: Response) => Promise<import("./transformers.ts").ParsedJsonResponse<{
41
41
  Status: number;
42
42
  TC: boolean;
43
43
  RD: boolean;
@@ -47,19 +47,27 @@ export declare const fetchDohJsonTxt: (input: Response) => Promise<import("./tra
47
47
  Question: [{
48
48
  name: string;
49
49
  type: 16;
50
+ } & {
51
+ [key: string]: unknown;
50
52
  }];
51
- Answer: {
53
+ Answer: ({
52
54
  name: string;
53
55
  type: 16;
54
56
  TTL: number;
55
57
  data: string;
56
- }[];
57
- Authority?: {
58
+ } & {
59
+ [key: string]: unknown;
60
+ })[];
61
+ Authority?: ({
58
62
  name: string;
59
63
  type: number;
60
64
  TTL: number;
61
65
  data: string;
62
- }[] | undefined;
66
+ } & {
67
+ [key: string]: unknown;
68
+ })[] | undefined;
63
69
  Comment?: string | string[] | undefined;
70
+ } & {
71
+ [key: string]: unknown;
64
72
  }>>;
65
73
  //# sourceMappingURL=doh-json.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"doh-json.d.ts","sourceRoot":"","sources":["../lib/doh-json.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,gBAAgB,CAAC;AA4BpC,sDAAsD;AACtD,eAAO,MAAM,gBAAgB;IAC5B,wBAAwB;;IAExB,oCAAoC;;IAEpC,sFAAsF;;IAEtF,wFAAwF;;IAExF,sDAAsD;;IAEtD,wDAAwD;;IAExD,wBAAwB;;;;;IAExB,cAAc;;;;;;;IAEd,gBAAgB;;;;;;;IAEhB,kCAAkC;;aAEjC,CAAC;AAEH,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAEhE,+DAA+D;AAC/D,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;GAI3B,CAAC"}
1
+ {"version":3,"file":"doh-json.d.ts","sourceRoot":"","sources":["../lib/doh-json.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,SAAS,CAAC;AAgC7B,sDAAsD;AACtD,eAAO,MAAM,gBAAgB;IAC5B,wBAAwB;;IAExB,oCAAoC;;IAEpC,sFAAsF;;IAEtF,wFAAwF;;IAExF,sDAAsD;;IAEtD,wDAAwD;;IAExD,wBAAwB;;;;;IAExB,cAAc;;;;;;;IAEd,gBAAgB;;;;;;;IAEhB,kCAAkC;;aAEjC,CAAC;AAEH,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAEtE,+DAA+D;AAC/D,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAI3B,CAAC"}
package/dist/doh-json.js CHANGED
@@ -1,27 +1,25 @@
1
- import * as v from '@badrap/valita';
1
+ import * as v from 'valibot';
2
2
  import { pipe } from './pipeline.js';
3
3
  import { isResponseOk, parseResponseAsJson, validateJsonWith } from './transformers.js';
4
- const uint32 = v.number().assert((input) => Number.isInteger(input) && input >= 0 && input <= 2 ** 32 - 1);
5
- const question = v.object({
4
+ const uint32 = v.pipe(v.number(), v.check((input) => Number.isInteger(input) && input >= 0 && input <= 2 ** 32 - 1));
5
+ const question = v.looseObject({
6
6
  name: v.string(),
7
7
  type: v.literal(16), // TXT
8
8
  });
9
- const answer = v.object({
9
+ const answer = v.looseObject({
10
10
  name: v.string(),
11
11
  type: v.literal(16), // TXT
12
12
  TTL: uint32,
13
- data: v.string().chain((input) => {
14
- return v.ok(input.replace(/^"|"$/g, '').replace(/\\"/g, '"'));
15
- }),
13
+ data: v.pipe(v.string(), v.transform((input) => input.replace(/^"|"$/g, '').replace(/\\"/g, '"'))),
16
14
  });
17
- const authority = v.object({
15
+ const authority = v.looseObject({
18
16
  name: v.string(),
19
17
  type: uint32,
20
18
  TTL: uint32,
21
19
  data: v.string(),
22
20
  });
23
21
  /** DoH JSON response schema for TXT record queries */
24
- export const dohJsonTxtResult = v.object({
22
+ export const dohJsonTxtResult = v.looseObject({
25
23
  /** DNS response code */
26
24
  Status: uint32,
27
25
  /** whether response is truncated */
@@ -37,12 +35,12 @@ export const dohJsonTxtResult = v.object({
37
35
  /** requested records */
38
36
  Question: v.tuple([question]),
39
37
  /** answers */
40
- Answer: v.array(answer).optional(() => []),
38
+ Answer: v.optional(v.array(answer), () => []),
41
39
  /** authority */
42
- Authority: v.array(authority).optional(),
40
+ Authority: v.optional(v.array(authority)),
43
41
  /** comment from the DNS server */
44
- Comment: v.union(v.string(), v.array(v.string())).optional(),
42
+ Comment: v.optional(v.union([v.string(), v.array(v.string())])),
45
43
  });
46
44
  /** fetch handler pipeline for DoH JSON TXT record responses */
47
- export const fetchDohJsonTxt = pipe(isResponseOk, parseResponseAsJson(/^application\/(dns-)?json$/, 16 * 1024), validateJsonWith(dohJsonTxtResult, { mode: 'passthrough' }));
45
+ export const fetchDohJsonTxt = pipe(isResponseOk, parseResponseAsJson(/^application\/(dns-)?json$/, 16 * 1024), validateJsonWith(dohJsonTxtResult));
48
46
  //# sourceMappingURL=doh-json.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"doh-json.js","sourceRoot":"","sources":["../lib/doh-json.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,gBAAgB,CAAC;AAEpC,OAAO,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AACrC,OAAO,EAAE,YAAY,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAExF,MAAM,MAAM,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC;AAE3G,MAAM,QAAQ,GAAG,CAAC,CAAC,MAAM,CAAC;IACzB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,MAAM;CAC3B,CAAC,CAAC;AAEH,MAAM,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC;IACvB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,MAAM;IAC3B,GAAG,EAAE,MAAM;IACX,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC;QACjC,OAAO,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC;IAAA,CAC9D,CAAC;CACF,CAAC,CAAC;AAEH,MAAM,SAAS,GAAG,CAAC,CAAC,MAAM,CAAC;IAC1B,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,IAAI,EAAE,MAAM;IACZ,GAAG,EAAE,MAAM;IACX,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;CAChB,CAAC,CAAC;AAEH,sDAAsD;AACtD,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,CAAC,MAAM,CAAC;IACxC,wBAAwB;IACxB,MAAM,EAAE,MAAM;IACd,oCAAoC;IACpC,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE;IACf,sFAAsF;IACtF,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE;IACf,wFAAwF;IACxF,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE;IACf,sDAAsD;IACtD,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE;IACf,wDAAwD;IACxD,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE;IACf,wBAAwB;IACxB,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC;IAC7B,cAAc;IACd,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC;IAC1C,gBAAgB;IAChB,SAAS,EAAE,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,QAAQ,EAAE;IACxC,kCAAkC;IAClC,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE;CAC5D,CAAC,CAAC;AAIH,+DAA+D;AAC/D,MAAM,CAAC,MAAM,eAAe,GAAG,IAAI,CAClC,YAAY,EACZ,mBAAmB,CAAC,4BAA4B,EAAE,EAAE,GAAG,IAAI,CAAC,EAC5D,gBAAgB,CAAC,gBAAgB,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC,CAC3D,CAAC"}
1
+ {"version":3,"file":"doh-json.js","sourceRoot":"","sources":["../lib/doh-json.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,SAAS,CAAC;AAE7B,OAAO,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AACrC,OAAO,EAAE,YAAY,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAExF,MAAM,MAAM,GAAG,CAAC,CAAC,IAAI,CACpB,CAAC,CAAC,MAAM,EAAE,EACV,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CACjF,CAAC;AAEF,MAAM,QAAQ,GAAG,CAAC,CAAC,WAAW,CAAC;IAC9B,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,MAAM;CAC3B,CAAC,CAAC;AAEH,MAAM,MAAM,GAAG,CAAC,CAAC,WAAW,CAAC;IAC5B,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,MAAM;IAC3B,GAAG,EAAE,MAAM;IACX,IAAI,EAAE,CAAC,CAAC,IAAI,CACX,CAAC,CAAC,MAAM,EAAE,EACV,CAAC,CAAC,SAAS,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CACxE;CACD,CAAC,CAAC;AAEH,MAAM,SAAS,GAAG,CAAC,CAAC,WAAW,CAAC;IAC/B,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,IAAI,EAAE,MAAM;IACZ,GAAG,EAAE,MAAM;IACX,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;CAChB,CAAC,CAAC;AAEH,sDAAsD;AACtD,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,CAAC,WAAW,CAAC;IAC7C,wBAAwB;IACxB,MAAM,EAAE,MAAM;IACd,oCAAoC;IACpC,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE;IACf,sFAAsF;IACtF,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE;IACf,wFAAwF;IACxF,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE;IACf,sDAAsD;IACtD,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE;IACf,wDAAwD;IACxD,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE;IACf,wBAAwB;IACxB,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC;IAC7B,cAAc;IACd,MAAM,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC;IAC7C,gBAAgB;IAChB,SAAS,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IACzC,kCAAkC;IAClC,OAAO,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC;CAC/D,CAAC,CAAC;AAIH,+DAA+D;AAC/D,MAAM,CAAC,MAAM,eAAe,GAAG,IAAI,CAClC,YAAY,EACZ,mBAAmB,CAAC,4BAA4B,EAAE,EAAE,GAAG,IAAI,CAAC,EAC5D,gBAAgB,CAAC,gBAAgB,CAAC,CAClC,CAAC"}
package/dist/errors.d.ts CHANGED
@@ -2,24 +2,23 @@ export declare class FetchResponseError extends Error {
2
2
  name: string;
3
3
  }
4
4
  export declare class FailedResponseError extends FetchResponseError {
5
- response: Response;
6
5
  name: string;
6
+ response: Response;
7
7
  constructor(response: Response);
8
8
  get status(): number;
9
9
  }
10
10
  export declare class ImproperContentTypeError extends FetchResponseError {
11
- contentType: string | null;
12
11
  name: string;
12
+ contentType: string | null;
13
13
  constructor(contentType: string | null, reason: string);
14
14
  }
15
15
  export declare class ImproperContentLengthError extends FetchResponseError {
16
+ name: string;
16
17
  expectedSize: number;
17
18
  actualSize: number | null;
18
- name: string;
19
19
  constructor(expectedSize: number, actualSize: number | null, reason: string);
20
20
  }
21
21
  export declare class ImproperResponseError extends FetchResponseError {
22
22
  name: string;
23
- constructor(reason: string, options?: ErrorOptions);
24
23
  }
25
24
  //# sourceMappingURL=errors.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../lib/errors.ts"],"names":[],"mappings":"AAAA,qBAAa,kBAAmB,SAAQ,KAAK;IACnC,IAAI,SAAwB;CACrC;AAED,qBAAa,mBAAoB,SAAQ,kBAAkB;IAGvC,QAAQ,EAAE,QAAQ;IAF5B,IAAI,SAAyB;IAEtC,YAAmB,QAAQ,EAAE,QAAQ,EAEpC;IAED,IAAI,MAAM,IAAI,MAAM,CAEnB;CACD;AAED,qBAAa,wBAAyB,SAAQ,kBAAkB;IAIvD,WAAW,EAAE,MAAM,GAAG,IAAI;IAHzB,IAAI,SAA8B;IAE3C,YACQ,WAAW,EAAE,MAAM,GAAG,IAAI,EACjC,MAAM,EAAE,MAAM,EAGd;CACD;AAED,qBAAa,0BAA2B,SAAQ,kBAAkB;IAIzD,YAAY,EAAE,MAAM;IACpB,UAAU,EAAE,MAAM,GAAG,IAAI;IAJxB,IAAI,SAAgC;IAE7C,YACQ,YAAY,EAAE,MAAM,EACpB,UAAU,EAAE,MAAM,GAAG,IAAI,EAChC,MAAM,EAAE,MAAM,EAGd;CACD;AAED,qBAAa,qBAAsB,SAAQ,kBAAkB;IACnD,IAAI,SAA2B;IAExC,YAAY,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,YAAY,EAEjD;CACD"}
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../lib/errors.ts"],"names":[],"mappings":"AAAA,qBAAa,kBAAmB,SAAQ,KAAK;IACnC,IAAI,SAAwB;CACrC;AAED,qBAAa,mBAAoB,SAAQ,kBAAkB;IACjD,IAAI,SAAyB;IAEtC,QAAQ,EAAE,QAAQ,CAAC;IAEnB,YAAY,QAAQ,EAAE,QAAQ,EAG7B;IAED,IAAI,MAAM,IAAI,MAAM,CAEnB;CACD;AAED,qBAAa,wBAAyB,SAAQ,kBAAkB;IACtD,IAAI,SAA8B;IAE3C,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAE3B,YAAY,WAAW,EAAE,MAAM,GAAG,IAAI,EAAE,MAAM,EAAE,MAAM,EAGrD;CACD;AAED,qBAAa,0BAA2B,SAAQ,kBAAkB;IACxD,IAAI,SAAgC;IAE7C,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAE1B,YAAY,YAAY,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI,EAAE,MAAM,EAAE,MAAM,EAI1E;CACD;AAED,qBAAa,qBAAsB,SAAQ,kBAAkB;IACnD,IAAI,SAA2B;CACxC"}
package/dist/errors.js CHANGED
@@ -2,8 +2,8 @@ export class FetchResponseError extends Error {
2
2
  name = 'FetchResponseError';
3
3
  }
4
4
  export class FailedResponseError extends FetchResponseError {
5
- response;
6
5
  name = 'FailedResponseError';
6
+ response;
7
7
  constructor(response) {
8
8
  super(`got http ${response.status}`);
9
9
  this.response = response;
@@ -13,17 +13,17 @@ export class FailedResponseError extends FetchResponseError {
13
13
  }
14
14
  }
15
15
  export class ImproperContentTypeError extends FetchResponseError {
16
- contentType;
17
16
  name = 'ImproperContentTypeError';
17
+ contentType;
18
18
  constructor(contentType, reason) {
19
19
  super(reason);
20
20
  this.contentType = contentType;
21
21
  }
22
22
  }
23
23
  export class ImproperContentLengthError extends FetchResponseError {
24
+ name = 'ImproperContentLengthError';
24
25
  expectedSize;
25
26
  actualSize;
26
- name = 'ImproperContentLengthError';
27
27
  constructor(expectedSize, actualSize, reason) {
28
28
  super(reason);
29
29
  this.expectedSize = expectedSize;
@@ -32,8 +32,5 @@ export class ImproperContentLengthError extends FetchResponseError {
32
32
  }
33
33
  export class ImproperResponseError extends FetchResponseError {
34
34
  name = 'ImproperResponseError';
35
- constructor(reason, options) {
36
- super(reason, options);
37
- }
38
35
  }
39
36
  //# sourceMappingURL=errors.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"errors.js","sourceRoot":"","sources":["../lib/errors.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,kBAAmB,SAAQ,KAAK;IACnC,IAAI,GAAG,oBAAoB,CAAC;CACrC;AAED,MAAM,OAAO,mBAAoB,SAAQ,kBAAkB;IAGvC,QAAQ;IAFlB,IAAI,GAAG,qBAAqB,CAAC;IAEtC,YAAmB,QAAkB,EAAE;QACtC,KAAK,CAAC,YAAY,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;wBADnB,QAAQ;IACW,CACrC;IAED,IAAI,MAAM,GAAW;QACpB,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;IAAA,CAC5B;CACD;AAED,MAAM,OAAO,wBAAyB,SAAQ,kBAAkB;IAIvD,WAAW;IAHV,IAAI,GAAG,0BAA0B,CAAC;IAE3C,YACQ,WAA0B,EACjC,MAAc,EACb;QACD,KAAK,CAAC,MAAM,CAAC,CAAC;2BAHP,WAAW;IAGJ,CACd;CACD;AAED,MAAM,OAAO,0BAA2B,SAAQ,kBAAkB;IAIzD,YAAY;IACZ,UAAU;IAJT,IAAI,GAAG,4BAA4B,CAAC;IAE7C,YACQ,YAAoB,EACpB,UAAyB,EAChC,MAAc,EACb;QACD,KAAK,CAAC,MAAM,CAAC,CAAC;4BAJP,YAAY;0BACZ,UAAU;IAGH,CACd;CACD;AAED,MAAM,OAAO,qBAAsB,SAAQ,kBAAkB;IACnD,IAAI,GAAG,uBAAuB,CAAC;IAExC,YAAY,MAAc,EAAE,OAAsB,EAAE;QACnD,KAAK,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAAA,CACvB;CACD"}
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../lib/errors.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,kBAAmB,SAAQ,KAAK;IACnC,IAAI,GAAG,oBAAoB,CAAC;CACrC;AAED,MAAM,OAAO,mBAAoB,SAAQ,kBAAkB;IACjD,IAAI,GAAG,qBAAqB,CAAC;IAEtC,QAAQ,CAAW;IAEnB,YAAY,QAAkB;QAC7B,KAAK,CAAC,YAAY,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;QACrC,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC1B,CAAC;IAED,IAAI,MAAM;QACT,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;IAC7B,CAAC;CACD;AAED,MAAM,OAAO,wBAAyB,SAAQ,kBAAkB;IACtD,IAAI,GAAG,0BAA0B,CAAC;IAE3C,WAAW,CAAgB;IAE3B,YAAY,WAA0B,EAAE,MAAc;QACrD,KAAK,CAAC,MAAM,CAAC,CAAC;QACd,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;IAChC,CAAC;CACD;AAED,MAAM,OAAO,0BAA2B,SAAQ,kBAAkB;IACxD,IAAI,GAAG,4BAA4B,CAAC;IAE7C,YAAY,CAAS;IACrB,UAAU,CAAgB;IAE1B,YAAY,YAAoB,EAAE,UAAyB,EAAE,MAAc;QAC1E,KAAK,CAAC,MAAM,CAAC,CAAC;QACd,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;QACjC,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;IAC9B,CAAC;CACD;AAED,MAAM,OAAO,qBAAsB,SAAQ,kBAAkB;IACnD,IAAI,GAAG,uBAAuB,CAAC;CACxC"}
package/dist/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
- export * from './doh-json.js';
2
- export * from './errors.js';
3
- export * from './pipeline.js';
4
- export * from './transformers.js';
1
+ export * from './doh-json.ts';
2
+ export * from './errors.ts';
3
+ export * from './pipeline.ts';
4
+ export * from './transformers.ts';
5
5
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"pipeline.js","sourceRoot":"","sources":["../lib/pipeline.ts"],"names":[],"mappings":"AA6BA,MAAM,UAAU,IAAI,CACnB,GAAG,QAAiD,EACM;IAC1D,OAAO,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AAAA,CAChC;AAED,MAAM,OAAO,GAAG,CACf,KAAwB,EACxB,MAAyB,EACI,EAAE,CAAC;IAChC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAAA,CAC5C,CAAC"}
1
+ {"version":3,"file":"pipeline.js","sourceRoot":"","sources":["../lib/pipeline.ts"],"names":[],"mappings":"AA6BA,MAAM,UAAU,IAAI,CACnB,GAAG,QAAiD;IAEpD,OAAO,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AACjC,CAAC;AAED,MAAM,OAAO,GAAG,CACf,KAAwB,EACxB,MAAyB,EACI,EAAE;IAC/B,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC7C,CAAC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"size-limit.js","sourceRoot":"","sources":["../../lib/streams/size-limit.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,GAAG,MAAM,cAAc,CAAC;AAEpC,MAAM,OAAO,eAAgB,SAAQ,eAAiE;IACrG,YAAY,OAAe,EAAE;QAC5B,IAAI,SAAS,GAAG,CAAC,CAAC;QAElB,KAAK,CAAC;YACL,SAAS,CAAC,KAAK,EAAE,UAAU,EAAE;gBAC5B,SAAS,IAAI,KAAK,CAAC,MAAM,CAAC;gBAE1B,IAAI,SAAS,GAAG,OAAO,EAAE,CAAC;oBACzB,UAAU,CAAC,KAAK,CACf,IAAI,GAAG,CAAC,0BAA0B,CAAC,OAAO,EAAE,SAAS,EAAE,mCAAmC,CAAC,CAC3F,CAAC;oBAEF,OAAO;gBACR,CAAC;gBAED,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YAAA,CAC1B;SACD,CAAC,CAAC;IAAA,CACH;CACD"}
1
+ {"version":3,"file":"size-limit.js","sourceRoot":"","sources":["../../lib/streams/size-limit.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,GAAG,MAAM,cAAc,CAAC;AAEpC,MAAM,OAAO,eAAgB,SAAQ,eAAiE;IACrG,YAAY,OAAe;QAC1B,IAAI,SAAS,GAAG,CAAC,CAAC;QAElB,KAAK,CAAC;YACL,SAAS,CAAC,KAAK,EAAE,UAAU;gBAC1B,SAAS,IAAI,KAAK,CAAC,MAAM,CAAC;gBAE1B,IAAI,SAAS,GAAG,OAAO,EAAE,CAAC;oBACzB,UAAU,CAAC,KAAK,CACf,IAAI,GAAG,CAAC,0BAA0B,CAAC,OAAO,EAAE,SAAS,EAAE,mCAAmC,CAAC,CAC3F,CAAC;oBAEF,OAAO;gBACR,CAAC;gBAED,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YAC3B,CAAC;SACD,CAAC,CAAC;IACJ,CAAC;CACD"}
@@ -1,4 +1,4 @@
1
- import * as v from '@badrap/valita';
1
+ import * as v from 'valibot';
2
2
  export type TextResponse = {
3
3
  response: Response;
4
4
  text: string;
@@ -9,6 +9,6 @@ export type ParsedJsonResponse<T = unknown> = {
9
9
  };
10
10
  export declare const isResponseOk: (response: Response) => Promise<Response>;
11
11
  export declare const readResponseAsText: (maxSize: number) => (response: Response) => Promise<TextResponse>;
12
- export declare const parseResponseAsJson: (typeRegex: RegExp, maxSize: number) => (response: Response) => Promise<ParsedJsonResponse<unknown>>;
13
- export declare const validateJsonWith: <T>(schema: v.Type<T>, options?: v.ParseOptions | undefined) => (parsed: ParsedJsonResponse<unknown>) => Promise<ParsedJsonResponse<T>>;
12
+ export declare const parseResponseAsJson: (typeRegex: RegExp, maxSize: number) => (response: Response) => Promise<ParsedJsonResponse>;
13
+ export declare const validateJsonWith: <TOutput>(schema: v.GenericSchema<unknown, TOutput>) => (parsed: ParsedJsonResponse) => Promise<ParsedJsonResponse<TOutput>>;
14
14
  //# sourceMappingURL=transformers.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"transformers.d.ts","sourceRoot":"","sources":["../lib/transformers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,gBAAgB,CAAC;AAKpC,MAAM,MAAM,YAAY,GAAG;IAC1B,QAAQ,EAAE,QAAQ,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;CACb,CAAC;AAEF,MAAM,MAAM,kBAAkB,CAAC,CAAC,GAAG,OAAO,IAAI;IAC7C,QAAQ,EAAE,QAAQ,CAAC;IACnB,IAAI,EAAE,CAAC,CAAC;CACR,CAAC;AAEF,eAAO,MAAM,YAAY,2CAMxB,CAAC;AAEF,eAAO,MAAM,kBAAkB,oEAK7B,CAAC;AAEH,eAAO,MAAM,mBAAmB,sGAa9B,CAAC;AAIH,eAAO,MAAM,gBAAgB,GAC3B,CAAC,qIAID,CAAC"}
1
+ {"version":3,"file":"transformers.d.ts","sourceRoot":"","sources":["../lib/transformers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,SAAS,CAAC;AAK7B,MAAM,MAAM,YAAY,GAAG;IAC1B,QAAQ,EAAE,QAAQ,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;CACb,CAAC;AAEF,MAAM,MAAM,kBAAkB,CAAC,CAAC,GAAG,OAAO,IAAI;IAC7C,QAAQ,EAAE,QAAQ,CAAC;IACnB,IAAI,EAAE,CAAC,CAAC;CACR,CAAC;AAEF,eAAO,MAAM,YAAY,aAAoB,QAAQ,KAAG,OAAO,CAAC,QAAQ,CAMvE,CAAC;AAEF,eAAO,MAAM,kBAAkB,YACpB,MAAM,gBACC,QAAQ,KAAG,OAAO,CAAC,YAAY,CAG/C,CAAC;AAEH,eAAO,MAAM,mBAAmB,cACnB,MAAM,WAAW,MAAM,gBAClB,QAAQ,KAAG,OAAO,CAAC,kBAAkB,CAWrD,CAAC;AAEH,eAAO,MAAM,gBAAgB,GAC3B,OAAO,UAAU,CAAC,CAAC,aAAa,CAAC,OAAO,EAAE,OAAO,CAAC,cACpC,kBAAkB,KAAG,OAAO,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAGtE,CAAC"}
@@ -1,4 +1,4 @@
1
- import * as v from '@badrap/valita';
1
+ import * as v from 'valibot';
2
2
  import * as err from './errors.js';
3
3
  import { SizeLimitStream } from './streams/size-limit.js';
4
4
  export const isResponseOk = async (response) => {
@@ -22,8 +22,8 @@ export const parseResponseAsJson = (typeRegex, maxSize) => async (response) => {
22
22
  throw new err.ImproperResponseError(`unexpected json data`, { cause: error });
23
23
  }
24
24
  };
25
- export const validateJsonWith = (schema, options) => async (parsed) => {
26
- const json = schema.parse(parsed.json, options);
25
+ export const validateJsonWith = (schema) => async (parsed) => {
26
+ const json = v.parse(schema, parsed.json);
27
27
  return { response: parsed.response, json };
28
28
  };
29
29
  const assertContentType = async (response, typeRegex) => {
@@ -1 +1 @@
1
- {"version":3,"file":"transformers.js","sourceRoot":"","sources":["../lib/transformers.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"transformers.js","sourceRoot":"","sources":["../lib/transformers.ts"],"names":[],"mappings":"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"}
package/lib/doh-json.ts CHANGED
@@ -1,25 +1,29 @@
1
- import * as v from '@badrap/valita';
1
+ import * as v from 'valibot';
2
2
 
3
- import { pipe } from './pipeline.js';
4
- import { isResponseOk, parseResponseAsJson, validateJsonWith } from './transformers.js';
3
+ import { pipe } from './pipeline.ts';
4
+ import { isResponseOk, parseResponseAsJson, validateJsonWith } from './transformers.ts';
5
5
 
6
- const uint32 = v.number().assert((input) => Number.isInteger(input) && input >= 0 && input <= 2 ** 32 - 1);
6
+ const uint32 = v.pipe(
7
+ v.number(),
8
+ v.check((input) => Number.isInteger(input) && input >= 0 && input <= 2 ** 32 - 1),
9
+ );
7
10
 
8
- const question = v.object({
11
+ const question = v.looseObject({
9
12
  name: v.string(),
10
13
  type: v.literal(16), // TXT
11
14
  });
12
15
 
13
- const answer = v.object({
16
+ const answer = v.looseObject({
14
17
  name: v.string(),
15
18
  type: v.literal(16), // TXT
16
19
  TTL: uint32,
17
- data: v.string().chain((input) => {
18
- return v.ok(input.replace(/^"|"$/g, '').replace(/\\"/g, '"'));
19
- }),
20
+ data: v.pipe(
21
+ v.string(),
22
+ v.transform((input) => input.replace(/^"|"$/g, '').replace(/\\"/g, '"')),
23
+ ),
20
24
  });
21
25
 
22
- const authority = v.object({
26
+ const authority = v.looseObject({
23
27
  name: v.string(),
24
28
  type: uint32,
25
29
  TTL: uint32,
@@ -27,7 +31,7 @@ const authority = v.object({
27
31
  });
28
32
 
29
33
  /** DoH JSON response schema for TXT record queries */
30
- export const dohJsonTxtResult = v.object({
34
+ export const dohJsonTxtResult = v.looseObject({
31
35
  /** DNS response code */
32
36
  Status: uint32,
33
37
  /** whether response is truncated */
@@ -43,18 +47,18 @@ export const dohJsonTxtResult = v.object({
43
47
  /** requested records */
44
48
  Question: v.tuple([question]),
45
49
  /** answers */
46
- Answer: v.array(answer).optional(() => []),
50
+ Answer: v.optional(v.array(answer), () => []),
47
51
  /** authority */
48
- Authority: v.array(authority).optional(),
52
+ Authority: v.optional(v.array(authority)),
49
53
  /** comment from the DNS server */
50
- Comment: v.union(v.string(), v.array(v.string())).optional(),
54
+ Comment: v.optional(v.union([v.string(), v.array(v.string())])),
51
55
  });
52
56
 
53
- export type DohJsonTxtResult = v.Infer<typeof dohJsonTxtResult>;
57
+ export type DohJsonTxtResult = v.InferOutput<typeof dohJsonTxtResult>;
54
58
 
55
59
  /** fetch handler pipeline for DoH JSON TXT record responses */
56
60
  export const fetchDohJsonTxt = pipe(
57
61
  isResponseOk,
58
62
  parseResponseAsJson(/^application\/(dns-)?json$/, 16 * 1024),
59
- validateJsonWith(dohJsonTxtResult, { mode: 'passthrough' }),
63
+ validateJsonWith(dohJsonTxtResult),
60
64
  );
package/lib/errors.ts CHANGED
@@ -5,8 +5,11 @@ export class FetchResponseError extends Error {
5
5
  export class FailedResponseError extends FetchResponseError {
6
6
  override name = 'FailedResponseError';
7
7
 
8
- constructor(public response: Response) {
8
+ response: Response;
9
+
10
+ constructor(response: Response) {
9
11
  super(`got http ${response.status}`);
12
+ this.response = response;
10
13
  }
11
14
 
12
15
  get status(): number {
@@ -17,30 +20,27 @@ export class FailedResponseError extends FetchResponseError {
17
20
  export class ImproperContentTypeError extends FetchResponseError {
18
21
  override name = 'ImproperContentTypeError';
19
22
 
20
- constructor(
21
- public contentType: string | null,
22
- reason: string,
23
- ) {
23
+ contentType: string | null;
24
+
25
+ constructor(contentType: string | null, reason: string) {
24
26
  super(reason);
27
+ this.contentType = contentType;
25
28
  }
26
29
  }
27
30
 
28
31
  export class ImproperContentLengthError extends FetchResponseError {
29
32
  override name = 'ImproperContentLengthError';
30
33
 
31
- constructor(
32
- public expectedSize: number,
33
- public actualSize: number | null,
34
- reason: string,
35
- ) {
34
+ expectedSize: number;
35
+ actualSize: number | null;
36
+
37
+ constructor(expectedSize: number, actualSize: number | null, reason: string) {
36
38
  super(reason);
39
+ this.expectedSize = expectedSize;
40
+ this.actualSize = actualSize;
37
41
  }
38
42
  }
39
43
 
40
44
  export class ImproperResponseError extends FetchResponseError {
41
45
  override name = 'ImproperResponseError';
42
-
43
- constructor(reason: string, options?: ErrorOptions) {
44
- super(reason, options);
45
- }
46
46
  }
package/lib/index.ts CHANGED
@@ -1,4 +1,4 @@
1
- export * from './doh-json.js';
2
- export * from './errors.js';
3
- export * from './pipeline.js';
4
- export * from './transformers.js';
1
+ export * from './doh-json.ts';
2
+ export * from './errors.ts';
3
+ export * from './pipeline.ts';
4
+ export * from './transformers.ts';
@@ -1,4 +1,4 @@
1
- import * as err from '../errors.js';
1
+ import * as err from '../errors.ts';
2
2
 
3
3
  export class SizeLimitStream extends TransformStream<Uint8Array<ArrayBuffer>, Uint8Array<ArrayBuffer>> {
4
4
  constructor(maxSize: number) {
@@ -1,7 +1,7 @@
1
- import * as v from '@badrap/valita';
1
+ import * as v from 'valibot';
2
2
 
3
- import * as err from './errors.js';
4
- import { SizeLimitStream } from './streams/size-limit.js';
3
+ import * as err from './errors.ts';
4
+ import { SizeLimitStream } from './streams/size-limit.ts';
5
5
 
6
6
  export type TextResponse = {
7
7
  response: Response;
@@ -43,12 +43,10 @@ export const parseResponseAsJson =
43
43
  }
44
44
  };
45
45
 
46
- type ParseOptions = NonNullable<Parameters<v.Type['parse']>[1]>;
47
-
48
46
  export const validateJsonWith =
49
- <T>(schema: v.Type<T>, options?: ParseOptions) =>
50
- async (parsed: ParsedJsonResponse): Promise<ParsedJsonResponse<T>> => {
51
- const json = schema.parse(parsed.json, options);
47
+ <TOutput>(schema: v.GenericSchema<unknown, TOutput>) =>
48
+ async (parsed: ParsedJsonResponse): Promise<ParsedJsonResponse<TOutput>> => {
49
+ const json = v.parse(schema, parsed.json);
52
50
  return { response: parsed.response, json };
53
51
  };
54
52
 
package/package.json CHANGED
@@ -1,7 +1,6 @@
1
1
  {
2
- "type": "module",
3
2
  "name": "@atcute/util-fetch",
4
- "version": "1.0.5",
3
+ "version": "2.0.0",
5
4
  "description": "internal fetch utilities",
6
5
  "keywords": [
7
6
  "atproto",
@@ -12,24 +11,26 @@
12
11
  "url": "https://github.com/mary-ext/atcute",
13
12
  "directory": "packages/misc/util-fetch"
14
13
  },
15
- "publishConfig": {
16
- "access": "public"
17
- },
18
14
  "files": [
19
15
  "dist/",
20
16
  "lib/",
21
17
  "!lib/**/*.bench.ts",
22
- "!lib/**/*.test.ts"
18
+ "!lib/**/*.test.ts",
19
+ "!dist/**/*.{test,bench}.*"
23
20
  ],
21
+ "type": "module",
22
+ "sideEffects": false,
24
23
  "exports": {
25
24
  ".": "./dist/index.js"
26
25
  },
27
- "sideEffects": false,
26
+ "publishConfig": {
27
+ "access": "public"
28
+ },
28
29
  "dependencies": {
29
- "@badrap/valita": "^0.4.6"
30
+ "valibot": "^1.4.0"
30
31
  },
31
32
  "scripts": {
32
- "build": "tsgo --project tsconfig.build.json",
33
+ "build": "tsgo",
33
34
  "prepublish": "rm -rf dist; pnpm run build"
34
35
  }
35
36
  }