@cudenix/cudenix 0.0.49 → 0.0.51

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 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/ecosystem/modules/compress/index.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,eAAe;IAC/B,SAAS,CAAC,EAAE,MAAM,CAAC;CACnB;AAMD,eAAO,MAAM,QAAQ,GACpB,gBAAsB,eAA6B;;;EAqGnD,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/ecosystem/modules/compress/index.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,eAAe;IAC/B,SAAS,CAAC,EAAE,MAAM,CAAC;CACnB;AAuED,eAAO,MAAM,QAAQ,GACpB,gBAAsB,eAA6B;;;EAwGnD,CAAC"}
@@ -2,13 +2,49 @@ import { module, processResponse, success } from "../../../core/index.js";
2
2
  import { Empty } from "../../../utils/index.js";
3
3
  const compressibleRegexp = /^\s*(?:text\/[^;\s]+|application\/(?:json|javascript|xml|x-www-form-urlencoded)|[^;\s]+\/[^;\s]+\+(?:json|text|xml|yaml))(?:[;\s]|$)/i;
4
4
  const noTransformRegexp = /\bno-transform\b/i;
5
+ const parseAcceptEncoding = (header) => {
6
+ const map = new Map();
7
+ if (!header) {
8
+ return map;
9
+ }
10
+ let order = 0;
11
+ const split = header.split(",");
12
+ for (let i = 0; i < split.length; i++) {
13
+ const token = split[i]?.trim().toLowerCase();
14
+ if (!token) {
15
+ continue;
16
+ }
17
+ const [name, ...options] = token.split(";").map((split) => {
18
+ return split.trim();
19
+ });
20
+ if (!name) {
21
+ continue;
22
+ }
23
+ let q = 1;
24
+ for (let j = 0; j < options.length; j++) {
25
+ const option = options[j];
26
+ if (!option) {
27
+ continue;
28
+ }
29
+ const priority = Number(option.match(/^q=([0-9.]+)$/)?.[1]);
30
+ if (Number.isNaN(priority)) {
31
+ continue;
32
+ }
33
+ q = priority;
34
+ }
35
+ const previous = map.get(name);
36
+ if (!previous || q > previous.q) {
37
+ map.set(name, {
38
+ order,
39
+ q,
40
+ });
41
+ }
42
+ order++;
43
+ }
44
+ return map;
45
+ };
5
46
  export const compress = ({ threshold = 1024 } = new Empty()) => {
6
- const encodings = {
7
- br: "brotli",
8
- deflate: "deflate",
9
- gzip: "gzip",
10
- zstd: "zstd",
11
- };
47
+ const encodings = ["br", "gzip", "deflate", "zstd"];
12
48
  return module().middleware(async ({ request: { raw }, response }, next) => {
13
49
  await next();
14
50
  const contentLength = response.headers.get("Content-Length");
@@ -22,27 +58,26 @@ export const compress = ({ threshold = 1024 } = new Empty()) => {
22
58
  (contentLength && Number(contentLength) < threshold)) {
23
59
  return;
24
60
  }
25
- const accepted = [
26
- ...new Set(raw.headers
27
- .get("Accept-Encoding")
28
- ?.split(",")
29
- .map((encoding) => {
30
- return encoding.trim().toLowerCase().split(";")[0];
31
- })
32
- .filter((encoding) => {
33
- return !!encoding;
34
- })),
35
- ];
36
- if (accepted.length === 0) {
61
+ const accepted = parseAcceptEncoding(raw.headers.get("Accept-Encoding") ?? "");
62
+ if (accepted.size === 0) {
37
63
  return;
38
64
  }
39
- const encoding = accepted
65
+ const star = accepted.get("*");
66
+ const encoding = encodings
40
67
  .map((encoding) => {
41
- return encodings[encoding];
68
+ return {
69
+ order: 0,
70
+ q: 0,
71
+ ...(accepted.get(encoding) ?? star),
72
+ name: encoding,
73
+ };
42
74
  })
43
- .find((encoding) => {
44
- return !!encoding;
45
- });
75
+ .filter((encoding) => {
76
+ return encoding.q > 0;
77
+ })
78
+ .sort((a, b) => {
79
+ return b.q === a.q ? a.order - b.order : b.q - a.q;
80
+ })[0];
46
81
  if (!encoding) {
47
82
  return;
48
83
  }
@@ -62,12 +97,15 @@ export const compress = ({ threshold = 1024 } = new Empty()) => {
62
97
  if (!stream) {
63
98
  return;
64
99
  }
65
- processedResponse.headers.append("Vary", "Accept-Encoding");
100
+ const vary = processedResponse.headers.get("Vary");
101
+ if (!vary || vary.toLowerCase().indexOf("accept-encoding") === -1) {
102
+ processedResponse.headers.append("Vary", "Accept-Encoding");
103
+ }
66
104
  processedResponse.headers.delete("Content-Length");
67
- processedResponse.headers.set("Content-Encoding", encoding);
68
- response.content = success(new Response(
105
+ processedResponse.headers.set("Content-Encoding", encoding.name);
106
+ response.content = success(new Response(stream.pipeThrough(new CompressionStream(
69
107
  // @ts-expect-error
70
- stream.pipeThrough(new CompressionStream(encoding)), processedResponse), {
108
+ encoding.name === "br" ? "brotli" : encoding.name)), processedResponse), {
71
109
  status: processedResponse.status,
72
110
  transform: false,
73
111
  });
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/ecosystem/modules/compress/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/ecosystem/modules/compress/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -6,8 +6,8 @@
6
6
  },
7
7
  "description": "cudenix",
8
8
  "devDependencies": {
9
- "@biomejs/biome": "2.3.7",
10
- "@types/bun": "1.3.3",
9
+ "@biomejs/biome": "2.3.10",
10
+ "@types/bun": "1.3.4",
11
11
  "tsc-alias": "1.8.16",
12
12
  "typescript": "5.9.3"
13
13
  },
@@ -89,5 +89,5 @@
89
89
  "sideEffects": false,
90
90
  "type": "module",
91
91
  "types": "dist/index.d.ts",
92
- "version": "0.0.49"
92
+ "version": "0.0.51"
93
93
  }