From 222b427ec3a2c37553d99067a46f9972f6468223 Mon Sep 17 00:00:00 2001 From: Antoine du Hamel Date: Fri, 20 Oct 2023 14:15:46 +0200 Subject: [PATCH] meta: fix TS integration (#4741) --- .github/workflows/ci.yml | 17 +++++++++++++++++ private/js2ts/index.mjs | 8 +++++--- 2 files changed, 22 insertions(+), 3 deletions(-) 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) {