diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 3ba457063..2fbb6471e 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -103,5 +103,22 @@ jobs: corepack yarn run build:locale-pack - name: Run type tests run: corepack yarn run test:type + - name: Drop manual tyoes + # For backward compatiblity reasons, Uppy plugins ship a manual crafted d.ts file. + # We don't want to remove that file to not break users. + # However, we want to validate the types based on the types inferred from source. + run: | + node --input-type=module <<'EOF' + import { existsSync } from 'node:fs'; + import { opendir, readFile, writeFile } from 'node:fs/promises'; + for await (const dirent of await opendir('./packages/@uppy')) { + if (existsSync(`./packages/@uppy/${dirent.name}/tsconfig.build.json`)) { + const pjsonPath = `./packages/@uppy/${dirent.name}/package.json` + const pjson = JSON.parse(await readFile(pjsonPath)); + delete pjson.types + await writeFile(pjsonPath, JSON.stringify(pjson)) + } + } + EOF - name: Attempt building TS packages run: corepack yarn run build:ts diff --git a/private/js2ts/index.mjs b/private/js2ts/index.mjs index c1071d2ec..77bb7c854 100755 --- a/private/js2ts/index.mjs +++ b/private/js2ts/index.mjs @@ -28,12 +28,14 @@ if (packageJSON.type !== 'module') { const references = Object.keys(packageJSON.dependencies || {}) .concat(Object.keys(packageJSON.peerDependencies || {})) + .concat(Object.keys(packageJSON.devDependencies || {})) .filter((pkg) => pkg.startsWith('@uppy/')) - .map((pkg) => ({ path: `../${pkg.slice('@uppy/'.length)}` })) + .map((pkg) => ({ + path: `../${pkg.slice('@uppy/'.length)}/tsconfig.build.json`, + })) const depsNotYetConvertedToTS = references.filter( - (ref) => - !existsSync(new URL(`${ref.path}/tsconfig.json`, packageRoot)), + (ref) => !existsSync(new URL(ref.path, packageRoot)), ) if (depsNotYetConvertedToTS.length) {