From cccf8c72c35de139c321a02bab3395bb2f72b33c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martin=20Ra=C4=8D=C3=A1k?= Date: Thu, 26 Dec 2024 14:27:01 +0100 Subject: [PATCH] Update to ESlint 9 and flat config --- .eslintignore | 12 - adminShared/patchHelper.ts | 5 +- adminShared/schemaProcessing.ts | 18 +- adminSiteClient/.eslintrc.yaml | 2 - adminSiteClient/Admin.tsx | 1 - .../GrapherConfigGridEditorTypesAndUtils.tsx | 2 +- adminSiteClient/SiteRedirectsIndexPage.tsx | 4 +- adminSiteClient/VariablesIndexPage.tsx | 4 +- adminSiteClient/gdocsValidation.ts | 2 +- adminSiteServer/.eslintrc.yaml | 2 - adminSiteServer/app.test.tsx | 2 +- baker/.eslintrc.yaml | 2 - baker/batchTagWithGpt.ts | 11 +- baker/pageOverrides.tsx | 6 +- baker/siteRenderers.tsx | 4 +- db/.eslintrc.yaml | 4 - db/model/Gdoc/htmlToEnriched.ts | 2 +- db/refreshPageviewsFromDatasette.ts | 1 - .../cloudflareImagesSync.ts | 10 +- devTools/explorerTools/extractGrapherIds.ts | 2 +- devTools/explorerTools/rewriteAllExplorers.ts | 2 +- devTools/flagUpdater/update.ts | 2 +- devTools/gdocs/fetch-by-id.ts | 8 +- devTools/graphersToGit/tasks.ts | 6 +- devTools/markdownTest/markdown.ts | 13 +- devTools/navigationTest/navigationTest.ts | 4 +- .../reconstructPostsGdocsComponents.ts | 10 +- devTools/regionsUpdater/update.ts | 73 +- .../generate-default-object-from-schema.ts | 14 +- devTools/schemaProcessor/schemaProcessor.ts | 4 +- devTools/svgTester/create-compare-view.ts | 2 +- devTools/svgTester/dump-chart-ids.ts | 2 +- devTools/svgTester/dump-data.ts | 2 +- devTools/svgTester/export-graphs.ts | 2 +- devTools/svgTester/utils.ts | 17 +- devTools/svgTester/verify-graphs.ts | 2 +- devTools/syncGraphersToR2/syncGraphersToR2.ts | 2 +- devTools/tsconfigs/tsconfig.base.json | 2 +- devTools/wayback/wayback.ts | 4 +- eslint.config.mjs | 187 +++ explorerAdminClient/.eslintrc.yaml | 2 - .../ExplorerCreatePage.jsdom.test.tsx | 4 +- explorerAdminClient/ExplorersListPage.tsx | 2 +- explorerAdminServer/.eslintrc.yaml | 2 - functions/donation/thank-you.ts | 8 +- gitCms/GitCmsServer.ts | 6 +- package.json | 14 +- .../@ourworldindata/components/package.json | 4 +- .../src/markdown/remarkPlainLinks.ts | 2 +- .../@ourworldindata/core-table/.eslintrc.yaml | 3 - .../@ourworldindata/core-table/package.json | 2 +- .../core-table/src/CoreTableColumns.ts | 2 +- .../@ourworldindata/explorer/package.json | 4 +- .../src/ExplorerControls.jsdom.test.tsx | 3 +- .../explorer/src/ExplorerProgram.ts | 1 + .../src/gridLang/GridLangConstants.ts | 10 +- .../ExplorerUrlMigrationUtils.ts | 2 +- packages/@ourworldindata/grapher/package.json | 4 +- .../grapher/src/axis/.eslintrc.yaml | 3 - .../grapher/src/axis/AxisViews.jsdom.test.tsx | 4 +- .../grapher/src/barCharts/.eslintrc.yaml | 3 - .../grapher/src/bodyDiv/.eslintrc.yaml | 3 - .../grapher/src/captionedChart/.eslintrc.yaml | 3 - .../src/captionedChart/CaptionedChart.tsx | 4 +- .../captionedChart/StaticChartRasterizer.tsx | 4 +- .../grapher/src/chart/.eslintrc.yaml | 3 - .../grapher/src/color/.eslintrc.yaml | 3 - .../grapher/src/controls/.eslintrc.yaml | 3 - .../grapher/src/controls/ContentSwitchers.tsx | 3 +- .../controls/entityPicker/EntityPicker.tsx | 7 +- .../GlobalEntitySelector.jsdom.test.tsx | 3 +- .../GlobalEntitySelector.tsx | 4 +- .../grapher/src/core/.eslintrc.yaml | 3 - .../grapher/src/core/EntityUrlBuilder.ts | 2 +- .../grapher/src/core/Grapher.tsx | 1 + .../grapher/src/dataTable/.eslintrc.yaml | 3 - .../src/dataTable/DataTable.jsdom.test.tsx | 4 +- .../src/entitySelector/EntitySelector.tsx | 4 +- .../grapher/src/facetChart/.eslintrc.yaml | 3 - .../grapher/src/footer/.eslintrc.yaml | 3 - .../grapher/src/header/.eslintrc.yaml | 3 - .../grapher/src/lineCharts/.eslintrc.yaml | 3 - .../src/loadingIndicator/.eslintrc.yaml | 3 - .../grapher/src/mapCharts/.eslintrc.yaml | 3 - .../src/mapCharts/MapTooltip.jsdom.test.tsx | 5 +- .../grapher/src/noDataModal/.eslintrc.yaml | 3 - .../grapher/src/scatterCharts/.eslintrc.yaml | 3 - .../grapher/src/selection/.eslintrc.yaml | 3 - .../grapher/src/stackedCharts/.eslintrc.yaml | 3 - .../src/stackedCharts/MarimekkoChart.tsx | 3 +- .../stackedCharts/StackedDiscreteBarChart.tsx | 3 +- .../grapher/src/timeline/.eslintrc.yaml | 3 - .../grapher/src/tooltip/.eslintrc.yaml | 3 - .../src/verticalColorLegend/.eslintrc.yaml | 3 - packages/@ourworldindata/types/package.json | 4 +- .../types/src/gdocTypes/GdocConstants.ts | 2 +- packages/@ourworldindata/utils/.eslintrc.yaml | 3 - packages/@ourworldindata/utils/package.json | 4 +- .../utils/src/PromiseCache.test.ts | 12 +- .../utils/src/PromiseSwitcher.test.ts | 4 +- packages/@ourworldindata/utils/src/Util.ts | 13 +- .../utils/src/persistable/.eslintrc.yaml | 3 - packages/@ourworldindata/utils/src/string.ts | 2 +- settings/.eslintrc.yaml | 4 - site/CookiePreferencesManager.tsx | 4 +- site/GrapherPage.jsdom.test.tsx | 3 +- site/blocks/RelatedCharts.jsdom.test.tsx | 3 +- .../components/KeyInsights.jsdom.test.tsx | 3 +- site/owid.entry.ts | 4 +- site/runSiteFooterScripts.ts | 3 + tsconfig.eslint.json | 9 +- yarn.lock | 1316 +++++++++++++---- 112 files changed, 1440 insertions(+), 602 deletions(-) delete mode 100644 .eslintignore delete mode 100644 adminSiteClient/.eslintrc.yaml delete mode 100644 adminSiteServer/.eslintrc.yaml delete mode 100644 baker/.eslintrc.yaml delete mode 100644 db/.eslintrc.yaml create mode 100644 eslint.config.mjs delete mode 100644 explorerAdminClient/.eslintrc.yaml delete mode 100644 explorerAdminServer/.eslintrc.yaml delete mode 100644 packages/@ourworldindata/core-table/.eslintrc.yaml delete mode 100644 packages/@ourworldindata/grapher/src/axis/.eslintrc.yaml delete mode 100644 packages/@ourworldindata/grapher/src/barCharts/.eslintrc.yaml delete mode 100644 packages/@ourworldindata/grapher/src/bodyDiv/.eslintrc.yaml delete mode 100644 packages/@ourworldindata/grapher/src/captionedChart/.eslintrc.yaml delete mode 100644 packages/@ourworldindata/grapher/src/chart/.eslintrc.yaml delete mode 100644 packages/@ourworldindata/grapher/src/color/.eslintrc.yaml delete mode 100644 packages/@ourworldindata/grapher/src/controls/.eslintrc.yaml delete mode 100644 packages/@ourworldindata/grapher/src/core/.eslintrc.yaml delete mode 100644 packages/@ourworldindata/grapher/src/dataTable/.eslintrc.yaml delete mode 100644 packages/@ourworldindata/grapher/src/facetChart/.eslintrc.yaml delete mode 100644 packages/@ourworldindata/grapher/src/footer/.eslintrc.yaml delete mode 100644 packages/@ourworldindata/grapher/src/header/.eslintrc.yaml delete mode 100644 packages/@ourworldindata/grapher/src/lineCharts/.eslintrc.yaml delete mode 100644 packages/@ourworldindata/grapher/src/loadingIndicator/.eslintrc.yaml delete mode 100644 packages/@ourworldindata/grapher/src/mapCharts/.eslintrc.yaml delete mode 100644 packages/@ourworldindata/grapher/src/noDataModal/.eslintrc.yaml delete mode 100644 packages/@ourworldindata/grapher/src/scatterCharts/.eslintrc.yaml delete mode 100644 packages/@ourworldindata/grapher/src/selection/.eslintrc.yaml delete mode 100644 packages/@ourworldindata/grapher/src/stackedCharts/.eslintrc.yaml delete mode 100644 packages/@ourworldindata/grapher/src/timeline/.eslintrc.yaml delete mode 100644 packages/@ourworldindata/grapher/src/tooltip/.eslintrc.yaml delete mode 100644 packages/@ourworldindata/grapher/src/verticalColorLegend/.eslintrc.yaml delete mode 100644 packages/@ourworldindata/utils/.eslintrc.yaml delete mode 100644 packages/@ourworldindata/utils/src/persistable/.eslintrc.yaml delete mode 100644 settings/.eslintrc.yaml diff --git a/.eslintignore b/.eslintignore deleted file mode 100644 index de55771e244..00000000000 --- a/.eslintignore +++ /dev/null @@ -1,12 +0,0 @@ -**/*.js -bakedSite/** -coverage/** -itsJustJavascript/** -devtools/** -jest.config.js -knexfile.ts -ormconfig.js -postcss.config.js -packages/@ourworldindata/*/dist/ -dist/ -.vscode/ diff --git a/adminShared/patchHelper.ts b/adminShared/patchHelper.ts index 5f4defb63d0..9526d5f190b 100644 --- a/adminShared/patchHelper.ts +++ b/adminShared/patchHelper.ts @@ -71,7 +71,10 @@ export function setValueRecursive( let newObject: any = {} if (json !== undefined && checkIsPlainObjectWithGuard(json)) newObject = { ...json } - const currentValue = newObject.hasOwnProperty(currentPart) + const currentValue = Object.prototype.hasOwnProperty.call( + newObject, + currentPart + ) ? newObject[currentPart] : undefined const updatedValue = setValueRecursive( diff --git a/adminShared/schemaProcessing.ts b/adminShared/schemaProcessing.ts index 6577878f1e9..70f52f0a5e5 100644 --- a/adminShared/schemaProcessing.ts +++ b/adminShared/schemaProcessing.ts @@ -128,9 +128,9 @@ function extractSchemaRecursive( // then do not emit anything directly and recurse over the // described properties if ( - schema.hasOwnProperty("type") && + Object.prototype.hasOwnProperty.call(schema, "type") && schema.type === "object" && - schema.hasOwnProperty("properties") && + Object.prototype.hasOwnProperty.call(schema, "properties") && checkIsPlainObjectWithGuard(schema.properties) ) { // Color scales are complex objects that are treated as opaque objects with a special @@ -166,15 +166,15 @@ function extractSchemaRecursive( // paternProperties is ".*" and the type of those // is string (interpreted as a color) // We yield something like this as a single entry - schema.hasOwnProperty("type") && + Object.prototype.hasOwnProperty.call(schema, "type") && schema.type === "object" && - schema.hasOwnProperty("patternProperties") && + Object.prototype.hasOwnProperty.call(schema, "patternProperties") && Object.values( schema.patternProperties as Record ).every( (item: any) => checkIsPlainObjectWithGuard(item) && - item.hasOwnProperty("type") && + Object.prototype.hasOwnProperty.call(item, "type") && isPlainTypeString((item as any).type) ) ) { @@ -234,7 +234,7 @@ function extractSchemaRecursive( // a primitive type. If so we collect all the types // and yield a single FieldDefinition with the merged // type - schema.hasOwnProperty("oneOf") && + Object.prototype.hasOwnProperty.call(schema, "oneOf") && isArray(schema.oneOf) && schema.oneOf.map((item) => item.type).every(isPlainTypeStringOrNull) ) { @@ -264,13 +264,13 @@ function recursiveDereference( schema !== undefined && checkIsPlainObjectWithGuard(schema) ) { - if (schema.hasOwnProperty("$ref")) { + if (Object.prototype.hasOwnProperty.call(schema, "$ref")) { const ref = schema["$ref"] as string const localPrefix = "#/$defs/" if (!ref.startsWith(localPrefix)) throw "Only local refs are supported at the moment!" const refName = ref.substring(localPrefix.length) - if (!defs.hasOwnProperty(refName)) { + if (!Object.prototype.hasOwnProperty.call(defs, refName)) { console.error("Reference not found", refName) return schema } else return defs[refName] // Note: we are not using recursive dereferencing, i.e. if there are refs in the $defs section we don't resolve them here @@ -281,7 +281,7 @@ function recursiveDereference( } function dereference(schema: Record): any { - if (!schema.hasOwnProperty("$defs")) return + if (!Object.prototype.hasOwnProperty.call(schema, "$defs")) return const defs = schema["$defs"] as Record const dereferenced = recursiveDereference(schema, defs) diff --git a/adminSiteClient/.eslintrc.yaml b/adminSiteClient/.eslintrc.yaml deleted file mode 100644 index adf76b50604..00000000000 --- a/adminSiteClient/.eslintrc.yaml +++ /dev/null @@ -1,2 +0,0 @@ -rules: - no-console: "off" diff --git a/adminSiteClient/Admin.tsx b/adminSiteClient/Admin.tsx index 307513c79ed..6658e392292 100644 --- a/adminSiteClient/Admin.tsx +++ b/adminSiteClient/Admin.tsx @@ -162,7 +162,6 @@ export class Admin { } @action.bound private removeRequest(request: Promise): void { - // eslint-disable-next-line @typescript-eslint/no-floating-promises this.currentRequests = this.currentRequests.filter( (req) => req !== request ) diff --git a/adminSiteClient/GrapherConfigGridEditorTypesAndUtils.tsx b/adminSiteClient/GrapherConfigGridEditorTypesAndUtils.tsx index 3de0bbc4288..ebba11e9322 100644 --- a/adminSiteClient/GrapherConfigGridEditorTypesAndUtils.tsx +++ b/adminSiteClient/GrapherConfigGridEditorTypesAndUtils.tsx @@ -136,7 +136,7 @@ export function fetchVariablesParametersFromQueryString( sExpressionContext: OperationContext ): FetchVariablesParameters { let filterQuery: Operation | undefined = undefined - if (params.hasOwnProperty("filter")) { + if (Object.prototype.hasOwnProperty.call(params, "filter")) { filterQuery = parseToOperation(params.filter!, sExpressionContext) } return { diff --git a/adminSiteClient/SiteRedirectsIndexPage.tsx b/adminSiteClient/SiteRedirectsIndexPage.tsx index 1fea807c0c7..1c550e0d4f0 100644 --- a/adminSiteClient/SiteRedirectsIndexPage.tsx +++ b/adminSiteClient/SiteRedirectsIndexPage.tsx @@ -7,10 +7,10 @@ import { AdminAppContext } from "./AdminAppContext.js" import { AdminLayout } from "./AdminLayout.js" import { Link } from "./Link.js" -const SOURCE_PATTERN = /^\/$|^\/.*[^\/]+$/ +const SOURCE_PATTERN = /^\/$|^\/.*[^/]+$/ const INVALID_SOURCE_MESSAGE = "URL must start with a slash and cannot end with a slash, unless it's the root." -const TARGET_PATTERN = /^\/$|^(https?:\/\/|\/).*[^\/]+$/ +const TARGET_PATTERN = /^\/$|^(https?:\/\/|\/).*[^/]+$/ const INVALID_TARGET_MESSAGE = "URL must start with a slash or http(s):// and cannot end with a slash, unless it's the root." diff --git a/adminSiteClient/VariablesIndexPage.tsx b/adminSiteClient/VariablesIndexPage.tsx index 2d688d2aff9..114fedccb04 100644 --- a/adminSiteClient/VariablesIndexPage.tsx +++ b/adminSiteClient/VariablesIndexPage.tsx @@ -8,7 +8,7 @@ import { reaction, IReactionDisposer, } from "mobx" -import * as lodash from "lodash" +import lodash from "lodash" import { AdminLayout } from "./AdminLayout.js" import { SearchField, FieldsRow } from "./Forms.js" @@ -42,7 +42,7 @@ export class VariablesIndexPage extends Component { const html = text.replace( new RegExp( this.highlightSearch.replace( - /[-\/\\^$*+?.()|[\]{}]/g, + /[-/\\^$*+?.()|[\]{}]/g, "\\$&" ), "i" diff --git a/adminSiteClient/gdocsValidation.ts b/adminSiteClient/gdocsValidation.ts index 58ac938059c..0ad8da3f38c 100644 --- a/adminSiteClient/gdocsValidation.ts +++ b/adminSiteClient/gdocsValidation.ts @@ -33,7 +33,7 @@ function validatePublishedAt(gdoc: OwidGdoc, errors: OwidGdocErrorMessage[]) { } function validateSlug(gdoc: OwidGdoc, errors: OwidGdocErrorMessage[]) { - if (!gdoc.slug.match(/^[a-z0-9-\/]+$/)) { + if (!gdoc.slug.match(/^[a-z0-9-/]+$/)) { errors.push({ property: "slug", type: OwidGdocErrorMessageType.Error, diff --git a/adminSiteServer/.eslintrc.yaml b/adminSiteServer/.eslintrc.yaml deleted file mode 100644 index adf76b50604..00000000000 --- a/adminSiteServer/.eslintrc.yaml +++ /dev/null @@ -1,2 +0,0 @@ -rules: - no-console: "off" diff --git a/adminSiteServer/app.test.tsx b/adminSiteServer/app.test.tsx index 120673d8706..e35184c905c 100644 --- a/adminSiteServer/app.test.tsx +++ b/adminSiteServer/app.test.tsx @@ -39,7 +39,7 @@ jest.mock("googleapis", () => { import { OwidAdminApp } from "./appClass.js" import { logInAsUser } from "./authentication.js" -import knex, { Knex } from "knex" +import { Knex, knex } from "knex" import { dbTestConfig } from "../db/tests/dbTestConfig.js" import { TransactionCloseMode, diff --git a/baker/.eslintrc.yaml b/baker/.eslintrc.yaml deleted file mode 100644 index adf76b50604..00000000000 --- a/baker/.eslintrc.yaml +++ /dev/null @@ -1,2 +0,0 @@ -rules: - no-console: "off" diff --git a/baker/batchTagWithGpt.ts b/baker/batchTagWithGpt.ts index 50940696ae9..79c30e7dc8b 100644 --- a/baker/batchTagWithGpt.ts +++ b/baker/batchTagWithGpt.ts @@ -81,13 +81,10 @@ if (require.main === module) { }) }, async (argv) => { - try { - await db.knexReadonlyTransaction( - (trx) => batchTagChartsWithGpt(trx, argv), - db.TransactionCloseMode.Close - ) - } finally { - } + await db.knexReadonlyTransaction( + (trx) => batchTagChartsWithGpt(trx, argv), + db.TransactionCloseMode.Close + ) } ) .help() diff --git a/baker/pageOverrides.tsx b/baker/pageOverrides.tsx index 1e8e91a69d5..fb1a90a9995 100644 --- a/baker/pageOverrides.tsx +++ b/baker/pageOverrides.tsx @@ -14,13 +14,11 @@ export const getPostBySlugLogToSlackNoThrow = async ( knex: KnexReadonlyTransaction, slug: string ) => { - let post try { - post = await getFullPostBySlugFromSnapshot(knex, slug) + return await getFullPostBySlugFromSnapshot(knex, slug) } catch (err) { void logErrorAndMaybeSendToBugsnag(err) - } finally { - return post + return undefined } } diff --git a/baker/siteRenderers.tsx b/baker/siteRenderers.tsx index f2df79ef183..75d24feeee7 100644 --- a/baker/siteRenderers.tsx +++ b/baker/siteRenderers.tsx @@ -11,7 +11,7 @@ import { ThankYouPage } from "../site/ThankYouPage.js" import TombstonePage from "../site/TombstonePage.js" import OwidGdocPage from "../site/gdocs/OwidGdocPage.js" import ReactDOMServer from "react-dom/server.js" -import * as lodash from "lodash" +import lodash from "lodash" import { formatCountryProfile, isCanonicalInternalUrl } from "./formatting.js" import { bakeGrapherUrls, @@ -621,9 +621,9 @@ export const renderProminentLinks = async ( ) ) $block.remove() - return } } + if (!title) return const image = $block.find("figure").html() || diff --git a/db/.eslintrc.yaml b/db/.eslintrc.yaml deleted file mode 100644 index 3da8d3df28c..00000000000 --- a/db/.eslintrc.yaml +++ /dev/null @@ -1,4 +0,0 @@ -rules: - no-console: "off" - "@typescript-eslint/explicit-function-return-type": "warn" - "@typescript-eslint/explicit-module-boundary-types": "warn" diff --git a/db/model/Gdoc/htmlToEnriched.ts b/db/model/Gdoc/htmlToEnriched.ts index 0d3e555a6bf..8e5ea39c084 100644 --- a/db/model/Gdoc/htmlToEnriched.ts +++ b/db/model/Gdoc/htmlToEnriched.ts @@ -317,7 +317,7 @@ interface ParseContext { to some html tags like
*/ const wpTagRegex = - /wp:(?([\w\/-]+))\s*(?{.*})?\s*(?\/)?$/ + /wp:(?([\w/-]+))\s*(?{.*})?\s*(?\/)?$/ /** Unwraps a CheerioElement in the sense that it applies cheerioElementsToArchieML on the children, returning the result. In effect diff --git a/db/refreshPageviewsFromDatasette.ts b/db/refreshPageviewsFromDatasette.ts index 333c91fc139..f144aea520a 100644 --- a/db/refreshPageviewsFromDatasette.ts +++ b/db/refreshPageviewsFromDatasette.ts @@ -76,7 +76,6 @@ const main = async (): Promise => { ) } catch (e) { console.error(e) - } finally { } } diff --git a/devTools/cloudflareImagesSync/cloudflareImagesSync.ts b/devTools/cloudflareImagesSync/cloudflareImagesSync.ts index a43ea14fa3c..36aaa4d3c0a 100644 --- a/devTools/cloudflareImagesSync/cloudflareImagesSync.ts +++ b/devTools/cloudflareImagesSync/cloudflareImagesSync.ts @@ -9,7 +9,7 @@ import { CLOUDFLARE_IMAGES_API_KEY, IMAGE_HOSTING_R2_CDN_URL, } from "../../settings/serverSettings.js" -import { excludeNullish, keyBy } from "@ourworldindata/utils" +import { keyBy } from "@ourworldindata/utils" type CloudflareImageDirectory = Record @@ -89,6 +89,7 @@ async function validateDirectory( } } +// eslint-disable-next-line @typescript-eslint/no-unused-vars async function purgeRecords(trx: db.KnexReadWriteTransaction) { await new Promise((resolve) => { const readlineInterface = readline.createInterface({ @@ -449,4 +450,9 @@ You need to set "CLOUDFLARE_IMAGES_ACCOUNT_ID" and "CLOUDFLARE_IMAGES_API_KEY" i }) } -main().then(() => process.exit(0)) +main() + .then(() => process.exit(0)) + .catch((e) => { + console.error(e) + process.exit(1) + }) diff --git a/devTools/explorerTools/extractGrapherIds.ts b/devTools/explorerTools/extractGrapherIds.ts index 5fb96e8f62c..28181c117d8 100644 --- a/devTools/explorerTools/extractGrapherIds.ts +++ b/devTools/explorerTools/extractGrapherIds.ts @@ -35,4 +35,4 @@ async function main(): Promise { console.log(csvRows.join("\n")) } -main() +void main() diff --git a/devTools/explorerTools/rewriteAllExplorers.ts b/devTools/explorerTools/rewriteAllExplorers.ts index 52401f5c8ed..4b02e98efdc 100644 --- a/devTools/explorerTools/rewriteAllExplorers.ts +++ b/devTools/explorerTools/rewriteAllExplorers.ts @@ -18,4 +18,4 @@ const rewriteAllExplorers = async () => { console.log("Finished rewriting", allExplorers.length, "explorers") } -rewriteAllExplorers() +void rewriteAllExplorers() diff --git a/devTools/flagUpdater/update.ts b/devTools/flagUpdater/update.ts index 353d89f1db5..d0022707f53 100644 --- a/devTools/flagUpdater/update.ts +++ b/devTools/flagUpdater/update.ts @@ -74,4 +74,4 @@ const main = async () => { } } -main() +void main() diff --git a/devTools/gdocs/fetch-by-id.ts b/devTools/gdocs/fetch-by-id.ts index 709618cabef..c0e09cb0592 100644 --- a/devTools/gdocs/fetch-by-id.ts +++ b/devTools/gdocs/fetch-by-id.ts @@ -1,9 +1,5 @@ #! /usr/bin/env node -import { TransactionCloseMode, knexReadonlyTransaction } from "../../db/db.js" - -import fs from "fs-extra" - import parseArgs from "minimist" import { OwidGoogleAuth } from "../../db/OwidGoogleAuth.js" @@ -19,7 +15,7 @@ async function main(parsedArgs: parseArgs.ParsedArgs) { suggestionsViewMode: "PREVIEW_WITHOUT_SUGGESTIONS", }) // Remove the Authorization header from the response before printing it - delete response.config.headers.Authorization + delete response.config?.headers?.Authorization process.stdout.write(JSON.stringify(response, null, 2)) } catch (error) { console.error("Encountered an error: ", error) @@ -40,5 +36,5 @@ Usage: `) process.exit(0) } else { - main(parsedArgs) + void main(parsedArgs) } diff --git a/devTools/graphersToGit/tasks.ts b/devTools/graphersToGit/tasks.ts index cc555c3ad30..55828a54f19 100755 --- a/devTools/graphersToGit/tasks.ts +++ b/devTools/graphersToGit/tasks.ts @@ -71,7 +71,7 @@ const dumpGraphers = async () => { JSON.stringify(mapToObjectLiteral(graphersById), null, 2), "utf8" ) - closeTypeOrmAndKnexConnections() + void closeTypeOrmAndKnexConnections() } // If an author changes the map variable then removes that variable, we don't remove it from map config. @@ -205,7 +205,7 @@ const dumpComplexSelections = async () => { }), "utf8" ) - closeTypeOrmAndKnexConnections() + void closeTypeOrmAndKnexConnections() } const getArgsOrErrorMessage = () => { @@ -240,4 +240,4 @@ const tasks = [ dumpColorScales, ] -main() +void main() diff --git a/devTools/markdownTest/markdown.ts b/devTools/markdownTest/markdown.ts index 4f694ff6d04..b00fdbebea6 100644 --- a/devTools/markdownTest/markdown.ts +++ b/devTools/markdownTest/markdown.ts @@ -1,16 +1,9 @@ -import { - TransactionCloseMode, - knexReadWriteTransaction, - knexReadonlyTransaction, -} from "../../db/db.js" +import { TransactionCloseMode, knexReadonlyTransaction } from "../../db/db.js" import { getPostRawBySlug } from "../../db/model/Post.js" import { enrichedBlocksToMarkdown } from "../../db/model/Gdoc/enrichedToMarkdown.js" -import fs from "fs-extra" - import parseArgs from "minimist" -import { OwidEnrichedGdocBlock } from "@ourworldindata/utils" -import { parsePostArchieml } from "@ourworldindata/utils" +import { OwidEnrichedGdocBlock, parsePostArchieml } from "@ourworldindata/utils" import { getAndLoadGdocBySlug } from "../../db/model/Gdoc/GdocFactory.js" async function main(parsedArgs: parseArgs.ParsedArgs) { @@ -58,4 +51,4 @@ async function main(parsedArgs: parseArgs.ParsedArgs) { } const parsedArgs = parseArgs(process.argv.slice(2)) -main(parsedArgs) +void main(parsedArgs) diff --git a/devTools/navigationTest/navigationTest.ts b/devTools/navigationTest/navigationTest.ts index 63de2df8f85..a191b52f664 100644 --- a/devTools/navigationTest/navigationTest.ts +++ b/devTools/navigationTest/navigationTest.ts @@ -17,7 +17,7 @@ const testSiteNavigation = async () => { return categorySlugs }) - let promises = slugs.map((slug) => { + const promises = slugs.map((slug) => { return fetch(`https://ourworldindata.org/${slug}`, { method: "HEAD", }) @@ -36,4 +36,4 @@ const testSiteNavigation = async () => { console.log("✅ All fetches completed") } -testSiteNavigation() +void testSiteNavigation() diff --git a/devTools/reconstructPostsGdocsComponents/reconstructPostsGdocsComponents.ts b/devTools/reconstructPostsGdocsComponents/reconstructPostsGdocsComponents.ts index bd06063a452..7fec1504d7f 100644 --- a/devTools/reconstructPostsGdocsComponents/reconstructPostsGdocsComponents.ts +++ b/devTools/reconstructPostsGdocsComponents/reconstructPostsGdocsComponents.ts @@ -1,13 +1,9 @@ import parseArgs from "minimist" import { knexRaw, knexReadWriteTransaction } from "../../db/db.js" -import { - DbInsertPostGdocComponent, - DbRawPostGdoc, - parsePostGdocContent, -} from "@ourworldindata/types" +import { DbRawPostGdoc, parsePostGdocContent } from "@ourworldindata/types" import { getGdocComponentsWithoutChildren } from "../../db/model/Gdoc/extractGdocComponentInfo.js" -async function main(parsedArgs: parseArgs.ParsedArgs) { +async function main() { await knexReadWriteTransaction(async (trx) => { await knexRaw(trx, `DELETE FROM posts_gdocs_components`) console.log("Deleted all rows from posts_gdocs_components") @@ -47,5 +43,5 @@ if (parsedArgs["h"]) { `reconstructPostsGdocsComponents - Reconstruct posts_gdocs_components table from posts_gdocs table` ) } else { - main(parsedArgs) + void main() } diff --git a/devTools/regionsUpdater/update.ts b/devTools/regionsUpdater/update.ts index e99077b4e42..634d12c8b1c 100644 --- a/devTools/regionsUpdater/update.ts +++ b/devTools/regionsUpdater/update.ts @@ -70,16 +70,16 @@ function csvToJson(val: string, col: string) { } } -function prettifiedTopology(geoJson: FeatureCollection): Promise { +async function prettifiedTopology(geoJson: FeatureCollection): Promise { // make sure the MapTopology.ts file will be diff-able even after running prettier on the repo - let topoData = topology({ world: geoJson }), + const topoData = topology({ world: geoJson }), arcs = _.remove(topoData.arcs), arcJson = arcs .map((vector) => `${JSON.stringify(vector)},`) .join("\n ") // sort the countries by name and make sure their properties are consistently ordered - let geomKey = "objects.world.geometries" + const geomKey = "objects.world.geometries" _.set(topoData, geomKey, _.sortBy(_.get(topoData, geomKey), "id")) _.set( topoData, @@ -89,29 +89,29 @@ function prettifiedTopology(geoJson: FeatureCollection): Promise { ) ) - return prettier - .format(`export const MapTopology = ${JSON.stringify(topoData)}`, { + const formatted = await prettier.format( + `export const MapTopology = ${JSON.stringify(topoData)}`, + { parser: "typescript", tabWidth: 4, semi: false, - }) - .then((formatted) => - formatted.replace( - /^( arcs:\s*\[)\]/m, - `\n // prettier-ignore\n$1\n ${arcJson}\n ]` - ) - ) + } + ) + return formatted.replace( + /^( {4}arcs:\s*\[)\]/m, + `\n // prettier-ignore\n$1\n ${arcJson}\n ]` + ) } function transformGeography(orig: FeatureCollection): FeatureCollection { - let type = "Feature", - properties = {}, - greenlandCoords // to be pulled out of Denmark + const type = "Feature" + const properties = {} + let greenlandCoords // to be pulled out of Denmark let features = orig.features.map(({ id, geometry }) => { - if (id == "DNK") { + if (id === "DNK") { // remove Greenland from Denmark and save for later - let { coordinates } = geometry as MultiPolygon + const { coordinates } = geometry as MultiPolygon greenlandCoords = coordinates.pop() } else if (id === "-99") { // use owid code for Kosovo @@ -180,10 +180,10 @@ function transformGeography(orig: FeatureCollection): FeatureCollection { } async function didChange(path: string, newData: string): Promise { - let oldData = await readFile(path).catch((e) => ""), - newHash = createHash("md5").update(newData).digest("hex"), - oldHash = createHash("md5").update(oldData).digest("hex"), - message = newHash === oldHash ? "No changes" : "Contents changed" + const oldData = await readFile(path).catch(() => "") + const newHash = createHash("md5").update(newData).digest("hex") + const oldHash = createHash("md5").update(oldData).digest("hex") + const message = newHash === oldHash ? "No changes" : "Contents changed" console.log(`${message}: ${path}`) return newHash !== oldHash @@ -192,28 +192,29 @@ async function didChange(path: string, newData: string): Promise { async function main() { // fetch geojson outlines console.log(`Fetching ${GEO_JSON_URL}`) - let wsGeoJson = await (await fetch(GEO_JSON_URL)).json(), - owidGeoJson = transformGeography(wsGeoJson), - mappableCodes = _.map(owidGeoJson.features, "id") + const wsGeoJson = await (await fetch(GEO_JSON_URL)).json() + const owidGeoJson = transformGeography(wsGeoJson) // fetch csv and js-ify non-string fields console.log(`Fetching ${ETL_REGIONS_URL}`) - let response = await fetch(ETL_REGIONS_URL), - { data, errors, meta } = parse(await response.text(), { - header: true, - transform: csvToJson, - }) + const response = await fetch(ETL_REGIONS_URL) + let { data } = parse(await response.text(), { + header: true, + transform: csvToJson, + }) // strip out empty rows and make sure entities are sorted data = _.sortBy(data, "code").filter((c: any) => !!c.code) - let entities = _.map(data as Entity[], (entity) => { + const entities = _.map(data as Entity[], (entity) => { // drop redundant attrs if (entity.short_name === entity.name) delete entity.short_name if (entity.region_type !== "country") delete entity.is_mappable // update geojson with canonical names & validate mappability flag - let outline = owidGeoJson.features.find(({ id }) => id == entity.code) + const outline = owidGeoJson.features.find( + ({ id }) => id === entity.code + ) if (outline) { outline.id = entity.name } else if (entity.is_mappable) { @@ -234,7 +235,7 @@ async function main() { entity.variant_names = _.get(SEARCH_ALIASES, entity.code) return _.chain(entity) - .mapKeys((val, key) => + .mapKeys((_val, key) => // rename keys to camelCase _.camelCase(key) ) @@ -260,16 +261,16 @@ async function main() { }) // generate new MapTopology.ts file and compare to old version - let newTopology = await prettifiedTopology(owidGeoJson) + const newTopology = await prettifiedTopology(owidGeoJson) if (await didChange(GRAPHER_TOPOLOGY_PATH, newTopology)) { await writeFile(GRAPHER_TOPOLOGY_PATH, newTopology) } // generate new regions.json file and compare to old version - let regionsJson = await prettifiedJson(entities) + const regionsJson = await prettifiedJson(entities) if (await didChange(GRAPHER_REGIONS_PATH, regionsJson)) { await writeFile(GRAPHER_REGIONS_PATH, regionsJson) - let diff = execFileSync("git", [ + const diff = execFileSync("git", [ "diff", "--color=always", GRAPHER_REGIONS_PATH, @@ -281,4 +282,4 @@ async function main() { } } -main() +void main() diff --git a/devTools/schema/generate-default-object-from-schema.ts b/devTools/schema/generate-default-object-from-schema.ts index 9ef00ad59dd..ec27edc54fc 100644 --- a/devTools/schema/generate-default-object-from-schema.ts +++ b/devTools/schema/generate-default-object-from-schema.ts @@ -20,13 +20,17 @@ function generateDefaultObjectFromSchema( ) { const defaultObject: Record = {} if (schema.type === "object") { - for (let key in schema.properties) { + for (const key in schema.properties) { // substitute $ref with the actual definition const ref = schema.properties[key].$ref + // FIXME: Not sure whether != is necessary here. + // eslint-disable-next-line eqeqeq if (ref != undefined) { const regex = /#\/\$defs\/([a-zA-Z]+)/ const [_, defKey] = ref.match(regex) ?? [] const def = defs[defKey] + // FIXME: Not sure whether == is necessary here. + // eslint-disable-next-line eqeqeq if (def == undefined) throw new Error(`Definition "${ref}" not found`) schema.properties[key] = def @@ -38,6 +42,8 @@ function generateDefaultObjectFromSchema( defs ) if (Object.keys(defaults).length) defaultObject[key] = defaults + // FIXME: Not sure whether != is necessary here. + // eslint-disable-next-line eqeqeq } else if (schema.properties[key].default != undefined) { defaultObject[key] = schema.properties[key].default } @@ -48,12 +54,14 @@ function generateDefaultObjectFromSchema( async function main(parsedArgs: parseArgs.ParsedArgs) { const schemaFilename = parsedArgs._[0] + // FIXME: Not sure whether == is necessary here. + // eslint-disable-next-line eqeqeq if (schemaFilename == undefined) { help() process.exit(0) } - let schema = fs.readJSONSync(schemaFilename) + const schema = fs.readJSONSync(schemaFilename) const defs = schema.$defs || {} const defaultConfig = generateDefaultObjectFromSchema(schema, defs) const defaultConfigJSON = JSON.stringify(defaultConfig, undefined, 2) @@ -96,5 +104,5 @@ if (parsedArgs["h"] || parsedArgs["help"]) { help() process.exit(0) } else { - main(parsedArgs) + void main(parsedArgs) } diff --git a/devTools/schemaProcessor/schemaProcessor.ts b/devTools/schemaProcessor/schemaProcessor.ts index b1a2000ef75..6941abc5fb4 100644 --- a/devTools/schemaProcessor/schemaProcessor.ts +++ b/devTools/schemaProcessor/schemaProcessor.ts @@ -5,7 +5,7 @@ import { } from "../../adminShared/schemaProcessing.js" import parseArgs from "minimist" -async function main(parsedArgs: parseArgs.ParsedArgs) { +async function main() { const schema = await fs.readJson("schema.json") const fields: FieldDescription[] = @@ -17,5 +17,5 @@ const parsedArgs = parseArgs(process.argv.slice(2)) if (parsedArgs["h"]) { console.log(`schemaProcessor.js - extract schema info`) } else { - main(parsedArgs) + void main() } diff --git a/devTools/svgTester/create-compare-view.ts b/devTools/svgTester/create-compare-view.ts index 3ae0b451f22..b8885d636e4 100644 --- a/devTools/svgTester/create-compare-view.ts +++ b/devTools/svgTester/create-compare-view.ts @@ -78,7 +78,7 @@ Options: --compare-url Base URL to compare against prod [default: ${LOCAL_URL}] `) } else { - main(parsedArgs) + void main(parsedArgs) } function createComparisonView( diff --git a/devTools/svgTester/dump-chart-ids.ts b/devTools/svgTester/dump-chart-ids.ts index 16055805e54..77796bab74f 100644 --- a/devTools/svgTester/dump-chart-ids.ts +++ b/devTools/svgTester/dump-chart-ids.ts @@ -50,5 +50,5 @@ Options: `) process.exit(0) } else { - main(parsedArgs) + void main(parsedArgs) } diff --git a/devTools/svgTester/dump-data.ts b/devTools/svgTester/dump-data.ts index 49a26ae98c5..435d203f54d 100644 --- a/devTools/svgTester/dump-data.ts +++ b/devTools/svgTester/dump-data.ts @@ -52,5 +52,5 @@ Options: `) process.exit(0) } else { - main(parsedArgs) + void main(parsedArgs) } diff --git a/devTools/svgTester/export-graphs.ts b/devTools/svgTester/export-graphs.ts index 0fea693e018..7744a420694 100644 --- a/devTools/svgTester/export-graphs.ts +++ b/devTools/svgTester/export-graphs.ts @@ -179,5 +179,5 @@ Other options: `) process.exit(0) } else { - main(parsedArgs) + void main(parsedArgs) } diff --git a/devTools/svgTester/utils.ts b/devTools/svgTester/utils.ts index 746e94a7bb6..12d20a1c1d9 100644 --- a/devTools/svgTester/utils.ts +++ b/devTools/svgTester/utils.ts @@ -3,6 +3,7 @@ import { GrapherChartType, GrapherTabName, ALL_GRAPHER_CHART_TYPES, + GrapherInterface, } from "@ourworldindata/types" import { MultipleOwidVariableDataDimensionsMap, @@ -20,7 +21,6 @@ import { } from "../../baker/GrapherImageBaker.js" import { getVariableData } from "../../db/model/Variable.js" -import { GrapherInterface } from "@ourworldindata/types" import _ from "lodash" import util from "util" import { getHeapStatistics } from "v8" @@ -121,7 +121,7 @@ export function logIfVerbose(verbose: boolean, message: string, param?: any) { } function findFirstDiffIndex(a: string, b: string): number { - var i = 0 + let i = 0 while (i < a.length && i < b.length && a[i] === b[i]) i++ if (a.length === b.length && a.length === i) { console.warn("No difference found even though hash was different!") @@ -165,11 +165,14 @@ export async function verifySvg( return resultDifference({ chartId: newSvgRecord.chartId, startIndex: firstDiffIndex, - referenceSvgFragment: preparedReferenceSvg.substr( + referenceSvgFragment: preparedReferenceSvg.substring( firstDiffIndex - 20, - 40 + firstDiffIndex + 20 + ), + newSvgFragment: preparedNewSvg.substring( + firstDiffIndex - 20, + firstDiffIndex + 20 ), - newSvgFragment: preparedNewSvg.substr(firstDiffIndex - 20, 40), }) } @@ -620,7 +623,7 @@ export async function renderAndVerifySvg({ // verifySvg returns a Result type - if it is success we don't care any further // but if there was an error then we write the svg and a message to stderr switch (validationResult.kind) { - case "difference": + case "difference": { if (verbose) logDifferencesToConsole(svgRecord, validationResult) const pathFragments = path.parse(svgRecord.svgFilename) @@ -630,6 +633,8 @@ export async function renderAndVerifySvg({ ) const cleanedSvg = prepareSvgForComparision(svg) await fs.writeFile(outputPath, cleanedSvg) + break + } } return Promise.resolve(validationResult) } catch (err) { diff --git a/devTools/svgTester/verify-graphs.ts b/devTools/svgTester/verify-graphs.ts index ff11b28bb13..ad350314f70 100644 --- a/devTools/svgTester/verify-graphs.ts +++ b/devTools/svgTester/verify-graphs.ts @@ -160,5 +160,5 @@ Other options: `) process.exit(0) } else { - main(parsedArgs) + void main(parsedArgs) } diff --git a/devTools/syncGraphersToR2/syncGraphersToR2.ts b/devTools/syncGraphersToR2/syncGraphersToR2.ts index 8a17747f5a5..3ffc4508a45 100644 --- a/devTools/syncGraphersToR2/syncGraphersToR2.ts +++ b/devTools/syncGraphersToR2/syncGraphersToR2.ts @@ -309,5 +309,5 @@ if (parsedArgs["h"]) { --dry-run: Don't make any actual changes to R2` ) } else { - main(parsedArgs, parsedArgs["dry-run"]) + void main(parsedArgs, parsedArgs["dry-run"]) } diff --git a/devTools/tsconfigs/tsconfig.base.json b/devTools/tsconfigs/tsconfig.base.json index c51deb079c0..9b13020b1fa 100644 --- a/devTools/tsconfigs/tsconfig.base.json +++ b/devTools/tsconfigs/tsconfig.base.json @@ -24,7 +24,7 @@ "allowJs": false, "sourceMap": true, "moduleResolution": "node", - "jsx": "react", + "jsx": "react-jsx", "experimentalDecorators": true, "useDefineForClassFields": false, diff --git a/devTools/wayback/wayback.ts b/devTools/wayback/wayback.ts index 766e0027832..ff7607cd50c 100755 --- a/devTools/wayback/wayback.ts +++ b/devTools/wayback/wayback.ts @@ -20,7 +20,7 @@ const needsRewrite = (mimeType: string) => mimeType === "image/svg+xml" const fixPaths = (fileContent: string) => - fileContent.replace(/https?\:\/\/ourworldindata\.org\//g, "/") + fileContent.replace(/https?:\/\/ourworldindata\.org\//g, "/") app.get("*", async (req, res) => { const filepath = path.resolve(staticFolder + req.path) @@ -33,7 +33,7 @@ app.get("*", async (req, res) => { const mimeType = mime.lookup(filepath) || "text/plain" - if (needsRewrite(mimeType)) { + if (typeof mimeType === "string" && needsRewrite(mimeType)) { const fileContent = await fs.readFile(filepath, "utf8") const rewritten = fixPaths(fileContent) res.setHeader("Content-Type", mimeType) diff --git a/eslint.config.mjs b/eslint.config.mjs new file mode 100644 index 00000000000..c7ea780d1e7 --- /dev/null +++ b/eslint.config.mjs @@ -0,0 +1,187 @@ +// @ts-check + +import eslint from "@eslint/js" +// TODO: Remove this when the lib adds type declarations. +// @ts-ignore +import importPlugin from "eslint-plugin-import" +import prettier from "eslint-config-prettier" +import react from "eslint-plugin-react" +// TODO: Remove this when the lib adds type declarations. +// https://github.com/facebook/react/issues/30119 +// @ts-ignore +import reactHooks from "eslint-plugin-react-hooks" +import tseslint from "typescript-eslint" + +export default tseslint.config( + eslint.configs.recommended, + tseslint.configs.recommended, + importPlugin.flatConfigs.recommended, + importPlugin.flatConfigs.typescript, + // @ts-ignore + react.configs.flat.recommended, + // @ts-ignore + react.configs.flat["jsx-runtime"], + prettier, + { + plugins: { + // They don't have a compatible flat config at the moment. Update to + // a flat one when they do. + "react-hooks": reactHooks, + }, + languageOptions: { + parserOptions: { + project: "./tsconfig.eslint.json", + }, + }, + settings: { + "import/resolver": { + typescript: true, + node: true, + }, + react: { + version: "detect", + }, + }, + rules: { + ...reactHooks.configs.recommended.rules, + "@typescript-eslint/consistent-type-exports": [ + "warn", + { + fixMixedExportsWithInlineTypeSpecifier: true, + }, + ], + + "@typescript-eslint/explicit-function-return-type": "off", + "@typescript-eslint/explicit-module-boundary-types": "off", + "@typescript-eslint/no-empty-function": "warn", + "@typescript-eslint/no-empty-interface": "warn", + "@typescript-eslint/no-explicit-any": "off", + "@typescript-eslint/no-for-in-array": "warn", + "@typescript-eslint/no-non-null-assertion": "off", + + "@typescript-eslint/no-unused-vars": [ + "warn", + { + varsIgnorePattern: "^_", + argsIgnorePattern: "^_", + }, + ], + + "@typescript-eslint/prefer-for-of": "warn", + "@typescript-eslint/restrict-plus-operands": "warn", + eqeqeq: "warn", + "import/named": "off", + "import/namespace": "off", + "import/default": "off", + "import/no-named-as-default-member": "off", + "import/no-unresolved": "off", + + "no-console": [ + "warn", + { + allow: ["warn", "error"], + }, + ], + + "prefer-const": [ + "warn", + { + destructuring: "all", + }, + ], + + "react/display-name": "warn", + "react/jsx-key": "warn", + + "react/jsx-no-target-blank": [ + "warn", + { + allowReferrer: true, + }, + ], + + "react/no-render-return-value": "warn", + + "react/no-unescaped-entities": [ + "warn", + { + forbid: [">", "}"], + }, + ], + + "react/prop-types": "warn", + "@typescript-eslint/no-floating-promises": "error", + "no-constant-binary-expression": "error", + }, + }, + { + files: [ + "adminSiteClient/**/*", + "adminSiteServer/**/*", + "baker/**/*", + "db/**/*", + "devTools/**/*", + "functions/**/*", + "explorerAdminClient/**/*", + "explorerAdminServer/**/*", + "settings/**/*", + ], + rules: { + "no-console": "off", + }, + }, + { + files: [ + "db/**/*", + "packages/@ourworldindata/core-table/**/*", + "packages/@ourworldindata/grapher/src/axis/**/*", + "packages/@ourworldindata/grapher/src/barCharts/**/*", + "packages/@ourworldindata/grapher/src/bodyDiv/**/*", + "packages/@ourworldindata/grapher/src/captionedChart/**/*", + "packages/@ourworldindata/grapher/src/chart/**/*", + "packages/@ourworldindata/grapher/src/color/**/*", + "packages/@ourworldindata/grapher/src/controls/**/*", + "packages/@ourworldindata/grapher/src/core/**/*", + "packages/@ourworldindata/grapher/src/dataTable/**/*", + "packages/@ourworldindata/grapher/src/facetChart/**/*", + "packages/@ourworldindata/grapher/src/footer/**/*", + "packages/@ourworldindata/grapher/src/header/**/*", + "packages/@ourworldindata/grapher/src/lineCharts/**/*", + "packages/@ourworldindata/grapher/src/loadingIndicator/**/*", + "packages/@ourworldindata/grapher/src/mapCharts/**/*", + "packages/@ourworldindata/grapher/src/noDataModal/**/*", + "packages/@ourworldindata/grapher/src/scatterCharts/**/*", + "packages/@ourworldindata/grapher/src/selection/**/*", + "packages/@ourworldindata/grapher/src/stackedCharts/**/*", + "packages/@ourworldindata/grapher/src/timeline/**/*", + "packages/@ourworldindata/grapher/src/tooltip/**/*", + "packages/@ourworldindata/grapher/src/verticalColorLegend/**/*", + "packages/@ourworldindata/utils/**/*", + "packages/@ourworldindata/utils/src/persistable/**/*", + "settings/**/*", + ], + rules: { + "@typescript-eslint/explicit-function-return-type": "warn", + "@typescript-eslint/explicit-module-boundary-types": "warn", + }, + }, + { + ignores: [ + "**/.*", + "**/*.cjs", + "**/*.js", + "**/dist/", + "**/jest.config.js", + "**/knexfile.ts", + "bakedSite/**/*", + "coverage/**/*", + "devtools/**/*", + "eslint.config.mjs", + "itsJustJavascript/**/*", + "localBake/**/*", + "packages/@ourworldindata/*/dist/", + "packages/@ourworldindata/grapher/tsup.config.bundled_*.mjs", + "vite.*.mjs", + ], + } +) diff --git a/explorerAdminClient/.eslintrc.yaml b/explorerAdminClient/.eslintrc.yaml deleted file mode 100644 index adf76b50604..00000000000 --- a/explorerAdminClient/.eslintrc.yaml +++ /dev/null @@ -1,2 +0,0 @@ -rules: - no-console: "off" diff --git a/explorerAdminClient/ExplorerCreatePage.jsdom.test.tsx b/explorerAdminClient/ExplorerCreatePage.jsdom.test.tsx index 21fdb3cbb56..9810020ec85 100755 --- a/explorerAdminClient/ExplorerCreatePage.jsdom.test.tsx +++ b/explorerAdminClient/ExplorerCreatePage.jsdom.test.tsx @@ -1,7 +1,9 @@ -#! /usr/bin/env jestimport { ExplorerCreatePage } from "./ExplorerCreatePage.js" +#! /usr/bin/env jest import Enzyme from "enzyme" import Adapter from "@wojtekmaj/enzyme-adapter-react-17" +import { ExplorerCreatePage } from "./ExplorerCreatePage.js" + Enzyme.configure({ adapter: new Adapter() }) describe(ExplorerCreatePage, () => { diff --git a/explorerAdminClient/ExplorersListPage.tsx b/explorerAdminClient/ExplorersListPage.tsx index d4e1b079c6f..341a4800478 100644 --- a/explorerAdminClient/ExplorersListPage.tsx +++ b/explorerAdminClient/ExplorersListPage.tsx @@ -225,7 +225,7 @@ export class ExplorersIndexPage extends Component<{ const html = text.replace( new RegExp( this.highlightSearch.replace( - /[-\/\\^$*+?.()|[\]{}]/g, + /[-/\\^$*+?.()|[\]{}]/g, "\\$&" ), "i" diff --git a/explorerAdminServer/.eslintrc.yaml b/explorerAdminServer/.eslintrc.yaml deleted file mode 100644 index adf76b50604..00000000000 --- a/explorerAdminServer/.eslintrc.yaml +++ /dev/null @@ -1,2 +0,0 @@ -rules: - no-console: "off" diff --git a/functions/donation/thank-you.ts b/functions/donation/thank-you.ts index fd795a7a508..f6538ace6ab 100644 --- a/functions/donation/thank-you.ts +++ b/functions/donation/thank-you.ts @@ -157,7 +157,7 @@ export const onRequestPost: PagesFunction = async ({ ) switch (event.type) { - case "checkout.session.completed": + case "checkout.session.completed": { const session = event.data.object await sendThankYouEmail( { @@ -183,7 +183,11 @@ export const onRequestPost: PagesFunction = async ({ env ) break - default: // do not process other event types + } + default: { + // do not process other event types + break + } } return new Response(null, { diff --git a/gitCms/GitCmsServer.ts b/gitCms/GitCmsServer.ts index c45251cd6ac..23b5253cd9d 100644 --- a/gitCms/GitCmsServer.ts +++ b/gitCms/GitCmsServer.ts @@ -152,7 +152,7 @@ export class GitCmsServer { globStr: string, folder: string ): Promise { - const query = globStr.replace(/[^a-zA-Z\*]/, "") + const query = globStr.replace(/[^a-zA-Z*]/, "") const cwd = this.baseDir + folder const results = sync(query, { cwd, @@ -173,7 +173,7 @@ export class GitCmsServer { authorName = GIT_DEFAULT_USERNAME, authorEmail = GIT_DEFAULT_EMAIL ): Promise { - const filepath = rawFilepath.replace(/\~/g, "/") + const filepath = rawFilepath.replace(/~/g, "/") try { ensureNoParentLinksInFilePath(filepath) @@ -258,7 +258,7 @@ export class GitCmsServer { } = {} routes[GIT_CMS_PULL_ROUTE] = async ( - req: Request, + _req: Request, res: ResponseWithUserInfo ) => res.send(await this.pullCommand()) // Pull latest from github diff --git a/package.json b/package.json index 4ff3b579446..9df2b74f08e 100644 --- a/package.json +++ b/package.json @@ -176,6 +176,7 @@ "yaml": "^2.4.2" }, "devDependencies": { + "@eslint/js": "^9.17.0", "@rmp135/sql-ts": "^2.1.0", "@testing-library/jest-dom": "^6.1.3", "@testing-library/react": "^12.1.5", @@ -219,18 +220,16 @@ "@types/url-parse": "^1.4.8", "@types/webfontloader": "^1.6.34", "@types/workerpool": "^6.1.0", - "@typescript-eslint/eslint-plugin": "^8.10.0", - "@typescript-eslint/parser": "^8.10.0", "@vitejs/plugin-react": "^4.3.1", "@yarnpkg/types": "^4.0.0", "bundlewatch": "^0.4.0", "cypress": "9.3.1", - "eslint": "^8.57.1", + "eslint": "^9.17.0", "eslint-config-prettier": "^9.1.0", - "eslint-import-resolver-typescript": "^3.6.3", - "eslint-plugin-import": "^2.30.0", - "eslint-plugin-react": "^7.36.1", - "eslint-plugin-react-hooks": "^4.6.2", + "eslint-import-resolver-typescript": "^3.7.0", + "eslint-plugin-import": "^2.31.0", + "eslint-plugin-react": "^7.37.2", + "eslint-plugin-react-hooks": "^5.1.0", "flag-icons": "^7.2.3", "http-server": "^14.1.1", "husky": "^9.0.11", @@ -243,6 +242,7 @@ "tmex": "^1.0.8", "topojson-server": "^3.0.1", "tsx": "^4.16.2", + "typescript-eslint": "^8.18.1", "vite": "^5.4.2", "vite-plugin-checker": "^0.7.2", "wrangler": "^3.81.0" diff --git a/packages/@ourworldindata/components/package.json b/packages/@ourworldindata/components/package.json index 7c716f9212c..862831abded 100644 --- a/packages/@ourworldindata/components/package.json +++ b/packages/@ourworldindata/components/package.json @@ -31,8 +31,8 @@ "@types/react": "^17.0.69", "@types/react-dom": "^17.0.22", "esbuild-sass-plugin": "^3.3.1", - "eslint": "^8.57.1", - "eslint-plugin-react-hooks": "^4.6.2", + "eslint": "^9.17.0", + "eslint-plugin-react-hooks": "^5.1.0", "typescript": "~5.7.2" }, "license": "MIT" diff --git a/packages/@ourworldindata/components/src/markdown/remarkPlainLinks.ts b/packages/@ourworldindata/components/src/markdown/remarkPlainLinks.ts index b0b112b58cf..2c2564d57e3 100644 --- a/packages/@ourworldindata/components/src/markdown/remarkPlainLinks.ts +++ b/packages/@ourworldindata/components/src/markdown/remarkPlainLinks.ts @@ -14,7 +14,7 @@ import findAndReplace from "mdast-util-find-and-replace" // period should not be part of the URL) // Finally, the very last part is a lone forward slash which would not be matched by the previous subgroup. export const urlRegex = - /https?:\/\/([\w-]+\.)+[\w-]+((\/[\p{L}\p{N}_\-.\+/?:%&=~#]*[\p{L}\p{N}_\-\+/%&=~#])|\/)?/gu + /https?:\/\/([\w-]+\.)+[\w-]+((\/[\p{L}\p{N}_\-.+/?:%&=~#]*[\p{L}\p{N}_\-+/%&=~#])|\/)?/gu export function remarkPlainLinks() { const turnIntoLink = (value: any, _match: string) => { diff --git a/packages/@ourworldindata/core-table/.eslintrc.yaml b/packages/@ourworldindata/core-table/.eslintrc.yaml deleted file mode 100644 index 2972fb8a9d9..00000000000 --- a/packages/@ourworldindata/core-table/.eslintrc.yaml +++ /dev/null @@ -1,3 +0,0 @@ -rules: - "@typescript-eslint/explicit-function-return-type": "warn" - "@typescript-eslint/explicit-module-boundary-types": "warn" diff --git a/packages/@ourworldindata/core-table/package.json b/packages/@ourworldindata/core-table/package.json index 2332ce3d227..88860fcff8b 100644 --- a/packages/@ourworldindata/core-table/package.json +++ b/packages/@ourworldindata/core-table/package.json @@ -23,7 +23,7 @@ "devDependencies": { "@types/d3": "^6", "@types/papaparse": "^5.3.15", - "eslint": "^8.57.1", + "eslint": "^9.17.0", "typescript": "~5.7.2" }, "license": "MIT" diff --git a/packages/@ourworldindata/core-table/src/CoreTableColumns.ts b/packages/@ourworldindata/core-table/src/CoreTableColumns.ts index 8c08d7f2489..72bfe436e04 100644 --- a/packages/@ourworldindata/core-table/src/CoreTableColumns.ts +++ b/packages/@ourworldindata/core-table/src/CoreTableColumns.ts @@ -987,7 +987,7 @@ export const ColumnTypeMap = { // Keep this in. This is used as a compile-time check that ColumnTypeMap covers all // column names defined in ColumnTypeNames, since that is quite difficult to ensure // otherwise without losing inferred type information. -// eslint-disable-next-line @typescript-eslint/no-unused-vars + const _ColumnTypeMap: { [key in ColumnTypeNames]: unknown } = ColumnTypeMap diff --git a/packages/@ourworldindata/explorer/package.json b/packages/@ourworldindata/explorer/package.json index cecede0f3b7..524449cd8ac 100644 --- a/packages/@ourworldindata/explorer/package.json +++ b/packages/@ourworldindata/explorer/package.json @@ -69,8 +69,8 @@ "enzyme": "^3.11.0", "esbuild": "^0.21.5", "esbuild-sass-plugin": "^3.3.1", - "eslint": "^8.57.1", - "eslint-plugin-react-hooks": "^4.6.2", + "eslint": "^9.17.0", + "eslint-plugin-react-hooks": "^5.1.0", "jest": "^29.7.0", "jest-environment-jsdom": "^29.7.0", "tsup": "^8.1.0", diff --git a/packages/@ourworldindata/explorer/src/ExplorerControls.jsdom.test.tsx b/packages/@ourworldindata/explorer/src/ExplorerControls.jsdom.test.tsx index 19bfa65ae23..31268bd61ed 100755 --- a/packages/@ourworldindata/explorer/src/ExplorerControls.jsdom.test.tsx +++ b/packages/@ourworldindata/explorer/src/ExplorerControls.jsdom.test.tsx @@ -1,4 +1,5 @@ -#! /usr/bin/env jestimport { ExplorerControlType } from "./ExplorerConstants.js" +#! /usr/bin/env jest +import { ExplorerControlType } from "./ExplorerConstants.js" import { ExplorerControlPanel } from "./ExplorerControls.js" import Enzyme from "enzyme" diff --git a/packages/@ourworldindata/explorer/src/ExplorerProgram.ts b/packages/@ourworldindata/explorer/src/ExplorerProgram.ts index c00007cc622..fecb5b2e4b6 100644 --- a/packages/@ourworldindata/explorer/src/ExplorerProgram.ts +++ b/packages/@ourworldindata/explorer/src/ExplorerProgram.ts @@ -1,3 +1,4 @@ +/* eslint-disable no-sparse-arrays */ import { CoreMatrix, ColumnTypeNames, diff --git a/packages/@ourworldindata/explorer/src/gridLang/GridLangConstants.ts b/packages/@ourworldindata/explorer/src/gridLang/GridLangConstants.ts index 570a29faa07..2dbc3d3909e 100644 --- a/packages/@ourworldindata/explorer/src/gridLang/GridLangConstants.ts +++ b/packages/@ourworldindata/explorer/src/gridLang/GridLangConstants.ts @@ -149,7 +149,7 @@ export const SubTableValueCellDef: CellDef = { } const MatchUrlsOnlyRegex = - /((([A-Za-z]{3,9}:(?:\/\/)?)(?:[-;:&=\+\$,\w]+@)?[A-Za-z0-9.-]+|(?:www.|[-;:&=\+\$,\w]+@)[A-Za-z0-9.-]+)((?:\/[\+~%\/.\w-_]*)?\??(?:[-\+=&;%@.\w_]*)#?(?:[\w]*))?)/ + /((([A-Za-z]{3,9}:(?:\/\/)?)(?:[-;:&=+$,\w]+@)?[A-Za-z0-9.-]+|(?:www.|[-;:&=+$,\w]+@)[A-Za-z0-9.-]+)((?:\/[+~%/.\w-_]*)?\??(?:[-+=&;%@.\w_]*)#?(?:[\w]*))?)/ export const UrlCellDef: CellDef = { keyword: "", @@ -175,7 +175,7 @@ export const CommentCellDef: CellDef = { keyword: "", cssClass: "CommentType", description: "Just a comment.", - regex: /^(\#\#|💬)/, + regex: /^(##|💬)/, } export const WorkInProgressCellDef: CellDef = { @@ -207,7 +207,7 @@ export const EtlPathCellDef: CellDef = { keyword: "", cssClass: "IndicatorIdOrEtlPath", description: "Path to an ETL indicator.", - regex: /^$|^[\w\d_/\-]+#[\w\d_/\-]+$/, + regex: /^$|^[\w\d_/-]+#[\w\d_/-]+$/, requirementsDescription: `Can only contain the characters a-zA-Z0-9-_/#`, } @@ -215,7 +215,7 @@ export const IndicatorIdOrEtlPathCellDef: CellDef = { keyword: "", cssClass: "IndicatorIdOrEtlPath", description: "A single indicator ID or a path to an ETL indicator.", - regex: /^\d+|[\w\d_/\-]+#[\w\d_/\-]+$/, + regex: /^\d+|[\w\d_/-]+#[\w\d_/-]+$/, requirementsDescription: `Can only contain the characters a-zA-Z0-9-_/#`, } @@ -223,7 +223,7 @@ export const IndicatorIdsOrEtlPathsCellDef: CellDef = { keyword: "", cssClass: "IndicatorIdOrEtlPath", description: "One or more indicator IDs or paths to an ETL indicator.", - regex: /^((\d+|[\w\d_/\-]*#[\w\d_/\-]+)( +|$))+$/, + regex: /^((\d+|[\w\d_/-]*#[\w\d_/-]+)( +|$))+$/, requirementsDescription: `Can only contain the characters a-zA-Z0-9-_/# `, } diff --git a/packages/@ourworldindata/explorer/src/urlMigrations/ExplorerUrlMigrationUtils.ts b/packages/@ourworldindata/explorer/src/urlMigrations/ExplorerUrlMigrationUtils.ts index 1e8eac81ece..9c2d272eede 100644 --- a/packages/@ourworldindata/explorer/src/urlMigrations/ExplorerUrlMigrationUtils.ts +++ b/packages/@ourworldindata/explorer/src/urlMigrations/ExplorerUrlMigrationUtils.ts @@ -37,7 +37,7 @@ export const transformQueryParams = ( export const getExplorerSlugFromUrl = (url: Url): string | undefined => { if (!url.pathname) return undefined const match = url.pathname.match( - new RegExp(`^\/+${EXPLORERS_ROUTE_FOLDER}\/+([^\/]+)`) + new RegExp(`^/+${EXPLORERS_ROUTE_FOLDER}/+([^/]+)`) ) if (match && match[1]) return match[1] return undefined diff --git a/packages/@ourworldindata/grapher/package.json b/packages/@ourworldindata/grapher/package.json index 0590529f808..93122fac45b 100644 --- a/packages/@ourworldindata/grapher/package.json +++ b/packages/@ourworldindata/grapher/package.json @@ -68,8 +68,8 @@ "enzyme": "^3.11.0", "esbuild": "^0.21.5", "esbuild-sass-plugin": "^3.3.1", - "eslint": "^8.57.1", - "eslint-plugin-react-hooks": "^4.6.2", + "eslint": "^9.17.0", + "eslint-plugin-react-hooks": "^5.1.0", "jest": "^29.7.0", "jest-environment-jsdom": "^29.7.0", "tsup": "^8.1.0", diff --git a/packages/@ourworldindata/grapher/src/axis/.eslintrc.yaml b/packages/@ourworldindata/grapher/src/axis/.eslintrc.yaml deleted file mode 100644 index 2972fb8a9d9..00000000000 --- a/packages/@ourworldindata/grapher/src/axis/.eslintrc.yaml +++ /dev/null @@ -1,3 +0,0 @@ -rules: - "@typescript-eslint/explicit-function-return-type": "warn" - "@typescript-eslint/explicit-module-boundary-types": "warn" diff --git a/packages/@ourworldindata/grapher/src/axis/AxisViews.jsdom.test.tsx b/packages/@ourworldindata/grapher/src/axis/AxisViews.jsdom.test.tsx index bb6ac66a29f..ba071966afc 100755 --- a/packages/@ourworldindata/grapher/src/axis/AxisViews.jsdom.test.tsx +++ b/packages/@ourworldindata/grapher/src/axis/AxisViews.jsdom.test.tsx @@ -1,4 +1,6 @@ -#! /usr/bin/env jestimport { AxisConfig } from "./AxisConfig" +#! /usr/bin/env jest + +import { AxisConfig } from "./AxisConfig" import { DualAxisComponent, HorizontalAxisGridLines } from "./AxisViews" import { ScaleType } from "@ourworldindata/types" import { DualAxis } from "./Axis" diff --git a/packages/@ourworldindata/grapher/src/barCharts/.eslintrc.yaml b/packages/@ourworldindata/grapher/src/barCharts/.eslintrc.yaml deleted file mode 100644 index 2972fb8a9d9..00000000000 --- a/packages/@ourworldindata/grapher/src/barCharts/.eslintrc.yaml +++ /dev/null @@ -1,3 +0,0 @@ -rules: - "@typescript-eslint/explicit-function-return-type": "warn" - "@typescript-eslint/explicit-module-boundary-types": "warn" diff --git a/packages/@ourworldindata/grapher/src/bodyDiv/.eslintrc.yaml b/packages/@ourworldindata/grapher/src/bodyDiv/.eslintrc.yaml deleted file mode 100644 index 2972fb8a9d9..00000000000 --- a/packages/@ourworldindata/grapher/src/bodyDiv/.eslintrc.yaml +++ /dev/null @@ -1,3 +0,0 @@ -rules: - "@typescript-eslint/explicit-function-return-type": "warn" - "@typescript-eslint/explicit-module-boundary-types": "warn" diff --git a/packages/@ourworldindata/grapher/src/captionedChart/.eslintrc.yaml b/packages/@ourworldindata/grapher/src/captionedChart/.eslintrc.yaml deleted file mode 100644 index 2972fb8a9d9..00000000000 --- a/packages/@ourworldindata/grapher/src/captionedChart/.eslintrc.yaml +++ /dev/null @@ -1,3 +0,0 @@ -rules: - "@typescript-eslint/explicit-function-return-type": "warn" - "@typescript-eslint/explicit-module-boundary-types": "warn" diff --git a/packages/@ourworldindata/grapher/src/captionedChart/CaptionedChart.tsx b/packages/@ourworldindata/grapher/src/captionedChart/CaptionedChart.tsx index b7fc5140dd1..251e3449235 100644 --- a/packages/@ourworldindata/grapher/src/captionedChart/CaptionedChart.tsx +++ b/packages/@ourworldindata/grapher/src/captionedChart/CaptionedChart.tsx @@ -549,7 +549,9 @@ export class StaticCaptionedChart extends CaptionedChart { try { if (this.manager.bakedGrapherURL) origin = new URL(this.manager.bakedGrapherURL).origin - } catch {} + } catch { + // ignore + } const css = `@import url(${origin}/fonts.css)` return ( diff --git a/packages/@ourworldindata/grapher/src/captionedChart/StaticChartRasterizer.tsx b/packages/@ourworldindata/grapher/src/captionedChart/StaticChartRasterizer.tsx index b3d3820692e..711dc2245a8 100644 --- a/packages/@ourworldindata/grapher/src/captionedChart/StaticChartRasterizer.tsx +++ b/packages/@ourworldindata/grapher/src/captionedChart/StaticChartRasterizer.tsx @@ -1,5 +1,5 @@ export const EMBEDDED_FONTS_CSS = "/fonts/embedded.css" -export const IMPORT_FONTS_REGEX = /@import url\([^\)]*?fonts\.css\)/ +export const IMPORT_FONTS_REGEX = /@import url\([^)]*?fonts\.css\)/ export interface GrapherExport { url: string @@ -92,7 +92,7 @@ export class StaticChartRasterizer { // otherwise, keep retrying until we reach the time limit console.warn( "preloading fonts...", - faces.filter((f, i) => !outcomes[i]).map((f) => f.font) + faces.filter((_f, i) => !outcomes[i]).map((f) => f.font) ) await new Promise((res) => setTimeout(res, RETRY_DELAY_MS + (retry * RETRY_DELAY_MS) / 2) diff --git a/packages/@ourworldindata/grapher/src/chart/.eslintrc.yaml b/packages/@ourworldindata/grapher/src/chart/.eslintrc.yaml deleted file mode 100644 index 2972fb8a9d9..00000000000 --- a/packages/@ourworldindata/grapher/src/chart/.eslintrc.yaml +++ /dev/null @@ -1,3 +0,0 @@ -rules: - "@typescript-eslint/explicit-function-return-type": "warn" - "@typescript-eslint/explicit-module-boundary-types": "warn" diff --git a/packages/@ourworldindata/grapher/src/color/.eslintrc.yaml b/packages/@ourworldindata/grapher/src/color/.eslintrc.yaml deleted file mode 100644 index 2972fb8a9d9..00000000000 --- a/packages/@ourworldindata/grapher/src/color/.eslintrc.yaml +++ /dev/null @@ -1,3 +0,0 @@ -rules: - "@typescript-eslint/explicit-function-return-type": "warn" - "@typescript-eslint/explicit-module-boundary-types": "warn" diff --git a/packages/@ourworldindata/grapher/src/controls/.eslintrc.yaml b/packages/@ourworldindata/grapher/src/controls/.eslintrc.yaml deleted file mode 100644 index 2972fb8a9d9..00000000000 --- a/packages/@ourworldindata/grapher/src/controls/.eslintrc.yaml +++ /dev/null @@ -1,3 +0,0 @@ -rules: - "@typescript-eslint/explicit-function-return-type": "warn" - "@typescript-eslint/explicit-module-boundary-types": "warn" diff --git a/packages/@ourworldindata/grapher/src/controls/ContentSwitchers.tsx b/packages/@ourworldindata/grapher/src/controls/ContentSwitchers.tsx index 78ed5aa34a0..33282da9dbd 100644 --- a/packages/@ourworldindata/grapher/src/controls/ContentSwitchers.tsx +++ b/packages/@ourworldindata/grapher/src/controls/ContentSwitchers.tsx @@ -177,13 +177,14 @@ function TabIcon({ return case GRAPHER_TAB_NAMES.WorldMap: return - default: + default: { const chartIcon = tab === GRAPHER_TAB_NAMES.LineChart && isLineChartThatTurnedIntoDiscreteBar ? chartIcons[GRAPHER_CHART_TYPES.DiscreteBar] : chartIcons[tab] return chartIcon + } } } diff --git a/packages/@ourworldindata/grapher/src/controls/entityPicker/EntityPicker.tsx b/packages/@ourworldindata/grapher/src/controls/entityPicker/EntityPicker.tsx index 328558579ab..6d81c366150 100644 --- a/packages/@ourworldindata/grapher/src/controls/entityPicker/EntityPicker.tsx +++ b/packages/@ourworldindata/grapher/src/controls/entityPicker/EntityPicker.tsx @@ -197,7 +197,9 @@ export class EntityPicker extends React.Component<{ ).map((region) => region.name) if (userRegionNames) this.localEntityNames = userRegionNames - } catch {} + } catch { + // ignore + } } @computed @@ -324,7 +326,7 @@ export class EntityPicker extends React.Component<{ // The hover will be unblocked iff the user moves the mouse (relative to the menu). this.blockHover() switch (event.key) { - case "Enter": + case "Enter": { if (event.keyCode === 229) { // ignore the keydown event from an Input Method Editor(IME) // ref. https://www.w3.org/TR/uievents/#determine-keydown-keyup-keyCode @@ -336,6 +338,7 @@ export class EntityPicker extends React.Component<{ this.clearSearchInput() this.manager.analytics?.logEntityPickerEvent("enter", name) break + } case "ArrowUp": this.focusOptionDirection(FocusDirection.up) break diff --git a/packages/@ourworldindata/grapher/src/controls/globalEntitySelector/GlobalEntitySelector.jsdom.test.tsx b/packages/@ourworldindata/grapher/src/controls/globalEntitySelector/GlobalEntitySelector.jsdom.test.tsx index bdadf0d6e0f..76d3fbf2d3c 100644 --- a/packages/@ourworldindata/grapher/src/controls/globalEntitySelector/GlobalEntitySelector.jsdom.test.tsx +++ b/packages/@ourworldindata/grapher/src/controls/globalEntitySelector/GlobalEntitySelector.jsdom.test.tsx @@ -1,4 +1,5 @@ -#! /usr/bin/env jestimport Enzyme from "enzyme" +#! /usr/bin/env jest +import Enzyme from "enzyme" import Adapter from "@wojtekmaj/enzyme-adapter-react-17" import { GlobalEntitySelector } from "./GlobalEntitySelector" import { SelectionArray } from "../../selection/SelectionArray" diff --git a/packages/@ourworldindata/grapher/src/controls/globalEntitySelector/GlobalEntitySelector.tsx b/packages/@ourworldindata/grapher/src/controls/globalEntitySelector/GlobalEntitySelector.tsx index cf8a28c7b6e..348c69ac0e8 100644 --- a/packages/@ourworldindata/grapher/src/controls/globalEntitySelector/GlobalEntitySelector.tsx +++ b/packages/@ourworldindata/grapher/src/controls/globalEntitySelector/GlobalEntitySelector.tsx @@ -196,7 +196,9 @@ export class GlobalEntitySelector extends React.Component<{ (entity): boolean => entity.code === localCountryCode.code ) if (country) this.localEntityName = country.name - } catch {} + } catch { + // ignore + } } @action.bound private prepareOptionGroups(): GroupBase[] { diff --git a/packages/@ourworldindata/grapher/src/core/.eslintrc.yaml b/packages/@ourworldindata/grapher/src/core/.eslintrc.yaml deleted file mode 100644 index 2972fb8a9d9..00000000000 --- a/packages/@ourworldindata/grapher/src/core/.eslintrc.yaml +++ /dev/null @@ -1,3 +0,0 @@ -rules: - "@typescript-eslint/explicit-function-return-type": "warn" - "@typescript-eslint/explicit-module-boundary-types": "warn" diff --git a/packages/@ourworldindata/grapher/src/core/EntityUrlBuilder.ts b/packages/@ourworldindata/grapher/src/core/EntityUrlBuilder.ts index 9382f54e338..fbc3e928313 100644 --- a/packages/@ourworldindata/grapher/src/core/EntityUrlBuilder.ts +++ b/packages/@ourworldindata/grapher/src/core/EntityUrlBuilder.ts @@ -89,7 +89,7 @@ const migrateV1Delimited: UrlMigration = (url) => { */ // Pattern for a entity name - number pair, where the entity name contains at least one non-digit character. -const LegacyDimensionRegex = /^(.*\D.*)\-\d+$/ +const LegacyDimensionRegex = /^(.*\D.*)-\d+$/ const injectEntityNamesInLegacyDimension = ( entityNames: EntityName[] diff --git a/packages/@ourworldindata/grapher/src/core/Grapher.tsx b/packages/@ourworldindata/grapher/src/core/Grapher.tsx index 8cbd4e22d1f..65a7ff8bd20 100644 --- a/packages/@ourworldindata/grapher/src/core/Grapher.tsx +++ b/packages/@ourworldindata/grapher/src/core/Grapher.tsx @@ -605,6 +605,7 @@ export class Grapher @action.bound downloadData(): void { if (this.manuallyProvideData) { + // ignore } else if (this.owidDataset) { this._receiveOwidDataAndApplySelection(this.owidDataset) } else void this.downloadLegacyDataFromOwidVariableIds() diff --git a/packages/@ourworldindata/grapher/src/dataTable/.eslintrc.yaml b/packages/@ourworldindata/grapher/src/dataTable/.eslintrc.yaml deleted file mode 100644 index 2972fb8a9d9..00000000000 --- a/packages/@ourworldindata/grapher/src/dataTable/.eslintrc.yaml +++ /dev/null @@ -1,3 +0,0 @@ -rules: - "@typescript-eslint/explicit-function-return-type": "warn" - "@typescript-eslint/explicit-module-boundary-types": "warn" diff --git a/packages/@ourworldindata/grapher/src/dataTable/DataTable.jsdom.test.tsx b/packages/@ourworldindata/grapher/src/dataTable/DataTable.jsdom.test.tsx index 322192eb7b3..4cb13dd95fc 100755 --- a/packages/@ourworldindata/grapher/src/dataTable/DataTable.jsdom.test.tsx +++ b/packages/@ourworldindata/grapher/src/dataTable/DataTable.jsdom.test.tsx @@ -1,4 +1,4 @@ -#! /usr/bin/env jestimport { DataTable } from "./DataTable" +#! /usr/bin/env jest import { GRAPHER_CHART_TYPES, GRAPHER_TAB_OPTIONS } from "@ourworldindata/types" import { childMortalityGrapher, @@ -10,6 +10,8 @@ import { import Enzyme, { ReactWrapper } from "enzyme" import Adapter from "@wojtekmaj/enzyme-adapter-react-17" import { LifeExpectancyGrapher } from "../testData/OwidTestData.sample.js" +import { DataTable } from "./DataTable.js" + Enzyme.configure({ adapter: new Adapter() }) describe("when you render a table", () => { diff --git a/packages/@ourworldindata/grapher/src/entitySelector/EntitySelector.tsx b/packages/@ourworldindata/grapher/src/entitySelector/EntitySelector.tsx index 6aa48751231..d209ce18583 100644 --- a/packages/@ourworldindata/grapher/src/entitySelector/EntitySelector.tsx +++ b/packages/@ourworldindata/grapher/src/entitySelector/EntitySelector.tsx @@ -213,7 +213,9 @@ export class EntitySelector extends React.Component<{ ) if (localEntityNames) this.set({ localEntityNames }) - } catch {} + } catch { + // ignore + } } private clearSearchInput(): void { diff --git a/packages/@ourworldindata/grapher/src/facetChart/.eslintrc.yaml b/packages/@ourworldindata/grapher/src/facetChart/.eslintrc.yaml deleted file mode 100644 index 2972fb8a9d9..00000000000 --- a/packages/@ourworldindata/grapher/src/facetChart/.eslintrc.yaml +++ /dev/null @@ -1,3 +0,0 @@ -rules: - "@typescript-eslint/explicit-function-return-type": "warn" - "@typescript-eslint/explicit-module-boundary-types": "warn" diff --git a/packages/@ourworldindata/grapher/src/footer/.eslintrc.yaml b/packages/@ourworldindata/grapher/src/footer/.eslintrc.yaml deleted file mode 100644 index 2972fb8a9d9..00000000000 --- a/packages/@ourworldindata/grapher/src/footer/.eslintrc.yaml +++ /dev/null @@ -1,3 +0,0 @@ -rules: - "@typescript-eslint/explicit-function-return-type": "warn" - "@typescript-eslint/explicit-module-boundary-types": "warn" diff --git a/packages/@ourworldindata/grapher/src/header/.eslintrc.yaml b/packages/@ourworldindata/grapher/src/header/.eslintrc.yaml deleted file mode 100644 index 2972fb8a9d9..00000000000 --- a/packages/@ourworldindata/grapher/src/header/.eslintrc.yaml +++ /dev/null @@ -1,3 +0,0 @@ -rules: - "@typescript-eslint/explicit-function-return-type": "warn" - "@typescript-eslint/explicit-module-boundary-types": "warn" diff --git a/packages/@ourworldindata/grapher/src/lineCharts/.eslintrc.yaml b/packages/@ourworldindata/grapher/src/lineCharts/.eslintrc.yaml deleted file mode 100644 index 2972fb8a9d9..00000000000 --- a/packages/@ourworldindata/grapher/src/lineCharts/.eslintrc.yaml +++ /dev/null @@ -1,3 +0,0 @@ -rules: - "@typescript-eslint/explicit-function-return-type": "warn" - "@typescript-eslint/explicit-module-boundary-types": "warn" diff --git a/packages/@ourworldindata/grapher/src/loadingIndicator/.eslintrc.yaml b/packages/@ourworldindata/grapher/src/loadingIndicator/.eslintrc.yaml deleted file mode 100644 index 2972fb8a9d9..00000000000 --- a/packages/@ourworldindata/grapher/src/loadingIndicator/.eslintrc.yaml +++ /dev/null @@ -1,3 +0,0 @@ -rules: - "@typescript-eslint/explicit-function-return-type": "warn" - "@typescript-eslint/explicit-module-boundary-types": "warn" diff --git a/packages/@ourworldindata/grapher/src/mapCharts/.eslintrc.yaml b/packages/@ourworldindata/grapher/src/mapCharts/.eslintrc.yaml deleted file mode 100644 index 2972fb8a9d9..00000000000 --- a/packages/@ourworldindata/grapher/src/mapCharts/.eslintrc.yaml +++ /dev/null @@ -1,3 +0,0 @@ -rules: - "@typescript-eslint/explicit-function-return-type": "warn" - "@typescript-eslint/explicit-module-boundary-types": "warn" diff --git a/packages/@ourworldindata/grapher/src/mapCharts/MapTooltip.jsdom.test.tsx b/packages/@ourworldindata/grapher/src/mapCharts/MapTooltip.jsdom.test.tsx index 9b4dcfc244c..ad85afe950a 100755 --- a/packages/@ourworldindata/grapher/src/mapCharts/MapTooltip.jsdom.test.tsx +++ b/packages/@ourworldindata/grapher/src/mapCharts/MapTooltip.jsdom.test.tsx @@ -1,5 +1,6 @@ -#! /usr/bin/env jestimport { Grapher } from "../core/Grapher" -import { legacyMapGrapher } from "./MapChart.sample" +#! /usr/bin/env jest +import { Grapher } from "../core/Grapher.js" +import { legacyMapGrapher } from "./MapChart.sample.js" import Enzyme from "enzyme" import Adapter from "@wojtekmaj/enzyme-adapter-react-17" diff --git a/packages/@ourworldindata/grapher/src/noDataModal/.eslintrc.yaml b/packages/@ourworldindata/grapher/src/noDataModal/.eslintrc.yaml deleted file mode 100644 index 2972fb8a9d9..00000000000 --- a/packages/@ourworldindata/grapher/src/noDataModal/.eslintrc.yaml +++ /dev/null @@ -1,3 +0,0 @@ -rules: - "@typescript-eslint/explicit-function-return-type": "warn" - "@typescript-eslint/explicit-module-boundary-types": "warn" diff --git a/packages/@ourworldindata/grapher/src/scatterCharts/.eslintrc.yaml b/packages/@ourworldindata/grapher/src/scatterCharts/.eslintrc.yaml deleted file mode 100644 index 2972fb8a9d9..00000000000 --- a/packages/@ourworldindata/grapher/src/scatterCharts/.eslintrc.yaml +++ /dev/null @@ -1,3 +0,0 @@ -rules: - "@typescript-eslint/explicit-function-return-type": "warn" - "@typescript-eslint/explicit-module-boundary-types": "warn" diff --git a/packages/@ourworldindata/grapher/src/selection/.eslintrc.yaml b/packages/@ourworldindata/grapher/src/selection/.eslintrc.yaml deleted file mode 100644 index 2972fb8a9d9..00000000000 --- a/packages/@ourworldindata/grapher/src/selection/.eslintrc.yaml +++ /dev/null @@ -1,3 +0,0 @@ -rules: - "@typescript-eslint/explicit-function-return-type": "warn" - "@typescript-eslint/explicit-module-boundary-types": "warn" diff --git a/packages/@ourworldindata/grapher/src/stackedCharts/.eslintrc.yaml b/packages/@ourworldindata/grapher/src/stackedCharts/.eslintrc.yaml deleted file mode 100644 index 2972fb8a9d9..00000000000 --- a/packages/@ourworldindata/grapher/src/stackedCharts/.eslintrc.yaml +++ /dev/null @@ -1,3 +0,0 @@ -rules: - "@typescript-eslint/explicit-function-return-type": "warn" - "@typescript-eslint/explicit-module-boundary-types": "warn" diff --git a/packages/@ourworldindata/grapher/src/stackedCharts/MarimekkoChart.tsx b/packages/@ourworldindata/grapher/src/stackedCharts/MarimekkoChart.tsx index c95f9cc3c72..f456d3609e6 100644 --- a/packages/@ourworldindata/grapher/src/stackedCharts/MarimekkoChart.tsx +++ b/packages/@ourworldindata/grapher/src/stackedCharts/MarimekkoChart.tsx @@ -784,7 +784,7 @@ export class MarimekkoChart case SortBy.entityName: sortByFuncs = [(item: Item): string => item.entityName] break - case SortBy.column: + case SortBy.column: { const sortColumnSlug = sortConfig.sortColumnSlug sortByFuncs = [ (item: Item): number => @@ -793,6 +793,7 @@ export class MarimekkoChart (item: Item): string => item.entityName, ] break + } default: case SortBy.total: sortByFuncs = [ diff --git a/packages/@ourworldindata/grapher/src/stackedCharts/StackedDiscreteBarChart.tsx b/packages/@ourworldindata/grapher/src/stackedCharts/StackedDiscreteBarChart.tsx index b298d2ae160..1cd3491adda 100644 --- a/packages/@ourworldindata/grapher/src/stackedCharts/StackedDiscreteBarChart.tsx +++ b/packages/@ourworldindata/grapher/src/stackedCharts/StackedDiscreteBarChart.tsx @@ -436,7 +436,7 @@ export class StackedDiscreteBarChart case SortBy.entityName: sortByFunc = (item: Item): string => item.entityName break - case SortBy.column: + case SortBy.column: { const owidRowsByEntityName = this.sortColumn?.owidRowsByEntityName sortByFunc = (item: Item): number => { @@ -444,6 +444,7 @@ export class StackedDiscreteBarChart return rows?.[0]?.value ?? 0 } break + } default: case SortBy.total: sortByFunc = (item: Item): number => { diff --git a/packages/@ourworldindata/grapher/src/timeline/.eslintrc.yaml b/packages/@ourworldindata/grapher/src/timeline/.eslintrc.yaml deleted file mode 100644 index 2972fb8a9d9..00000000000 --- a/packages/@ourworldindata/grapher/src/timeline/.eslintrc.yaml +++ /dev/null @@ -1,3 +0,0 @@ -rules: - "@typescript-eslint/explicit-function-return-type": "warn" - "@typescript-eslint/explicit-module-boundary-types": "warn" diff --git a/packages/@ourworldindata/grapher/src/tooltip/.eslintrc.yaml b/packages/@ourworldindata/grapher/src/tooltip/.eslintrc.yaml deleted file mode 100644 index 2972fb8a9d9..00000000000 --- a/packages/@ourworldindata/grapher/src/tooltip/.eslintrc.yaml +++ /dev/null @@ -1,3 +0,0 @@ -rules: - "@typescript-eslint/explicit-function-return-type": "warn" - "@typescript-eslint/explicit-module-boundary-types": "warn" diff --git a/packages/@ourworldindata/grapher/src/verticalColorLegend/.eslintrc.yaml b/packages/@ourworldindata/grapher/src/verticalColorLegend/.eslintrc.yaml deleted file mode 100644 index 2972fb8a9d9..00000000000 --- a/packages/@ourworldindata/grapher/src/verticalColorLegend/.eslintrc.yaml +++ /dev/null @@ -1,3 +0,0 @@ -rules: - "@typescript-eslint/explicit-function-return-type": "warn" - "@typescript-eslint/explicit-module-boundary-types": "warn" diff --git a/packages/@ourworldindata/types/package.json b/packages/@ourworldindata/types/package.json index 4cd8572ad9a..033857717d7 100644 --- a/packages/@ourworldindata/types/package.json +++ b/packages/@ourworldindata/types/package.json @@ -14,8 +14,8 @@ "keywords": [], "author": "", "devDependencies": { - "eslint": "^8.57.1", - "eslint-plugin-react-hooks": "^4.6.2", + "eslint": "^9.17.0", + "eslint-plugin-react-hooks": "^5.1.0", "jest": "^29.7.0", "typescript": "~5.7.2" }, diff --git a/packages/@ourworldindata/types/src/gdocTypes/GdocConstants.ts b/packages/@ourworldindata/types/src/gdocTypes/GdocConstants.ts index ef3b7f657ad..28d1f00328c 100644 --- a/packages/@ourworldindata/types/src/gdocTypes/GdocConstants.ts +++ b/packages/@ourworldindata/types/src/gdocTypes/GdocConstants.ts @@ -20,7 +20,7 @@ export const RESEARCH_AND_WRITING_DEFAULT_HEADING = "Research & Writing" * https://docs.google.com/spreadsheets/d/abcd1234 */ export const gdocUrlRegex = - /https:\/\/docs\.google\.com\/document(?:\/u\/\d)?\/d\/([\-\w]+)\/?(edit)?(\?tab=[\w\.]+)?#?/ + /https:\/\/docs\.google\.com\/document(?:\/u\/\d)?\/d\/([-\w]+)\/?(edit)?(\?tab=[\w.]+)?#?/ export const GDOCS_BASE_URL = "https://docs.google.com" export const GDOCS_URL_PLACEHOLDER = `${GDOCS_BASE_URL}/document/d/****/edit` diff --git a/packages/@ourworldindata/utils/.eslintrc.yaml b/packages/@ourworldindata/utils/.eslintrc.yaml deleted file mode 100644 index 2972fb8a9d9..00000000000 --- a/packages/@ourworldindata/utils/.eslintrc.yaml +++ /dev/null @@ -1,3 +0,0 @@ -rules: - "@typescript-eslint/explicit-function-return-type": "warn" - "@typescript-eslint/explicit-module-boundary-types": "warn" diff --git a/packages/@ourworldindata/utils/package.json b/packages/@ourworldindata/utils/package.json index 2b41e03975d..ba3f323d2db 100644 --- a/packages/@ourworldindata/utils/package.json +++ b/packages/@ourworldindata/utils/package.json @@ -40,8 +40,8 @@ "@types/react-tag-autocomplete": "^6.1.1", "@types/string-pixel-width": "^1.7.2", "@types/url-parse": "^1.4.8", - "eslint": "^8.57.1", - "eslint-plugin-react-hooks": "^4.6.2", + "eslint": "^9.17.0", + "eslint-plugin-react-hooks": "^5.1.0", "jest": "^29.7.0", "typescript": "~5.7.2" }, diff --git a/packages/@ourworldindata/utils/src/PromiseCache.test.ts b/packages/@ourworldindata/utils/src/PromiseCache.test.ts index 663702db759..3b46f28c4af 100644 --- a/packages/@ourworldindata/utils/src/PromiseCache.test.ts +++ b/packages/@ourworldindata/utils/src/PromiseCache.test.ts @@ -31,14 +31,18 @@ it("promise is discarded if it rejects", async () => { try { await firstPromise fail() - } catch {} + } catch { + // ignore + } expect(cache.has("key")).toBeFalsy() try { await cache.get("key") fail() - } catch {} + } catch { + // ignore + } const thirdPromise = cache.get("key") expect(thirdPromise).not.toBe(firstPromise) @@ -46,5 +50,7 @@ it("promise is discarded if it rejects", async () => { try { await thirdPromise fail() - } catch {} + } catch { + // ignore + } }) diff --git a/packages/@ourworldindata/utils/src/PromiseSwitcher.test.ts b/packages/@ourworldindata/utils/src/PromiseSwitcher.test.ts index 4c7a7a1f30c..d91782cdd78 100644 --- a/packages/@ourworldindata/utils/src/PromiseSwitcher.test.ts +++ b/packages/@ourworldindata/utils/src/PromiseSwitcher.test.ts @@ -62,7 +62,9 @@ it("handles clearing pending promise", async () => { selector.clear() try { await reject - } catch {} + } catch { + // ignore + } expect(onResolve).not.toHaveBeenCalled() expect(onReject).not.toHaveBeenCalled() diff --git a/packages/@ourworldindata/utils/src/Util.ts b/packages/@ourworldindata/utils/src/Util.ts index 0cc04c6a6f6..cd2978a218b 100644 --- a/packages/@ourworldindata/utils/src/Util.ts +++ b/packages/@ourworldindata/utils/src/Util.ts @@ -474,7 +474,7 @@ export const slugifySameCase = ( let slug = str .trim() .replace(/\s*\*.+\*/, "") - .replace(/[^\w\- \/]+/g, "") + .replace(/[^\w\- /]+/g, "") .replace(/ +/g, "-") if (!allowSlashes) { slug = slug.replace(/\//g, "") @@ -559,7 +559,7 @@ export interface Json { export const csvEscape = (value: unknown): string => { const valueStr = toString(value) return valueStr.includes(",") - ? `"${valueStr.replace(/\"/g, '""')}"` + ? `"${valueStr.replace(/"/g, '""')}"` : valueStr } @@ -581,6 +581,7 @@ export const trimObject = ( if (isObject(val) && isEmpty(val)) { // Drop empty objects } else if (trimStringEmptyStrings && val === "") { + // ignore } else if (val !== undefined) clone[key] = obj[key] } return clone @@ -1256,7 +1257,7 @@ export function stringifyUnknownError(error: unknown): string | undefined { } if (typeof error === "object" && !Array.isArray(error) && error !== null) { - if (error.hasOwnProperty("message")) { + if (Object.prototype.hasOwnProperty.call(error, "message")) { // Within this branch, `error` is an object with the `message` // property, so we can access the object's `message` property. return (error as any).message @@ -1385,7 +1386,9 @@ export const canWriteToClipboard = async (): Promise => { // Asking permission was successful, we may use clipboard-write methods if permission wasn't denied. return ["granted", "prompt"].includes(res.state) - } catch {} + } catch { + // ignore + } } // navigator.clipboard is available, but we couldn't check for permissions -- assume we can use it. return true @@ -1438,7 +1441,7 @@ export function findDuplicates(arr: T[]): T[] { // Memoization for immutable getters. Run the function once for this instance and cache the result. export const imemo = ( - target: unknown, + _target: unknown, propertyName: string, descriptor: TypedPropertyDescriptor ): void => { diff --git a/packages/@ourworldindata/utils/src/persistable/.eslintrc.yaml b/packages/@ourworldindata/utils/src/persistable/.eslintrc.yaml deleted file mode 100644 index 2972fb8a9d9..00000000000 --- a/packages/@ourworldindata/utils/src/persistable/.eslintrc.yaml +++ /dev/null @@ -1,3 +0,0 @@ -rules: - "@typescript-eslint/explicit-function-return-type": "warn" - "@typescript-eslint/explicit-module-boundary-types": "warn" diff --git a/packages/@ourworldindata/utils/src/string.ts b/packages/@ourworldindata/utils/src/string.ts index 056fe1e7c8e..6928fccc51e 100644 --- a/packages/@ourworldindata/utils/src/string.ts +++ b/packages/@ourworldindata/utils/src/string.ts @@ -1,5 +1,5 @@ const snakeToCamel = (str: string): string => - str.replace(/(\_\w)/g, (char) => char[1].toUpperCase()) + str.replace(/(_\w)/g, (char) => char[1].toUpperCase()) export const camelCaseProperties = ( obj: Record diff --git a/settings/.eslintrc.yaml b/settings/.eslintrc.yaml deleted file mode 100644 index 3da8d3df28c..00000000000 --- a/settings/.eslintrc.yaml +++ /dev/null @@ -1,4 +0,0 @@ -rules: - no-console: "off" - "@typescript-eslint/explicit-function-return-type": "warn" - "@typescript-eslint/explicit-module-boundary-types": "warn" diff --git a/site/CookiePreferencesManager.tsx b/site/CookiePreferencesManager.tsx index 605629a0b64..4c1428e6ac6 100644 --- a/site/CookiePreferencesManager.tsx +++ b/site/CookiePreferencesManager.tsx @@ -158,7 +158,9 @@ const getInitialState = (): State => { cookieValue = parseRawCookieValue( Cookies.get(COOKIE_PREFERENCES_COOKIE_NAME) ) - } catch {} + } catch { + // ignore + } if (!cookieValue || arePreferencesOutdated(cookieValue.date, POLICY_DATE)) return defaultState diff --git a/site/GrapherPage.jsdom.test.tsx b/site/GrapherPage.jsdom.test.tsx index f6c16d91c1b..27af039b311 100755 --- a/site/GrapherPage.jsdom.test.tsx +++ b/site/GrapherPage.jsdom.test.tsx @@ -1,4 +1,5 @@ -#! /usr/bin/env jestimport { GrapherInterface } from "@ourworldindata/types" +#! /usr/bin/env jest +import { GrapherInterface } from "@ourworldindata/types" import { DimensionProperty, KeyChartLevel, diff --git a/site/blocks/RelatedCharts.jsdom.test.tsx b/site/blocks/RelatedCharts.jsdom.test.tsx index c3cad379c83..d99454b4807 100755 --- a/site/blocks/RelatedCharts.jsdom.test.tsx +++ b/site/blocks/RelatedCharts.jsdom.test.tsx @@ -1,4 +1,4 @@ -#! /usr/bin/env jestimport { RelatedCharts } from "./RelatedCharts.js" +#! /usr/bin/env jest import Enzyme from "enzyme" import Adapter from "@wojtekmaj/enzyme-adapter-react-17" @@ -7,6 +7,7 @@ import { BAKED_GRAPHER_EXPORTS_BASE_URL, } from "../../settings/clientSettings.js" import { KeyChartLevel } from "@ourworldindata/utils" +import { RelatedCharts } from "./RelatedCharts.js" Enzyme.configure({ adapter: new Adapter() }) const charts = [ diff --git a/site/gdocs/components/KeyInsights.jsdom.test.tsx b/site/gdocs/components/KeyInsights.jsdom.test.tsx index bc6bf750a24..39d2da05db8 100755 --- a/site/gdocs/components/KeyInsights.jsdom.test.tsx +++ b/site/gdocs/components/KeyInsights.jsdom.test.tsx @@ -1,4 +1,4 @@ -#! /usr/bin/env jestimport { KEY_INSIGHTS_INSIGHT_PARAM } from "./KeyInsights.js" +#! /usr/bin/env jest import { EnrichedBlockKeyInsights, @@ -11,6 +11,7 @@ import "@testing-library/jest-dom" import { jest } from "@jest/globals" import ArticleBlock from "./ArticleBlock.js" +import { KEY_INSIGHTS_INSIGHT_PARAM } from "./KeyInsights.js" const KEY_INSIGHTS_SLUG = "key-insights" diff --git a/site/owid.entry.ts b/site/owid.entry.ts index 225ba899180..3198c969e30 100644 --- a/site/owid.entry.ts +++ b/site/owid.entry.ts @@ -149,6 +149,8 @@ try { } } } -} catch {} +} catch { + // ignore +} analytics.startClickTracking() diff --git a/site/runSiteFooterScripts.ts b/site/runSiteFooterScripts.ts index a5c540e4266..fdec65f6770 100644 --- a/site/runSiteFooterScripts.ts +++ b/site/runSiteFooterScripts.ts @@ -86,11 +86,14 @@ export const runSiteFooterScripts = ( case SiteFooterContext.dynamicCollectionPage: // Don't break, run default case too hydrateDynamicCollectionPage() + break case SiteFooterContext.dataInsightsIndexPage: // Don't break, run default case too hydrateDataInsightsIndexPage() + break case SiteFooterContext.dataCatalogPage: hydrateDataCatalogPage() + break default: // Features that were not ported over to gdocs, are only being run on WP pages: // - global entity selector diff --git a/tsconfig.eslint.json b/tsconfig.eslint.json index 6bdcb4e1d5f..bb70576df4c 100644 --- a/tsconfig.eslint.json +++ b/tsconfig.eslint.json @@ -1,13 +1,12 @@ { "extends": "./tsconfig.json", "include": [ - ".eslintrc.cjs", - "**/*.ts", - "**/*.tsx", + "**/*.cts", + "**/*.ctsx", "**/*.mts", "**/*.mtsx", - "**/*.cts", - "**/*.ctsx" + "**/*.ts", + "**/*.tsx" ], "compilerOptions": { // ensure that nobody can accidentally use this config for a build diff --git a/yarn.lock b/yarn.lock index ed079a8f19f..1d07ea901e2 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2168,34 +2168,77 @@ __metadata: languageName: node linkType: hard -"@eslint-community/regexpp@npm:^4.10.0, @eslint-community/regexpp@npm:^4.6.1": +"@eslint-community/regexpp@npm:^4.10.0": version: 4.11.1 resolution: "@eslint-community/regexpp@npm:4.11.1" checksum: 10/934b6d3588c7f16b18d41efec4fdb89616c440b7e3256b8cb92cfd31ae12908600f2b986d6c1e61a84cbc10256b1dd3448cd1eec79904bd67ac365d0f1aba2e2 languageName: node linkType: hard -"@eslint/eslintrc@npm:^2.1.4": - version: 2.1.4 - resolution: "@eslint/eslintrc@npm:2.1.4" +"@eslint-community/regexpp@npm:^4.12.1": + version: 4.12.1 + resolution: "@eslint-community/regexpp@npm:4.12.1" + checksum: 10/c08f1dd7dd18fbb60bdd0d85820656d1374dd898af9be7f82cb00451313402a22d5e30569c150315b4385907cdbca78c22389b2a72ab78883b3173be317620cc + languageName: node + linkType: hard + +"@eslint/config-array@npm:^0.19.0": + version: 0.19.1 + resolution: "@eslint/config-array@npm:0.19.1" + dependencies: + "@eslint/object-schema": "npm:^2.1.5" + debug: "npm:^4.3.1" + minimatch: "npm:^3.1.2" + checksum: 10/1243b01f463de85c970c18f0994f9d1850dafe8cc8c910edb64105d845edd3cacaa0bbf028bf35a6daaf5a179021140b6a8b1dc7a2f915b42c2d35f022a9c201 + languageName: node + linkType: hard + +"@eslint/core@npm:^0.9.0": + version: 0.9.1 + resolution: "@eslint/core@npm:0.9.1" + dependencies: + "@types/json-schema": "npm:^7.0.15" + checksum: 10/f2263f8f94fdf84fc34573e027de98f1fce6287120513ae672ddf0652c75b9fa77c314d565628fc58e0a6f959766acc34c8191f9b94f1757b910408ffa04adde + languageName: node + linkType: hard + +"@eslint/eslintrc@npm:^3.2.0": + version: 3.2.0 + resolution: "@eslint/eslintrc@npm:3.2.0" dependencies: ajv: "npm:^6.12.4" debug: "npm:^4.3.2" - espree: "npm:^9.6.0" - globals: "npm:^13.19.0" + espree: "npm:^10.0.1" + globals: "npm:^14.0.0" ignore: "npm:^5.2.0" import-fresh: "npm:^3.2.1" js-yaml: "npm:^4.1.0" minimatch: "npm:^3.1.2" strip-json-comments: "npm:^3.1.1" - checksum: 10/7a3b14f4b40fc1a22624c3f84d9f467a3d9ea1ca6e9a372116cb92507e485260359465b58e25bcb6c9981b155416b98c9973ad9b796053fd7b3f776a6946bce8 + checksum: 10/b32dd90ce7da68e89b88cd729db46b27aac79a2e6cb1fa75d25a6b766d586b443bfbf59622489efbd3c6f696f147b51111e81ec7cd23d70f215c5d474cad0261 languageName: node linkType: hard -"@eslint/js@npm:8.57.1": - version: 8.57.1 - resolution: "@eslint/js@npm:8.57.1" - checksum: 10/7562b21be10c2adbfa4aa5bb2eccec2cb9ac649a3569560742202c8d1cb6c931ce634937a2f0f551e078403a1c1285d6c2c0aa345dafc986149665cd69fe8b59 +"@eslint/js@npm:9.17.0, @eslint/js@npm:^9.17.0": + version: 9.17.0 + resolution: "@eslint/js@npm:9.17.0" + checksum: 10/1a89e62f5c50e75d44565b7f3b91701455a999132c991e10bac59c118fbb54bdd54be22b9bda1ac730f78a2e64604403d65ce5dd7726d80b2632982cfc3d84ac + languageName: node + linkType: hard + +"@eslint/object-schema@npm:^2.1.5": + version: 2.1.5 + resolution: "@eslint/object-schema@npm:2.1.5" + checksum: 10/bb07ec53357047f20de923bcd61f0306d9eee83ef41daa32e633e154a44796b5bd94670169eccb8fd8cb4ff42228a43b86953a6321f789f98194baba8207b640 + languageName: node + linkType: hard + +"@eslint/plugin-kit@npm:^0.2.3": + version: 0.2.4 + resolution: "@eslint/plugin-kit@npm:0.2.4" + dependencies: + levn: "npm:^0.4.1" + checksum: 10/e34d02ea1dccd716e51369620263a4b2167aff3c0510ed776e21336cc3ad7158087449a76931baf07cdc33810cb6919db375f2e9f409435d2c6e0dd5f4786b25 languageName: node linkType: hard @@ -2284,14 +2327,20 @@ __metadata: languageName: node linkType: hard -"@humanwhocodes/config-array@npm:^0.13.0": - version: 0.13.0 - resolution: "@humanwhocodes/config-array@npm:0.13.0" +"@humanfs/core@npm:^0.19.1": + version: 0.19.1 + resolution: "@humanfs/core@npm:0.19.1" + checksum: 10/270d936be483ab5921702623bc74ce394bf12abbf57d9145a69e8a0d1c87eb1c768bd2d93af16c5705041e257e6d9cc7529311f63a1349f3678abc776fc28523 + languageName: node + linkType: hard + +"@humanfs/node@npm:^0.16.6": + version: 0.16.6 + resolution: "@humanfs/node@npm:0.16.6" dependencies: - "@humanwhocodes/object-schema": "npm:^2.0.3" - debug: "npm:^4.3.1" - minimatch: "npm:^3.0.5" - checksum: 10/524df31e61a85392a2433bf5d03164e03da26c03d009f27852e7dcfdafbc4a23f17f021dacf88e0a7a9fe04ca032017945d19b57a16e2676d9114c22a53a9d11 + "@humanfs/core": "npm:^0.19.1" + "@humanwhocodes/retry": "npm:^0.3.0" + checksum: 10/6d43c6727463772d05610aa05c83dab2bfbe78291022ee7a92cb50999910b8c720c76cc312822e2dea2b497aa1b3fef5fe9f68803fc45c9d4ed105874a65e339 languageName: node linkType: hard @@ -2302,10 +2351,17 @@ __metadata: languageName: node linkType: hard -"@humanwhocodes/object-schema@npm:^2.0.3": - version: 2.0.3 - resolution: "@humanwhocodes/object-schema@npm:2.0.3" - checksum: 10/05bb99ed06c16408a45a833f03a732f59bf6184795d4efadd33238ff8699190a8c871ad1121241bb6501589a9598dc83bf25b99dcbcf41e155cdf36e35e937a3 +"@humanwhocodes/retry@npm:^0.3.0": + version: 0.3.1 + resolution: "@humanwhocodes/retry@npm:0.3.1" + checksum: 10/eb457f699529de7f07649679ec9e0353055eebe443c2efe71c6dd950258892475a038e13c6a8c5e13ed1fb538cdd0a8794faa96b24b6ffc4c87fb1fc9f70ad7f + languageName: node + linkType: hard + +"@humanwhocodes/retry@npm:^0.4.1": + version: 0.4.1 + resolution: "@humanwhocodes/retry@npm:0.4.1" + checksum: 10/39fafc7319e88f61befebd5e1b4f0136534ea6a9bd10d74366698187bd63544210ec5d79a87ed4d91297f1cc64c4c53d45fb0077a2abfdce212cf0d3862d5f04 languageName: node linkType: hard @@ -2787,7 +2843,7 @@ __metadata: languageName: node linkType: hard -"@nodelib/fs.walk@npm:^1.2.3, @nodelib/fs.walk@npm:^1.2.8": +"@nodelib/fs.walk@npm:^1.2.3": version: 1.2.8 resolution: "@nodelib/fs.walk@npm:1.2.8" dependencies: @@ -3285,8 +3341,8 @@ __metadata: "@types/react": "npm:^17.0.69" "@types/react-dom": "npm:^17.0.22" esbuild-sass-plugin: "npm:^3.3.1" - eslint: "npm:^8.57.1" - eslint-plugin-react-hooks: "npm:^4.6.2" + eslint: "npm:^9.17.0" + eslint-plugin-react-hooks: "npm:^5.1.0" mobx: "npm:^5.15.7" mobx-formatters: "npm:^1.0.2" mobx-react: "npm:5" @@ -3307,7 +3363,7 @@ __metadata: "@types/papaparse": "npm:^5.3.15" d3: "npm:^6.1.1" dayjs: "npm:^1.11.11" - eslint: "npm:^8.57.1" + eslint: "npm:^9.17.0" papaparse: "npm:^5.4.1" typescript: "npm:~5.7.2" languageName: unknown @@ -3349,8 +3405,8 @@ __metadata: enzyme: "npm:^3.11.0" esbuild: "npm:^0.21.5" esbuild-sass-plugin: "npm:^3.3.1" - eslint: "npm:^8.57.1" - eslint-plugin-react-hooks: "npm:^4.6.2" + eslint: "npm:^9.17.0" + eslint-plugin-react-hooks: "npm:^5.1.0" expr-eval: "npm:^2.0.2" fuzzysort: "npm:^1.1.4" jest: "npm:^29.7.0" @@ -3409,8 +3465,8 @@ __metadata: enzyme: "npm:^3.11.0" esbuild: "npm:^0.21.5" esbuild-sass-plugin: "npm:^3.3.1" - eslint: "npm:^8.57.1" - eslint-plugin-react-hooks: "npm:^4.6.2" + eslint: "npm:^9.17.0" + eslint-plugin-react-hooks: "npm:^5.1.0" expr-eval: "npm:^2.0.2" fuzzysort: "npm:^1.1.4" jest: "npm:^29.7.0" @@ -3439,8 +3495,8 @@ __metadata: resolution: "@ourworldindata/types@workspace:packages/@ourworldindata/types" dependencies: "@sinclair/typebox": "npm:^0.28.5" - eslint: "npm:^8.57.1" - eslint-plugin-react-hooks: "npm:^4.6.2" + eslint: "npm:^9.17.0" + eslint-plugin-react-hooks: "npm:^5.1.0" jest: "npm:^29.7.0" mobx: "npm:^5.15.7" typescript: "npm:~5.7.2" @@ -3463,8 +3519,8 @@ __metadata: "@types/url-parse": "npm:^1.4.8" d3: "npm:^6.1.1" dayjs: "npm:^1.11.11" - eslint: "npm:^8.57.1" - eslint-plugin-react-hooks: "npm:^4.6.2" + eslint: "npm:^9.17.0" + eslint-plugin-react-hooks: "npm:^5.1.0" jest: "npm:^29.7.0" lodash: "npm:^4.17.21" mobx: "npm:^5.15.7" @@ -5164,6 +5220,13 @@ __metadata: languageName: node linkType: hard +"@types/estree@npm:^1.0.6": + version: 1.0.6 + resolution: "@types/estree@npm:1.0.6" + checksum: 10/9d35d475095199c23e05b431bcdd1f6fec7380612aed068b14b2a08aa70494de8a9026765a5a91b1073f636fb0368f6d8973f518a31391d519e20c59388ed88d + languageName: node + linkType: hard + "@types/express-rate-limit@npm:^5.1.0": version: 5.1.0 resolution: "@types/express-rate-limit@npm:5.1.0" @@ -5337,6 +5400,13 @@ __metadata: languageName: node linkType: hard +"@types/json-schema@npm:^7.0.15": + version: 7.0.15 + resolution: "@types/json-schema@npm:7.0.15" + checksum: 10/1a3c3e06236e4c4aab89499c428d585527ce50c24fe8259e8b3926d3df4cfbbbcf306cfc73ddfb66cbafc973116efd15967020b0f738f63e09e64c7d260519e7 + languageName: node + linkType: hard + "@types/json5@npm:^0.0.29": version: 0.0.29 resolution: "@types/json5@npm:0.0.29" @@ -5806,15 +5876,15 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/eslint-plugin@npm:^8.10.0": - version: 8.10.0 - resolution: "@typescript-eslint/eslint-plugin@npm:8.10.0" +"@typescript-eslint/eslint-plugin@npm:8.18.1": + version: 8.18.1 + resolution: "@typescript-eslint/eslint-plugin@npm:8.18.1" dependencies: "@eslint-community/regexpp": "npm:^4.10.0" - "@typescript-eslint/scope-manager": "npm:8.10.0" - "@typescript-eslint/type-utils": "npm:8.10.0" - "@typescript-eslint/utils": "npm:8.10.0" - "@typescript-eslint/visitor-keys": "npm:8.10.0" + "@typescript-eslint/scope-manager": "npm:8.18.1" + "@typescript-eslint/type-utils": "npm:8.18.1" + "@typescript-eslint/utils": "npm:8.18.1" + "@typescript-eslint/visitor-keys": "npm:8.18.1" graphemer: "npm:^1.4.0" ignore: "npm:^5.3.1" natural-compare: "npm:^1.4.0" @@ -5822,110 +5892,99 @@ __metadata: peerDependencies: "@typescript-eslint/parser": ^8.0.0 || ^8.0.0-alpha.0 eslint: ^8.57.0 || ^9.0.0 - peerDependenciesMeta: - typescript: - optional: true - checksum: 10/7a53a40b16188c95651b3d69facbfdeacba93da42850a3fb35dfc08318a5db063f42fea2b22bf8756c54bc26edeefcab8fabc39ce3d717d5f9bc765f4922b58a + typescript: ">=4.8.4 <5.8.0" + checksum: 10/ec061a9c64477260d1ef0fc6283d8754838181e17aa90b3b8b9a70936a2ca4bae11607070917a7701e13f5301ced2b6da4b4b6e5cf525c484f97481e540b5111 languageName: node linkType: hard -"@typescript-eslint/parser@npm:^8.10.0": - version: 8.10.0 - resolution: "@typescript-eslint/parser@npm:8.10.0" +"@typescript-eslint/parser@npm:8.18.1": + version: 8.18.1 + resolution: "@typescript-eslint/parser@npm:8.18.1" dependencies: - "@typescript-eslint/scope-manager": "npm:8.10.0" - "@typescript-eslint/types": "npm:8.10.0" - "@typescript-eslint/typescript-estree": "npm:8.10.0" - "@typescript-eslint/visitor-keys": "npm:8.10.0" + "@typescript-eslint/scope-manager": "npm:8.18.1" + "@typescript-eslint/types": "npm:8.18.1" + "@typescript-eslint/typescript-estree": "npm:8.18.1" + "@typescript-eslint/visitor-keys": "npm:8.18.1" debug: "npm:^4.3.4" peerDependencies: eslint: ^8.57.0 || ^9.0.0 - peerDependenciesMeta: - typescript: - optional: true - checksum: 10/b3059e112f1b85176bb5abdd403adb0b19a7560d3bcd5a6efc414d06d9aeef70d00fb6f0fd8e4923d914d4d15de35a681bdf8f55301457b5b244d7027c38f330 + typescript: ">=4.8.4 <5.8.0" + checksum: 10/09a601ef8b837962e5bb2687358520f337f9d0bbac5c6d5e159654faa5caaffb24d990e8d6bc4dc51ff5008dd9e182315c35bc5e9e3789090ccef8b8040e7659 languageName: node linkType: hard -"@typescript-eslint/scope-manager@npm:8.10.0": - version: 8.10.0 - resolution: "@typescript-eslint/scope-manager@npm:8.10.0" +"@typescript-eslint/scope-manager@npm:8.18.1": + version: 8.18.1 + resolution: "@typescript-eslint/scope-manager@npm:8.18.1" dependencies: - "@typescript-eslint/types": "npm:8.10.0" - "@typescript-eslint/visitor-keys": "npm:8.10.0" - checksum: 10/02cf2afc57bd048639d876030f6826e7b522bf36db40b7dd7b8e1b8c6f853e8c41b41044b7a32f118bac1b721aff4dfe660d5891e0a9ee103ef87c5ee1792b4c + "@typescript-eslint/types": "npm:8.18.1" + "@typescript-eslint/visitor-keys": "npm:8.18.1" + checksum: 10/14f7c09924c3a006b20752e5204b33c2b6974fc00bea16c23f471e65f2fb089fcbd3fb5296bcfd6727ac95c32ba24ebb15ba84fbf1deadc17b4cc5ca7f41c72a languageName: node linkType: hard -"@typescript-eslint/type-utils@npm:8.10.0": - version: 8.10.0 - resolution: "@typescript-eslint/type-utils@npm:8.10.0" +"@typescript-eslint/type-utils@npm:8.18.1": + version: 8.18.1 + resolution: "@typescript-eslint/type-utils@npm:8.18.1" dependencies: - "@typescript-eslint/typescript-estree": "npm:8.10.0" - "@typescript-eslint/utils": "npm:8.10.0" + "@typescript-eslint/typescript-estree": "npm:8.18.1" + "@typescript-eslint/utils": "npm:8.18.1" debug: "npm:^4.3.4" ts-api-utils: "npm:^1.3.0" - peerDependenciesMeta: - typescript: - optional: true - checksum: 10/d173232b8bb1738eeb107a76d6e8b5afdfa97b62bff23db22f8a132db01c560b7d9c2c658e3c2bdccd2e7f5dfdf75ddb70d362a44d713a8c7bacdd56e29fd2ee + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: ">=4.8.4 <5.8.0" + checksum: 10/cde53d05f4ca6e172239918cba2b560b9f837aa1fc7d5220784b1a6af9c8c525db020a5160822087e320305492fe359b7fb191420789b5f1e47a01e0cda21ac9 languageName: node linkType: hard -"@typescript-eslint/types@npm:8.10.0": - version: 8.10.0 - resolution: "@typescript-eslint/types@npm:8.10.0" - checksum: 10/2701711c87181553b68cdeba9d8ea55e0ae8ac441b5fe9667ee8be1dbac20386698930239a0e210b73d14961110ab128559a162abaed6e890a851543b6617c97 +"@typescript-eslint/types@npm:8.18.1": + version: 8.18.1 + resolution: "@typescript-eslint/types@npm:8.18.1" + checksum: 10/57a6141ba17be929291a644991f3a76f94fce330376f6a079decb20fb53378d636ad6878f8f9b6fcb8244cf1ca8b118f9e8901ae04cf3de2aa9f9ff57791d97a languageName: node linkType: hard -"@typescript-eslint/typescript-estree@npm:8.10.0": - version: 8.10.0 - resolution: "@typescript-eslint/typescript-estree@npm:8.10.0" +"@typescript-eslint/typescript-estree@npm:8.18.1": + version: 8.18.1 + resolution: "@typescript-eslint/typescript-estree@npm:8.18.1" dependencies: - "@typescript-eslint/types": "npm:8.10.0" - "@typescript-eslint/visitor-keys": "npm:8.10.0" + "@typescript-eslint/types": "npm:8.18.1" + "@typescript-eslint/visitor-keys": "npm:8.18.1" debug: "npm:^4.3.4" fast-glob: "npm:^3.3.2" is-glob: "npm:^4.0.3" minimatch: "npm:^9.0.4" semver: "npm:^7.6.0" ts-api-utils: "npm:^1.3.0" - peerDependenciesMeta: - typescript: - optional: true - checksum: 10/7513fbc43a0d5f06f45e20d18b6855a3e52bd4124283a4b704bb53c6d2c7edfa783cd4fa2c35217bf8562a6bc80892067fa4780aec97d99580624cbd05cde471 + peerDependencies: + typescript: ">=4.8.4 <5.8.0" + checksum: 10/8ecc1b50b9fc32116eee1b3b00f3fb29cf18026c0bbb50ab5f6e01db58ef62b8ac01824f2950f132479be6e1b82466a2bfd1e2cb4525aa8dbce4c27fc2494cfc languageName: node linkType: hard -"@typescript-eslint/utils@npm:8.10.0": - version: 8.10.0 - resolution: "@typescript-eslint/utils@npm:8.10.0" +"@typescript-eslint/utils@npm:8.18.1": + version: 8.18.1 + resolution: "@typescript-eslint/utils@npm:8.18.1" dependencies: "@eslint-community/eslint-utils": "npm:^4.4.0" - "@typescript-eslint/scope-manager": "npm:8.10.0" - "@typescript-eslint/types": "npm:8.10.0" - "@typescript-eslint/typescript-estree": "npm:8.10.0" + "@typescript-eslint/scope-manager": "npm:8.18.1" + "@typescript-eslint/types": "npm:8.18.1" + "@typescript-eslint/typescript-estree": "npm:8.18.1" peerDependencies: eslint: ^8.57.0 || ^9.0.0 - checksum: 10/a28f9fbec67b92bfb9c58445f9cfeb3208d48ecfda4c3ce649e70291af1d23a05466ce76bae9f6aff1270f40a434c8b6a7a71267108b6c32b1c059758f879cc0 + typescript: ">=4.8.4 <5.8.0" + checksum: 10/7b33d2ac273ad606a3dcb776bcf02c901812952550cdc93d4ece272b3b0e5d2a4e05fa92f9bd466f4a296ddd5992902d3b6623aa1c29d09e8e392897103e42a8 languageName: node linkType: hard -"@typescript-eslint/visitor-keys@npm:8.10.0": - version: 8.10.0 - resolution: "@typescript-eslint/visitor-keys@npm:8.10.0" +"@typescript-eslint/visitor-keys@npm:8.18.1": + version: 8.18.1 + resolution: "@typescript-eslint/visitor-keys@npm:8.18.1" dependencies: - "@typescript-eslint/types": "npm:8.10.0" - eslint-visitor-keys: "npm:^3.4.3" - checksum: 10/637d4f2a812e5dcf12b2342ebb296fda5e87e425430623c31660d60e09f87fc8dc9843cc0d9b81fe4963e25ce9a44a4418e8b7878b73773f4c1375fb68006b16 - languageName: node - linkType: hard - -"@ungap/structured-clone@npm:^1.2.0": - version: 1.2.0 - resolution: "@ungap/structured-clone@npm:1.2.0" - checksum: 10/c6fe89a505e513a7592e1438280db1c075764793a2397877ff1351721fe8792a966a5359769e30242b3cd023f2efb9e63ca2ca88019d73b564488cc20e3eab12 + "@typescript-eslint/types": "npm:8.18.1" + eslint-visitor-keys: "npm:^4.2.0" + checksum: 10/00e88b1640a68c3afea08731395eb09a8216892248fee819cb7526e99093256743239d6b9e880a499f1c0ddfe2ffa4d1ad895d9e778b5d42e702d5880db1a594 languageName: node linkType: hard @@ -6091,7 +6150,7 @@ __metadata: languageName: node linkType: hard -"acorn@npm:^8.1.0, acorn@npm:^8.8.0, acorn@npm:^8.8.1, acorn@npm:^8.9.0": +"acorn@npm:^8.1.0, acorn@npm:^8.8.0, acorn@npm:^8.8.1": version: 8.11.3 resolution: "acorn@npm:8.11.3" bin: @@ -6100,6 +6159,15 @@ __metadata: languageName: node linkType: hard +"acorn@npm:^8.14.0": + version: 8.14.0 + resolution: "acorn@npm:8.14.0" + bin: + acorn: bin/acorn + checksum: 10/6df29c35556782ca9e632db461a7f97947772c6c1d5438a81f0c873a3da3a792487e83e404d1c6c25f70513e91aa18745f6eafb1fcc3a43ecd1920b21dd173d2 + languageName: node + linkType: hard + "add-stream@npm:^1.0.0": version: 1.0.0 resolution: "add-stream@npm:1.0.0" @@ -6408,6 +6476,16 @@ __metadata: languageName: node linkType: hard +"array-buffer-byte-length@npm:^1.0.2": + version: 1.0.2 + resolution: "array-buffer-byte-length@npm:1.0.2" + dependencies: + call-bound: "npm:^1.0.3" + is-array-buffer: "npm:^3.0.5" + checksum: 10/0ae3786195c3211b423e5be8dd93357870e6fb66357d81da968c2c39ef43583ef6eece1f9cb1caccdae4806739c65dea832b44b8593414313cd76a89795fca63 + languageName: node + linkType: hard + "array-differ@npm:^3.0.0": version: 3.0.0 resolution: "array-differ@npm:3.0.0" @@ -6551,6 +6629,21 @@ __metadata: languageName: node linkType: hard +"arraybuffer.prototype.slice@npm:^1.0.4": + version: 1.0.4 + resolution: "arraybuffer.prototype.slice@npm:1.0.4" + dependencies: + array-buffer-byte-length: "npm:^1.0.1" + call-bind: "npm:^1.0.8" + define-properties: "npm:^1.2.1" + es-abstract: "npm:^1.23.5" + es-errors: "npm:^1.3.0" + get-intrinsic: "npm:^1.2.6" + is-array-buffer: "npm:^3.0.4" + checksum: 10/4821ebdfe7d699f910c7f09bc9fa996f09b96b80bccb4f5dd4b59deae582f6ad6e505ecef6376f8beac1eda06df2dbc89b70e82835d104d6fcabd33c1aed1ae9 + languageName: node + linkType: hard + "arrify@npm:^1.0.1": version: 1.0.1 resolution: "arrify@npm:1.0.1" @@ -7109,6 +7202,16 @@ __metadata: languageName: node linkType: hard +"call-bind-apply-helpers@npm:^1.0.0, call-bind-apply-helpers@npm:^1.0.1": + version: 1.0.1 + resolution: "call-bind-apply-helpers@npm:1.0.1" + dependencies: + es-errors: "npm:^1.3.0" + function-bind: "npm:^1.1.2" + checksum: 10/6e30c621170e45f1fd6735e84d02ee8e02a3ab95cb109499d5308cbe5d1e84d0cd0e10b48cc43c76aa61450ae1b03a7f89c37c10fc0de8d4998b42aab0f268cc + languageName: node + linkType: hard + "call-bind@npm:^1.0.2, call-bind@npm:^1.0.5, call-bind@npm:^1.0.6, call-bind@npm:^1.0.7": version: 1.0.7 resolution: "call-bind@npm:1.0.7" @@ -7122,6 +7225,28 @@ __metadata: languageName: node linkType: hard +"call-bind@npm:^1.0.8": + version: 1.0.8 + resolution: "call-bind@npm:1.0.8" + dependencies: + call-bind-apply-helpers: "npm:^1.0.0" + es-define-property: "npm:^1.0.0" + get-intrinsic: "npm:^1.2.4" + set-function-length: "npm:^1.2.2" + checksum: 10/659b03c79bbfccf0cde3a79e7d52570724d7290209823e1ca5088f94b52192dc1836b82a324d0144612f816abb2f1734447438e38d9dafe0b3f82c2a1b9e3bce + languageName: node + linkType: hard + +"call-bound@npm:^1.0.2, call-bound@npm:^1.0.3": + version: 1.0.3 + resolution: "call-bound@npm:1.0.3" + dependencies: + call-bind-apply-helpers: "npm:^1.0.1" + get-intrinsic: "npm:^1.2.6" + checksum: 10/c39a8245f68cdb7c1f5eea7b3b1e3a7a90084ea6efebb78ebc454d698ade2c2bb42ec033abc35f1e596d62496b6100e9f4cdfad1956476c510130e2cda03266d + languageName: node + linkType: hard + "callsites@npm:^3.0.0": version: 3.1.0 resolution: "callsites@npm:3.1.0" @@ -8031,7 +8156,7 @@ __metadata: languageName: node linkType: hard -"cross-spawn@npm:^7.0.0, cross-spawn@npm:^7.0.2, cross-spawn@npm:^7.0.3": +"cross-spawn@npm:^7.0.0, cross-spawn@npm:^7.0.3, cross-spawn@npm:^7.0.6": version: 7.0.6 resolution: "cross-spawn@npm:7.0.6" dependencies: @@ -8561,6 +8686,17 @@ __metadata: languageName: node linkType: hard +"data-view-buffer@npm:^1.0.2": + version: 1.0.2 + resolution: "data-view-buffer@npm:1.0.2" + dependencies: + call-bound: "npm:^1.0.3" + es-errors: "npm:^1.3.0" + is-data-view: "npm:^1.0.2" + checksum: 10/c10b155a4e93999d3a215d08c23eea95f865e1f510b2e7748fcae1882b776df1afe8c99f483ace7fc0e5a3193ab08da138abebc9829d12003746c5a338c4d644 + languageName: node + linkType: hard + "data-view-byte-length@npm:^1.0.1": version: 1.0.1 resolution: "data-view-byte-length@npm:1.0.1" @@ -8572,6 +8708,17 @@ __metadata: languageName: node linkType: hard +"data-view-byte-length@npm:^1.0.2": + version: 1.0.2 + resolution: "data-view-byte-length@npm:1.0.2" + dependencies: + call-bound: "npm:^1.0.3" + es-errors: "npm:^1.3.0" + is-data-view: "npm:^1.0.2" + checksum: 10/2a47055fcf1ab3ec41b00b6f738c6461a841391a643c9ed9befec1117c1765b4d492661d97fb7cc899200c328949dca6ff189d2c6537d96d60e8a02dfe3c95f7 + languageName: node + linkType: hard + "data-view-byte-offset@npm:^1.0.0": version: 1.0.0 resolution: "data-view-byte-offset@npm:1.0.0" @@ -8583,6 +8730,17 @@ __metadata: languageName: node linkType: hard +"data-view-byte-offset@npm:^1.0.1": + version: 1.0.1 + resolution: "data-view-byte-offset@npm:1.0.1" + dependencies: + call-bound: "npm:^1.0.2" + es-errors: "npm:^1.3.0" + is-data-view: "npm:^1.0.1" + checksum: 10/fa3bdfa0968bea6711ee50375094b39f561bce3f15f9e558df59de9c25f0bdd4cddc002d9c1d70ac7772ebd36854a7e22d1761e7302a934e6f1c2263bcf44aa2 + languageName: node + linkType: hard + "dateformat@npm:^3.0.3": version: 3.0.3 resolution: "dateformat@npm:3.0.3" @@ -8606,7 +8764,7 @@ __metadata: languageName: node linkType: hard -"debug@npm:4, debug@npm:^4.0.0, debug@npm:^4.1.0, debug@npm:^4.1.1, debug@npm:^4.3.1, debug@npm:^4.3.2, debug@npm:^4.3.4, debug@npm:^4.3.5, debug@npm:~4.4.0": +"debug@npm:4, debug@npm:^4.0.0, debug@npm:^4.1.0, debug@npm:^4.1.1, debug@npm:^4.3.1, debug@npm:^4.3.2, debug@npm:^4.3.4, debug@npm:^4.3.7, debug@npm:~4.4.0": version: 4.4.0 resolution: "debug@npm:4.4.0" dependencies: @@ -8866,15 +9024,6 @@ __metadata: languageName: node linkType: hard -"doctrine@npm:^3.0.0": - version: 3.0.0 - resolution: "doctrine@npm:3.0.0" - dependencies: - esutils: "npm:^2.0.2" - checksum: 10/b4b28f1df5c563f7d876e7461254a4597b8cabe915abe94d7c5d1633fed263fcf9a85e8d3836591fc2d040108e822b0d32758e5ec1fe31c590dc7e08086e3e48 - languageName: node - linkType: hard - "dom-accessibility-api@npm:^0.5.6, dom-accessibility-api@npm:^0.5.9": version: 0.5.14 resolution: "dom-accessibility-api@npm:0.5.14" @@ -8971,6 +9120,17 @@ __metadata: languageName: node linkType: hard +"dunder-proto@npm:^1.0.0, dunder-proto@npm:^1.0.1": + version: 1.0.1 + resolution: "dunder-proto@npm:1.0.1" + dependencies: + call-bind-apply-helpers: "npm:^1.0.1" + es-errors: "npm:^1.3.0" + gopd: "npm:^1.2.0" + checksum: 10/5add88a3d68d42d6e6130a0cac450b7c2edbe73364bbd2fc334564418569bea97c6943a8fcd70e27130bf32afc236f30982fc4905039b703f23e9e0433c29934 + languageName: node + linkType: hard + "duplexer@npm:^0.1.1, duplexer@npm:^0.1.2": version: 0.1.2 resolution: "duplexer@npm:0.1.2" @@ -9294,6 +9454,61 @@ __metadata: languageName: node linkType: hard +"es-abstract@npm:^1.23.5, es-abstract@npm:^1.23.6": + version: 1.23.7 + resolution: "es-abstract@npm:1.23.7" + dependencies: + array-buffer-byte-length: "npm:^1.0.2" + arraybuffer.prototype.slice: "npm:^1.0.4" + available-typed-arrays: "npm:^1.0.7" + call-bind: "npm:^1.0.8" + call-bound: "npm:^1.0.3" + data-view-buffer: "npm:^1.0.2" + data-view-byte-length: "npm:^1.0.2" + data-view-byte-offset: "npm:^1.0.1" + es-define-property: "npm:^1.0.1" + es-errors: "npm:^1.3.0" + es-object-atoms: "npm:^1.0.0" + es-set-tostringtag: "npm:^2.0.3" + es-to-primitive: "npm:^1.3.0" + function.prototype.name: "npm:^1.1.8" + get-intrinsic: "npm:^1.2.6" + get-symbol-description: "npm:^1.1.0" + globalthis: "npm:^1.0.4" + gopd: "npm:^1.2.0" + has-property-descriptors: "npm:^1.0.2" + has-proto: "npm:^1.2.0" + has-symbols: "npm:^1.1.0" + hasown: "npm:^2.0.2" + internal-slot: "npm:^1.1.0" + is-array-buffer: "npm:^3.0.5" + is-callable: "npm:^1.2.7" + is-data-view: "npm:^1.0.2" + is-regex: "npm:^1.2.1" + is-shared-array-buffer: "npm:^1.0.4" + is-string: "npm:^1.1.1" + is-typed-array: "npm:^1.1.15" + is-weakref: "npm:^1.1.0" + math-intrinsics: "npm:^1.1.0" + object-inspect: "npm:^1.13.3" + object-keys: "npm:^1.1.1" + object.assign: "npm:^4.1.7" + regexp.prototype.flags: "npm:^1.5.3" + safe-array-concat: "npm:^1.1.3" + safe-regex-test: "npm:^1.1.0" + string.prototype.trim: "npm:^1.2.10" + string.prototype.trimend: "npm:^1.0.9" + string.prototype.trimstart: "npm:^1.0.8" + typed-array-buffer: "npm:^1.0.3" + typed-array-byte-length: "npm:^1.0.3" + typed-array-byte-offset: "npm:^1.0.4" + typed-array-length: "npm:^1.0.7" + unbox-primitive: "npm:^1.1.0" + which-typed-array: "npm:^1.1.18" + checksum: 10/c079f4e3fe25af0bccf483383a2dd170d69483f93cbd34ad534da0749d3634f59f907edfee898963a9fd5c507d16336fa3d5ce77e1d5d36eae6c00d835ebd423 + languageName: node + linkType: hard + "es-array-method-boxes-properly@npm:^1.0.0": version: 1.0.0 resolution: "es-array-method-boxes-properly@npm:1.0.0" @@ -9310,6 +9525,13 @@ __metadata: languageName: node linkType: hard +"es-define-property@npm:^1.0.1": + version: 1.0.1 + resolution: "es-define-property@npm:1.0.1" + checksum: 10/f8dc9e660d90919f11084db0a893128f3592b781ce967e4fccfb8f3106cb83e400a4032c559184ec52ee1dbd4b01e7776c7cd0b3327b1961b1a4a7008920fe78 + languageName: node + linkType: hard + "es-errors@npm:^1.2.1, es-errors@npm:^1.3.0": version: 1.3.0 resolution: "es-errors@npm:1.3.0" @@ -9317,25 +9539,27 @@ __metadata: languageName: node linkType: hard -"es-iterator-helpers@npm:^1.0.19": - version: 1.0.19 - resolution: "es-iterator-helpers@npm:1.0.19" +"es-iterator-helpers@npm:^1.1.0": + version: 1.2.1 + resolution: "es-iterator-helpers@npm:1.2.1" dependencies: - call-bind: "npm:^1.0.7" + call-bind: "npm:^1.0.8" + call-bound: "npm:^1.0.3" define-properties: "npm:^1.2.1" - es-abstract: "npm:^1.23.3" + es-abstract: "npm:^1.23.6" es-errors: "npm:^1.3.0" es-set-tostringtag: "npm:^2.0.3" function-bind: "npm:^1.1.2" - get-intrinsic: "npm:^1.2.4" - globalthis: "npm:^1.0.3" + get-intrinsic: "npm:^1.2.6" + globalthis: "npm:^1.0.4" + gopd: "npm:^1.2.0" has-property-descriptors: "npm:^1.0.2" - has-proto: "npm:^1.0.3" - has-symbols: "npm:^1.0.3" - internal-slot: "npm:^1.0.7" - iterator.prototype: "npm:^1.1.2" - safe-array-concat: "npm:^1.1.2" - checksum: 10/980a8081cf6798fe17fcea193b0448d784d72d76aca7240b10813207c67e3dc0d8a23992263870c4fc291da5a946935b0c56dec4fa1a9de8fee0165e4fa1fc58 + has-proto: "npm:^1.2.0" + has-symbols: "npm:^1.1.0" + internal-slot: "npm:^1.1.0" + iterator.prototype: "npm:^1.1.4" + safe-array-concat: "npm:^1.1.3" + checksum: 10/802e0e8427a05ff4a5b0c70c7fdaaeff37cdb81a28694aeb7bfb831c6ab340d8f3deeb67b96732ff9e9699ea240524d5ea8a9a6a335fcd15aa3983b27b06113f languageName: node linkType: hard @@ -9379,6 +9603,17 @@ __metadata: languageName: node linkType: hard +"es-to-primitive@npm:^1.3.0": + version: 1.3.0 + resolution: "es-to-primitive@npm:1.3.0" + dependencies: + is-callable: "npm:^1.2.7" + is-date-object: "npm:^1.0.5" + is-symbol: "npm:^1.0.4" + checksum: 10/17faf35c221aad59a16286cbf58ef6f080bf3c485dff202c490d074d8e74da07884e29b852c245d894eac84f73c58330ec956dfd6d02c0b449d75eb1012a3f9b + languageName: node + linkType: hard + "esbuild-sass-plugin@npm:^3.3.1": version: 3.3.1 resolution: "esbuild-sass-plugin@npm:3.3.1" @@ -9625,18 +9860,18 @@ __metadata: languageName: node linkType: hard -"eslint-import-resolver-typescript@npm:^3.6.3": - version: 3.6.3 - resolution: "eslint-import-resolver-typescript@npm:3.6.3" +"eslint-import-resolver-typescript@npm:^3.7.0": + version: 3.7.0 + resolution: "eslint-import-resolver-typescript@npm:3.7.0" dependencies: "@nolyfill/is-core-module": "npm:1.0.39" - debug: "npm:^4.3.5" + debug: "npm:^4.3.7" enhanced-resolve: "npm:^5.15.0" - eslint-module-utils: "npm:^2.8.1" fast-glob: "npm:^3.3.2" get-tsconfig: "npm:^4.7.5" is-bun-module: "npm:^1.0.2" is-glob: "npm:^4.0.3" + stable-hash: "npm:^0.0.4" peerDependencies: eslint: "*" eslint-plugin-import: "*" @@ -9646,25 +9881,25 @@ __metadata: optional: true eslint-plugin-import-x: optional: true - checksum: 10/5f9956dbbd0becc3d6c6cb945dad0e5e6f529cfd0f488d5688f3c59840cd7f4a44ab6aee0f54b5c4188134dab9a01cb63c1201767bde7fc330b7c1a14747f8ac + checksum: 10/8158730c11e562c56ed9bf7236dc75bce35b6992dc32c39ac2f4177ab77fca97b95999850204a6458054243607b54aee88c028a61fed4184f24f425fa1afff01 languageName: node linkType: hard -"eslint-module-utils@npm:^2.8.1, eslint-module-utils@npm:^2.9.0": - version: 2.11.0 - resolution: "eslint-module-utils@npm:2.11.0" +"eslint-module-utils@npm:^2.12.0": + version: 2.12.0 + resolution: "eslint-module-utils@npm:2.12.0" dependencies: debug: "npm:^3.2.7" peerDependenciesMeta: eslint: optional: true - checksum: 10/1ba42cf48c5f9ec3b76dfa42c16f1c24c10508313689425c05ccb1d0eaa34bdc5c5b9c0c033cd402e9c429666bd3eb8c6d0c66565b0c00949fae743ad3643c95 + checksum: 10/dd27791147eca17366afcb83f47d6825b6ce164abb256681e5de4ec1d7e87d8605641eb869298a0dbc70665e2446dbcc2f40d3e1631a9475dd64dd23d4ca5dee languageName: node linkType: hard -"eslint-plugin-import@npm:^2.30.0": - version: 2.30.0 - resolution: "eslint-plugin-import@npm:2.30.0" +"eslint-plugin-import@npm:^2.31.0": + version: 2.31.0 + resolution: "eslint-plugin-import@npm:2.31.0" dependencies: "@rtsao/scc": "npm:^1.1.0" array-includes: "npm:^3.1.8" @@ -9674,7 +9909,7 @@ __metadata: debug: "npm:^3.2.7" doctrine: "npm:^2.1.0" eslint-import-resolver-node: "npm:^0.3.9" - eslint-module-utils: "npm:^2.9.0" + eslint-module-utils: "npm:^2.12.0" hasown: "npm:^2.0.2" is-core-module: "npm:^2.15.1" is-glob: "npm:^4.0.3" @@ -9683,32 +9918,33 @@ __metadata: object.groupby: "npm:^1.0.3" object.values: "npm:^1.2.0" semver: "npm:^6.3.1" + string.prototype.trimend: "npm:^1.0.8" tsconfig-paths: "npm:^3.15.0" peerDependencies: - eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 - checksum: 10/a5f85dfe76e27286c28a01d137769726ce3f758bcc03aa6b6f9e18700a40a08f57239f82e07efcab763c4b03a02d425edcc29fbecf40aad0124286978c6bc63c + eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 || ^9 + checksum: 10/6b76bd009ac2db0615d9019699d18e2a51a86cb8c1d0855a35fb1b418be23b40239e6debdc6e8c92c59f1468ed0ea8d7b85c817117a113d5cc225be8a02ad31c languageName: node linkType: hard -"eslint-plugin-react-hooks@npm:^4.6.2": - version: 4.6.2 - resolution: "eslint-plugin-react-hooks@npm:4.6.2" +"eslint-plugin-react-hooks@npm:^5.1.0": + version: 5.1.0 + resolution: "eslint-plugin-react-hooks@npm:5.1.0" peerDependencies: - eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 - checksum: 10/5a0680941f34e70cf505bcb6082df31a3e445d193ee95a88ff3483041eb944f4cefdaf7e81b0eb1feb4eeceee8c7c6ddb8a2a6e8c4c0388514a42e16ac7b7a69 + eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0 + checksum: 10/b6778fd9e1940b06868921309e8b269426e17eda555816d4b71def4dcf0572de1199fdb627ac09ce42160b9569a93cd9b0fd81b740ab4df98205461c53997a43 languageName: node linkType: hard -"eslint-plugin-react@npm:^7.36.1": - version: 7.36.1 - resolution: "eslint-plugin-react@npm:7.36.1" +"eslint-plugin-react@npm:^7.37.2": + version: 7.37.2 + resolution: "eslint-plugin-react@npm:7.37.2" dependencies: array-includes: "npm:^3.1.8" array.prototype.findlast: "npm:^1.2.5" array.prototype.flatmap: "npm:^1.3.2" array.prototype.tosorted: "npm:^1.1.4" doctrine: "npm:^2.1.0" - es-iterator-helpers: "npm:^1.0.19" + es-iterator-helpers: "npm:^1.1.0" estraverse: "npm:^5.3.0" hasown: "npm:^2.0.2" jsx-ast-utils: "npm:^2.4.1 || ^3.0.0" @@ -9723,72 +9959,80 @@ __metadata: string.prototype.repeat: "npm:^1.0.0" peerDependencies: eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7 - checksum: 10/bca154b446c35af4859a92fd043dcfe5c74851eb27652234020548570bb81d37cc9f1eb1795b3c9e7514de6c9b48f42fcc00153062eca879dab45ab84e49d0b1 + checksum: 10/df2f7ab198018d3378f305a8a5ceceebc9bd31f019fc7567a2ef9c77789dc8a6a2c3c3957f8b0805f26c11c02f9f86c972e02cd0eda12f4d0370526c11f8a9a3 languageName: node linkType: hard -"eslint-scope@npm:^7.2.2": - version: 7.2.2 - resolution: "eslint-scope@npm:7.2.2" +"eslint-scope@npm:^8.2.0": + version: 8.2.0 + resolution: "eslint-scope@npm:8.2.0" dependencies: esrecurse: "npm:^4.3.0" estraverse: "npm:^5.2.0" - checksum: 10/5c660fb905d5883ad018a6fea2b49f3cb5b1cbf2cd4bd08e98646e9864f9bc2c74c0839bed2d292e90a4a328833accc197c8f0baed89cbe8d605d6f918465491 + checksum: 10/cd9ab60d5a68f3a0fcac04d1cff5a7383d0f331964d5f1c446259123caec5b3ccc542284d07846e4f4d1389da77750821cc9a6e1ce18558c674977351666f9a6 languageName: node linkType: hard -"eslint-visitor-keys@npm:^3.3.0, eslint-visitor-keys@npm:^3.4.1, eslint-visitor-keys@npm:^3.4.3": +"eslint-visitor-keys@npm:^3.3.0": version: 3.4.3 resolution: "eslint-visitor-keys@npm:3.4.3" checksum: 10/3f357c554a9ea794b094a09bd4187e5eacd1bc0d0653c3adeb87962c548e6a1ab8f982b86963ae1337f5d976004146536dcee5d0e2806665b193fbfbf1a9231b languageName: node linkType: hard -"eslint@npm:^8.57.1": - version: 8.57.1 - resolution: "eslint@npm:8.57.1" +"eslint-visitor-keys@npm:^4.2.0": + version: 4.2.0 + resolution: "eslint-visitor-keys@npm:4.2.0" + checksum: 10/9651b3356b01760e586b4c631c5268c0e1a85236e3292bf754f0472f465bf9a856c0ddc261fceace155334118c0151778effafbab981413dbf9288349343fa25 + languageName: node + linkType: hard + +"eslint@npm:^9.17.0": + version: 9.17.0 + resolution: "eslint@npm:9.17.0" dependencies: "@eslint-community/eslint-utils": "npm:^4.2.0" - "@eslint-community/regexpp": "npm:^4.6.1" - "@eslint/eslintrc": "npm:^2.1.4" - "@eslint/js": "npm:8.57.1" - "@humanwhocodes/config-array": "npm:^0.13.0" + "@eslint-community/regexpp": "npm:^4.12.1" + "@eslint/config-array": "npm:^0.19.0" + "@eslint/core": "npm:^0.9.0" + "@eslint/eslintrc": "npm:^3.2.0" + "@eslint/js": "npm:9.17.0" + "@eslint/plugin-kit": "npm:^0.2.3" + "@humanfs/node": "npm:^0.16.6" "@humanwhocodes/module-importer": "npm:^1.0.1" - "@nodelib/fs.walk": "npm:^1.2.8" - "@ungap/structured-clone": "npm:^1.2.0" + "@humanwhocodes/retry": "npm:^0.4.1" + "@types/estree": "npm:^1.0.6" + "@types/json-schema": "npm:^7.0.15" ajv: "npm:^6.12.4" chalk: "npm:^4.0.0" - cross-spawn: "npm:^7.0.2" + cross-spawn: "npm:^7.0.6" debug: "npm:^4.3.2" - doctrine: "npm:^3.0.0" escape-string-regexp: "npm:^4.0.0" - eslint-scope: "npm:^7.2.2" - eslint-visitor-keys: "npm:^3.4.3" - espree: "npm:^9.6.1" - esquery: "npm:^1.4.2" + eslint-scope: "npm:^8.2.0" + eslint-visitor-keys: "npm:^4.2.0" + espree: "npm:^10.3.0" + esquery: "npm:^1.5.0" esutils: "npm:^2.0.2" fast-deep-equal: "npm:^3.1.3" - file-entry-cache: "npm:^6.0.1" + file-entry-cache: "npm:^8.0.0" find-up: "npm:^5.0.0" glob-parent: "npm:^6.0.2" - globals: "npm:^13.19.0" - graphemer: "npm:^1.4.0" ignore: "npm:^5.2.0" imurmurhash: "npm:^0.1.4" is-glob: "npm:^4.0.0" - is-path-inside: "npm:^3.0.3" - js-yaml: "npm:^4.1.0" json-stable-stringify-without-jsonify: "npm:^1.0.1" - levn: "npm:^0.4.1" lodash.merge: "npm:^4.6.2" minimatch: "npm:^3.1.2" natural-compare: "npm:^1.4.0" optionator: "npm:^0.9.3" - strip-ansi: "npm:^6.0.1" - text-table: "npm:^0.2.0" + peerDependencies: + jiti: "*" + peerDependenciesMeta: + jiti: + optional: true bin: eslint: bin/eslint.js - checksum: 10/5504fa24879afdd9f9929b2fbfc2ee9b9441a3d464efd9790fbda5f05738858530182029f13323add68d19fec749d3ab4a70320ded091ca4432b1e9cc4ed104c + checksum: 10/a48ee67dd4e737974bbb49ca5d12d0ce35bcd874507807599e3655bb398320ab27c9deed1aad508a963967815e626c21208f52158c2fc0796d0cc8186528efeb languageName: node linkType: hard @@ -9799,14 +10043,14 @@ __metadata: languageName: node linkType: hard -"espree@npm:^9.6.0, espree@npm:^9.6.1": - version: 9.6.1 - resolution: "espree@npm:9.6.1" +"espree@npm:^10.0.1, espree@npm:^10.3.0": + version: 10.3.0 + resolution: "espree@npm:10.3.0" dependencies: - acorn: "npm:^8.9.0" + acorn: "npm:^8.14.0" acorn-jsx: "npm:^5.3.2" - eslint-visitor-keys: "npm:^3.4.1" - checksum: 10/255ab260f0d711a54096bdeda93adff0eadf02a6f9b92f02b323e83a2b7fc258797919437ad331efec3930475feb0142c5ecaaf3cdab4befebd336d47d3f3134 + eslint-visitor-keys: "npm:^4.2.0" + checksum: 10/3412d44d4204c9e29d6b5dd0277400cfa0cd68495dc09eae1b9ce79d0c8985c1c5cc09cb9ba32a1cd963f48a49b0c46bdb7736afe395a300aa6bb1c0d86837e8 languageName: node linkType: hard @@ -9820,12 +10064,12 @@ __metadata: languageName: node linkType: hard -"esquery@npm:^1.4.2": - version: 1.5.0 - resolution: "esquery@npm:1.5.0" +"esquery@npm:^1.5.0": + version: 1.6.0 + resolution: "esquery@npm:1.6.0" dependencies: estraverse: "npm:^5.1.0" - checksum: 10/e65fcdfc1e0ff5effbf50fb4f31ea20143ae5df92bb2e4953653d8d40aa4bc148e0d06117a592ce4ea53eeab1dafdfded7ea7e22a5be87e82d73757329a1b01d + checksum: 10/c587fb8ec9ed83f2b1bc97cf2f6854cc30bf784a79d62ba08c6e358bf22280d69aee12827521cf38e69ae9761d23fb7fde593ce315610f85655c139d99b05e5a languageName: node linkType: hard @@ -10218,12 +10462,12 @@ __metadata: languageName: node linkType: hard -"file-entry-cache@npm:^6.0.1": - version: 6.0.1 - resolution: "file-entry-cache@npm:6.0.1" +"file-entry-cache@npm:^8.0.0": + version: 8.0.0 + resolution: "file-entry-cache@npm:8.0.0" dependencies: - flat-cache: "npm:^3.0.4" - checksum: 10/099bb9d4ab332cb93c48b14807a6918a1da87c45dce91d4b61fd40e6505d56d0697da060cb901c729c90487067d93c9243f5da3dc9c41f0358483bfdebca736b + flat-cache: "npm:^4.0.0" + checksum: 10/afe55c4de4e0d226a23c1eae62a7219aafb390859122608a89fa4df6addf55c7fd3f1a2da6f5b41e7cdff496e4cf28bbd215d53eab5c817afa96d2b40c81bfb0 languageName: node linkType: hard @@ -10321,13 +10565,13 @@ __metadata: languageName: node linkType: hard -"flat-cache@npm:^3.0.4": - version: 3.0.4 - resolution: "flat-cache@npm:3.0.4" +"flat-cache@npm:^4.0.0": + version: 4.0.1 + resolution: "flat-cache@npm:4.0.1" dependencies: - flatted: "npm:^3.1.0" - rimraf: "npm:^3.0.2" - checksum: 10/9fe5d0cb97c988e3b25242e71346965fae22757674db3fca14206850af2efa3ca3b04a3ba0eba8d5e20fd8a3be80a2e14b1c2917e70ffe1acb98a8c3327e4c9f + flatted: "npm:^3.2.9" + keyv: "npm:^4.5.4" + checksum: 10/58ce851d9045fffc7871ce2bd718bc485ad7e777bf748c054904b87c351ff1080c2c11da00788d78738bfb51b71e4d5ea12d13b98eb36e3358851ffe495b62dc languageName: node linkType: hard @@ -10340,10 +10584,10 @@ __metadata: languageName: node linkType: hard -"flatted@npm:^3.1.0": - version: 3.1.1 - resolution: "flatted@npm:3.1.1" - checksum: 10/2ce58ed083be7f7ec4500deba0a58df0673487ddadf14ab197d149149e965db6b5d53bedb40d59dee180afba97b093326c6f836385004ea8929b7beb18bb6033 +"flatted@npm:^3.2.9": + version: 3.3.2 + resolution: "flatted@npm:3.3.2" + checksum: 10/ac3c159742e01d0e860a861164bcfd35bb567ccbebb8a0dd041e61cf3c64a435b917dd1e7ed1c380c2ebca85735fb16644485ec33665bc6aafc3b316aa1eed44 languageName: node linkType: hard @@ -10537,7 +10781,7 @@ __metadata: languageName: node linkType: hard -"function.prototype.name@npm:^1.1.0, function.prototype.name@npm:^1.1.2, function.prototype.name@npm:^1.1.5, function.prototype.name@npm:^1.1.6": +"function.prototype.name@npm:^1.1.0, function.prototype.name@npm:^1.1.2, function.prototype.name@npm:^1.1.6": version: 1.1.6 resolution: "function.prototype.name@npm:1.1.6" dependencies: @@ -10549,6 +10793,20 @@ __metadata: languageName: node linkType: hard +"function.prototype.name@npm:^1.1.8": + version: 1.1.8 + resolution: "function.prototype.name@npm:1.1.8" + dependencies: + call-bind: "npm:^1.0.8" + call-bound: "npm:^1.0.3" + define-properties: "npm:^1.2.1" + functions-have-names: "npm:^1.2.3" + hasown: "npm:^2.0.2" + is-callable: "npm:^1.2.7" + checksum: 10/25b9e5bea936732a6f0c0c08db58cc0d609ac1ed458c6a07ead46b32e7b9bf3fe5887796c3f83d35994efbc4fdde81c08ac64135b2c399b8f2113968d44082bc + languageName: node + linkType: hard + "functions-have-names@npm:^1.2.3": version: 1.2.3 resolution: "functions-have-names@npm:1.2.3" @@ -10632,7 +10890,7 @@ __metadata: languageName: node linkType: hard -"get-intrinsic@npm:^1.1.1, get-intrinsic@npm:^1.1.3, get-intrinsic@npm:^1.2.1, get-intrinsic@npm:^1.2.3, get-intrinsic@npm:^1.2.4": +"get-intrinsic@npm:^1.1.3, get-intrinsic@npm:^1.2.1, get-intrinsic@npm:^1.2.3, get-intrinsic@npm:^1.2.4": version: 1.2.4 resolution: "get-intrinsic@npm:1.2.4" dependencies: @@ -10645,6 +10903,24 @@ __metadata: languageName: node linkType: hard +"get-intrinsic@npm:^1.2.5, get-intrinsic@npm:^1.2.6": + version: 1.2.6 + resolution: "get-intrinsic@npm:1.2.6" + dependencies: + call-bind-apply-helpers: "npm:^1.0.1" + dunder-proto: "npm:^1.0.0" + es-define-property: "npm:^1.0.1" + es-errors: "npm:^1.3.0" + es-object-atoms: "npm:^1.0.0" + function-bind: "npm:^1.1.2" + gopd: "npm:^1.2.0" + has-symbols: "npm:^1.1.0" + hasown: "npm:^2.0.2" + math-intrinsics: "npm:^1.0.0" + checksum: 10/a1ffae6d7893a6fa0f4d1472adbc85095edd6b3b0943ead97c3738539cecb19d422ff4d48009eed8c3c27ad678c2b1e38a83b1a1e96b691d13ed8ecefca1068d + languageName: node + linkType: hard + "get-package-type@npm:^0.1.0": version: 0.1.0 resolution: "get-package-type@npm:0.1.0" @@ -10724,6 +11000,17 @@ __metadata: languageName: node linkType: hard +"get-symbol-description@npm:^1.1.0": + version: 1.1.0 + resolution: "get-symbol-description@npm:1.1.0" + dependencies: + call-bound: "npm:^1.0.3" + es-errors: "npm:^1.3.0" + get-intrinsic: "npm:^1.2.6" + checksum: 10/a353e3a9595a74720b40fb5bae3ba4a4f826e186e83814d93375182384265676f59e49998b9cdfac4a2225ce95a3d32a68f502a2c5619303987f1c183ab80494 + languageName: node + linkType: hard + "get-tsconfig@npm:^4.7.5": version: 4.7.5 resolution: "get-tsconfig@npm:4.7.5" @@ -10924,12 +11211,10 @@ __metadata: languageName: node linkType: hard -"globals@npm:^13.19.0": - version: 13.19.0 - resolution: "globals@npm:13.19.0" - dependencies: - type-fest: "npm:^0.20.2" - checksum: 10/f365fc2a4eb21a264d0f2a6355ddf4ee32983e0817ec48a517a56d7d1944124c763e81cae13ae26fa9a7d6c7ab826b2e796f87b022a674336275da0e6249366e +"globals@npm:^14.0.0": + version: 14.0.0 + resolution: "globals@npm:14.0.0" + checksum: 10/03939c8af95c6df5014b137cac83aa909090c3a3985caef06ee9a5a669790877af8698ab38007e4c0186873adc14c0b13764acc754b16a754c216cc56aa5f021 languageName: node linkType: hard @@ -10942,6 +11227,16 @@ __metadata: languageName: node linkType: hard +"globalthis@npm:^1.0.4": + version: 1.0.4 + resolution: "globalthis@npm:1.0.4" + dependencies: + define-properties: "npm:^1.2.1" + gopd: "npm:^1.0.1" + checksum: 10/1f1fd078fb2f7296306ef9dd51019491044ccf17a59ed49d375b576ca108ff37e47f3d29aead7add40763574a992f16a5367dd1e2173b8634ef18556ab719ac4 + languageName: node + linkType: hard + "globby@npm:11.1.0, globby@npm:^11.0.3": version: 11.1.0 resolution: "globby@npm:11.1.0" @@ -11017,6 +11312,13 @@ __metadata: languageName: node linkType: hard +"gopd@npm:^1.2.0": + version: 1.2.0 + resolution: "gopd@npm:1.2.0" + checksum: 10/94e296d69f92dc1c0768fcfeecfb3855582ab59a7c75e969d5f96ce50c3d201fd86d5a2857c22565764d5bb8a816c7b1e58f133ec318cd56274da36c5e3fb1a1 + languageName: node + linkType: hard + "graceful-fs@npm:4.2.11, graceful-fs@npm:^4.1.11, graceful-fs@npm:^4.1.15, graceful-fs@npm:^4.1.2, graceful-fs@npm:^4.1.6, graceful-fs@npm:^4.2.0, graceful-fs@npm:^4.2.4, graceful-fs@npm:^4.2.6, graceful-fs@npm:^4.2.9": version: 4.2.11 resolution: "graceful-fs@npm:4.2.11" @@ -11044,6 +11346,7 @@ __metadata: "@bugsnag/plugin-express": "npm:^8.0.0" "@bugsnag/plugin-react": "npm:^8.0.0" "@dnd-kit/core": "npm:^6.1.0" + "@eslint/js": "npm:^9.17.0" "@fortawesome/fontawesome-svg-core": "npm:^6.5.2" "@fortawesome/free-brands-svg-icons": "npm:^6.5.2" "@fortawesome/free-solid-svg-icons": "npm:^6.5.2" @@ -11103,8 +11406,6 @@ __metadata: "@types/url-parse": "npm:^1.4.8" "@types/webfontloader": "npm:^1.6.34" "@types/workerpool": "npm:^6.1.0" - "@typescript-eslint/eslint-plugin": "npm:^8.10.0" - "@typescript-eslint/parser": "npm:^8.10.0" "@vitejs/plugin-react": "npm:^4.3.1" "@wojtekmaj/enzyme-adapter-react-17": "npm:^0.8.0" "@yarnpkg/types": "npm:^4.0.0" @@ -11129,12 +11430,12 @@ __metadata: embla-carousel-react: "npm:^8.1.7" entities: "npm:^4.4.0" enzyme: "npm:^3.11.0" - eslint: "npm:^8.57.1" + eslint: "npm:^9.17.0" eslint-config-prettier: "npm:^9.1.0" - eslint-import-resolver-typescript: "npm:^3.6.3" - eslint-plugin-import: "npm:^2.30.0" - eslint-plugin-react: "npm:^7.36.1" - eslint-plugin-react-hooks: "npm:^4.6.2" + eslint-import-resolver-typescript: "npm:^3.7.0" + eslint-plugin-import: "npm:^2.31.0" + eslint-plugin-react: "npm:^7.37.2" + eslint-plugin-react-hooks: "npm:^5.1.0" expr-eval: "npm:^2.0.2" express: "npm:^4.21.2" express-async-errors: "npm:^3.1.1" @@ -11221,6 +11522,7 @@ __metadata: tsx: "npm:^4.16.2" typeorm: "npm:^0.3.20" typescript: "npm:~5.7.2" + typescript-eslint: "npm:^8.18.1" unist-util-visit: "npm:^2.0.0" url-join: "npm:^4.0.0" url-parse: "npm:^1.5.10" @@ -11337,6 +11639,15 @@ __metadata: languageName: node linkType: hard +"has-proto@npm:^1.2.0": + version: 1.2.0 + resolution: "has-proto@npm:1.2.0" + dependencies: + dunder-proto: "npm:^1.0.0" + checksum: 10/7eaed07728eaa28b77fadccabce53f30de467ff186a766872669a833ac2e87d8922b76a22cc58339d7e0277aefe98d6d00762113b27a97cdf65adcf958970935 + languageName: node + linkType: hard + "has-symbols@npm:^1.0.1, has-symbols@npm:^1.0.3": version: 1.0.3 resolution: "has-symbols@npm:1.0.3" @@ -11344,6 +11655,13 @@ __metadata: languageName: node linkType: hard +"has-symbols@npm:^1.1.0": + version: 1.1.0 + resolution: "has-symbols@npm:1.1.0" + checksum: 10/959385c98696ebbca51e7534e0dc723ada325efa3475350951363cce216d27373e0259b63edb599f72eb94d6cde8577b4b2375f080b303947e560f85692834fa + languageName: node + linkType: hard + "has-tostringtag@npm:^1.0.0, has-tostringtag@npm:^1.0.2": version: 1.0.2 resolution: "has-tostringtag@npm:1.0.2" @@ -11905,6 +12223,17 @@ __metadata: languageName: node linkType: hard +"internal-slot@npm:^1.1.0": + version: 1.1.0 + resolution: "internal-slot@npm:1.1.0" + dependencies: + es-errors: "npm:^1.3.0" + hasown: "npm:^2.0.2" + side-channel: "npm:^1.1.0" + checksum: 10/1d5219273a3dab61b165eddf358815eefc463207db33c20fcfca54717da02e3f492003757721f972fd0bf21e4b426cab389c5427b99ceea4b8b670dc88ee6d4a + languageName: node + linkType: hard + "interpret@npm:^1.0.0": version: 1.4.0 resolution: "interpret@npm:1.4.0" @@ -11963,6 +12292,17 @@ __metadata: languageName: node linkType: hard +"is-array-buffer@npm:^3.0.5": + version: 3.0.5 + resolution: "is-array-buffer@npm:3.0.5" + dependencies: + call-bind: "npm:^1.0.8" + call-bound: "npm:^1.0.3" + get-intrinsic: "npm:^1.2.6" + checksum: 10/ef1095c55b963cd0dcf6f88a113e44a0aeca91e30d767c475e7d746d28d1195b10c5076b94491a7a0cd85020ca6a4923070021d74651d093dc909e9932cf689b + languageName: node + linkType: hard + "is-arrayish@npm:^0.2.1": version: 0.2.1 resolution: "is-arrayish@npm:0.2.1" @@ -11993,6 +12333,15 @@ __metadata: languageName: node linkType: hard +"is-bigint@npm:^1.1.0": + version: 1.1.0 + resolution: "is-bigint@npm:1.1.0" + dependencies: + has-bigints: "npm:^1.0.2" + checksum: 10/10cf327310d712fe227cfaa32d8b11814c214392b6ac18c827f157e1e85363cf9c8e2a22df526689bd5d25e53b58cc110894787afb54e138e7c504174dba15fd + languageName: node + linkType: hard + "is-binary-path@npm:~2.1.0": version: 2.1.0 resolution: "is-binary-path@npm:2.1.0" @@ -12012,6 +12361,16 @@ __metadata: languageName: node linkType: hard +"is-boolean-object@npm:^1.2.1": + version: 1.2.1 + resolution: "is-boolean-object@npm:1.2.1" + dependencies: + call-bound: "npm:^1.0.2" + has-tostringtag: "npm:^1.0.2" + checksum: 10/5a15524635c9334ebbd668f20a6cbf023adceed5725ec96a50056d21ae65f52759d04a8fa7d7febf00ff3bc4e6d3837638eb84be572f287bcfd15f8b8facde43 + languageName: node + linkType: hard + "is-buffer@npm:^2.0.0": version: 2.0.5 resolution: "is-buffer@npm:2.0.5" @@ -12071,6 +12430,17 @@ __metadata: languageName: node linkType: hard +"is-data-view@npm:^1.0.2": + version: 1.0.2 + resolution: "is-data-view@npm:1.0.2" + dependencies: + call-bound: "npm:^1.0.2" + get-intrinsic: "npm:^1.2.6" + is-typed-array: "npm:^1.1.13" + checksum: 10/357e9a48fa38f369fd6c4c3b632a3ab2b8adca14997db2e4b3fe94c4cd0a709af48e0fb61b02c64a90c0dd542fd489d49c2d03157b05ae6c07f5e4dec9e730a8 + languageName: node + linkType: hard + "is-date-object@npm:^1.0.1, is-date-object@npm:^1.0.5": version: 1.0.5 resolution: "is-date-object@npm:1.0.5" @@ -12080,6 +12450,16 @@ __metadata: languageName: node linkType: hard +"is-date-object@npm:^1.1.0": + version: 1.1.0 + resolution: "is-date-object@npm:1.1.0" + dependencies: + call-bound: "npm:^1.0.2" + has-tostringtag: "npm:^1.0.2" + checksum: 10/3a811b2c3176fb31abee1d23d3dc78b6c65fd9c07d591fcb67553cab9e7f272728c3dd077d2d738b53f9a2103255b0a6e8dfc9568a7805c56a78b2563e8d1dec + languageName: node + linkType: hard + "is-decimal@npm:^1.0.0": version: 1.0.4 resolution: "is-decimal@npm:1.0.4" @@ -12110,12 +12490,12 @@ __metadata: languageName: node linkType: hard -"is-finalizationregistry@npm:^1.0.2": - version: 1.0.2 - resolution: "is-finalizationregistry@npm:1.0.2" +"is-finalizationregistry@npm:^1.1.0": + version: 1.1.1 + resolution: "is-finalizationregistry@npm:1.1.1" dependencies: - call-bind: "npm:^1.0.2" - checksum: 10/1b8e9e1bf2075e862315ef9d38ce6d39c43ca9d81d46f73b34473506992f4b0fbaadb47ec9b420a5e76afe3f564d9f1f0d9b552ef272cc2395e0f21d743c9c29 + call-bound: "npm:^1.0.3" + checksum: 10/0bfb145e9a1ba852ddde423b0926d2169ae5fe9e37882cde9e8f69031281a986308df4d982283e152396e88b86562ed2256cbaa5e6390fb840a4c25ab54b8a80 languageName: node linkType: hard @@ -12198,10 +12578,10 @@ __metadata: languageName: node linkType: hard -"is-map@npm:^2.0.1": - version: 2.0.2 - resolution: "is-map@npm:2.0.2" - checksum: 10/60ba910f835f2eacb1fdf5b5a6c60fe1c702d012a7673e6546992bcc0c873f62ada6e13d327f9e48f1720d49c152d6cdecae1fa47a261ef3d247c3ce6f0e1d39 +"is-map@npm:^2.0.3": + version: 2.0.3 + resolution: "is-map@npm:2.0.3" + checksum: 10/8de7b41715b08bcb0e5edb0fb9384b80d2d5bcd10e142188f33247d19ff078abaf8e9b6f858e2302d8d05376a26a55cd23a3c9f8ab93292b02fcd2cc9e4e92bb languageName: node linkType: hard @@ -12219,6 +12599,16 @@ __metadata: languageName: node linkType: hard +"is-number-object@npm:^1.1.1": + version: 1.1.1 + resolution: "is-number-object@npm:1.1.1" + dependencies: + call-bound: "npm:^1.0.3" + has-tostringtag: "npm:^1.0.2" + checksum: 10/a5922fb8779ab1ea3b8a9c144522b3d0bea5d9f8f23f7a72470e61e1e4df47714e28e0154ac011998b709cce260c3c9447ad3cd24a96c2f2a0abfdb2cbdc76c8 + languageName: node + linkType: hard + "is-number@npm:^7.0.0": version: 7.0.0 resolution: "is-number@npm:7.0.0" @@ -12233,7 +12623,7 @@ __metadata: languageName: node linkType: hard -"is-path-inside@npm:^3.0.2, is-path-inside@npm:^3.0.3": +"is-path-inside@npm:^3.0.2": version: 3.0.3 resolution: "is-path-inside@npm:3.0.3" checksum: 10/abd50f06186a052b349c15e55b182326f1936c89a78bf6c8f2b707412517c097ce04bc49a0ca221787bc44e1049f51f09a2ffb63d22899051988d3a618ba13e9 @@ -12301,10 +12691,22 @@ __metadata: languageName: node linkType: hard -"is-set@npm:^2.0.1": - version: 2.0.2 - resolution: "is-set@npm:2.0.2" - checksum: 10/d89e82acdc7760993474f529e043f9c4a1d63ed4774d21cc2e331d0e401e5c91c27743cd7c889137028f6a742234759a4bd602368fbdbf0b0321994aefd5603f +"is-regex@npm:^1.2.1": + version: 1.2.1 + resolution: "is-regex@npm:1.2.1" + dependencies: + call-bound: "npm:^1.0.2" + gopd: "npm:^1.2.0" + has-tostringtag: "npm:^1.0.2" + hasown: "npm:^2.0.2" + checksum: 10/c42b7efc5868a5c9a4d8e6d3e9816e8815c611b09535c00fead18a1138455c5cb5e1887f0023a467ad3f9c419d62ba4dc3d9ba8bafe55053914d6d6454a945d2 + languageName: node + linkType: hard + +"is-set@npm:^2.0.3": + version: 2.0.3 + resolution: "is-set@npm:2.0.3" + checksum: 10/5685df33f0a4a6098a98c72d94d67cad81b2bc72f1fb2091f3d9283c4a1c582123cd709145b02a9745f0ce6b41e3e43f1c944496d1d74d4ea43358be61308669 languageName: node linkType: hard @@ -12317,6 +12719,15 @@ __metadata: languageName: node linkType: hard +"is-shared-array-buffer@npm:^1.0.4": + version: 1.0.4 + resolution: "is-shared-array-buffer@npm:1.0.4" + dependencies: + call-bound: "npm:^1.0.3" + checksum: 10/0380d7c60cc692856871526ffcd38a8133818a2ee42d47bb8008248a0cd2121d8c8b5f66b6da3cac24bc5784553cacb6faaf678f66bc88c6615b42af2825230e + languageName: node + linkType: hard + "is-ssh@npm:^1.4.0": version: 1.4.0 resolution: "is-ssh@npm:1.4.0" @@ -12349,6 +12760,16 @@ __metadata: languageName: node linkType: hard +"is-string@npm:^1.1.1": + version: 1.1.1 + resolution: "is-string@npm:1.1.1" + dependencies: + call-bound: "npm:^1.0.3" + has-tostringtag: "npm:^1.0.2" + checksum: 10/5277cb9e225a7cc8a368a72623b44a99f2cfa139659c6b203553540681ad4276bfc078420767aad0e73eef5f0bd07d4abf39a35d37ec216917879d11cebc1f8b + languageName: node + linkType: hard + "is-subset@npm:^0.1.1": version: 0.1.1 resolution: "is-subset@npm:0.1.1" @@ -12365,6 +12786,17 @@ __metadata: languageName: node linkType: hard +"is-symbol@npm:^1.0.4, is-symbol@npm:^1.1.1": + version: 1.1.1 + resolution: "is-symbol@npm:1.1.1" + dependencies: + call-bound: "npm:^1.0.2" + has-symbols: "npm:^1.1.0" + safe-regex-test: "npm:^1.1.0" + checksum: 10/db495c0d8cd0a7a66b4f4ef7fccee3ab5bd954cb63396e8ac4d32efe0e9b12fdfceb851d6c501216a71f4f21e5ff20fc2ee845a3d52d455e021c466ac5eb2db2 + languageName: node + linkType: hard + "is-text-path@npm:^1.0.1": version: 1.0.1 resolution: "is-text-path@npm:1.0.1" @@ -12383,6 +12815,15 @@ __metadata: languageName: node linkType: hard +"is-typed-array@npm:^1.1.14, is-typed-array@npm:^1.1.15": + version: 1.1.15 + resolution: "is-typed-array@npm:1.1.15" + dependencies: + which-typed-array: "npm:^1.1.16" + checksum: 10/e8cf60b9ea85667097a6ad68c209c9722cfe8c8edf04d6218366469e51944c5cc25bae45ffb845c23f811d262e4314d3b0168748eb16711aa34d12724cdf0735 + languageName: node + linkType: hard + "is-typedarray@npm:~1.0.0": version: 1.0.0 resolution: "is-typedarray@npm:1.0.0" @@ -12397,10 +12838,10 @@ __metadata: languageName: node linkType: hard -"is-weakmap@npm:^2.0.1": - version: 2.0.1 - resolution: "is-weakmap@npm:2.0.1" - checksum: 10/289fa4e8ba1bdda40ca78481266f6925b7c46a85599e6a41a77010bf91e5a24dfb660db96863bbf655ecdbda0ab517204d6a4e0c151dbec9d022c556321f3776 +"is-weakmap@npm:^2.0.2": + version: 2.0.2 + resolution: "is-weakmap@npm:2.0.2" + checksum: 10/a7b7e23206c542dcf2fa0abc483142731788771527e90e7e24f658c0833a0d91948a4f7b30d78f7a65255a48512e41a0288b778ba7fc396137515c12e201fd11 languageName: node linkType: hard @@ -12413,13 +12854,22 @@ __metadata: languageName: node linkType: hard -"is-weakset@npm:^2.0.1": - version: 2.0.2 - resolution: "is-weakset@npm:2.0.2" +"is-weakref@npm:^1.1.0": + version: 1.1.0 + resolution: "is-weakref@npm:1.1.0" dependencies: - call-bind: "npm:^1.0.2" - get-intrinsic: "npm:^1.1.1" - checksum: 10/8f2ddb9639716fd7936784e175ea1183c5c4c05274c34f34f6a53175313cb1c9c35a8b795623306995e2f7cc8f25aa46302f15a2113e51c5052d447be427195c + call-bound: "npm:^1.0.2" + checksum: 10/89e627cc1763ea110574bb408fcf060ede47e70437d9278858bc939e3b3f7e4b7c558610b733da5f2ad6084d9f12b9c714b011ccf3fa771ec87e221c22bed910 + languageName: node + linkType: hard + +"is-weakset@npm:^2.0.3": + version: 2.0.4 + resolution: "is-weakset@npm:2.0.4" + dependencies: + call-bound: "npm:^1.0.3" + get-intrinsic: "npm:^1.2.6" + checksum: 10/1d5e1d0179beeed3661125a6faa2e59bfb48afda06fc70db807f178aa0ebebc3758fb6358d76b3d528090d5ef85148c345dcfbf90839592fe293e3e5e82f2134 languageName: node linkType: hard @@ -12553,16 +13003,17 @@ __metadata: languageName: node linkType: hard -"iterator.prototype@npm:^1.1.2": - version: 1.1.2 - resolution: "iterator.prototype@npm:1.1.2" +"iterator.prototype@npm:^1.1.4": + version: 1.1.4 + resolution: "iterator.prototype@npm:1.1.4" dependencies: - define-properties: "npm:^1.2.1" - get-intrinsic: "npm:^1.2.1" - has-symbols: "npm:^1.0.3" - reflect.getprototypeof: "npm:^1.0.4" - set-function-name: "npm:^2.0.1" - checksum: 10/b5013967ad8f28c9ca1be8e159eb10f591b8e46deae87476fe39d668c04374fe9158c815e8b6d2f45885b0a3fd842a8ba13f497ec762b3a0eff49bec278670b1 + define-data-property: "npm:^1.1.4" + es-object-atoms: "npm:^1.0.0" + get-intrinsic: "npm:^1.2.6" + has-symbols: "npm:^1.1.0" + reflect.getprototypeof: "npm:^1.0.8" + set-function-name: "npm:^2.0.2" + checksum: 10/3a7a4568437a67d5b1d863128fabf6cd0875d3a5cb36029036a72fa5ae4c97bad6423529d23083a4f6ae6c72c5d1d70b661124c3d6d964520325fd4ce753ee1a languageName: node linkType: hard @@ -13182,6 +13633,13 @@ __metadata: languageName: node linkType: hard +"json-buffer@npm:3.0.1": + version: 3.0.1 + resolution: "json-buffer@npm:3.0.1" + checksum: 10/82876154521b7b68ba71c4f969b91572d1beabadd87bd3a6b236f85fbc7dc4695089191ed60bb59f9340993c51b33d479f45b6ba9f3548beb519705281c32c3c + languageName: node + linkType: hard + "json-logic-js@npm:^2.0.2": version: 2.0.2 resolution: "json-logic-js@npm:2.0.2" @@ -13414,6 +13872,15 @@ __metadata: languageName: node linkType: hard +"keyv@npm:^4.5.4": + version: 4.5.4 + resolution: "keyv@npm:4.5.4" + dependencies: + json-buffer: "npm:3.0.1" + checksum: 10/167eb6ef64cc84b6fa0780ee50c9de456b422a1e18802209234f7c2cf7eae648c7741f32e50d7e24ccb22b24c13154070b01563d642755b156c357431a191e75 + languageName: node + linkType: hard + "kind-of@npm:^6.0.2, kind-of@npm:^6.0.3": version: 6.0.3 resolution: "kind-of@npm:6.0.3" @@ -14028,6 +14495,13 @@ __metadata: languageName: node linkType: hard +"math-intrinsics@npm:^1.0.0, math-intrinsics@npm:^1.1.0": + version: 1.1.0 + resolution: "math-intrinsics@npm:1.1.0" + checksum: 10/11df2eda46d092a6035479632e1ec865b8134bdfc4bd9e571a656f4191525404f13a283a515938c3a8de934dbfd9c09674d9da9fa831e6eb7e22b50b197d2edd + languageName: node + linkType: hard + "md5@npm:^2.3.0": version: 2.3.0 resolution: "md5@npm:2.3.0" @@ -14319,7 +14793,7 @@ __metadata: languageName: node linkType: hard -"minimatch@npm:^3.0.4, minimatch@npm:^3.0.5, minimatch@npm:^3.1.1, minimatch@npm:^3.1.2": +"minimatch@npm:^3.0.4, minimatch@npm:^3.1.1, minimatch@npm:^3.1.2": version: 3.1.2 resolution: "minimatch@npm:3.1.2" dependencies: @@ -15206,6 +15680,13 @@ __metadata: languageName: node linkType: hard +"object-inspect@npm:^1.13.3": + version: 1.13.3 + resolution: "object-inspect@npm:1.13.3" + checksum: 10/14cb973d8381c69e14d7f1c8c75044eb4caf04c6dabcf40ca5c2ce42dc2073ae0bb2a9939eeca142b0c05215afaa1cd5534adb7c8879c32cba2576e045ed8368 + languageName: node + linkType: hard + "object-is@npm:^1.0.2, object-is@npm:^1.1.5": version: 1.1.5 resolution: "object-is@npm:1.1.5" @@ -15235,6 +15716,20 @@ __metadata: languageName: node linkType: hard +"object.assign@npm:^4.1.7": + version: 4.1.7 + resolution: "object.assign@npm:4.1.7" + dependencies: + call-bind: "npm:^1.0.8" + call-bound: "npm:^1.0.3" + define-properties: "npm:^1.2.1" + es-object-atoms: "npm:^1.0.0" + has-symbols: "npm:^1.1.0" + object-keys: "npm:^1.1.1" + checksum: 10/3fe28cdd779f2a728a9a66bd688679ba231a2b16646cd1e46b528fe7c947494387dda4bc189eff3417f3717ef4f0a8f2439347cf9a9aa3cef722fbfd9f615587 + languageName: node + linkType: hard + "object.entries@npm:^1.1.1, object.entries@npm:^1.1.8": version: 1.1.8 resolution: "object.entries@npm:1.1.8" @@ -17540,17 +18035,19 @@ __metadata: languageName: node linkType: hard -"reflect.getprototypeof@npm:^1.0.4": - version: 1.0.4 - resolution: "reflect.getprototypeof@npm:1.0.4" +"reflect.getprototypeof@npm:^1.0.6, reflect.getprototypeof@npm:^1.0.8, reflect.getprototypeof@npm:^1.0.9": + version: 1.0.9 + resolution: "reflect.getprototypeof@npm:1.0.9" dependencies: - call-bind: "npm:^1.0.2" - define-properties: "npm:^1.2.0" - es-abstract: "npm:^1.22.1" - get-intrinsic: "npm:^1.2.1" - globalthis: "npm:^1.0.3" - which-builtin-type: "npm:^1.1.3" - checksum: 10/52ff881f62a9cb4acdd7f9a8f4ac88234056c4a6b1ed570c249cc085de5c313249b90251d16eb8e58302b82ae697eec19dde16ff62949f6b87f035a3a26dc5df + call-bind: "npm:^1.0.8" + define-properties: "npm:^1.2.1" + dunder-proto: "npm:^1.0.1" + es-abstract: "npm:^1.23.6" + es-errors: "npm:^1.3.0" + get-intrinsic: "npm:^1.2.6" + gopd: "npm:^1.2.0" + which-builtin-type: "npm:^1.2.1" + checksum: 10/652c82cc3b09a2aa489949beae2ee645ba57dba02729ddca3c43299fecb6a16ac5877ea4c9b5397aa2f3d82e653bc4f812a83aada46451ce48f80ca6596d8835 languageName: node linkType: hard @@ -17580,6 +18077,18 @@ __metadata: languageName: node linkType: hard +"regexp.prototype.flags@npm:^1.5.3": + version: 1.5.3 + resolution: "regexp.prototype.flags@npm:1.5.3" + dependencies: + call-bind: "npm:^1.0.7" + define-properties: "npm:^1.2.1" + es-errors: "npm:^1.3.0" + set-function-name: "npm:^2.0.2" + checksum: 10/fe17bc4eebbc72945aaf9dd059eb7784a5ca453a67cc4b5b3e399ab08452c9a05befd92063e2c52e7b24d9238c60031656af32dd57c555d1ba6330dbf8c23b43 + languageName: node + linkType: hard + "rehype-react@npm:^6.0.0": version: 6.2.1 resolution: "rehype-react@npm:6.2.1" @@ -17987,6 +18496,19 @@ __metadata: languageName: node linkType: hard +"safe-array-concat@npm:^1.1.3": + version: 1.1.3 + resolution: "safe-array-concat@npm:1.1.3" + dependencies: + call-bind: "npm:^1.0.8" + call-bound: "npm:^1.0.2" + get-intrinsic: "npm:^1.2.6" + has-symbols: "npm:^1.1.0" + isarray: "npm:^2.0.5" + checksum: 10/fac4f40f20a3f7da024b54792fcc61059e814566dcbb04586bfefef4d3b942b2408933f25b7b3dd024affd3f2a6bbc916bef04807855e4f192413941369db864 + languageName: node + linkType: hard + "safe-buffer@npm:5.1.2, safe-buffer@npm:~5.1.0, safe-buffer@npm:~5.1.1": version: 5.1.2 resolution: "safe-buffer@npm:5.1.2" @@ -18019,6 +18541,17 @@ __metadata: languageName: node linkType: hard +"safe-regex-test@npm:^1.1.0": + version: 1.1.0 + resolution: "safe-regex-test@npm:1.1.0" + dependencies: + call-bound: "npm:^1.0.2" + es-errors: "npm:^1.3.0" + is-regex: "npm:^1.2.1" + checksum: 10/ebdb61f305bf4756a5b023ad86067df5a11b26898573afe9e52a548a63c3bd594825d9b0e2dde2eb3c94e57e0e04ac9929d4107c394f7b8e56a4613bed46c69a + languageName: node + linkType: hard + "safe-stable-stringify@npm:^2.4.1": version: 2.4.1 resolution: "safe-stable-stringify@npm:2.4.1" @@ -18190,7 +18723,7 @@ __metadata: languageName: node linkType: hard -"set-function-length@npm:^1.2.1": +"set-function-length@npm:^1.2.1, set-function-length@npm:^1.2.2": version: 1.2.2 resolution: "set-function-length@npm:1.2.2" dependencies: @@ -18297,6 +18830,41 @@ __metadata: languageName: node linkType: hard +"side-channel-list@npm:^1.0.0": + version: 1.0.0 + resolution: "side-channel-list@npm:1.0.0" + dependencies: + es-errors: "npm:^1.3.0" + object-inspect: "npm:^1.13.3" + checksum: 10/603b928997abd21c5a5f02ae6b9cc36b72e3176ad6827fab0417ead74580cc4fb4d5c7d0a8a2ff4ead34d0f9e35701ed7a41853dac8a6d1a664fcce1a044f86f + languageName: node + linkType: hard + +"side-channel-map@npm:^1.0.1": + version: 1.0.1 + resolution: "side-channel-map@npm:1.0.1" + dependencies: + call-bound: "npm:^1.0.2" + es-errors: "npm:^1.3.0" + get-intrinsic: "npm:^1.2.5" + object-inspect: "npm:^1.13.3" + checksum: 10/5771861f77feefe44f6195ed077a9e4f389acc188f895f570d56445e251b861754b547ea9ef73ecee4e01fdada6568bfe9020d2ec2dfc5571e9fa1bbc4a10615 + languageName: node + linkType: hard + +"side-channel-weakmap@npm:^1.0.2": + version: 1.0.2 + resolution: "side-channel-weakmap@npm:1.0.2" + dependencies: + call-bound: "npm:^1.0.2" + es-errors: "npm:^1.3.0" + get-intrinsic: "npm:^1.2.5" + object-inspect: "npm:^1.13.3" + side-channel-map: "npm:^1.0.1" + checksum: 10/a815c89bc78c5723c714ea1a77c938377ea710af20d4fb886d362b0d1f8ac73a17816a5f6640f354017d7e292a43da9c5e876c22145bac00b76cfb3468001736 + languageName: node + linkType: hard + "side-channel@npm:^1.0.4, side-channel@npm:^1.0.6": version: 1.0.6 resolution: "side-channel@npm:1.0.6" @@ -18309,6 +18877,19 @@ __metadata: languageName: node linkType: hard +"side-channel@npm:^1.1.0": + version: 1.1.0 + resolution: "side-channel@npm:1.1.0" + dependencies: + es-errors: "npm:^1.3.0" + object-inspect: "npm:^1.13.3" + side-channel-list: "npm:^1.0.0" + side-channel-map: "npm:^1.0.1" + side-channel-weakmap: "npm:^1.0.2" + checksum: 10/7d53b9db292c6262f326b6ff3bc1611db84ece36c2c7dc0e937954c13c73185b0406c56589e2bb8d071d6fee468e14c39fb5d203ee39be66b7b8174f179afaba + languageName: node + linkType: hard + "signal-exit@npm:3.0.7, signal-exit@npm:^3.0.0, signal-exit@npm:^3.0.2, signal-exit@npm:^3.0.3, signal-exit@npm:^3.0.7": version: 3.0.7 resolution: "signal-exit@npm:3.0.7" @@ -18648,6 +19229,13 @@ __metadata: languageName: node linkType: hard +"stable-hash@npm:^0.0.4": + version: 0.0.4 + resolution: "stable-hash@npm:0.0.4" + checksum: 10/21c039d21c1cb739cf8342561753a5e007cb95ea682ccd452e76310bbb9c6987a89de8eda023e320b019f3e4691aabda75079cdbb7dadf7ab9013e931f2f23cd + languageName: node + linkType: hard + "stack-generator@npm:^2.0.3": version: 2.0.5 resolution: "stack-generator@npm:2.0.5" @@ -18815,6 +19403,21 @@ __metadata: languageName: node linkType: hard +"string.prototype.trim@npm:^1.2.10": + version: 1.2.10 + resolution: "string.prototype.trim@npm:1.2.10" + dependencies: + call-bind: "npm:^1.0.8" + call-bound: "npm:^1.0.2" + define-data-property: "npm:^1.1.4" + define-properties: "npm:^1.2.1" + es-abstract: "npm:^1.23.5" + es-object-atoms: "npm:^1.0.0" + has-property-descriptors: "npm:^1.0.2" + checksum: 10/47bb63cd2470a64bc5e2da1e570d369c016ccaa85c918c3a8bb4ab5965120f35e66d1f85ea544496fac84b9207a6b722adf007e6c548acd0813e5f8a82f9712a + languageName: node + linkType: hard + "string.prototype.trimend@npm:^1.0.8": version: 1.0.8 resolution: "string.prototype.trimend@npm:1.0.8" @@ -18826,6 +19429,18 @@ __metadata: languageName: node linkType: hard +"string.prototype.trimend@npm:^1.0.9": + version: 1.0.9 + resolution: "string.prototype.trimend@npm:1.0.9" + dependencies: + call-bind: "npm:^1.0.8" + call-bound: "npm:^1.0.2" + define-properties: "npm:^1.2.1" + es-object-atoms: "npm:^1.0.0" + checksum: 10/140c73899b6747de9e499c7c2e7a83d549c47a26fa06045b69492be9cfb9e2a95187499a373983a08a115ecff8bc3bd7b0fb09b8ff72fb2172abe766849272ef + languageName: node + linkType: hard + "string.prototype.trimstart@npm:^1.0.8": version: 1.0.8 resolution: "string.prototype.trimstart@npm:1.0.8" @@ -19167,13 +19782,6 @@ __metadata: languageName: node linkType: hard -"text-table@npm:^0.2.0": - version: 0.2.0 - resolution: "text-table@npm:0.2.0" - checksum: 10/4383b5baaeffa9bb4cda2ac33a4aa2e6d1f8aaf811848bf73513a9b88fd76372dc461f6fd6d2e9cb5100f48b473be32c6f95bd983509b7d92bb4d92c10747452 - languageName: node - linkType: hard - "thenify-all@npm:^1.0.0": version: 1.6.0 resolution: "thenify-all@npm:1.6.0" @@ -19603,13 +20211,6 @@ __metadata: languageName: node linkType: hard -"type-fest@npm:^0.20.2": - version: 0.20.2 - resolution: "type-fest@npm:0.20.2" - checksum: 10/8907e16284b2d6cfa4f4817e93520121941baba36b39219ea36acfe64c86b9dbc10c9941af450bd60832c8f43464974d51c0957f9858bc66b952b66b6914cbb9 - languageName: node - linkType: hard - "type-fest@npm:^0.21.3": version: 0.21.3 resolution: "type-fest@npm:0.21.3" @@ -19659,6 +20260,17 @@ __metadata: languageName: node linkType: hard +"typed-array-buffer@npm:^1.0.3": + version: 1.0.3 + resolution: "typed-array-buffer@npm:1.0.3" + dependencies: + call-bound: "npm:^1.0.3" + es-errors: "npm:^1.3.0" + is-typed-array: "npm:^1.1.14" + checksum: 10/3fb91f0735fb413b2bbaaca9fabe7b8fc14a3fa5a5a7546bab8a57e755be0e3788d893195ad9c2b842620592de0e68d4c077d4c2c41f04ec25b8b5bb82fa9a80 + languageName: node + linkType: hard + "typed-array-byte-length@npm:^1.0.1": version: 1.0.1 resolution: "typed-array-byte-length@npm:1.0.1" @@ -19672,6 +20284,19 @@ __metadata: languageName: node linkType: hard +"typed-array-byte-length@npm:^1.0.3": + version: 1.0.3 + resolution: "typed-array-byte-length@npm:1.0.3" + dependencies: + call-bind: "npm:^1.0.8" + for-each: "npm:^0.3.3" + gopd: "npm:^1.2.0" + has-proto: "npm:^1.2.0" + is-typed-array: "npm:^1.1.14" + checksum: 10/269dad101dda73e3110117a9b84db86f0b5c07dad3a9418116fd38d580cab7fc628a4fc167e29b6d7c39da2f53374b78e7cb578b3c5ec7a556689d985d193519 + languageName: node + linkType: hard + "typed-array-byte-offset@npm:^1.0.2": version: 1.0.2 resolution: "typed-array-byte-offset@npm:1.0.2" @@ -19686,6 +20311,21 @@ __metadata: languageName: node linkType: hard +"typed-array-byte-offset@npm:^1.0.4": + version: 1.0.4 + resolution: "typed-array-byte-offset@npm:1.0.4" + dependencies: + available-typed-arrays: "npm:^1.0.7" + call-bind: "npm:^1.0.8" + for-each: "npm:^0.3.3" + gopd: "npm:^1.2.0" + has-proto: "npm:^1.2.0" + is-typed-array: "npm:^1.1.15" + reflect.getprototypeof: "npm:^1.0.9" + checksum: 10/c2869aa584cdae24ecfd282f20a0f556b13a49a9d5bca1713370bb3c89dff0ccbc5ceb45cb5b784c98f4579e5e3e2a07e438c3a5b8294583e2bd4abbd5104fb5 + languageName: node + linkType: hard + "typed-array-length@npm:^1.0.6": version: 1.0.6 resolution: "typed-array-length@npm:1.0.6" @@ -19700,6 +20340,20 @@ __metadata: languageName: node linkType: hard +"typed-array-length@npm:^1.0.7": + version: 1.0.7 + resolution: "typed-array-length@npm:1.0.7" + dependencies: + call-bind: "npm:^1.0.7" + for-each: "npm:^0.3.3" + gopd: "npm:^1.0.1" + is-typed-array: "npm:^1.1.13" + possible-typed-array-names: "npm:^1.0.0" + reflect.getprototypeof: "npm:^1.0.6" + checksum: 10/d6b2f0e81161682d2726eb92b1dc2b0890890f9930f33f9bcf6fc7272895ce66bc368066d273e6677776de167608adc53fcf81f1be39a146d64b630edbf2081c + languageName: node + linkType: hard + "typedarray@npm:^0.0.6": version: 0.0.6 resolution: "typedarray@npm:0.0.6" @@ -19787,6 +20441,20 @@ __metadata: languageName: node linkType: hard +"typescript-eslint@npm:^8.18.1": + version: 8.18.1 + resolution: "typescript-eslint@npm:8.18.1" + dependencies: + "@typescript-eslint/eslint-plugin": "npm:8.18.1" + "@typescript-eslint/parser": "npm:8.18.1" + "@typescript-eslint/utils": "npm:8.18.1" + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: ">=4.8.4 <5.8.0" + checksum: 10/2be2a14c10fc0988f50e63899e21980c53f6686b60bdda61750577e1481f3e857cf1d5de360849288a220cc053da84e678ca304935d885fe6365afc27e0b9fd2 + languageName: node + linkType: hard + "typescript@npm:>=3 < 6, typescript@npm:~5.7.2": version: 5.7.2 resolution: "typescript@npm:5.7.2" @@ -19835,6 +20503,18 @@ __metadata: languageName: node linkType: hard +"unbox-primitive@npm:^1.1.0": + version: 1.1.0 + resolution: "unbox-primitive@npm:1.1.0" + dependencies: + call-bound: "npm:^1.0.3" + has-bigints: "npm:^1.0.2" + has-symbols: "npm:^1.1.0" + which-boxed-primitive: "npm:^1.1.1" + checksum: 10/fadb347020f66b2c8aeacf8b9a79826fa34cc5e5457af4eb0bbc4e79bd87fed0fa795949825df534320f7c13f199259516ad30abc55a6e7b91d8d996ca069e50 + languageName: node + linkType: hard + "undici@npm:^5.28.4": version: 5.28.4 resolution: "undici@npm:5.28.4" @@ -20550,39 +21230,53 @@ __metadata: languageName: node linkType: hard -"which-builtin-type@npm:^1.1.3": - version: 1.1.3 - resolution: "which-builtin-type@npm:1.1.3" +"which-boxed-primitive@npm:^1.1.0, which-boxed-primitive@npm:^1.1.1": + version: 1.1.1 + resolution: "which-boxed-primitive@npm:1.1.1" dependencies: - function.prototype.name: "npm:^1.1.5" - has-tostringtag: "npm:^1.0.0" + is-bigint: "npm:^1.1.0" + is-boolean-object: "npm:^1.2.1" + is-number-object: "npm:^1.1.1" + is-string: "npm:^1.1.1" + is-symbol: "npm:^1.1.1" + checksum: 10/a877c0667bc089518c83ad4d845cf8296b03efe3565c1de1940c646e00a2a1ae9ed8a185bcfa27cbf352de7906f0616d83b9d2f19ca500ee02a551fb5cf40740 + languageName: node + linkType: hard + +"which-builtin-type@npm:^1.2.1": + version: 1.2.1 + resolution: "which-builtin-type@npm:1.2.1" + dependencies: + call-bound: "npm:^1.0.2" + function.prototype.name: "npm:^1.1.6" + has-tostringtag: "npm:^1.0.2" is-async-function: "npm:^2.0.0" - is-date-object: "npm:^1.0.5" - is-finalizationregistry: "npm:^1.0.2" + is-date-object: "npm:^1.1.0" + is-finalizationregistry: "npm:^1.1.0" is-generator-function: "npm:^1.0.10" - is-regex: "npm:^1.1.4" + is-regex: "npm:^1.2.1" is-weakref: "npm:^1.0.2" isarray: "npm:^2.0.5" - which-boxed-primitive: "npm:^1.0.2" - which-collection: "npm:^1.0.1" - which-typed-array: "npm:^1.1.9" - checksum: 10/d7823c4a6aa4fc8183eb572edd9f9ee2751e5f3ba2ccd5b298cc163f720df0f02ee1a5291d18ca8a41d48144ef40007ff6a64e6f5e7c506527086c7513a5f673 + which-boxed-primitive: "npm:^1.1.0" + which-collection: "npm:^1.0.2" + which-typed-array: "npm:^1.1.16" + checksum: 10/22c81c5cb7a896c5171742cd30c90d992ff13fb1ea7693e6cf80af077791613fb3f89aa9b4b7f890bd47b6ce09c6322c409932359580a2a2a54057f7b52d1cbe languageName: node linkType: hard -"which-collection@npm:^1.0.1": - version: 1.0.1 - resolution: "which-collection@npm:1.0.1" +"which-collection@npm:^1.0.2": + version: 1.0.2 + resolution: "which-collection@npm:1.0.2" dependencies: - is-map: "npm:^2.0.1" - is-set: "npm:^2.0.1" - is-weakmap: "npm:^2.0.1" - is-weakset: "npm:^2.0.1" - checksum: 10/85c95fcf92df7972ce66bed879e53d9dc752a30ef08e1ca4696df56bcf1c302e3b9965a39b04a20fa280a997fad6c170eb0b4d62435569b7f6c0bc7be910572b + is-map: "npm:^2.0.3" + is-set: "npm:^2.0.3" + is-weakmap: "npm:^2.0.2" + is-weakset: "npm:^2.0.3" + checksum: 10/674bf659b9bcfe4055f08634b48a8588e879161b9fefed57e9ec4ff5601e4d50a05ccd76cf10f698ef5873784e5df3223336d56c7ce88e13bcf52ebe582fc8d7 languageName: node linkType: hard -"which-typed-array@npm:^1.1.14, which-typed-array@npm:^1.1.15, which-typed-array@npm:^1.1.9": +"which-typed-array@npm:^1.1.14, which-typed-array@npm:^1.1.15": version: 1.1.15 resolution: "which-typed-array@npm:1.1.15" dependencies: @@ -20595,6 +21289,20 @@ __metadata: languageName: node linkType: hard +"which-typed-array@npm:^1.1.16, which-typed-array@npm:^1.1.18": + version: 1.1.18 + resolution: "which-typed-array@npm:1.1.18" + dependencies: + available-typed-arrays: "npm:^1.0.7" + call-bind: "npm:^1.0.8" + call-bound: "npm:^1.0.3" + for-each: "npm:^0.3.3" + gopd: "npm:^1.2.0" + has-tostringtag: "npm:^1.0.2" + checksum: 10/11eed801b2bd08cdbaecb17aff381e0fb03526532f61acc06e6c7b9370e08062c33763a51f27825f13fdf34aabd0df6104007f4e8f96e6eaef7db0ce17a26d6e + languageName: node + linkType: hard + "which@npm:^2.0.1": version: 2.0.2 resolution: "which@npm:2.0.2"