Run through prettier
This commit is contained in:
parent
21a26daab0
commit
7733947270
3 changed files with 66 additions and 41 deletions
|
@ -51,7 +51,7 @@ export class DataOptions {
|
|||
|
||||
if (fixedHeaderBytes >= 2) {
|
||||
const languageIDLowByte = data[1];
|
||||
const languageIDHighBit = (byte1 & 0b00000001);
|
||||
const languageIDHighBit = byte1 & 0b00000001;
|
||||
const languageID = (languageIDHighBit << 8) | languageIDLowByte;
|
||||
|
||||
if (LANGUAGES.has(languageID)) {
|
||||
|
|
|
@ -1,4 +1,8 @@
|
|||
import brotliInit, { compress, DecompressStream, BrotliStreamResult } from "./vendor/brotli_wasm.js";
|
||||
import brotliInit, {
|
||||
compress,
|
||||
DecompressStream,
|
||||
BrotliStreamResult,
|
||||
} from "./vendor/brotli_wasm.js";
|
||||
import base from "./vendor/base-x.js";
|
||||
import "./vendor/prism/prism.js";
|
||||
import "./vendor/prism/plugins/line-numbers/prism-line-numbers.js";
|
||||
|
@ -7,12 +11,19 @@ import "./vendor/prism/dependencies.js";
|
|||
import { waitForLoad } from "./utils.js";
|
||||
import { DataOptions } from "./dataoptions.js";
|
||||
import { ViewMode } from "./viewmode.js";
|
||||
import { getDependenciesForLanguage, getDepsData, LANGUAGES, LANGUAGE_NAMES, PLAINTEXT } from "./languages.js";
|
||||
import {
|
||||
getDependenciesForLanguage,
|
||||
getDepsData,
|
||||
LANGUAGES,
|
||||
LANGUAGE_NAMES,
|
||||
PLAINTEXT,
|
||||
} from "./languages.js";
|
||||
|
||||
const PROJECT_NAME = "Tahnaroskakori";
|
||||
const COMPRESS_WAIT = 500;
|
||||
const ENCODER = new TextEncoder();
|
||||
const ALPHABET = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789?/-._~$&+=";
|
||||
const ALPHABET =
|
||||
"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789?/-._~$&+=";
|
||||
const BASECODEC = base(ALPHABET);
|
||||
const QUALITY = 11;
|
||||
const MAX_URL = 2048;
|
||||
|
@ -41,7 +52,9 @@ function setTitle() {
|
|||
if (dataOptions.title !== "") {
|
||||
document.title = dataOptions.title + TITLE_POSTFIX;
|
||||
} else if (currentCode !== "") {
|
||||
document.title = currentCode.replace("\n", "").substring(0, TITLE_CODE_LENGTH) + TITLE_POSTFIX;
|
||||
document.title =
|
||||
currentCode.replace("\n", "").substring(0, TITLE_CODE_LENGTH) +
|
||||
TITLE_POSTFIX;
|
||||
} else {
|
||||
document.title = PROJECT_NAME;
|
||||
}
|
||||
|
@ -80,9 +93,12 @@ async function highlightLanguage() {
|
|||
codeViewEl.classList.add(getLanguageClassName(dataOptions.language));
|
||||
|
||||
if (dataOptions.language !== PLAINTEXT) {
|
||||
const deps = getDependenciesForLanguage(languageDependencies, dataOptions.language);
|
||||
const deps = getDependenciesForLanguage(
|
||||
languageDependencies,
|
||||
dataOptions.language
|
||||
);
|
||||
for (const dep of [...deps, dataOptions.language]) {
|
||||
await import(`./vendor/prism/components/prism-${dep}.js`)
|
||||
await import(`./vendor/prism/components/prism-${dep}.js`);
|
||||
}
|
||||
|
||||
if (viewMode === ViewMode.VIEW) {
|
||||
|
@ -177,7 +193,9 @@ async function syncCompress() {
|
|||
const compressed = compress(dataWithHeader, { quality: QUALITY });
|
||||
const encoded = BASECODEC.encode(compressed);
|
||||
|
||||
statusEl.textContent = `Length: ${dataWithHeader.length} B -> ${compressed.length} B -> ${encoded.length}/${maxHashLength()} chars`;
|
||||
statusEl.textContent = `Length: ${dataWithHeader.length} B -> ${
|
||||
compressed.length
|
||||
} B -> ${encoded.length}/${maxHashLength()} chars`;
|
||||
|
||||
if (encoded.length <= maxHashLength()) {
|
||||
history.replaceState(null, "", `#${encoded}`);
|
||||
|
@ -209,29 +227,37 @@ async function streamDecompress() {
|
|||
start(controller) {
|
||||
controller.enqueue(data);
|
||||
controller.close();
|
||||
}
|
||||
},
|
||||
});
|
||||
|
||||
const decompressStream = new DecompressStream();
|
||||
const decompressionRunner = new TransformStream({
|
||||
start() {},
|
||||
transform(chunk, controller) {
|
||||
controller.enqueue(decompressStream.decompress(chunk, DECOMPRESS_CHUNK_SIZE));
|
||||
controller.enqueue(
|
||||
decompressStream.decompress(chunk, DECOMPRESS_CHUNK_SIZE)
|
||||
);
|
||||
|
||||
let slice = chunk;
|
||||
|
||||
while (decompressStream.result() === BrotliStreamResult.NeedsMoreOutput) {
|
||||
while (
|
||||
decompressStream.result() === BrotliStreamResult.NeedsMoreOutput
|
||||
) {
|
||||
slice = slice.slice(decompressStream.last_input_offset());
|
||||
controller.enqueue(decompressStream.decompress(slice, DECOMPRESS_CHUNK_SIZE));
|
||||
controller.enqueue(
|
||||
decompressStream.decompress(slice, DECOMPRESS_CHUNK_SIZE)
|
||||
);
|
||||
}
|
||||
},
|
||||
flush(controller) {
|
||||
if (decompressStream.result() === BrotliStreamResult.NeedsMoreInput) {
|
||||
controller.enqueue(decompressStream.decompress("", DECOMPRESS_CHUNK_SIZE));
|
||||
controller.enqueue(
|
||||
decompressStream.decompress("", DECOMPRESS_CHUNK_SIZE)
|
||||
);
|
||||
}
|
||||
|
||||
controller.terminate();
|
||||
}
|
||||
},
|
||||
});
|
||||
|
||||
const optionsPickerStream = new TransformStream({
|
||||
|
@ -250,7 +276,7 @@ async function streamDecompress() {
|
|||
} else {
|
||||
controller.enqueue(chunk);
|
||||
}
|
||||
}
|
||||
},
|
||||
});
|
||||
|
||||
const textDecoderStream = new TextDecoderStream();
|
||||
|
@ -265,8 +291,10 @@ async function streamDecompress() {
|
|||
renderCode();
|
||||
|
||||
// Delay stream between every chunk to avoid zip bombing
|
||||
return new Promise(resolve => setTimeout(resolve, DECOMPRESS_CHUNK_TIMEOUT));
|
||||
}
|
||||
return new Promise((resolve) =>
|
||||
setTimeout(resolve, DECOMPRESS_CHUNK_TIMEOUT)
|
||||
);
|
||||
},
|
||||
});
|
||||
|
||||
await inputStream
|
||||
|
@ -287,7 +315,9 @@ async function streamDecompress() {
|
|||
*/
|
||||
async function languageSelected() {
|
||||
codeViewEl.classList.remove(getLanguageClassName(dataOptions.language));
|
||||
codeViewContentEl.classList.remove(getLanguageClassName(dataOptions.language));
|
||||
codeViewContentEl.classList.remove(
|
||||
getLanguageClassName(dataOptions.language)
|
||||
);
|
||||
|
||||
if (LANGUAGES.has(languageSelectEl.value)) {
|
||||
dataOptions.language = languageSelectEl.value;
|
||||
|
@ -339,11 +369,7 @@ async function init() {
|
|||
renderLanguageOptions();
|
||||
renderView();
|
||||
|
||||
[languageDependencies,] = await Promise.all([
|
||||
getDepsData(),
|
||||
brotliInit(),
|
||||
]);
|
||||
|
||||
[languageDependencies] = await Promise.all([getDepsData(), brotliInit()]);
|
||||
|
||||
codeEditEl.addEventListener("input", codeEdited);
|
||||
viewModeSwitcherEl.addEventListener("click", switchMode);
|
||||
|
|
7
utils.js
7
utils.js
|
@ -3,13 +3,12 @@
|
|||
* @returns {Promise<void>}
|
||||
*/
|
||||
export function waitForLoad() {
|
||||
return new Promise(resolve => {
|
||||
return new Promise((resolve) => {
|
||||
// If already loaded, fire immediately
|
||||
if (/complete|interactive|loaded/.test(document.readyState)) {
|
||||
resolve();
|
||||
}
|
||||
else {
|
||||
document.addEventListener('DOMContentLoaded', resolve);
|
||||
} else {
|
||||
document.addEventListener("DOMContentLoaded", resolve);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue