Run through prettier

This commit is contained in:
Mikko Ahlroth 2022-11-10 20:13:24 +02:00
parent 21a26daab0
commit 7733947270
3 changed files with 66 additions and 41 deletions

View file

@ -3,8 +3,8 @@ import { PLAINTEXT, LANGUAGES } from "./languages.js";
const UTF8_ENCODER = new TextEncoder(); const UTF8_ENCODER = new TextEncoder();
const UTF8_DECODER = new TextDecoder(); const UTF8_DECODER = new TextDecoder();
class DataOptionsError extends Error { } class DataOptionsError extends Error {}
class DecodeError extends DataOptionsError { } class DecodeError extends DataOptionsError {}
/** /**
* Data options are stored in a binary header before the payload. * Data options are stored in a binary header before the payload.
@ -51,7 +51,7 @@ export class DataOptions {
if (fixedHeaderBytes >= 2) { if (fixedHeaderBytes >= 2) {
const languageIDLowByte = data[1]; const languageIDLowByte = data[1];
const languageIDHighBit = (byte1 & 0b00000001); const languageIDHighBit = byte1 & 0b00000001;
const languageID = (languageIDHighBit << 8) | languageIDLowByte; const languageID = (languageIDHighBit << 8) | languageIDLowByte;
if (LANGUAGES.has(languageID)) { if (LANGUAGES.has(languageID)) {

View file

@ -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 base from "./vendor/base-x.js";
import "./vendor/prism/prism.js"; import "./vendor/prism/prism.js";
import "./vendor/prism/plugins/line-numbers/prism-line-numbers.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 { waitForLoad } from "./utils.js";
import { DataOptions } from "./dataoptions.js"; import { DataOptions } from "./dataoptions.js";
import { ViewMode } from "./viewmode.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 PROJECT_NAME = "Tahnaroskakori";
const COMPRESS_WAIT = 500; const COMPRESS_WAIT = 500;
const ENCODER = new TextEncoder(); const ENCODER = new TextEncoder();
const ALPHABET = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789?/-._~$&+="; const ALPHABET =
"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789?/-._~$&+=";
const BASECODEC = base(ALPHABET); const BASECODEC = base(ALPHABET);
const QUALITY = 11; const QUALITY = 11;
const MAX_URL = 2048; const MAX_URL = 2048;
@ -41,7 +52,9 @@ function setTitle() {
if (dataOptions.title !== "") { if (dataOptions.title !== "") {
document.title = dataOptions.title + TITLE_POSTFIX; document.title = dataOptions.title + TITLE_POSTFIX;
} else if (currentCode !== "") { } 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 { } else {
document.title = PROJECT_NAME; document.title = PROJECT_NAME;
} }
@ -80,9 +93,12 @@ async function highlightLanguage() {
codeViewEl.classList.add(getLanguageClassName(dataOptions.language)); codeViewEl.classList.add(getLanguageClassName(dataOptions.language));
if (dataOptions.language !== PLAINTEXT) { if (dataOptions.language !== PLAINTEXT) {
const deps = getDependenciesForLanguage(languageDependencies, dataOptions.language); const deps = getDependenciesForLanguage(
languageDependencies,
dataOptions.language
);
for (const dep of [...deps, 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) { if (viewMode === ViewMode.VIEW) {
@ -177,7 +193,9 @@ async function syncCompress() {
const compressed = compress(dataWithHeader, { quality: QUALITY }); const compressed = compress(dataWithHeader, { quality: QUALITY });
const encoded = BASECODEC.encode(compressed); 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()) { if (encoded.length <= maxHashLength()) {
history.replaceState(null, "", `#${encoded}`); history.replaceState(null, "", `#${encoded}`);
@ -209,34 +227,42 @@ async function streamDecompress() {
start(controller) { start(controller) {
controller.enqueue(data); controller.enqueue(data);
controller.close(); controller.close();
} },
}); });
const decompressStream = new DecompressStream(); const decompressStream = new DecompressStream();
const decompressionRunner = new TransformStream({ const decompressionRunner = new TransformStream({
start() { }, start() {},
transform(chunk, controller) { transform(chunk, controller) {
controller.enqueue(decompressStream.decompress(chunk, DECOMPRESS_CHUNK_SIZE)); controller.enqueue(
decompressStream.decompress(chunk, DECOMPRESS_CHUNK_SIZE)
);
let slice = chunk; let slice = chunk;
while (decompressStream.result() === BrotliStreamResult.NeedsMoreOutput) { while (
decompressStream.result() === BrotliStreamResult.NeedsMoreOutput
) {
slice = slice.slice(decompressStream.last_input_offset()); 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) { flush(controller) {
if (decompressStream.result() === BrotliStreamResult.NeedsMoreInput) { if (decompressStream.result() === BrotliStreamResult.NeedsMoreInput) {
controller.enqueue(decompressStream.decompress("", DECOMPRESS_CHUNK_SIZE)); controller.enqueue(
decompressStream.decompress("", DECOMPRESS_CHUNK_SIZE)
);
} }
controller.terminate(); controller.terminate();
} },
}); });
const optionsPickerStream = new TransformStream({ const optionsPickerStream = new TransformStream({
firstChunk: false, firstChunk: false,
start() { }, start() {},
transform(chunk, controller) { transform(chunk, controller) {
if (!this.firstChunk) { if (!this.firstChunk) {
const rest = dataOptions.parseFrom(chunk); const rest = dataOptions.parseFrom(chunk);
@ -250,7 +276,7 @@ async function streamDecompress() {
} else { } else {
controller.enqueue(chunk); controller.enqueue(chunk);
} }
} },
}); });
const textDecoderStream = new TextDecoderStream(); const textDecoderStream = new TextDecoderStream();
@ -265,8 +291,10 @@ async function streamDecompress() {
renderCode(); renderCode();
// Delay stream between every chunk to avoid zip bombing // 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 await inputStream
@ -287,7 +315,9 @@ async function streamDecompress() {
*/ */
async function languageSelected() { async function languageSelected() {
codeViewEl.classList.remove(getLanguageClassName(dataOptions.language)); codeViewEl.classList.remove(getLanguageClassName(dataOptions.language));
codeViewContentEl.classList.remove(getLanguageClassName(dataOptions.language)); codeViewContentEl.classList.remove(
getLanguageClassName(dataOptions.language)
);
if (LANGUAGES.has(languageSelectEl.value)) { if (LANGUAGES.has(languageSelectEl.value)) {
dataOptions.language = languageSelectEl.value; dataOptions.language = languageSelectEl.value;
@ -339,11 +369,7 @@ async function init() {
renderLanguageOptions(); renderLanguageOptions();
renderView(); renderView();
[languageDependencies,] = await Promise.all([ [languageDependencies] = await Promise.all([getDepsData(), brotliInit()]);
getDepsData(),
brotliInit(),
]);
codeEditEl.addEventListener("input", codeEdited); codeEditEl.addEventListener("input", codeEdited);
viewModeSwitcherEl.addEventListener("click", switchMode); viewModeSwitcherEl.addEventListener("click", switchMode);

View file

@ -3,13 +3,12 @@
* @returns {Promise<void>} * @returns {Promise<void>}
*/ */
export function waitForLoad() { export function waitForLoad() {
return new Promise(resolve => { return new Promise((resolve) => {
// If already loaded, fire immediately // If already loaded, fire immediately
if (/complete|interactive|loaded/.test(document.readyState)) { if (/complete|interactive|loaded/.test(document.readyState)) {
resolve(); resolve();
} } else {
else { document.addEventListener("DOMContentLoaded", resolve);
document.addEventListener('DOMContentLoaded', resolve);
} }
}); });
} }