From 37d5a123a5fa95b56c0638d2e57028fd0c15f931 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emanuel=20Tesa=C5=99?= Date: Fri, 1 Dec 2023 09:30:36 +0100 Subject: [PATCH] Support processing v2 (#1914) * Support processing v2 * Migrate to processing after naming changes * Remove redundant check * Update ois and commons * Add changeset * Fix tests * Update OIS version properly * Use ois@2.3.1 and remove typing hacks * Fix processing snippets, apply PR suggestions * Properly apply PR suggestions --- .changeset/mighty-parents-melt.md | 6 + packages/airnode-adapter/package.json | 2 +- packages/airnode-adapter/test/fixtures/ois.ts | 2 +- .../config/config.example.json | 2 +- packages/airnode-deployer/package.json | 2 +- .../test/fixtures/config.aws.valid.json | 2 +- .../test/fixtures/config.gcp.valid.json | 2 +- .../config.example.json | 2 +- .../create-config.ts | 2 +- .../config.example.json | 2 +- .../create-config.ts | 2 +- .../config.example.json | 2 +- .../coingecko-http-gateways/create-config.ts | 2 +- .../config.example.json | 14 +- .../create-config.ts | 37 +- .../config.example.json | 14 +- .../coingecko-pre-processing/create-config.ts | 33 +- .../coingecko-template/config.example.json | 2 +- .../coingecko-template/create-config.ts | 2 +- .../coingecko/config.example.json | 2 +- .../integrations/coingecko/create-config.ts | 2 +- .../integrations/config-utils.ts | 2 +- .../failing-example/config.example.json | 2 +- .../failing-example/create-config.ts | 2 +- .../config.example.json | 2 +- .../relay-security-schemes/create-config.ts | 2 +- .../weather-multi-value/config.example.json | 2 +- .../weather-multi-value/create-config.ts | 2 +- .../airnode-node/config/config.example.json | 2 +- packages/airnode-node/package.json | 6 +- packages/airnode-node/src/api/index.ts | 28 +- .../src/cli/http-signed-data-invoke.ts | 4 - .../test/fixtures/config/config.valid.json | 2 +- .../airnode-node/test/fixtures/config/ois.ts | 2 +- packages/airnode-validator/package.json | 4 +- .../test/fixtures/config.valid.json | 2 +- .../fixtures/interpolated-config.valid.json | 2 +- .../fixtures/invalid-secret-name/config.json | 2 +- .../airnode-validator/test/fixtures/ois.json | 2 +- scripts/update-ois-version.ts | 2 +- yarn.lock | 406 ++++++++---------- 41 files changed, 280 insertions(+), 334 deletions(-) create mode 100644 .changeset/mighty-parents-melt.md diff --git a/.changeset/mighty-parents-melt.md b/.changeset/mighty-parents-melt.md new file mode 100644 index 0000000000..35b993ad7e --- /dev/null +++ b/.changeset/mighty-parents-melt.md @@ -0,0 +1,6 @@ +--- +'@api3/airnode-examples': minor +'@api3/airnode-node': minor +--- + +Support OIS processing v2 diff --git a/packages/airnode-adapter/package.json b/packages/airnode-adapter/package.json index d297314e73..f1cc4ff3e5 100644 --- a/packages/airnode-adapter/package.json +++ b/packages/airnode-adapter/package.json @@ -19,7 +19,7 @@ "test:watch": "yarn test:ts --watch" }, "dependencies": { - "@api3/ois": "2.2.1", + "@api3/ois": "2.3.1", "@api3/promise-utils": "^0.4.0", "axios": "^1.5.0", "bignumber.js": "^9.1.2", diff --git a/packages/airnode-adapter/test/fixtures/ois.ts b/packages/airnode-adapter/test/fixtures/ois.ts index b79d325ea3..5a487e0948 100644 --- a/packages/airnode-adapter/test/fixtures/ois.ts +++ b/packages/airnode-adapter/test/fixtures/ois.ts @@ -2,7 +2,7 @@ import { OIS } from '@api3/ois'; export function buildOIS(overrides?: Partial): OIS { return { - oisFormat: '2.2.1', + oisFormat: '2.3.1', version: '1.2.3', title: 'Currency Converter API', apiSpecifications: { diff --git a/packages/airnode-deployer/config/config.example.json b/packages/airnode-deployer/config/config.example.json index c8f50be1ed..224e79a40b 100644 --- a/packages/airnode-deployer/config/config.example.json +++ b/packages/airnode-deployer/config/config.example.json @@ -94,7 +94,7 @@ "templates": [], "ois": [ { - "oisFormat": "2.2.1", + "oisFormat": "2.3.1", "title": "CoinGecko basic request", "version": "1.0.0", "apiSpecifications": { diff --git a/packages/airnode-deployer/package.json b/packages/airnode-deployer/package.json index d21dda8419..61e1bcdb8f 100644 --- a/packages/airnode-deployer/package.json +++ b/packages/airnode-deployer/package.json @@ -43,7 +43,7 @@ "lodash": "^4.17.21", "ora": "^5.4.1", "yargs": "^17.7.2", - "zod": "^3.22.3" + "zod": "^3.22.4" }, "devDependencies": { "@aws-sdk/util-stream-node": "^3.370.0", diff --git a/packages/airnode-deployer/test/fixtures/config.aws.valid.json b/packages/airnode-deployer/test/fixtures/config.aws.valid.json index 741d2b5d8b..6776f44cb2 100644 --- a/packages/airnode-deployer/test/fixtures/config.aws.valid.json +++ b/packages/airnode-deployer/test/fixtures/config.aws.valid.json @@ -95,7 +95,7 @@ "templates": [], "ois": [ { - "oisFormat": "2.2.1", + "oisFormat": "2.3.1", "title": "CoinGecko basic request", "version": "1.0.0", "apiSpecifications": { diff --git a/packages/airnode-deployer/test/fixtures/config.gcp.valid.json b/packages/airnode-deployer/test/fixtures/config.gcp.valid.json index e5974bcaeb..06a24934fa 100644 --- a/packages/airnode-deployer/test/fixtures/config.gcp.valid.json +++ b/packages/airnode-deployer/test/fixtures/config.gcp.valid.json @@ -93,7 +93,7 @@ "templates": [], "ois": [ { - "oisFormat": "2.2.1", + "oisFormat": "2.3.1", "title": "CoinGecko basic request", "version": "1.0.0", "apiSpecifications": { diff --git a/packages/airnode-examples/integrations/authenticated-coinmarketcap/config.example.json b/packages/airnode-examples/integrations/authenticated-coinmarketcap/config.example.json index f9de0bbd67..47be0bcea4 100644 --- a/packages/airnode-examples/integrations/authenticated-coinmarketcap/config.example.json +++ b/packages/airnode-examples/integrations/authenticated-coinmarketcap/config.example.json @@ -83,7 +83,7 @@ "templates": [], "ois": [ { - "oisFormat": "2.2.1", + "oisFormat": "2.3.1", "title": "CoinMarketCap Basic Authenticated Request", "version": "1.0.0", "apiSpecifications": { diff --git a/packages/airnode-examples/integrations/authenticated-coinmarketcap/create-config.ts b/packages/airnode-examples/integrations/authenticated-coinmarketcap/create-config.ts index 7c816267d9..a4278bf557 100644 --- a/packages/airnode-examples/integrations/authenticated-coinmarketcap/create-config.ts +++ b/packages/airnode-examples/integrations/authenticated-coinmarketcap/create-config.ts @@ -90,7 +90,7 @@ const createConfig = async (generateExampleFile: boolean): Promise => ({ templates: [], ois: [ { - oisFormat: '2.2.1', + oisFormat: '2.3.1', title: 'CoinMarketCap Basic Authenticated Request', version: '1.0.0', apiSpecifications: { diff --git a/packages/airnode-examples/integrations/coingecko-cross-chain-authorizer/config.example.json b/packages/airnode-examples/integrations/coingecko-cross-chain-authorizer/config.example.json index 2a398c862c..da27a54c0f 100644 --- a/packages/airnode-examples/integrations/coingecko-cross-chain-authorizer/config.example.json +++ b/packages/airnode-examples/integrations/coingecko-cross-chain-authorizer/config.example.json @@ -111,7 +111,7 @@ "templates": [], "ois": [ { - "oisFormat": "2.2.1", + "oisFormat": "2.3.1", "title": "CoinGecko basic request", "version": "1.0.0", "apiSpecifications": { diff --git a/packages/airnode-examples/integrations/coingecko-cross-chain-authorizer/create-config.ts b/packages/airnode-examples/integrations/coingecko-cross-chain-authorizer/create-config.ts index 01448462e4..5085c263af 100644 --- a/packages/airnode-examples/integrations/coingecko-cross-chain-authorizer/create-config.ts +++ b/packages/airnode-examples/integrations/coingecko-cross-chain-authorizer/create-config.ts @@ -119,7 +119,7 @@ const createConfig = async (generateExampleFile: boolean): Promise => ({ templates: [], ois: [ { - oisFormat: '2.2.1', + oisFormat: '2.3.1', title: 'CoinGecko basic request', version: '1.0.0', apiSpecifications: { diff --git a/packages/airnode-examples/integrations/coingecko-http-gateways/config.example.json b/packages/airnode-examples/integrations/coingecko-http-gateways/config.example.json index be8aea438e..8e0a8cef9f 100644 --- a/packages/airnode-examples/integrations/coingecko-http-gateways/config.example.json +++ b/packages/airnode-examples/integrations/coingecko-http-gateways/config.example.json @@ -99,7 +99,7 @@ "templates": [], "ois": [ { - "oisFormat": "2.2.1", + "oisFormat": "2.3.1", "title": "CoinGecko basic request", "version": "1.0.0", "apiSpecifications": { diff --git a/packages/airnode-examples/integrations/coingecko-http-gateways/create-config.ts b/packages/airnode-examples/integrations/coingecko-http-gateways/create-config.ts index f5c7877b81..f3aebc3567 100644 --- a/packages/airnode-examples/integrations/coingecko-http-gateways/create-config.ts +++ b/packages/airnode-examples/integrations/coingecko-http-gateways/create-config.ts @@ -106,7 +106,7 @@ const createConfig = async (generateExampleFile: boolean): Promise => ({ templates: [], ois: [ { - oisFormat: '2.2.1', + oisFormat: '2.3.1', title: 'CoinGecko basic request', version: '1.0.0', apiSpecifications: { diff --git a/packages/airnode-examples/integrations/coingecko-post-processing/config.example.json b/packages/airnode-examples/integrations/coingecko-post-processing/config.example.json index 14ff49e5ea..fb3885e63c 100644 --- a/packages/airnode-examples/integrations/coingecko-post-processing/config.example.json +++ b/packages/airnode-examples/integrations/coingecko-post-processing/config.example.json @@ -83,7 +83,7 @@ "templates": [], "ois": [ { - "oisFormat": "2.2.1", + "oisFormat": "2.3.1", "title": "CoinGecko coins markets request", "version": "1.0.0", "apiSpecifications": { @@ -196,13 +196,11 @@ } } ], - "postProcessingSpecifications": [ - { - "environment": "Node", - "timeoutMs": 5000, - "value": "\n // Log out every coin data\n input.forEach((coinData) => {\n console.log(`[Post-processing snippet]: Received the following coin data: \\${JSON.stringify(coinData, null, 2)}`)\n })\n\n const sum = (nums) => nums.reduce((acc, num) => acc + num, 0);\n const average = sum(input.map((coinData) => coinData.current_price)) / input.length;\n const percentageChange = sum(input.map((coinData) => coinData.price_change_percentage_30d_in_currency)) / input.length;\n\n // Create the data to be sent on chain and multiply it by 10^8 to preserve precision\n const output = [average, percentageChange].map((x) => x * 10 ** 8);\n " - } - ] + "postProcessingSpecificationV2": { + "environment": "Node", + "timeoutMs": 5000, + "value": "async function({ response }) {\n // Log out every coin data\n response.forEach((coinData) => {\n console.log(`[Post-processing snippet]: Received the following coin data: \\${JSON.stringify(coinData, null, 2)}`);\n });\n\n const sum = (nums) => nums.reduce((acc, num) => acc + num, 0);\n const average = sum(response.map((coinData) => coinData.current_price)) / response.length;\n const percentageChange =\n sum(response.map((coinData) => coinData.price_change_percentage_30d_in_currency)) / response.length;\n\n // Create the data to be sent on chain and multiply it by 10^8 to preserve precision\n return { response: [average, percentageChange].map((x) => x * 10 ** 8) };\n}" + } } ] } diff --git a/packages/airnode-examples/integrations/coingecko-post-processing/create-config.ts b/packages/airnode-examples/integrations/coingecko-post-processing/create-config.ts index 3f0a10e746..852d60bb2b 100644 --- a/packages/airnode-examples/integrations/coingecko-post-processing/create-config.ts +++ b/packages/airnode-examples/integrations/coingecko-post-processing/create-config.ts @@ -90,7 +90,7 @@ const createConfig = async (generateExampleFile: boolean): Promise => ({ templates: [], ois: [ { - oisFormat: '2.2.1', + oisFormat: '2.3.1', title: 'CoinGecko coins markets request', version: '1.0.0', apiSpecifications: { @@ -203,25 +203,26 @@ const createConfig = async (generateExampleFile: boolean): Promise => ({ }, }, ], - postProcessingSpecifications: [ - { - environment: 'Node', - timeoutMs: 5000, - value: ` - // Log out every coin data - input.forEach((coinData) => { - console.log(\`[Post-processing snippet]: Received the following coin data: \\\${JSON.stringify(coinData, null, 2)}\`) - }) + postProcessingSpecificationV2: { + environment: 'Node', + timeoutMs: 5000, + value: ` +async function({ response }) { + // Log out every coin data + response.forEach((coinData) => { + console.log(\`[Post-processing snippet]: Received the following coin data: \\\${JSON.stringify(coinData, null, 2)}\`); + }); - const sum = (nums) => nums.reduce((acc, num) => acc + num, 0); - const average = sum(input.map((coinData) => coinData.current_price)) / input.length; - const percentageChange = sum(input.map((coinData) => coinData.price_change_percentage_30d_in_currency)) / input.length; + const sum = (nums) => nums.reduce((acc, num) => acc + num, 0); + const average = sum(response.map((coinData) => coinData.current_price)) / response.length; + const percentageChange = + sum(response.map((coinData) => coinData.price_change_percentage_30d_in_currency)) / response.length; - // Create the data to be sent on chain and multiply it by 10^8 to preserve precision - const output = [average, percentageChange].map((x) => x * 10 ** 8); - `, - }, - ], + // Create the data to be sent on chain and multiply it by 10^8 to preserve precision + return { response: [average, percentageChange].map((x) => x * 10 ** 8) }; +} + `.trim(), + }, }, ], }, diff --git a/packages/airnode-examples/integrations/coingecko-pre-processing/config.example.json b/packages/airnode-examples/integrations/coingecko-pre-processing/config.example.json index e0341289c0..867cf23eac 100644 --- a/packages/airnode-examples/integrations/coingecko-pre-processing/config.example.json +++ b/packages/airnode-examples/integrations/coingecko-pre-processing/config.example.json @@ -83,7 +83,7 @@ "templates": [], "ois": [ { - "oisFormat": "2.2.1", + "oisFormat": "2.3.1", "title": "CoinGecko history data request", "version": "1.0.0", "apiSpecifications": { @@ -163,13 +163,11 @@ } } ], - "preProcessingSpecifications": [ - { - "environment": "Node", - "timeoutMs": 5000, - "value": "\n const rawDate = new Date(input.unixTimestamp * 1000);\n const day = rawDate.getDate().toString().padStart(2, '0');\n const month = (rawDate.getMonth() + 1).toString().padStart(2, '0'); // Months start at 0\n const year = rawDate.getFullYear();\n\n const formattedDate = day + '-' + month + '-' + year;\n const output = {...input, unixTimestamp: formattedDate};\n\n console.log(`[Pre-processing snippet]: Formatted \\${input.unixTimestamp} to \\${formattedDate}.`)\n " - } - ] + "preProcessingSpecificationV2": { + "environment": "Node", + "timeoutMs": 5000, + "value": "async ({endpointParameters}) => {\n const rawDate = new Date(endpointParameters.unixTimestamp * 1000);\n const day = rawDate.getDate().toString().padStart(2, '0');\n const month = (rawDate.getMonth() + 1).toString().padStart(2, '0'); // Months start at 0\n const year = rawDate.getFullYear();\n\n const formattedDate = day + '-' + month + '-' + year;\n const newEndpointParameters = {...endpointParameters, unixTimestamp: formattedDate};\n\n console.log(`[Pre-processing snippet]: Formatted \\${endpointParameters.unixTimestamp} to \\${formattedDate}.`)\n return {endpointParameters: newEndpointParameters};\n}" + } } ] } diff --git a/packages/airnode-examples/integrations/coingecko-pre-processing/create-config.ts b/packages/airnode-examples/integrations/coingecko-pre-processing/create-config.ts index 18d93f8e1c..7317dc7f54 100644 --- a/packages/airnode-examples/integrations/coingecko-pre-processing/create-config.ts +++ b/packages/airnode-examples/integrations/coingecko-pre-processing/create-config.ts @@ -90,7 +90,7 @@ const createConfig = async (generateExampleFile: boolean): Promise => ({ templates: [], ois: [ { - oisFormat: '2.2.1', + oisFormat: '2.3.1', title: 'CoinGecko history data request', version: '1.0.0', apiSpecifications: { @@ -170,23 +170,24 @@ const createConfig = async (generateExampleFile: boolean): Promise => ({ }, }, ], - preProcessingSpecifications: [ - { - environment: 'Node', - timeoutMs: 5000, - value: ` - const rawDate = new Date(input.unixTimestamp * 1000); - const day = rawDate.getDate().toString().padStart(2, '0'); - const month = (rawDate.getMonth() + 1).toString().padStart(2, '0'); // Months start at 0 - const year = rawDate.getFullYear(); + preProcessingSpecificationV2: { + environment: 'Node', + timeoutMs: 5000, + value: ` +async ({endpointParameters}) => { + const rawDate = new Date(endpointParameters.unixTimestamp * 1000); + const day = rawDate.getDate().toString().padStart(2, '0'); + const month = (rawDate.getMonth() + 1).toString().padStart(2, '0'); // Months start at 0 + const year = rawDate.getFullYear(); - const formattedDate = day + '-' + month + '-' + year; - const output = {...input, unixTimestamp: formattedDate}; + const formattedDate = day + '-' + month + '-' + year; + const newEndpointParameters = {...endpointParameters, unixTimestamp: formattedDate}; - console.log(\`[Pre-processing snippet]: Formatted \\\${input.unixTimestamp} to \\\${formattedDate}.\`) - `, - }, - ], + console.log(\`[Pre-processing snippet]: Formatted \\\${endpointParameters.unixTimestamp} to \\\${formattedDate}.\`) + return {endpointParameters: newEndpointParameters}; +} + `.trim(), + }, }, ], }, diff --git a/packages/airnode-examples/integrations/coingecko-template/config.example.json b/packages/airnode-examples/integrations/coingecko-template/config.example.json index 90892ad504..ee6e67cb7f 100644 --- a/packages/airnode-examples/integrations/coingecko-template/config.example.json +++ b/packages/airnode-examples/integrations/coingecko-template/config.example.json @@ -89,7 +89,7 @@ ], "ois": [ { - "oisFormat": "2.2.1", + "oisFormat": "2.3.1", "title": "CoinGecko basic request", "version": "1.0.0", "apiSpecifications": { diff --git a/packages/airnode-examples/integrations/coingecko-template/create-config.ts b/packages/airnode-examples/integrations/coingecko-template/create-config.ts index 0a50c5c98d..a941f0ce03 100644 --- a/packages/airnode-examples/integrations/coingecko-template/create-config.ts +++ b/packages/airnode-examples/integrations/coingecko-template/create-config.ts @@ -98,7 +98,7 @@ const createConfig = async (generateExampleFile: boolean): Promise => ({ ], ois: [ { - oisFormat: '2.2.1', + oisFormat: '2.3.1', title: 'CoinGecko basic request', version: '1.0.0', apiSpecifications: { diff --git a/packages/airnode-examples/integrations/coingecko/config.example.json b/packages/airnode-examples/integrations/coingecko/config.example.json index 5a3ad52dad..b528355295 100644 --- a/packages/airnode-examples/integrations/coingecko/config.example.json +++ b/packages/airnode-examples/integrations/coingecko/config.example.json @@ -83,7 +83,7 @@ "templates": [], "ois": [ { - "oisFormat": "2.2.1", + "oisFormat": "2.3.1", "title": "CoinGecko basic request", "version": "1.0.0", "apiSpecifications": { diff --git a/packages/airnode-examples/integrations/coingecko/create-config.ts b/packages/airnode-examples/integrations/coingecko/create-config.ts index 5ad404d218..8bb1117203 100644 --- a/packages/airnode-examples/integrations/coingecko/create-config.ts +++ b/packages/airnode-examples/integrations/coingecko/create-config.ts @@ -90,7 +90,7 @@ const createConfig = async (generateExampleFile: boolean): Promise => ({ templates: [], ois: [ { - oisFormat: '2.2.1', + oisFormat: '2.3.1', title: 'CoinGecko basic request', version: '1.0.0', apiSpecifications: { diff --git a/packages/airnode-examples/integrations/config-utils.ts b/packages/airnode-examples/integrations/config-utils.ts index 364c01b861..022a46377a 100644 --- a/packages/airnode-examples/integrations/config-utils.ts +++ b/packages/airnode-examples/integrations/config-utils.ts @@ -91,7 +91,7 @@ export const addAirnodeRrpV0DryRunAddress = async (config: Config) => { export const generateConfigFile = async (dirname: string, config: Config, generateExampleFile: boolean) => { const filename = generateExampleFile ? 'config.example.json' : 'config.json'; - const updatedConfig = await addAirnodeRrpV0DryRunAddress(config); + const updatedConfig = generateExampleFile ? config : await addAirnodeRrpV0DryRunAddress(config); const formattedConfig = await format(JSON.stringify(updatedConfig, null, 2), { parser: 'json', printWidth: 120 }); writeFileSync(join(dirname, filename), formattedConfig); diff --git a/packages/airnode-examples/integrations/failing-example/config.example.json b/packages/airnode-examples/integrations/failing-example/config.example.json index 1199d12035..02569a5f16 100644 --- a/packages/airnode-examples/integrations/failing-example/config.example.json +++ b/packages/airnode-examples/integrations/failing-example/config.example.json @@ -83,7 +83,7 @@ "templates": [], "ois": [ { - "oisFormat": "2.2.1", + "oisFormat": "2.3.1", "title": "Failure Example", "version": "1.0.0", "apiSpecifications": { diff --git a/packages/airnode-examples/integrations/failing-example/create-config.ts b/packages/airnode-examples/integrations/failing-example/create-config.ts index e538eeb2b6..cf103fb426 100644 --- a/packages/airnode-examples/integrations/failing-example/create-config.ts +++ b/packages/airnode-examples/integrations/failing-example/create-config.ts @@ -90,7 +90,7 @@ const createConfig = async (generateExampleFile: boolean): Promise => ({ templates: [], ois: [ { - oisFormat: '2.2.1', + oisFormat: '2.3.1', title: 'Failure Example', version: '1.0.0', apiSpecifications: { diff --git a/packages/airnode-examples/integrations/relay-security-schemes/config.example.json b/packages/airnode-examples/integrations/relay-security-schemes/config.example.json index 283008d282..83f6d98275 100644 --- a/packages/airnode-examples/integrations/relay-security-schemes/config.example.json +++ b/packages/airnode-examples/integrations/relay-security-schemes/config.example.json @@ -83,7 +83,7 @@ "templates": [], "ois": [ { - "oisFormat": "2.2.1", + "oisFormat": "2.3.1", "title": "Relay Security Schemes via httpbin", "version": "1.0.0", "apiSpecifications": { diff --git a/packages/airnode-examples/integrations/relay-security-schemes/create-config.ts b/packages/airnode-examples/integrations/relay-security-schemes/create-config.ts index 7f1d93428b..e2421abd02 100644 --- a/packages/airnode-examples/integrations/relay-security-schemes/create-config.ts +++ b/packages/airnode-examples/integrations/relay-security-schemes/create-config.ts @@ -90,7 +90,7 @@ const createConfig = async (generateExampleFile: boolean): Promise => ({ templates: [], ois: [ { - oisFormat: '2.2.1', + oisFormat: '2.3.1', title: 'Relay Security Schemes via httpbin', version: '1.0.0', apiSpecifications: { diff --git a/packages/airnode-examples/integrations/weather-multi-value/config.example.json b/packages/airnode-examples/integrations/weather-multi-value/config.example.json index a5dbcf2b1c..6d55f0b901 100644 --- a/packages/airnode-examples/integrations/weather-multi-value/config.example.json +++ b/packages/airnode-examples/integrations/weather-multi-value/config.example.json @@ -83,7 +83,7 @@ "templates": [], "ois": [ { - "oisFormat": "2.2.1", + "oisFormat": "2.3.1", "title": "OpenWeather Multiple Encoded Values", "version": "1.0.0", "apiSpecifications": { diff --git a/packages/airnode-examples/integrations/weather-multi-value/create-config.ts b/packages/airnode-examples/integrations/weather-multi-value/create-config.ts index 2d9982673c..bc57f36e69 100644 --- a/packages/airnode-examples/integrations/weather-multi-value/create-config.ts +++ b/packages/airnode-examples/integrations/weather-multi-value/create-config.ts @@ -90,7 +90,7 @@ const createConfig = async (generateExampleFile: boolean): Promise => ({ templates: [], ois: [ { - oisFormat: '2.2.1', + oisFormat: '2.3.1', title: 'OpenWeather Multiple Encoded Values', version: '1.0.0', apiSpecifications: { diff --git a/packages/airnode-node/config/config.example.json b/packages/airnode-node/config/config.example.json index d5d23b4d45..aba5e781c7 100644 --- a/packages/airnode-node/config/config.example.json +++ b/packages/airnode-node/config/config.example.json @@ -113,7 +113,7 @@ "templates": [], "ois": [ { - "oisFormat": "2.2.1", + "oisFormat": "2.3.1", "version": "1.2.3", "title": "Currency Converter API", "apiSpecifications": { diff --git a/packages/airnode-node/package.json b/packages/airnode-node/package.json index 03a905a2b1..b02f867ced 100644 --- a/packages/airnode-node/package.json +++ b/packages/airnode-node/package.json @@ -29,8 +29,8 @@ "@api3/airnode-protocol": "^0.13.0", "@api3/airnode-utilities": "^0.13.0", "@api3/airnode-validator": "^0.13.0", - "@api3/commons": "^0.3.0", - "@api3/ois": "2.2.1", + "@api3/commons": "^0.5.0", + "@api3/ois": "2.3.1", "@api3/promise-utils": "^0.4.0", "@aws-sdk/client-lambda": "^3.418.0", "date-fns": "^2.30.0", @@ -40,7 +40,7 @@ "google-auth-library": "^9.0.0", "lodash": "^4.17.21", "yargs": "^17.7.2", - "zod": "^3.22.3" + "zod": "^3.22.4" }, "devDependencies": { "@api3/airnode-operation": "^0.13.0", diff --git a/packages/airnode-node/src/api/index.ts b/packages/airnode-node/src/api/index.ts index f180868d43..eadf2e0e85 100644 --- a/packages/airnode-node/src/api/index.ts +++ b/packages/airnode-node/src/api/index.ts @@ -1,7 +1,7 @@ import * as adapter from '@api3/airnode-adapter'; import isEmpty from 'lodash/isEmpty'; import { RESERVED_PARAMETERS } from '@api3/ois'; -import { preProcessApiCallParameters, postProcessApiCallResponse } from '@api3/commons'; +import { preProcessEndpointParameters, postProcessResponse } from '@api3/commons'; import { logger, removeKeys, removeKey } from '@api3/airnode-utilities'; import { go, goSync } from '@api3/promise-utils'; import axios, { AxiosError } from 'axios'; @@ -223,7 +223,7 @@ export async function processSuccessfulApiCall( const { _type, _path, _times, _gasPrice } = getReservedParameters(endpoint, parameters); const goPostProcessApiSpecifications = await go(() => - postProcessApiCallResponse(rawResponse.data, endpoint, aggregatedApiCall.parameters, { + postProcessResponse(rawResponse.data, endpoint, aggregatedApiCall.parameters, { totalTimeoutMs: PROCESSING_TIMEOUT, }) ); @@ -231,9 +231,10 @@ export async function processSuccessfulApiCall( const log = logger.pend('ERROR', goPostProcessApiSpecifications.error.message); return [[log], { success: false, errorMessage: goPostProcessApiSpecifications.error.message }]; } + const postProcessedData = goPostProcessApiSpecifications.data; const goExtractAndEncodeResponse = goSync(() => - adapter.extractAndEncodeResponse(goPostProcessApiSpecifications.data, { + adapter.extractAndEncodeResponse(postProcessedData.response, { _type, _path, _times, @@ -273,7 +274,7 @@ export async function processSuccessfulApiCall( ]; } case 'http-signed-data-gateway': { - const timestamp = Math.floor(Date.now() / 1000).toString(); + const timestamp = (postProcessedData.timestamp ?? Math.floor(Date.now() / 1000)).toString(); const goSignWithTemplateId = await go(() => signWithTemplateId(aggregatedApiCall.templateId, timestamp, response.encodedValue) ); @@ -302,26 +303,21 @@ export async function callApi(payload: ApiCallPayload): Promise o.title === payload.aggregatedApiCall.oisTitle)!; const endpoint = ois.endpoints.find((e) => e.name === payload.aggregatedApiCall.endpointName)!; - const processedParameters = await preProcessApiCallParameters(endpoint, parameters, { + const { endpointParameters: processedEndpointParameters } = await preProcessEndpointParameters(endpoint, parameters, { totalTimeoutMs: PROCESSING_TIMEOUT, }); - // skip API call if operation is undefined and fixedOperationParameters is empty array + // Skip API call if operation is undefined and fixedOperationParameters is empty array. We can be sure that there is + // at least one processing specification defined (either v1 or v2) because it is verified by the OIS schema. if (!endpoint.operation && isEmpty(endpoint.fixedOperationParameters)) { - // contents of preProcessingSpecifications or postProcessingSpecifications (or both) will simulate an API when API call is skipped - if (isEmpty(endpoint.preProcessingSpecifications) && isEmpty(endpoint.postProcessingSpecifications)) { - const message = `Failed to skip API call. Ensure at least one of 'preProcessingSpecifications' or 'postProcessingSpecifications' is defined and is not an empty array at ois '${payload.aggregatedApiCall.oisTitle}', endpoint '${payload.aggregatedApiCall.endpointName}'.`; - const log = logger.pend('ERROR', message); - return [[log], { success: false, errorMessage: message }]; - } - // output of preProcessingSpecifications can be used as output directly or - // preProcessingSpecifications can be used to manipulate parameters to use in postProcessingSpecifications - return processSuccessfulApiCall(payload, { data: processedParameters }); + // The pre-processing output can be used as output directly or it can be used to manipulate parameters to use in + // post-processing. + return processSuccessfulApiCall(payload, { data: processedEndpointParameters }); } const [logs, response] = await performApiCall({ ...payload, - aggregatedApiCall: { ...payload.aggregatedApiCall, parameters: processedParameters }, + aggregatedApiCall: { ...payload.aggregatedApiCall, parameters: processedEndpointParameters }, } as ApiCallPayload); if (isPerformApiCallFailure(response)) { return [logs, response]; diff --git a/packages/airnode-node/src/cli/http-signed-data-invoke.ts b/packages/airnode-node/src/cli/http-signed-data-invoke.ts index c57855337c..4fec47dabf 100644 --- a/packages/airnode-node/src/cli/http-signed-data-invoke.ts +++ b/packages/airnode-node/src/cli/http-signed-data-invoke.ts @@ -29,10 +29,6 @@ yargs(hideBin(process.argv)) async (args) => { logger.log(`Invoke HTTP signed data handler`); const config = loadTrustedConfig(path.resolve(`${__dirname}/../../config/config.json`), process.env); - const parameters = JSON.parse(args.encodedParameters); - if (!parameters) { - throw new Error('Missing request parameters'); - } logger.log( JSON.stringify(await processHttpSignedDataRequest(config, args['endpoint-id'], args['encoded-parameters'])) ); diff --git a/packages/airnode-node/test/fixtures/config/config.valid.json b/packages/airnode-node/test/fixtures/config/config.valid.json index a3e3bf015a..76d1afc72e 100644 --- a/packages/airnode-node/test/fixtures/config/config.valid.json +++ b/packages/airnode-node/test/fixtures/config/config.valid.json @@ -84,7 +84,7 @@ "templates": [], "ois": [ { - "oisFormat": "2.2.1", + "oisFormat": "2.3.1", "title": "CoinGecko basic request", "version": "1.0.0", "apiSpecifications": { diff --git a/packages/airnode-node/test/fixtures/config/ois.ts b/packages/airnode-node/test/fixtures/config/ois.ts index 732d2df325..5bc67a9221 100644 --- a/packages/airnode-node/test/fixtures/config/ois.ts +++ b/packages/airnode-node/test/fixtures/config/ois.ts @@ -2,7 +2,7 @@ import { OIS } from '@api3/ois'; export function buildOIS(ois?: Partial): OIS { return { - oisFormat: '2.2.1', + oisFormat: '2.3.1', version: '1.2.3', title: 'Currency Converter API', apiSpecifications: { diff --git a/packages/airnode-validator/package.json b/packages/airnode-validator/package.json index bbae351a95..7a17d4de55 100644 --- a/packages/airnode-validator/package.json +++ b/packages/airnode-validator/package.json @@ -22,14 +22,14 @@ }, "dependencies": { "@api3/airnode-protocol": "^0.13.0", - "@api3/ois": "2.2.1", + "@api3/ois": "2.3.1", "@api3/promise-utils": "^0.4.0", "dotenv": "^16.3.1", "ethers": "^5.7.2", "lodash": "^4.17.21", "ora": "^5.4.1", "yargs": "^17.7.2", - "zod": "^3.22.3" + "zod": "^3.22.4" }, "devDependencies": { "@types/yargs": "^17.0.29", diff --git a/packages/airnode-validator/test/fixtures/config.valid.json b/packages/airnode-validator/test/fixtures/config.valid.json index 8f8a2b8487..dbbe451078 100644 --- a/packages/airnode-validator/test/fixtures/config.valid.json +++ b/packages/airnode-validator/test/fixtures/config.valid.json @@ -102,7 +102,7 @@ "templates": [], "ois": [ { - "oisFormat": "2.2.1", + "oisFormat": "2.3.1", "title": "CoinGecko basic request", "version": "1.0.0", "apiSpecifications": { diff --git a/packages/airnode-validator/test/fixtures/interpolated-config.valid.json b/packages/airnode-validator/test/fixtures/interpolated-config.valid.json index a6cab8beaa..517d1e7c1d 100644 --- a/packages/airnode-validator/test/fixtures/interpolated-config.valid.json +++ b/packages/airnode-validator/test/fixtures/interpolated-config.valid.json @@ -106,7 +106,7 @@ "templates": [], "ois": [ { - "oisFormat": "2.2.1", + "oisFormat": "2.3.1", "title": "CoinGecko basic request", "version": "1.0.0", "apiSpecifications": { diff --git a/packages/airnode-validator/test/fixtures/invalid-secret-name/config.json b/packages/airnode-validator/test/fixtures/invalid-secret-name/config.json index 55a05d5e52..d84c19e70a 100644 --- a/packages/airnode-validator/test/fixtures/invalid-secret-name/config.json +++ b/packages/airnode-validator/test/fixtures/invalid-secret-name/config.json @@ -72,7 +72,7 @@ "templates": [], "ois": [ { - "oisFormat": "2.2.1", + "oisFormat": "2.3.1", "title": "CoinGecko basic request", "version": "1.0.0", "apiSpecifications": { diff --git a/packages/airnode-validator/test/fixtures/ois.json b/packages/airnode-validator/test/fixtures/ois.json index 3f149d4d84..664de169d6 100644 --- a/packages/airnode-validator/test/fixtures/ois.json +++ b/packages/airnode-validator/test/fixtures/ois.json @@ -1,5 +1,5 @@ { - "oisFormat": "2.2.1", + "oisFormat": "2.3.1", "version": "1.2.3", "title": "coinlayer", "apiSpecifications": { diff --git a/scripts/update-ois-version.ts b/scripts/update-ois-version.ts index 60d0e9d8bb..1b116e07e2 100644 --- a/scripts/update-ois-version.ts +++ b/scripts/update-ois-version.ts @@ -19,7 +19,7 @@ if (versions.length > 1) { if (versions.length === 0) { throw new Error(`No version of @api3/ois found in packages`); } -const packageVersion = versions[0]; +const packageVersion = versions[0].replace('^', ''); const oisJsonPatterns = ['./packages/**/*config*.json', './packages/**/ois.json']; oisJsonPatterns.forEach((pattern) => { diff --git a/yarn.lock b/yarn.lock index b462b12b2e..f5bdf52a76 100644 --- a/yarn.lock +++ b/yarn.lock @@ -35,12 +35,12 @@ viem "^1.18.2" zod "^3.22.4" -"@api3/commons@^0.3.0": - version "0.3.0" - resolved "https://registry.npmjs.org/@api3/commons/-/commons-0.3.0.tgz#846dace14f8c1abed5df1a3e5415e8b3a28cfa21" - integrity sha512-27+UkW0qCWvQCJuO8vbyBhJ94IXELKhqCKjFxC5ZUQrJHRHWT4zz2wmdbsvgUHBZhuAuFPaz/78yjMCjzJ6S8Q== +"@api3/commons@^0.5.0": + version "0.5.0" + resolved "https://registry.npmjs.org/@api3/commons/-/commons-0.5.0.tgz#d9ff9aba3a2da8cd7b678371550881e008c43a1c" + integrity sha512-PqSukqnAGQORuGTSLaQiVuxUtU5RBNOhm5GEnX0fhROhoKyX11E5EJuuQqYwIG4LsBkhVGNJuR7PhnUs6VmwrA== dependencies: - "@api3/ois" "^2.2.1" + "@api3/ois" "^2.3.0" "@api3/promise-utils" "^0.4.0" "@typescript-eslint/eslint-plugin" "^6.2.1" "@typescript-eslint/parser" "^6.2.1" @@ -58,17 +58,27 @@ eslint-plugin-react "^7.32.1" eslint-plugin-react-hooks "^4.6.0" eslint-plugin-unicorn "^48.0.1" + ethers "^5.7.2" lodash "^4.17.21" winston "^3.10.0" winston-console-format "^1.0.8" + zod "^3.22.4" -"@api3/ois@2.2.1", "@api3/ois@^2.2.1": - version "2.2.1" - resolved "https://registry.yarnpkg.com/@api3/ois/-/ois-2.2.1.tgz#caa5c672c51b5572cf9bb30226a0647b3a51a57d" - integrity sha512-C4tSMBccDlD8NkZMVATQXOKctI46fSOlzpbZmZoFknsIdYfQvGNU49StGRJZ6fJJkwXEX1TlkRC7rY2yHEJjqw== +"@api3/ois@2.3.1": + version "2.3.1" + resolved "https://registry.npmjs.org/@api3/ois/-/ois-2.3.1.tgz#de80dc1b404f094be9049d2a8fdc0362cdfd7dce" + integrity sha512-7TmgEiJn3TrqV2BZGh4fKTF4qX7Q/dyGdQh9L6gj4dHBmoKzfK0eDbwjWR+RokYrd9k4E4whGNxEnzdZr3ubSA== dependencies: lodash "^4.17.21" - zod "^3.22.3" + zod "^3.22.4" + +"@api3/ois@^2.3.0": + version "2.3.0" + resolved "https://registry.npmjs.org/@api3/ois/-/ois-2.3.0.tgz#f5407eab380396c70031a82b4d9e188200082474" + integrity sha512-B/F9sirQLBZNGClnpK/U585/gqYvjEHNKR5Xgc92LTvPe6F8w9RSW3JNZo4qAc+7Tzly9xr6kmoWQJsgnwD9iQ== + dependencies: + lodash "^4.17.21" + zod "^3.22.4" "@api3/promise-utils@^0.4.0": version "0.4.0" @@ -963,10 +973,10 @@ dependencies: regenerator-runtime "^0.14.0" -"@babel/runtime@^7.20.7": - version "7.23.2" - resolved "https://registry.npmjs.org/@babel/runtime/-/runtime-7.23.2.tgz#062b0ac103261d68a966c4c7baf2ae3e62ec3885" - integrity sha512-mM8eg4yl5D6i3lu2QKPuPH4FArvJ8KhTofbE7jwMUv9KX5mBvwPAqnV3MlyBNqdp9RyRKP6Yck8TrfYrPvX3bg== +"@babel/runtime@^7.23.2": + version "7.23.4" + resolved "https://registry.npmjs.org/@babel/runtime/-/runtime-7.23.4.tgz#36fa1d2b36db873d25ec631dcc4923fdc1cf2e2e" + integrity sha512-2Yv65nlWnWlSpe3fXEyX5i7fx5kIKo4Qbcj+hMO0odwaneFjfXw5fdum+4yL20O0QiaHpia0cYQ9xpNMqrBwHg== dependencies: regenerator-runtime "^0.14.0" @@ -1416,9 +1426,9 @@ integrity sha512-pPTNuaAG3QMH+buKyBIGJs3g/S5y0caxw0ygM3YyE6yJFySwiGGSzA+mM3KJ8QQvzeLh3blwgSonkFjgQdxzMw== "@eslint-community/regexpp@^4.5.1": - version "4.9.1" - resolved "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.9.1.tgz#449dfa81a57a1d755b09aa58d826c1262e4283b4" - integrity sha512-Y27x+MBLjXa+0JWDhykM3+JE+il3kHKAEqabfEWq3SDhZjLYb6/BHL/JKFnH3fe207JaXkyDo685Oc2Glt6ifA== + version "4.10.0" + resolved "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.10.0.tgz#548f6de556857c8bb73bbee70c35dc82a2e74d63" + integrity sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA== "@eslint/eslintrc@^2.1.2": version "2.1.2" @@ -2511,10 +2521,10 @@ tweetnacl "^1.0.3" tweetnacl-util "^0.15.1" -"@next/eslint-plugin-next@13.5.5": - version "13.5.5" - resolved "https://registry.npmjs.org/@next/eslint-plugin-next/-/eslint-plugin-next-13.5.5.tgz#b3418135efbfa04d64c2c54f93d09c5ea4de4610" - integrity sha512-S/32s4S+SCOpW58lHKdmILAAPRdnsSei7Y3L1oZSoe5Eh0QSlzbG1nYyIpnpwWgz3T7qe3imdq7cJ6Hf29epRA== +"@next/eslint-plugin-next@13.5.6": + version "13.5.6" + resolved "https://registry.npmjs.org/@next/eslint-plugin-next/-/eslint-plugin-next-13.5.6.tgz#cf279b94ddc7de49af8e8957f0c3b7349bc489bf" + integrity sha512-ng7pU/DDsxPgT6ZPvuprxrkeew3XaRf4LAT4FabaEO/hAbvVx4P7wqnqdbTdDn1kgTvsI4tpIgT4Awn/m0bGbg== dependencies: glob "7.1.7" @@ -3263,9 +3273,9 @@ url "^0.11.0" "@rushstack/eslint-patch@^1.3.3": - version "1.5.1" - resolved "https://registry.npmjs.org/@rushstack/eslint-patch/-/eslint-patch-1.5.1.tgz#5f1b518ec5fa54437c0b7c4a821546c64fed6922" - integrity sha512-6i/8UoL0P5y4leBIGzvkZdS85RDMG9y1ihZzmTZQ5LdHUYmZ7pKFoj8X0236s3lusPs1Fa5HTQUpwI+UfTcmeA== + version "1.6.0" + resolved "https://registry.npmjs.org/@rushstack/eslint-patch/-/eslint-patch-1.6.0.tgz#1898e7a7b943680d757417a47fb10f5fcc230b39" + integrity sha512-2/U3GXA6YiPYQDLGwtGlnNgKYBSwCFIHf8Y9LUY5VATHdtbLlU0Y1R3QoBnT0aB4qv/BEiVVsj7LJXoQCgJ2vA== "@scure/base@~1.1.0": version "1.1.1" @@ -4384,9 +4394,9 @@ integrity sha512-Hr5Jfhc9eYOQNPYO5WLDq/n4jqijdHNlDXjuAQkkt+mWdQR+XJToOHrsD4cPaMXpn6KO7y2+wM8AZEs8VpBLVA== "@types/json-schema@^7.0.12": - version "7.0.13" - resolved "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.13.tgz#02c24f4363176d2d18fc8b70b9f3c54aba178a85" - integrity sha512-RbSSoHliUbnXj3ny0CNFOoxrIDV6SUGyStHsvDqosw6CkdPV8TtWGlfecuK4ToyMEAql6pzNxgCFKanovUzlgQ== + version "7.0.15" + resolved "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz#596a1747233694d50f6ad8a7869fcb6f56cf5841" + integrity sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA== "@types/json5@^0.0.29": version "0.0.29" @@ -4601,9 +4611,9 @@ integrity sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw== "@types/triple-beam@^1.3.2": - version "1.3.3" - resolved "https://registry.npmjs.org/@types/triple-beam/-/triple-beam-1.3.3.tgz#726ae98a5f6418c8f24f9b0f2a9f81a8664876ae" - integrity sha512-6tOUG+nVHn0cJbVp25JFayS5UE6+xlbcNF9Lo9mU7U0zk3zeUShZied4YEQZjy1JBF043FSkdXw8YkUJuVtB5g== + version "1.3.5" + resolved "https://registry.npmjs.org/@types/triple-beam/-/triple-beam-1.3.5.tgz#74fef9ffbaa198eb8b588be029f38b00299caa2c" + integrity sha512-6WaYesThRMCl19iryMYP7/x2OVgCtbIVflDGFpWnb9irXI3UjYE4AzmYuiUKY1AJstGijoY+MgUszMgRxIYTYw== "@types/ws@*": version "8.5.5" @@ -4648,15 +4658,15 @@ tsutils "^3.21.0" "@typescript-eslint/eslint-plugin@^6.2.1": - version "6.8.0" - resolved "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.8.0.tgz#06abe4265e7c82f20ade2dcc0e3403c32d4f148b" - integrity sha512-GosF4238Tkes2SHPQ1i8f6rMtG6zlKwMEB0abqSJ3Npvos+doIlc/ATG+vX1G9coDF3Ex78zM3heXHLyWEwLUw== + version "6.12.0" + resolved "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.12.0.tgz#2a647d278bb48bf397fef07ba0507612ff9dd812" + integrity sha512-XOpZ3IyJUIV1b15M7HVOpgQxPPF7lGXgsfcEIu3yDxFPaf/xZKt7s9QO/pbk7vpWQyVulpJbu4E5LwpZiQo4kA== dependencies: "@eslint-community/regexpp" "^4.5.1" - "@typescript-eslint/scope-manager" "6.8.0" - "@typescript-eslint/type-utils" "6.8.0" - "@typescript-eslint/utils" "6.8.0" - "@typescript-eslint/visitor-keys" "6.8.0" + "@typescript-eslint/scope-manager" "6.12.0" + "@typescript-eslint/type-utils" "6.12.0" + "@typescript-eslint/utils" "6.12.0" + "@typescript-eslint/visitor-keys" "6.12.0" debug "^4.3.4" graphemer "^1.4.0" ignore "^5.2.4" @@ -4665,14 +4675,14 @@ ts-api-utils "^1.0.1" "@typescript-eslint/parser@^5.4.2 || ^6.0.0", "@typescript-eslint/parser@^6.2.1": - version "6.8.0" - resolved "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.8.0.tgz#bb2a969d583db242f1ee64467542f8b05c2e28cb" - integrity sha512-5tNs6Bw0j6BdWuP8Fx+VH4G9fEPDxnVI7yH1IAPkQH5RUtvKwRoqdecAPdQXv4rSOADAaz1LFBZvZG7VbXivSg== - dependencies: - "@typescript-eslint/scope-manager" "6.8.0" - "@typescript-eslint/types" "6.8.0" - "@typescript-eslint/typescript-estree" "6.8.0" - "@typescript-eslint/visitor-keys" "6.8.0" + version "6.12.0" + resolved "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.12.0.tgz#9fb21ed7d88065a4a2ee21eb80b8578debb8217c" + integrity sha512-s8/jNFPKPNRmXEnNXfuo1gemBdVmpQsK1pcu+QIvuNJuhFzGrpD7WjOcvDc/+uEdfzSYpNu7U/+MmbScjoQ6vg== + dependencies: + "@typescript-eslint/scope-manager" "6.12.0" + "@typescript-eslint/types" "6.12.0" + "@typescript-eslint/typescript-estree" "6.12.0" + "@typescript-eslint/visitor-keys" "6.12.0" debug "^4.3.4" "@typescript-eslint/parser@^5.62.0": @@ -4693,13 +4703,13 @@ "@typescript-eslint/types" "5.62.0" "@typescript-eslint/visitor-keys" "5.62.0" -"@typescript-eslint/scope-manager@6.8.0": - version "6.8.0" - resolved "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.8.0.tgz#5cac7977385cde068ab30686889dd59879811efd" - integrity sha512-xe0HNBVwCph7rak+ZHcFD6A+q50SMsFwcmfdjs9Kz4qDh5hWhaPhFjRs/SODEhroBI5Ruyvyz9LfwUJ624O40g== +"@typescript-eslint/scope-manager@6.12.0": + version "6.12.0" + resolved "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.12.0.tgz#5833a16dbe19cfbad639d4d33bcca5e755c7044b" + integrity sha512-5gUvjg+XdSj8pcetdL9eXJzQNTl3RD7LgUiYTl8Aabdi8hFkaGSYnaS6BLc0BGNaDH+tVzVwmKtWvu0jLgWVbw== dependencies: - "@typescript-eslint/types" "6.8.0" - "@typescript-eslint/visitor-keys" "6.8.0" + "@typescript-eslint/types" "6.12.0" + "@typescript-eslint/visitor-keys" "6.12.0" "@typescript-eslint/type-utils@5.62.0", "@typescript-eslint/type-utils@^5.50.0", "@typescript-eslint/type-utils@^5.55.0": version "5.62.0" @@ -4711,13 +4721,13 @@ debug "^4.3.4" tsutils "^3.21.0" -"@typescript-eslint/type-utils@6.8.0", "@typescript-eslint/type-utils@^6.0.0": - version "6.8.0" - resolved "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.8.0.tgz#50365e44918ca0fd159844b5d6ea96789731e11f" - integrity sha512-RYOJdlkTJIXW7GSldUIHqc/Hkto8E+fZN96dMIFhuTJcQwdRoGN2rEWA8U6oXbLo0qufH7NPElUb+MceHtz54g== +"@typescript-eslint/type-utils@6.12.0", "@typescript-eslint/type-utils@^6.0.0": + version "6.12.0" + resolved "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.12.0.tgz#968f7c95162808d69950ab5dff710ad730e58287" + integrity sha512-WWmRXxhm1X8Wlquj+MhsAG4dU/Blvf1xDgGaYCzfvStP2NwPQh6KBvCDbiOEvaE0filhranjIlK/2fSTVwtBng== dependencies: - "@typescript-eslint/typescript-estree" "6.8.0" - "@typescript-eslint/utils" "6.8.0" + "@typescript-eslint/typescript-estree" "6.12.0" + "@typescript-eslint/utils" "6.12.0" debug "^4.3.4" ts-api-utils "^1.0.1" @@ -4726,10 +4736,10 @@ resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.62.0.tgz#258607e60effa309f067608931c3df6fed41fd2f" integrity sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ== -"@typescript-eslint/types@6.8.0": - version "6.8.0" - resolved "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.8.0.tgz#1ab5d4fe1d613e3f65f6684026ade6b94f7e3ded" - integrity sha512-p5qOxSum7W3k+llc7owEStXlGmSl8FcGvhYt8Vjy7FqEnmkCVlM3P57XQEGj58oqaBWDQXbJDZxwUWMS/EAPNQ== +"@typescript-eslint/types@6.12.0": + version "6.12.0" + resolved "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.12.0.tgz#ffc5297bcfe77003c8b7b545b51c2505748314ac" + integrity sha512-MA16p/+WxM5JG/F3RTpRIcuOghWO30//VEOvzubM8zuOOBYXsP+IfjoCXXiIfy2Ta8FRh9+IO9QLlaFQUU+10Q== "@typescript-eslint/typescript-estree@5.62.0": version "5.62.0" @@ -4744,13 +4754,13 @@ semver "^7.3.7" tsutils "^3.21.0" -"@typescript-eslint/typescript-estree@6.8.0": - version "6.8.0" - resolved "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.8.0.tgz#9565f15e0cd12f55cf5aa0dfb130a6cb0d436ba1" - integrity sha512-ISgV0lQ8XgW+mvv5My/+iTUdRmGspducmQcDw5JxznasXNnZn3SKNrTRuMsEXv+V/O+Lw9AGcQCfVaOPCAk/Zg== +"@typescript-eslint/typescript-estree@6.12.0": + version "6.12.0" + resolved "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.12.0.tgz#764ccc32598549e5b48ec99e3b85f89b1385310c" + integrity sha512-vw9E2P9+3UUWzhgjyyVczLWxZ3GuQNT7QpnIY3o5OMeLO/c8oHljGc8ZpryBMIyympiAAaKgw9e5Hl9dCWFOYw== dependencies: - "@typescript-eslint/types" "6.8.0" - "@typescript-eslint/visitor-keys" "6.8.0" + "@typescript-eslint/types" "6.12.0" + "@typescript-eslint/visitor-keys" "6.12.0" debug "^4.3.4" globby "^11.1.0" is-glob "^4.0.3" @@ -4771,17 +4781,17 @@ eslint-scope "^5.1.1" semver "^7.3.7" -"@typescript-eslint/utils@6.8.0", "@typescript-eslint/utils@^6.0.0", "@typescript-eslint/utils@^6.2.0": - version "6.8.0" - resolved "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.8.0.tgz#d42939c2074c6b59844d0982ce26a51d136c4029" - integrity sha512-dKs1itdE2qFG4jr0dlYLQVppqTE+Itt7GmIf/vX6CSvsW+3ov8PbWauVKyyfNngokhIO9sKZeRGCUo1+N7U98Q== +"@typescript-eslint/utils@6.12.0", "@typescript-eslint/utils@^6.0.0", "@typescript-eslint/utils@^6.2.0": + version "6.12.0" + resolved "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.12.0.tgz#c6ce8c06fe9b0212620e5674a2036f6f8f611754" + integrity sha512-LywPm8h3tGEbgfyjYnu3dauZ0U7R60m+miXgKcZS8c7QALO9uWJdvNoP+duKTk2XMWc7/Q3d/QiCuLN9X6SWyQ== dependencies: "@eslint-community/eslint-utils" "^4.4.0" "@types/json-schema" "^7.0.12" "@types/semver" "^7.5.0" - "@typescript-eslint/scope-manager" "6.8.0" - "@typescript-eslint/types" "6.8.0" - "@typescript-eslint/typescript-estree" "6.8.0" + "@typescript-eslint/scope-manager" "6.12.0" + "@typescript-eslint/types" "6.12.0" + "@typescript-eslint/typescript-estree" "6.12.0" semver "^7.5.4" "@typescript-eslint/visitor-keys@5.62.0": @@ -4792,12 +4802,12 @@ "@typescript-eslint/types" "5.62.0" eslint-visitor-keys "^3.3.0" -"@typescript-eslint/visitor-keys@6.8.0": - version "6.8.0" - resolved "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.8.0.tgz#cffebed56ae99c45eba901c378a6447b06be58b8" - integrity sha512-oqAnbA7c+pgOhW2OhGvxm0t1BULX5peQI/rLsNDpGM78EebV3C9IGbX5HNZabuZ6UQrYveCLjKo8Iy/lLlBkkg== +"@typescript-eslint/visitor-keys@6.12.0": + version "6.12.0" + resolved "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.12.0.tgz#5877950de42a0f3344261b7a1eee15417306d7e9" + integrity sha512-rg3BizTZHF1k3ipn8gfrzDXXSFKyOEB5zxYXInQ6z0hUvmQlhaZQzK+YmHmNViMA9HzW5Q9+bPPt90bU6GQwyw== dependencies: - "@typescript-eslint/types" "6.8.0" + "@typescript-eslint/types" "6.12.0" eslint-visitor-keys "^3.4.1" "@ungap/structured-clone@^1.2.0": @@ -5298,7 +5308,7 @@ argparse@^2.0.1: resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== -aria-query@^5.1.3: +aria-query@^5.3.0: version "5.3.0" resolved "https://registry.npmjs.org/aria-query/-/aria-query-5.3.0.tgz#650c569e41ad90b51b3d7df5e5eed1c7549c103e" integrity sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A== @@ -5338,18 +5348,7 @@ array-ify@^1.0.0: resolved "https://registry.yarnpkg.com/array-ify/-/array-ify-1.0.0.tgz#9e528762b4a9066ad163a6962a364418e9626ece" integrity sha512-c5AMf34bKdvPhQ7tBGhqkgKNUzMr4WUs+WDtC2ZUGOUncbxKMTvqxYctiseW3+L4bA8ec+GcZ6/A/FW4m8ukng== -array-includes@^3.1.6: - version "3.1.6" - resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.6.tgz#9e9e720e194f198266ba9e18c29e6a9b0e4b225f" - integrity sha512-sgTbLvL6cNnw24FnbaDyjmvddQ2ML8arZsgaJhoABMoplz/4QRhtrYS+alr1BUM1Bwp6dhx8vVCBSLG+StwOFw== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.4" - es-abstract "^1.20.4" - get-intrinsic "^1.1.3" - is-string "^1.0.7" - -array-includes@^3.1.7: +array-includes@^3.1.6, array-includes@^3.1.7: version "3.1.7" resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.7.tgz#8cd2e01b26f7a3086cbc87271593fe921c62abda" integrity sha512-dlcsNBIiWhPkHdOEEKnehA+RNUWDc4UqFtnIXU4uuYDPtA4LDkr7qip2p0VvFAEXNDr0yWZ9PJyIRiGjRLQzwQ== @@ -5375,17 +5374,6 @@ array-uniq@1.0.3: resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6" integrity sha512-MNha4BWQ6JbwhFhj03YK552f7cb3AzoE8SzeljgChvL1dl3IcvggXVz1DilzySZkCja+CXuZbdW7yATchWn8/Q== -array.prototype.findlastindex@^1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.2.tgz#bc229aef98f6bd0533a2bc61ff95209875526c9b" - integrity sha512-tb5thFFlUcp7NdNF6/MpDk/1r/4awWG1FIz3YqDf+/zJSTezBb+/5WViH41obXULHVpDzoiCLpJ/ZO9YbJMsdw== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.4" - es-abstract "^1.20.4" - es-shim-unscopables "^1.0.0" - get-intrinsic "^1.1.3" - array.prototype.findlastindex@^1.2.3: version "1.2.3" resolved "https://registry.yarnpkg.com/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.3.tgz#b37598438f97b579166940814e2c0493a4f50207" @@ -5397,7 +5385,7 @@ array.prototype.findlastindex@^1.2.3: es-shim-unscopables "^1.0.0" get-intrinsic "^1.2.1" -array.prototype.flat@^1.2.3, array.prototype.flat@^1.3.1: +array.prototype.flat@^1.2.3: version "1.3.1" resolved "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.3.1.tgz#ffc6576a7ca3efc2f46a143b9d1dda9b4b3cf5e2" integrity sha512-roTU0KWIOmJ4DRLmwKd19Otg0/mT3qPNt0Qb3GWW8iObuZXxrjB/pzn0R3hqpRSWg4HCwqx+0vwOnWnvlOyeIA== @@ -5407,7 +5395,7 @@ array.prototype.flat@^1.2.3, array.prototype.flat@^1.3.1: es-abstract "^1.20.4" es-shim-unscopables "^1.0.0" -array.prototype.flat@^1.3.2: +array.prototype.flat@^1.3.1, array.prototype.flat@^1.3.2: version "1.3.2" resolved "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.3.2.tgz#1476217df8cff17d72ee8f3ba06738db5b387d18" integrity sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA== @@ -5417,17 +5405,7 @@ array.prototype.flat@^1.3.2: es-abstract "^1.22.1" es-shim-unscopables "^1.0.0" -array.prototype.flatmap@^1.3.1: - version "1.3.1" - resolved "https://registry.yarnpkg.com/array.prototype.flatmap/-/array.prototype.flatmap-1.3.1.tgz#1aae7903c2100433cb8261cd4ed310aab5c4a183" - integrity sha512-8UGn9O1FDVvMNB0UlLv4voxRMze7+FpHyF5mSMRjWHUMlpoDViniy05870VlxhfgTnLbpuwTzvD76MTtWxB/mQ== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.4" - es-abstract "^1.20.4" - es-shim-unscopables "^1.0.0" - -array.prototype.flatmap@^1.3.2: +array.prototype.flatmap@^1.3.1, array.prototype.flatmap@^1.3.2: version "1.3.2" resolved "https://registry.yarnpkg.com/array.prototype.flatmap/-/array.prototype.flatmap-1.3.2.tgz#c9a7c6831db8e719d6ce639190146c24bbd3e527" integrity sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ== @@ -5521,10 +5499,10 @@ ast-parents@^0.0.1: resolved "https://registry.yarnpkg.com/ast-parents/-/ast-parents-0.0.1.tgz#508fd0f05d0c48775d9eccda2e174423261e8dd3" integrity sha512-XHusKxKz3zoYk1ic8Un640joHbFMhbqneyoZfoKnEGtf2ey9Uh/IdpcQplODdO/kENaMIWsD0nJm4+wX3UNLHA== -ast-types-flow@^0.0.7: - version "0.0.7" - resolved "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.7.tgz#f70b735c6bca1a5c9c22d982c3e39e7feba3bdad" - integrity sha512-eBvWn1lvIApYMhzQMsu9ciLfkBY499mFZlNqG+/9WR7PVlroQw0vG30cOQQbaKz3sCEc44TAOu2ykzqXSNnwag== +ast-types-flow@^0.0.8: + version "0.0.8" + resolved "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.8.tgz#0a85e1c92695769ac13a428bb653e7538bea27d6" + integrity sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ== ast-types@^0.13.4: version "0.13.4" @@ -5634,10 +5612,10 @@ aws4@^1.8.0: resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.12.0.tgz#ce1c9d143389679e253b314241ea9aa5cec980d3" integrity sha512-NmWvPnx0F1SfrQbYwOi7OeaNGokp9XhzNioJ/CSBs8Qa4vxug81mhJEAVZwxXuBmYB5KDRfMq/F3RR0BIU7sWg== -axe-core@^4.6.2: - version "4.8.2" - resolved "https://registry.npmjs.org/axe-core/-/axe-core-4.8.2.tgz#2f6f3cde40935825cf4465e3c1c9e77b240ff6ae" - integrity sha512-/dlp0fxyM3R8YW7MFzaHWXrf4zzbr0vaYb23VBFCl83R7nWNPg/yaQw2Dc8jzCMmDVLhSdzH8MjrsuIUuvX+6g== +axe-core@=4.7.0: + version "4.7.0" + resolved "https://registry.npmjs.org/axe-core/-/axe-core-4.7.0.tgz#34ba5a48a8b564f67e103f0aa5768d76e15bbbbf" + integrity sha512-M0JtH+hlOL5pLQwHOLNYZaXuhqmvS8oExsqB1SBYgA4Dk7u/xx+YdGHXaK5pyUfed5mYXdlYiphWq3G8cRi5JQ== axios@^0.21.0, axios@^0.21.1: version "0.21.4" @@ -5680,7 +5658,7 @@ axios@^1.6.0: form-data "^4.0.0" proxy-from-env "^1.1.0" -axobject-query@^3.1.1: +axobject-query@^3.2.1: version "3.2.1" resolved "https://registry.npmjs.org/axobject-query/-/axobject-query-3.2.1.tgz#39c378a6e3b06ca679f29138151e45b2b32da62a" integrity sha512-jsyHu61e6N4Vbz/v18DHwWYKK0bSWLqn47eeDSKPB7m8tqMHF9YJ+mhIk2lVteyZrY8tnSj/jHOv4YiTCuCJgg== @@ -6121,6 +6099,15 @@ call-bind@^1.0.0, call-bind@^1.0.2: function-bind "^1.1.1" get-intrinsic "^1.0.2" +call-bind@^1.0.4: + version "1.0.5" + resolved "https://registry.npmjs.org/call-bind/-/call-bind-1.0.5.tgz#6fa2b7845ce0ea49bf4d8b9ef64727a2c2e2e513" + integrity sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ== + dependencies: + function-bind "^1.1.2" + get-intrinsic "^1.2.1" + set-function-length "^1.1.1" + callsites@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" @@ -7080,7 +7067,7 @@ deferred-leveldown@~5.3.0: abstract-leveldown "~6.2.1" inherits "^2.0.3" -define-data-property@^1.0.1: +define-data-property@^1.0.1, define-data-property@^1.1.1: version "1.1.1" resolved "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.1.tgz#c35f7cd0ab09883480d12ac5cb213715587800b3" integrity sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ== @@ -7566,7 +7553,7 @@ es-array-method-boxes-properly@^1.0.0: resolved "https://registry.yarnpkg.com/es-array-method-boxes-properly/-/es-array-method-boxes-properly-1.0.0.tgz#873f3e84418de4ee19c5be752990b2e44718d09e" integrity sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA== -es-iterator-helpers@^1.0.12: +es-iterator-helpers@^1.0.12, es-iterator-helpers@^1.0.15: version "1.0.15" resolved "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.0.15.tgz#bd81d275ac766431d19305923707c3efd9f1ae40" integrity sha512-GhoY8uYqd6iwUl2kgjTm4CZAf6oo5mHK7BPqx3rKgx893YSsy0LGHV6gfqqQvZt/8xM8xeOnfXBCfqclMKkJ5g== @@ -7703,11 +7690,11 @@ escodegen@^2.1.0: source-map "~0.6.1" eslint-config-next@^13.1.6: - version "13.5.5" - resolved "https://registry.npmjs.org/eslint-config-next/-/eslint-config-next-13.5.5.tgz#50ec30b62458f0cae4127308ed354d02211a3c32" - integrity sha512-kQr/eevFyzeVt0yCKTchQp3MTIx8ZmBsAKLW+7bzmAXHcf2vvxIqAt2N/afb9SZpuXXhSb/8yrKQGVUVpYmafQ== + version "13.5.6" + resolved "https://registry.npmjs.org/eslint-config-next/-/eslint-config-next-13.5.6.tgz#3a5a6222d5cb32256760ad68ab8e976e866a08c8" + integrity sha512-o8pQsUHTo9aHqJ2YiZDym5gQAMRf7O2HndHo/JZeY7TDD+W4hk6Ma8Vw54RHiBeb7OWWO5dPirQB+Is/aVQ7Kg== dependencies: - "@next/eslint-plugin-next" "13.5.5" + "@next/eslint-plugin-next" "13.5.6" "@rushstack/eslint-patch" "^1.3.3" "@typescript-eslint/parser" "^5.4.2 || ^6.0.0" eslint-import-resolver-node "^0.3.6" @@ -7717,7 +7704,7 @@ eslint-config-next@^13.1.6: eslint-plugin-react "^7.33.2" eslint-plugin-react-hooks "^4.5.0 || 5.0.0-canary-7118f5dd7-20230705" -eslint-import-resolver-node@^0.3.6, eslint-import-resolver-node@^0.3.7, eslint-import-resolver-node@^0.3.9: +eslint-import-resolver-node@^0.3.6, eslint-import-resolver-node@^0.3.9: version "0.3.9" resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz#d4eaac52b8a2e7c3cd1903eb00f7e053356118ac" integrity sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g== @@ -7794,30 +7781,7 @@ eslint-plugin-functional@^6.0.0: semver "^7.5.4" ts-api-utils "^1.0.1" -eslint-plugin-import@^2.28.1: - version "2.28.1" - resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.28.1.tgz#63b8b5b3c409bfc75ebaf8fb206b07ab435482c4" - integrity sha512-9I9hFlITvOV55alzoKBI+K9q74kv0iKMeY6av5+umsNwayt59fz692daGyjR+oStBQgx6nwR9rXldDev3Clw+A== - dependencies: - array-includes "^3.1.6" - array.prototype.findlastindex "^1.2.2" - array.prototype.flat "^1.3.1" - array.prototype.flatmap "^1.3.1" - debug "^3.2.7" - doctrine "^2.1.0" - eslint-import-resolver-node "^0.3.7" - eslint-module-utils "^2.8.0" - has "^1.0.3" - is-core-module "^2.13.0" - is-glob "^4.0.3" - minimatch "^3.1.2" - object.fromentries "^2.0.6" - object.groupby "^1.0.0" - object.values "^1.1.6" - semver "^6.3.1" - tsconfig-paths "^3.14.2" - -eslint-plugin-import@^2.29.0: +eslint-plugin-import@^2.28.1, eslint-plugin-import@^2.29.0: version "2.29.0" resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.29.0.tgz#8133232e4329ee344f2f612885ac3073b0b7e155" integrity sha512-QPOO5NO6Odv5lpoTkddtutccQjysJuFxoPS7fAHO+9m9udNHvTCPSAMW9zGAYj8lAIdr40I8yPCdUYrncXtrwg== @@ -7845,14 +7809,7 @@ eslint-plugin-jest-formatting@^3.1.0: resolved "https://registry.npmjs.org/eslint-plugin-jest-formatting/-/eslint-plugin-jest-formatting-3.1.0.tgz#b26dd5a40f432b642dcc880021a771bb1c93dcd2" integrity sha512-XyysraZ1JSgGbLSDxjj5HzKKh0glgWf+7CkqxbTqb7zEhW7X2WHo5SBQ8cGhnszKN+2Lj3/oevBlHNbHezoc/A== -eslint-plugin-jest@^27.4.2: - version "27.4.2" - resolved "https://registry.yarnpkg.com/eslint-plugin-jest/-/eslint-plugin-jest-27.4.2.tgz#181d999ac67a9b6040db1d27935887cf5a2882ed" - integrity sha512-3Nfvv3wbq2+PZlRTf2oaAWXWwbdBejFRBR2O8tAO67o+P8zno+QGbcDYaAXODlreXVg+9gvWhKKmG2rgfb8GEg== - dependencies: - "@typescript-eslint/utils" "^5.10.0" - -eslint-plugin-jest@^27.6.0: +eslint-plugin-jest@^27.4.2, eslint-plugin-jest@^27.6.0: version "27.6.0" resolved "https://registry.yarnpkg.com/eslint-plugin-jest/-/eslint-plugin-jest-27.6.0.tgz#e5c0cf735b3c8cad0ef9db5b565b2fc99f5e55ed" integrity sha512-MTlusnnDMChbElsszJvrwD1dN3x6nZl//s4JD23BxB6MgR66TZlL064su24xEIS3VACfAoHV1vgyMgPw8nkdng== @@ -7860,26 +7817,26 @@ eslint-plugin-jest@^27.6.0: "@typescript-eslint/utils" "^5.10.0" eslint-plugin-jsx-a11y@^6.7.1: - version "6.7.1" - resolved "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.7.1.tgz#fca5e02d115f48c9a597a6894d5bcec2f7a76976" - integrity sha512-63Bog4iIethyo8smBklORknVjB0T2dwB8Mr/hIC+fBS0uyHdYYpzM/Ed+YC8VxTjlXHEWFOdmgwcDn1U2L9VCA== + version "6.8.0" + resolved "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.8.0.tgz#2fa9c701d44fcd722b7c771ec322432857fcbad2" + integrity sha512-Hdh937BS3KdwwbBaKd5+PLCOmYY6U4f2h9Z2ktwtNKvIdIEu137rjYbcb9ApSbVJfWxANNuiKTD/9tOKjK9qOA== dependencies: - "@babel/runtime" "^7.20.7" - aria-query "^5.1.3" - array-includes "^3.1.6" - array.prototype.flatmap "^1.3.1" - ast-types-flow "^0.0.7" - axe-core "^4.6.2" - axobject-query "^3.1.1" + "@babel/runtime" "^7.23.2" + aria-query "^5.3.0" + array-includes "^3.1.7" + array.prototype.flatmap "^1.3.2" + ast-types-flow "^0.0.8" + axe-core "=4.7.0" + axobject-query "^3.2.1" damerau-levenshtein "^1.0.8" emoji-regex "^9.2.2" - has "^1.0.3" - jsx-ast-utils "^3.3.3" - language-tags "=1.0.5" + es-iterator-helpers "^1.0.15" + hasown "^2.0.0" + jsx-ast-utils "^3.3.5" + language-tags "^1.0.9" minimatch "^3.1.2" - object.entries "^1.1.6" - object.fromentries "^2.0.6" - semver "^6.3.0" + object.entries "^1.1.7" + object.fromentries "^2.0.7" eslint-plugin-lodash@^7.4.0: version "7.4.0" @@ -9948,20 +9905,20 @@ is-ci@3.0.1, is-ci@^3.0.1: dependencies: ci-info "^3.2.0" -is-core-module@^2.11.0, is-core-module@^2.13.0, is-core-module@^2.5.0, is-core-module@^2.8.1: - version "2.13.0" - resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.13.0.tgz#bb52aa6e2cbd49a30c2ba68c42bf3435ba6072db" - integrity sha512-Z7dk6Qo8pOCp3l4tsX2C5ZVas4V+UxwQodwZhLopL91TX8UyyHEXafPcyoeeWuLrwzHcr3igO78wNLwHJHsMCQ== - dependencies: - has "^1.0.3" - -is-core-module@^2.13.1: +is-core-module@^2.11.0, is-core-module@^2.13.1: version "2.13.1" resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.13.1.tgz#ad0d7532c6fea9da1ebdc82742d74525c6273384" integrity sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw== dependencies: hasown "^2.0.0" +is-core-module@^2.13.0, is-core-module@^2.5.0, is-core-module@^2.8.1: + version "2.13.0" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.13.0.tgz#bb52aa6e2cbd49a30c2ba68c42bf3435ba6072db" + integrity sha512-Z7dk6Qo8pOCp3l4tsX2C5ZVas4V+UxwQodwZhLopL91TX8UyyHEXafPcyoeeWuLrwzHcr3igO78wNLwHJHsMCQ== + dependencies: + has "^1.0.3" + is-date-object@^1.0.1, is-date-object@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.5.tgz#0841d5536e724c25597bf6ea62e1bd38298df31f" @@ -11006,7 +10963,7 @@ jsprim@^1.2.2: json-schema "0.4.0" verror "1.10.0" -"jsx-ast-utils@^2.4.1 || ^3.0.0", jsx-ast-utils@^3.3.3: +"jsx-ast-utils@^2.4.1 || ^3.0.0", jsx-ast-utils@^3.3.5: version "3.3.5" resolved "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz#4766bd05a8e2a11af222becd19e15575e52a853a" integrity sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ== @@ -11091,17 +11048,17 @@ kuler@^2.0.0: resolved "https://registry.npmjs.org/kuler/-/kuler-2.0.0.tgz#e2c570a3800388fb44407e851531c1d670b061b3" integrity sha512-Xq9nH7KlWZmXAtodXDDRE7vs6DU1gTU8zYDHDiWLSip45Egwq3plLHzPn27NgvzL2r1LMPC1vdqh98sQxtqj4A== -language-subtag-registry@~0.3.2: +language-subtag-registry@^0.3.20: version "0.3.22" resolved "https://registry.npmjs.org/language-subtag-registry/-/language-subtag-registry-0.3.22.tgz#2e1500861b2e457eba7e7ae86877cbd08fa1fd1d" integrity sha512-tN0MCzyWnoz/4nHS6uxdlFWoUZT7ABptwKPQ52Ea7URk6vll88bWBVhodtnlfEuCcKWNGoc+uGbw1cwa9IKh/w== -language-tags@=1.0.5: - version "1.0.5" - resolved "https://registry.npmjs.org/language-tags/-/language-tags-1.0.5.tgz#d321dbc4da30ba8bf3024e040fa5c14661f9193a" - integrity sha512-qJhlO9cGXi6hBGKoxEG/sKZDAHD5Hnu9Hs4WbOY3pCWXDhw0N8x1NenNzm2EnNLkLkk7J2SdxAkDSbb6ftT+UQ== +language-tags@^1.0.9: + version "1.0.9" + resolved "https://registry.npmjs.org/language-tags/-/language-tags-1.0.9.tgz#1ffdcd0ec0fafb4b1be7f8b11f306ad0f9c08777" + integrity sha512-MbjN408fEndfiQXbFQ1vnd+1NoLDsnQW41410oQBXiyXDMYH5z505juWa4KUE1LqxRC7DgOgZDbKLxHIwm27hA== dependencies: - language-subtag-registry "~0.3.2" + language-subtag-registry "^0.3.20" lazy@~1.0.11: version "1.0.11" @@ -12583,7 +12540,7 @@ object.assign@^4.1.4: has-symbols "^1.0.3" object-keys "^1.1.1" -object.entries@^1.1.6: +object.entries@^1.1.6, object.entries@^1.1.7: version "1.1.7" resolved "https://registry.npmjs.org/object.entries/-/object.entries-1.1.7.tgz#2b47760e2a2e3a752f39dd874655c61a7f03c131" integrity sha512-jCBs/0plmPsOnrKAfFQXRG2NFjlhZgjjcBLSmTnEhU8U6vVTsVe8ANeQJCHTl3gSsI4J+0emOoCgoKlmQPMgmA== @@ -12592,16 +12549,7 @@ object.entries@^1.1.6: define-properties "^1.2.0" es-abstract "^1.22.1" -object.fromentries@^2.0.6: - version "2.0.6" - resolved "https://registry.yarnpkg.com/object.fromentries/-/object.fromentries-2.0.6.tgz#cdb04da08c539cffa912dcd368b886e0904bfa73" - integrity sha512-VciD13dswC4j1Xt5394WR4MzmAQmlgN72phd/riNp9vtD7tp4QQWJ0R4wvclXcafgcYK8veHRed2W6XeGBvcfg== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.4" - es-abstract "^1.20.4" - -object.fromentries@^2.0.7: +object.fromentries@^2.0.6, object.fromentries@^2.0.7: version "2.0.7" resolved "https://registry.yarnpkg.com/object.fromentries/-/object.fromentries-2.0.7.tgz#71e95f441e9a0ea6baf682ecaaf37fa2a8d7e616" integrity sha512-UPbPHML6sL8PI/mOqPwsH4G6iyXcCGzLin8KvEPenOZN5lpCNBZZQ+V62vdjB1mQHrmqGQt5/OJzemUA+KJmEA== @@ -12621,16 +12569,6 @@ object.getownpropertydescriptors@^2.0.3: es-abstract "^1.21.2" safe-array-concat "^1.0.0" -object.groupby@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/object.groupby/-/object.groupby-1.0.0.tgz#cb29259cf90f37e7bac6437686c1ea8c916d12a9" - integrity sha512-70MWG6NfRH9GnbZOikuhPPYzpUpof9iW2J9E4dW7FXTqPNb6rllE6u39SKwwiNh8lCwX3DDb5OgcKGiEBrTTyw== - dependencies: - call-bind "^1.0.2" - define-properties "^1.2.0" - es-abstract "^1.21.2" - get-intrinsic "^1.2.1" - object.groupby@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/object.groupby/-/object.groupby-1.0.1.tgz#d41d9f3c8d6c778d9cbac86b4ee9f5af103152ee" @@ -12649,16 +12587,7 @@ object.hasown@^1.1.2: define-properties "^1.2.0" es-abstract "^1.22.1" -object.values@^1.1.6: - version "1.1.6" - resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.6.tgz#4abbaa71eba47d63589d402856f908243eea9b1d" - integrity sha512-FVVTkD1vENCsAcwNs9k6jea2uHC/X0+JcjG8YA60FN5CMaJmG95wT9jek/xX9nornqGRrBkKtzuAu2wuHpKqvw== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.4" - es-abstract "^1.20.4" - -object.values@^1.1.7: +object.values@^1.1.6, object.values@^1.1.7: version "1.1.7" resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.7.tgz#617ed13272e7e1071b43973aa1655d9291b8442a" integrity sha512-aU6xnDFYT3x17e/f0IiiwlGPTy2jzMySGfUB4fq6z7CV8l85CWHDk5ErhyhpfDHhrOMwGFhSQkhMGHaIotA6Ng== @@ -14162,6 +14091,16 @@ set-blocking@^2.0.0: resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" integrity sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw== +set-function-length@^1.1.1: + version "1.1.1" + resolved "https://registry.npmjs.org/set-function-length/-/set-function-length-1.1.1.tgz#4bc39fafb0307224a33e106a7d35ca1218d659ed" + integrity sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ== + dependencies: + define-data-property "^1.1.1" + get-intrinsic "^1.2.1" + gopd "^1.0.1" + has-property-descriptors "^1.0.0" + set-function-name@^2.0.0, set-function-name@^2.0.1: version "2.0.1" resolved "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.1.tgz#12ce38b7954310b9f61faa12701620a0c882793a" @@ -15841,7 +15780,7 @@ which-pm@2.0.0: load-yaml-file "^0.2.0" path-exists "^4.0.0" -which-typed-array@^1.1.10, which-typed-array@^1.1.11, which-typed-array@^1.1.2, which-typed-array@^1.1.9: +which-typed-array@^1.1.10, which-typed-array@^1.1.11, which-typed-array@^1.1.2: version "1.1.11" resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.11.tgz#99d691f23c72aab6768680805a271b69761ed61a" integrity sha512-qe9UWWpkeG5yzZ0tNYxDmd7vo58HDBc39mZ0xWWpolAGADdFOzkfamWLDxkOWcvHQKVmdTyQdLD4NOfjLWTKew== @@ -15852,6 +15791,17 @@ which-typed-array@^1.1.10, which-typed-array@^1.1.11, which-typed-array@^1.1.2, gopd "^1.0.1" has-tostringtag "^1.0.0" +which-typed-array@^1.1.9: + version "1.1.13" + resolved "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.13.tgz#870cd5be06ddb616f504e7b039c4c24898184d36" + integrity sha512-P5Nra0qjSncduVPEAr7xhoF5guty49ArDTwzJ/yNuPIbZppyRxFQsRCWrocxIY+CnMVG+qfbU2FmDKyvSGClow== + dependencies: + available-typed-arrays "^1.0.5" + call-bind "^1.0.4" + for-each "^0.3.3" + gopd "^1.0.1" + has-tostringtag "^1.0.0" + which@1.3.1, which@^1.1.1, which@^1.2.9, which@^1.3.1: version "1.3.1" resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" @@ -16219,7 +16169,7 @@ zksync-web3@^0.14.3: resolved "https://registry.yarnpkg.com/zksync-web3/-/zksync-web3-0.14.3.tgz#64ac2a16d597464c3fc4ae07447a8007631c57c9" integrity sha512-hT72th4AnqyLW1d5Jlv8N2B/qhEnl2NePK2A3org7tAa24niem/UAaHMkEvmWI3SF9waYUPtqAtjpf+yvQ9zvQ== -zod@^3.22.3, zod@^3.22.4: +zod@^3.22.4: version "3.22.4" resolved "https://registry.yarnpkg.com/zod/-/zod-3.22.4.tgz#f31c3a9386f61b1f228af56faa9255e845cf3fff" integrity sha512-iC+8Io04lddc+mVqQ9AZ7OQ2MrUKGN+oIQyq1vemgt46jwCwLfhq7/pwnBnNXXXZb8VTVLKwp9EDkx+ryxIWmg==