diff --git a/.circleci/config.yml b/.circleci/config.yml index 81f0044a45..bf1b3bdb46 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -111,7 +111,7 @@ jobs: shell: bash.exe steps: - install - - run: export WINDOWS_CODESIGN_FILE=$(node ./tools/add-windows-cert.js) + - run: export WINDOWS_CODESIGN_FILE=$(ts-node ./tools/add-windows-cert.ts) - run: npx yarn run publish --arch=<< parameters.arch >> --dry-run - store_artifacts: path: out diff --git a/forge.config.js b/forge.config.ts similarity index 88% rename from forge.config.js rename to forge.config.ts index cc6b1a9512..4ef1aad0b4 100644 --- a/forge.config.js +++ b/forge.config.ts @@ -1,9 +1,13 @@ -const fs = require('fs'); -const path = require('path'); +import * as fs from 'node:fs'; +import * as path from 'node:path'; -const packageJson = require('./package.json'); -const { maybeFetchContributors } = require('./tools/contributors'); -const { populateReleases } = require('./tools/fetch-releases'); +import type { ForgeConfig } from '@electron-forge/shared-types'; + +import packageJson from './package.json'; +import { maybeFetchContributors } from './tools/contributors'; +import { populateReleases } from './tools/fetch-releases'; +import { mainConfig } from './tools/webpack/webpack.main.config'; +import { rendererConfig } from './tools/webpack/webpack.renderer.config'; const { version } = packageJson; const iconDir = path.resolve(__dirname, 'assets', 'icons'); @@ -27,7 +31,7 @@ const commonLinuxConfig = { mimeType: ['x-scheme-handler/electron-fiddle'], }; -const config = { +const config: ForgeConfig = { hooks: { generateAssets: async () => { await Promise.all([populateReleases(), maybeFetchContributors(true)]); @@ -45,10 +49,10 @@ const config = { liveReload: false, hot: 'only', }, - mainConfig: path.join(root, 'tools/webpack/webpack.main.config.js'), + mainConfig: mainConfig, renderer: { nodeIntegration: true, - config: path.join(root, 'tools/webpack/webpack.renderer.config.js'), + config: rendererConfig, entryPoints: [ { html: path.join(root, './static/index.html'), @@ -108,7 +112,7 @@ const config = { { name: '@electron-forge/maker-squirrel', platforms: ['win32'], - config: (arch) => ({ + config: (arch: string) => ({ name: 'electron-fiddle', authors: 'Electron Community', exe: 'electron-fiddle.exe', @@ -125,6 +129,7 @@ const config = { { name: '@electron-forge/maker-zip', platforms: ['darwin'], + config: {}, }, { name: '@electron-forge/maker-deb', @@ -178,7 +183,8 @@ function notarizeMaybe() { return; } - config.packagerConfig.osxNotarize = { + // TODO: appBundleId is not being accepted for typing + (config.packagerConfig!.osxNotarize as any) = { appBundleId: 'com.electron.fiddle', appleId: process.env.APPLE_ID, appleIdPassword: process.env.APPLE_ID_PASSWORD, @@ -189,4 +195,4 @@ function notarizeMaybe() { notarizeMaybe(); // Finally, export it -module.exports = config; +export default config; diff --git a/package.json b/package.json index 7b257990b9..f4ea3fbb59 100644 --- a/package.json +++ b/package.json @@ -7,7 +7,7 @@ "homepage": "https://electronjs.org/fiddle", "main": "./.webpack/main", "scripts": { - "contributors": "node ./tools/contributors.js", + "contributors": "ts-node ./tools/contributors.ts", "lint:style": "stylelint \"./src/less/*.less\"", "lint:ts": "eslint \"./**/*.{ts,tsx}\"", "lint:js": "eslint \"./**/*.js\"", @@ -24,7 +24,7 @@ "test:ci": "jest --ci --config=jest.json --coverage --runInBand --reporters=jest-junit", "test:report": "jest --config=jest.json --json --bail=false --outputFile=report.json | true", "tsc": "tsc --noEmit -p .", - "electron-releases": "node --unhandled-rejections=strict ./tools/fetch-releases.js", + "electron-releases": "node --unhandled-rejections=strict -r ts-node/register ./tools/fetch-releases.ts", "postinstall": "husky install && npm run electron-releases" }, "keywords": [ @@ -35,7 +35,7 @@ "author": "Felix Rieseberg ", "license": "MIT", "config": { - "forge": "./forge.config.js" + "forge": "./forge.config.ts" }, "dependencies": { "@blueprintjs/core": "^3.36.0", @@ -144,6 +144,7 @@ "terser-webpack-plugin": "^5.3.3", "ts-jest": "^29.1.1", "ts-loader": "^9.4.4", + "ts-node": "^10.9.1", "typescript": "^5.1.6", "webpack": "^5.69.1" }, diff --git a/tools/add-windows-cert.js b/tools/add-windows-cert.ts similarity index 91% rename from tools/add-windows-cert.js rename to tools/add-windows-cert.ts index 86129b604e..79babc75b7 100644 --- a/tools/add-windows-cert.js +++ b/tools/add-windows-cert.ts @@ -1,5 +1,5 @@ -import * as os from 'os'; -import * as path from 'path'; +import * as os from 'node:os'; +import * as path from 'node:path'; import * as fs from 'fs-extra'; diff --git a/tools/contributors.js b/tools/contributors.ts similarity index 71% rename from tools/contributors.js rename to tools/contributors.ts index f8a52c3eb5..c20b80f27b 100644 --- a/tools/contributors.js +++ b/tools/contributors.ts @@ -1,9 +1,9 @@ -const path = require('path'); -const util = require('util'); +import * as path from 'node:path'; +import * as util from 'node:util'; -const fetch = require('cross-fetch'); -const fs = require('fs-extra'); -const logSymbols = require('log-symbols'); +import fetch from 'cross-fetch'; +import fs from 'fs-extra'; +import logSymbols from 'log-symbols'; const { GITHUB_TOKEN, GH_TOKEN } = process.env; const CONTRIBUTORS_FILE_PATH = path.join( @@ -12,14 +12,33 @@ const CONTRIBUTORS_FILE_PATH = path.join( ); const CONTRIBUTORS_URL = 'https://api.github.com/repos/electron/fiddle/contributors?per_page=100'; -const HEADERS = +const HEADERS: Record = GITHUB_TOKEN || GH_TOKEN ? { Authorization: `Bearer ${GITHUB_TOKEN || GH_TOKEN}`, } : {}; -async function maybeFetchContributors(silent) { +interface GitHubContributorInfo { + html_url: string; + url: string; + login: string; + avatar_url: string; + type: string; + contributions: number; +} + +interface ContributorInfo { + url: string; + api: string; + login: string; + avatar: string; + name: string; + bio: string; + location: string; +} + +export async function maybeFetchContributors(silent?: boolean): Promise { try { const stats = fs.statSync(CONTRIBUTORS_FILE_PATH); const mtime = new Date(util.inspect(stats.mtime)); @@ -66,9 +85,10 @@ async function maybeFetchContributors(silent) { * Fetch the name for a contributor * * @param contributor - Contributor object - * @returns {Promise} */ -function fetchDetailsContributor(contributor) { +function fetchDetailsContributor(contributor: { + api: string; +}): Promise { return fetch(contributor.api, { headers: HEADERS }).then((response) => response.json(), ); @@ -78,41 +98,38 @@ function fetchDetailsContributor(contributor) { * Fetch the names for an array of contributors * * @param contributors - Array of contributor - * @returns {Promise} */ -function fetchDetailsContributors(contributors) { - return new Promise((resolve) => { - const withDetails = contributors; - const promises = []; - - contributors.forEach((contributor, i) => { - const detailFetcher = fetchDetailsContributor(contributor).then( - ({ name, bio, location }) => { - withDetails[i].name = name; - withDetails[i].bio = bio; - withDetails[i].location = location; - }, - ); - - promises.push(detailFetcher); - }); +async function fetchDetailsContributors( + contributors: Pick[], +) { + const withDetails = contributors as ContributorInfo[]; + const promises: Promise[] = []; + + contributors.forEach((contributor, i) => { + const detailFetcher = fetchDetailsContributor(contributor).then( + ({ name, bio, location }) => { + withDetails[i].name = name; + withDetails[i].bio = bio; + withDetails[i].location = location; + }, + ); - Promise.all(promises).then(() => resolve(withDetails)); + promises.push(detailFetcher); }); + + await Promise.all(promises); + return withDetails; } -/** - * (description) - * - * @export - * @returns {Promise} - */ function fetchContributors() { - const contributors = []; + const contributors: Pick< + ContributorInfo, + 'url' | 'api' | 'login' | 'avatar' + >[] = []; return fetch(CONTRIBUTORS_URL, { headers: HEADERS }) .then((response) => response.json()) - .then(async (data) => { + .then(async (data: GitHubContributorInfo[]) => { if (data && data.forEach) { data.forEach( ({ html_url, url, login, avatar_url, type, contributions }) => { @@ -140,7 +157,7 @@ function fetchContributors() { * Fetch the contributors and write the result to disk */ async function fetchAndWriteContributorsFile() { - await new Promise((resolve) => { + await new Promise((resolve) => { fs.access( CONTRIBUTORS_FILE_PATH, fs.constants.F_OK | fs.constants.R_OK | fs.constants.W_OK, @@ -151,7 +168,7 @@ async function fetchAndWriteContributorsFile() { } console.log(logSymbols.info, 'Fetching contributors'); - let data; + let data: ContributorInfo[]; try { data = await fetchContributors(); @@ -178,10 +195,6 @@ async function fetchAndWriteContributorsFile() { }); } -module.exports = { - maybeFetchContributors, -}; - if (require.main === module) { (async () => { await maybeFetchContributors(); diff --git a/tools/fetch-releases.js b/tools/fetch-releases.ts similarity index 77% rename from tools/fetch-releases.js rename to tools/fetch-releases.ts index 8cdb6352bb..384f37926b 100644 --- a/tools/fetch-releases.js +++ b/tools/fetch-releases.ts @@ -1,11 +1,11 @@ -const path = require('path'); +import * as path from 'node:path'; -const { ElectronVersions } = require('@electron/fiddle-core'); -const fs = require('fs-extra'); +import { ElectronVersions } from '@electron/fiddle-core'; +import fs from 'fs-extra'; const file = path.join(__dirname, '..', 'static', 'releases.json'); -async function populateReleases() { +export async function populateReleases() { const elves = await ElectronVersions.create(undefined, { ignoreCache: true }); const releases = elves.versions.map(({ version }) => elves.getReleaseInfo(version), @@ -26,10 +26,6 @@ async function populateReleases() { } } -module.exports = { - populateReleases, -}; - if (require.main === module) { (async () => { await populateReleases(); diff --git a/tools/webpack/common/webpack.plugins.js b/tools/webpack/common/webpack.plugins.js deleted file mode 100644 index aedb170747..0000000000 --- a/tools/webpack/common/webpack.plugins.js +++ /dev/null @@ -1,11 +0,0 @@ -const ForkTsCheckerWebpackPlugin = require('fork-ts-checker-webpack-plugin'); -const webpack = require('webpack'); - -module.exports = [ - new ForkTsCheckerWebpackPlugin({ - logger: 'webpack-infrastructure', - }), - new webpack.ProvidePlugin({ - __importStar: ['tslib', '__importStar'], - }), -]; diff --git a/tools/webpack/common/webpack.plugins.ts b/tools/webpack/common/webpack.plugins.ts new file mode 100644 index 0000000000..5746d24a0b --- /dev/null +++ b/tools/webpack/common/webpack.plugins.ts @@ -0,0 +1,14 @@ +import type IForkTsCheckerWebpackPlugin from 'fork-ts-checker-webpack-plugin'; +import { ProvidePlugin } from 'webpack'; + +// eslint-disable-next-line @typescript-eslint/no-var-requires +const ForkTsCheckerWebpackPlugin: typeof IForkTsCheckerWebpackPlugin = require('fork-ts-checker-webpack-plugin'); + +export const plugins = [ + new ForkTsCheckerWebpackPlugin({ + logger: 'webpack-infrastructure', + }), + new ProvidePlugin({ + __importStar: ['tslib', '__importStar'], + }), +]; diff --git a/tools/webpack/common/webpack.rules.js b/tools/webpack/common/webpack.rules.ts similarity index 86% rename from tools/webpack/common/webpack.rules.js rename to tools/webpack/common/webpack.rules.ts index 174b3205d2..73dc119ab2 100644 --- a/tools/webpack/common/webpack.rules.js +++ b/tools/webpack/common/webpack.rules.ts @@ -1,4 +1,6 @@ -module.exports = [ +import type { ModuleOptions } from 'webpack'; + +export const rules: Required['rules'] = [ // Add support for native node modules { // We're specifying native_modules in the test because the asset relocator loader generates a diff --git a/tools/webpack/webpack.main.config.js b/tools/webpack/webpack.main.config.ts similarity index 76% rename from tools/webpack/webpack.main.config.js rename to tools/webpack/webpack.main.config.ts index 4f1e30298e..966a5ab27c 100644 --- a/tools/webpack/webpack.main.config.js +++ b/tools/webpack/webpack.main.config.ts @@ -1,10 +1,11 @@ -const CopyPlugin = require('copy-webpack-plugin'); -const TerserPlugin = require('terser-webpack-plugin'); +import CopyPlugin from 'copy-webpack-plugin'; +import TerserPlugin from 'terser-webpack-plugin'; +import type { Configuration } from 'webpack'; -const plugins = require('./common/webpack.plugins'); -const rules = require('./common/webpack.rules'); +import { plugins } from './common/webpack.plugins'; +import { rules } from './common/webpack.rules'; -module.exports = { +export const mainConfig: Configuration = { /** * This is the main entry point for your application, it's the first file * that runs in the main process. diff --git a/tools/webpack/webpack.renderer.config.js b/tools/webpack/webpack.renderer.config.ts similarity index 85% rename from tools/webpack/webpack.renderer.config.js rename to tools/webpack/webpack.renderer.config.ts index 81c2cb19cd..8518e4a850 100644 --- a/tools/webpack/webpack.renderer.config.js +++ b/tools/webpack/webpack.renderer.config.ts @@ -1,10 +1,11 @@ -const MiniCssExtractPlugin = require('mini-css-extract-plugin'); -const MonacoWebpackPlugin = require('monaco-editor-webpack-plugin'); +import MiniCssExtractPlugin from 'mini-css-extract-plugin'; +import MonacoWebpackPlugin from 'monaco-editor-webpack-plugin'; +import type { Configuration } from 'webpack'; -const plugins = require('./common/webpack.plugins'); -const rules = require('./common/webpack.rules'); +import { plugins } from './common/webpack.plugins'; +import { rules } from './common/webpack.rules'; -module.exports = { +export const rendererConfig: Configuration = { module: { rules: [ ...rules, diff --git a/yarn.lock b/yarn.lock index ebb19e8790..a58bc1da26 100644 --- a/yarn.lock +++ b/yarn.lock @@ -884,6 +884,13 @@ classnames "^2.2" tslib "~1.13.0" +"@cspotcode/source-map-support@^0.8.0": + version "0.8.1" + resolved "https://registry.yarnpkg.com/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz#00629c35a688e05a88b1cda684fb9d5e73f000a1" + integrity sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw== + dependencies: + "@jridgewell/trace-mapping" "0.3.9" + "@csstools/css-parser-algorithms@^2.3.0": version "2.3.0" resolved "https://registry.yarnpkg.com/@csstools/css-parser-algorithms/-/css-parser-algorithms-2.3.0.tgz#0cc3a656dc2d638370ecf6f98358973bfbd00141" @@ -1572,6 +1579,11 @@ resolved "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz" integrity sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w== +"@jridgewell/resolve-uri@^3.0.3": + version "3.1.1" + resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz#c08679063f279615a3326583ba3a90d1d82cc721" + integrity sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA== + "@jridgewell/set-array@^1.0.0": version "1.1.0" resolved "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.0.tgz" @@ -1595,6 +1607,14 @@ resolved "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz" integrity sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw== +"@jridgewell/trace-mapping@0.3.9": + version "0.3.9" + resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz#6534fd5933a53ba7cbf3a17615e273a0d1273ff9" + integrity sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ== + dependencies: + "@jridgewell/resolve-uri" "^3.0.3" + "@jridgewell/sourcemap-codec" "^1.4.10" + "@jridgewell/trace-mapping@^0.3.12", "@jridgewell/trace-mapping@^0.3.15", "@jridgewell/trace-mapping@^0.3.17": version "0.3.18" resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.18.tgz#25783b2086daf6ff1dcb53c9249ae480e4dd4cd6" @@ -2078,6 +2098,26 @@ resolved "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz" integrity sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A== +"@tsconfig/node10@^1.0.7": + version "1.0.9" + resolved "https://registry.yarnpkg.com/@tsconfig/node10/-/node10-1.0.9.tgz#df4907fc07a886922637b15e02d4cebc4c0021b2" + integrity sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA== + +"@tsconfig/node12@^1.0.7": + version "1.0.11" + resolved "https://registry.yarnpkg.com/@tsconfig/node12/-/node12-1.0.11.tgz#ee3def1f27d9ed66dac6e46a295cffb0152e058d" + integrity sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag== + +"@tsconfig/node14@^1.0.0": + version "1.0.3" + resolved "https://registry.yarnpkg.com/@tsconfig/node14/-/node14-1.0.3.tgz#e4386316284f00b98435bf40f72f75a09dabf6c1" + integrity sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow== + +"@tsconfig/node16@^1.0.2": + version "1.0.4" + resolved "https://registry.yarnpkg.com/@tsconfig/node16/-/node16-1.0.4.tgz#0b92dcc0cc1c81f6f306a381f28e31b1a56536e9" + integrity sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA== + "@types/aria-query@^4.2.0": version "4.2.2" resolved "https://registry.npmjs.org/@types/aria-query/-/aria-query-4.2.2.tgz" @@ -2886,7 +2926,7 @@ acorn-jsx@^5.3.1, acorn-jsx@^5.3.2: resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== -acorn-walk@^8.0.2: +acorn-walk@^8.0.2, acorn-walk@^8.1.1: version "8.2.0" resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.2.0.tgz#741210f2e2426454508853a2f44d0ab83b7f69c1" integrity sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA== @@ -2901,16 +2941,16 @@ acorn@^8.1.0, acorn@^8.8.1: resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.9.0.tgz#78a16e3b2bcc198c10822786fa6679e245db5b59" integrity sha512-jaVNAFBHNLXspO543WnNNPZFRtavh3skAkITqD0/2aeMkKZTN+254PyhwxFYrk3vQ1xfY+2wbesJMs/JC8/PwQ== +acorn@^8.4.1, acorn@^8.9.0: + version "8.10.0" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.10.0.tgz#8be5b3907a67221a81ab23c7889c4c5526b62ec5" + integrity sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw== + acorn@^8.5.0, acorn@^8.7.1: version "8.8.2" resolved "https://registry.npmjs.org/acorn/-/acorn-8.8.2.tgz" integrity sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw== -acorn@^8.9.0: - version "8.10.0" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.10.0.tgz#8be5b3907a67221a81ab23c7889c4c5526b62ec5" - integrity sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw== - adjust-sourcemap-loader@^4.0.0: version "4.0.0" resolved "https://registry.npmjs.org/adjust-sourcemap-loader/-/adjust-sourcemap-loader-4.0.0.tgz" @@ -3102,6 +3142,11 @@ are-we-there-yet@^3.0.0: delegates "^1.0.0" readable-stream "^3.6.0" +arg@^4.1.0: + version "4.1.3" + resolved "https://registry.yarnpkg.com/arg/-/arg-4.1.3.tgz#269fc7ad5b8e42cb63c896d5666017261c144089" + integrity sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA== + argparse@^1.0.7: version "1.0.10" resolved "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz" @@ -4073,6 +4118,11 @@ cosmiconfig@^8.2.0: parse-json "^5.0.0" path-type "^4.0.0" +create-require@^1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/create-require/-/create-require-1.1.1.tgz#c1d7e8f1e5f6cfc9ff65f9cd352d37348756c333" + integrity sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ== + cross-fetch@^3.1.0: version "3.1.5" resolved "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.5.tgz" @@ -4461,6 +4511,11 @@ diff-sequences@^29.4.3: resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-29.4.3.tgz#9314bc1fabe09267ffeca9cbafc457d8499a13f2" integrity sha512-ofrBgwpPhCD85kMKtE9RYFFq6OC1A89oW2vvgWZNCwxrUpRUILopY7lsYyMDSjc8g6U6aiO0Qubg6r4Wgt5ZnA== +diff@^4.0.1: + version "4.0.2" + resolved "https://registry.yarnpkg.com/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d" + integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A== + diff@^5.0.0: version "5.1.0" resolved "https://registry.yarnpkg.com/diff/-/diff-5.1.0.tgz#bc52d298c5ea8df9194800224445ed43ffc87e40" @@ -8155,7 +8210,7 @@ make-dir@^3.0.0: dependencies: semver "^6.0.0" -make-error@1.x: +make-error@1.x, make-error@^1.1.1: version "1.3.6" resolved "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz" integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw== @@ -11543,6 +11598,25 @@ ts-loader@^9.4.4: micromatch "^4.0.0" semver "^7.3.4" +ts-node@^10.9.1: + version "10.9.1" + resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-10.9.1.tgz#e73de9102958af9e1f0b168a6ff320e25adcff4b" + integrity sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw== + dependencies: + "@cspotcode/source-map-support" "^0.8.0" + "@tsconfig/node10" "^1.0.7" + "@tsconfig/node12" "^1.0.7" + "@tsconfig/node14" "^1.0.0" + "@tsconfig/node16" "^1.0.2" + acorn "^8.4.1" + acorn-walk "^8.1.1" + arg "^4.1.0" + create-require "^1.1.0" + diff "^4.0.1" + make-error "^1.1.1" + v8-compile-cache-lib "^3.0.1" + yn "3.1.1" + tsconfig-paths@^3.11.0: version "3.14.2" resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-3.14.2.tgz#6e32f1f79412decd261f92d633a9dc1cfa99f088" @@ -11868,6 +11942,11 @@ uvu@^0.5.0: kleur "^4.0.3" sade "^1.7.3" +v8-compile-cache-lib@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz#6336e8d71965cb3d35a1bbb7868445a7c05264bf" + integrity sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg== + v8-compile-cache@^2.0.3: version "2.3.0" resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz#2de19618c66dc247dcfb6f99338035d8245a2cee" @@ -12413,6 +12492,11 @@ yauzl@^2.10.0: buffer-crc32 "~0.2.3" fd-slicer "~1.1.0" +yn@3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/yn/-/yn-3.1.1.tgz#1e87401a09d767c1d5eab26a6e4c185182d2eb50" + integrity sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q== + yocto-queue@^0.1.0: version "0.1.0" resolved "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz"