From 9fb7c4a17618fb80cadbea53ae37d59cd77ca1c0 Mon Sep 17 00:00:00 2001 From: Sidharth Vinod Date: Fri, 21 Jan 2022 00:41:24 +0530 Subject: [PATCH] fix: Types --- .vscode/settings.json | 3 ++- src/lib/components/actions.svelte | 4 ++-- src/lib/util/env.ts | 6 ++++-- src/lib/util/serde.ts | 34 +++++++++++++++++-------------- src/routes/edit.svelte | 2 +- 5 files changed, 28 insertions(+), 21 deletions(-) diff --git a/.vscode/settings.json b/.vscode/settings.json index 1295ee63..cd3023f6 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -1,3 +1,4 @@ { - "editor.formatOnSave": true + "editor.formatOnSave": true, + "cSpell.words": ["pako", "Serde", "serdes"] } diff --git a/src/lib/components/actions.svelte b/src/lib/components/actions.svelte index 4b527d85..b3c411fa 100644 --- a/src/lib/components/actions.svelte +++ b/src/lib/components/actions.svelte @@ -18,7 +18,7 @@ } const svgString = svg.outerHTML .replaceAll('
', '
') - .replaceAll(/]*)>/g, (m, g) => ``); + .replaceAll(/]*)>/g, (m, g: string) => ``); return toBase64(svgString); }; @@ -79,7 +79,7 @@ canvas.toBlob((blob) => { try { // @ts-ignore: https://github.com/microsoft/TypeScript-DOM-lib-generator/pull/1004/files - navigator.clipboard.write([ + void navigator.clipboard.write([ /* eslint-disable no-undef */ // @ts-ignore: https://github.com/microsoft/TypeScript/issues/43821 new ClipboardItem({ diff --git a/src/lib/util/env.ts b/src/lib/util/env.ts index f5e22f30..128761f2 100644 --- a/src/lib/util/env.ts +++ b/src/lib/util/env.ts @@ -1,2 +1,4 @@ -export const rendererUrl = import.meta.env.MERMAID_RENDERER_URL ?? 'https://mermaid.ink'; -export const krokiRendererUrl = import.meta.env.MERMAID_KROKI_RENDERER_URL ?? 'https://kroki.io'; +export const rendererUrl: string = + (import.meta.env.MERMAID_RENDERER_URL as string) ?? 'https://mermaid.ink'; +export const krokiRendererUrl: string = + (import.meta.env.MERMAID_KROKI_RENDERER_URL as string) ?? 'https://kroki.io'; diff --git a/src/lib/util/serde.ts b/src/lib/util/serde.ts index 7f56ab25..1f7540fc 100644 --- a/src/lib/util/serde.ts +++ b/src/lib/util/serde.ts @@ -7,11 +7,6 @@ interface Serde { deserialize: (state: string) => string; } -enum SerdeType { - Base64 = 'base64', - Pako = 'pako' -} - const base64Serde: Serde = { serialize: (state: string): string => { return toBase64(state, true); @@ -32,26 +27,35 @@ export const pakoSerde: Serde = { return inflate(data, { to: 'string' }); } }; -const serdes: Map = new Map([ - [SerdeType.Base64, base64Serde], - [SerdeType.Pako, pakoSerde] -]); + +const serdes: { [key: string]: Serde } = { + base64: base64Serde, + pako: pakoSerde +}; + +type SerdeType = keyof typeof serdes; export const serializeState = (state: State): string => { const json = JSON.stringify(state); - const defaultSerde = SerdeType.Pako; - const serialized = serdes.get(defaultSerde).serialize(json); + const defaultSerde: SerdeType = 'pako'; + const serialized = serdes[defaultSerde].serialize(json); return `${defaultSerde}:${serialized}`; }; export const deserializeState = (state: string): State => { - let type: string, serialized: string; + let type: SerdeType, serialized: string; if (state.includes(':')) { - [type, serialized] = state.split(':'); + let tempType: string; + [tempType, serialized] = state.split(':'); + if (tempType in serdes) { + type = tempType; + } else { + throw new Error(`Unknown serde type: ${tempType}`); + } } else { - type = SerdeType.Base64; + type = 'base64'; serialized = state; } - const json = serdes.get(type).deserialize(serialized); + const json = serdes[type].deserialize(serialized); return JSON.parse(json) as State; }; diff --git a/src/routes/edit.svelte b/src/routes/edit.svelte index aa21f82a..afdd0f9a 100644 --- a/src/routes/edit.svelte +++ b/src/routes/edit.svelte @@ -82,7 +82,7 @@ startLineNumber: e.hash.loc.first_line, startColumn: e.hash.loc.first_column, endLineNumber: e.hash.loc.last_line, - endColumn: e.hash.loc.last_column + 1, + endColumn: (e.hash.loc.last_column as number) + 1, message: e.str }; errorMarkers.push(marker);