Add type-check and unify tsconfig (#10667)

This adds a new `pnpm type-check` that leverages `turbo` to validate the TypeScript code. This can be run at the top-level or for an individual package.

The `test-lint` workflow will run it after linting and doing the prettier check.

As apart of this effort, each package's `tsconfig.json` has been simplified. There's a new top-level `tsconfig.base.json` file that extends the Vercel Style Guide for TypeScript. Each package's `tsconfig.json` has been audited and previously suppressed rules that no longer apply have been removed. The result is each package's `tsconfig.json` is greatly simplified and we can control common settings in the base config while keeping the flexibility of package-level overrides.

Lastly, in `package/cli`, `pnpm build` calls `scripts/build.mjs` which calls `scripts/compile-templates.mjs`. The `compile-templates.mjs` file was generating invalid TypeScript code. I've fixed it and now it's happier than ever.

Note: In order to run `pnpm type-check`, you must first `pnpm build` because we need the `.d.ts` definition files.
This commit is contained in:
Chris Barber
2023-10-09 06:58:23 -05:00
committed by GitHub
parent d8179032e2
commit 222710f612
48 changed files with 452 additions and 340 deletions

View File

@@ -0,0 +1,2 @@
---
---

View File

@@ -49,3 +49,5 @@ jobs:
- run: pnpm install - run: pnpm install
- run: pnpm run lint - run: pnpm run lint
- run: pnpm run prettier-check - run: pnpm run prettier-check
- run: pnpm run build
- run: pnpm run type-check

View File

@@ -11,6 +11,7 @@
"@typescript-eslint/eslint-plugin": "5.21.0", "@typescript-eslint/eslint-plugin": "5.21.0",
"@typescript-eslint/parser": "5.21.0", "@typescript-eslint/parser": "5.21.0",
"@vercel/build-utils": "*", "@vercel/build-utils": "*",
"@vercel/style-guide": "4.0.2",
"async-retry": "1.2.3", "async-retry": "1.2.3",
"buffer-replace": "1.0.0", "buffer-replace": "1.0.0",
"create-svelte": "2.0.1", "create-svelte": "2.0.1",
@@ -49,7 +50,8 @@
"prepare": "husky install", "prepare": "husky install",
"pack": "cd utils && node -r ts-eager/register ./pack.ts", "pack": "cd utils && node -r ts-eager/register ./pack.ts",
"ci:version": "changeset version && pnpm install --no-frozen-lockfile", "ci:version": "changeset version && pnpm install --no-frozen-lockfile",
"ci:publish": "pnpm publish -r && node utils/update-canary-tags.mjs && changeset tag" "ci:publish": "pnpm publish -r && node utils/update-canary-tags.mjs && changeset tag",
"type-check": "turbo type-check --concurrency=12 --output-logs=errors-only --summarize --continue"
}, },
"lint-staged": { "lint-staged": {
"./{*,{api,packages,test,utils}/**/*}.{js,ts}": [ "./{*,{api,packages,test,utils}/**/*}.{js,ts}": [

View File

@@ -14,7 +14,8 @@
"build": "node build.mjs", "build": "node build.mjs",
"test": "jest --reporters=default --reporters=jest-junit --env node --verbose --runInBand --bail", "test": "jest --reporters=default --reporters=jest-junit --env node --verbose --runInBand --bail",
"test-unit": "pnpm test test/unit.*test.*", "test-unit": "pnpm test test/unit.*test.*",
"test-e2e": "pnpm test test/integration.test.ts" "test-e2e": "pnpm test test/integration.test.ts",
"type-check": "tsc --noEmit"
}, },
"devDependencies": { "devDependencies": {
"@iarna/toml": "2.2.3", "@iarna/toml": "2.2.3",

View File

@@ -29,7 +29,7 @@ describe('Test `readConfigFile()`', () => {
it('should return parsed object when file exists', async () => { it('should return parsed object when file exists', async () => {
expect(await readConfigFile(tsconfig)).toMatchObject({ expect(await readConfigFile(tsconfig)).toMatchObject({
compilerOptions: { compilerOptions: {
strict: true, outDir: './dist',
}, },
}); });
expect(logMessages).toEqual([]); expect(logMessages).toEqual([]);
@@ -39,7 +39,7 @@ describe('Test `readConfigFile()`', () => {
const files = [doesnotexist, tsconfig]; const files = [doesnotexist, tsconfig];
expect(await readConfigFile(files)).toMatchObject({ expect(await readConfigFile(files)).toMatchObject({
compilerOptions: { compilerOptions: {
strict: true, outDir: './dist',
}, },
}); });
expect(logMessages).toEqual([]); expect(logMessages).toEqual([]);
@@ -63,7 +63,7 @@ describe('Test `readConfigFile()`', () => {
await writeFile(invalid, 'borked'); await writeFile(invalid, 'borked');
expect(await readConfigFile([invalid, tsconfig])).toMatchObject({ expect(await readConfigFile([invalid, tsconfig])).toMatchObject({
compilerOptions: { compilerOptions: {
strict: true, outDir: './dist',
}, },
}); });
} finally { } finally {

View File

@@ -1,21 +1,9 @@
{ {
"compilerOptions": { "compilerOptions": {
"declaration": true,
"emitDeclarationOnly": true,
"esModuleInterop": true,
"lib": ["ES2021"],
"module": "commonjs",
"moduleResolution": "node",
"noEmitOnError": true,
"noFallthroughCasesInSwitch": true,
"noImplicitReturns": true,
"noUnusedLocals": true,
"noUnusedParameters": true,
"outDir": "./dist", "outDir": "./dist",
"types": ["node", "jest"], "types": ["node", "jest"]
"strict": true,
"target": "ES2021"
}, },
"extends": "../../tsconfig.base.json",
"include": ["src/**/*"], "include": ["src/**/*"],
"exclude": ["node_modules"] "exclude": ["node_modules"]
} }

View File

@@ -17,7 +17,8 @@
"test-dev": "pnpm test test/dev/", "test-dev": "pnpm test test/dev/",
"coverage": "codecov", "coverage": "codecov",
"build": "node scripts/build.mjs", "build": "node scripts/build.mjs",
"dev": "ts-node ./src/index.ts" "dev": "ts-node ./src/index.ts",
"type-check": "tsc --noEmit"
}, },
"bin": { "bin": {
"vc": "./dist/index.js", "vc": "./dist/index.js",

View File

@@ -28,36 +28,16 @@ export async function compileDevTemplates() {
const interfaceName = def.match(/interface (\w+)/)[1]; const interfaceName = def.match(/interface (\w+)/)[1];
const { default: fn } = await import(fnPath); const { default: fn } = await import(fnPath);
const lines = fn.toString().split('\n');
let errorHtmlStart = -1;
let errorHtmlEnd = -1;
for (let i = 0; i < lines.length; i++) {
const line = lines[i];
if (errorHtmlStart === -1 && line.includes('encodeHTML')) {
errorHtmlStart = i;
} else if (errorHtmlEnd === -1 && line.includes(')();')) {
errorHtmlEnd = i;
}
if (/\bvar\b/.test(line)) {
lines[i] = line.replace(/\bvar\b/g, 'let');
}
}
lines.splice(errorHtmlStart, errorHtmlEnd);
lines[0] = `export default ${lines[0].replace( const contents = `import encodeHTML from 'escape-html';
'(it)',
`(it: ${interfaceName}): string`
)}`;
lines.unshift( ${def}
"import encodeHTML from 'escape-html';", export default ${fn
'', .toString()
...def.split('\n') .replace(/var encodeHTML.+\(\)\);/s, '')
); .replace(/\bvar\b/g, 'let')
.replace(/\(it\s*\)/s, `(it: ${interfaceName}): string`)}`;
await Promise.all([ await Promise.all([writeFile(new URL(tsPath), contents), unlink(fnPath)]);
writeFile(new URL(tsPath), lines.join('\n')),
unlink(fnPath),
]);
} }
} }

View File

@@ -106,7 +106,10 @@ export interface BuildsManifest {
argv: string[]; argv: string[];
error?: any; error?: any;
builds?: SerializedBuilder[]; builds?: SerializedBuilder[];
features?: { speedInsightsVersion: string; webAnalyticsVersion: string }; features?: {
speedInsightsVersion?: string | undefined;
webAnalyticsVersion?: string | undefined;
};
} }
export default async function main(client: Client): Promise<number> { export default async function main(client: Client): Promise<number> {

View File

@@ -1,20 +1,16 @@
{ {
"compilerOptions": { "compilerOptions": {
"strict": true,
"noEmitOnError": true,
"noFallthroughCasesInSwitch": true,
"moduleResolution": "node",
"module": "commonjs",
"target": "ES2021",
"esModuleInterop": true,
"allowJs": true, "allowJs": true,
"lib": ["ES2021"], "noImplicitReturns": false,
"resolveJsonModule": true, "noUnusedLocals": false,
"sourceMap": false, "noUnusedParameters": false,
"outDir": "./dist", "outDir": "./dist",
"resolveJsonModule": true,
"typeRoots": ["./types", "./node_modules/@types"] "typeRoots": ["./types", "./node_modules/@types"]
}, },
"extends": "../../tsconfig.base.json",
"include": ["./types", "src/**/*"], "include": ["./types", "src/**/*"],
"exclude": ["templates/*"],
"ts-node": { "ts-node": {
"swc": true // https://typestrong.org/ts-node/docs/swc/ "swc": true // https://typestrong.org/ts-node/docs/swc/
} }

View File

@@ -17,7 +17,8 @@
"build": "node ../../utils/build.mjs", "build": "node ../../utils/build.mjs",
"test-e2e": "pnpm test tests/create-deployment.test.ts tests/create-legacy-deployment.test.ts tests/paths.test.ts", "test-e2e": "pnpm test tests/create-deployment.test.ts tests/create-legacy-deployment.test.ts tests/paths.test.ts",
"test": "jest --reporters=default --reporters=jest-junit --env node --verbose --runInBand --bail", "test": "jest --reporters=default --reporters=jest-junit --env node --verbose --runInBand --bail",
"test-unit": "pnpm test tests/unit.*test.*" "test-unit": "pnpm test tests/unit.*test.*",
"type-check": "tsc --noEmit"
}, },
"engines": { "engines": {
"node": ">= 16" "node": ">= 16"

View File

@@ -1,20 +1,7 @@
{ {
"compilerOptions": { "compilerOptions": {
"declaration": true, "outDir": "./dist"
"emitDeclarationOnly": true,
"esModuleInterop": true,
"lib": ["ES2021"],
"module": "commonjs",
"moduleResolution": "node",
"outDir": "dist",
"strictNullChecks": true,
"noEmitOnError": true,
"noImplicitAny": true,
"noUnusedLocals": true,
"noUnusedParameters": true,
"strict": true,
"target": "ES2021",
"skipLibCheck": true
}, },
"extends": "../../tsconfig.base.json",
"include": ["./src"] "include": ["./src"]
} }

View File

@@ -16,9 +16,10 @@
}, },
"scripts": { "scripts": {
"build": "tsup src/index.ts --dts --format esm,cjs", "build": "tsup src/index.ts --dts --format esm,cjs",
"build:docs": "typedoc && node scripts/fix-links.js && prettier --write docs/**/*.md docs/*.md",
"test": "jest --reporters=default --reporters=jest-junit --env node --verbose --runInBand --bail", "test": "jest --reporters=default --reporters=jest-junit --env node --verbose --runInBand --bail",
"test-unit": "pnpm test", "test-unit": "pnpm test",
"build:docs": "typedoc && node scripts/fix-links.js && prettier --write docs/**/*.md docs/*.md" "type-check": "tsc --noEmit"
}, },
"devDependencies": { "devDependencies": {
"@edge-runtime/jest-environment": "2.3.1", "@edge-runtime/jest-environment": "2.3.1",

View File

@@ -1,17 +1,10 @@
{ {
"compilerOptions": { "compilerOptions": {
"strict": true,
"esModuleInterop": true,
"lib": ["ES2021", "DOM", "DOM.Iterable"], "lib": ["ES2021", "DOM", "DOM.Iterable"],
"target": "ES2021", "outDir": "./dist",
"module": "commonjs",
"outDir": "dist",
"sourceMap": false,
"declaration": true,
"skipLibCheck": true,
"moduleResolution": "node",
"typeRoots": ["./@types", "./node_modules/@types"] "typeRoots": ["./@types", "./node_modules/@types"]
}, },
"extends": "../../tsconfig.base.json",
"include": ["src/**/*", "test/**/*"], "include": ["src/**/*", "test/**/*"],
"exclude": ["node_modules"] "exclude": ["node_modules"]
} }

View File

@@ -15,7 +15,8 @@
"scripts": { "scripts": {
"build": "node ../../utils/build.mjs", "build": "node ../../utils/build.mjs",
"test": "jest --reporters=default --reporters=jest-junit --coverage --env node --verbose", "test": "jest --reporters=default --reporters=jest-junit --coverage --env node --verbose",
"test-unit": "pnpm test" "test-unit": "pnpm test",
"type-check": "tsc --noEmit"
}, },
"license": "Apache-2.0", "license": "Apache-2.0",
"devDependencies": { "devDependencies": {

View File

@@ -1,22 +1,9 @@
{ {
"compilerOptions": { "compilerOptions": {
"declaration": true,
"emitDeclarationOnly": true,
"esModuleInterop": true,
"lib": ["ES2021"],
"module": "commonjs",
"moduleResolution": "node",
"noEmitOnError": true,
"noFallthroughCasesInSwitch": true,
"noImplicitReturns": true,
"noUnusedLocals": true,
"noUnusedParameters": true,
"outDir": "./dist", "outDir": "./dist",
"types": ["node", "jest"], "types": ["node", "jest"]
"strict": true,
"sourceMap": true,
"target": "ES2021"
}, },
"extends": "../../tsconfig.base.json",
"include": ["src/**/*"], "include": ["src/**/*"],
"exclude": ["node_modules"] "exclude": ["node_modules"]
} }

View File

@@ -15,7 +15,8 @@
"scripts": { "scripts": {
"build": "node ../../utils/build.mjs", "build": "node ../../utils/build.mjs",
"test": "jest --reporters=default --reporters=jest-junit --env node --verbose --runInBand --bail", "test": "jest --reporters=default --reporters=jest-junit --env node --verbose --runInBand --bail",
"test-unit": "pnpm test" "test-unit": "pnpm test",
"type-check": "tsc --noEmit"
}, },
"dependencies": { "dependencies": {
"@iarna/toml": "2.2.3", "@iarna/toml": "2.2.3",

View File

@@ -1,21 +1,9 @@
{ {
"compilerOptions": { "compilerOptions": {
"declaration": true,
"emitDeclarationOnly": true,
"esModuleInterop": true,
"lib": ["ES2021"],
"module": "commonjs",
"moduleResolution": "node",
"noEmitOnError": true,
"noFallthroughCasesInSwitch": true,
"noImplicitReturns": true,
"noUnusedLocals": true,
"noUnusedParameters": true,
"outDir": "./dist", "outDir": "./dist",
"types": ["node", "jest"], "types": ["node", "jest"]
"strict": true,
"target": "ES2021"
}, },
"extends": "../../tsconfig.base.json",
"include": ["src/*.ts"], "include": ["src/*.ts"],
"exclude": ["node_modules"] "exclude": ["node_modules"]
} }

View File

@@ -17,7 +17,8 @@
"build": "node ../../utils/build.mjs", "build": "node ../../utils/build.mjs",
"test": "jest --reporters=default --reporters=jest-junit --env node --verbose --runInBand --bail", "test": "jest --reporters=default --reporters=jest-junit --env node --verbose --runInBand --bail",
"test-unit": "pnpm test test/unit.*test.*", "test-unit": "pnpm test test/unit.*test.*",
"test-e2e": "pnpm test test/integration.test.ts" "test-e2e": "pnpm test test/integration.test.ts",
"type-check": "tsc --noEmit"
}, },
"dependencies": { "dependencies": {
"@vercel/error-utils": "2.0.1", "@vercel/error-utils": "2.0.1",

View File

@@ -1,22 +1,9 @@
{ {
"compilerOptions": { "compilerOptions": {
"declaration": true, "outDir": "./dist",
"emitDeclarationOnly": true, "types": ["node", "jest"]
"esModuleInterop": true,
"lib": ["ES2021"],
"module": "commonjs",
"moduleResolution": "node",
"noEmitOnError": true,
"noFallthroughCasesInSwitch": true,
"noImplicitReturns": true,
"noUnusedLocals": true,
"noUnusedParameters": true,
"outDir": "dist",
"types": ["node", "jest"],
"strict": true,
"target": "ES2021",
"sourceMap": true
}, },
"extends": "../../tsconfig.base.json",
"include": ["src/**/*"], "include": ["src/**/*"],
"exclude": ["node_modules"] "exclude": ["node_modules"]
} }

View File

@@ -13,7 +13,8 @@
"directory": "packages/gatsby-plugin-vercel-builder" "directory": "packages/gatsby-plugin-vercel-builder"
}, },
"scripts": { "scripts": {
"build": "node ../../utils/build-builder.mjs" "build": "node ../../utils/build-builder.mjs",
"type-check": "tsc --noEmit"
}, },
"dependencies": { "dependencies": {
"@sinclair/typebox": "0.25.24", "@sinclair/typebox": "0.25.24",

View File

@@ -1,20 +1,8 @@
{ {
"compilerOptions": { "compilerOptions": {
"declaration": false,
"esModuleInterop": true,
"lib": ["ES2021"],
"module": "commonjs",
"moduleResolution": "node",
"noEmitOnError": true,
"noFallthroughCasesInSwitch": true,
"noImplicitReturns": true,
"noUnusedLocals": true,
"noUnusedParameters": true,
"outDir": "./dist", "outDir": "./dist",
"types": ["node", "jest"], "types": ["node", "jest"]
"skipLibCheck": true,
"strict": true,
"target": "ES2021"
}, },
"extends": "../../tsconfig.base.json",
"include": ["src/**/*"] "include": ["src/**/*"]
} }

View File

@@ -12,7 +12,8 @@
"scripts": { "scripts": {
"build": "node ../../utils/build-builder.mjs", "build": "node ../../utils/build-builder.mjs",
"test": "jest --reporters=default --reporters=jest-junit --env node --verbose --runInBand --bail", "test": "jest --reporters=default --reporters=jest-junit --env node --verbose --runInBand --bail",
"test-e2e": "pnpm test" "test-e2e": "pnpm test",
"type-check": "tsc --noEmit"
}, },
"files": [ "files": [
"dist", "dist",

View File

@@ -1,20 +1,8 @@
{ {
"compilerOptions": { "compilerOptions": {
"declaration": false,
"esModuleInterop": true,
"lib": ["ES2021"],
"module": "commonjs",
"moduleResolution": "node",
"noEmitOnError": true,
"noFallthroughCasesInSwitch": true,
"noImplicitReturns": true,
"noUnusedLocals": true,
"noUnusedParameters": true,
"noImplicitThis": false,
"outDir": "./dist", "outDir": "./dist",
"types": ["node", "jest"], "types": ["node", "jest"]
"strict": true,
"target": "ES2021"
}, },
"extends": "../../tsconfig.base.json",
"include": ["src/**/*"] "include": ["src/**/*"]
} }

View File

@@ -12,7 +12,8 @@
"scripts": { "scripts": {
"build": "node ../../utils/build-builder.mjs", "build": "node ../../utils/build-builder.mjs",
"test-e2e": "pnpm test test/test.js", "test-e2e": "pnpm test test/test.js",
"test": "jest --reporters=default --reporters=jest-junit --env node --verbose --bail --runInBand" "test": "jest --reporters=default --reporters=jest-junit --env node --verbose --bail --runInBand",
"type-check": "tsc --noEmit"
}, },
"files": [ "files": [
"dist", "dist",

View File

@@ -1,20 +1,9 @@
{ {
"compilerOptions": { "compilerOptions": {
"declaration": false,
"esModuleInterop": true,
"lib": ["ES2021"],
"module": "commonjs",
"moduleResolution": "node",
"noEmitOnError": true,
"noFallthroughCasesInSwitch": true,
"noImplicitReturns": true,
"noUnusedLocals": true,
"noUnusedParameters": true,
"outDir": "./dist", "outDir": "./dist",
"types": ["node", "jest"], "types": ["node", "jest"]
"strict": true,
"target": "ES2021"
}, },
"extends": "../../tsconfig.base.json",
"include": ["src/**/*"], "include": ["src/**/*"],
"exclude": ["node_modules"] "exclude": ["node_modules"]
} }

View File

@@ -10,7 +10,8 @@
"test-unit": "pnpm test test/unit/", "test-unit": "pnpm test test/unit/",
"test-next-local": "pnpm test test/integration/*.test.js test/integration/*.test.ts", "test-next-local": "pnpm test test/integration/*.test.js test/integration/*.test.ts",
"test-next-local:middleware": "pnpm test test/integration/middleware.test.ts", "test-next-local:middleware": "pnpm test test/integration/middleware.test.ts",
"test-e2e": "rm -f test/builder-info.json; pnpm test test/fixtures/**/*.test.js" "test-e2e": "rm -f test/builder-info.json; pnpm test test/fixtures/**/*.test.js",
"type-check": "tsc --noEmit"
}, },
"repository": { "repository": {
"type": "git", "type": "git",

View File

@@ -1,15 +1,9 @@
{ {
"compilerOptions": { "compilerOptions": {
"strict": true, "noImplicitReturns": false,
"esModuleInterop": true, "outDir": "./dist"
"lib": ["ES2021"],
"target": "ES2021",
"module": "commonjs",
"outDir": "dist",
"sourceMap": false,
"declaration": false,
"skipLibCheck": true
}, },
"extends": "../../tsconfig.base.json",
"include": ["src/**/*"], "include": ["src/**/*"],
"exclude": ["node_modules"] "exclude": ["node_modules"]
} }

View File

@@ -13,7 +13,8 @@
"build": "node build.mjs", "build": "node build.mjs",
"test": "cross-env NODE_OPTIONS=--experimental-vm-modules jest --env node --verbose --bail --runInBand", "test": "cross-env NODE_OPTIONS=--experimental-vm-modules jest --env node --verbose --bail --runInBand",
"test-unit": "pnpm test test/unit", "test-unit": "pnpm test test/unit",
"test-e2e": "pnpm test test/integration" "test-e2e": "pnpm test test/integration",
"type-check": "tsc --noEmit"
}, },
"files": [ "files": [
"dist" "dist"

View File

@@ -1,15 +1,12 @@
{ {
"compilerOptions": { "compilerOptions": {
"strict": true,
"esModuleInterop": true,
"lib": ["ES2021", "DOM"], "lib": ["ES2021", "DOM"],
"target": "ES2021",
"module": "nodenext", "module": "nodenext",
"outDir": "dist", "moduleResolution": "nodenext",
"sourceMap": false, "noImplicitReturns": false,
"declaration": false, "noUnusedParameters": false,
"skipLibCheck": true, "outDir": "./dist"
"moduleResolution": "nodenext"
}, },
"extends": "../../tsconfig.base.json",
"include": ["src/**/*"] "include": ["src/**/*"]
} }

View File

@@ -17,7 +17,8 @@
"build": "node ../../utils/build-builder.mjs", "build": "node ../../utils/build-builder.mjs",
"test": "jest --reporters=default --reporters=jest-junit --env node --verbose --runInBand --bail", "test": "jest --reporters=default --reporters=jest-junit --env node --verbose --runInBand --bail",
"test-unit": "pnpm test test/unit.test.ts", "test-unit": "pnpm test test/unit.test.ts",
"test-e2e": "pnpm test test/integration-*" "test-e2e": "pnpm test test/integration-*",
"type-check": "tsc --noEmit"
}, },
"devDependencies": { "devDependencies": {
"@types/execa": "^0.9.0", "@types/execa": "^0.9.0",

View File

@@ -1,19 +1,8 @@
{ {
"compilerOptions": { "compilerOptions": {
"declaration": false, "outDir": "./dist",
"esModuleInterop": true, "types": ["node", "jest"]
"lib": ["ES2021"],
"module": "commonjs",
"moduleResolution": "node",
"noEmitOnError": true,
"noFallthroughCasesInSwitch": true,
"noImplicitReturns": true,
"noUnusedLocals": true,
"noUnusedParameters": true,
"outDir": "dist",
"types": ["node", "jest"],
"strict": true,
"target": "ES2021"
}, },
"extends": "../../tsconfig.base.json",
"include": ["src/**/*"] "include": ["src/**/*"]
} }

View File

@@ -16,7 +16,8 @@
"build": "node ../../utils/build-builder.mjs", "build": "node ../../utils/build-builder.mjs",
"test-e2e": "pnpm test test/test.js", "test-e2e": "pnpm test test/test.js",
"test": "jest --reporters=default --reporters=jest-junit --env node --verbose --bail --runInBand", "test": "jest --reporters=default --reporters=jest-junit --env node --verbose --bail --runInBand",
"test-unit": "pnpm test test/prepare-cache.test.js" "test-unit": "pnpm test test/prepare-cache.test.js",
"type-check": "tsc --noEmit"
}, },
"dependencies": { "dependencies": {
"@vercel/nft": "0.24.2", "@vercel/nft": "0.24.2",

View File

@@ -1,18 +1,7 @@
{ {
"compilerOptions": { "compilerOptions": {
"declaration": false, "outDir": "./dist",
"esModuleInterop": true, "types": ["node"]
"lib": ["ES2021"], },
"module": "commonjs", "extends": "../../tsconfig.base.json"
"moduleResolution": "node",
"noEmitOnError": true,
"noFallthroughCasesInSwitch": true,
"noImplicitReturns": true,
"noUnusedLocals": true,
"noUnusedParameters": true,
"outDir": "dist",
"types": ["node"],
"strict": true,
"target": "ES2021"
}
} }

View File

@@ -13,7 +13,8 @@
"build": "node ../../utils/build-builder.mjs", "build": "node ../../utils/build-builder.mjs",
"test": "jest --reporters=default --reporters=jest-junit --env node --verbose --bail --runInBand", "test": "jest --reporters=default --reporters=jest-junit --env node --verbose --bail --runInBand",
"test-unit": "pnpm test test/unit.*test.*", "test-unit": "pnpm test test/unit.*test.*",
"test-e2e": "pnpm test test/integration.test.ts" "test-e2e": "pnpm test test/integration.test.ts",
"type-check": "tsc --noEmit"
}, },
"files": [ "files": [
"dist", "dist",

View File

@@ -1,21 +1,9 @@
{ {
"compilerOptions": { "compilerOptions": {
"declaration": false,
"esModuleInterop": true,
"lib": ["ES2021"],
"module": "commonjs",
"moduleResolution": "node",
"noEmitOnError": true,
"noFallthroughCasesInSwitch": true,
"noImplicitReturns": true,
"noUnusedLocals": true,
"noUnusedParameters": true,
"outDir": "./dist", "outDir": "./dist",
"types": ["node", "jest"], "types": ["node", "jest"]
"skipLibCheck": true,
"strict": true,
"target": "ES2021"
}, },
"extends": "../../tsconfig.base.json",
"include": ["src/**/*"], "include": ["src/**/*"],
"exclude": ["node_modules"] "exclude": ["node_modules"]
} }

View File

@@ -16,7 +16,8 @@
"scripts": { "scripts": {
"build": "node ../../utils/build.mjs", "build": "node ../../utils/build.mjs",
"test": "jest --reporters=default --reporters=jest-junit --env node --verbose --runInBand --bail", "test": "jest --reporters=default --reporters=jest-junit --env node --verbose --runInBand --bail",
"test-unit": "pnpm test" "test-unit": "pnpm test",
"type-check": "tsc --noEmit"
}, },
"dependencies": { "dependencies": {
"path-to-regexp": "6.1.0" "path-to-regexp": "6.1.0"

View File

@@ -1,16 +1,9 @@
{ {
"compilerOptions": { "compilerOptions": {
"strict": true, "outDir": "./dist",
"esModuleInterop": true,
"lib": ["ES2021"],
"target": "ES2021",
"module": "commonjs",
"outDir": "dist",
"sourceMap": false,
"declaration": true,
"emitDeclarationOnly": true,
"typeRoots": ["./@types", "./node_modules/@types"] "typeRoots": ["./@types", "./node_modules/@types"]
}, },
"extends": "../../tsconfig.base.json",
"include": ["src/**/*"], "include": ["src/**/*"],
"exclude": ["node_modules"] "exclude": ["node_modules"]
} }

View File

@@ -17,7 +17,8 @@
"scripts": { "scripts": {
"build": "node ../../utils/build-builder.mjs", "build": "node ../../utils/build-builder.mjs",
"test": "jest --reporters=default --reporters=jest-junit --env node --verbose --runInBand --bail", "test": "jest --reporters=default --reporters=jest-junit --env node --verbose --runInBand --bail",
"test-e2e": "pnpm test" "test-e2e": "pnpm test",
"type-check": "tsc --noEmit"
}, },
"devDependencies": { "devDependencies": {
"@types/fs-extra": "8.0.0", "@types/fs-extra": "8.0.0",

View File

@@ -1,18 +1,7 @@
{ {
"compilerOptions": { "compilerOptions": {
"declaration": false, "outDir": "./dist"
"esModuleInterop": true,
"lib": ["ES2021"],
"module": "commonjs",
"moduleResolution": "node",
"noEmitOnError": true,
"noFallthroughCasesInSwitch": true,
"noImplicitReturns": true,
"noUnusedLocals": true,
"noUnusedParameters": true,
"outDir": "dist",
"strict": true,
"target": "ES2021"
}, },
"extends": "../../tsconfig.base.json",
"include": ["src/**/*"] "include": ["src/**/*"]
} }

View File

@@ -16,7 +16,8 @@
"build": "node ../../utils/build-builder.mjs", "build": "node ../../utils/build-builder.mjs",
"test": "jest --reporters=default --reporters=jest-junit --env node --verbose --bail --runInBand", "test": "jest --reporters=default --reporters=jest-junit --env node --verbose --bail --runInBand",
"test-unit": "pnpm test test/build.test.ts test/gatsby.test.ts test/prepare-cache.test.ts", "test-unit": "pnpm test test/build.test.ts test/gatsby.test.ts test/prepare-cache.test.ts",
"test-e2e": "pnpm test test/integration-*.test.js" "test-e2e": "pnpm test test/integration-*.test.js",
"type-check": "tsc --noEmit"
}, },
"dependencies": { "dependencies": {
"@vercel/gatsby-plugin-vercel-analytics": "1.0.11", "@vercel/gatsby-plugin-vercel-analytics": "1.0.11",

View File

@@ -1,20 +1,9 @@
{ {
"compilerOptions": { "compilerOptions": {
"declaration": false, "outDir": "./dist",
"esModuleInterop": true, "types": ["node", "jest"]
"lib": ["ES2021"],
"module": "commonjs",
"moduleResolution": "node",
"noEmitOnError": true,
"noFallthroughCasesInSwitch": true,
"noImplicitReturns": true,
"noUnusedLocals": true,
"noUnusedParameters": true,
"outDir": "dist",
"types": ["node", "jest"],
"strict": true,
"target": "ES2021"
}, },
"extends": "../../tsconfig.base.json",
"include": ["src/**/*"], "include": ["src/**/*"],
"exclude": ["test/fixtures"] "exclude": ["test/fixtures"]
} }

View File

@@ -11,7 +11,8 @@
"scripts": { "scripts": {
"build": "node ../../utils/build.mjs", "build": "node ../../utils/build.mjs",
"test-unit": "pnpm test", "test-unit": "pnpm test",
"test": "jest --reporters=default --reporters=jest-junit --env node --verbose --runInBand --bail" "test": "jest --reporters=default --reporters=jest-junit --env node --verbose --runInBand --bail",
"type-check": "tsc --noEmit"
}, },
"files": [ "files": [
"dist" "dist"

View File

@@ -1,17 +1,9 @@
{ {
"compilerOptions": { "compilerOptions": {
"strict": true, "outDir": "./dist",
"esModuleInterop": true,
"lib": ["ES2021"],
"target": "ES2021",
"module": "commonjs",
"outDir": "dist",
"sourceMap": true,
"declaration": true,
"emitDeclarationOnly": true,
"moduleResolution": "node",
"typeRoots": ["./@types", "./node_modules/@types"] "typeRoots": ["./@types", "./node_modules/@types"]
}, },
"extends": "../../tsconfig.base.json",
"include": ["src/**/*"], "include": ["src/**/*"],
"exclude": ["node_modules"] "exclude": ["node_modules"]
} }

368
pnpm-lock.yaml generated
View File

@@ -22,6 +22,9 @@ importers:
'@vercel/build-utils': '@vercel/build-utils':
specifier: '*' specifier: '*'
version: link:packages/build-utils version: link:packages/build-utils
'@vercel/style-guide':
specifier: 4.0.2
version: 4.0.2(eslint@8.14.0)(jest@29.5.0)(prettier@2.6.2)(typescript@4.9.5)
async-retry: async-retry:
specifier: 1.2.3 specifier: 1.2.3
version: 1.2.3 version: 1.2.3
@@ -1585,29 +1588,6 @@ packages:
engines: {node: '>=6.9.0'} engines: {node: '>=6.9.0'}
dev: true dev: true
/@babel/core@7.21.4:
resolution: {integrity: sha512-qt/YV149Jman/6AfmlxJ04LMIu8bMoyl3RB91yTFrxQmgbrSvQMy7cI8Q62FHx1t8wJ8B5fu0UDoLwHAhUo1QA==}
engines: {node: '>=6.9.0'}
dependencies:
'@ampproject/remapping': 2.2.1
'@babel/code-frame': 7.21.4
'@babel/generator': 7.21.5
'@babel/helper-compilation-targets': 7.21.5(@babel/core@7.21.4)
'@babel/helper-module-transforms': 7.21.5
'@babel/helpers': 7.21.5
'@babel/parser': 7.21.8
'@babel/template': 7.20.7
'@babel/traverse': 7.21.5
'@babel/types': 7.21.5
convert-source-map: 1.8.0
debug: 4.3.4
gensync: 1.0.0-beta.2
json5: 2.2.2
semver: 6.3.1
transitivePeerDependencies:
- supports-color
dev: true
/@babel/core@7.21.8: /@babel/core@7.21.8:
resolution: {integrity: sha512-YeM22Sondbo523Sz0+CirSPnbj9bG3P0CdHcBZdqUuaeOaYEFbOLoGU7lebvGP6P5J/WE9wOn7u7C4J9HvS1xQ==} resolution: {integrity: sha512-YeM22Sondbo523Sz0+CirSPnbj9bG3P0CdHcBZdqUuaeOaYEFbOLoGU7lebvGP6P5J/WE9wOn7u7C4J9HvS1xQ==}
engines: {node: '>=6.9.0'} engines: {node: '>=6.9.0'}
@@ -1653,14 +1633,28 @@ packages:
- supports-color - supports-color
dev: true dev: true
/@babel/eslint-parser@7.19.1(@babel/core@7.21.4)(eslint@8.42.0): /@babel/eslint-parser@7.19.1(@babel/core@7.21.8)(eslint@8.14.0):
resolution: {integrity: sha512-AqNf2QWt1rtu2/1rLswy6CDP7H9Oh3mMhk177Y67Rg8d7RD9WfOLLv8CGn6tisFvS2htm86yIe1yLF6I1UDaGQ==} resolution: {integrity: sha512-AqNf2QWt1rtu2/1rLswy6CDP7H9Oh3mMhk177Y67Rg8d7RD9WfOLLv8CGn6tisFvS2htm86yIe1yLF6I1UDaGQ==}
engines: {node: ^10.13.0 || ^12.13.0 || >=14.0.0} engines: {node: ^10.13.0 || ^12.13.0 || >=14.0.0}
peerDependencies: peerDependencies:
'@babel/core': '>=7.11.0' '@babel/core': '>=7.11.0'
eslint: ^7.5.0 || ^8.0.0 eslint: ^7.5.0 || ^8.0.0
dependencies: dependencies:
'@babel/core': 7.21.4 '@babel/core': 7.21.8
'@nicolo-ribaudo/eslint-scope-5-internals': 5.1.1-v1
eslint: 8.14.0
eslint-visitor-keys: 2.1.0
semver: 6.3.1
dev: true
/@babel/eslint-parser@7.19.1(@babel/core@7.21.8)(eslint@8.42.0):
resolution: {integrity: sha512-AqNf2QWt1rtu2/1rLswy6CDP7H9Oh3mMhk177Y67Rg8d7RD9WfOLLv8CGn6tisFvS2htm86yIe1yLF6I1UDaGQ==}
engines: {node: ^10.13.0 || ^12.13.0 || >=14.0.0}
peerDependencies:
'@babel/core': '>=7.11.0'
eslint: ^7.5.0 || ^8.0.0
dependencies:
'@babel/core': 7.21.8
'@nicolo-ribaudo/eslint-scope-5-internals': 5.1.1-v1 '@nicolo-ribaudo/eslint-scope-5-internals': 5.1.1-v1
eslint: 8.42.0 eslint: 8.42.0
eslint-visitor-keys: 2.1.0 eslint-visitor-keys: 2.1.0
@@ -1693,20 +1687,6 @@ packages:
'@babel/types': 7.21.5 '@babel/types': 7.21.5
dev: true dev: true
/@babel/helper-compilation-targets@7.21.5(@babel/core@7.21.4):
resolution: {integrity: sha512-1RkbFGUKex4lvsB9yhIfWltJM5cZKUftB2eNajaDv3dCMEp49iBG0K14uH8NnX9IPux2+mK7JGEOB0jn48/J6w==}
engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0
dependencies:
'@babel/compat-data': 7.21.7
'@babel/core': 7.21.4
'@babel/helper-validator-option': 7.21.0
browserslist: 4.21.5
lru-cache: 5.1.1
semver: 6.3.1
dev: true
/@babel/helper-compilation-targets@7.21.5(@babel/core@7.21.8): /@babel/helper-compilation-targets@7.21.5(@babel/core@7.21.8):
resolution: {integrity: sha512-1RkbFGUKex4lvsB9yhIfWltJM5cZKUftB2eNajaDv3dCMEp49iBG0K14uH8NnX9IPux2+mK7JGEOB0jn48/J6w==} resolution: {integrity: sha512-1RkbFGUKex4lvsB9yhIfWltJM5cZKUftB2eNajaDv3dCMEp49iBG0K14uH8NnX9IPux2+mK7JGEOB0jn48/J6w==}
engines: {node: '>=6.9.0'} engines: {node: '>=6.9.0'}
@@ -4871,6 +4851,34 @@ packages:
- supports-color - supports-color
dev: true dev: true
/@typescript-eslint/eslint-plugin@5.54.1(@typescript-eslint/parser@5.54.1)(eslint@8.14.0)(typescript@4.9.5):
resolution: {integrity: sha512-a2RQAkosH3d3ZIV08s3DcL/mcGc2M/UC528VkPULFxR9VnVPT8pBu0IyBAJJmVsCmhVfwQX1v6q+QGnmSe1bew==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
peerDependencies:
'@typescript-eslint/parser': ^5.0.0
eslint: ^6.0.0 || ^7.0.0 || ^8.0.0
typescript: '*'
peerDependenciesMeta:
typescript:
optional: true
dependencies:
'@typescript-eslint/parser': 5.54.1(eslint@8.14.0)(typescript@4.9.5)
'@typescript-eslint/scope-manager': 5.54.1
'@typescript-eslint/type-utils': 5.54.1(eslint@8.14.0)(typescript@4.9.5)
'@typescript-eslint/utils': 5.54.1(eslint@8.14.0)(typescript@4.9.5)
debug: 4.3.4
eslint: 8.14.0
grapheme-splitter: 1.0.4
ignore: 5.2.4
natural-compare-lite: 1.4.0
regexpp: 3.2.0
semver: 7.5.2
tsutils: 3.21.0(typescript@4.9.5)
typescript: 4.9.5
transitivePeerDependencies:
- supports-color
dev: true
/@typescript-eslint/eslint-plugin@5.54.1(@typescript-eslint/parser@5.54.1)(eslint@8.42.0)(typescript@4.9.4): /@typescript-eslint/eslint-plugin@5.54.1(@typescript-eslint/parser@5.54.1)(eslint@8.42.0)(typescript@4.9.4):
resolution: {integrity: sha512-a2RQAkosH3d3ZIV08s3DcL/mcGc2M/UC528VkPULFxR9VnVPT8pBu0IyBAJJmVsCmhVfwQX1v6q+QGnmSe1bew==} resolution: {integrity: sha512-a2RQAkosH3d3ZIV08s3DcL/mcGc2M/UC528VkPULFxR9VnVPT8pBu0IyBAJJmVsCmhVfwQX1v6q+QGnmSe1bew==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
@@ -4947,6 +4955,26 @@ packages:
- supports-color - supports-color
dev: true dev: true
/@typescript-eslint/parser@5.54.1(eslint@8.14.0)(typescript@4.9.5):
resolution: {integrity: sha512-8zaIXJp/nG9Ff9vQNh7TI+C3nA6q6iIsGJ4B4L6MhZ7mHnTMR4YP5vp2xydmFXIy8rpyIVbNAG44871LMt6ujg==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
peerDependencies:
eslint: ^6.0.0 || ^7.0.0 || ^8.0.0
typescript: '*'
peerDependenciesMeta:
typescript:
optional: true
dependencies:
'@typescript-eslint/scope-manager': 5.54.1
'@typescript-eslint/types': 5.54.1
'@typescript-eslint/typescript-estree': 5.54.1(typescript@4.9.5)
debug: 4.3.4
eslint: 8.14.0
typescript: 4.9.5
transitivePeerDependencies:
- supports-color
dev: true
/@typescript-eslint/parser@5.54.1(eslint@8.42.0)(typescript@4.9.4): /@typescript-eslint/parser@5.54.1(eslint@8.42.0)(typescript@4.9.4):
resolution: {integrity: sha512-8zaIXJp/nG9Ff9vQNh7TI+C3nA6q6iIsGJ4B4L6MhZ7mHnTMR4YP5vp2xydmFXIy8rpyIVbNAG44871LMt6ujg==} resolution: {integrity: sha512-8zaIXJp/nG9Ff9vQNh7TI+C3nA6q6iIsGJ4B4L6MhZ7mHnTMR4YP5vp2xydmFXIy8rpyIVbNAG44871LMt6ujg==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
@@ -5030,6 +5058,26 @@ packages:
- supports-color - supports-color
dev: true dev: true
/@typescript-eslint/type-utils@5.54.1(eslint@8.14.0)(typescript@4.9.5):
resolution: {integrity: sha512-WREHsTz0GqVYLIbzIZYbmUUr95DKEKIXZNH57W3s+4bVnuF1TKe2jH8ZNH8rO1CeMY3U4j4UQeqPNkHMiGem3g==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
peerDependencies:
eslint: '*'
typescript: '*'
peerDependenciesMeta:
typescript:
optional: true
dependencies:
'@typescript-eslint/typescript-estree': 5.54.1(typescript@4.9.5)
'@typescript-eslint/utils': 5.54.1(eslint@8.14.0)(typescript@4.9.5)
debug: 4.3.4
eslint: 8.14.0
tsutils: 3.21.0(typescript@4.9.5)
typescript: 4.9.5
transitivePeerDependencies:
- supports-color
dev: true
/@typescript-eslint/type-utils@5.54.1(eslint@8.42.0)(typescript@4.9.4): /@typescript-eslint/type-utils@5.54.1(eslint@8.42.0)(typescript@4.9.4):
resolution: {integrity: sha512-WREHsTz0GqVYLIbzIZYbmUUr95DKEKIXZNH57W3s+4bVnuF1TKe2jH8ZNH8rO1CeMY3U4j4UQeqPNkHMiGem3g==} resolution: {integrity: sha512-WREHsTz0GqVYLIbzIZYbmUUr95DKEKIXZNH57W3s+4bVnuF1TKe2jH8ZNH8rO1CeMY3U4j4UQeqPNkHMiGem3g==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
@@ -5207,6 +5255,26 @@ packages:
- typescript - typescript
dev: true dev: true
/@typescript-eslint/utils@5.54.1(eslint@8.14.0)(typescript@4.9.5):
resolution: {integrity: sha512-IY5dyQM8XD1zfDe5X8jegX6r2EVU5o/WJnLu/znLPWCBF7KNGC+adacXnt5jEYS9JixDcoccI6CvE4RCjHMzCQ==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
peerDependencies:
eslint: ^6.0.0 || ^7.0.0 || ^8.0.0
dependencies:
'@types/json-schema': 7.0.11
'@types/semver': 7.3.13
'@typescript-eslint/scope-manager': 5.54.1
'@typescript-eslint/types': 5.54.1
'@typescript-eslint/typescript-estree': 5.54.1(typescript@4.9.5)
eslint: 8.14.0
eslint-scope: 5.1.1
eslint-utils: 3.0.0(eslint@8.14.0)
semver: 7.5.2
transitivePeerDependencies:
- supports-color
- typescript
dev: true
/@typescript-eslint/utils@5.54.1(eslint@8.42.0)(typescript@4.9.4): /@typescript-eslint/utils@5.54.1(eslint@8.42.0)(typescript@4.9.4):
resolution: {integrity: sha512-IY5dyQM8XD1zfDe5X8jegX6r2EVU5o/WJnLu/znLPWCBF7KNGC+adacXnt5jEYS9JixDcoccI6CvE4RCjHMzCQ==} resolution: {integrity: sha512-IY5dyQM8XD1zfDe5X8jegX6r2EVU5o/WJnLu/znLPWCBF7KNGC+adacXnt5jEYS9JixDcoccI6CvE4RCjHMzCQ==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
@@ -5252,7 +5320,7 @@ packages:
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
dependencies: dependencies:
'@typescript-eslint/types': 5.21.0 '@typescript-eslint/types': 5.21.0
eslint-visitor-keys: 3.3.0 eslint-visitor-keys: 3.4.1
dev: true dev: true
/@typescript-eslint/visitor-keys@5.48.1: /@typescript-eslint/visitor-keys@5.48.1:
@@ -5260,7 +5328,7 @@ packages:
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
dependencies: dependencies:
'@typescript-eslint/types': 5.48.1 '@typescript-eslint/types': 5.48.1
eslint-visitor-keys: 3.3.0 eslint-visitor-keys: 3.4.1
dev: true dev: true
/@typescript-eslint/visitor-keys@5.54.1: /@typescript-eslint/visitor-keys@5.54.1:
@@ -5268,7 +5336,7 @@ packages:
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
dependencies: dependencies:
'@typescript-eslint/types': 5.54.1 '@typescript-eslint/types': 5.54.1
eslint-visitor-keys: 3.3.0 eslint-visitor-keys: 3.4.1
dev: true dev: true
/@vanilla-extract/babel-plugin-debug-ids@1.0.2: /@vanilla-extract/babel-plugin-debug-ids@1.0.2:
@@ -5452,6 +5520,52 @@ packages:
- utf-8-validate - utf-8-validate
dev: true dev: true
/@vercel/style-guide@4.0.2(eslint@8.14.0)(jest@29.5.0)(prettier@2.6.2)(typescript@4.9.5):
resolution: {integrity: sha512-FroL+oOePzhw7n/I+f7zr4WNroGHT/+2TlW6WH9+CVSjMNsEyu7Qstj2mI5gWIBjT1Y2ZImKPppCzI2cIYmNZw==}
engines: {node: '>=16'}
peerDependencies:
'@next/eslint-plugin-next': ^12.3.0
eslint: ^8.24.0
prettier: ^2.7.0
typescript: ^4.8.0
peerDependenciesMeta:
'@next/eslint-plugin-next':
optional: true
eslint:
optional: true
prettier:
optional: true
typescript:
optional: true
dependencies:
'@babel/core': 7.21.8
'@babel/eslint-parser': 7.19.1(@babel/core@7.21.8)(eslint@8.14.0)
'@rushstack/eslint-patch': 1.2.0
'@typescript-eslint/eslint-plugin': 5.54.1(@typescript-eslint/parser@5.54.1)(eslint@8.14.0)(typescript@4.9.5)
'@typescript-eslint/parser': 5.54.1(eslint@8.14.0)(typescript@4.9.5)
eslint: 8.14.0
eslint-config-prettier: 8.5.0(eslint@8.14.0)
eslint-import-resolver-alias: 1.1.2(eslint-plugin-import@2.27.5)
eslint-import-resolver-typescript: 3.5.3(eslint-plugin-import@2.27.5)(eslint@8.14.0)
eslint-plugin-eslint-comments: 3.2.0(eslint@8.14.0)
eslint-plugin-import: 2.27.5(@typescript-eslint/parser@5.54.1)(eslint-import-resolver-typescript@3.5.3)(eslint@8.42.0)
eslint-plugin-jest: 27.2.1(@typescript-eslint/eslint-plugin@5.54.1)(eslint@8.14.0)(jest@29.5.0)(typescript@4.9.5)
eslint-plugin-jsx-a11y: 6.7.1(eslint@8.14.0)
eslint-plugin-playwright: 0.11.2(eslint-plugin-jest@27.2.1)(eslint@8.14.0)
eslint-plugin-react: 7.32.2(eslint@8.14.0)
eslint-plugin-react-hooks: 4.6.0(eslint@8.14.0)
eslint-plugin-testing-library: 5.10.2(eslint@8.14.0)(typescript@4.9.5)
eslint-plugin-tsdoc: 0.2.17
eslint-plugin-unicorn: 43.0.2(eslint@8.14.0)
prettier: 2.6.2
prettier-plugin-packagejson: 2.4.3(prettier@2.6.2)
typescript: 4.9.5
transitivePeerDependencies:
- eslint-import-resolver-webpack
- jest
- supports-color
dev: true
/@vercel/style-guide@4.0.2(eslint@8.42.0)(jest@29.5.0)(prettier@2.6.2)(typescript@4.9.4): /@vercel/style-guide@4.0.2(eslint@8.42.0)(jest@29.5.0)(prettier@2.6.2)(typescript@4.9.4):
resolution: {integrity: sha512-FroL+oOePzhw7n/I+f7zr4WNroGHT/+2TlW6WH9+CVSjMNsEyu7Qstj2mI5gWIBjT1Y2ZImKPppCzI2cIYmNZw==} resolution: {integrity: sha512-FroL+oOePzhw7n/I+f7zr4WNroGHT/+2TlW6WH9+CVSjMNsEyu7Qstj2mI5gWIBjT1Y2ZImKPppCzI2cIYmNZw==}
engines: {node: '>=16'} engines: {node: '>=16'}
@@ -5470,8 +5584,8 @@ packages:
typescript: typescript:
optional: true optional: true
dependencies: dependencies:
'@babel/core': 7.21.4 '@babel/core': 7.21.8
'@babel/eslint-parser': 7.19.1(@babel/core@7.21.4)(eslint@8.42.0) '@babel/eslint-parser': 7.19.1(@babel/core@7.21.8)(eslint@8.42.0)
'@rushstack/eslint-patch': 1.2.0 '@rushstack/eslint-patch': 1.2.0
'@typescript-eslint/eslint-plugin': 5.54.1(@typescript-eslint/parser@5.54.1)(eslint@8.42.0)(typescript@4.9.4) '@typescript-eslint/eslint-plugin': 5.54.1(@typescript-eslint/parser@5.54.1)(eslint@8.42.0)(typescript@4.9.4)
'@typescript-eslint/parser': 5.54.1(eslint@8.42.0)(typescript@4.9.4) '@typescript-eslint/parser': 5.54.1(eslint@8.42.0)(typescript@4.9.4)
@@ -5516,8 +5630,8 @@ packages:
typescript: typescript:
optional: true optional: true
dependencies: dependencies:
'@babel/core': 7.21.4 '@babel/core': 7.21.8
'@babel/eslint-parser': 7.19.1(@babel/core@7.21.4)(eslint@8.42.0) '@babel/eslint-parser': 7.19.1(@babel/core@7.21.8)(eslint@8.42.0)
'@rushstack/eslint-patch': 1.2.0 '@rushstack/eslint-patch': 1.2.0
'@typescript-eslint/eslint-plugin': 5.54.1(@typescript-eslint/parser@5.54.1)(eslint@8.42.0)(typescript@4.9.5) '@typescript-eslint/eslint-plugin': 5.54.1(@typescript-eslint/parser@5.54.1)(eslint@8.42.0)(typescript@4.9.5)
'@typescript-eslint/parser': 5.54.1(eslint@8.42.0)(typescript@4.9.5) '@typescript-eslint/parser': 5.54.1(eslint@8.42.0)(typescript@4.9.5)
@@ -7895,6 +8009,26 @@ packages:
- supports-color - supports-color
dev: true dev: true
/eslint-import-resolver-typescript@3.5.3(eslint-plugin-import@2.27.5)(eslint@8.14.0):
resolution: {integrity: sha512-njRcKYBc3isE42LaTcJNVANR3R99H9bAxBDMNDr2W7yq5gYPxbU3MkdhsQukxZ/Xg9C2vcyLlDsbKfRDg0QvCQ==}
engines: {node: ^14.18.0 || >=16.0.0}
peerDependencies:
eslint: '*'
eslint-plugin-import: '*'
dependencies:
debug: 4.3.4
enhanced-resolve: 5.12.0
eslint: 8.14.0
eslint-plugin-import: 2.27.5(@typescript-eslint/parser@5.54.1)(eslint-import-resolver-typescript@3.5.3)(eslint@8.42.0)
get-tsconfig: 4.4.0
globby: 13.1.3
is-core-module: 2.11.0
is-glob: 4.0.3
synckit: 0.8.5
transitivePeerDependencies:
- supports-color
dev: true
/eslint-import-resolver-typescript@3.5.3(eslint-plugin-import@2.27.5)(eslint@8.42.0): /eslint-import-resolver-typescript@3.5.3(eslint-plugin-import@2.27.5)(eslint@8.42.0):
resolution: {integrity: sha512-njRcKYBc3isE42LaTcJNVANR3R99H9bAxBDMNDr2W7yq5gYPxbU3MkdhsQukxZ/Xg9C2vcyLlDsbKfRDg0QvCQ==} resolution: {integrity: sha512-njRcKYBc3isE42LaTcJNVANR3R99H9bAxBDMNDr2W7yq5gYPxbU3MkdhsQukxZ/Xg9C2vcyLlDsbKfRDg0QvCQ==}
engines: {node: ^14.18.0 || >=16.0.0} engines: {node: ^14.18.0 || >=16.0.0}
@@ -7945,6 +8079,17 @@ packages:
- supports-color - supports-color
dev: true dev: true
/eslint-plugin-eslint-comments@3.2.0(eslint@8.14.0):
resolution: {integrity: sha512-0jkOl0hfojIHHmEHgmNdqv4fmh7300NdpA9FFpF7zaoLvB/QeXOGNLIo86oAveJFrfB1p05kC8hpEMHM8DwWVQ==}
engines: {node: '>=6.5.0'}
peerDependencies:
eslint: '>=4.19.1'
dependencies:
escape-string-regexp: 1.0.5
eslint: 8.14.0
ignore: 5.2.4
dev: true
/eslint-plugin-eslint-comments@3.2.0(eslint@8.42.0): /eslint-plugin-eslint-comments@3.2.0(eslint@8.42.0):
resolution: {integrity: sha512-0jkOl0hfojIHHmEHgmNdqv4fmh7300NdpA9FFpF7zaoLvB/QeXOGNLIo86oAveJFrfB1p05kC8hpEMHM8DwWVQ==} resolution: {integrity: sha512-0jkOl0hfojIHHmEHgmNdqv4fmh7300NdpA9FFpF7zaoLvB/QeXOGNLIo86oAveJFrfB1p05kC8hpEMHM8DwWVQ==}
engines: {node: '>=6.5.0'} engines: {node: '>=6.5.0'}
@@ -8011,6 +8156,28 @@ packages:
- typescript - typescript
dev: true dev: true
/eslint-plugin-jest@27.2.1(@typescript-eslint/eslint-plugin@5.54.1)(eslint@8.14.0)(jest@29.5.0)(typescript@4.9.5):
resolution: {integrity: sha512-l067Uxx7ZT8cO9NJuf+eJHvt6bqJyz2Z29wykyEdz/OtmcELQl2MQGQLX8J94O1cSJWAwUSEvCjwjA7KEK3Hmg==}
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
peerDependencies:
'@typescript-eslint/eslint-plugin': ^5.0.0
eslint: ^7.0.0 || ^8.0.0
jest: '*'
peerDependenciesMeta:
'@typescript-eslint/eslint-plugin':
optional: true
jest:
optional: true
dependencies:
'@typescript-eslint/eslint-plugin': 5.54.1(@typescript-eslint/parser@5.54.1)(eslint@8.14.0)(typescript@4.9.5)
'@typescript-eslint/utils': 5.54.1(eslint@8.14.0)(typescript@4.9.5)
eslint: 8.14.0
jest: 29.5.0(@types/node@14.18.33)
transitivePeerDependencies:
- supports-color
- typescript
dev: true
/eslint-plugin-jest@27.2.1(@typescript-eslint/eslint-plugin@5.54.1)(eslint@8.42.0)(jest@29.5.0)(typescript@4.9.4): /eslint-plugin-jest@27.2.1(@typescript-eslint/eslint-plugin@5.54.1)(eslint@8.42.0)(jest@29.5.0)(typescript@4.9.4):
resolution: {integrity: sha512-l067Uxx7ZT8cO9NJuf+eJHvt6bqJyz2Z29wykyEdz/OtmcELQl2MQGQLX8J94O1cSJWAwUSEvCjwjA7KEK3Hmg==} resolution: {integrity: sha512-l067Uxx7ZT8cO9NJuf+eJHvt6bqJyz2Z29wykyEdz/OtmcELQl2MQGQLX8J94O1cSJWAwUSEvCjwjA7KEK3Hmg==}
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
@@ -8055,6 +8222,31 @@ packages:
- typescript - typescript
dev: true dev: true
/eslint-plugin-jsx-a11y@6.7.1(eslint@8.14.0):
resolution: {integrity: sha512-63Bog4iIethyo8smBklORknVjB0T2dwB8Mr/hIC+fBS0uyHdYYpzM/Ed+YC8VxTjlXHEWFOdmgwcDn1U2L9VCA==}
engines: {node: '>=4.0'}
peerDependencies:
eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8
dependencies:
'@babel/runtime': 7.20.7
aria-query: 5.1.3
array-includes: 3.1.6
array.prototype.flatmap: 1.3.1
ast-types-flow: 0.0.7
axe-core: 4.6.3
axobject-query: 3.1.1
damerau-levenshtein: 1.0.8
emoji-regex: 9.2.2
eslint: 8.14.0
has: 1.0.3
jsx-ast-utils: 3.3.3
language-tags: 1.0.5
minimatch: 3.1.2
object.entries: 1.1.6
object.fromentries: 2.0.6
semver: 6.3.1
dev: true
/eslint-plugin-jsx-a11y@6.7.1(eslint@8.42.0): /eslint-plugin-jsx-a11y@6.7.1(eslint@8.42.0):
resolution: {integrity: sha512-63Bog4iIethyo8smBklORknVjB0T2dwB8Mr/hIC+fBS0uyHdYYpzM/Ed+YC8VxTjlXHEWFOdmgwcDn1U2L9VCA==} resolution: {integrity: sha512-63Bog4iIethyo8smBklORknVjB0T2dwB8Mr/hIC+fBS0uyHdYYpzM/Ed+YC8VxTjlXHEWFOdmgwcDn1U2L9VCA==}
engines: {node: '>=4.0'} engines: {node: '>=4.0'}
@@ -8080,6 +8272,19 @@ packages:
semver: 6.3.1 semver: 6.3.1
dev: true dev: true
/eslint-plugin-playwright@0.11.2(eslint-plugin-jest@27.2.1)(eslint@8.14.0):
resolution: {integrity: sha512-uRLRLk7uTzc8NE6t4wBU8dijQwHvC66R/h7xwdM779jsJjMUtSmeaB8ayRkkpfwi+UU5BEfwvDANwmE+ccMVDw==}
peerDependencies:
eslint: '>=7'
eslint-plugin-jest: '>=24'
peerDependenciesMeta:
eslint-plugin-jest:
optional: true
dependencies:
eslint: 8.14.0
eslint-plugin-jest: 27.2.1(@typescript-eslint/eslint-plugin@5.54.1)(eslint@8.14.0)(jest@29.5.0)(typescript@4.9.5)
dev: true
/eslint-plugin-playwright@0.11.2(eslint-plugin-jest@27.2.1)(eslint@8.42.0): /eslint-plugin-playwright@0.11.2(eslint-plugin-jest@27.2.1)(eslint@8.42.0):
resolution: {integrity: sha512-uRLRLk7uTzc8NE6t4wBU8dijQwHvC66R/h7xwdM779jsJjMUtSmeaB8ayRkkpfwi+UU5BEfwvDANwmE+ccMVDw==} resolution: {integrity: sha512-uRLRLk7uTzc8NE6t4wBU8dijQwHvC66R/h7xwdM779jsJjMUtSmeaB8ayRkkpfwi+UU5BEfwvDANwmE+ccMVDw==}
peerDependencies: peerDependencies:
@@ -8093,6 +8298,15 @@ packages:
eslint-plugin-jest: 27.2.1(@typescript-eslint/eslint-plugin@5.54.1)(eslint@8.42.0)(jest@29.5.0)(typescript@4.9.4) eslint-plugin-jest: 27.2.1(@typescript-eslint/eslint-plugin@5.54.1)(eslint@8.42.0)(jest@29.5.0)(typescript@4.9.4)
dev: true dev: true
/eslint-plugin-react-hooks@4.6.0(eslint@8.14.0):
resolution: {integrity: sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==}
engines: {node: '>=10'}
peerDependencies:
eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0
dependencies:
eslint: 8.14.0
dev: true
/eslint-plugin-react-hooks@4.6.0(eslint@8.42.0): /eslint-plugin-react-hooks@4.6.0(eslint@8.42.0):
resolution: {integrity: sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==} resolution: {integrity: sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==}
engines: {node: '>=10'} engines: {node: '>=10'}
@@ -8102,6 +8316,30 @@ packages:
eslint: 8.42.0 eslint: 8.42.0
dev: true dev: true
/eslint-plugin-react@7.32.2(eslint@8.14.0):
resolution: {integrity: sha512-t2fBMa+XzonrrNkyVirzKlvn5RXzzPwRHtMvLAtVZrt8oxgnTQaYbU6SXTOO1mwQgp1y5+toMSKInnzGr0Knqg==}
engines: {node: '>=4'}
peerDependencies:
eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8
dependencies:
array-includes: 3.1.6
array.prototype.flatmap: 1.3.1
array.prototype.tosorted: 1.1.1
doctrine: 2.1.0
eslint: 8.14.0
estraverse: 5.3.0
jsx-ast-utils: 3.3.3
minimatch: 3.1.2
object.entries: 1.1.6
object.fromentries: 2.0.6
object.hasown: 1.1.2
object.values: 1.1.6
prop-types: 15.8.1
resolve: 2.0.0-next.4
semver: 6.3.1
string.prototype.matchall: 4.0.8
dev: true
/eslint-plugin-react@7.32.2(eslint@8.42.0): /eslint-plugin-react@7.32.2(eslint@8.42.0):
resolution: {integrity: sha512-t2fBMa+XzonrrNkyVirzKlvn5RXzzPwRHtMvLAtVZrt8oxgnTQaYbU6SXTOO1mwQgp1y5+toMSKInnzGr0Knqg==} resolution: {integrity: sha512-t2fBMa+XzonrrNkyVirzKlvn5RXzzPwRHtMvLAtVZrt8oxgnTQaYbU6SXTOO1mwQgp1y5+toMSKInnzGr0Knqg==}
engines: {node: '>=4'} engines: {node: '>=4'}
@@ -8126,6 +8364,19 @@ packages:
string.prototype.matchall: 4.0.8 string.prototype.matchall: 4.0.8
dev: true dev: true
/eslint-plugin-testing-library@5.10.2(eslint@8.14.0)(typescript@4.9.5):
resolution: {integrity: sha512-f1DmDWcz5SDM+IpCkEX0lbFqrrTs8HRsEElzDEqN/EBI0hpRj8Cns5+IVANXswE8/LeybIJqPAOQIFu2j5Y5sw==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0, npm: '>=6'}
peerDependencies:
eslint: ^7.5.0 || ^8.0.0
dependencies:
'@typescript-eslint/utils': 5.54.1(eslint@8.14.0)(typescript@4.9.5)
eslint: 8.14.0
transitivePeerDependencies:
- supports-color
- typescript
dev: true
/eslint-plugin-testing-library@5.10.2(eslint@8.42.0)(typescript@4.9.4): /eslint-plugin-testing-library@5.10.2(eslint@8.42.0)(typescript@4.9.4):
resolution: {integrity: sha512-f1DmDWcz5SDM+IpCkEX0lbFqrrTs8HRsEElzDEqN/EBI0hpRj8Cns5+IVANXswE8/LeybIJqPAOQIFu2j5Y5sw==} resolution: {integrity: sha512-f1DmDWcz5SDM+IpCkEX0lbFqrrTs8HRsEElzDEqN/EBI0hpRj8Cns5+IVANXswE8/LeybIJqPAOQIFu2j5Y5sw==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0, npm: '>=6'} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0, npm: '>=6'}
@@ -8159,6 +8410,29 @@ packages:
'@microsoft/tsdoc-config': 0.16.2 '@microsoft/tsdoc-config': 0.16.2
dev: true dev: true
/eslint-plugin-unicorn@43.0.2(eslint@8.14.0):
resolution: {integrity: sha512-DtqZ5mf/GMlfWoz1abIjq5jZfaFuHzGBZYIeuJfEoKKGWRHr2JiJR+ea+BF7Wx2N1PPRoT/2fwgiK1NnmNE3Hg==}
engines: {node: '>=14.18'}
peerDependencies:
eslint: '>=8.18.0'
dependencies:
'@babel/helper-validator-identifier': 7.19.1
ci-info: 3.7.1
clean-regexp: 1.0.0
eslint: 8.14.0
eslint-utils: 3.0.0(eslint@8.14.0)
esquery: 1.5.0
indent-string: 4.0.0
is-builtin-module: 3.2.1
lodash: 4.17.21
pluralize: 8.0.0
read-pkg-up: 7.0.1
regexp-tree: 0.1.24
safe-regex: 2.1.1
semver: 7.5.2
strip-indent: 3.0.0
dev: true
/eslint-plugin-unicorn@43.0.2(eslint@8.42.0): /eslint-plugin-unicorn@43.0.2(eslint@8.42.0):
resolution: {integrity: sha512-DtqZ5mf/GMlfWoz1abIjq5jZfaFuHzGBZYIeuJfEoKKGWRHr2JiJR+ea+BF7Wx2N1PPRoT/2fwgiK1NnmNE3Hg==} resolution: {integrity: sha512-DtqZ5mf/GMlfWoz1abIjq5jZfaFuHzGBZYIeuJfEoKKGWRHr2JiJR+ea+BF7Wx2N1PPRoT/2fwgiK1NnmNE3Hg==}
engines: {node: '>=14.18'} engines: {node: '>=14.18'}
@@ -11166,6 +11440,7 @@ packages:
/loose-envify@1.4.0: /loose-envify@1.4.0:
resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==}
hasBin: true
dependencies: dependencies:
js-tokens: 4.0.0 js-tokens: 4.0.0
dev: true dev: true
@@ -13744,6 +14019,7 @@ packages:
/source-map@0.6.1: /source-map@0.6.1:
resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==}
engines: {node: '>=0.10.0'} engines: {node: '>=0.10.0'}
requiresBuild: true
dev: true dev: true
/source-map@0.7.3: /source-map@0.7.3:

16
tsconfig.base.json Normal file
View File

@@ -0,0 +1,16 @@
{
"description": "The base configuration for all packages.",
"extends": "@vercel/style-guide/typescript",
"compilerOptions": {
"lib": ["ES2021"],
"module": "commonjs",
"moduleResolution": "node",
"noEmitOnError": true,
"noImplicitReturns": true,
"noUncheckedIndexedAccess": false,
"noUnusedLocals": true,
"noUnusedParameters": true,
"sourceMap": false,
"target": "ES2021"
}
}

View File

@@ -35,6 +35,7 @@
"test": { "test": {
"dependsOn": ["build"], "dependsOn": ["build"],
"outputMode": "new-only" "outputMode": "new-only"
} },
"type-check": {}
} }
} }

2
utils/build.mjs vendored
View File

@@ -59,7 +59,7 @@ export async function tsc() {
const rootNodeModulesBin = fileURLToPath( const rootNodeModulesBin = fileURLToPath(
new URL('../node_modules/.bin', import.meta.url) new URL('../node_modules/.bin', import.meta.url)
); );
await execa('tsc', { await execa('tsc', ['--declaration', '--emitDeclarationOnly'], {
stdio: 'inherit', stdio: 'inherit',
env: { env: {
...process.env, ...process.env,