diff --git a/.eslintrc.cjs b/.eslintrc.cjs index 727b2e07d..a4156b6b1 100644 --- a/.eslintrc.cjs +++ b/.eslintrc.cjs @@ -13,10 +13,10 @@ module.exports = { files: ["*.ts", "*.tsx"], excludedFiles: ["*.d.ts"], parser: "@typescript-eslint/parser", - plugins: ["@typescript-eslint/eslint-plugin"], parserOptions: { - project: "./tsconfig.json", + project: ["./tsconfig.json", "./scripts/tsconfig.json"], }, + plugins: ["@typescript-eslint/eslint-plugin"], rules: { "@typescript-eslint/await-thenable": "error", "@typescript-eslint/ban-tslint-comment": "error", diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index f79c285d3..b1343f6cc 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -27,7 +27,7 @@ jobs: - name: Use Node.js uses: actions/setup-node@v3 with: - node-version: "18" + node-version: "22" - name: Enable Corepack run: corepack enable @@ -61,7 +61,7 @@ jobs: - name: Use Node.js uses: actions/setup-node@v3 with: - node-version: "18" + node-version: "22" - name: Enable Corepack run: corepack enable @@ -95,7 +95,7 @@ jobs: - name: Use Node.js uses: actions/setup-node@v3 with: - node-version: "18" + node-version: "22" - name: Enable Corepack run: corepack enable diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index 5f0cc776b..8c51f3c6a 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -31,7 +31,7 @@ jobs: - name: Use Node.js uses: actions/setup-node@v3 with: - node-version: "18" + node-version: "22" - name: Enable Corepack run: corepack enable diff --git a/.github/workflows/update-history.yml b/.github/workflows/update-history.yml index cde529083..c2796cef4 100644 --- a/.github/workflows/update-history.yml +++ b/.github/workflows/update-history.yml @@ -30,7 +30,7 @@ jobs: - name: Use Node.js uses: actions/setup-node@v3 with: - node-version: "18" + node-version: "22" - name: Enable Corepack run: corepack enable diff --git a/package.json b/package.json index 012a434b0..ab3bcb982 100644 --- a/package.json +++ b/package.json @@ -13,10 +13,10 @@ "postinstall": "husky install", "prettier": "prettier --check .", "prettier:fix": "prettier --write .", - "fetch-wayback-machine-history": "node --loader=ts-node/esm ./scripts/fetchWaybackMachineHistory.js", - "generate-assets": "node --loader=ts-node/esm ./scripts/generateAssets.js", - "update-history": "node --loader=ts-node/esm ./scripts/updateHistory.js", - "tsc": "tsc --noEmit", + "fetch-wayback-machine-history": "node --experimental-strip-types ./scripts/fetchWaybackMachineHistory.ts", + "generate-assets": "node --experimental-strip-types ./scripts/generateAssets.ts", + "update-history": "node --experimental-strip-types ./scripts/updateHistory.ts", + "tsc": "tsc --noEmit && cd ./scripts && tsc --noEmit", "test": "yarn lint && yarn prettier && yarn tsc" }, "dependencies": { @@ -59,8 +59,7 @@ "lint-staged": "^14.0.0", "prettier": "^2.0.0", "sass": "^1.45.2", - "ts-node": "^10.9.0", - "typescript": "^4.1.2", + "typescript": "^5.8.3", "vite": "^4.4.0" }, "packageManager": "yarn@4.0.0" diff --git a/scripts/fetchWaybackMachineHistory.ts b/scripts/fetchWaybackMachineHistory.ts index faa35596a..918aaae89 100644 --- a/scripts/fetchWaybackMachineHistory.ts +++ b/scripts/fetchWaybackMachineHistory.ts @@ -2,8 +2,8 @@ import path from "path"; import { promises as fs } from "fs"; -import createAxiosInstance from "./helper/createAxiosInstance.js"; -import { PackageIdentifier, packages } from "../src/PackageDescription.js"; +import createAxiosInstance from "./helper/createAxiosInstance.ts"; +import { packages, type PackageIdentifier } from "../src/PackageDescription.ts"; type WaybackMachineStats = { archived_snapshots?: { diff --git a/scripts/generateAssets.ts b/scripts/generateAssets.ts index 21b75271b..b6e6dc43c 100644 --- a/scripts/generateAssets.ts +++ b/scripts/generateAssets.ts @@ -3,8 +3,8 @@ import semver from "semver"; import { promises as fs } from "fs"; -import createAxiosInstance from "./helper/createAxiosInstance.js"; -import { PackageIdentifier, packages } from "../src/PackageDescription.js"; +import createAxiosInstance from "./helper/createAxiosInstance.ts"; +import { packages, type PackageIdentifier } from "../src/PackageDescription.ts"; type VersionIndex = string; diff --git a/scripts/helper/createAxiosInstance.ts b/scripts/helper/createAxiosInstance.ts index a23ef9666..96726c4c1 100644 --- a/scripts/helper/createAxiosInstance.ts +++ b/scripts/helper/createAxiosInstance.ts @@ -1,11 +1,11 @@ -import axios from "axios"; +import axios, { type AxiosStatic } from "axios"; import rateLimit, { - RateLimitedAxiosInstance, - rateLimitOptions as RateLimitOptions, + type RateLimitedAxiosInstance, + type rateLimitOptions as RateLimitOptions, } from "axios-rate-limit"; import axiosRetry, { isNetworkOrIdempotentRequestError, - IAxiosRetryConfig, + type IAxiosRetryConfig, } from "axios-retry"; /** @@ -36,11 +36,17 @@ export default function createAxiosInstance(): RateLimitedAxiosInstance { maxRPS: 2, }; - const axiosClient = axios.create(); + // @FIXME: Legacy version of axios does not play well with verbatim types + const axiosClient = (axios as unknown as AxiosStatic).create(); axiosClient.defaults.headers.common["User-Agent"] = "React Native Version Tracker"; axiosRetry(axiosClient, axiosRetryConfig); - return rateLimit(axiosClient, axiosRateLimitOptions); + + // @FIXME: Legacy version of axios-rate-limit does not play well with verbatim types + return (rateLimit as unknown as typeof import("axios-rate-limit").default)( + axiosClient, + axiosRateLimitOptions + ); } diff --git a/scripts/tsconfig.json b/scripts/tsconfig.json index a3dc2422d..5fc22ccfd 100644 --- a/scripts/tsconfig.json +++ b/scripts/tsconfig.json @@ -1,9 +1,12 @@ { "extends": "../tsconfig.json", "compilerOptions": { + "allowImportingTsExtensions": true, "lib": ["esnext"], "module": "nodenext", "moduleResolution": "nodenext", - "target": "esnext" - } + "target": "esnext", + "verbatimModuleSyntax": true + }, + "exclude": [] } diff --git a/scripts/updateHistory.ts b/scripts/updateHistory.ts index f6ebf0d37..f1453e918 100644 --- a/scripts/updateHistory.ts +++ b/scripts/updateHistory.ts @@ -4,8 +4,8 @@ import semver from "semver"; import { promises as fs } from "fs"; -import createAxiosInstance from "./helper/createAxiosInstance.js"; -import { PackageIdentifier, packages } from "../src/PackageDescription.js"; +import createAxiosInstance from "./helper/createAxiosInstance.ts"; +import { packages, type PackageIdentifier } from "../src/PackageDescription.ts"; type NpmApiStats = { package: string; @@ -55,7 +55,7 @@ const axiosInstance = createAxiosInstance(); } } - await import("./generateAssets.js"); + await import("./generateAssets.ts"); })(); /** diff --git a/tsconfig.json b/tsconfig.json index c482b91c4..ab158d17e 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -14,5 +14,5 @@ "strictNullChecks": true, "target": "esnext" }, - "exclude": ["build"] + "exclude": ["build", "scripts"] } diff --git a/yarn.lock b/yarn.lock index 157d4f87d..80f008ab4 100644 --- a/yarn.lock +++ b/yarn.lock @@ -183,15 +183,6 @@ __metadata: languageName: node linkType: hard -"@cspotcode/source-map-support@npm:^0.8.0": - version: 0.8.1 - resolution: "@cspotcode/source-map-support@npm:0.8.1" - dependencies: - "@jridgewell/trace-mapping": "npm:0.3.9" - checksum: 05c5368c13b662ee4c122c7bfbe5dc0b613416672a829f3e78bc49a357a197e0218d6e74e7c66cfcd04e15a179acab080bd3c69658c9fbefd0e1ccd950a07fc6 - languageName: node - linkType: hard - "@esbuild/android-arm64@npm:0.18.12": version: 0.18.12 resolution: "@esbuild/android-arm64@npm:0.18.12" @@ -630,30 +621,6 @@ __metadata: languageName: node linkType: hard -"@jridgewell/resolve-uri@npm:^3.0.3": - version: 3.1.1 - resolution: "@jridgewell/resolve-uri@npm:3.1.1" - checksum: 0dbc9e29bc640bbbdc5b9876d2859c69042bfcf1423c1e6421bcca53e826660bff4e41c7d4bcb8dbea696404231a6f902f76ba41835d049e20f2dd6cffb713bf - languageName: node - linkType: hard - -"@jridgewell/sourcemap-codec@npm:^1.4.10": - version: 1.4.15 - resolution: "@jridgewell/sourcemap-codec@npm:1.4.15" - checksum: 0c6b5ae663087558039052a626d2d7ed5208da36cfd707dcc5cea4a07cfc918248403dcb5989a8f7afaf245ce0573b7cc6fd94c4a30453bd10e44d9363940ba5 - languageName: node - linkType: hard - -"@jridgewell/trace-mapping@npm:0.3.9": - version: 0.3.9 - resolution: "@jridgewell/trace-mapping@npm:0.3.9" - dependencies: - "@jridgewell/resolve-uri": "npm:^3.0.3" - "@jridgewell/sourcemap-codec": "npm:^1.4.10" - checksum: fa425b606d7c7ee5bfa6a31a7b050dd5814b4082f318e0e4190f991902181b4330f43f4805db1dd4f2433fd0ed9cc7a7b9c2683f1deeab1df1b0a98b1e24055b - languageName: node - linkType: hard - "@microsoft/load-themed-styles@npm:^1.10.26": version: 1.10.241 resolution: "@microsoft/load-themed-styles@npm:1.10.241" @@ -720,34 +687,6 @@ __metadata: languageName: node linkType: hard -"@tsconfig/node10@npm:^1.0.7": - version: 1.0.8 - resolution: "@tsconfig/node10@npm:1.0.8" - checksum: d400f7b5c02acd74620f892c0f41cea39e7c1b5f7f272ad6f127f4b1fba23346b2d8e30d272731a733675494145f6aa74f9faf050390c034c7c553123ab979b3 - languageName: node - linkType: hard - -"@tsconfig/node12@npm:^1.0.7": - version: 1.0.9 - resolution: "@tsconfig/node12@npm:1.0.9" - checksum: fc1fb68a89d8a641953036d23d95fe68f69f74d37a499db20791b09543ad23afe7ae9ee0840eea92dd470bdcba69eef6f1ed3fe90ba64d763bcd3f738e364597 - languageName: node - linkType: hard - -"@tsconfig/node14@npm:^1.0.0": - version: 1.0.1 - resolution: "@tsconfig/node14@npm:1.0.1" - checksum: abd4e27d9ad712e1e229716a3dbf35d5cbb580d624a82d67414e7606cefd85d502e58800a2ab930d46a428fcfcb199436283b1a88e47d738ca1a5f7fd022ee74 - languageName: node - linkType: hard - -"@tsconfig/node16@npm:^1.0.2": - version: 1.0.2 - resolution: "@tsconfig/node16@npm:1.0.2" - checksum: d402706562444a173d48810d13fdf866c78f1b876ed8962eeac6c7cddf4e29e8aaa06dc28093219e3e9eb6316799cf4d9a7acba62c6a4e215ee0c94d83f9081f - languageName: node - linkType: hard - "@types/d3-array@npm:^3.0.3": version: 3.2.1 resolution: "@types/d3-array@npm:3.2.1" @@ -1002,13 +941,6 @@ __metadata: languageName: node linkType: hard -"acorn-walk@npm:^8.1.1": - version: 8.2.0 - resolution: "acorn-walk@npm:8.2.0" - checksum: dbe92f5b2452c93e960c5594e666dd1fae141b965ff2cb4a1e1d0381e3e4db4274c5ce4ffa3d681a86ca2a8d4e29d5efc0670a08e23fd2800051ea387df56ca2 - languageName: node - linkType: hard - "acorn@npm:^7.4.0": version: 7.4.1 resolution: "acorn@npm:7.4.1" @@ -1018,15 +950,6 @@ __metadata: languageName: node linkType: hard -"acorn@npm:^8.4.1": - version: 8.7.0 - resolution: "acorn@npm:8.7.0" - bin: - acorn: bin/acorn - checksum: 8168e567c2f0b9fb7a418d2651b4b614326a0814b4937ebddee0f5e5e25ddd6320aec0c20d3a67efd97a02d836cc7f9e5c84befe3daeeea68ed89a48ee8f7a5d - languageName: node - linkType: hard - "agent-base@npm:6, agent-base@npm:^6.0.2": version: 6.0.2 resolution: "agent-base@npm:6.0.2" @@ -1163,13 +1086,6 @@ __metadata: languageName: node linkType: hard -"arg@npm:^4.1.0": - version: 4.1.3 - resolution: "arg@npm:4.1.3" - checksum: 070ff801a9d236a6caa647507bdcc7034530604844d64408149a26b9e87c2f97650055c0f049abd1efc024b334635c01f29e0b632b371ac3f26130f4cf65997a - languageName: node - linkType: hard - "argparse@npm:^1.0.7": version: 1.0.10 resolution: "argparse@npm:1.0.10" @@ -1552,13 +1468,6 @@ __metadata: languageName: node linkType: hard -"create-require@npm:^1.1.0": - version: 1.1.1 - resolution: "create-require@npm:1.1.1" - checksum: 157cbc59b2430ae9a90034a5f3a1b398b6738bf510f713edc4d4e45e169bc514d3d99dd34d8d01ca7ae7830b5b8b537e46ae8f3c8f932371b0875c0151d7ec91 - languageName: node - linkType: hard - "cross-spawn@npm:^7.0.0, cross-spawn@npm:^7.0.2, cross-spawn@npm:^7.0.3": version: 7.0.3 resolution: "cross-spawn@npm:7.0.3" @@ -1744,13 +1653,6 @@ __metadata: languageName: node linkType: hard -"diff@npm:^4.0.1": - version: 4.0.2 - resolution: "diff@npm:4.0.2" - checksum: 81b91f9d39c4eaca068eb0c1eb0e4afbdc5bb2941d197f513dd596b820b956fef43485876226d65d497bebc15666aa2aa82c679e84f65d5f2bfbf14ee46e32c1 - languageName: node - linkType: hard - "dir-glob@npm:^3.0.1": version: 3.0.1 resolution: "dir-glob@npm:3.0.1" @@ -3240,13 +3142,6 @@ __metadata: languageName: node linkType: hard -"make-error@npm:^1.1.1": - version: 1.3.6 - resolution: "make-error@npm:1.3.6" - checksum: 171e458d86854c6b3fc46610cfacf0b45149ba043782558c6875d9f42f222124384ad0b468c92e996d815a8a2003817a710c0a160e49c1c394626f76fa45396f - languageName: node - linkType: hard - "make-fetch-happen@npm:^11.0.3": version: 11.1.1 resolution: "make-fetch-happen@npm:11.1.1" @@ -4118,8 +4013,7 @@ __metadata: sass: "npm:^1.45.2" seedrandom: "npm:^3.0.5" semver: "npm:^7.3.5" - ts-node: "npm:^10.9.0" - typescript: "npm:^4.1.2" + typescript: "npm:^5.8.3" vite: "npm:^4.4.0" languageName: unknown linkType: soft @@ -4546,44 +4440,6 @@ __metadata: languageName: node linkType: hard -"ts-node@npm:^10.9.0": - version: 10.9.1 - resolution: "ts-node@npm:10.9.1" - dependencies: - "@cspotcode/source-map-support": "npm:^0.8.0" - "@tsconfig/node10": "npm:^1.0.7" - "@tsconfig/node12": "npm:^1.0.7" - "@tsconfig/node14": "npm:^1.0.0" - "@tsconfig/node16": "npm:^1.0.2" - acorn: "npm:^8.4.1" - acorn-walk: "npm:^8.1.1" - arg: "npm:^4.1.0" - create-require: "npm:^1.1.0" - diff: "npm:^4.0.1" - make-error: "npm:^1.1.1" - v8-compile-cache-lib: "npm:^3.0.1" - yn: "npm:3.1.1" - peerDependencies: - "@swc/core": ">=1.2.50" - "@swc/wasm": ">=1.2.50" - "@types/node": "*" - typescript: ">=2.7" - peerDependenciesMeta: - "@swc/core": - optional: true - "@swc/wasm": - optional: true - bin: - ts-node: dist/bin.js - ts-node-cwd: dist/bin-cwd.js - ts-node-esm: dist/bin-esm.js - ts-node-script: dist/bin-script.js - ts-node-transpile-only: dist/bin-transpile.js - ts-script: dist/bin-script-deprecated.js - checksum: 95187932fb83f3901e22546bd2feeac7d2feb4f412f42ac3a595f049a23e8dcf70516dffb51866391228ea2dbcfaea039e250fb2bb334d48a86ab2b6aea0ae2d - languageName: node - linkType: hard - "tsconfig-paths@npm:^3.12.0": version: 3.12.0 resolution: "tsconfig-paths@npm:3.12.0" @@ -4644,23 +4500,23 @@ __metadata: languageName: node linkType: hard -"typescript@npm:^4.1.2": - version: 4.5.4 - resolution: "typescript@npm:4.5.4" +"typescript@npm:^5.8.3": + version: 5.8.3 + resolution: "typescript@npm:5.8.3" bin: tsc: bin/tsc tsserver: bin/tsserver - checksum: 4dccd6947e632cc0070653788a3a81051825e9a7acd4c3586124e5a145148bb57b0a401b81d220ac1eb7742a29d5d22fd35af033f839daa60738c3e4fecb5850 + checksum: 5f8bb01196e542e64d44db3d16ee0e4063ce4f3e3966df6005f2588e86d91c03e1fb131c2581baf0fb65ee79669eea6e161cd448178986587e9f6844446dbb48 languageName: node linkType: hard -"typescript@patch:typescript@npm%3A^4.1.2#optional!builtin": - version: 4.5.4 - resolution: "typescript@patch:typescript@npm%3A4.5.4#optional!builtin::version=4.5.4&hash=bcec9a" +"typescript@patch:typescript@npm%3A^5.8.3#optional!builtin": + version: 5.8.3 + resolution: "typescript@patch:typescript@npm%3A5.8.3#optional!builtin::version=5.8.3&hash=29ae49" bin: tsc: bin/tsc tsserver: bin/tsserver - checksum: 6fe78f9bd67a8f509a41c5ff8ab3d5ecf9175612838788b21c4ad1f715add24e4d29d0a00c797689fd88929271ffb3dcfdc97d5dafa3539d1e83fc1999ad9d1f + checksum: 92ea03509e06598948559ddcdd8a4ae5a7ab475766d5589f1b796f5731b3d631a4c7ddfb86a3bd44d58d10102b132cd4b4994dda9b63e6273c66d77d6a271dbd languageName: node linkType: hard @@ -4710,13 +4566,6 @@ __metadata: languageName: node linkType: hard -"v8-compile-cache-lib@npm:^3.0.1": - version: 3.0.1 - resolution: "v8-compile-cache-lib@npm:3.0.1" - checksum: bdc36fb8095d3b41df197f5fb6f11e3a26adf4059df3213e3baa93810d8f0cc76f9a74aaefc18b73e91fe7e19154ed6f134eda6fded2e0f1c8d2272ed2d2d391 - languageName: node - linkType: hard - "v8-compile-cache@npm:^2.0.3": version: 2.3.0 resolution: "v8-compile-cache@npm:2.3.0" @@ -4868,10 +4717,3 @@ __metadata: checksum: ed4c21a907fb1cd60a25177612fa46d95064a144623d269199817908475fe85bef20fb17406e3bdc175351b6488056a6f84beb7836e8c262646546a0220188e3 languageName: node linkType: hard - -"yn@npm:3.1.1": - version: 3.1.1 - resolution: "yn@npm:3.1.1" - checksum: 0732468dd7622ed8a274f640f191f3eaf1f39d5349a1b72836df484998d7d9807fbea094e2f5486d6b0cd2414aad5775972df0e68f8604db89a239f0f4bf7443 - languageName: node - linkType: hard