diff --git a/.babelrc b/.babelrc index b673c93c21..e1a285cc8f 100644 --- a/.babelrc +++ b/.babelrc @@ -1,7 +1,8 @@ { "plugins": [ "@babel/plugin-transform-modules-commonjs", - "@babel/plugin-transform-flow-strip-types" + "@babel/plugin-transform-flow-strip-types", + "@babel/plugin-syntax-import-attributes" ], "sourceMaps": "inline" } diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 030ff0a798..722e24a8b3 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -30,11 +30,11 @@ To load the extension into your browser, see [Loading RES into your browser](#lo #### Build commands -**`yarn start [--browsers=]`** will clean `dist/`, then build RES (dev mode), and start a watch task that will rebuild RES when you make changes. Only changed files will be rebuilt. +**`yarn start [--browsers ]`** will clean `dist/`, then build RES (dev mode), and start a watch task that will rebuild RES when you make changes. Only changed files will be rebuilt. -**`yarn once [--browsers=]`** will clean `dist/`, then build RES (dev mode) a single time. +**`yarn once [--browsers ]`** will clean `dist/`, then build RES (dev mode) a single time. -**`yarn build [--browsers=]`** will clean `dist/`, then build RES (release mode). Each build output will be compressed to a .zip file in `dist/zip/`. +**`yarn build [--browsers ]`** will clean `dist/`, then build RES (release mode). Each build output will be compressed to a .zip file in `dist/zip/`. `` is a comma-separated list of browsers to target, e.g. `chrome,firefox`. `all` will build all targets. By default, `chrome` will be targeted. @@ -95,7 +95,7 @@ The default host and port (`localhost` and `4444`) should work for most local in - `locales`: RES i18n translations - `tests/`: integration tests - `package.json`: package info, dependencies - - `build.mjs`: build script + - `build.js`: build script ## Adding new files diff --git a/build.mjs b/build.js similarity index 78% rename from build.mjs rename to build.js index 05ccecc65e..e22c199aa8 100644 --- a/build.mjs +++ b/build.js @@ -1,17 +1,17 @@ -/* @flow */ -/* eslint import/no-nodejs-modules: 0 */ +/* @noflow */ +/* eslint import/no-nodejs-modules: 0, import/extensions: 0 */ -// $FlowIssue import fs from 'node:fs'; -// $FlowIssue import path from 'node:path'; import * as commander from 'commander'; +import * as esbuild from 'esbuild'; import * as semver from 'semver'; import JSZip from 'jszip'; -import * as esbuild from 'esbuild'; -import { copy } from 'esbuild-plugin-copy'; import flow from 'esbuild-plugin-flow'; +import { copy } from 'esbuild-plugin-copy'; import { sassPlugin } from 'esbuild-sass-plugin'; +import isBetaVersion from './build/isBetaVersion.js'; +import packageInfo from './package.json' with { type: 'json' }; const targets = { chrome: { @@ -25,12 +25,12 @@ const targets = { manifest: './chrome/beta/manifest.json', }, edge: { - browserName: 'chrome', + browserName: 'edge', browserMinVersion: '114.0', manifest: './chrome/manifest.json', }, opera: { - browserName: 'chrome', + browserName: 'opera', browserMinVersion: '114.0', manifest: './chrome/manifest.json', noSourcemap: true, @@ -53,29 +53,27 @@ const options = commander.program const isProduction = options.mode === 'production'; const devBuildToken = `${Math.random()}`.slice(2); +const announcementsSubreddit /*: string */ = 'RESAnnouncements'; +const name /*: string */ = packageInfo.title; +const author /*: string */ = packageInfo.author; +const description /*: string */ = packageInfo.description; +const version /*: string */ = packageInfo.version; +const isBeta /*: boolean */ = isBetaVersion(version); +const isPatch /*: boolean */ = semver.patch(version) !== 0; +const isMinor /*: boolean */ = !isPatch && semver.minor(version) !== 0; +const isMajor /*: boolean */ = !isPatch && !isMinor && semver.major(version) !== 0; +const updatedURL /*: string */ = isBeta ? +// link to the release listing page instead of a specific release page +// so if someone goes from the previous version to a hotfix (e.g. 5.10.3 -> 5.12.1) +// they see the big release notes for the minor release in addition to the changes in the hotfix + `https://redditenhancementsuite.com/releases/beta/#v${version}` : + `https://redditenhancementsuite.com/releases/#v${version}`; +const homepageURL /*: string */ = packageInfo.homepage; +// used for invalidating caches on each build (executed at build time) +// production builds uses version number to keep the build reproducible +const buildToken = isProduction ? version : devBuildToken; async function buildForBrowser(targetName, { manifest, noSourceMap, browserName, browserMinVersion }) { - const packageInfo = await fs.promises.readFile('./package.json').then(JSON.parse); - const announcementsSubreddit /*: string */ = 'RESAnnouncements'; - const name /*: string */ = packageInfo.title; - const author /*: string */ = packageInfo.author; - const description /*: string */ = packageInfo.description; - const version /*: string */ = packageInfo.version; - const isBeta /*: boolean */ = (semver.minor(version) % 2) === 1; - const isPatch /*: boolean */ = semver.patch(version) !== 0; - const isMinor /*: boolean */ = !isPatch && semver.minor(version) !== 0; - const isMajor /*: boolean */ = !isPatch && !isMinor && semver.major(version) !== 0; - const updatedURL /*: string */ = isBeta ? - // link to the release listing page instead of a specific release page - // so if someone goes from the previous version to a hotfix (e.g. 5.10.3 -> 5.12.1) - // they see the big release notes for the minor release in addition to the changes in the hotfix - `https://redditenhancementsuite.com/releases/beta/#v${version}` : - `https://redditenhancementsuite.com/releases/#v${version}`; - const homepageURL /*: string */ = packageInfo.homepage; - // used for invalidating caches on each build (executed at build time) - // production builds uses version number to keep the build reproducible - const buildToken = isProduction ? version : devBuildToken; - const context = { entryPoints: { 'foreground.entry': './lib/foreground.entry.js', diff --git a/build/deploy.js b/build/deploy.js index b6ad3c59e2..a5b4d3d971 100644 --- a/build/deploy.js +++ b/build/deploy.js @@ -1,13 +1,15 @@ /* @noflow */ -/* eslint-disable import/no-commonjs, import/no-nodejs-modules */ +/* eslint import/no-nodejs-modules: 0, import/extensions: 0 */ -const fs = require('fs'); // eslint-disable-line import/no-extraneous-dependencies -const path = require('path'); // eslint-disable-line import/no-extraneous-dependencies -const chromeDeploy = require('chrome-extension-deploy'); -const firefoxDeploy = require('firefox-extension-deploy'); -const { version } = require('../package.json'); -const isBetaVersion = require('./isBetaVersion'); +import fs from 'node:fs'; +import path from 'node:path'; +import chromeDeploy from 'chrome-extension-deploy'; +import firefoxDeploy from 'firefox-extension-deploy'; +import packageInfo from '../package.json' with { type: 'json' }; +import isBetaVersion from './isBetaVersion.js'; + +const version = packageInfo.version; if (isBetaVersion(version)) { console.log(`Deploying ${version} beta release...`); @@ -29,7 +31,7 @@ function deployChromeBeta() { clientSecret: process.env.CHROME_CLIENT_SECRET, refreshToken: process.env.CHROME_REFRESH_TOKEN, id: 'flhpapomijliefifkkeepedibpmibbpo', - zip: fs.readFileSync(path.join(__dirname, '../dist/zip/chrome-beta.zip')), + zip: fs.readFileSync(path.join(import.meta.dirname, '../dist/zip/chromebeta.zip')), to: chromeDeploy.TRUSTED_TESTERS, }).then(() => { console.log('Chrome beta deployment complete!'); @@ -47,7 +49,7 @@ function deployChromeStable() { clientSecret: process.env.CHROME_CLIENT_SECRET, refreshToken: process.env.CHROME_REFRESH_TOKEN, id: 'kbmfpngjjgdllneeigpgjifpgocmfgmb', - zip: fs.readFileSync(path.join(__dirname, '../dist/zip/chrome.zip')), + zip: fs.readFileSync(path.join(import.meta.dirname, '../dist/zip/chrome.zip')), }).then(() => { console.log('Chrome stable deployment complete!'); }, err => { @@ -63,8 +65,8 @@ function deployFirefoxStable() { issuer: process.env.FIREFOX_ISSUER, secret: process.env.FIREFOX_SECRET, id: 'jid1-xUfzOsOFlzSOXg@jetpack', - version: require('../dist/firefox/manifest.json').version, // eslint-disable-line global-require - src: fs.createReadStream(path.join(__dirname, '../dist/zip/firefox.zip')), + version, + src: fs.createReadStream(path.join(import.meta.dirname, '../dist/zip/firefox.zip')), }).then(() => { console.log('Firefox stable deployment complete!'); }, err => { diff --git a/build/deployChangelog.js b/build/deployChangelog.js index 7669f6d73d..bbfc8d845a 100644 --- a/build/deployChangelog.js +++ b/build/deployChangelog.js @@ -1,22 +1,22 @@ /* @noflow */ +/* eslint import/no-nodejs-modules: 0, import/extensions: 0 */ -/* eslint-disable import/no-commonjs, import/no-nodejs-modules */ +import { execSync } from 'child_process'; +import fs from 'node:fs'; +import path from 'node:path'; +import { rimrafSync } from 'rimraf'; +import packageInfo from '../package.json' with { type: 'json' }; +import { changelogPathFromVersion } from './utils/changelog.js'; +import isBetaVersion from './isBetaVersion.js'; -const { execSync } = require('child_process'); -const fs = require('fs'); -const path = require('path'); // eslint-disable-line import/no-extraneous-dependencies -const rimraf = require('rimraf'); -const { version } = require('../package.json'); -const { changelogPathFromVersion } = require('./utils/changelog'); -const isBetaVersion = require('./isBetaVersion'); +const version = packageInfo.version; -const tempDir = path.join(__dirname, '..', 'dist', 'temp'); +const tempDir = path.join(import.meta.dirname, '..', 'dist', 'temp'); -rimraf.sync(tempDir); +rimrafSync(tempDir); execSync(`git clone --depth=1 https://github.com/Reddit-Enhancement-Suite/Reddit-Enhancement-Suite.github.io.git ${tempDir}`); -const releaseTimestamp = (/^tagger.+?\s(\d+)\s/m).exec(execSync(`git cat-file tag v${version}`, { encoding: 'utf8' }))[1]; -const releaseDate = new Date(releaseTimestamp * 1000); +const releaseDate = new Date(execSync(`git log -1 --format=%ai v${version}`, { encoding: 'utf8' })); const newChangelogFile = path.join(tempDir, '_posts', `${releaseDate.toISOString().slice(0, 10)}-${version.replace(/\./g, '')}.md`); diff --git a/build/i18nLint.js b/build/i18nLint.js index 583da75136..e1cc166a30 100644 --- a/build/i18nLint.js +++ b/build/i18nLint.js @@ -1,14 +1,14 @@ /* @noflow */ -/* eslint-disable import/no-commonjs, import/no-nodejs-modules */ +/* eslint-disable import/no-nodejs-modules */ // Checks that all keys listed in locales/locales/en.json are used somewhere in lib/**/*.js. // Keys must be used verbatim, that is, literally 'thisKey', and not 'this' + 'Key'. // This is required not only for this script, but also so that developers can always grep for usages of an i18n key. -const { readFileSync, readdirSync, statSync } = require('fs'); -const { join } = require('path'); // eslint-disable-line import/no-extraneous-dependencies -const i18n = require('../locales/locales/en.json'); +import { readFileSync, readdirSync, statSync } from 'fs'; +import { join } from 'path'; +import i18n from '../locales/locales/en.json' with { type: 'json' }; function checkUnused() { let allFiles = ''; @@ -23,7 +23,7 @@ function checkUnused() { allFiles += readFileSync(filePath); } } - })(join(__dirname, '..', 'lib')); + })(join(import.meta.dirname, '..', 'lib')); const allKeys = Object.keys(i18n); const unusedKeys = allKeys.filter(key => !allFiles.includes(`'${key}'`)); diff --git a/build/i18nTransformer.js b/build/i18nTransformer.cjs similarity index 92% rename from build/i18nTransformer.js rename to build/i18nTransformer.cjs index 5d1d4692a7..2e8d693cbb 100644 --- a/build/i18nTransformer.js +++ b/build/i18nTransformer.cjs @@ -4,7 +4,7 @@ import fs from 'fs'; import path from 'path'; // eslint-disable-line import/no-extraneous-dependencies -import { mapValues, startCase } from 'lodash-es'; +import _ from 'lodash'; export default function i18nTransformer(file, api) { @@ -40,7 +40,7 @@ export default function i18nTransformer(file, api) { const optName = optionPath.node.key.name; const titleKey = `${modName}${upCase(optName)}Title`; - newI18nKeys[titleKey] = startCase(optName); + newI18nKeys[titleKey] = _.startCase(optName); optionPath.node.value.properties.unshift(j.property('init', j.identifier('title'), j.literal(titleKey))); j(optionPath) @@ -60,7 +60,7 @@ export default function i18nTransformer(file, api) { const enJson = fs.readFileSync(enJsonLocation, { encoding: 'utf8' }); const enJsonObj = JSON.parse(enJson); - Object.assign(enJsonObj, mapValues(newI18nKeys, message => ({ message }))); + Object.assign(enJsonObj, _.mapValues(newI18nKeys, message => ({ message }))); const newEnJson = JSON.stringify(enJsonObj, null, '\t'); fs.writeFileSync(enJsonLocation, newEnJson); diff --git a/build/utils/changelog.js b/build/utils/changelog.js index 566e4878cc..f3f3c0478f 100644 --- a/build/utils/changelog.js +++ b/build/utils/changelog.js @@ -1,18 +1,14 @@ /* @noflow */ +/* eslint import/no-nodejs-modules: 0 */ -/* eslint-disable import/no-commonjs, import/no-nodejs-modules */ - -const path = require('path'); // eslint-disable-line import/no-extraneous-dependencies +import path from 'node:path'; const dir = 'changelog'; -function changelogPath(filename) { - return path.resolve(__dirname, path.join('..', '..', dir, filename)); +export function changelogPath(filename) { + return path.join(import.meta.dirname, '..', '..', dir, filename); } -function changelogPathFromVersion(version) { +export function changelogPathFromVersion(version) { return changelogPath(`v${version}.md`); } - -module.exports.changelogPath = changelogPath; -module.exports.changelogPathFromVersion = changelogPathFromVersion; diff --git a/build/version.js b/build/version.js index b27cebd668..63969f6e17 100644 --- a/build/version.js +++ b/build/version.js @@ -1,12 +1,12 @@ -/* @flow */ +/* @noflow */ +/* eslint import/no-nodejs-modules: 0, import/extensions: 0 */ -/* eslint-disable import/no-commonjs, import/no-nodejs-modules */ - -const { execSync } = require('child_process'); -const fs = require('fs'); -const { version, repository } = require('../package.json'); -const { changelogPath, changelogPathFromVersion } = require('./utils/changelog'); +import { execSync } from 'child_process'; +import fs from 'fs'; +import packageData from '../package.json' with { type: 'json' }; +import { changelogPath, changelogPathFromVersion } from './utils/changelog.js'; +const { version, repository } = packageData; const unreleasedChangelog = changelogPath('UNRELEASED.md'); const templateChangelog = changelogPath('_EXAMPLE.md'); const newChangelog = changelogPathFromVersion(version); diff --git a/package.json b/package.json index d06ab02e16..a841e1d576 100644 --- a/package.json +++ b/package.json @@ -6,6 +6,7 @@ "author": "Reddit Enhancement Suite contributors", "license": "GPL-3.0", "private": true, + "type": "module", "homepage": "https://redditenhancementsuite.com", "repository": { "type": "git", @@ -16,12 +17,12 @@ "scripts": { "preinstall": "node -v", "prestart": "rimraf dist", - "start": "node build.mjs --watch --mode development", + "start": "node build.js --watch --mode development", "preonce": "rimraf dist", - "once": "node build.mjs --mode development", + "once": "node build.js --mode development", "prebuild": "rimraf dist", - "build": "node build.mjs --mode production --zip", - "autoi18n": "jscodeshift --parser flow --transform build/i18nTransformer.js", + "build": "node build.js --mode production --zip", + "autoi18n": "jscodeshift --parser flow --transform build/i18nTransformer.cjs", "postautoi18n": "eslint --fix lib/modules/*.js", "eslint": "eslint .", "stylelint": "stylelint lib/**/*.scss", @@ -31,7 +32,7 @@ "flow": "flow", "test": "cross-env NODE_ENV=test ava", "integration-only": "nightwatch --env", - "preintegration": "yarn build --browsers=chrome,firefox", + "preintegration": "yarn build --browsers chrome,firefox", "integration": "yarn integration-only", "deploy": "node build/deploy.js", "deploy-changelog": "node build/deployChangelog.js", @@ -58,6 +59,7 @@ "@babel/core": "7.23.7", "@babel/eslint-parser": "7.23.3", "@babel/plugin-syntax-flow": "7.23.3", + "@babel/plugin-syntax-import-attributes": "7.23.3", "@babel/plugin-transform-flow-strip-types": "7.23.3", "@babel/plugin-transform-modules-commonjs": "7.23.3", "@babel/register": "7.23.7", @@ -80,6 +82,7 @@ "eslint-plugin-you-dont-need-lodash-underscore": "6.13.0", "firefox-extension-deploy": "1.1.2", "flow-bin": "0.84.0", + "jscodeshift": "0.15.1", "jszip": "3.10.1", "nightwatch": "1.7.13", "rimraf": "5.0.5", diff --git a/yarn.lock b/yarn.lock index 86c3df0cb2..08b8470a20 100644 --- a/yarn.lock +++ b/yarn.lock @@ -28,7 +28,7 @@ resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.23.5.tgz#ffb878728bb6bdcb6f4510aa51b1be9afb8cfd98" integrity sha512-uU27kfDRlhfKl+w1U6vp16IuvSLtjAxdArVXPa9BvLkrr7CYIsxH5adpHObeAGY/41+syctUWOZ140a2Rvkgjw== -"@babel/core@7.23.7": +"@babel/core@7.23.7", "@babel/core@^7.23.0": version "7.23.7" resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.23.7.tgz#4d8016e06a14b5f92530a13ed0561730b5c6483f" integrity sha512-+UpDgowcmqe36d4NwqvKsyPMlOLNGMsfMmQ5WGCu+siCe3t3dfe9njrzGfdN4qq+bcNUt0+Vw6haRxBOycs4dw== @@ -68,6 +68,13 @@ "@jridgewell/trace-mapping" "^0.3.17" jsesc "^2.5.1" +"@babel/helper-annotate-as-pure@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.22.5.tgz#e7f06737b197d580a01edf75d97e2c8be99d3882" + integrity sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg== + dependencies: + "@babel/types" "^7.22.5" + "@babel/helper-compilation-targets@^7.23.6": version "7.23.6" resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.23.6.tgz#4d79069b16cbcf1461289eccfbbd81501ae39991" @@ -79,6 +86,21 @@ lru-cache "^5.1.1" semver "^6.3.1" +"@babel/helper-create-class-features-plugin@^7.22.15", "@babel/helper-create-class-features-plugin@^7.23.6": + version "7.23.7" + resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.23.7.tgz#b2e6826e0e20d337143655198b79d58fdc9bd43d" + integrity sha512-xCoqR/8+BoNnXOY7RVSgv6X+o7pmT5q1d+gGcRlXYkI+9B31glE4jeejhKVpA04O1AtzOt7OSQ6VYKP5FcRl9g== + dependencies: + "@babel/helper-annotate-as-pure" "^7.22.5" + "@babel/helper-environment-visitor" "^7.22.20" + "@babel/helper-function-name" "^7.23.0" + "@babel/helper-member-expression-to-functions" "^7.23.0" + "@babel/helper-optimise-call-expression" "^7.22.5" + "@babel/helper-replace-supers" "^7.22.20" + "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" + "@babel/helper-split-export-declaration" "^7.22.6" + semver "^6.3.1" + "@babel/helper-environment-visitor@^7.22.20": version "7.22.20" resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz#96159db61d34a29dba454c959f5ae4a649ba9167" @@ -99,6 +121,13 @@ dependencies: "@babel/types" "^7.22.5" +"@babel/helper-member-expression-to-functions@^7.22.15", "@babel/helper-member-expression-to-functions@^7.23.0": + version "7.23.0" + resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.23.0.tgz#9263e88cc5e41d39ec18c9a3e0eced59a3e7d366" + integrity sha512-6gfrPwh7OuT6gZyJZvd6WbTfrqAo7vm4xCzAXOusKqq/vWdKXphTpj5klHKNmRUU6/QRGlBsyU9mAIPaWHlqJA== + dependencies: + "@babel/types" "^7.23.0" + "@babel/helper-module-imports@^7.22.15": version "7.22.15" resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz#16146307acdc40cc00c3b2c647713076464bdbf0" @@ -117,11 +146,27 @@ "@babel/helper-split-export-declaration" "^7.22.6" "@babel/helper-validator-identifier" "^7.22.20" -"@babel/helper-plugin-utils@^7.22.5": +"@babel/helper-optimise-call-expression@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.22.5.tgz#f21531a9ccbff644fdd156b4077c16ff0c3f609e" + integrity sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw== + dependencies: + "@babel/types" "^7.22.5" + +"@babel/helper-plugin-utils@^7.22.5", "@babel/helper-plugin-utils@^7.8.0": version "7.22.5" resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz#dd7ee3735e8a313b9f7b05a773d892e88e6d7295" integrity sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg== +"@babel/helper-replace-supers@^7.22.20": + version "7.22.20" + resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.22.20.tgz#e37d367123ca98fe455a9887734ed2e16eb7a793" + integrity sha512-qsW0In3dbwQUbK8kejJ4R7IHVGwHJlV6lpG6UA7a9hSa2YEiAib+N1T2kr6PEeUT+Fl7najmSOS6SmAwCHK6Tw== + dependencies: + "@babel/helper-environment-visitor" "^7.22.20" + "@babel/helper-member-expression-to-functions" "^7.22.15" + "@babel/helper-optimise-call-expression" "^7.22.5" + "@babel/helper-simple-access@^7.22.5": version "7.22.5" resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz#4938357dc7d782b80ed6dbb03a0fba3d22b1d5de" @@ -129,6 +174,13 @@ dependencies: "@babel/types" "^7.22.5" +"@babel/helper-skip-transparent-expression-wrappers@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.22.5.tgz#007f15240b5751c537c40e77abb4e89eeaaa8847" + integrity sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q== + dependencies: + "@babel/types" "^7.22.5" + "@babel/helper-split-export-declaration@^7.22.6": version "7.22.6" resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz#322c61b7310c0997fe4c323955667f18fcefb91c" @@ -146,7 +198,7 @@ resolved "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz" integrity sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A== -"@babel/helper-validator-option@^7.23.5": +"@babel/helper-validator-option@^7.22.15", "@babel/helper-validator-option@^7.23.5": version "7.23.5" resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.23.5.tgz#907a3fbd4523426285365d1206c423c4c5520307" integrity sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw== @@ -174,7 +226,7 @@ resolved "https://registry.npmjs.org/@babel/parser/-/parser-7.23.5.tgz" integrity sha512-hOOqoiNXrmGdFbhgCzu6GiURxUgM27Xwd/aPuu8RfHEZPBzL1Z54okAHAQjXfcQNwvrlkAmAp4SlRTZ45vlthQ== -"@babel/parser@^7.23.6": +"@babel/parser@^7.23.0", "@babel/parser@^7.23.6": version "7.23.6" resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.23.6.tgz#ba1c9e512bda72a47e285ae42aff9d2a635a9e3b" integrity sha512-Z2uID7YJ7oNvAI20O9X0bblw7Qqs8Q2hFy0R9tAfnfLkp5MW0UH9eUvnDSnFwKZ0AvgS1ucqR4KzvVHgnke1VQ== @@ -186,7 +238,50 @@ dependencies: "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-flow-strip-types@7.23.3": +"@babel/plugin-syntax-import-attributes@7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.23.3.tgz#992aee922cf04512461d7dae3ff6951b90a2dc06" + integrity sha512-pawnE0P9g10xgoP7yKr6CK63K2FMsTE+FZidZO/1PwRdzmAPVs+HS1mAURUsgaoxammTJvULUdIkEK0gOcU2tA== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-syntax-jsx@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.23.3.tgz#8f2e4f8a9b5f9aa16067e142c1ac9cd9f810f473" + integrity sha512-EB2MELswq55OHUoRZLGg/zC7QWUKfNLpE57m/S2yr1uEneIgsTgrSzXP3NXEsMkVn76OlaVVnzN+ugObuYGwhg== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-syntax-nullish-coalescing-operator@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz#167ed70368886081f74b5c36c65a88c03b66d1a9" + integrity sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-optional-chaining@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz#4f69c2ab95167e0180cd5336613f8c5788f7d48a" + integrity sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-typescript@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.23.3.tgz#24f460c85dbbc983cd2b9c4994178bcc01df958f" + integrity sha512-9EiNjVJOMwCO+43TqoTrgQ8jMwcAd0sWyXi9RPfIsLTj4R2MADDDQXELhffaUx/uJv2AYcxBgPwH6j4TIA4ytQ== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-class-properties@^7.22.5": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.23.3.tgz#35c377db11ca92a785a718b6aa4e3ed1eb65dc48" + integrity sha512-uM+AN8yCIjDPccsKGlw271xjJtGii+xQIF/uMPS8H15L12jZTsLfF4o5vNO7d/oUguOyfdikHGc/yi9ge4SGIg== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.22.15" + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-flow-strip-types@7.23.3", "@babel/plugin-transform-flow-strip-types@^7.23.3": version "7.23.3" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.23.3.tgz#cfa7ca159cc3306fab526fc67091556b51af26ff" integrity sha512-26/pQTf9nQSNVJCrLB1IkHUKyPxR+lMrH2QDPG89+Znu9rAMbtrybdbWeE9bb7gzjmE5iXHEY+e0HUwM6Co93Q== @@ -194,7 +289,7 @@ "@babel/helper-plugin-utils" "^7.22.5" "@babel/plugin-syntax-flow" "^7.23.3" -"@babel/plugin-transform-modules-commonjs@7.23.3": +"@babel/plugin-transform-modules-commonjs@7.23.3", "@babel/plugin-transform-modules-commonjs@^7.23.0", "@babel/plugin-transform-modules-commonjs@^7.23.3": version "7.23.3" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.23.3.tgz#661ae831b9577e52be57dd8356b734f9700b53b4" integrity sha512-aVS0F65LKsdNOtcz6FRCpE4OgsP2OFnW46qNxNIX9h3wuzaNcSQsJysuMwqSibC98HPrf2vCgtxKNwS0DAlgcA== @@ -203,7 +298,62 @@ "@babel/helper-plugin-utils" "^7.22.5" "@babel/helper-simple-access" "^7.22.5" -"@babel/register@7.23.7": +"@babel/plugin-transform-nullish-coalescing-operator@^7.22.11": + version "7.23.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.23.4.tgz#45556aad123fc6e52189ea749e33ce090637346e" + integrity sha512-jHE9EVVqHKAQx+VePv5LLGHjmHSJR76vawFPTdlxR/LVJPfOEGxREQwQfjuZEOPTwG92X3LINSh3M40Rv4zpVA== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" + +"@babel/plugin-transform-optional-chaining@^7.23.0": + version "7.23.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.23.4.tgz#6acf61203bdfc4de9d4e52e64490aeb3e52bd017" + integrity sha512-ZU8y5zWOfjM5vZ+asjgAPwDaBjJzgufjES89Rs4Lpq63O300R/kOz30WCLo6BxxX6QVEilwSlpClnG5cZaikTA== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" + "@babel/plugin-syntax-optional-chaining" "^7.8.3" + +"@babel/plugin-transform-private-methods@^7.22.5": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.23.3.tgz#b2d7a3c97e278bfe59137a978d53b2c2e038c0e4" + integrity sha512-UzqRcRtWsDMTLrRWFvUBDwmw06tCQH9Rl1uAjfh6ijMSmGYQ+fpdB+cnqRC8EMh5tuuxSv0/TejGL+7vyj+50g== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.22.15" + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-typescript@^7.23.3": + version "7.23.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.23.6.tgz#aa36a94e5da8d94339ae3a4e22d40ed287feb34c" + integrity sha512-6cBG5mBvUu4VUD04OHKnYzbuHNP8huDsD3EDqqpIpsswTDoqHCjLoHb6+QgsV1WsT2nipRqCPgxD3LXnEO7XfA== + dependencies: + "@babel/helper-annotate-as-pure" "^7.22.5" + "@babel/helper-create-class-features-plugin" "^7.23.6" + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/plugin-syntax-typescript" "^7.23.3" + +"@babel/preset-flow@^7.22.15": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/preset-flow/-/preset-flow-7.23.3.tgz#8084e08b9ccec287bd077ab288b286fab96ffab1" + integrity sha512-7yn6hl8RIv+KNk6iIrGZ+D06VhVY35wLVf23Cz/mMu1zOr7u4MMP4j0nZ9tLf8+4ZFpnib8cFYgB/oYg9hfswA== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-validator-option" "^7.22.15" + "@babel/plugin-transform-flow-strip-types" "^7.23.3" + +"@babel/preset-typescript@^7.23.0": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/preset-typescript/-/preset-typescript-7.23.3.tgz#14534b34ed5b6d435aa05f1ae1c5e7adcc01d913" + integrity sha512-17oIGVlqz6CchO9RFYn5U6ZpWRZIngayYCtrPRSgANSwC2V1Jb+iP74nVxzzXJte8b8BYxrL1yY96xfhTBrNNQ== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-validator-option" "^7.22.15" + "@babel/plugin-syntax-jsx" "^7.23.3" + "@babel/plugin-transform-modules-commonjs" "^7.23.3" + "@babel/plugin-transform-typescript" "^7.23.3" + +"@babel/register@7.23.7", "@babel/register@^7.22.15": version "7.23.7" resolved "https://registry.yarnpkg.com/@babel/register/-/register-7.23.7.tgz#485a5e7951939d21304cae4af1719fdb887bc038" integrity sha512-EjJeB6+kvpk+Y5DAkEAmbOBEFkh9OASx0huoEkqYTFxAZHzOAX2Oh5uwAUuL2rUddqfM0SA+KPXV2TbzoZ2kvQ== @@ -863,6 +1013,17 @@ assert-plus@1.0.0, assert-plus@^1.0.0: resolved "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz" integrity sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw== +assert@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/assert/-/assert-2.1.0.tgz#6d92a238d05dc02e7427c881fb8be81c8448b2dd" + integrity sha512-eLHpSK/Y4nhMJ07gDaAzoX/XAKS8PSaojml3M0DM4JpV1LAi5JOJ/p6H/XWrl8L+DzVEvVCW1z3vWAaB9oTsQw== + dependencies: + call-bind "^1.0.2" + is-nan "^1.3.2" + object-is "^1.1.5" + object.assign "^4.1.4" + util "^0.12.5" + assertion-error@1.1.0, assertion-error@^1.1.0: version "1.1.0" resolved "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz" @@ -875,6 +1036,13 @@ ast-types@^0.13.2: dependencies: tslib "^2.0.1" +ast-types@^0.16.1: + version "0.16.1" + resolved "https://registry.yarnpkg.com/ast-types/-/ast-types-0.16.1.tgz#7a9da1617c9081bc121faafe91711b4c8bb81da2" + integrity sha512-6t10qk83GOG8p0vKmaCr8eiilZwO171AvbROMtvvNiwrTly62t+7XkA8RdIIVbpMhCASAsxgAzdRSwh6nw/5Dg== + dependencies: + tslib "^2.0.1" + astral-regex@^2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz" @@ -961,6 +1129,11 @@ aws4@^1.8.0: resolved "https://registry.npmjs.org/aws4/-/aws4-1.12.0.tgz" integrity sha512-NmWvPnx0F1SfrQbYwOi7OeaNGokp9XhzNioJ/CSBs8Qa4vxug81mhJEAVZwxXuBmYB5KDRfMq/F3RR0BIU7sWg== +babel-core@^7.0.0-bridge.0: + version "7.0.0-bridge.0" + resolved "https://registry.yarnpkg.com/babel-core/-/babel-core-7.0.0-bridge.0.tgz#95a492ddd90f9b4e9a4a1da14eb335b87b634ece" + integrity sha512-poPX9mZH/5CSanm50Q+1toVci6pv5KSRv/5TWCwtzQS5XEwn40BcCrgIeMFWP9CKKIniKXNxoIOnOq4VVlGXhg== + balanced-match@^1.0.0: version "1.0.2" resolved "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz" @@ -2246,7 +2419,7 @@ espree@^9.0.0, espree@^9.6.0, espree@^9.6.1: acorn-jsx "^5.3.2" eslint-visitor-keys "^3.4.1" -esprima@^4.0.0, esprima@^4.0.1: +esprima@^4.0.0, esprima@^4.0.1, esprima@~4.0.0: version "4.0.1" resolved "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz" integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== @@ -2543,6 +2716,11 @@ flow-bin@0.84.0: resolved "https://registry.npmjs.org/flow-bin/-/flow-bin-0.84.0.tgz" integrity sha512-ocji8eEYp+YfICsm+F6cIHUcD7v5sb0/ADEXm6gyUKdjQzmSckMrPUdZtyfP973t3YGHKliUMxMvIBHyR5LbXQ== +flow-parser@0.*: + version "0.226.0" + resolved "https://registry.yarnpkg.com/flow-parser/-/flow-parser-0.226.0.tgz#d552ab6762342e0e2b112fc937dd70b59e5e5d05" + integrity sha512-YlH+Y/P/5s0S7Vg14RwXlJMF/JsGfkG7gcKB/zljyoqaPNX9YVsGzx+g6MLTbhZaWbPhs4347aTpmSb9GgiPtw== + flow-remove-types@^2.137.0: version "2.223.3" resolved "https://registry.yarnpkg.com/flow-remove-types/-/flow-remove-types-2.223.3.tgz#736bab4175f155b05f29141eaa0fdff950852c5a" @@ -2893,7 +3071,7 @@ gopd@^1.0.1: dependencies: get-intrinsic "^1.1.3" -graceful-fs@^4.1.11, graceful-fs@^4.1.6, graceful-fs@^4.1.9, graceful-fs@^4.2.0, graceful-fs@^4.2.9: +graceful-fs@^4.1.11, graceful-fs@^4.1.6, graceful-fs@^4.1.9, graceful-fs@^4.2.0, graceful-fs@^4.2.4, graceful-fs@^4.2.9: version "4.2.11" resolved "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz" integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== @@ -3347,6 +3525,14 @@ is-alphanumerical@^1.0.0: is-alphabetical "^1.0.0" is-decimal "^1.0.0" +is-arguments@^1.0.4: + version "1.1.1" + resolved "https://registry.yarnpkg.com/is-arguments/-/is-arguments-1.1.1.tgz#15b3f88fda01f2a97fec84ca761a560f123efa9b" + integrity sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA== + dependencies: + call-bind "^1.0.2" + has-tostringtag "^1.0.0" + is-array-buffer@^3.0.1, is-array-buffer@^3.0.2: version "3.0.2" resolved "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.2.tgz" @@ -3432,6 +3618,13 @@ is-fullwidth-code-point@^4.0.0: resolved "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-4.0.0.tgz" integrity sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ== +is-generator-function@^1.0.7: + version "1.0.10" + resolved "https://registry.yarnpkg.com/is-generator-function/-/is-generator-function-1.0.10.tgz#f1558baf1ac17e0deea7c0415c438351ff2b3c72" + integrity sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A== + dependencies: + has-tostringtag "^1.0.0" + is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3, is-glob@~4.0.1: version "4.0.3" resolved "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz" @@ -3444,6 +3637,14 @@ is-interactive@^1.0.0: resolved "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz" integrity sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w== +is-nan@^1.3.2: + version "1.3.2" + resolved "https://registry.yarnpkg.com/is-nan/-/is-nan-1.3.2.tgz#043a54adea31748b55b6cd4e09aadafa69bd9e1d" + integrity sha512-E+zBKpQ2t6MEo1VsonYmluk9NxGrbzpeeLC2xIViuO2EjU2xsXsBPwTr3Ykv9l08UYEVEdWeRZNouaZqF6RN0w== + dependencies: + call-bind "^1.0.0" + define-properties "^1.1.3" + is-negative-zero@^2.0.2: version "2.0.2" resolved "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz" @@ -3519,7 +3720,7 @@ is-symbol@^1.0.2, is-symbol@^1.0.3: dependencies: has-symbols "^1.0.2" -is-typed-array@^1.1.10, is-typed-array@^1.1.12, is-typed-array@^1.1.9: +is-typed-array@^1.1.10, is-typed-array@^1.1.12, is-typed-array@^1.1.3, is-typed-array@^1.1.9: version "1.1.12" resolved "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.12.tgz" integrity sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg== @@ -3654,6 +3855,32 @@ jsbn@~0.1.0: resolved "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz" integrity sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg== +jscodeshift@0.15.1: + version "0.15.1" + resolved "https://registry.yarnpkg.com/jscodeshift/-/jscodeshift-0.15.1.tgz#6c7a9572acdfa4f54098e958f71a05716a4e546b" + integrity sha512-hIJfxUy8Rt4HkJn/zZPU9ChKfKZM1342waJ1QC2e2YsPcWhM+3BJ4dcfQCzArTrk1jJeNLB341H+qOcEHRxJZg== + dependencies: + "@babel/core" "^7.23.0" + "@babel/parser" "^7.23.0" + "@babel/plugin-transform-class-properties" "^7.22.5" + "@babel/plugin-transform-modules-commonjs" "^7.23.0" + "@babel/plugin-transform-nullish-coalescing-operator" "^7.22.11" + "@babel/plugin-transform-optional-chaining" "^7.23.0" + "@babel/plugin-transform-private-methods" "^7.22.5" + "@babel/preset-flow" "^7.22.15" + "@babel/preset-typescript" "^7.23.0" + "@babel/register" "^7.22.15" + babel-core "^7.0.0-bridge.0" + chalk "^4.1.2" + flow-parser "0.*" + graceful-fs "^4.2.4" + micromatch "^4.0.4" + neo-async "^2.5.0" + node-dir "^0.1.17" + recast "^0.23.3" + temp "^0.8.4" + write-file-atomic "^2.3.0" + jsdoc@^3.5.5: version "3.6.11" resolved "https://registry.npmjs.org/jsdoc/-/jsdoc-3.6.11.tgz" @@ -4334,7 +4561,7 @@ minimatch@3.0.4: dependencies: brace-expansion "^1.1.7" -minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.2: +minimatch@^3.0.2, minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.2: version "3.1.2" resolved "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz" integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== @@ -4473,7 +4700,7 @@ natural-compare@^1.4.0: resolved "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz" integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw== -neo-async@^2.6.2: +neo-async@^2.5.0, neo-async@^2.6.2: version "2.6.2" resolved "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz" integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== @@ -4518,6 +4745,13 @@ no-case@^3.0.4: lower-case "^2.0.2" tslib "^2.0.3" +node-dir@^0.1.17: + version "0.1.17" + resolved "https://registry.yarnpkg.com/node-dir/-/node-dir-0.1.17.tgz#5f5665d93351335caabef8f1c554516cf5f1e4e5" + integrity sha512-tmPX422rYgofd4epzrNoOXiE8XFZYOcCq1vD7MAXCDO+O+zndlA2ztdKKMa+EeuBG5tHETpr4ml4RGgpqDCCAg== + dependencies: + minimatch "^3.0.2" + node-environment-flags@1.0.5: version "1.0.5" resolved "https://registry.npmjs.org/node-environment-flags/-/node-environment-flags-1.0.5.tgz" @@ -4617,6 +4851,14 @@ object-inspect@^1.13.1, object-inspect@^1.9.0: resolved "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz" integrity sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ== +object-is@^1.1.5: + version "1.1.5" + resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.1.5.tgz#b9deeaa5fc7f1846a0faecdceec138e5778f53ac" + integrity sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + object-keys@^1.0.11, object-keys@^1.1.1: version "1.1.1" resolved "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz" @@ -5198,6 +5440,17 @@ readdirp@~3.6.0: dependencies: picomatch "^2.2.1" +recast@^0.23.3: + version "0.23.4" + resolved "https://registry.yarnpkg.com/recast/-/recast-0.23.4.tgz#ca1bac7bfd3011ea5a28dfecb5df678559fb1ddf" + integrity sha512-qtEDqIZGVcSZCHniWwZWbRy79Dc6Wp3kT/UmDA2RJKBPg7+7k51aQBZirHmUGn5uvHf2rg8DkjizrN26k61ATw== + dependencies: + assert "^2.0.0" + ast-types "^0.16.1" + esprima "~4.0.0" + source-map "~0.6.1" + tslib "^2.0.1" + rechoir@^0.7.0: version "0.7.1" resolved "https://registry.npmjs.org/rechoir/-/rechoir-0.7.1.tgz" @@ -5352,6 +5605,13 @@ rimraf@^3.0.2: dependencies: glob "^7.1.3" +rimraf@~2.6.2: + version "2.6.3" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.3.tgz#b2d104fe0d8fb27cf9e0a1cda8262dd3833c6cab" + integrity sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA== + dependencies: + glob "^7.1.3" + run-parallel@^1.1.9: version "1.2.0" resolved "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz" @@ -6005,6 +6265,13 @@ temp-dir@^3.0.0: resolved "https://registry.yarnpkg.com/temp-dir/-/temp-dir-3.0.0.tgz#7f147b42ee41234cc6ba3138cd8e8aa2302acffa" integrity sha512-nHc6S/bwIilKHNRgK/3jlhDoIHcp45YgyiwcAk46Tr0LfEqGBVpmiAyuiuxeVE44m3mXnEeVhaipLOEWmH+Njw== +temp@^0.8.4: + version "0.8.4" + resolved "https://registry.yarnpkg.com/temp/-/temp-0.8.4.tgz#8c97a33a4770072e0a05f919396c7665a7dd59f2" + integrity sha512-s0ZZzd0BzYv5tLSptZooSjK8oj6C+c19p7Vqta9+6NPOf7r+fxq0cJe6/oN4LTC79sy5NY8ucOJNgwsKCSbfqg== + dependencies: + rimraf "~2.6.2" + terser@^5.15.1: version "5.26.0" resolved "https://registry.npmjs.org/terser/-/terser-5.26.0.tgz" @@ -6241,6 +6508,17 @@ util-deprecate@^1.0.1, util-deprecate@^1.0.2, util-deprecate@~1.0.1: resolved "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz" integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== +util@^0.12.5: + version "0.12.5" + resolved "https://registry.yarnpkg.com/util/-/util-0.12.5.tgz#5f17a6059b73db61a875668781a1c2b136bd6fbc" + integrity sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA== + dependencies: + inherits "^2.0.3" + is-arguments "^1.0.4" + is-generator-function "^1.0.7" + is-typed-array "^1.1.3" + which-typed-array "^1.1.2" + uuid@^3.3.2: version "3.4.0" resolved "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz" @@ -6316,7 +6594,7 @@ which-module@^2.0.0: resolved "https://registry.npmjs.org/which-module/-/which-module-2.0.1.tgz" integrity sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ== -which-typed-array@^1.1.11, which-typed-array@^1.1.13: +which-typed-array@^1.1.11, which-typed-array@^1.1.13, which-typed-array@^1.1.2: version "1.1.13" resolved "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.13.tgz" integrity sha512-P5Nra0qjSncduVPEAr7xhoF5guty49ArDTwzJ/yNuPIbZppyRxFQsRCWrocxIY+CnMVG+qfbU2FmDKyvSGClow== @@ -6406,6 +6684,15 @@ wrappy@1: resolved "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== +write-file-atomic@^2.3.0: + version "2.4.3" + resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-2.4.3.tgz#1fd2e9ae1df3e75b8d8c367443c692d4ca81f481" + integrity sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ== + dependencies: + graceful-fs "^4.1.11" + imurmurhash "^0.1.4" + signal-exit "^3.0.2" + write-file-atomic@^5.0.1: version "5.0.1" resolved "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-5.0.1.tgz"