astro-ghostcms/.pnpm-store/v3/files/1d/7900c510f2bd2d63984df12b647...

71 lines
2.6 KiB
Plaintext

"use strict";
/* --------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the MIT License. See License.txt in the project root for license information.
* ------------------------------------------------------------------------------------------ */
Object.defineProperty(exports, "__esModule", { value: true });
exports.Encodings = void 0;
var Encodings;
(function (Encodings) {
function getEncodingHeaderValue(encodings) {
if (encodings.length === 1) {
return encodings[0].name;
}
const distribute = encodings.length - 1;
if (distribute > 1000) {
throw new Error(`Quality value can only have three decimal digits but trying to distribute ${encodings.length} elements.`);
}
const digits = Math.ceil(Math.log10(distribute));
const factor = Math.pow(10, digits);
const diff = Math.floor((1 / distribute) * factor) / factor;
const result = [];
let q = 1;
for (const encoding of encodings) {
result.push(`${encoding.name};q=${q === 1 || q === 0 ? q.toFixed(0) : q.toFixed(digits)}`);
q = q - diff;
}
return result.join(', ');
}
Encodings.getEncodingHeaderValue = getEncodingHeaderValue;
function parseEncodingHeaderValue(value) {
const map = new Map();
const encodings = value.split(/\s*,\s*/);
for (const value of encodings) {
const [encoding, q] = parseEncoding(value);
if (encoding === '*') {
continue;
}
let values = map.get(q);
if (values === undefined) {
values = [];
map.set(q, values);
}
values.push(encoding);
}
const keys = Array.from(map.keys());
keys.sort((a, b) => b - a);
const result = [];
for (const key of keys) {
result.push(...map.get(key));
}
return result;
}
Encodings.parseEncodingHeaderValue = parseEncodingHeaderValue;
function parseEncoding(value) {
let q = 1;
let encoding;
const index = value.indexOf(';q=');
if (index !== -1) {
const parsed = parseFloat(value.substr(index));
if (!Number.isNaN(parsed)) {
q = parsed;
}
encoding = value.substr(0, index);
}
else {
encoding = value;
}
return [encoding, q];
}
})(Encodings || (exports.Encodings = Encodings = {}));