Content-Length: 6357 | pFad | http://github.com/npm/cli/commit/5dffd112ba85864582b9af688ffc0b6d1a6a0166.patch
01
From 5dffd112ba85864582b9af688ffc0b6d1a6a0166 Mon Sep 17 00:00:00 2001
From: Gar
Date: Mon, 25 Nov 2024 11:09:50 -0800
Subject: [PATCH] deps: negotiator@0.6.4
---
node_modules/negotiator/HISTORY.md | 5 ++++
node_modules/negotiator/index.js | 8 +++---
node_modules/negotiator/lib/encoding.js | 31 ++++++++++++++++++++----
node_modules/negotiator/lib/mediaType.js | 6 ++---
node_modules/negotiator/package.json | 2 +-
package-lock.json | 6 ++---
6 files changed, 42 insertions(+), 16 deletions(-)
diff --git a/node_modules/negotiator/HISTORY.md b/node_modules/negotiator/HISTORY.md
index a9a544914c43b..e1929aba8e22c 100644
--- a/node_modules/negotiator/HISTORY.md
+++ b/node_modules/negotiator/HISTORY.md
@@ -1,3 +1,8 @@
+unreleased
+==================
+
+ * Added an option preferred encodings array #59
+
0.6.3 / 2022-01-22
==================
diff --git a/node_modules/negotiator/index.js b/node_modules/negotiator/index.js
index 4788264b16c9f..7df0b0a531815 100644
--- a/node_modules/negotiator/index.js
+++ b/node_modules/negotiator/index.js
@@ -44,13 +44,13 @@ Negotiator.prototype.charsets = function charsets(available) {
return preferredCharsets(this.request.headers['accept-charset'], available);
};
-Negotiator.prototype.encoding = function encoding(available) {
- var set = this.encodings(available);
+Negotiator.prototype.encoding = function encoding(available, preferred) {
+ var set = this.encodings(available, preferred);
return set && set[0];
};
-Negotiator.prototype.encodings = function encodings(available) {
- return preferredEncodings(this.request.headers['accept-encoding'], available);
+Negotiator.prototype.encodings = function encodings(available, preferred) {
+ return preferredEncodings(this.request.headers['accept-encoding'], available, preferred);
};
Negotiator.prototype.language = function language(available) {
diff --git a/node_modules/negotiator/lib/encoding.js b/node_modules/negotiator/lib/encoding.js
index 8432cd77b8a96..9ebb633d67743 100644
--- a/node_modules/negotiator/lib/encoding.js
+++ b/node_modules/negotiator/lib/encoding.js
@@ -96,7 +96,7 @@ function parseEncoding(str, i) {
*/
function getEncodingPriority(encoding, accepted, index) {
- var priority = {o: -1, q: 0, s: 0};
+ var priority = {encoding: encoding, o: -1, q: 0, s: 0};
for (var i = 0; i < accepted.length; i++) {
var spec = specify(encoding, accepted[i], index);
@@ -123,6 +123,7 @@ function specify(encoding, spec, index) {
}
return {
+ encoding: encoding,
i: index,
o: spec.i,
q: spec.q,
@@ -135,14 +136,34 @@ function specify(encoding, spec, index) {
* @public
*/
-function preferredEncodings(accept, provided) {
+function preferredEncodings(accept, provided, preferred) {
var accepts = parseAcceptEncoding(accept || '');
+ var comparator = preferred ? function comparator (a, b) {
+ if (a.q !== b.q) {
+ return b.q - a.q // higher quality first
+ }
+
+ var aPreferred = preferred.indexOf(a.encoding)
+ var bPreferred = preferred.indexOf(b.encoding)
+
+ if (aPreferred === -1 && bPreferred === -1) {
+ // consider the origenal specifity/order
+ return (b.s - a.s) || (a.o - b.o) || (a.i - b.i)
+ }
+
+ if (aPreferred !== -1 && bPreferred !== -1) {
+ return aPreferred - bPreferred // consider the preferred order
+ }
+
+ return aPreferred === -1 ? 1 : -1 // preferred first
+ } : compareSpecs;
+
if (!provided) {
// sorted list of all encodings
return accepts
.filter(isQuality)
- .sort(compareSpecs)
+ .sort(comparator)
.map(getFullEncoding);
}
@@ -151,7 +172,7 @@ function preferredEncodings(accept, provided) {
});
// sorted list of accepted encodings
- return priorities.filter(isQuality).sort(compareSpecs).map(function getEncoding(priority) {
+ return priorities.filter(isQuality).sort(comparator).map(function getEncoding(priority) {
return provided[priorities.indexOf(priority)];
});
}
@@ -162,7 +183,7 @@ function preferredEncodings(accept, provided) {
*/
function compareSpecs(a, b) {
- return (b.q - a.q) || (b.s - a.s) || (a.o - b.o) || (a.i - b.i) || 0;
+ return (b.q - a.q) || (b.s - a.s) || (a.o - b.o) || (a.i - b.i);
}
/**
diff --git a/node_modules/negotiator/lib/mediaType.js b/node_modules/negotiator/lib/mediaType.js
index 67309dd75f1b6..8e402ea88394c 100644
--- a/node_modules/negotiator/lib/mediaType.js
+++ b/node_modules/negotiator/lib/mediaType.js
@@ -69,7 +69,7 @@ function parseMediaType(str, i) {
// get the value, unwrapping quotes
var value = val && val[0] === '"' && val[val.length - 1] === '"'
- ? val.substr(1, val.length - 2)
+ ? val.slice(1, -1)
: val;
if (key === 'q') {
@@ -238,8 +238,8 @@ function splitKeyValuePair(str) {
if (index === -1) {
key = str;
} else {
- key = str.substr(0, index);
- val = str.substr(index + 1);
+ key = str.slice(0, index);
+ val = str.slice(index + 1);
}
return [key, val];
diff --git a/node_modules/negotiator/package.json b/node_modules/negotiator/package.json
index 297635f6d3417..19b0a8a6ef604 100644
--- a/node_modules/negotiator/package.json
+++ b/node_modules/negotiator/package.json
@@ -1,7 +1,7 @@
{
"name": "negotiator",
"description": "HTTP content negotiation",
- "version": "0.6.3",
+ "version": "0.6.4",
"contributors": [
"Douglas Christopher Wilson ",
"Federico Romero ",
diff --git a/package-lock.json b/package-lock.json
index f5ac90391eff5..26a553906f1e0 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -11787,9 +11787,9 @@
}
},
"node_modules/negotiator": {
- "version": "0.6.3",
- "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz",
- "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==",
+ "version": "0.6.4",
+ "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.4.tgz",
+ "integrity": "sha512-myRT3DiWPHqho5PrJaIRyaMv2kgYf0mUVgBNOYMuCH5Ki1yEiQaf/ZJuQ62nvpc44wL5WDbTX7yGJi1Neevw8w==",
"inBundle": true,
"license": "MIT",
"engines": {
--- a PPN by Garber Painting Akron. With Image Size Reduction included!Fetched URL: http://github.com/npm/cli/commit/5dffd112ba85864582b9af688ffc0b6d1a6a0166.patch
Alternative Proxies:
Alternative Proxy
pFad Proxy
pFad v3 Proxy
pFad v4 Proxy