@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;
|
|
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
|
-
|
|
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
|
|
65
|
+
const star = accepted.get("*");
|
|
66
|
+
const encoding = encodings
|
|
40
67
|
.map((encoding) => {
|
|
41
|
-
return
|
|
68
|
+
return {
|
|
69
|
+
order: 0,
|
|
70
|
+
q: 0,
|
|
71
|
+
...(accepted.get(encoding) ?? star),
|
|
72
|
+
name: encoding,
|
|
73
|
+
};
|
|
42
74
|
})
|
|
43
|
-
.
|
|
44
|
-
return
|
|
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.
|
|
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
|
-
|
|
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":"AAAA,OAAO,EAAE,MAAM,EAAE,eAAe,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC;AAC1D,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAMhC,MAAM,kBAAkB,GACvB,uIAAuI,CAAC;AACzI,MAAM,iBAAiB,GAAG,mBAAmB,CAAC;AAE9C,MAAM,CAAC,MAAM,
|
|
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.
|
|
10
|
-
"@types/bun": "1.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.
|
|
92
|
+
"version": "0.0.51"
|
|
93
93
|
}
|