create-astro: always create tsconfig.json (#4810)

* `create-astro`: always create `tsconfig.json`

Currently, we only make sure `tsconfig.json` exists when `strict` or `strictest` is selected. Both `default` & `optout` are intended to correspond to `base` -- and will do so for all [23 official templates](https://github.com/withastro/astro/tree/main/examples), but not necessarily for third-party templates.

The [example command for installing a third-party template](https://github.com/withastro/astro/blob/a800bf7/packages/create-astro/README.md?plain=1#L31-L35) is (rather conveniently for the sake of this PR!) an example of a template without a `tsconfig.json` file, and installing it with the `default` ("Relaxed") Typescript option results in no `tsconfig.json` file, rather than a `tsconfig.json` file containing `{ "extends": "astro/tsconfigs/base" }` as would be expected.

This PR addresses this scenario. 

It also explicitly sets the `tsconfig.json` file to `{ "extends": "astro/tsconfigs/base" }` when `default` (which I renamed to `base`, still presented to the user as "Relaxed") or `optout` is selected (`optout` has always printed a warning about the importance of `tsconfig.json` & `src/env.d.ts` but otherwise behaved identically to `default`). This is necessary in two scenarios:

1. When the `tsconfig.json` file was created by this script.
2. When it either didn't already include `"extends"`, or it extended a different config by default. For example, some third-party templates might default to `strict`, in which case I'm guessing we'd want to respect the user's choice and change that to `base`.

* update `del` 6.1.1 --> 7.0.0

* test: prevent excess writes
(without this it triggers many times)

* test: create-astro typescript prompt

* changeset

* fix: recursive `mkdirSync`

* test: longer timeout for `windows-latest` OS
(see if this fixes failing tests)

* better glob path creation, don't hardcode `/`

* test: longer timeout for windows-latest OS
(since I'm about to trigger another CI run by pushing a commit, might as well try this too)

* create-astro test: show last CLI output on timeout

* drop variable timeout
Typescript tests are slower than directory tests, but they are all usually less than 5000 ms. Less complexity, easier to maintain.

* DRY new error output

* Update lockfile

* Sync lockfile with main

* Update lockfile

Co-authored-by: Princesseuh <princssdev@gmail.com>
This commit is contained in:
Michael Rienstra 2022-09-22 11:37:01 -07:00 committed by GitHub
parent e5f71142eb
commit 7481ffda02
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
11 changed files with 327 additions and 162 deletions

View file

@ -0,0 +1,8 @@
---
'create-astro': minor
---
Alway write chosen config to `tsconfig.json`.
- Before: Only when `strict` & `strictest` was selected
- After: Also when `base` is selected (via "Relaxed" or "I prefer not to use TypeScript")

View file

@ -76,7 +76,7 @@
"@octokit/action": "^3.18.1",
"@typescript-eslint/eslint-plugin": "^5.27.1",
"@typescript-eslint/parser": "^5.27.1",
"del": "^6.1.1",
"del": "^7.0.0",
"esbuild": "^0.14.43",
"eslint": "^8.17.0",
"eslint-config-prettier": "^8.5.0",

View file

@ -5,7 +5,7 @@ import { performance } from 'perf_hooks';
import { build as astroBuild } from '#astro/build';
import { loadConfig } from '#astro/config';
import { Benchmark } from './benchmark.js';
import del from 'del';
import { deleteAsync } from 'del';
import { Writable } from 'stream';
import { format as utilFormat } from 'util';
@ -47,7 +47,7 @@ const benchmarks = [
async setup() {
process.chdir(new URL('../../../../', import.meta.url).pathname);
const spcache = new URL('../../node_modules/.cache/', import.meta.url);
await Promise.all([del(spcache.pathname, { force: true }), setupBuild()]);
await Promise.all([deleteAsync(spcache.pathname, { force: true }), setupBuild()]);
},
run: runBuild,
}),

View file

@ -3,7 +3,7 @@
import { performance } from 'perf_hooks';
import { Benchmark } from './benchmark.js';
import { runDevServer } from '../helpers.js';
import del from 'del';
import { deleteAsync } from 'del';
const docsExampleRoot = new URL('../../../../docs/', import.meta.url);
@ -31,7 +31,7 @@ const benchmarks = [
file: new URL('./dev-server-uncached.json', import.meta.url),
async setup() {
const spcache = new URL('../../node_modules/.cache/', import.meta.url);
await del(spcache.pathname);
await deleteAsync(spcache.pathname);
},
run({ root }) {
return runToStarted(root);

View file

@ -36,6 +36,7 @@
"kleur": "^4.1.4",
"ora": "^6.1.0",
"prompts": "^2.4.2",
"strip-ansi": "^7.0.1",
"which-pm-runs": "^1.1.0",
"yargs-parser": "^21.0.1"
},

View file

@ -340,7 +340,7 @@ export async function main() {
choices: [
{
title: 'Relaxed',
value: 'default',
value: 'base',
},
{
title: 'Strict (recommended)',
@ -379,42 +379,40 @@ export async function main() {
console.log(` You can safely ignore these files, but don't delete them!`);
console.log(dim(' (ex: tsconfig.json, src/env.d.ts)'));
console.log(``);
tsResponse.typescript = 'default';
tsResponse.typescript = 'base';
await wait(300);
}
if (args.dryRun) {
ora().info(dim(`--dry-run enabled, skipping.`));
} else if (tsResponse.typescript) {
if (tsResponse.typescript !== 'default') {
const templateTSConfigPath = path.join(cwd, 'tsconfig.json');
fs.readFile(templateTSConfigPath, (err, data) => {
if (err && err.code === 'ENOENT') {
// If the template doesn't have a tsconfig.json, let's add one instead
fs.writeFileSync(
templateTSConfigPath,
stringify({ extends: `astro/tsconfigs/${tsResponse.typescript}` }, null, 2)
);
const templateTSConfigPath = path.join(cwd, 'tsconfig.json');
fs.readFile(templateTSConfigPath, (err, data) => {
if (err && err.code === 'ENOENT') {
// If the template doesn't have a tsconfig.json, let's add one instead
fs.writeFileSync(
templateTSConfigPath,
stringify({ extends: `astro/tsconfigs/${tsResponse.typescript}` }, null, 2)
);
return;
}
return;
}
const templateTSConfig = parse(data.toString());
const templateTSConfig = parse(data.toString());
if (templateTSConfig && typeof templateTSConfig === 'object') {
const result = assign(templateTSConfig, {
extends: `astro/tsconfigs/${tsResponse.typescript}`,
});
if (templateTSConfig && typeof templateTSConfig === 'object') {
const result = assign(templateTSConfig, {
extends: `astro/tsconfigs/${tsResponse.typescript}`,
});
fs.writeFileSync(templateTSConfigPath, stringify(result, null, 2));
} else {
console.log(
yellow(
"There was an error applying the requested TypeScript settings. This could be because the template's tsconfig.json is malformed"
)
);
}
});
}
fs.writeFileSync(templateTSConfigPath, stringify(result, null, 2));
} else {
console.log(
yellow(
"There was an error applying the requested TypeScript settings. This could be because the template's tsconfig.json is malformed"
)
);
}
});
ora().succeed('TypeScript settings applied!');
}

View file

@ -1,6 +1,8 @@
import path from 'path';
import { promises, existsSync } from 'fs';
import { PROMPT_MESSAGES, testDir, setup, promiseWithTimeout, timeout } from './utils.js';
import {
PROMPT_MESSAGES, testDir, setup, promiseWithTimeout, timeout
} from './utils.js';
const inputs = {
nonEmptyDir: './fixtures/select-directory/nonempty-dir',
@ -12,9 +14,10 @@ const inputs = {
describe('[create-astro] select directory', function () {
this.timeout(timeout);
it('should prompt for directory when none is provided', function () {
return promiseWithTimeout((resolve) => {
return promiseWithTimeout((resolve, onStdout) => {
const { stdout } = setup();
stdout.on('data', (chunk) => {
onStdout(chunk);
if (chunk.includes(PROMPT_MESSAGES.directory)) {
resolve();
}
@ -22,9 +25,10 @@ describe('[create-astro] select directory', function () {
});
});
it('should NOT proceed on a non-empty directory', function () {
return promiseWithTimeout((resolve) => {
return promiseWithTimeout((resolve, onStdout) => {
const { stdout } = setup([inputs.nonEmptyDir]);
stdout.on('data', (chunk) => {
onStdout(chunk);
if (chunk.includes(PROMPT_MESSAGES.directory)) {
resolve();
}
@ -46,9 +50,10 @@ describe('[create-astro] select directory', function () {
if (!existsSync(resolvedEmptyDirPath)) {
await promises.mkdir(resolvedEmptyDirPath);
}
return promiseWithTimeout((resolve) => {
return promiseWithTimeout((resolve, onStdout) => {
const { stdout } = setup([inputs.emptyDir]);
stdout.on('data', (chunk) => {
onStdout(chunk);
if (chunk.includes(PROMPT_MESSAGES.template)) {
resolve();
}
@ -56,9 +61,10 @@ describe('[create-astro] select directory', function () {
});
});
it('should proceed when directory does not exist', function () {
return promiseWithTimeout((resolve) => {
return promiseWithTimeout((resolve, onStdout) => {
const { stdout } = setup([inputs.nonexistentDir]);
stdout.on('data', (chunk) => {
onStdout(chunk);
if (chunk.includes(PROMPT_MESSAGES.template)) {
resolve();
}
@ -66,14 +72,17 @@ describe('[create-astro] select directory', function () {
});
});
it('should error on bad directory selection in prompt', function () {
return promiseWithTimeout((resolve) => {
return promiseWithTimeout((resolve, onStdout) => {
let wrote = false;
const { stdout, stdin } = setup();
stdout.on('data', (chunk) => {
onStdout(chunk);
if (chunk.includes('is not empty!')) {
resolve();
}
if (chunk.includes(PROMPT_MESSAGES.directory)) {
if (!wrote && chunk.includes(PROMPT_MESSAGES.directory)) {
stdin.write(`${inputs.nonEmptyDir}\x0D`);
wrote = true;
}
});
});

View file

@ -0,0 +1,117 @@
import { expect } from 'chai';
import { deleteSync } from 'del';
import { existsSync, mkdirSync, readdirSync, readFileSync } from 'fs';
import path from 'path';
import {
PROMPT_MESSAGES, testDir, setup, promiseWithTimeout, timeout
} from './utils.js';
const inputs = {
emptyDir: './fixtures/select-typescript/empty-dir',
};
function isEmpty(dirPath) {
return !existsSync(dirPath) || readdirSync(dirPath).length === 0;
}
function ensureEmptyDir() {
const dirPath = path.resolve(testDir, inputs.emptyDir);
if (!existsSync(dirPath)) {
mkdirSync(dirPath, { recursive: true });
} else if (!isEmpty(dirPath)) {
const globPath = path.resolve(dirPath, '*');
deleteSync(globPath, { dot: true });
}
}
function getTsConfig(installDir) {
const filePath = path.resolve(testDir, installDir, 'tsconfig.json');
return JSON.parse(readFileSync(filePath, 'utf-8'));
}
describe('[create-astro] select typescript', function () {
this.timeout(timeout);
beforeEach(ensureEmptyDir);
afterEach(ensureEmptyDir);
it('should prompt for typescript when none is provided', async function () {
return promiseWithTimeout((resolve, onStdout) => {
const { stdout } = setup([
inputs.emptyDir,
'--template', 'minimal',
'--install', '0',
'--git', '0'
]);
stdout.on('data', (chunk) => {
onStdout(chunk);
if (chunk.includes(PROMPT_MESSAGES.typescript)) {
resolve();
}
});
}, () => lastStdout);
});
it('should not prompt for typescript when provided', async function () {
return promiseWithTimeout((resolve, onStdout) => {
const { stdout } = setup([
inputs.emptyDir,
'--template', 'minimal',
'--install', '0',
'--git', '0',
'--typescript', 'base'
]);
stdout.on('data', (chunk) => {
onStdout(chunk);
if (chunk.includes(PROMPT_MESSAGES.typescriptSucceed)) {
resolve();
}
});
}, () => lastStdout);
});
it('should use "strict" config when specified', async function () {
return promiseWithTimeout((resolve, onStdout) => {
let wrote = false;
const { stdout, stdin } = setup([
inputs.emptyDir,
'--template', 'minimal',
'--install', '0',
'--git', '0'
]);
stdout.on('data', (chunk) => {
onStdout(chunk);
if (!wrote && chunk.includes(PROMPT_MESSAGES.typescript)) {
stdin.write('\x1B\x5B\x42\x0D');
wrote = true;
}
if (chunk.includes(PROMPT_MESSAGES.typescriptSucceed)) {
const tsConfigJson = getTsConfig(inputs.emptyDir);
expect(tsConfigJson).to.deep.equal({'extends': 'astro/tsconfigs/strict'});
resolve();
}
});
}, () => lastStdout);
});
it('should create tsconfig.json when missing', async function () {
return promiseWithTimeout((resolve, onStdout) => {
const { stdout } = setup([
inputs.emptyDir,
'--template', 'cassidoo/shopify-react-astro',
'--install', '0',
'--git', '0',
'--typescript', 'base'
]);
stdout.on('data', (chunk) => {
onStdout(chunk);
if (chunk.includes(PROMPT_MESSAGES.typescriptSucceed)) {
const tsConfigJson = getTsConfig(inputs.emptyDir);
expect(tsConfigJson).to.deep.equal({'extends': 'astro/tsconfigs/base'});
resolve();
}
});
}, () => lastStdout);
});
});

View file

@ -1,31 +1,45 @@
import { execa } from 'execa';
import { fileURLToPath } from 'url';
import { dirname } from 'path';
import stripAnsi from 'strip-ansi';
import { fileURLToPath } from 'url';
const __filename = fileURLToPath(import.meta.url);
export const testDir = dirname(__filename);
export const timeout = 5000;
const createAstroError = new Error(
'Timed out waiting for create-astro to respond with expected output.'
);
const timeoutError = function (details) {
let errorMsg =
'Timed out waiting for create-astro to respond with expected output.';
if (details) {
errorMsg += '\nLast output: "' + details + '"';
}
return new Error(errorMsg);
}
export function promiseWithTimeout(testFn) {
return new Promise((resolve, reject) => {
let lastStdout;
function onStdout (chunk) {
lastStdout = stripAnsi(chunk.toString()).trim() || lastStdout;
}
const timeoutEvent = setTimeout(() => {
reject(createAstroError);
reject(timeoutError(lastStdout));
}, timeout);
function resolver() {
clearTimeout(timeoutEvent);
resolve();
}
testFn(resolver);
testFn(resolver, onStdout);
});
}
export const PROMPT_MESSAGES = {
directory: 'Where would you like to create your new project?',
template: 'Which template would you like to use?',
typescript: 'How would you like to setup TypeScript?',
typescriptSucceed: 'Next steps'
};
export function setup(args = []) {

View file

@ -17,7 +17,7 @@ importers:
'@octokit/action': ^3.18.1
'@typescript-eslint/eslint-plugin': ^5.27.1
'@typescript-eslint/parser': ^5.27.1
del: ^6.1.1
del: ^7.0.0
esbuild: ^0.14.43
eslint: ^8.17.0
eslint-config-prettier: ^8.5.0
@ -39,7 +39,7 @@ importers:
'@octokit/action': 3.18.1
'@typescript-eslint/eslint-plugin': 5.38.0_gl4g3tss5phduo5kw3bd5pm54i
'@typescript-eslint/parser': 5.38.0_4brgkhw6cq4me3drk3kxrpb2mm
del: 6.1.1
del: 7.0.0
esbuild: 0.14.54
eslint: 8.23.1
eslint-config-prettier: 8.5.0_eslint@8.23.1
@ -163,7 +163,7 @@ importers:
preact: 10.11.0
react: 18.2.0
react-dom: 18.2.0_react@18.2.0
solid-js: 1.5.6
solid-js: 1.5.5
svelte: 3.50.1
vue: 3.2.39
@ -201,7 +201,7 @@ importers:
dependencies:
'@astrojs/solid-js': link:../../packages/integrations/solid
astro: link:../../packages/astro
solid-js: 1.5.6
solid-js: 1.5.5
examples/framework-svelte:
specifiers:
@ -486,7 +486,7 @@ importers:
typescript: 4.8.3
unist-util-visit: 4.1.1
vfile: 5.3.5
vite: 3.1.3_sass@1.55.0
vite: 3.1.3_sass@1.54.9
yargs-parser: 21.1.1
zod: 3.19.1
devDependencies:
@ -513,7 +513,7 @@ importers:
chai: 4.3.6
cheerio: 1.0.0-rc.12
mocha: 9.2.2
sass: 1.55.0
sass: 1.54.9
srcset-parse: 1.1.0
packages/astro-prism:
@ -574,7 +574,7 @@ importers:
preact: 10.11.0
react: 18.2.0
react-dom: 18.2.0_react@18.2.0
solid-js: 1.5.6
solid-js: 1.5.5
svelte: 3.50.1
vue: 3.2.39
devDependencies:
@ -613,7 +613,7 @@ importers:
sass: ^1.52.2
dependencies:
astro: link:../../..
sass: 1.55.0
sass: 1.54.9
packages/astro/e2e/fixtures/errors:
specifiers:
@ -684,7 +684,7 @@ importers:
preact: 10.11.0
react: 18.2.0
react-dom: 18.2.0_react@18.2.0
solid-js: 1.5.6
solid-js: 1.5.5
svelte: 3.50.1
vue: 3.2.39
devDependencies:
@ -727,7 +727,7 @@ importers:
preact: 10.11.0
react: 18.2.0
react-dom: 18.2.0_react@18.2.0
solid-js: 1.5.6
solid-js: 1.5.5
svelte: 3.50.1
vue: 3.2.39
devDependencies:
@ -756,7 +756,7 @@ importers:
preact: 10.11.0
react: 18.2.0
react-dom: 18.2.0_react@18.2.0
solid-js: 1.5.6
solid-js: 1.5.5
svelte: 3.50.1
vue: 3.2.39
devDependencies:
@ -785,7 +785,7 @@ importers:
preact: 10.11.0
react: 18.2.0
react-dom: 18.2.0_react@18.2.0
solid-js: 1.5.6
solid-js: 1.5.5
svelte: 3.50.1
vue: 3.2.39
devDependencies:
@ -814,7 +814,7 @@ importers:
preact: 10.11.0
react: 18.2.0
react-dom: 18.2.0_react@18.2.0
solid-js: 1.5.6
solid-js: 1.5.5
svelte: 3.50.1
vue: 3.2.39
devDependencies:
@ -843,7 +843,7 @@ importers:
preact: 10.11.0
react: 18.2.0
react-dom: 18.2.0_react@18.2.0
solid-js: 1.5.6
solid-js: 1.5.5
svelte: 3.50.1
vue: 3.2.39
devDependencies:
@ -872,7 +872,7 @@ importers:
preact: 10.11.0
react: 18.2.0
react-dom: 18.2.0_react@18.2.0
solid-js: 1.5.6
solid-js: 1.5.5
svelte: 3.50.1
vue: 3.2.39
devDependencies:
@ -949,7 +949,7 @@ importers:
'@astrojs/solid-js': link:../../../../integrations/solid
astro: link:../../..
devDependencies:
solid-js: 1.5.6
solid-js: 1.5.5
packages/astro/e2e/fixtures/solid-recurse:
specifiers:
@ -960,7 +960,7 @@ importers:
'@astrojs/solid-js': link:../../../../integrations/solid
astro: link:../../..
devDependencies:
solid-js: 1.5.6
solid-js: 1.5.5
packages/astro/e2e/fixtures/svelte-component:
specifiers:
@ -1627,7 +1627,7 @@ importers:
preact: 10.11.0
react: 18.2.0
react-dom: 18.2.0_react@18.2.0
solid-js: 1.5.6
solid-js: 1.5.5
svelte: 3.50.1
vue: 3.2.39
devDependencies:
@ -2181,6 +2181,7 @@ importers:
mocha: ^9.2.2
ora: ^6.1.0
prompts: ^2.4.2
strip-ansi: ^7.0.1
uvu: ^0.5.3
which-pm-runs: ^1.1.0
yargs-parser: ^21.0.1
@ -2192,6 +2193,7 @@ importers:
kleur: 4.1.5
ora: 6.1.2
prompts: 2.4.2
strip-ansi: 7.0.1
which-pm-runs: 1.1.0
yargs-parser: 21.1.1
devDependencies:
@ -2225,7 +2227,7 @@ importers:
devDependencies:
astro: link:../../astro
astro-scripts: link:../../../scripts
wrangler: 2.1.6
wrangler: 2.1.5
packages/integrations/cloudflare/test/fixtures/basics:
specifiers:
@ -2386,7 +2388,7 @@ importers:
astro: link:../../astro
astro-scripts: link:../../../scripts
cheerio: 1.0.0-rc.12
sass: 1.55.0
sass: 1.54.9
packages/integrations/mdx:
specifiers:
@ -2440,7 +2442,7 @@ importers:
astro: link:../../astro
astro-scripts: link:../../../scripts
chai: 4.3.6
linkedom: 0.14.16
linkedom: 0.14.15
mdast-util-to-string: 3.1.0
mocha: 9.2.2
reading-time: 1.5.0
@ -2669,11 +2671,11 @@ importers:
babel-preset-solid: ^1.4.2
solid-js: ^1.5.1
dependencies:
babel-preset-solid: 1.5.6
babel-preset-solid: 1.5.5
devDependencies:
astro: link:../../astro
astro-scripts: link:../../../scripts
solid-js: 1.5.6
solid-js: 1.5.5
packages/integrations/svelte:
specifiers:
@ -2686,7 +2688,7 @@ importers:
svelte2tsx: ^0.5.11
vite: ^3.0.0
dependencies:
'@sveltejs/vite-plugin-svelte': 1.0.8_svelte@3.50.1+vite@3.1.3
'@sveltejs/vite-plugin-svelte': 1.0.7_svelte@3.50.1+vite@3.1.3
postcss-load-config: 3.1.4
svelte-preprocess: 4.10.7_dnlyed3grtnuceggogyodrmgvm
svelte2tsx: 0.5.18_svelte@3.50.1
@ -2987,10 +2989,10 @@ importers:
dependencies:
node-fetch: 3.2.10
devDependencies:
'@rollup/plugin-alias': 3.1.9_rollup@2.79.1
'@rollup/plugin-inject': 4.0.4_rollup@2.79.1
'@rollup/plugin-node-resolve': 13.3.0_rollup@2.79.1
'@rollup/plugin-typescript': 8.5.0_xwhsf76p4ysrvxbjgnmc6wmmq4
'@rollup/plugin-alias': 3.1.9_rollup@2.79.0
'@rollup/plugin-inject': 4.0.4_rollup@2.79.0
'@rollup/plugin-node-resolve': 13.3.0_rollup@2.79.0
'@rollup/plugin-typescript': 8.5.0_ppxule2mhlgb6ds3e4gxjflaqy
'@types/chai': 4.3.3
'@types/mocha': 9.1.1
'@types/node': 14.18.29
@ -3002,8 +3004,8 @@ importers:
formdata-polyfill: 4.0.10
magic-string: 0.25.9
mocha: 9.2.2
rollup: 2.79.1
rollup-plugin-terser: 7.0.2_rollup@2.79.1
rollup: 2.79.0
rollup-plugin-terser: 7.0.2_rollup@2.79.0
tslib: 2.4.0
typescript: 4.7.4
urlpattern-polyfill: 1.0.0-rc5
@ -5265,8 +5267,8 @@ packages:
tslib: 2.4.0
dev: false
/@humanwhocodes/config-array/0.10.5:
resolution: {integrity: sha512-XVVDtp+dVvRxMoxSiSfasYaG02VEe1qH5cKgMQJWhol6HwzbcqoCMJi8dAGoYAO57jhUyhI6cWuRiTcRaDaYug==}
/@humanwhocodes/config-array/0.10.4:
resolution: {integrity: sha512-mXAIHxZT3Vcpg83opl1wGlVZ9xydbfZO3r5YfRSH6Gpp2J/PfdBP0wbDa2sO6/qRbcalpoevVyW6A/fI6LfeMw==}
engines: {node: '>=10.10.0'}
dependencies:
'@humanwhocodes/object-schema': 1.2.1
@ -8683,7 +8685,7 @@ packages:
react: 18.2.0
dev: false
/@rollup/plugin-alias/3.1.9_rollup@2.79.1:
/@rollup/plugin-alias/3.1.9_rollup@2.79.0:
resolution: {integrity: sha512-QI5fsEvm9bDzt32k39wpOwZhVzRcL5ydcffUHMyLVaVaLeC70I8TJZ17F1z1eMoLu4E/UOcH9BWVkKpIKdrfiw==}
engines: {node: '>=8.0.0'}
peerDependencies:
@ -8692,11 +8694,11 @@ packages:
rollup:
optional: true
dependencies:
rollup: 2.79.1
rollup: 2.79.0
slash: 3.0.0
dev: true
/@rollup/plugin-babel/5.3.1_r56fldxoyazzliugjcx2ns4pma:
/@rollup/plugin-babel/5.3.1_qjhfxcwn2glzcb5646tzyg45bq:
resolution: {integrity: sha512-WFfdLWU/xVWKeRQnKmIAQULUI7Il0gZnBIH/ZFO069wYIfPu+8zrfp/KMW0atmELoRDq8FbiP3VCss9MhCut7Q==}
engines: {node: '>= 10.0.0'}
peerDependencies:
@ -8713,11 +8715,11 @@ packages:
dependencies:
'@babel/core': 7.19.1
'@babel/helper-module-imports': 7.18.6
'@rollup/pluginutils': 3.1.0_rollup@2.79.1
rollup: 2.79.1
'@rollup/pluginutils': 3.1.0_rollup@2.79.0
rollup: 2.79.0
dev: false
/@rollup/plugin-inject/4.0.4_rollup@2.79.1:
/@rollup/plugin-inject/4.0.4_rollup@2.79.0:
resolution: {integrity: sha512-4pbcU4J/nS+zuHk+c+OL3WtmEQhqxlZ9uqfjQMQDOHOPld7PsCd8k5LWs8h5wjwJN7MgnAn768F2sDxEP4eNFQ==}
peerDependencies:
rollup: ^1.20.0 || ^2.0.0
@ -8725,13 +8727,13 @@ packages:
rollup:
optional: true
dependencies:
'@rollup/pluginutils': 3.1.0_rollup@2.79.1
'@rollup/pluginutils': 3.1.0_rollup@2.79.0
estree-walker: 2.0.2
magic-string: 0.25.9
rollup: 2.79.1
rollup: 2.79.0
dev: true
/@rollup/plugin-node-resolve/11.2.1_rollup@2.79.1:
/@rollup/plugin-node-resolve/11.2.1_rollup@2.79.0:
resolution: {integrity: sha512-yc2n43jcqVyGE2sqV5/YCmocy9ArjVAP/BeXyTtADTBBX6V0e5UMqwO8CdQ0kzjb6zu5P1qMzsScCMRvE9OlVg==}
engines: {node: '>= 10.0.0'}
peerDependencies:
@ -8740,16 +8742,16 @@ packages:
rollup:
optional: true
dependencies:
'@rollup/pluginutils': 3.1.0_rollup@2.79.1
'@rollup/pluginutils': 3.1.0_rollup@2.79.0
'@types/resolve': 1.17.1
builtin-modules: 3.3.0
deepmerge: 4.2.2
is-module: 1.0.0
resolve: 1.22.1
rollup: 2.79.1
rollup: 2.79.0
dev: false
/@rollup/plugin-node-resolve/13.3.0_rollup@2.79.1:
/@rollup/plugin-node-resolve/13.3.0_rollup@2.79.0:
resolution: {integrity: sha512-Lus8rbUo1eEcnS4yTFKLZrVumLPY+YayBdWXgFSHYhTT2iJbMhoaaBL3xl5NCdeRytErGr8tZ0L71BMRmnlwSw==}
engines: {node: '>= 10.0.0'}
peerDependencies:
@ -8758,16 +8760,16 @@ packages:
rollup:
optional: true
dependencies:
'@rollup/pluginutils': 3.1.0_rollup@2.79.1
'@rollup/pluginutils': 3.1.0_rollup@2.79.0
'@types/resolve': 1.17.1
deepmerge: 4.2.2
is-builtin-module: 3.2.0
is-module: 1.0.0
resolve: 1.22.1
rollup: 2.79.1
rollup: 2.79.0
dev: true
/@rollup/plugin-replace/2.4.2_rollup@2.79.1:
/@rollup/plugin-replace/2.4.2_rollup@2.79.0:
resolution: {integrity: sha512-IGcu+cydlUMZ5En85jxHH4qj2hta/11BHq95iHEyb2sbgiN0eCdzvUcHw5gt9pBL5lTi4JDYJ1acCoMGpTvEZg==}
peerDependencies:
rollup: ^1.20.0 || ^2.0.0
@ -8775,12 +8777,12 @@ packages:
rollup:
optional: true
dependencies:
'@rollup/pluginutils': 3.1.0_rollup@2.79.1
'@rollup/pluginutils': 3.1.0_rollup@2.79.0
magic-string: 0.25.9
rollup: 2.79.1
rollup: 2.79.0
dev: false
/@rollup/plugin-typescript/8.5.0_xwhsf76p4ysrvxbjgnmc6wmmq4:
/@rollup/plugin-typescript/8.5.0_ppxule2mhlgb6ds3e4gxjflaqy:
resolution: {integrity: sha512-wMv1/scv0m/rXx21wD2IsBbJFba8wGF3ErJIr6IKRfRj49S85Lszbxb4DCo8iILpluTjk2GAAu9CoZt4G3ppgQ==}
engines: {node: '>=8.0.0'}
peerDependencies:
@ -8793,14 +8795,14 @@ packages:
tslib:
optional: true
dependencies:
'@rollup/pluginutils': 3.1.0_rollup@2.79.1
'@rollup/pluginutils': 3.1.0_rollup@2.79.0
resolve: 1.22.1
rollup: 2.79.1
rollup: 2.79.0
tslib: 2.4.0
typescript: 4.7.4
dev: true
/@rollup/pluginutils/3.1.0_rollup@2.79.1:
/@rollup/pluginutils/3.1.0_rollup@2.79.0:
resolution: {integrity: sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==}
engines: {node: '>= 8.0.0'}
peerDependencies:
@ -8812,7 +8814,7 @@ packages:
'@types/estree': 0.0.39
estree-walker: 1.0.1
picomatch: 2.3.1
rollup: 2.79.1
rollup: 2.79.0
/@rollup/pluginutils/4.2.1:
resolution: {integrity: sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ==}
@ -8867,8 +8869,8 @@ packages:
string.prototype.matchall: 4.0.7
dev: false
/@sveltejs/vite-plugin-svelte/1.0.8_svelte@3.50.1+vite@3.1.3:
resolution: {integrity: sha512-1xkVTB4pm6zuign858FzVYE9Fdw9MQBOlxrdd85STV0NvTDmcofcRpcrK+zcIyT8SZ2dseHLu8hvDwzssF6RfA==}
/@sveltejs/vite-plugin-svelte/1.0.7_svelte@3.50.1+vite@3.1.3:
resolution: {integrity: sha512-bf3/xrpKP5Sj9I6hT0slYwY4rVElocWZ79zLPc/bPFCOjjuty0jW4hmC4Uehb7yifjf3I6QnT3eIs2EKqw+Kig==}
engines: {node: ^14.18.0 || >= 16}
peerDependencies:
diff-match-patch: ^1.0.5
@ -8884,7 +8886,7 @@ packages:
debug: 4.3.4
deepmerge: 4.2.2
kleur: 4.1.5
magic-string: 0.26.4
magic-string: 0.26.3
svelte: 3.50.1
svelte-hmr: 0.15.0_svelte@3.50.1
vite: 3.1.3
@ -9700,12 +9702,12 @@ packages:
transitivePeerDependencies:
- supports-color
/aggregate-error/3.1.0:
resolution: {integrity: sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==}
engines: {node: '>=8'}
/aggregate-error/4.0.1:
resolution: {integrity: sha512-0poP0T7el6Vq3rstR8Mn4V/IQrpBLO6POkUSrN7RhyY+GF/InCFShQzsQ39T25gkHhLgSLByyAz+Kjb+c2L98w==}
engines: {node: '>=12'}
dependencies:
clean-stack: 2.2.0
indent-string: 4.0.0
clean-stack: 4.2.0
indent-string: 5.0.0
dev: true
/ajv/6.12.6:
@ -10006,8 +10008,8 @@ packages:
- supports-color
dev: false
/babel-preset-solid/1.5.6:
resolution: {integrity: sha512-DETqhEygtRq627y5jII5szev495CvbPZJDTaosCbRWdbBh7nMBPI9JuVBUdWs56M2D4mqYa6Z2vH4mdIS6srwA==}
/babel-preset-solid/1.5.5:
resolution: {integrity: sha512-Ang5Dv/G975tHxcvimkit8FeTRU89FWUNY/9kjVBpt+5YVgH5OLjao+qOMoTTS+9JH2jcL5AfsoRa9xQZiY1Cw==}
peerDependencies:
'@babel/core': ^7.0.0
peerDependenciesMeta:
@ -10122,7 +10124,7 @@ packages:
hasBin: true
dependencies:
caniuse-lite: 1.0.30001409
electron-to-chromium: 1.4.257
electron-to-chromium: 1.4.256
node-releases: 2.0.6
update-browserslist-db: 1.0.9_browserslist@4.21.4
@ -10333,9 +10335,11 @@ packages:
/ci-info/3.4.0:
resolution: {integrity: sha512-t5QdPT5jq3o262DOQ8zA6E1tlH2upmUc4Hlvrbx1pGYJuiiHl7O7rvVNI+l8HTVhd/q3Qc9vqimkNk5yiXsAug==}
/clean-stack/2.2.0:
resolution: {integrity: sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==}
engines: {node: '>=6'}
/clean-stack/4.2.0:
resolution: {integrity: sha512-LYv6XPxoyODi36Dp976riBtSY27VmFo+MKqEU9QCCWyTrdEPDog+RWA7xQWHi6Vbp61j5c4cdzzX1NidnwtUWg==}
engines: {node: '>=12'}
dependencies:
escape-string-regexp: 5.0.0
dev: true
/cli-boxes/3.0.0:
@ -10775,18 +10779,18 @@ packages:
hasBin: true
dev: false
/del/6.1.1:
resolution: {integrity: sha512-ua8BhapfP0JUJKC/zV9yHHDW/rDoDxP4Zhn3AkA6/xT6gY7jYXJiaeyBZznYVujhZZET+UgcbZiQ7sN3WqcImg==}
engines: {node: '>=10'}
/del/7.0.0:
resolution: {integrity: sha512-tQbV/4u5WVB8HMJr08pgw0b6nG4RGt/tj+7Numvq+zqcvUFeMaIWWOUFltiU+6go8BSO2/ogsB4EasDaj0y68Q==}
engines: {node: '>=14.16'}
dependencies:
globby: 11.1.0
globby: 13.1.2
graceful-fs: 4.2.10
is-glob: 4.0.3
is-path-cwd: 2.2.0
is-path-inside: 3.0.3
p-map: 4.0.0
is-path-cwd: 3.0.0
is-path-inside: 4.0.0
p-map: 5.5.0
rimraf: 3.0.2
slash: 3.0.0
slash: 4.0.0
dev: true
/delegates/1.0.0:
@ -10945,8 +10949,8 @@ packages:
jake: 10.8.5
dev: false
/electron-to-chromium/1.4.257:
resolution: {integrity: sha512-C65sIwHqNnPC2ADMfse/jWTtmhZMII+x6ADI9gENzrOiI7BpxmfKFE84WkIEl5wEg+7+SfIkwChDlsd1Erju2A==}
/electron-to-chromium/1.4.256:
resolution: {integrity: sha512-x+JnqyluoJv8I0U9gVe+Sk2st8vF0CzMt78SXxuoWCooLLY2k5VerIBdpvG7ql6GKI4dzNnPjmqgDJ76EdaAKw==}
/emmet/2.3.6:
resolution: {integrity: sha512-pLS4PBPDdxuUAmw7Me7+TcHbykTsBKN/S9XJbUOMFQrNv9MoshzyMFK/R57JBm94/6HSL4vHnDeEmxlC82NQ4A==}
@ -11672,7 +11676,6 @@ packages:
/escape-string-regexp/5.0.0:
resolution: {integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==}
engines: {node: '>=12'}
dev: false
/escodegen/1.14.3:
resolution: {integrity: sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw==}
@ -11760,7 +11763,7 @@ packages:
hasBin: true
dependencies:
'@eslint/eslintrc': 1.3.2
'@humanwhocodes/config-array': 0.10.5
'@humanwhocodes/config-array': 0.10.4
'@humanwhocodes/gitignore-to-minimatch': 1.0.2
'@humanwhocodes/module-importer': 1.0.1
ajv: 6.12.6
@ -12348,6 +12351,17 @@ packages:
slash: 4.0.0
dev: false
/globby/13.1.2:
resolution: {integrity: sha512-LKSDZXToac40u8Q1PQtZihbNdTYSNMuWe+K5l+oa6KgDzSvVrHXlJy40hUP522RjAIoNLJYBJi7ow+rbFpIhHQ==}
engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
dependencies:
dir-glob: 3.0.1
fast-glob: 3.2.12
ignore: 5.2.0
merge2: 1.4.1
slash: 4.0.0
dev: true
/globrex/0.1.2:
resolution: {integrity: sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==}
@ -12751,6 +12765,11 @@ packages:
engines: {node: '>=8'}
dev: true
/indent-string/5.0.0:
resolution: {integrity: sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg==}
engines: {node: '>=12'}
dev: true
/inflight/1.0.6:
resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==}
dependencies:
@ -12935,14 +12954,14 @@ packages:
engines: {node: '>=0.10.0'}
dev: false
/is-path-cwd/2.2.0:
resolution: {integrity: sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==}
engines: {node: '>=6'}
/is-path-cwd/3.0.0:
resolution: {integrity: sha512-kyiNFFLU0Ampr6SDZitD/DwUo4Zs1nSdnygUBqsu3LooL00Qvb5j+UnvApUn/TTj1J3OuE6BTdQ5rudKmU2ZaA==}
engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
dev: true
/is-path-inside/3.0.3:
resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==}
engines: {node: '>=8'}
/is-path-inside/4.0.0:
resolution: {integrity: sha512-lJJV/5dYS+RcL8uQdBDW9c9uWFLLBNRyFhnAKXw5tVqLlKZ4RMGZKv+YQ/IA3OhD+RpbJa1LLFM1FQPGyIXvOA==}
engines: {node: '>=12'}
dev: true
/is-plain-obj/1.1.0:
@ -13220,8 +13239,8 @@ packages:
resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==}
dev: true
/linkedom/0.14.16:
resolution: {integrity: sha512-a4QWl4W93P15/x+4d9k8K+C81nOzQeGOs3D37uG0TFqKZYGLEyZwXweSFrypK8yvUx5U2cuZKkdDIOjaouv3ag==}
/linkedom/0.14.15:
resolution: {integrity: sha512-jQoS/JBRPXzBkqsOsu9Oik8d7M2JUbhSrumiDS+QbCtrza/hs9AjfeihiUC2uXDPCTBOSkPPupIOO4upyu+i+w==}
dependencies:
css-select: 5.1.0
cssom: 0.5.0
@ -13375,8 +13394,8 @@ packages:
dependencies:
sourcemap-codec: 1.4.8
/magic-string/0.26.4:
resolution: {integrity: sha512-e5uXtVJ22aEpK9u1+eQf0fSxHeqwyV19K+uGnlROCxUhzwRip9tBsaMViK/0vC3viyPd5Gtucp3UmEp/Q2cPTQ==}
/magic-string/0.26.3:
resolution: {integrity: sha512-u1Po0NDyFcwdg2nzHT88wSK0+Rih0N1M+Ph1Sp08k8yvFFU3KR72wryS7e1qMPJypt99WB7fIFVCA92mQrMjrg==}
engines: {node: '>=12'}
dependencies:
sourcemap-codec: 1.4.8
@ -14628,11 +14647,11 @@ packages:
engines: {node: '>=6'}
dev: true
/p-map/4.0.0:
resolution: {integrity: sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==}
engines: {node: '>=10'}
/p-map/5.5.0:
resolution: {integrity: sha512-VFqfGDHlx87K66yZrNdI4YGtD70IRyd+zSvgks6mzHPRNkoKy+9EKP4SFC77/vTTQYmRmti7dvqC+m5jBrBAcg==}
engines: {node: '>=12'}
dependencies:
aggregate-error: 3.1.0
aggregate-error: 4.0.1
dev: true
/p-try/2.2.0:
@ -15914,7 +15933,7 @@ packages:
rollup-plugin-inject: 3.0.2
dev: true
/rollup-plugin-terser/7.0.2_rollup@2.79.1:
/rollup-plugin-terser/7.0.2_rollup@2.79.0:
resolution: {integrity: sha512-w3iIaU4OxcF52UUXiZNsNeuXIMDvFrr+ZXK6bFZ0Q60qyVfq4uLptoS4bbq3paG3x216eQllFZX7zt6TIImguQ==}
peerDependencies:
rollup: ^2.0.0
@ -15924,7 +15943,7 @@ packages:
dependencies:
'@babel/code-frame': 7.18.6
jest-worker: 26.6.2
rollup: 2.79.1
rollup: 2.79.0
serialize-javascript: 4.0.0
terser: 5.15.0
@ -15941,8 +15960,8 @@ packages:
fsevents: 2.3.2
dev: false
/rollup/2.79.1:
resolution: {integrity: sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw==}
/rollup/2.79.0:
resolution: {integrity: sha512-x4KsrCgwQ7ZJPcFA/SUu6QVcYlO7uRLfLAy0DSA4NS2eG8japdbpM50ToH7z4iObodRYOJ0soneF0iaQRJ6zhA==}
engines: {node: '>=10.0.0'}
hasBin: true
optionalDependencies:
@ -15992,8 +16011,8 @@ packages:
dependencies:
suf-log: 2.5.3
/sass/1.55.0:
resolution: {integrity: sha512-Pk+PMy7OGLs9WaxZGJMn7S96dvlyVBwwtToX895WmCpAOr5YiJYEUJfiJidMuKb613z2xNWcXCHEuOvjZbqC6A==}
/sass/1.54.9:
resolution: {integrity: sha512-xb1hjASzEH+0L0WI9oFjqhRi51t/gagWnxLiwUNMltA0Ab6jIDkAacgKiGYKM9Jhy109osM7woEEai6SXeJo5Q==}
engines: {node: '>=12.0.0'}
hasBin: true
dependencies:
@ -16223,7 +16242,6 @@ packages:
/slash/4.0.0:
resolution: {integrity: sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==}
engines: {node: '>=12'}
dev: false
/smart-buffer/4.2.0:
resolution: {integrity: sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==}
@ -16262,8 +16280,8 @@ packages:
smart-buffer: 4.2.0
dev: true
/solid-js/1.5.6:
resolution: {integrity: sha512-EA7hjMIEdDUuV6Fk3WUQ2fPx7sRnhjl+3M59zj6Sh+c7c3JF3N1cSViBvX8MYJG9vEBEqKQBZUfKHPe/9JgKvQ==}
/solid-js/1.5.5:
resolution: {integrity: sha512-5gXszD7ekhe59IyMa3+AvREJnBWVjwaeC7afL8C3UNPj5gQQCrsMs/cXwI3JRpj6D+3TESTyuQ2sY++m4cYiTg==}
dependencies:
csstype: 3.1.1
@ -17411,7 +17429,7 @@ packages:
dependencies:
'@rollup/pluginutils': 4.2.1
imagetools-core: 3.2.1
magic-string: 0.26.4
magic-string: 0.26.3
dev: false
/vite-plugin-pwa/0.11.11_workbox-window@6.5.4:
@ -17426,7 +17444,7 @@ packages:
debug: 4.3.4
fast-glob: 3.2.12
pretty-bytes: 5.6.0
rollup: 2.79.1
rollup: 2.79.0
workbox-build: 6.5.4
workbox-window: 6.5.4
transitivePeerDependencies:
@ -17461,7 +17479,7 @@ packages:
fsevents: 2.3.2
dev: false
/vite/3.1.3_sass@1.55.0:
/vite/3.1.3_sass@1.54.9:
resolution: {integrity: sha512-/3XWiktaopByM5bd8dqvHxRt5EEgRikevnnrpND0gRfNkrMrPaGGexhtLCzv15RcCMtV2CLw+BPas8YFeSG0KA==}
engines: {node: ^14.18.0 || >=16.0.0}
hasBin: true
@ -17484,7 +17502,7 @@ packages:
postcss: 8.4.16
resolve: 1.22.1
rollup: 2.78.1
sass: 1.55.0
sass: 1.54.9
optionalDependencies:
fsevents: 2.3.2
dev: false
@ -17729,9 +17747,9 @@ packages:
'@babel/core': 7.19.1
'@babel/preset-env': 7.19.1_@babel+core@7.19.1
'@babel/runtime': 7.19.0
'@rollup/plugin-babel': 5.3.1_r56fldxoyazzliugjcx2ns4pma
'@rollup/plugin-node-resolve': 11.2.1_rollup@2.79.1
'@rollup/plugin-replace': 2.4.2_rollup@2.79.1
'@rollup/plugin-babel': 5.3.1_qjhfxcwn2glzcb5646tzyg45bq
'@rollup/plugin-node-resolve': 11.2.1_rollup@2.79.0
'@rollup/plugin-replace': 2.4.2_rollup@2.79.0
'@surma/rollup-plugin-off-main-thread': 2.2.3
ajv: 8.11.0
common-tags: 1.8.2
@ -17740,8 +17758,8 @@ packages:
glob: 7.2.3
lodash: 4.17.21
pretty-bytes: 5.6.0
rollup: 2.79.1
rollup-plugin-terser: 7.0.2_rollup@2.79.1
rollup: 2.79.0
rollup-plugin-terser: 7.0.2_rollup@2.79.0
source-map: 0.8.0-beta.0
stringify-object: 3.3.0
strip-comments: 2.0.1
@ -17858,8 +17876,8 @@ packages:
resolution: {integrity: sha512-Rsk5qQHJ9eowMH28Jwhe8HEbmdYDX4lwoMWshiCXugjtHqMD9ZbiqSDLxcsfdqsETPzVUtX5s1Z5kStiIM6l4A==}
dev: true
/wrangler/2.1.6:
resolution: {integrity: sha512-gwIdA5UPNA/u6U2vCVit3t75ldWmBiN11OQOK48G0u1xN/gdH/ktHWR/C8blDXTAM4c53mLJJw5u5X55ZR1LLw==}
/wrangler/2.1.5:
resolution: {integrity: sha512-j8nTCSygWdsPwPBytZj0oUSAAUCt8sh6K8ZTewHMNzT8yGGAb5aXIdSfzyGYTfp6dnMqaafz4Khyf34XmHcXGQ==}
engines: {node: '>=16.13.0'}
hasBin: true
dependencies:

View file

@ -1,6 +1,6 @@
import esbuild from 'esbuild';
import svelte from '../utils/svelte-plugin.js';
import del from 'del';
import { deleteAsync } from 'del';
import { promises as fs } from 'fs';
import { dim, green, red, yellow } from 'kleur/colors';
import glob from 'tiny-glob';
@ -109,5 +109,5 @@ export default async function build(...args) {
}
async function clean(outdir) {
return del([`${outdir}/**`, `!${outdir}/**/*.d.ts`]);
return deleteAsync([`${outdir}/**`, `!${outdir}/**/*.d.ts`]);
}