diff --git a/.eslintrc.js b/.eslintrc.js index c6bbbf0d2..1d0683a3c 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -1,73 +1,67 @@ module.exports = { - "env": { - "browser": true, - "es2021": true, - "node": true + env: { + browser: true, + es2021: true, + node: true, }, - "extends": [ + extends: [ "eslint:recommended", - "plugin:react/recommended", "plugin:@typescript-eslint/recommended", + "plugin:react/recommended", "prettier", - "next/core-web-vitals" ], - "ignorePatterns": [ + ignorePatterns: [ "**/vendor/*.js", "vendor/**/*.js", "**/jest.config.ts", "**/test.only/**", "**/utilities/**", - //"**/next.config.js", + "**/.eslintrc.js", "**/postcss.config.js", + //"**/next.config.js", //"**/tailwind.config.js", - "**/.env" + //"**/.env", ], - "parser": "@typescript-eslint/parser", - "parserOptions": { - "ecmaFeatures": { - "jsx": true + parser: "@typescript-eslint/parser", + parserOptions: { + ecmaFeatures: { + jsx: true, }, - "ecmaVersion": "latest", - "sourceType": "module", - "project": "tsconfig.json", - "tsconfigRootDir": __dirname, + ecmaVersion: "latest", + sourceType: "module", + tsconfigRootDir: __dirname, + project: "./tsconfig.json", }, - "plugins": [ - "react", - "@typescript-eslint" - ], - "rules": { - "react-hooks/exhaustive-deps": "off", + plugins: ["@typescript-eslint", "react"], + settings: { + react: { + version: "detect", + }, + }, + rules: { "@typescript-eslint/no-misused-promises": "error", "@typescript-eslint/no-floating-promises": "error", "@typescript-eslint/no-explicit-any": "off", "@typescript-eslint/no-unused-vars": [ "warn", { - "argsIgnorePattern": "^_" - } + argsIgnorePattern: "^_", + }, ], "no-restricted-properties": [ "error", { - "object": "console", - "property": "error", - "message": "Please use the logger instead." - } + object: "console", + property: "error", + message: "Please use the logger instead.", + }, ], "no-restricted-globals": [ "error", { - "name": "prompt", - "message": "Please use a React modal instead." - } + name: "prompt", + message: "Please use a React modal instead.", + }, ], - "no-restricted-syntax": [ - "error", - { - "selector": "Property[key.name='preview'][value.value=true]", - "message": "Make sure to turn 'preview' off before committing." - } - ] - } -} \ No newline at end of file + }, +}; diff --git a/cloudquery/github-resolve-repos/src/tables.ts b/cloudquery/github-resolve-repos/src/tables.ts index ed9307309..eabd21775 100644 --- a/cloudquery/github-resolve-repos/src/tables.ts +++ b/cloudquery/github-resolve-repos/src/tables.ts @@ -20,7 +20,6 @@ import readline from "readline"; import { getReposFromUrls } from "./github/repositories.js"; import { Octokit } from "octokit"; -/* eslint-disable import/no-named-as-default-member */ dayjs.extend(utc); dayjs.extend(timezone); dayjs.extend(customParseFormat); diff --git a/cloudquery/oss-directory/src/tables.ts b/cloudquery/oss-directory/src/tables.ts index 58dbc90e2..a47042670 100644 --- a/cloudquery/oss-directory/src/tables.ts +++ b/cloudquery/oss-directory/src/tables.ts @@ -22,7 +22,6 @@ import timezone from "dayjs/plugin/timezone.js"; import utc from "dayjs/plugin/utc.js"; import { fetchData } from "oss-directory"; -/* eslint-disable import/no-named-as-default-member */ dayjs.extend(utc); dayjs.extend(timezone); dayjs.extend(customParseFormat); diff --git a/docs/.eslintrc.json b/docs/.eslintrc.json index 5f58b7a20..e8f64ca5f 100644 --- a/docs/.eslintrc.json +++ b/docs/.eslintrc.json @@ -1,12 +1,7 @@ { - "extends": ["../.eslintrc.js"], "root": false, + "extends": ["../.eslintrc.js"], "parserOptions": { - "ecmaFeatures": { - "jsx": true - }, - "ecmaVersion": "latest", - "sourceType": "module", "project": ["./docs/tsconfig.json"] } } diff --git a/docs/1 b/docs/1 deleted file mode 100644 index 44b1d5a91..000000000 --- a/docs/1 +++ /dev/null @@ -1,4 +0,0 @@ - -> @opensource-observer/docs@0.0.0 build /home/ryscheng/git/github/opensource-observer/oso/docs -> docusaurus build "2" - diff --git a/docs/package.json b/docs/package.json index 50cf3f775..aff2ffbf0 100644 --- a/docs/package.json +++ b/docs/package.json @@ -12,7 +12,10 @@ "clear": "docusaurus clear", "serve": "docusaurus serve", "write-translations": "docusaurus write-translations", - "write-heading-ids": "docusaurus write-heading-ids" + "write-heading-ids": "docusaurus write-heading-ids", + "lint": "pnpm lint:eslint && pnpm lint:prettier", + "lint:eslint": "eslint --ignore-path ../.gitignore --ignore-path .gitignore --max-warnings 0 .", + "lint:prettier": "prettier --ignore-path ../.gitignore --ignore-path .gitignore --log-level warn --check **/*.{js,jsx,ts,tsx,sol,md,json}" }, "dependencies": { "@docusaurus/core": "3.1.0", diff --git a/docs/src/components/HomepageFeatures/index.tsx b/docs/src/components/HomepageFeatures/index.tsx index f63a67676..3b068c111 100644 --- a/docs/src/components/HomepageFeatures/index.tsx +++ b/docs/src/components/HomepageFeatures/index.tsx @@ -1,3 +1,4 @@ +import React from "react"; import clsx from "clsx"; import Heading from "@theme/Heading"; import styles from "./styles.module.css"; diff --git a/docs/src/pages/index-old.tsx b/docs/src/pages/index-old.tsx index 68522999a..edfd3c759 100644 --- a/docs/src/pages/index-old.tsx +++ b/docs/src/pages/index-old.tsx @@ -1,3 +1,4 @@ +import React from "react"; import clsx from "clsx"; import Link from "@docusaurus/Link"; import useDocusaurusContext from "@docusaurus/useDocusaurusContext"; diff --git a/docs/tsconfig.json b/docs/tsconfig.json index 314eab8a4..ea5b979b1 100644 --- a/docs/tsconfig.json +++ b/docs/tsconfig.json @@ -2,6 +2,6 @@ // This file is not used in compilation. It is here just for a nice editor experience. "extends": "@docusaurus/tsconfig", "compilerOptions": { - "baseUrl": "." - } + "baseUrl": ".", + }, } diff --git a/frontend/.eslintrc.json b/frontend/.eslintrc.json index fb31392ee..e53874297 100644 --- a/frontend/.eslintrc.json +++ b/frontend/.eslintrc.json @@ -1,12 +1,18 @@ { - "extends": ["../.eslintrc.js"], "root": false, + "extends": ["../.eslintrc.js", "next/core-web-vitals"], + "parser": "@typescript-eslint/parser", "parserOptions": { - "ecmaFeatures": { - "jsx": true - }, - "ecmaVersion": "latest", - "sourceType": "module", "project": ["./frontend/tsconfig.json"] + }, + "rules": { + "react-hooks/exhaustive-deps": "off", + "no-restricted-syntax": [ + "error", + { + "selector": "Property[key.name='preview'][value.value=true]", + "message": "Make sure to turn 'preview' off before committing." + } + ] } } diff --git a/hasura/.eslintrc.json b/hasura/.eslintrc.json new file mode 100644 index 000000000..cb33b1256 --- /dev/null +++ b/hasura/.eslintrc.json @@ -0,0 +1,7 @@ +{ + "extends": ["../.eslintrc.js"], + "root": false, + "parserOptions": { + "project": ["./hasura/tsconfig.json"] + } +} diff --git a/hasura/README.md b/hasura/README.md new file mode 100644 index 000000000..6acf29090 --- /dev/null +++ b/hasura/README.md @@ -0,0 +1,37 @@ +# Hasura configuration + +This directory stores all configurations for the Hasura deployment. + +## Setup + +Copy `.env.example` to `.env` and set the environment variables as needed. + +## Configure + +You can modify any files in `./metadata` to update the Hasura configuration. +See the +[Hasura metadata reference](https://hasura.io/docs/latest/migrations-metadata-seeds/metadata-format/) on the schema. + +Note that anything in `./metadata/databases/cloudsql/tables/` +will be overwritten by the build step. + +## Build + +This will generate table configurations for all tables found in `../dbt/`. +This needs to be run every time the schema changes. +For more information, see `./src/genTables.ts`. + +```bash +pnpm build +``` + +## Deploy + +To reload the database schemas and apply the metadata configurations, run: + +```bash +pnpm run deploy +``` + +For more information on how to manage metadata, see the +[Hasura guide](https://hasura.io/docs/latest/migrations-metadata-seeds/manage-metadata/#reload-metadata). diff --git a/hasura/package.json b/hasura/package.json index 2792d5b72..db6742494 100644 --- a/hasura/package.json +++ b/hasura/package.json @@ -5,6 +5,10 @@ "author": "Kariba Labs", "license": "Apache-2.0", "private": true, + "bin": "./dist/src/genTables.js", + "main": "./dist/src/index.js", + "types": "./dist/src/index.d.ts", + "type": "module", "repository": { "type": "git", "url": "git+https://github.com/opensource-observer/oso.git" @@ -13,6 +17,11 @@ "node": ">=20" }, "scripts": { + "build": "tsc && pnpm metadata:genTables", + "lint": "tsc --noEmit && pnpm lint:eslint && pnpm lint:prettier", + "lint:eslint": "eslint --ignore-path ../.gitignore --max-warnings 0 .", + "lint:prettier": "prettier --ignore-path ../.gitignore --log-level warn --check **/*.{js,jsx,ts,tsx,sol,md,json}", + "metadata:genTables": "node --loader ts-node/esm src/genTables.ts", "metadata:pull": "hasura metadata export", "metadata:reload": "hasura metadata reload", "metadata:apply": "hasura metadata apply", @@ -20,7 +29,13 @@ }, "keywords": [], "devDependencies": { + "@types/node": "^20.11.17", "dotenv-cli": "^7.3.0", - "hasura-cli": "^2.36.1" + "hasura-cli": "^2.36.1", + "ts-node": "^10.9.1", + "typescript": "^5.3.3" + }, + "dependencies": { + "yaml": "^2.3.1" } } diff --git a/hasura/src/genTables.ts b/hasura/src/genTables.ts new file mode 100644 index 000000000..7233bc056 --- /dev/null +++ b/hasura/src/genTables.ts @@ -0,0 +1,97 @@ +import path from "node:path"; +import fs from "node:fs/promises"; +import { fileURLToPath } from "node:url"; +import * as yaml from "yaml"; + +const __filename = fileURLToPath(import.meta.url); +const __dirname = path.dirname(__filename); +// YAML file extension +const EXTENSION = ".yaml"; +// Recursively scan this directory for database tables +const modelDir = path.resolve(__dirname, "../../dbt/models/marts/"); +// Where to store all table configs +const tablesDir = path.resolve( + __dirname, + "../metadata/databases/cloudsql/tables/", +); +// Should map to the tables field in ./metadata/databases/databases.yaml +const tablesListAbsPath = path.format({ + dir: tablesDir, + name: "tables", + ext: EXTENSION, +}); + +// Schema for Hasura table configuration +type TableConfig = { + table: { + name: string; + schema: string; + }; + select_permissions: { + role: string; + permission: { + columns: string; + filter: Record; + allow_aggregations: boolean; + }; + comment: string; + }[]; +}; + +// Create a table configuration object +const createConfig = (name: string): TableConfig => ({ + table: { + name: name, + schema: "public", + }, + select_permissions: [ + { + role: "anonymous", + permission: { + columns: "*", + filter: {}, + allow_aggregations: false, + }, + comment: "", + }, + ], +}); + +async function main(): Promise { + console.log(`Generating tables from ${modelDir}`); + // Recursively scan all files in the model directory + const allFiles = await fs.readdir(modelDir, { recursive: true }); + // Get the basename as the table name + const tableNames = allFiles + .filter((f) => f.endsWith(".sql")) + .map((f) => path.basename(f, ".sql")); + console.log("Tables:"); + console.log(tableNames); + // Write the list of tables + await fs.writeFile( + tablesListAbsPath, + yaml.stringify( + tableNames.map( + (n) => `!include ${path.format({ name: n, ext: EXTENSION })}`, + ), + ), + ); + // Write a table config for each table + await Promise.all( + tableNames.map(async (n) => { + const config = createConfig(n); + const absPath = path.format({ + dir: tablesDir, + name: n, + ext: EXTENSION, + }); + await fs.writeFile(absPath, yaml.stringify(config)); + }), + ); +} + +main() + .then(() => console.log("Done")) + .catch((e) => { + console.warn(e); + }); diff --git a/hasura/tsconfig.json b/hasura/tsconfig.json new file mode 100644 index 000000000..19f9cd4ea --- /dev/null +++ b/hasura/tsconfig.json @@ -0,0 +1,21 @@ +{ + "compilerOptions": { + "outDir": "dist", + "target": "ES6", + "module": "NodeNext", + "moduleResolution": "NodeNext", + "declaration": true, + "declarationMap": true, + "esModuleInterop": true, + "emitDecoratorMetadata": true, + "experimentalDecorators": true, + "noImplicitAny": true, + "resolveJsonModule": true, + "skipLibCheck": true, + "strict": true, + "strictNullChecks": true, + "strictPropertyInitialization": false, + }, + "exclude": ["node_modules"], + "include": ["./src/*.ts", "./src/**/*.ts", "./test"], +} diff --git a/indexer/.eslintrc.json b/indexer/.eslintrc.json index 9c40e2c7e..c055e5efa 100644 --- a/indexer/.eslintrc.json +++ b/indexer/.eslintrc.json @@ -2,11 +2,6 @@ "extends": ["../.eslintrc.js"], "root": false, "parserOptions": { - "ecmaFeatures": { - "jsx": true - }, - "ecmaVersion": "latest", - "sourceType": "module", "project": ["./indexer/tsconfig.json"] } } diff --git a/indexer/package.json b/indexer/package.json index ed7848fb9..485d18f38 100644 --- a/indexer/package.json +++ b/indexer/package.json @@ -45,7 +45,6 @@ "@types/npm-registry-fetch": "^8.0.4", "@types/yargs": "^17.0.24", "jest": "^29.6.2", - "prettier": "^3.0.1", "ts-jest": "^29.1.1", "ts-jest-resolver": "^2.0.1", "ts-node": "^10.9.1", diff --git a/indexer/src/collectors/dune-daily-contract-usage.ts b/indexer/src/collectors/dune-daily-contract-usage.ts index 99276d24d..87ab5ff1e 100644 --- a/indexer/src/collectors/dune-daily-contract-usage.ts +++ b/indexer/src/collectors/dune-daily-contract-usage.ts @@ -408,8 +408,9 @@ export class DailyContractUsageCollector extends BaseEventCollector { logger.debug( `duplicates for sourceId=${countEvent.sourceId} found for contract[${ countEvent.to.name - }] from address[${countEvent.from - ?.name}] on ${countEvent.time.toISODate()}`, + }] from address[${ + countEvent.from?.name + }] on ${countEvent.time.toISODate()}`, ); } await groupRecorder.record(countEvent); diff --git a/indexer/src/recorder/recorder.ts b/indexer/src/recorder/recorder.ts index 4310f7c3a..0d77f2eb0 100644 --- a/indexer/src/recorder/recorder.ts +++ b/indexer/src/recorder/recorder.ts @@ -1541,9 +1541,8 @@ export class BatchEventRecorder implements IEventRecorder { } // Get all of the unique artifacts - const [allArtifacts, newArtifacts] = await this.uniqArtifactsFromEvents( - newEvents, - ); + const [allArtifacts, newArtifacts] = + await this.uniqArtifactsFromEvents(newEvents); const writeArtifacts = async () => { const tmWriteArtifacts = timer("writing new artifacts"); @@ -1747,9 +1746,8 @@ export class BatchEventRecorder implements IEventRecorder { inputs.toIds = (await this.artifactResolver.map.resolveToIds( toArtifacts, )) as number[]; - inputs.fromIds = await this.artifactResolver.map.resolveToIds( - fromArtifacts, - ); + inputs.fromIds = + await this.artifactResolver.map.resolveToIds(fromArtifacts); inputs.toIds.forEach((toId, i) => { inputs.uniqueIds.push( diff --git a/indexer/src/scripts/artifact-management.ts b/indexer/src/scripts/artifact-management.ts index aa857c759..b42529ed7 100644 --- a/indexer/src/scripts/artifact-management.ts +++ b/indexer/src/scripts/artifact-management.ts @@ -50,12 +50,10 @@ export async function fixArtifactCasing( ArtifactType.GIT_EMAIL, ArtifactType.GIT_REPOSITORY, ]; - const artifactDupes = await ArtifactRepository.duplicates( - caseInsensitiveTypes, - ); - let artifactsNonCanonical = await ArtifactRepository.nonCanonical( - caseInsensitiveTypes, - ); + const artifactDupes = + await ArtifactRepository.duplicates(caseInsensitiveTypes); + let artifactsNonCanonical = + await ArtifactRepository.nonCanonical(caseInsensitiveTypes); const projectsDupes = await ProjectRepository.duplicates(); const projectsNonCanonical = await ProjectRepository.nonCanonical(); const collectionsDupes = await CollectionRepository.duplicates(); @@ -112,9 +110,8 @@ export async function fixArtifactCasing( // Fix dupes first if (artifactDupes.length > 0) { await fixArtifactDuplicates(caseInsensitiveTypes); - artifactsNonCanonical = await ArtifactRepository.nonCanonical( - caseInsensitiveTypes, - ); + artifactsNonCanonical = + await ArtifactRepository.nonCanonical(caseInsensitiveTypes); } if (artifactsNonCanonical.length > 0) { diff --git a/indexer/src/utils/getPath.ts b/indexer/src/utils/getPath.ts index 17e5fab59..e8fedf9f8 100644 --- a/indexer/src/utils/getPath.ts +++ b/indexer/src/utils/getPath.ts @@ -10,9 +10,8 @@ export function getPath< // Here there be dragons // https://www.calebpitan.com/blog/dot-notation-type-accessor-in-typescript -type ExcludeArrayKeys = T extends ArrayLike - ? Exclude - : keyof T; +type ExcludeArrayKeys = + T extends ArrayLike ? Exclude : keyof T; export type IsAny = unknown extends T ? [keyof T] extends [never] ? false @@ -25,10 +24,10 @@ type PathImpl = Key extends string ? IsAny extends true ? never : T[Key] extends Record - ? - | `${Key}.${PathImpl> & string}` - | `${Key}.${ExcludeArrayKeys & string}` - : never + ? + | `${Key}.${PathImpl> & string}` + | `${Key}.${ExcludeArrayKeys & string}` + : never : never; export type Path = keyof T extends string diff --git a/indexer/tsconfig.json b/indexer/tsconfig.json index d2365a111..19f9cd4ea 100644 --- a/indexer/tsconfig.json +++ b/indexer/tsconfig.json @@ -14,8 +14,8 @@ "skipLibCheck": true, "strict": true, "strictNullChecks": true, - "strictPropertyInitialization": false + "strictPropertyInitialization": false, }, "exclude": ["node_modules"], - "include": ["./src/*.ts", "./src/**/*.ts", "./test"] + "include": ["./src/*.ts", "./src/**/*.ts", "./test"], } diff --git a/package.json b/package.json index a70f48346..0e5004309 100644 --- a/package.json +++ b/package.json @@ -11,14 +11,16 @@ }, "scripts": { "build": "turbo run build --concurrency=100%", + "build:cloudquery": "turbo run build --filter=@opensource-observer/cloudquery/*", "build:docs": "turbo run build --filter=@opensource-observer/docs", "build:frontend": "turbo run build --filter=@opensource-observer/frontend", + "build:hasura": "turbo run build --filter=@opensource-observer/hasura", "build:indexer": "turbo run build --filter=@opensource-observer/indexer", - "build:cloudquery": "turbo run build --filter=@opensource-observer/cloudquery/*", "copy": "yarn copy:frontend && yarn copy:docs && yarn copy:html", "copy:docs": "mkdir -p ./build/docs/ && cp -r ./docs/build/* ./build/docs/", "copy:frontend": "mkdir -p ./build/ && cp -r ./frontend/out/* ./build/ && cp ./frontend/_redirects ./build/", "copy:html": "find build/ -name '*.html' -type f | grep -v index.html | sed s/\\.html$// | xargs -I _ bash -c 'mkdir -p _ && cp -v _.html _/index.html'", + "deploy:hasura": "turbo run deploy --filter=@opensource-observer/hasura --parallel", "deploy:indexer": "turbo run deploy --filter=@opensource-observer/indexer --parallel", "deploy:site": "turbo run build --filter=@opensource-observer/docs --filter=@opensource-observer/frontend && turbo run deploy --filter=@opensource-observer/frontend && yarn copy", "dev:docs": "turbo run dev --filter=@opensource-observer/docs --parallel", @@ -32,6 +34,7 @@ "prepare": "husky install" }, "devDependencies": { + "eslint": "^8", "husky": "^8.0.3", "lint-staged": "^15.2.0", "prettier": "^3.2.4", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 7374bc065..50d6d0ec3 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -8,6 +8,9 @@ importers: .: devDependencies: + eslint: + specifier: ^8 + version: 8.56.0 husky: specifier: ^8.0.3 version: 8.0.3 @@ -74,7 +77,7 @@ importers: version: 13.1.1 ts-node: specifier: ^10.9.1 - version: 10.9.1(@types/node@20.11.6)(typescript@5.2.2) + version: 10.9.1(@types/node@20.11.17)(typescript@5.2.2) cloudquery/oss-directory: dependencies: @@ -108,16 +111,16 @@ importers: version: 13.1.1 ts-node: specifier: ^10.9.1 - version: 10.9.1(@types/node@20.11.6)(typescript@5.2.2) + version: 10.9.1(@types/node@20.11.17)(typescript@5.2.2) docs: dependencies: '@docusaurus/core': specifier: 3.1.0 - version: 3.1.0(@docusaurus/types@3.1.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) + version: 3.1.0(@docusaurus/types@3.1.0)(eslint@8.56.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) '@docusaurus/preset-classic': specifier: 3.1.0 - version: 3.1.0(@algolia/client-search@4.22.1)(@types/react@18.2.48)(react-dom@18.2.0)(react@18.2.0)(search-insights@2.13.0)(typescript@5.3.3) + version: 3.1.0(@algolia/client-search@4.22.1)(@types/react@18.2.48)(eslint@8.56.0)(react-dom@18.2.0)(react@18.2.0)(search-insights@2.13.0)(typescript@5.3.3) '@mdx-js/react': specifier: ^3.0.0 version: 3.0.0(@types/react@18.2.48)(react@18.2.0) @@ -359,13 +362,26 @@ importers: version: 5.3.3 hasura: + dependencies: + yaml: + specifier: ^2.3.1 + version: 2.3.4 devDependencies: + '@types/node': + specifier: ^20.11.17 + version: 20.11.17 dotenv-cli: specifier: ^7.3.0 version: 7.3.0 hasura-cli: specifier: ^2.36.1 version: 2.36.1 + ts-node: + specifier: ^10.9.1 + version: 10.9.1(@types/node@20.11.17)(typescript@5.3.3) + typescript: + specifier: ^5.3.3 + version: 5.3.3 indexer: dependencies: @@ -511,9 +527,6 @@ importers: jest: specifier: ^29.6.2 version: 29.6.2(@types/node@20.6.3)(ts-node@10.9.1) - prettier: - specifier: ^3.0.1 - version: 3.0.1 ts-jest: specifier: ^29.1.1 version: 29.1.1(@babel/core@7.23.7)(jest@29.6.2)(typescript@5.2.2) @@ -535,7 +548,6 @@ packages: /@aashutoshrathi/word-wrap@1.2.6: resolution: {integrity: sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==} engines: {node: '>=0.10.0'} - dev: true /@adobe/css-tools@4.3.2: resolution: {integrity: sha512-DA5a1C0gD/pLOvhv33YMrbf2FK3oUzwNl9oOJqE4XVjuEtt6XIakRcsd7eLiOSPkp1kTRQGICTA8cKra/vFbjw==} @@ -2893,7 +2905,7 @@ packages: - '@algolia/client-search' dev: false - /@docusaurus/core@3.1.0(@docusaurus/types@3.1.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3): + /@docusaurus/core@3.1.0(@docusaurus/types@3.1.0)(eslint@8.56.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3): resolution: {integrity: sha512-GWudMGYA9v26ssbAWJNfgeDZk+lrudUTclLPRsmxiknEBk7UMp7Rglonhqbsf3IKHOyHkMU4Fr5jFyg5SBx9jQ==} engines: {node: '>=18.0'} hasBin: true @@ -2951,7 +2963,7 @@ packages: postcss-loader: 7.3.3(postcss@8.4.33)(typescript@5.3.3)(webpack@5.89.0) prompts: 2.4.2 react: 18.2.0 - react-dev-utils: 12.0.1(typescript@5.3.3)(webpack@5.89.0) + react-dev-utils: 12.0.1(eslint@8.56.0)(typescript@5.3.3)(webpack@5.89.0) react-dom: 18.2.0(react@18.2.0) react-helmet-async: 1.3.0(react-dom@18.2.0)(react@18.2.0) react-loadable: /@docusaurus/react-loadable@5.5.2(react@18.2.0) @@ -3076,14 +3088,14 @@ packages: - uglify-js - webpack-cli - /@docusaurus/plugin-content-blog@3.1.0(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3): + /@docusaurus/plugin-content-blog@3.1.0(eslint@8.56.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3): resolution: {integrity: sha512-iMa6WBaaEdYuxckvJtLcq/HQdlA4oEbCXf/OFfsYJCCULcDX7GDZpKxLF3X1fLsax3sSm5bmsU+CA0WD+R1g3A==} engines: {node: '>=18.0'} peerDependencies: react: ^18.0.0 react-dom: ^18.0.0 dependencies: - '@docusaurus/core': 3.1.0(@docusaurus/types@3.1.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) + '@docusaurus/core': 3.1.0(@docusaurus/types@3.1.0)(eslint@8.56.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) '@docusaurus/logger': 3.1.0 '@docusaurus/mdx-loader': 3.1.0(@docusaurus/types@3.1.0)(react-dom@18.2.0)(react@18.2.0) '@docusaurus/types': 3.1.0(react-dom@18.2.0)(react@18.2.0) @@ -3120,14 +3132,14 @@ packages: - webpack-cli dev: false - /@docusaurus/plugin-content-docs@3.1.0(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3): + /@docusaurus/plugin-content-docs@3.1.0(eslint@8.56.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3): resolution: {integrity: sha512-el5GxhT8BLrsWD0qGa8Rq+Ttb/Ni6V3DGT2oAPio0qcs/mUAxeyXEAmihkvmLCnAgp6xD27Ce7dISZ5c6BXeqA==} engines: {node: '>=18.0'} peerDependencies: react: ^18.0.0 react-dom: ^18.0.0 dependencies: - '@docusaurus/core': 3.1.0(@docusaurus/types@3.1.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) + '@docusaurus/core': 3.1.0(@docusaurus/types@3.1.0)(eslint@8.56.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) '@docusaurus/logger': 3.1.0 '@docusaurus/mdx-loader': 3.1.0(@docusaurus/types@3.1.0)(react-dom@18.2.0)(react@18.2.0) '@docusaurus/module-type-aliases': 3.1.0(react-dom@18.2.0)(react@18.2.0) @@ -3162,14 +3174,14 @@ packages: - webpack-cli dev: false - /@docusaurus/plugin-content-pages@3.1.0(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3): + /@docusaurus/plugin-content-pages@3.1.0(eslint@8.56.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3): resolution: {integrity: sha512-9gntYQFpk+93+Xl7gYczJu8I9uWoyRLnRwS0+NUFcs9iZtHKsdqKWPRrONC9elfN3wJ9ORwTbcVzsTiB8jvYlg==} engines: {node: '>=18.0'} peerDependencies: react: ^18.0.0 react-dom: ^18.0.0 dependencies: - '@docusaurus/core': 3.1.0(@docusaurus/types@3.1.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) + '@docusaurus/core': 3.1.0(@docusaurus/types@3.1.0)(eslint@8.56.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) '@docusaurus/mdx-loader': 3.1.0(@docusaurus/types@3.1.0)(react-dom@18.2.0)(react@18.2.0) '@docusaurus/types': 3.1.0(react-dom@18.2.0)(react@18.2.0) '@docusaurus/utils': 3.1.0(@docusaurus/types@3.1.0) @@ -3197,14 +3209,14 @@ packages: - webpack-cli dev: false - /@docusaurus/plugin-debug@3.1.0(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3): + /@docusaurus/plugin-debug@3.1.0(eslint@8.56.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3): resolution: {integrity: sha512-AbvJwCVRbmQ8w9d8QXbF4Iq/ui0bjPZNYFIhtducGFnm2YQRN1mraK8mCEQb0Aq0T8SqRRvSfC/far4n/s531w==} engines: {node: '>=18.0'} peerDependencies: react: ^18.0.0 react-dom: ^18.0.0 dependencies: - '@docusaurus/core': 3.1.0(@docusaurus/types@3.1.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) + '@docusaurus/core': 3.1.0(@docusaurus/types@3.1.0)(eslint@8.56.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) '@docusaurus/types': 3.1.0(react-dom@18.2.0)(react@18.2.0) '@docusaurus/utils': 3.1.0(@docusaurus/types@3.1.0) fs-extra: 11.2.0 @@ -3230,14 +3242,14 @@ packages: - webpack-cli dev: false - /@docusaurus/plugin-google-analytics@3.1.0(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3): + /@docusaurus/plugin-google-analytics@3.1.0(eslint@8.56.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3): resolution: {integrity: sha512-zvUOMzu9Uhz0ciqnSbtnp/5i1zEYlzarQrOXG90P3Is3efQI43p2YLW/rzSGdLb5MfQo2HvKT6Q5+tioMO045Q==} engines: {node: '>=18.0'} peerDependencies: react: ^18.0.0 react-dom: ^18.0.0 dependencies: - '@docusaurus/core': 3.1.0(@docusaurus/types@3.1.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) + '@docusaurus/core': 3.1.0(@docusaurus/types@3.1.0)(eslint@8.56.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) '@docusaurus/types': 3.1.0(react-dom@18.2.0)(react@18.2.0) '@docusaurus/utils-validation': 3.1.0(@docusaurus/types@3.1.0) react: 18.2.0 @@ -3261,14 +3273,14 @@ packages: - webpack-cli dev: false - /@docusaurus/plugin-google-gtag@3.1.0(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3): + /@docusaurus/plugin-google-gtag@3.1.0(eslint@8.56.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3): resolution: {integrity: sha512-0txshvaY8qIBdkk2UATdVcfiCLGq3KAUfuRQD2cRNgO39iIf4/ihQxH9NXcRTwKs4Q5d9yYHoix3xT6pFuEYOg==} engines: {node: '>=18.0'} peerDependencies: react: ^18.0.0 react-dom: ^18.0.0 dependencies: - '@docusaurus/core': 3.1.0(@docusaurus/types@3.1.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) + '@docusaurus/core': 3.1.0(@docusaurus/types@3.1.0)(eslint@8.56.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) '@docusaurus/types': 3.1.0(react-dom@18.2.0)(react@18.2.0) '@docusaurus/utils-validation': 3.1.0(@docusaurus/types@3.1.0) '@types/gtag.js': 0.0.12 @@ -3293,14 +3305,14 @@ packages: - webpack-cli dev: false - /@docusaurus/plugin-google-tag-manager@3.1.0(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3): + /@docusaurus/plugin-google-tag-manager@3.1.0(eslint@8.56.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3): resolution: {integrity: sha512-zOWPEi8kMyyPtwG0vhyXrdbLs8fIZmY5vlbi9lUU+v8VsroO5iHmfR2V3SMsrsfOanw5oV/ciWqbxezY00qEZg==} engines: {node: '>=18.0'} peerDependencies: react: ^18.0.0 react-dom: ^18.0.0 dependencies: - '@docusaurus/core': 3.1.0(@docusaurus/types@3.1.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) + '@docusaurus/core': 3.1.0(@docusaurus/types@3.1.0)(eslint@8.56.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) '@docusaurus/types': 3.1.0(react-dom@18.2.0)(react@18.2.0) '@docusaurus/utils-validation': 3.1.0(@docusaurus/types@3.1.0) react: 18.2.0 @@ -3324,14 +3336,14 @@ packages: - webpack-cli dev: false - /@docusaurus/plugin-sitemap@3.1.0(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3): + /@docusaurus/plugin-sitemap@3.1.0(eslint@8.56.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3): resolution: {integrity: sha512-TkR5vGBpUooEB9SoW42thahqqwKzfHrQQhkB+JrEGERsl4bKODSuJNle4aA4h6LSkg4IyfXOW8XOI0NIPWb9Cg==} engines: {node: '>=18.0'} peerDependencies: react: ^18.0.0 react-dom: ^18.0.0 dependencies: - '@docusaurus/core': 3.1.0(@docusaurus/types@3.1.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) + '@docusaurus/core': 3.1.0(@docusaurus/types@3.1.0)(eslint@8.56.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) '@docusaurus/logger': 3.1.0 '@docusaurus/types': 3.1.0(react-dom@18.2.0)(react@18.2.0) '@docusaurus/utils': 3.1.0(@docusaurus/types@3.1.0) @@ -3360,25 +3372,25 @@ packages: - webpack-cli dev: false - /@docusaurus/preset-classic@3.1.0(@algolia/client-search@4.22.1)(@types/react@18.2.48)(react-dom@18.2.0)(react@18.2.0)(search-insights@2.13.0)(typescript@5.3.3): + /@docusaurus/preset-classic@3.1.0(@algolia/client-search@4.22.1)(@types/react@18.2.48)(eslint@8.56.0)(react-dom@18.2.0)(react@18.2.0)(search-insights@2.13.0)(typescript@5.3.3): resolution: {integrity: sha512-xGLQRFmmT9IinAGUDVRYZ54Ys28USNbA3OTXQXnSJLPr1rCY7CYnHI4XoOnKWrNnDiAI4ruMzunXWyaElUYCKQ==} engines: {node: '>=18.0'} peerDependencies: react: ^18.0.0 react-dom: ^18.0.0 dependencies: - '@docusaurus/core': 3.1.0(@docusaurus/types@3.1.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) - '@docusaurus/plugin-content-blog': 3.1.0(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) - '@docusaurus/plugin-content-docs': 3.1.0(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) - '@docusaurus/plugin-content-pages': 3.1.0(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) - '@docusaurus/plugin-debug': 3.1.0(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) - '@docusaurus/plugin-google-analytics': 3.1.0(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) - '@docusaurus/plugin-google-gtag': 3.1.0(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) - '@docusaurus/plugin-google-tag-manager': 3.1.0(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) - '@docusaurus/plugin-sitemap': 3.1.0(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) - '@docusaurus/theme-classic': 3.1.0(@types/react@18.2.48)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) - '@docusaurus/theme-common': 3.1.0(@docusaurus/types@3.1.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) - '@docusaurus/theme-search-algolia': 3.1.0(@algolia/client-search@4.22.1)(@docusaurus/types@3.1.0)(@types/react@18.2.48)(react-dom@18.2.0)(react@18.2.0)(search-insights@2.13.0)(typescript@5.3.3) + '@docusaurus/core': 3.1.0(@docusaurus/types@3.1.0)(eslint@8.56.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) + '@docusaurus/plugin-content-blog': 3.1.0(eslint@8.56.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) + '@docusaurus/plugin-content-docs': 3.1.0(eslint@8.56.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) + '@docusaurus/plugin-content-pages': 3.1.0(eslint@8.56.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) + '@docusaurus/plugin-debug': 3.1.0(eslint@8.56.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) + '@docusaurus/plugin-google-analytics': 3.1.0(eslint@8.56.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) + '@docusaurus/plugin-google-gtag': 3.1.0(eslint@8.56.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) + '@docusaurus/plugin-google-tag-manager': 3.1.0(eslint@8.56.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) + '@docusaurus/plugin-sitemap': 3.1.0(eslint@8.56.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) + '@docusaurus/theme-classic': 3.1.0(@types/react@18.2.48)(eslint@8.56.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) + '@docusaurus/theme-common': 3.1.0(@docusaurus/types@3.1.0)(eslint@8.56.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) + '@docusaurus/theme-search-algolia': 3.1.0(@algolia/client-search@4.22.1)(@docusaurus/types@3.1.0)(@types/react@18.2.48)(eslint@8.56.0)(react-dom@18.2.0)(react@18.2.0)(search-insights@2.13.0)(typescript@5.3.3) '@docusaurus/types': 3.1.0(react-dom@18.2.0)(react@18.2.0) react: 18.2.0 react-dom: 18.2.0(react@18.2.0) @@ -3412,20 +3424,20 @@ packages: prop-types: 15.8.1 react: 18.2.0 - /@docusaurus/theme-classic@3.1.0(@types/react@18.2.48)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3): + /@docusaurus/theme-classic@3.1.0(@types/react@18.2.48)(eslint@8.56.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3): resolution: {integrity: sha512-/+jMl2Z9O8QQxves5AtHdt91gWsEZFgOV3La/6eyKEd7QLqQUtM5fxEJ40rq9NKYjqCd1HzZ9egIMeJoWwillw==} engines: {node: '>=18.0'} peerDependencies: react: ^18.0.0 react-dom: ^18.0.0 dependencies: - '@docusaurus/core': 3.1.0(@docusaurus/types@3.1.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) + '@docusaurus/core': 3.1.0(@docusaurus/types@3.1.0)(eslint@8.56.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) '@docusaurus/mdx-loader': 3.1.0(@docusaurus/types@3.1.0)(react-dom@18.2.0)(react@18.2.0) '@docusaurus/module-type-aliases': 3.1.0(react-dom@18.2.0)(react@18.2.0) - '@docusaurus/plugin-content-blog': 3.1.0(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) - '@docusaurus/plugin-content-docs': 3.1.0(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) - '@docusaurus/plugin-content-pages': 3.1.0(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) - '@docusaurus/theme-common': 3.1.0(@docusaurus/types@3.1.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) + '@docusaurus/plugin-content-blog': 3.1.0(eslint@8.56.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) + '@docusaurus/plugin-content-docs': 3.1.0(eslint@8.56.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) + '@docusaurus/plugin-content-pages': 3.1.0(eslint@8.56.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) + '@docusaurus/theme-common': 3.1.0(@docusaurus/types@3.1.0)(eslint@8.56.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) '@docusaurus/theme-translations': 3.1.0 '@docusaurus/types': 3.1.0(react-dom@18.2.0)(react@18.2.0) '@docusaurus/utils': 3.1.0(@docusaurus/types@3.1.0) @@ -3465,7 +3477,7 @@ packages: - webpack-cli dev: false - /@docusaurus/theme-common@3.1.0(@docusaurus/types@3.1.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3): + /@docusaurus/theme-common@3.1.0(@docusaurus/types@3.1.0)(eslint@8.56.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3): resolution: {integrity: sha512-YGwEFALLIbF5ocW/Fy6Ae7tFWUOugEN3iwxTx8UkLAcLqYUboDSadesYtVBmRCEB4FVA2qoP7YaW3lu3apUPPw==} engines: {node: '>=18.0'} peerDependencies: @@ -3474,9 +3486,9 @@ packages: dependencies: '@docusaurus/mdx-loader': 3.1.0(@docusaurus/types@3.1.0)(react-dom@18.2.0)(react@18.2.0) '@docusaurus/module-type-aliases': 3.1.0(react-dom@18.2.0)(react@18.2.0) - '@docusaurus/plugin-content-blog': 3.1.0(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) - '@docusaurus/plugin-content-docs': 3.1.0(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) - '@docusaurus/plugin-content-pages': 3.1.0(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) + '@docusaurus/plugin-content-blog': 3.1.0(eslint@8.56.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) + '@docusaurus/plugin-content-docs': 3.1.0(eslint@8.56.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) + '@docusaurus/plugin-content-pages': 3.1.0(eslint@8.56.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) '@docusaurus/utils': 3.1.0(@docusaurus/types@3.1.0) '@docusaurus/utils-common': 3.1.0(@docusaurus/types@3.1.0) '@types/history': 4.7.11 @@ -3508,7 +3520,7 @@ packages: - webpack-cli dev: false - /@docusaurus/theme-search-algolia@3.1.0(@algolia/client-search@4.22.1)(@docusaurus/types@3.1.0)(@types/react@18.2.48)(react-dom@18.2.0)(react@18.2.0)(search-insights@2.13.0)(typescript@5.3.3): + /@docusaurus/theme-search-algolia@3.1.0(@algolia/client-search@4.22.1)(@docusaurus/types@3.1.0)(@types/react@18.2.48)(eslint@8.56.0)(react-dom@18.2.0)(react@18.2.0)(search-insights@2.13.0)(typescript@5.3.3): resolution: {integrity: sha512-8cJH0ZhPsEDjq3jR3I+wHmWzVY2bXMQJ59v2QxUmsTZxbWA4u+IzccJMIJx4ooFl9J6iYynwYsFuHxyx/KUmfQ==} engines: {node: '>=18.0'} peerDependencies: @@ -3516,10 +3528,10 @@ packages: react-dom: ^18.0.0 dependencies: '@docsearch/react': 3.5.2(@algolia/client-search@4.22.1)(@types/react@18.2.48)(react-dom@18.2.0)(react@18.2.0)(search-insights@2.13.0) - '@docusaurus/core': 3.1.0(@docusaurus/types@3.1.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) + '@docusaurus/core': 3.1.0(@docusaurus/types@3.1.0)(eslint@8.56.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) '@docusaurus/logger': 3.1.0 - '@docusaurus/plugin-content-docs': 3.1.0(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) - '@docusaurus/theme-common': 3.1.0(@docusaurus/types@3.1.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) + '@docusaurus/plugin-content-docs': 3.1.0(eslint@8.56.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) + '@docusaurus/theme-common': 3.1.0(@docusaurus/types@3.1.0)(eslint@8.56.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) '@docusaurus/theme-translations': 3.1.0 '@docusaurus/utils': 3.1.0(@docusaurus/types@3.1.0) '@docusaurus/utils-validation': 3.1.0(@docusaurus/types@3.1.0) @@ -3791,12 +3803,10 @@ packages: dependencies: eslint: 8.56.0 eslint-visitor-keys: 3.4.3 - dev: true /@eslint-community/regexpp@4.6.2: resolution: {integrity: sha512-pPTNuaAG3QMH+buKyBIGJs3g/S5y0caxw0ygM3YyE6yJFySwiGGSzA+mM3KJ8QQvzeLh3blwgSonkFjgQdxzMw==} engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} - dev: true /@eslint/eslintrc@2.1.4: resolution: {integrity: sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==} @@ -3813,12 +3823,10 @@ packages: strip-json-comments: 3.1.1 transitivePeerDependencies: - supports-color - dev: true /@eslint/js@8.56.0: resolution: {integrity: sha512-gMsVel9D7f2HLkBma9VbtzZRehRogVRfbr++f06nL2vnCGCNlzOD+/MUov/F4p8myyAHspEhVobgjpX64q5m6A==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - dev: true /@ethereum-attestation-service/eas-contracts@1.3.7(ts-node@10.9.1)(typescript@5.2.2): resolution: {integrity: sha512-msCKGDhqSjfkx0lbs0PPkf/Z6bWxaYT9ze/uLoRh1tM7W8N27mobX4g6AsjATqGC+eWHRfliK9eCwJQj7TU8WA==} @@ -4370,7 +4378,7 @@ packages: string-env-interpolation: 1.0.1 ts-log: 2.2.5 tslib: 2.6.2 - yaml: 2.3.1 + yaml: 2.3.4 yargs: 17.7.2 transitivePeerDependencies: - '@types/node' @@ -4981,16 +4989,13 @@ packages: minimatch: 3.1.2 transitivePeerDependencies: - supports-color - dev: true /@humanwhocodes/module-importer@1.0.1: resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} engines: {node: '>=12.22'} - dev: true /@humanwhocodes/object-schema@2.0.2: resolution: {integrity: sha512-6EwiSjwWYP7pTckG6I5eyFANjPhmPjUX9JRLUSfNPC7FX7zK9gyZAfUEaECL6ALTpGX5AjnBq3C9XmVWPitNpw==} - dev: true /@isaacs/cliui@8.0.2: resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} @@ -7726,6 +7731,11 @@ packages: resolution: {integrity: sha512-N+0kuo9KgrUQ1Sn/ifDXsvg0TTleP7rIy4zOBGECxAljqvqfqpTfzx0Q1NUedOixRMBfe2Whhb056a42cWs26Q==} dev: false + /@types/node@20.11.17: + resolution: {integrity: sha512-QmgQZGWu1Yw9TDyAP9ZzpFJKynYNeOvwMJmaxABfieQoVoiVOS6MN1WSpqpRcbeA5+RW82kraAVxCCJg+780Qw==} + dependencies: + undici-types: 5.26.5 + /@types/node@20.11.6: resolution: {integrity: sha512-+EOokTnksGVgip2PbYbr3xnR7kZigh4LbybAfBAw5BpnQ+FqBYUsvCEjYd70IXKlbohQ64mzEYmMtlWUY8q//Q==} dependencies: @@ -10674,7 +10684,6 @@ packages: /deep-is@0.1.4: resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} - dev: true /deepmerge@2.2.1: resolution: {integrity: sha512-R9hc1Xa/NOBi9WRVUWg19rl1UB7Tt4kuPd+thNJgFZoxXsTz7ncaPaeIm+40oSGuP33DfMb4sZt1QIGiJzC4EA==} @@ -10894,7 +10903,6 @@ packages: engines: {node: '>=6.0.0'} dependencies: esutils: 2.0.3 - dev: true /dom-accessibility-api@0.5.16: resolution: {integrity: sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg==} @@ -11599,7 +11607,6 @@ packages: dependencies: esrecurse: 4.3.0 estraverse: 5.3.0 - dev: true /eslint-visitor-keys@3.4.2: resolution: {integrity: sha512-8drBzUEyZ2llkpCA67iYrgEssKDUu68V8ChqqOfFupIaG/LCVPUT+CoGJpT77zJprs4T/W7p07LP7zAIMuweVw==} @@ -11609,7 +11616,6 @@ packages: /eslint-visitor-keys@3.4.3: resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - dev: true /eslint@8.56.0: resolution: {integrity: sha512-Go19xM6T9puCOWntie1/P997aXxFsOi37JIHRWI514Hc6ZnaHGKY9xFhrU65RT6CcBEzZoGG1e6Nq+DT04ZtZQ==} @@ -11656,7 +11662,6 @@ packages: text-table: 0.2.0 transitivePeerDependencies: - supports-color - dev: true /espree@9.6.1: resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==} @@ -11665,7 +11670,6 @@ packages: acorn: 8.10.0 acorn-jsx: 5.3.2(acorn@8.10.0) eslint-visitor-keys: 3.4.3 - dev: true /esprima@4.0.1: resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} @@ -11677,7 +11681,6 @@ packages: engines: {node: '>=0.10'} dependencies: estraverse: 5.3.0 - dev: true /esrecurse@4.3.0: resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} @@ -12076,7 +12079,6 @@ packages: /fast-levenshtein@2.0.6: resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} - dev: true /fast-loops@1.1.3: resolution: {integrity: sha512-8EZzEP0eKkEEVX+drtd9mtuQ+/QrlfW/5MlwcwK5Nds6EkZ/tRzEexkzUY2mIssnAyVLT+TKHuRXmFNNXYUd6g==} @@ -12187,7 +12189,6 @@ packages: engines: {node: ^10.12.0 || >=12.0.0} dependencies: flat-cache: 3.0.4 - dev: true /file-loader@6.2.0(webpack@5.89.0): resolution: {integrity: sha512-qo3glqyTa61Ytg4u73GultjHGjdRyig3tG6lPtyX/jOEJvHif9uB0/OCI2Kif6ctF3caQTW2G5gym21oAsI4pw==} @@ -12297,7 +12298,6 @@ packages: dependencies: flatted: 3.2.7 rimraf: 3.0.2 - dev: true /flat@5.0.2: resolution: {integrity: sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==} @@ -12309,7 +12309,6 @@ packages: /flatted@3.2.7: resolution: {integrity: sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==} - dev: true /fn.name@1.1.0: resolution: {integrity: sha512-GRnmB5gPyJpAhTQdSZTSp9uaPSvl09KoYcMQtsB9rQoOmzs9dH6ffeccH+Z+cv6P68Hu5bC6JjRh4Ah/mHSNRw==} @@ -12339,7 +12338,7 @@ packages: cross-spawn: 7.0.3 signal-exit: 4.1.0 - /fork-ts-checker-webpack-plugin@6.5.3(typescript@5.3.3)(webpack@5.89.0): + /fork-ts-checker-webpack-plugin@6.5.3(eslint@8.56.0)(typescript@5.3.3)(webpack@5.89.0): resolution: {integrity: sha512-SbH/l9ikmMWycd5puHJKTkZJKddF4iRLyW3DeZ08HTI7NGyLS38MXd/KGgeWumQO7YNQbW2u/NtPT2YowbPaGQ==} engines: {node: '>=10', yarn: '>=1.0.0'} peerDependencies: @@ -12359,6 +12358,7 @@ packages: chokidar: 3.5.3 cosmiconfig: 6.0.0 deepmerge: 4.3.1 + eslint: 8.56.0 fs-extra: 9.1.0 glob: 7.2.3 memfs: 3.5.3 @@ -12809,7 +12809,6 @@ packages: engines: {node: '>=8'} dependencies: type-fest: 0.20.2 - dev: true /globalthis@1.0.3: resolution: {integrity: sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==} @@ -12891,7 +12890,6 @@ packages: /graphemer@1.4.0: resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} - dev: true /graphql-config@5.0.3(@types/node@20.11.6)(graphql@16.8.1)(typescript@5.3.3): resolution: {integrity: sha512-BNGZaoxIBkv9yy6Y7omvsaBUHOzfFcII3UN++tpH8MGOKFPFkCPZuwx09ggANMt8FgyWP1Od8SWPmrUEZca4NQ==} @@ -13061,7 +13059,7 @@ packages: solc: 0.7.3(debug@4.3.4) source-map-support: 0.5.21 stacktrace-parser: 0.1.10 - ts-node: 10.9.1(@types/node@20.11.6)(typescript@5.2.2) + ts-node: 10.9.1(@types/node@20.11.17)(typescript@5.2.2) tsort: 0.0.1 typescript: 5.2.2 undici: 5.28.2 @@ -15370,7 +15368,6 @@ packages: /json-stable-stringify-without-jsonify@1.0.1: resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} - dev: true /json-stable-stringify@1.0.2: resolution: {integrity: sha512-eunSSaEnxV12z+Z73y/j5N37/In40GK4GmsSy+tEHJMxknvqnA7/djeYtAgW0GsWHUfg+847WJjKaEylk2y09g==} @@ -15570,7 +15567,6 @@ packages: dependencies: prelude-ls: 1.2.1 type-check: 0.4.0 - dev: true /libphonenumber-js@1.10.44: resolution: {integrity: sha512-svlRdNBI5WgBjRC20GrCfbFiclbF0Cx+sCcQob/C1r57nsoq0xg8r65QbTyVyweQIlB33P+Uahyho6EMYgcOyQ==} @@ -15712,7 +15708,6 @@ packages: /lodash.merge@4.6.2: resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} - dev: true /lodash.sortby@4.7.0: resolution: {integrity: sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==} @@ -17344,7 +17339,6 @@ packages: levn: 0.4.1 prelude-ls: 1.2.1 type-check: 0.4.0 - dev: true /ora@5.4.1: resolution: {integrity: sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==} @@ -18356,7 +18350,6 @@ packages: /prelude-ls@1.2.1: resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} engines: {node: '>= 0.8.0'} - dev: true /prettier@2.8.8: resolution: {integrity: sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==} @@ -18364,12 +18357,6 @@ packages: hasBin: true dev: true - /prettier@3.0.1: - resolution: {integrity: sha512-fcOWSnnpCrovBsmFZIGIy9UqK2FaI7Hqax+DIO0A9UxeVoY4iweyaFjS5TavZN97Hfehph0nhsZnjlVKzEQSrQ==} - engines: {node: '>=14'} - hasBin: true - dev: true - /prettier@3.2.4: resolution: {integrity: sha512-FWu1oLHKCrtpO1ypU6J0SbK2d9Ckwysq6bHj/uaCP26DxrPpppCLQRGVuqAxSTvhF00AcvDRyYrLNW7ocBhFFQ==} engines: {node: '>=14'} @@ -18648,7 +18635,7 @@ packages: react: 18.2.0 dev: false - /react-dev-utils@12.0.1(typescript@5.3.3)(webpack@5.89.0): + /react-dev-utils@12.0.1(eslint@8.56.0)(typescript@5.3.3)(webpack@5.89.0): resolution: {integrity: sha512-84Ivxmr17KjUupyqzFode6xKhjwuEJDROWKJy/BthkL7Wn6NJ8h4WE6k/exAv6ImS+0oZLRRW5j/aINMHyeGeQ==} engines: {node: '>=14'} peerDependencies: @@ -18667,7 +18654,7 @@ packages: escape-string-regexp: 4.0.0 filesize: 8.0.7 find-up: 5.0.0 - fork-ts-checker-webpack-plugin: 6.5.3(typescript@5.3.3)(webpack@5.89.0) + fork-ts-checker-webpack-plugin: 6.5.3(eslint@8.56.0)(typescript@5.3.3)(webpack@5.89.0) global-modules: 2.0.0 globby: 11.1.0 gzip-size: 6.0.0 @@ -21038,7 +21025,7 @@ packages: resolution: {integrity: sha512-PGcnJoTBnVGy6yYNFxWVNkdcAuAMstvutN9MgDJIV6L0oG8fB+ZNNy1T+wJzah8RPGor1mZuPQkVfXNDpy9eHA==} dev: true - /ts-node@10.9.1(@types/node@20.11.6)(typescript@5.2.2): + /ts-node@10.9.1(@types/node@20.11.17)(typescript@5.2.2): resolution: {integrity: sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==} hasBin: true peerDependencies: @@ -21057,7 +21044,7 @@ packages: '@tsconfig/node12': 1.0.11 '@tsconfig/node14': 1.0.3 '@tsconfig/node16': 1.0.4 - '@types/node': 20.11.6 + '@types/node': 20.11.17 acorn: 8.10.0 acorn-walk: 8.2.0 arg: 4.1.3 @@ -21068,6 +21055,37 @@ packages: v8-compile-cache-lib: 3.0.1 yn: 3.1.1 + /ts-node@10.9.1(@types/node@20.11.17)(typescript@5.3.3): + resolution: {integrity: sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==} + hasBin: true + peerDependencies: + '@swc/core': '>=1.2.50' + '@swc/wasm': '>=1.2.50' + '@types/node': '*' + typescript: '>=2.7' + peerDependenciesMeta: + '@swc/core': + optional: true + '@swc/wasm': + optional: true + dependencies: + '@cspotcode/source-map-support': 0.8.1 + '@tsconfig/node10': 1.0.9 + '@tsconfig/node12': 1.0.11 + '@tsconfig/node14': 1.0.3 + '@tsconfig/node16': 1.0.4 + '@types/node': 20.11.17 + acorn: 8.10.0 + acorn-walk: 8.2.0 + arg: 4.1.3 + create-require: 1.1.1 + diff: 4.0.2 + make-error: 1.3.6 + typescript: 5.3.3 + v8-compile-cache-lib: 3.0.1 + yn: 3.1.1 + dev: true + /ts-node@10.9.1(@types/node@20.6.3)(typescript@5.2.2): resolution: {integrity: sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==} hasBin: true @@ -21213,7 +21231,6 @@ packages: engines: {node: '>= 0.8.0'} dependencies: prelude-ls: 1.2.1 - dev: true /type-detect@4.0.8: resolution: {integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==} @@ -21222,7 +21239,6 @@ packages: /type-fest@0.20.2: resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} engines: {node: '>=10'} - dev: true /type-fest@0.21.3: resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==} @@ -22410,6 +22426,7 @@ packages: /yaml@2.3.1: resolution: {integrity: sha512-2eHWfjaoXgTBC2jNM1LRef62VQa0umtvRiDSk6HSzW7RvS5YtkabJrwYLLEKWBc8a5U2PTSCs+dJjUTJdlHsWQ==} engines: {node: '>= 14'} + dev: false /yaml@2.3.4: resolution: {integrity: sha512-8aAvwVUSHpfEqTQ4w/KMlf3HcRdt50E5ODIQJBw1fQ5RL34xabzxtUlzTXVqc4rkZsPbvrXKWnABCD7kWSmocA==} diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 000000000..7d233fe0a --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,21 @@ +{ + "compilerOptions": { + "outDir": "dist", + "target": "ES6", + "module": "NodeNext", + "moduleResolution": "NodeNext", + "declaration": true, + "declarationMap": true, + "esModuleInterop": true, + "emitDecoratorMetadata": true, + "experimentalDecorators": true, + "noImplicitAny": true, + "resolveJsonModule": true, + "skipLibCheck": true, + "strict": true, + "strictNullChecks": true, + "strictPropertyInitialization": false, + }, + "exclude": ["node_modules"], + "include": [], +}