mirror of
https://github.com/Azgaar/Fantasy-Map-Generator.git
synced 2025-12-17 09:41:24 +01:00
* Adding gzip compression for improving storage use and backward compatibility. (#984) * Basic gzip an gunzip on load and save. * refactor file save type to .gz and update the data in ui. --------- Co-authored-by: Azgaar <maxganiev@yandex.com> * refactor: cleanup, change wording * feat: streamline saving options * fix: fixes --------- Co-authored-by: Efruz Yıldırır <30903352+yldrefruz@users.noreply.github.com>
32 lines
982 B
JavaScript
32 lines
982 B
JavaScript
"use strict";
|
|
|
|
// replaceAll
|
|
if (String.prototype.replaceAll === undefined) {
|
|
String.prototype.replaceAll = function (str, newStr) {
|
|
if (Object.prototype.toString.call(str).toLowerCase() === "[object regexp]") return this.replace(str, newStr);
|
|
return this.replace(new RegExp(str, "g"), newStr);
|
|
};
|
|
}
|
|
|
|
// flat
|
|
if (Array.prototype.flat === undefined) {
|
|
Array.prototype.flat = function () {
|
|
return this.reduce((acc, val) => (Array.isArray(val) ? acc.concat(val.flat()) : acc.concat(val)), []);
|
|
};
|
|
}
|
|
|
|
// readable stream iterator: https://bugs.chromium.org/p/chromium/issues/detail?id=929585#c10
|
|
if (ReadableStream.prototype[Symbol.asyncIterator] === undefined) {
|
|
ReadableStream.prototype[Symbol.asyncIterator] = async function* () {
|
|
const reader = this.getReader();
|
|
try {
|
|
while (true) {
|
|
const {done, value} = await reader.read();
|
|
if (done) return;
|
|
yield value;
|
|
}
|
|
} finally {
|
|
reader.releaseLock();
|
|
}
|
|
};
|
|
}
|