minimalistic-server 0.0.62 → 0.0.64
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/index.mjs +46 -41
- package/package.json +1 -1
package/index.mjs
CHANGED
|
@@ -1809,63 +1809,68 @@ export class FileResponse extends Response {
|
|
|
1809
1809
|
return !!mimeTypes[extension]?.match(/^(audio|video)\//);
|
|
1810
1810
|
}
|
|
1811
1811
|
|
|
1812
|
-
|
|
1813
|
-
let
|
|
1812
|
+
#getFragmentRequest(headers) {
|
|
1813
|
+
let promise = this.#fragmentRequestMap.get(headers);
|
|
1814
1814
|
|
|
1815
|
-
if (
|
|
1816
|
-
|
|
1817
|
-
|
|
1818
|
-
|
|
1819
|
-
|
|
1815
|
+
if (promise === undefined && headers?.['range']) {
|
|
1816
|
+
const getFragmentRequest = async () => {
|
|
1817
|
+
if (headers['range'].includes(',')) {
|
|
1818
|
+
return null;
|
|
1819
|
+
}
|
|
1820
1820
|
|
|
1821
|
-
|
|
1822
|
-
|
|
1823
|
-
|
|
1824
|
-
|
|
1825
|
-
|
|
1826
|
-
|
|
1821
|
+
const numbers = headers['range']
|
|
1822
|
+
.trim()
|
|
1823
|
+
.replace('bytes=', '')
|
|
1824
|
+
.split(/\b\s*-\s*/gm)
|
|
1825
|
+
.map(x => {
|
|
1826
|
+
if (!x) {
|
|
1827
|
+
return null;
|
|
1828
|
+
}
|
|
1827
1829
|
|
|
1828
|
-
|
|
1829
|
-
return null;
|
|
1830
|
-
}
|
|
1830
|
+
x = +x;
|
|
1831
1831
|
|
|
1832
|
-
|
|
1833
|
-
|
|
1832
|
+
if (!Number.isSafeInteger(x)) {
|
|
1833
|
+
return null;
|
|
1834
|
+
}
|
|
1835
|
+
|
|
1836
|
+
return x;
|
|
1837
|
+
});
|
|
1834
1838
|
|
|
1835
|
-
|
|
1839
|
+
const data = await this.#retreiveData();
|
|
1836
1840
|
|
|
1837
|
-
|
|
1838
|
-
|
|
1839
|
-
|
|
1840
|
-
}
|
|
1841
|
+
if (data.code < 200 || data.code > 299 || typeof data.body !== 'function') {
|
|
1842
|
+
return null;
|
|
1843
|
+
}
|
|
1841
1844
|
|
|
1842
|
-
|
|
1845
|
+
let offset = numbers[0] ?? 0;
|
|
1843
1846
|
|
|
1844
|
-
|
|
1845
|
-
|
|
1846
|
-
|
|
1847
|
+
if (offset < 0) {
|
|
1848
|
+
offset = data.size + offset;
|
|
1849
|
+
}
|
|
1847
1850
|
|
|
1848
|
-
|
|
1849
|
-
|
|
1850
|
-
|
|
1851
|
+
if (offset >= data.size) {
|
|
1852
|
+
offset = data.size - 1;
|
|
1853
|
+
}
|
|
1851
1854
|
|
|
1852
|
-
|
|
1855
|
+
let size = (numbers[1] ?? (this.#maxFragmentSize - 1 + offset)) - offset + 1;
|
|
1853
1856
|
|
|
1854
|
-
|
|
1855
|
-
|
|
1856
|
-
|
|
1857
|
+
if (size < 0) {
|
|
1858
|
+
size = 0;
|
|
1859
|
+
}
|
|
1857
1860
|
|
|
1858
|
-
|
|
1861
|
+
size = Math.min(size, data.size - offset);
|
|
1859
1862
|
|
|
1860
|
-
|
|
1861
|
-
|
|
1862
|
-
|
|
1863
|
-
|
|
1863
|
+
return {
|
|
1864
|
+
offset,
|
|
1865
|
+
size,
|
|
1866
|
+
};
|
|
1867
|
+
}
|
|
1864
1868
|
|
|
1865
|
-
|
|
1869
|
+
promise = getFragmentRequest();
|
|
1870
|
+
this.#fragmentRequestMap.set(headers, promise);
|
|
1866
1871
|
}
|
|
1867
1872
|
|
|
1868
|
-
return
|
|
1873
|
+
return promise ?? null;
|
|
1869
1874
|
}
|
|
1870
1875
|
|
|
1871
1876
|
async * #getDirectoryStream() {
|