mirror of
https://github.com/ankitects/anki.git
synced 2025-09-22 16:02:23 -04:00
Fix using async functions by modifying svelte-preprocess output
This commit is contained in:
parent
94edaa5e97
commit
94c9cadaaa
1 changed files with 21 additions and 3 deletions
|
@ -7,7 +7,7 @@ import * as worker from "@bazel/worker";
|
|||
import { svelte2tsx } from "svelte2tsx";
|
||||
import preprocess from "svelte-preprocess";
|
||||
import { basename } from "path";
|
||||
import * as ts from "typescript";
|
||||
import ts from "typescript";
|
||||
import * as svelte from "svelte/compiler";
|
||||
|
||||
const parsedCommandLine: ts.ParsedCommandLine = {
|
||||
|
@ -133,6 +133,21 @@ function readFile(file: string): Promise<string> {
|
|||
return fs.promises.readFile(file, "utf-8");
|
||||
}
|
||||
|
||||
// https://github.com/sveltejs/svelte-preprocess/issues/373
|
||||
function removeDuplicatedAwaitImport(code: string): string {
|
||||
const regex = /import { __awaiter } from \"tslib\";/g;
|
||||
let first = true;
|
||||
|
||||
return code.replace(regex, (substring: string): string => {
|
||||
if (first) {
|
||||
first = false;
|
||||
return substring;
|
||||
}
|
||||
|
||||
return "";
|
||||
});
|
||||
}
|
||||
|
||||
async function compileSingleSvelte(
|
||||
input: SvelteInput,
|
||||
binDir: string,
|
||||
|
@ -157,12 +172,15 @@ async function compileSingleSvelte(
|
|||
const processed = await svelte.preprocess(input.data, preprocessOptions, {
|
||||
filename: input.path,
|
||||
});
|
||||
const result = svelte.compile(processed.toString!(), {
|
||||
const processedString = removeDuplicatedAwaitImport(processed.toString!());
|
||||
|
||||
const result = svelte.compile(processedString, {
|
||||
format: "esm",
|
||||
css: false,
|
||||
generate: "dom",
|
||||
filename: input.mjsPath,
|
||||
});
|
||||
|
||||
// warnings are an error
|
||||
if (result.warnings.length > 0) {
|
||||
console.log(`warnings during compile: ${result.warnings}`);
|
||||
|
@ -177,7 +195,7 @@ async function compileSingleSvelte(
|
|||
result.js.code;
|
||||
await writeFile(input.mjsPath, outputSource);
|
||||
} catch (err) {
|
||||
console.log(`compile failed: ${err}`);
|
||||
console.log(`Compile failed: ${err}`);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue