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", "@octokit/action": "^3.18.1",
"@typescript-eslint/eslint-plugin": "^5.27.1", "@typescript-eslint/eslint-plugin": "^5.27.1",
"@typescript-eslint/parser": "^5.27.1", "@typescript-eslint/parser": "^5.27.1",
"del": "^6.1.1", "del": "^7.0.0",
"esbuild": "^0.14.43", "esbuild": "^0.14.43",
"eslint": "^8.17.0", "eslint": "^8.17.0",
"eslint-config-prettier": "^8.5.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 { build as astroBuild } from '#astro/build';
import { loadConfig } from '#astro/config'; import { loadConfig } from '#astro/config';
import { Benchmark } from './benchmark.js'; import { Benchmark } from './benchmark.js';
import del from 'del'; import { deleteAsync } from 'del';
import { Writable } from 'stream'; import { Writable } from 'stream';
import { format as utilFormat } from 'util'; import { format as utilFormat } from 'util';
@ -47,7 +47,7 @@ const benchmarks = [
async setup() { async setup() {
process.chdir(new URL('../../../../', import.meta.url).pathname); process.chdir(new URL('../../../../', import.meta.url).pathname);
const spcache = new URL('../../node_modules/.cache/', import.meta.url); 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, run: runBuild,
}), }),

View file

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

View file

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

View file

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

View file

@ -1,6 +1,8 @@
import path from 'path'; import path from 'path';
import { promises, existsSync } from 'fs'; 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 = { const inputs = {
nonEmptyDir: './fixtures/select-directory/nonempty-dir', nonEmptyDir: './fixtures/select-directory/nonempty-dir',
@ -12,9 +14,10 @@ const inputs = {
describe('[create-astro] select directory', function () { describe('[create-astro] select directory', function () {
this.timeout(timeout); this.timeout(timeout);
it('should prompt for directory when none is provided', function () { it('should prompt for directory when none is provided', function () {
return promiseWithTimeout((resolve) => { return promiseWithTimeout((resolve, onStdout) => {
const { stdout } = setup(); const { stdout } = setup();
stdout.on('data', (chunk) => { stdout.on('data', (chunk) => {
onStdout(chunk);
if (chunk.includes(PROMPT_MESSAGES.directory)) { if (chunk.includes(PROMPT_MESSAGES.directory)) {
resolve(); resolve();
} }
@ -22,9 +25,10 @@ describe('[create-astro] select directory', function () {
}); });
}); });
it('should NOT proceed on a non-empty directory', function () { it('should NOT proceed on a non-empty directory', function () {
return promiseWithTimeout((resolve) => { return promiseWithTimeout((resolve, onStdout) => {
const { stdout } = setup([inputs.nonEmptyDir]); const { stdout } = setup([inputs.nonEmptyDir]);
stdout.on('data', (chunk) => { stdout.on('data', (chunk) => {
onStdout(chunk);
if (chunk.includes(PROMPT_MESSAGES.directory)) { if (chunk.includes(PROMPT_MESSAGES.directory)) {
resolve(); resolve();
} }
@ -46,9 +50,10 @@ describe('[create-astro] select directory', function () {
if (!existsSync(resolvedEmptyDirPath)) { if (!existsSync(resolvedEmptyDirPath)) {
await promises.mkdir(resolvedEmptyDirPath); await promises.mkdir(resolvedEmptyDirPath);
} }
return promiseWithTimeout((resolve) => { return promiseWithTimeout((resolve, onStdout) => {
const { stdout } = setup([inputs.emptyDir]); const { stdout } = setup([inputs.emptyDir]);
stdout.on('data', (chunk) => { stdout.on('data', (chunk) => {
onStdout(chunk);
if (chunk.includes(PROMPT_MESSAGES.template)) { if (chunk.includes(PROMPT_MESSAGES.template)) {
resolve(); resolve();
} }
@ -56,9 +61,10 @@ describe('[create-astro] select directory', function () {
}); });
}); });
it('should proceed when directory does not exist', function () { it('should proceed when directory does not exist', function () {
return promiseWithTimeout((resolve) => { return promiseWithTimeout((resolve, onStdout) => {
const { stdout } = setup([inputs.nonexistentDir]); const { stdout } = setup([inputs.nonexistentDir]);
stdout.on('data', (chunk) => { stdout.on('data', (chunk) => {
onStdout(chunk);
if (chunk.includes(PROMPT_MESSAGES.template)) { if (chunk.includes(PROMPT_MESSAGES.template)) {
resolve(); resolve();
} }
@ -66,14 +72,17 @@ describe('[create-astro] select directory', function () {
}); });
}); });
it('should error on bad directory selection in prompt', 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(); const { stdout, stdin } = setup();
stdout.on('data', (chunk) => { stdout.on('data', (chunk) => {
onStdout(chunk);
if (chunk.includes('is not empty!')) { if (chunk.includes('is not empty!')) {
resolve(); resolve();
} }
if (chunk.includes(PROMPT_MESSAGES.directory)) { if (!wrote && chunk.includes(PROMPT_MESSAGES.directory)) {
stdin.write(`${inputs.nonEmptyDir}\x0D`); 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 { execa } from 'execa';
import { fileURLToPath } from 'url';
import { dirname } from 'path'; import { dirname } from 'path';
import stripAnsi from 'strip-ansi';
import { fileURLToPath } from 'url';
const __filename = fileURLToPath(import.meta.url); const __filename = fileURLToPath(import.meta.url);
export const testDir = dirname(__filename); export const testDir = dirname(__filename);
export const timeout = 5000; export const timeout = 5000;
const createAstroError = new Error( const timeoutError = function (details) {
'Timed out waiting for create-astro to respond with expected output.' 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) { export function promiseWithTimeout(testFn) {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
let lastStdout;
function onStdout (chunk) {
lastStdout = stripAnsi(chunk.toString()).trim() || lastStdout;
}
const timeoutEvent = setTimeout(() => { const timeoutEvent = setTimeout(() => {
reject(createAstroError); reject(timeoutError(lastStdout));
}, timeout); }, timeout);
function resolver() { function resolver() {
clearTimeout(timeoutEvent); clearTimeout(timeoutEvent);
resolve(); resolve();
} }
testFn(resolver);
testFn(resolver, onStdout);
}); });
} }
export const PROMPT_MESSAGES = { export const PROMPT_MESSAGES = {
directory: 'Where would you like to create your new project?', directory: 'Where would you like to create your new project?',
template: 'Which template would you like to use?', template: 'Which template would you like to use?',
typescript: 'How would you like to setup TypeScript?',
typescriptSucceed: 'Next steps'
}; };
export function setup(args = []) { export function setup(args = []) {

246
pnpm-lock.yaml generated
View file

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

View file

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