@httpland/compression-middleware 1.0.0-beta.1 → 1.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.
package/README.md CHANGED
@@ -29,7 +29,7 @@ For a definition of Universal HTTP middleware, see the
29
29
  Middleware convert message body and adds the `Content-Encoding` header to the
30
30
  response.
31
31
 
32
- Also, safely add `Accept-Encoding` to the `vary` header in response.
32
+ Also, safely add `Accept-Encoding` to the `Vary` header in response.
33
33
 
34
34
  ```ts
35
35
  import { compression } from "https://deno.land/x/compression_middleware@$VERSION/mod.ts";
package/esm/deps.js CHANGED
@@ -3,6 +3,6 @@
3
3
  export { CachingHeader, ContentNegotiationHeader, RepresentationHeader, } from "@httpland/http-utils";
4
4
  export { acceptsEncodings } from "./deps/deno.land/std@0.180.0/http/negotiation.js";
5
5
  export { parseMediaType } from "./deps/deno.land/std@0.180.0/media_types/mod.js";
6
- export { isNull } from "isxx";
6
+ export { isIterable, isNull, } from "isxx";
7
7
  export { default as compressible } from "compressible";
8
8
  export { vary } from "./deps/deno.land/x/vary@1.0.0/mod.js";
package/esm/middleware.js CHANGED
@@ -1,10 +1,10 @@
1
1
  // Copyright 2023-latest the httpland authors. All rights reserved. MIT license.
2
2
  // This module is browser compatible.
3
- import { acceptsEncodings, ContentNegotiationHeader, vary, } from "./deps.js";
3
+ import { acceptsEncodings, ContentNegotiationHeader, isIterable, vary, } from "./deps.js";
4
4
  import { withContentEncoding } from "./transform.js";
5
5
  import { Gzip } from "./encoders/gzip.js";
6
6
  import { Deflate } from "./encoders/deflate.js";
7
- const DefaultEncoders = [Gzip, Deflate];
7
+ const BuiltInEncoders = [Gzip, Deflate];
8
8
  /** Create HTTP content compression middleware.
9
9
  *
10
10
  * @example
@@ -30,8 +30,8 @@ const DefaultEncoders = [Gzip, Deflate];
30
30
  */
31
31
  export function compression(encoders) {
32
32
  const encodingMap = {
33
- ...fromEncoders(DefaultEncoders),
34
- ...Array.isArray(encoders) ? fromEncoders(encoders) : encoders,
33
+ ...fromEncoders(BuiltInEncoders),
34
+ ...isIterable(encoders) ? fromEncoders(encoders) : encoders,
35
35
  };
36
36
  const encodings = Object.keys(encodingMap);
37
37
  return async (request, next) => {
@@ -50,6 +50,6 @@ export function flat(encoder) {
50
50
  return [encoder.encoding, encoder.encode];
51
51
  }
52
52
  export function fromEncoders(encoders) {
53
- return Object.fromEntries(encoders.map(flat));
53
+ return Object.fromEntries(Array.from(encoders).map(flat));
54
54
  }
55
55
  const IDENTITY = "identity";
package/package.json CHANGED
@@ -3,7 +3,7 @@
3
3
  "main": "./script/mod.js",
4
4
  "types": "./types/mod.d.ts",
5
5
  "name": "@httpland/compression-middleware",
6
- "version": "1.0.0-beta.1",
6
+ "version": "1.0.0",
7
7
  "description": "HTTP compression middleware",
8
8
  "keywords": [
9
9
  "http",
package/script/deps.js CHANGED
@@ -5,7 +5,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
5
5
  return (mod && mod.__esModule) ? mod : { "default": mod };
6
6
  };
7
7
  Object.defineProperty(exports, "__esModule", { value: true });
8
- exports.vary = exports.compressible = exports.isNull = exports.parseMediaType = exports.acceptsEncodings = exports.RepresentationHeader = exports.ContentNegotiationHeader = exports.CachingHeader = void 0;
8
+ exports.vary = exports.compressible = exports.isNull = exports.isIterable = exports.parseMediaType = exports.acceptsEncodings = exports.RepresentationHeader = exports.ContentNegotiationHeader = exports.CachingHeader = void 0;
9
9
  var http_utils_1 = require("@httpland/http-utils");
10
10
  Object.defineProperty(exports, "CachingHeader", { enumerable: true, get: function () { return http_utils_1.CachingHeader; } });
11
11
  Object.defineProperty(exports, "ContentNegotiationHeader", { enumerable: true, get: function () { return http_utils_1.ContentNegotiationHeader; } });
@@ -15,6 +15,7 @@ Object.defineProperty(exports, "acceptsEncodings", { enumerable: true, get: func
15
15
  var mod_js_1 = require("./deps/deno.land/std@0.180.0/media_types/mod.js");
16
16
  Object.defineProperty(exports, "parseMediaType", { enumerable: true, get: function () { return mod_js_1.parseMediaType; } });
17
17
  var isxx_1 = require("isxx");
18
+ Object.defineProperty(exports, "isIterable", { enumerable: true, get: function () { return isxx_1.isIterable; } });
18
19
  Object.defineProperty(exports, "isNull", { enumerable: true, get: function () { return isxx_1.isNull; } });
19
20
  var compressible_1 = require("compressible");
20
21
  Object.defineProperty(exports, "compressible", { enumerable: true, get: function () { return __importDefault(compressible_1).default; } });
@@ -7,7 +7,7 @@ const deps_js_1 = require("./deps.js");
7
7
  const transform_js_1 = require("./transform.js");
8
8
  const gzip_js_1 = require("./encoders/gzip.js");
9
9
  const deflate_js_1 = require("./encoders/deflate.js");
10
- const DefaultEncoders = [gzip_js_1.Gzip, deflate_js_1.Deflate];
10
+ const BuiltInEncoders = [gzip_js_1.Gzip, deflate_js_1.Deflate];
11
11
  /** Create HTTP content compression middleware.
12
12
  *
13
13
  * @example
@@ -33,8 +33,8 @@ const DefaultEncoders = [gzip_js_1.Gzip, deflate_js_1.Deflate];
33
33
  */
34
34
  function compression(encoders) {
35
35
  const encodingMap = {
36
- ...fromEncoders(DefaultEncoders),
37
- ...Array.isArray(encoders) ? fromEncoders(encoders) : encoders,
36
+ ...fromEncoders(BuiltInEncoders),
37
+ ...(0, deps_js_1.isIterable)(encoders) ? fromEncoders(encoders) : encoders,
38
38
  };
39
39
  const encodings = Object.keys(encodingMap);
40
40
  return async (request, next) => {
@@ -55,7 +55,7 @@ function flat(encoder) {
55
55
  }
56
56
  exports.flat = flat;
57
57
  function fromEncoders(encoders) {
58
- return Object.fromEntries(encoders.map(flat));
58
+ return Object.fromEntries(Array.from(encoders).map(flat));
59
59
  }
60
60
  exports.fromEncoders = fromEncoders;
61
61
  const IDENTITY = "identity";
package/types/deps.d.ts CHANGED
@@ -1,7 +1,7 @@
1
- export { type Middleware } from "@httpland/http-middleware";
1
+ export { type Handler, type Middleware, } from "@httpland/http-middleware";
2
2
  export { CachingHeader, ContentNegotiationHeader, RepresentationHeader, } from "@httpland/http-utils";
3
3
  export { acceptsEncodings } from "./deps/deno.land/std@0.180.0/http/negotiation.js";
4
4
  export { parseMediaType } from "./deps/deno.land/std@0.180.0/media_types/mod.js";
5
- export { isNull } from "isxx";
5
+ export { isIterable, isNull, } from "isxx";
6
6
  export { default as compressible } from "compressible";
7
7
  export { vary } from "./deps/deno.land/x/vary@1.0.0/mod.js";
@@ -23,6 +23,6 @@ import type { Encode, Encoder, EncodingMap } from "./types.js";
23
23
  * assertEquals(response.headers.get("content-encoding"), "gzip");
24
24
  * ```
25
25
  */
26
- export declare function compression(encoders?: Encoder[] | EncodingMap): Middleware;
26
+ export declare function compression(encoders?: Iterable<Encoder> | EncodingMap): Middleware;
27
27
  export declare function flat(encoder: Encoder): [encoding: string, encode: Encode];
28
- export declare function fromEncoders(encoders: readonly Encoder[]): EncodingMap;
28
+ export declare function fromEncoders(encoders: Iterable<Encoder>): EncodingMap;
package/types/mod.d.ts CHANGED
@@ -1,2 +1,3 @@
1
1
  export { compression } from "./middleware.js";
2
2
  export type { Encode, Encoder, EncodingMap } from "./types.js";
3
+ export type { Handler, Middleware } from "./deps.js";