fix: Types

This commit is contained in:
Sidharth Vinod
2022-01-21 00:41:24 +05:30
parent aee4460458
commit 9fb7c4a176
5 changed files with 28 additions and 21 deletions
+2 -1
View File
@@ -1,3 +1,4 @@
{
"editor.formatOnSave": true
"editor.formatOnSave": true,
"cSpell.words": ["pako", "Serde", "serdes"]
}
+2 -2
View File
@@ -18,7 +18,7 @@
}
const svgString = svg.outerHTML
.replaceAll('<br>', '<br/>')
.replaceAll(/<img([^>]*)>/g, (m, g) => `<img ${g} />`);
.replaceAll(/<img([^>]*)>/g, (m, g: string) => `<img ${g} />`);
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({
+4 -2
View File
@@ -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';
+19 -15
View File
@@ -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<string, Serde> = 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 {
type = SerdeType.Base64;
throw new Error(`Unknown serde type: ${tempType}`);
}
} else {
type = 'base64';
serialized = state;
}
const json = serdes.get(type).deserialize(serialized);
const json = serdes[type].deserialize(serialized);
return JSON.parse(json) as State;
};
+1 -1
View File
@@ -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);