Skip to content

Commit fa5105c

Browse files
committed
docs(preconditions): add code block
1 parent c615224 commit fa5105c

File tree

5 files changed

+137
-6
lines changed

5 files changed

+137
-6
lines changed

preconditions/if_match.ts

Lines changed: 28 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,33 @@ import {
1515
import type { Precondition } from "../types.ts";
1616
import { ifMatch } from "./utils.ts";
1717

18-
/** `If-Match` header field precondition. */
18+
/** `If-Match` header field precondition.
19+
*
20+
* @example
21+
* ```ts
22+
* import { IfMatch } from "https://deno.land/x/conditional_request_middleware@$VERSION/mod.ts";
23+
* import { assertEquals } from "https://deno.land/std/testing/asserts.ts";
24+
*
25+
* const precondition = new IfMatch();
26+
* const request = new Request("<uri>", {
27+
* headers: { "if-match": "<strong:etag>" },
28+
* });
29+
* const selectedRepresentation = new Response("<content>", {
30+
* headers: { etag: "<weak:etag>" },
31+
* });
32+
* declare const evalResult: false;
33+
*
34+
* assertEquals(precondition.field, "if-match");
35+
* assertEquals(
36+
* precondition.evaluate(request, selectedRepresentation),
37+
* evalResult,
38+
* );
39+
* assertEquals(
40+
* precondition.respond(request, selectedRepresentation, evalResult)?.status,
41+
* 412,
42+
* );
43+
* ```
44+
*/
1945
export class IfMatch implements Precondition {
2046
field = ConditionalHeader.IfMatch;
2147

@@ -36,7 +62,7 @@ export class IfMatch implements Precondition {
3662
_: unknown,
3763
response: Response,
3864
result: boolean,
39-
): undefined | Response {
65+
): Response | undefined {
4066
if (result) return;
4167

4268
const headers = filterKeys(response.headers, not(isRepresentationHeader));

preconditions/if_modified_since.ts

Lines changed: 27 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,33 @@ import { isBannedHeader } from "../utils.ts";
1616
import { ifModifiedSince } from "./utils.ts";
1717
import type { Precondition } from "../types.ts";
1818

19-
/** `If-Modified-Since` header field precondition. */
19+
/** `If-Modified-Since` header field precondition.
20+
*
21+
* @example
22+
* ```ts
23+
* import { IfModifiedSince } from "https://deno.land/x/conditional_request_middleware@$VERSION/mod.ts";
24+
* import { assertEquals } from "https://deno.land/std/testing/asserts.ts";
25+
*
26+
* const precondition = new IfModifiedSince();
27+
* const request = new Request("<uri>", {
28+
* headers: { "if-modified-since": "<after:HTTP-date>" },
29+
* });
30+
* const selectedRepresentation = new Response("<content>", {
31+
* headers: { "last-modified": "<before:HTTP-date>" },
32+
* });
33+
* declare const evalResult: false;
34+
*
35+
* assertEquals(precondition.field, "if-modified-since");
36+
* assertEquals(
37+
* precondition.evaluate(request, selectedRepresentation),
38+
* evalResult,
39+
* );
40+
* assertEquals(
41+
* precondition.respond(request, selectedRepresentation, evalResult)?.status,
42+
* 304,
43+
* );
44+
* ```
45+
*/
2046
export class IfModifiedSince implements Precondition {
2147
field = ConditionalHeader.IfModifiedSince;
2248

preconditions/if_none_match.ts

Lines changed: 27 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,33 @@ import type { Precondition } from "../types.ts";
1717
import { ifNoneMatch } from "./utils.ts";
1818
import { isBannedHeader } from "../utils.ts";
1919

20-
/** `If-None-Match` header field precondition. */
20+
/** `If-None-Match` header field precondition.
21+
*
22+
* @example
23+
* ```ts
24+
* import { IfNoneMatch } from "https://deno.land/x/conditional_request_middleware@$VERSION/mod.ts";
25+
* import { assertEquals } from "https://deno.land/std/testing/asserts.ts";
26+
*
27+
* const precondition = new IfNoneMatch();
28+
* const request = new Request("<uri>", {
29+
* headers: { "if-none-match": "<weak:etag>" },
30+
* });
31+
* const selectedRepresentation = new Response("<content>", {
32+
* headers: { etag: "<weak:etag>" },
33+
* });
34+
* declare const evalResult: false;
35+
*
36+
* assertEquals(precondition.field, "if-none-match");
37+
* assertEquals(
38+
* precondition.evaluate(request, selectedRepresentation),
39+
* evalResult,
40+
* );
41+
* assertEquals(
42+
* precondition.respond(request, selectedRepresentation, evalResult)?.status,
43+
* 304,
44+
* );
45+
* ```
46+
*/
2147
export class IfNoneMatch implements Precondition {
2248
field = ConditionalHeader.IfNoneMatch;
2349

preconditions/if_range.ts

Lines changed: 28 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,34 @@ export function evaluateIfRange(
4444
return result.value;
4545
}
4646

47-
/** `If-Range` header field precondition. */
47+
/** `If-Range` header field precondition.
48+
*
49+
* @example
50+
* ```ts
51+
* import { IfRange } from "https://deno.land/x/conditional_request_middleware@$VERSION/mod.ts";
52+
* import { assertEquals } from "https://deno.land/std/testing/asserts.ts";
53+
*
54+
* const precondition = new IfRange();
55+
* const request = new Request("<uri>", {
56+
* headers: { "if-range": "<strong:etag>", range: "<range-unit>=<range-set>" },
57+
* });
58+
* const selectedRepresentation = new Response("<content>", {
59+
* headers: { etag: "<strong:etag>" },
60+
* });
61+
* declare const evalResult: false;
62+
*
63+
* assertEquals(precondition.field, "if-range");
64+
* assertEquals(
65+
* precondition.evaluate(request, selectedRepresentation),
66+
* evalResult,
67+
* );
68+
* assertEquals(
69+
* (await precondition.respond(request, selectedRepresentation, evalResult))
70+
* ?.status,
71+
* 206,
72+
* );
73+
* ```
74+
*/
4875
export class IfRange implements Precondition {
4976
#ranges: Iterable<Range>;
5077
field = ConditionalHeader.IfRange;

preconditions/if_unmodified_since.ts

Lines changed: 27 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,33 @@ import {
1313
import type { Precondition } from "../types.ts";
1414
import { ifUnmodifiedSince } from "./utils.ts";
1515

16-
/** `If-Unmodified-Since` header field precondition. */
16+
/** `If-Unmodified-Since` header field precondition.
17+
*
18+
* @example
19+
* ```ts
20+
* import { IfUnmodifiedSince } from "https://deno.land/x/conditional_request_middleware@$VERSION/mod.ts";
21+
* import { assertEquals } from "https://deno.land/std/testing/asserts.ts";
22+
*
23+
* const precondition = new IfUnmodifiedSince();
24+
* const request = new Request("<uri>", {
25+
* headers: { "if-unmodified-since": "<before:HTTP-date>" },
26+
* });
27+
* const selectedRepresentation = new Response("<content>", {
28+
* headers: { "last-modified": "<after:HTTP-date>" },
29+
* });
30+
* declare const evalResult: false;
31+
*
32+
* assertEquals(precondition.field, "if-unmodified-since");
33+
* assertEquals(
34+
* precondition.evaluate(request, selectedRepresentation),
35+
* evalResult,
36+
* );
37+
* assertEquals(
38+
* precondition.respond(request, selectedRepresentation, evalResult)?.status,
39+
* 412,
40+
* );
41+
* ```
42+
*/
1743
export class IfUnmodifiedSince implements Precondition {
1844
field = ConditionalHeader.IfUnmodifiedSince;
1945

0 commit comments

Comments
 (0)