From 261dfd7255d21f120470e6751be3ba2ec1eebd1e Mon Sep 17 00:00:00 2001 From: ShahNami Date: Thu, 29 Jun 2023 14:48:54 +0100 Subject: [PATCH] initialise with defender-serverless project --- .gitignore | 15 + README.md | 186 + examples/defender-test-project/.gitignore | 15 + .../abis/demoflash.json.abi | 203 + .../abis/erc721.json.abi | 420 ++ .../autotasks/hello-world/index.js | 5 + examples/defender-test-project/package.json | 27 + examples/defender-test-project/serverless.yml | 205 + examples/defender-test-project/yarn.lock | 3564 +++++++++++++++++ package.json | 83 + src/cmd/deploy.ts | 1326 ++++++ src/cmd/info.ts | 209 + src/cmd/invoke.ts | 55 + src/cmd/logs.ts | 53 + src/cmd/remove.ts | 300 ++ src/index.ts | 34 + src/provider.ts | 15 + src/types/docs-schemas/defender.schema.json | 10 + .../docs-schemas/definitions.schema.json | 572 +++ src/types/docs-schemas/function.schema.json | 39 + src/types/docs-schemas/provider.schema.json | 11 + src/types/docs-schemas/resources.schema.json | 79 + src/types/docs/README.md | 139 + src/types/docs/defender-properties-key.md | 3 + src/types/docs/defender-properties-secret.md | 3 + src/types/docs/defender.md | 46 + ...ions-definitions-abitype-anyof-arrayabi.md | 3 + ...ons-definitions-abitype-anyof-stringabi.md | 3 + .../docs/definitions-definitions-abitype.md | 9 + .../docs/definitions-definitions-address.md | 15 + ...ns-definitions-autotask-properties-name.md | 3 + ...ns-definitions-autotask-properties-path.md | 3 + ...-definitions-autotask-properties-paused.md | 3 + ...itions-autotask-properties-trigger-else.md | 3 + ...k-properties-trigger-if-properties-type.md | 11 + ...totask-properties-trigger-if-properties.md | 3 + ...initions-autotask-properties-trigger-if.md | 35 + ...operties-trigger-properties-triggercron.md | 3 + ...ies-trigger-properties-triggerfrequency.md | 3 + ...operties-trigger-properties-triggertype.md | 12 + ...utotask-properties-trigger-then-oneof-0.md | 3 + ...utotask-properties-trigger-then-oneof-1.md | 3 + ...itions-autotask-properties-trigger-then.md | 9 + ...definitions-autotask-properties-trigger.md | 74 + .../docs/definitions-definitions-autotask.md | 107 + ...ions-blockexplorerapikey-properties-key.md | 3 + ...nitions-definitions-blockexplorerapikey.md | 100 + ...ions-blocksentinel-properties-addresses.md | 3 + ...erties-alertthreshold-properties-amount.md | 3 + ...lertthreshold-properties-window-seconds.md | 3 + ...blocksentinel-properties-alertthreshold.md | 46 + ...-event-eventitems-properties-expression.md | 3 + ...s-event-eventitems-properties-signature.md | 3 + ...-conditions-properties-event-eventitems.md | 46 + ...-properties-conditions-properties-event.md | 3 + ...ion-functionitems-properties-expression.md | 3 + ...tion-functionitems-properties-signature.md | 3 + ...tions-properties-function-functionitems.md | 46 + ...operties-conditions-properties-function.md | 3 + ...rties-conditions-properties-transaction.md | 3 + ...ons-blocksentinel-properties-conditions.md | 65 + ...ntinel-properties-confirm-level-oneof-0.md | 12 + ...ntinel-properties-confirm-level-oneof-1.md | 3 + ...-blocksentinel-properties-confirm-level.md | 9 + ...finitions-blocksentinel-properties-name.md | 3 + ...erties-notifyconfig-properties-channels.md | 3 + ...perties-notifyconfig-properties-message.md | 3 + ...perties-notifyconfig-properties-timeout.md | 3 + ...s-blocksentinel-properties-notifyconfig.md | 88 + ...nitions-blocksentinel-properties-paused.md | 3 + ...finitions-blocksentinel-properties-type.md | 11 + .../definitions-definitions-blocksentinel.md | 350 ++ ...nitions-category-properties-description.md | 3 + ...ns-definitions-category-properties-name.md | 3 + ...ons-category-properties-notificationids.md | 3 + .../docs/definitions-definitions-category.md | 69 + ...ns-definitions-contract-properties-name.md | 3 + ...efinitions-contract-properties-nat-spec.md | 3 + .../docs/definitions-definitions-contract.md | 175 + ...itions-datadogconfig-properties-api-key.md | 3 + ...-datadogconfig-properties-metric-prefix.md | 15 + .../definitions-definitions-datadogconfig.md | 62 + ...efinitions-definitions-deploymentconfig.md | 35 + ...ons-emailconfig-properties-emails-items.md | 7 + ...finitions-emailconfig-properties-emails.md | 11 + .../definitions-definitions-emailconfig.md | 39 + ...tions-definitions-fortasentinel-anyof-0.md | 3 + ...tions-definitions-fortasentinel-anyof-1.md | 3 + ...ions-fortasentinel-properties-addresses.md | 3 + ...fortasentinel-properties-agentids-items.md | 3 + ...tions-fortasentinel-properties-agentids.md | 3 + ...erties-alertthreshold-properties-amount.md | 3 + ...lertthreshold-properties-window-seconds.md | 3 + ...fortasentinel-properties-alertthreshold.md | 46 + ...es-conditions-properties-alertids-items.md | 3 + ...operties-conditions-properties-alertids.md | 3 + ...conditions-properties-min-scanner-count.md | 3 + ...operties-conditions-properties-severity.md | 16 + ...ons-fortasentinel-properties-conditions.md | 78 + ...-fortasentinel-properties-forta-node-id.md | 3 + ...finitions-fortasentinel-properties-name.md | 3 + ...erties-notifyconfig-properties-channels.md | 3 + ...perties-notifyconfig-properties-message.md | 3 + ...perties-notifyconfig-properties-timeout.md | 3 + ...s-fortasentinel-properties-notifyconfig.md | 88 + ...nitions-fortasentinel-properties-paused.md | 3 + ...finitions-fortasentinel-properties-type.md | 11 + .../definitions-definitions-fortasentinel.md | 369 ++ .../docs/definitions-definitions-network.md | 53 + ...initions-notification-properties-config.md | 17 + ...efinitions-notification-properties-name.md | 3 + ...initions-notification-properties-paused.md | 3 + .../definitions-definitions-notification.md | 119 + ...efinitions-definitions-notificationtype.md | 20 + ...opsgenieconfig-properties-actions-items.md | 7 + ...tions-opsgenieconfig-properties-actions.md | 7 + ...nitions-opsgenieconfig-properties-alias.md | 7 + ...itions-opsgenieconfig-properties-apikey.md | 3 + ...properties-details-additionalproperties.md | 3 + ...tions-opsgenieconfig-properties-details.md | 27 + ...itions-opsgenieconfig-properties-entity.md | 7 + ...initions-opsgenieconfig-properties-note.md | 7 + ...ns-opsgenieconfig-properties-responders.md | 3 + ...ns-opsgenieconfig-properties-tags-items.md | 7 + ...initions-opsgenieconfig-properties-tags.md | 7 + ...ons-opsgenieconfig-properties-visibleto.md | 3 + ...s-definitions-opsgenieconfig-properties.md | 3 + .../definitions-definitions-opsgenieconfig.md | 262 ++ ...ns-definitions-opsgenieinstancelocation.md | 12 + ...tions-definitions-opsgenieprioritylevel.md | 15 + ...itions-opsgenieuser-properties-fullname.md | 3 + ...-definitions-opsgenieuser-properties-id.md | 3 + ...itions-opsgenieuser-properties-username.md | 3 + .../definitions-definitions-opsgenieuser.md | 95 + ...efinitions-definitions-opsgenieusertype.md | 14 + ...pagerdutyconfig-if-properties-eventtype.md | 11 + ...finitions-pagerdutyconfig-if-properties.md | 3 + ...initions-definitions-pagerdutyconfig-if.md | 35 + ...itions-pagerdutyconfig-properties-class.md | 3 + ...ns-pagerdutyconfig-properties-component.md | 3 + ...ties-customdetails-additionalproperties.md | 3 + ...agerdutyconfig-properties-customdetails.md | 27 + ...ons-pagerdutyconfig-properties-dedupkey.md | 7 + ...itions-pagerdutyconfig-properties-group.md | 3 + ...s-pagerdutyconfig-properties-routingkey.md | 9 + ...itions-pagerdutyconfig-properties-token.md | 3 + ...-definitions-pagerdutyconfig-properties.md | 3 + ...itions-definitions-pagerdutyconfig-then.md | 3 + ...definitions-definitions-pagerdutyconfig.md | 242 ++ ...itions-definitions-pagerdutyeventaction.md | 13 + ...initions-definitions-pagerdutyeventtype.md | 12 + ...finitions-definitions-pagerdutyseverity.md | 14 + ...tions-policy-properties-eip1559-pricing.md | 3 + ...nitions-policy-properties-gas-price-cap.md | 3 + ...-policy-properties-private-transactions.md | 3 + ...icy-properties-whitelistreceivers-items.md | 3 + ...ns-policy-properties-whitelistreceivers.md | 3 + .../docs/definitions-definitions-policy.md | 88 + ...s-relayer-properties-addressfromrelayer.md | 3 + ...initions-relayer-properties-min-balance.md | 3 + ...ons-definitions-relayer-properties-name.md | 3 + ...relayer-properties-relayerapikeys-items.md | 3 + ...tions-relayer-properties-relayerapikeys.md | 3 + .../docs/definitions-definitions-relayer.md | 180 + .../definitions-definitions-riskcategory.md | 16 + .../docs/definitions-definitions-sentinel.md | 17 + ...ons-telegramconfig-properties-bot-token.md | 3 + ...tions-telegramconfig-properties-chat-id.md | 3 + .../definitions-definitions-telegramconfig.md | 50 + ...ns-definitions-urlconfig-properties-url.md | 7 + .../docs/definitions-definitions-urlconfig.md | 35 + src/types/docs/definitions-definitions.md | 3 + src/types/docs/definitions.md | 2499 ++++++++++++ src/types/docs/function-properties-path.md | 3 + src/types/docs/function-properties-paused.md | 3 + .../docs/function-properties-trigger-else.md | 3 + ...n-properties-trigger-if-properties-type.md | 11 + ...nction-properties-trigger-if-properties.md | 3 + .../docs/function-properties-trigger-if.md | 35 + ...operties-trigger-properties-triggercron.md | 3 + ...ies-trigger-properties-triggerfrequency.md | 3 + ...operties-trigger-properties-triggertype.md | 12 + ...unction-properties-trigger-then-oneof-0.md | 3 + ...unction-properties-trigger-then-oneof-1.md | 3 + .../docs/function-properties-trigger-then.md | 9 + src/types/docs/function-properties-trigger.md | 74 + src/types/docs/function.md | 88 + src/types/docs/provider-properties-ssot.md | 3 + .../docs/provider-properties-stackname.md | 3 + src/types/docs/provider-properties-stage.md | 3 + src/types/docs/provider.md | 65 + ...-properties-global-additionalproperties.md | 3 + ...rties-autotasksecrets-properties-global.md | 27 + ...s-properties-stack-additionalproperties.md | 3 + ...erties-autotasksecrets-properties-stack.md | 27 + ...es-resources-properties-autotasksecrets.md | 46 + ...rces-properties-block-explorer-api-keys.md | 31 + ...operties-resources-properties-contracts.md | 31 + ...resources-properties-deployment-configs.md | 31 + ...ties-resources-properties-notifications.md | 31 + ...roperties-resources-properties-policies.md | 31 + ...roperties-resources-properties-relayers.md | 31 + ...operties-resources-properties-sentinels.md | 41 + .../docs/resources-properties-resources.md | 160 + src/types/docs/resources.md | 27 + src/types/index.ts | 256 ++ .../schemas/configs/replace-ref-config.ts | 6 + .../configs/replace-undefined-config.ts | 6 + src/types/schemas/defender.schema.json | 1 + src/types/schemas/definitions.schema.json | 1 + src/types/schemas/function.schema.json | 1 + src/types/schemas/index.ts | 11 + src/types/schemas/provider.schema.json | 1 + src/types/schemas/resources.schema.json | 1 + src/utils/index.ts | 419 ++ src/utils/logger.ts | 62 + src/utils/sanitise.ts | 29 + template/.gitignore | 15 + template/README.md | 161 + template/autotasks/hello-world/index.js | 5 + template/package.json | 27 + template/serverless.yml | 47 + template/yarn.lock | 3451 ++++++++++++++++ tsconfig.json | 14 + yarn.lock | 2755 +++++++++++++ 225 files changed, 21987 insertions(+) create mode 100644 .gitignore create mode 100644 README.md create mode 100644 examples/defender-test-project/.gitignore create mode 100644 examples/defender-test-project/abis/demoflash.json.abi create mode 100644 examples/defender-test-project/abis/erc721.json.abi create mode 100644 examples/defender-test-project/autotasks/hello-world/index.js create mode 100644 examples/defender-test-project/package.json create mode 100644 examples/defender-test-project/serverless.yml create mode 100644 examples/defender-test-project/yarn.lock create mode 100644 package.json create mode 100644 src/cmd/deploy.ts create mode 100644 src/cmd/info.ts create mode 100644 src/cmd/invoke.ts create mode 100644 src/cmd/logs.ts create mode 100644 src/cmd/remove.ts create mode 100644 src/index.ts create mode 100644 src/provider.ts create mode 100644 src/types/docs-schemas/defender.schema.json create mode 100644 src/types/docs-schemas/definitions.schema.json create mode 100644 src/types/docs-schemas/function.schema.json create mode 100644 src/types/docs-schemas/provider.schema.json create mode 100644 src/types/docs-schemas/resources.schema.json create mode 100644 src/types/docs/README.md create mode 100644 src/types/docs/defender-properties-key.md create mode 100644 src/types/docs/defender-properties-secret.md create mode 100644 src/types/docs/defender.md create mode 100644 src/types/docs/definitions-definitions-abitype-anyof-arrayabi.md create mode 100644 src/types/docs/definitions-definitions-abitype-anyof-stringabi.md create mode 100644 src/types/docs/definitions-definitions-abitype.md create mode 100644 src/types/docs/definitions-definitions-address.md create mode 100644 src/types/docs/definitions-definitions-autotask-properties-name.md create mode 100644 src/types/docs/definitions-definitions-autotask-properties-path.md create mode 100644 src/types/docs/definitions-definitions-autotask-properties-paused.md create mode 100644 src/types/docs/definitions-definitions-autotask-properties-trigger-else.md create mode 100644 src/types/docs/definitions-definitions-autotask-properties-trigger-if-properties-type.md create mode 100644 src/types/docs/definitions-definitions-autotask-properties-trigger-if-properties.md create mode 100644 src/types/docs/definitions-definitions-autotask-properties-trigger-if.md create mode 100644 src/types/docs/definitions-definitions-autotask-properties-trigger-properties-triggercron.md create mode 100644 src/types/docs/definitions-definitions-autotask-properties-trigger-properties-triggerfrequency.md create mode 100644 src/types/docs/definitions-definitions-autotask-properties-trigger-properties-triggertype.md create mode 100644 src/types/docs/definitions-definitions-autotask-properties-trigger-then-oneof-0.md create mode 100644 src/types/docs/definitions-definitions-autotask-properties-trigger-then-oneof-1.md create mode 100644 src/types/docs/definitions-definitions-autotask-properties-trigger-then.md create mode 100644 src/types/docs/definitions-definitions-autotask-properties-trigger.md create mode 100644 src/types/docs/definitions-definitions-autotask.md create mode 100644 src/types/docs/definitions-definitions-blockexplorerapikey-properties-key.md create mode 100644 src/types/docs/definitions-definitions-blockexplorerapikey.md create mode 100644 src/types/docs/definitions-definitions-blocksentinel-properties-addresses.md create mode 100644 src/types/docs/definitions-definitions-blocksentinel-properties-alertthreshold-properties-amount.md create mode 100644 src/types/docs/definitions-definitions-blocksentinel-properties-alertthreshold-properties-window-seconds.md create mode 100644 src/types/docs/definitions-definitions-blocksentinel-properties-alertthreshold.md create mode 100644 src/types/docs/definitions-definitions-blocksentinel-properties-conditions-properties-event-eventitems-properties-expression.md create mode 100644 src/types/docs/definitions-definitions-blocksentinel-properties-conditions-properties-event-eventitems-properties-signature.md create mode 100644 src/types/docs/definitions-definitions-blocksentinel-properties-conditions-properties-event-eventitems.md create mode 100644 src/types/docs/definitions-definitions-blocksentinel-properties-conditions-properties-event.md create mode 100644 src/types/docs/definitions-definitions-blocksentinel-properties-conditions-properties-function-functionitems-properties-expression.md create mode 100644 src/types/docs/definitions-definitions-blocksentinel-properties-conditions-properties-function-functionitems-properties-signature.md create mode 100644 src/types/docs/definitions-definitions-blocksentinel-properties-conditions-properties-function-functionitems.md create mode 100644 src/types/docs/definitions-definitions-blocksentinel-properties-conditions-properties-function.md create mode 100644 src/types/docs/definitions-definitions-blocksentinel-properties-conditions-properties-transaction.md create mode 100644 src/types/docs/definitions-definitions-blocksentinel-properties-conditions.md create mode 100644 src/types/docs/definitions-definitions-blocksentinel-properties-confirm-level-oneof-0.md create mode 100644 src/types/docs/definitions-definitions-blocksentinel-properties-confirm-level-oneof-1.md create mode 100644 src/types/docs/definitions-definitions-blocksentinel-properties-confirm-level.md create mode 100644 src/types/docs/definitions-definitions-blocksentinel-properties-name.md create mode 100644 src/types/docs/definitions-definitions-blocksentinel-properties-notifyconfig-properties-channels.md create mode 100644 src/types/docs/definitions-definitions-blocksentinel-properties-notifyconfig-properties-message.md create mode 100644 src/types/docs/definitions-definitions-blocksentinel-properties-notifyconfig-properties-timeout.md create mode 100644 src/types/docs/definitions-definitions-blocksentinel-properties-notifyconfig.md create mode 100644 src/types/docs/definitions-definitions-blocksentinel-properties-paused.md create mode 100644 src/types/docs/definitions-definitions-blocksentinel-properties-type.md create mode 100644 src/types/docs/definitions-definitions-blocksentinel.md create mode 100644 src/types/docs/definitions-definitions-category-properties-description.md create mode 100644 src/types/docs/definitions-definitions-category-properties-name.md create mode 100644 src/types/docs/definitions-definitions-category-properties-notificationids.md create mode 100644 src/types/docs/definitions-definitions-category.md create mode 100644 src/types/docs/definitions-definitions-contract-properties-name.md create mode 100644 src/types/docs/definitions-definitions-contract-properties-nat-spec.md create mode 100644 src/types/docs/definitions-definitions-contract.md create mode 100644 src/types/docs/definitions-definitions-datadogconfig-properties-api-key.md create mode 100644 src/types/docs/definitions-definitions-datadogconfig-properties-metric-prefix.md create mode 100644 src/types/docs/definitions-definitions-datadogconfig.md create mode 100644 src/types/docs/definitions-definitions-deploymentconfig.md create mode 100644 src/types/docs/definitions-definitions-emailconfig-properties-emails-items.md create mode 100644 src/types/docs/definitions-definitions-emailconfig-properties-emails.md create mode 100644 src/types/docs/definitions-definitions-emailconfig.md create mode 100644 src/types/docs/definitions-definitions-fortasentinel-anyof-0.md create mode 100644 src/types/docs/definitions-definitions-fortasentinel-anyof-1.md create mode 100644 src/types/docs/definitions-definitions-fortasentinel-properties-addresses.md create mode 100644 src/types/docs/definitions-definitions-fortasentinel-properties-agentids-items.md create mode 100644 src/types/docs/definitions-definitions-fortasentinel-properties-agentids.md create mode 100644 src/types/docs/definitions-definitions-fortasentinel-properties-alertthreshold-properties-amount.md create mode 100644 src/types/docs/definitions-definitions-fortasentinel-properties-alertthreshold-properties-window-seconds.md create mode 100644 src/types/docs/definitions-definitions-fortasentinel-properties-alertthreshold.md create mode 100644 src/types/docs/definitions-definitions-fortasentinel-properties-conditions-properties-alertids-items.md create mode 100644 src/types/docs/definitions-definitions-fortasentinel-properties-conditions-properties-alertids.md create mode 100644 src/types/docs/definitions-definitions-fortasentinel-properties-conditions-properties-min-scanner-count.md create mode 100644 src/types/docs/definitions-definitions-fortasentinel-properties-conditions-properties-severity.md create mode 100644 src/types/docs/definitions-definitions-fortasentinel-properties-conditions.md create mode 100644 src/types/docs/definitions-definitions-fortasentinel-properties-forta-node-id.md create mode 100644 src/types/docs/definitions-definitions-fortasentinel-properties-name.md create mode 100644 src/types/docs/definitions-definitions-fortasentinel-properties-notifyconfig-properties-channels.md create mode 100644 src/types/docs/definitions-definitions-fortasentinel-properties-notifyconfig-properties-message.md create mode 100644 src/types/docs/definitions-definitions-fortasentinel-properties-notifyconfig-properties-timeout.md create mode 100644 src/types/docs/definitions-definitions-fortasentinel-properties-notifyconfig.md create mode 100644 src/types/docs/definitions-definitions-fortasentinel-properties-paused.md create mode 100644 src/types/docs/definitions-definitions-fortasentinel-properties-type.md create mode 100644 src/types/docs/definitions-definitions-fortasentinel.md create mode 100644 src/types/docs/definitions-definitions-network.md create mode 100644 src/types/docs/definitions-definitions-notification-properties-config.md create mode 100644 src/types/docs/definitions-definitions-notification-properties-name.md create mode 100644 src/types/docs/definitions-definitions-notification-properties-paused.md create mode 100644 src/types/docs/definitions-definitions-notification.md create mode 100644 src/types/docs/definitions-definitions-notificationtype.md create mode 100644 src/types/docs/definitions-definitions-opsgenieconfig-properties-actions-items.md create mode 100644 src/types/docs/definitions-definitions-opsgenieconfig-properties-actions.md create mode 100644 src/types/docs/definitions-definitions-opsgenieconfig-properties-alias.md create mode 100644 src/types/docs/definitions-definitions-opsgenieconfig-properties-apikey.md create mode 100644 src/types/docs/definitions-definitions-opsgenieconfig-properties-details-additionalproperties.md create mode 100644 src/types/docs/definitions-definitions-opsgenieconfig-properties-details.md create mode 100644 src/types/docs/definitions-definitions-opsgenieconfig-properties-entity.md create mode 100644 src/types/docs/definitions-definitions-opsgenieconfig-properties-note.md create mode 100644 src/types/docs/definitions-definitions-opsgenieconfig-properties-responders.md create mode 100644 src/types/docs/definitions-definitions-opsgenieconfig-properties-tags-items.md create mode 100644 src/types/docs/definitions-definitions-opsgenieconfig-properties-tags.md create mode 100644 src/types/docs/definitions-definitions-opsgenieconfig-properties-visibleto.md create mode 100644 src/types/docs/definitions-definitions-opsgenieconfig-properties.md create mode 100644 src/types/docs/definitions-definitions-opsgenieconfig.md create mode 100644 src/types/docs/definitions-definitions-opsgenieinstancelocation.md create mode 100644 src/types/docs/definitions-definitions-opsgenieprioritylevel.md create mode 100644 src/types/docs/definitions-definitions-opsgenieuser-properties-fullname.md create mode 100644 src/types/docs/definitions-definitions-opsgenieuser-properties-id.md create mode 100644 src/types/docs/definitions-definitions-opsgenieuser-properties-username.md create mode 100644 src/types/docs/definitions-definitions-opsgenieuser.md create mode 100644 src/types/docs/definitions-definitions-opsgenieusertype.md create mode 100644 src/types/docs/definitions-definitions-pagerdutyconfig-if-properties-eventtype.md create mode 100644 src/types/docs/definitions-definitions-pagerdutyconfig-if-properties.md create mode 100644 src/types/docs/definitions-definitions-pagerdutyconfig-if.md create mode 100644 src/types/docs/definitions-definitions-pagerdutyconfig-properties-class.md create mode 100644 src/types/docs/definitions-definitions-pagerdutyconfig-properties-component.md create mode 100644 src/types/docs/definitions-definitions-pagerdutyconfig-properties-customdetails-additionalproperties.md create mode 100644 src/types/docs/definitions-definitions-pagerdutyconfig-properties-customdetails.md create mode 100644 src/types/docs/definitions-definitions-pagerdutyconfig-properties-dedupkey.md create mode 100644 src/types/docs/definitions-definitions-pagerdutyconfig-properties-group.md create mode 100644 src/types/docs/definitions-definitions-pagerdutyconfig-properties-routingkey.md create mode 100644 src/types/docs/definitions-definitions-pagerdutyconfig-properties-token.md create mode 100644 src/types/docs/definitions-definitions-pagerdutyconfig-properties.md create mode 100644 src/types/docs/definitions-definitions-pagerdutyconfig-then.md create mode 100644 src/types/docs/definitions-definitions-pagerdutyconfig.md create mode 100644 src/types/docs/definitions-definitions-pagerdutyeventaction.md create mode 100644 src/types/docs/definitions-definitions-pagerdutyeventtype.md create mode 100644 src/types/docs/definitions-definitions-pagerdutyseverity.md create mode 100644 src/types/docs/definitions-definitions-policy-properties-eip1559-pricing.md create mode 100644 src/types/docs/definitions-definitions-policy-properties-gas-price-cap.md create mode 100644 src/types/docs/definitions-definitions-policy-properties-private-transactions.md create mode 100644 src/types/docs/definitions-definitions-policy-properties-whitelistreceivers-items.md create mode 100644 src/types/docs/definitions-definitions-policy-properties-whitelistreceivers.md create mode 100644 src/types/docs/definitions-definitions-policy.md create mode 100644 src/types/docs/definitions-definitions-relayer-properties-addressfromrelayer.md create mode 100644 src/types/docs/definitions-definitions-relayer-properties-min-balance.md create mode 100644 src/types/docs/definitions-definitions-relayer-properties-name.md create mode 100644 src/types/docs/definitions-definitions-relayer-properties-relayerapikeys-items.md create mode 100644 src/types/docs/definitions-definitions-relayer-properties-relayerapikeys.md create mode 100644 src/types/docs/definitions-definitions-relayer.md create mode 100644 src/types/docs/definitions-definitions-riskcategory.md create mode 100644 src/types/docs/definitions-definitions-sentinel.md create mode 100644 src/types/docs/definitions-definitions-telegramconfig-properties-bot-token.md create mode 100644 src/types/docs/definitions-definitions-telegramconfig-properties-chat-id.md create mode 100644 src/types/docs/definitions-definitions-telegramconfig.md create mode 100644 src/types/docs/definitions-definitions-urlconfig-properties-url.md create mode 100644 src/types/docs/definitions-definitions-urlconfig.md create mode 100644 src/types/docs/definitions-definitions.md create mode 100644 src/types/docs/definitions.md create mode 100644 src/types/docs/function-properties-path.md create mode 100644 src/types/docs/function-properties-paused.md create mode 100644 src/types/docs/function-properties-trigger-else.md create mode 100644 src/types/docs/function-properties-trigger-if-properties-type.md create mode 100644 src/types/docs/function-properties-trigger-if-properties.md create mode 100644 src/types/docs/function-properties-trigger-if.md create mode 100644 src/types/docs/function-properties-trigger-properties-triggercron.md create mode 100644 src/types/docs/function-properties-trigger-properties-triggerfrequency.md create mode 100644 src/types/docs/function-properties-trigger-properties-triggertype.md create mode 100644 src/types/docs/function-properties-trigger-then-oneof-0.md create mode 100644 src/types/docs/function-properties-trigger-then-oneof-1.md create mode 100644 src/types/docs/function-properties-trigger-then.md create mode 100644 src/types/docs/function-properties-trigger.md create mode 100644 src/types/docs/function.md create mode 100644 src/types/docs/provider-properties-ssot.md create mode 100644 src/types/docs/provider-properties-stackname.md create mode 100644 src/types/docs/provider-properties-stage.md create mode 100644 src/types/docs/provider.md create mode 100644 src/types/docs/resources-properties-resources-properties-autotasksecrets-properties-global-additionalproperties.md create mode 100644 src/types/docs/resources-properties-resources-properties-autotasksecrets-properties-global.md create mode 100644 src/types/docs/resources-properties-resources-properties-autotasksecrets-properties-stack-additionalproperties.md create mode 100644 src/types/docs/resources-properties-resources-properties-autotasksecrets-properties-stack.md create mode 100644 src/types/docs/resources-properties-resources-properties-autotasksecrets.md create mode 100644 src/types/docs/resources-properties-resources-properties-block-explorer-api-keys.md create mode 100644 src/types/docs/resources-properties-resources-properties-contracts.md create mode 100644 src/types/docs/resources-properties-resources-properties-deployment-configs.md create mode 100644 src/types/docs/resources-properties-resources-properties-notifications.md create mode 100644 src/types/docs/resources-properties-resources-properties-policies.md create mode 100644 src/types/docs/resources-properties-resources-properties-relayers.md create mode 100644 src/types/docs/resources-properties-resources-properties-sentinels.md create mode 100644 src/types/docs/resources-properties-resources.md create mode 100644 src/types/docs/resources.md create mode 100644 src/types/index.ts create mode 100644 src/types/schemas/configs/replace-ref-config.ts create mode 100644 src/types/schemas/configs/replace-undefined-config.ts create mode 100644 src/types/schemas/defender.schema.json create mode 100644 src/types/schemas/definitions.schema.json create mode 100644 src/types/schemas/function.schema.json create mode 100644 src/types/schemas/index.ts create mode 100644 src/types/schemas/provider.schema.json create mode 100644 src/types/schemas/resources.schema.json create mode 100644 src/utils/index.ts create mode 100644 src/utils/logger.ts create mode 100644 src/utils/sanitise.ts create mode 100644 template/.gitignore create mode 100644 template/README.md create mode 100644 template/autotasks/hello-world/index.js create mode 100644 template/package.json create mode 100644 template/serverless.yml create mode 100644 template/yarn.lock create mode 100644 tsconfig.json create mode 100644 yarn.lock diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..c66fb15 --- /dev/null +++ b/.gitignore @@ -0,0 +1,15 @@ +# package directories +node_modules +lib + +# Other +.env +*.log +.DS_Store +tsconfig.tsbuildinfo + +.vscode + +# example deployments +examples/defender-test-project/.defender +examples/defender-test-project/.serverless diff --git a/README.md b/README.md new file mode 100644 index 0000000..8a6fa20 --- /dev/null +++ b/README.md @@ -0,0 +1,186 @@ +# Defender Serverless Plugin + +Defender Serverless is a Serverless Framework plugin for automated resource management on Defender. + +:warning: **This plugin is still under development. Bugs are expected. Use with care.** + +## Prerequisites + +Serverless Framework: https://www.serverless.com/framework/docs/getting-started/ + +## Installation + +You can initialise your Serverless project directly using our pre-configured template: + +``` +sls install --url https://github.com/OpenZeppelin/defender-serverless/tree/main/template -n my-service +``` + +Note: for the command above to work correctly you need access to this repo. + +Alternatively, you can install it directly into an existing project with: + +`yarn add @openzeppelin/defender-serverless` + +## Setup + +This plugin allows you to define Autotasks, Sentinels, Notifications, Relayers, Contracts, Policies and Secrets declaratively from a `serverless.yml` and provision them via the CLI using `serverless deploy`. An example template below with an autotask, a relayer, a policy and a single relayer API key defined: + +```yaml +service: defender-serverless-template +configValidationMode: error +frameworkVersion: '3' + +provider: + name: defender + stage: ${opt:stage, 'dev'} + stackName: 'mystack' + ssot: false + +defender: + key: '${env:TEAM_API_KEY}' + secret: '${env:TEAM_API_SECRET}' + +functions: + autotask-example-1: + name: 'Hello world from serverless' + path: './autotasks/hello-world' + relayer: ${self:resources.Resources.relayers.relayer-1} + trigger: + type: 'schedule' + frequency: 1500 + paused: false + +resources: + Resources: + policies: + policy-1: + gas-price-cap: 1000 + whitelist-receivers: + - '0x0f06aB75c7DD497981b75CD82F6566e3a5CAd8f2' + eip1559-pricing: true + + relayers: + relayer-1: + name: 'Test Relayer 1' + network: 'goerli' + min-balance: 1000 + policy: ${self:resources.Resources.policies.policy-1} + api-keys: + - key1 + +plugins: + - '@openzeppelin/defender-serverless' +``` + +This requires setting the `key` and `secret` under the `defender` property of the YAML file. We recommend using environment variables or a secure (gitignored) configuration file to retrieve these values. Modify the `serverless.yml` accordingly. + +Ensure the Defender Team API Keys are setup with all appropriate API capabilities. + +The `stackName` (e.g. mystack) is combined with the resource key (e.g. relayer-1) to uniquely identify each resource. This identifier is called the `stackResourceId` (e.g. mystack.relayer-1) and allows you to manage multiple deployments within the same Defender team. + +### SSOT mode + +Under the `provider` property in the `serverless.yml` file, you can optionally add a `ssot` boolean. SSOT or Single Source of Truth, ensures that the state of your stack in Defender is perfectly in sync with the `serverless.yml` template. +This means that all Defender resources, that are not defined in your current template file, are removed from Defender, with the exception of Relayers, upon deployment. If SSOT is not defined in the template, it will default to `false`. + +Any resource removed from the `serverless.yml` file does _not_ get automatically deleted in order to prevent inadvertent resource deletion. For this behaviour to be anticipated, SSOT mode must be enabled. + +### Block Explorer Api Keys + +Exported serverless configurations with Block Explorer Api Keys will not contain the `key` field but instead a `key-hash` field which is a keccak256 hash of the key. This must be replaced with the actual `key` field (and `key-hash` removed) before deploying + +### Secrets (Autotask) + +Autotask secrets can be defined both globally and per stack. Secrets defined under `global` are not affected by changes to the `stackName` and will retain when redeployed under a new stack. Secrets defined under `stack` will be removed (on the condition that [SSOT mode](#SSOT-mode) is enabled) when the stack is redeployed under a new `stackName`. To reference secrets defined under `stack`, use the following format: `_`, for example `mystack_test`. + +```yaml +secrets: + # optional - global secrets are not affected by stackName changes + global: + foo: ${self:custom.config.secrets.foo} + hello: ${self:custom.config.secrets.hello} + # optional - stack secrets (formatted as _) + stack: + test: ${self:custom.config.secrets.test} +``` + +### Types and Schema validation + +We provide auto-generated documentation based on the JSON schemas: + +- [Defender Property](https://github.com/OpenZeppelin/defender-serverless/blob/main/src/types/docs/defender.md) +- [Provider Property](https://github.com/OpenZeppelin/defender-serverless/blob/main/src/types/docs/provider.md) +- [Function (Autotask) Property](https://github.com/OpenZeppelin/defender-serverless/blob/main/src/types/docs/function.md) +- [Resources Property](https://github.com/OpenZeppelin/defender-serverless/blob/main/src/types/docs/resources.md) + +More information on types can be found [here](https://github.com/OpenZeppelin/defender-serverless/blob/main/src/types/index.ts). Specifically, the types preceded with `Y` (e.g. YRelayer). For the schemas, you can check out the [docs-schema](https://github.com/OpenZeppelin/defender-serverless/blob/main/src/types/docs-schemas) folder. + +Additionally, an [example project](https://github.com/OpenZeppelin/defender-serverless/blob/main/examples/defender-test-project/serverless.yml) is available which provides majority of properties that can be defined in the `serverless.yml` file. + +## Commands + +### Deploy + +You can use `sls deploy` to deploy your current stack to Defender. + +The deploy takes in an optional `--stage` flag, which is defaulted to `dev` when installed from the template above. + +Moreover, the `serverless.yml` may contain an `ssot` property. More information can be found in the [SSOT mode](#SSOT-mode) section. + +This command will append a log entry in the `.defender` folder of the current working directory. Additionally, if any new relayer keys are created, these will be stored as JSON objects in the `.defender/relayer-keys` folder. + +> When installed from the template, we ensure the `.defender` folder is ignored from any git commits. However, when installing directly, make sure to add this folder it your `.gitignore` file. + +### Info + +You can use `sls info` to retrieve information on every resource defined in the `serverless.yml` file, including unique identifiers, and properties unique to each Defender component. + +### Remove + +You can use `sls remove` to remove all defender resources defined in the `serverless.yml` file. + +> To avoid potential loss of funds, Relayers can only be deleted from the Defender UI directly. + +### Logs + +You can use `sls logs --function --data {...}` to retrieve the latest autotask logs for a given autotask identifier (e.g. mystack.autotask-example-1). This command will run continiously and retrieve logs every 2 seconds. The `--data` flag is optional. + +### Invoke + +You can use `sls invoke --function ` to manually run an autotask, given its identifier (e.g. mystack.autotask-example-1). + +> Each command has a standard output to a JSON object. + +More information can be found on our documentation page [here](https://docs.openzeppelin.com/defender/serverless-plugin.html) + +## Caveats + +Note that when setting up the notification configuration for a sentinel, the `channels` property will always be prioritised over `category`. A notification category can only be associated to a sentinel with no linked notification channels. This means that the `channels` property should be assigned the value `[]` in order to prioritise the `category` property. + +```yaml +notify-config: + channels: [] # assign channels as empty list if you wish to use a category + category: ${self:resources.Resources.categories.medium-severity} # optional +``` + +Errors thrown during the `deploy` process, will not revert any prior changes. Common errors are: + +- Not having set the API key and secret +- Insufficient permissions for the API key +- Validation error of the `serverless.yml` file (see [Types and Schema validation](#Types-and-Schema-validation)) + +Usually, fixing the error and retrying the deploy should suffice as any existing resources will fall within the `update` clause of the deployment. However, if unsure, you can always call `sls remove` to remove the entire stack, and retry. + +## Publish a new release + +```bash +npm login +git checkout main +git pull origin main +yarn publish --no-git-tag-version +# enter new version at prompt +git add package.json +git commit -m 'v{version here}' +git push origin main +``` diff --git a/examples/defender-test-project/.gitignore b/examples/defender-test-project/.gitignore new file mode 100644 index 0000000..2996ebc --- /dev/null +++ b/examples/defender-test-project/.gitignore @@ -0,0 +1,15 @@ +# package directories +node_modules +jspm_packages + +# Serverless directories +.serverless + +# Other +.env +*.log +.DS_Store + +# Defender +secrets*.yml +.defender \ No newline at end of file diff --git a/examples/defender-test-project/abis/demoflash.json.abi b/examples/defender-test-project/abis/demoflash.json.abi new file mode 100644 index 0000000..2f9a93e --- /dev/null +++ b/examples/defender-test-project/abis/demoflash.json.abi @@ -0,0 +1,203 @@ +[ + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "addr", + "type": "address" + }, + { + "indexed": false, + "internalType": "string", + "name": "m", + "type": "string" + } + ], + "name": "Addr", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "_0", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "_1", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "string", + "name": "m", + "type": "string" + } + ], + "name": "Amt", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "_0", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "string", + "name": "m", + "type": "string" + } + ], + "name": "Amt", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "tokenA", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "tokenB", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "output", + "type": "uint256" + } + ], + "name": "Arbitrage", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "tokenA", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "tokenB", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "minimumOutput", + "type": "uint256" + } + ], + "name": "ArbitrageFailed", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "int256", + "name": "x1", + "type": "int256" + }, + { + "indexed": false, + "internalType": "int256", + "name": "x2", + "type": "int256" + } + ], + "name": "CalX", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "input", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "output", + "type": "uint256" + } + ], + "name": "Sqrt", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount0", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount1", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "UniswapCalled", + "type": "event" + }, + { + "inputs": [], + "name": "flash", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { "internalType": "address", "name": "sender", "type": "address" }, + { "internalType": "uint256", "name": "amount0", "type": "uint256" }, + { "internalType": "uint256", "name": "amount1", "type": "uint256" }, + { "internalType": "bytes", "name": "data", "type": "bytes" } + ], + "name": "uniswapV2Call", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } +] diff --git a/examples/defender-test-project/abis/erc721.json.abi b/examples/defender-test-project/abis/erc721.json.abi new file mode 100644 index 0000000..d398fae --- /dev/null +++ b/examples/defender-test-project/abis/erc721.json.abi @@ -0,0 +1,420 @@ +[ + { + "inputs": [], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "approved", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "indexed": false, + "internalType": "bool", + "name": "approved", + "type": "bool" + } + ], + "name": "ApprovalForAll", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "previousOwner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "OwnershipTransferred", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "burn", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "getApproved", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "operator", + "type": "address" + } + ], + "name": "isApprovedForAll", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "owner", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "ownerOf", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "renounceOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "safeMint", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "safeTransferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "_data", + "type": "bytes" + } + ], + "name": "safeTransferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "internalType": "bool", + "name": "approved", + "type": "bool" + } + ], + "name": "setApprovalForAll", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes4", + "name": "interfaceId", + "type": "bytes4" + } + ], + "name": "supportsInterface", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "symbol", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "tokenURI", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "transferOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } +] diff --git a/examples/defender-test-project/autotasks/hello-world/index.js b/examples/defender-test-project/autotasks/hello-world/index.js new file mode 100644 index 0000000..caac5fe --- /dev/null +++ b/examples/defender-test-project/autotasks/hello-world/index.js @@ -0,0 +1,5 @@ +exports.handler = async function (event) { + console.log(`Hello world from serverless`); + console.log(JSON.stringify(event)); + return `Hello world from serverless`; +}; diff --git a/examples/defender-test-project/package.json b/examples/defender-test-project/package.json new file mode 100644 index 0000000..47e0989 --- /dev/null +++ b/examples/defender-test-project/package.json @@ -0,0 +1,27 @@ +{ + "name": "defender-test-project", + "version": "1.0.0", + "description": "Test project for the defender-serverless plugin", + "main": "handler.js", + "engines": { + "node": ">14.16" + }, + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "contributors": [ + { + "name": "Santiago Palladino", + "email": "santiago@openzeppelin.com" + }, + { + "name": "Nami Shah", + "email": "nami@openzeppelin.com" + } + ], + "license": "MIT", + "devDependencies": { + "@openzeppelin/defender-serverless": "^1.2.0", + "serverless": "^3.20.0" + } +} diff --git a/examples/defender-test-project/serverless.yml b/examples/defender-test-project/serverless.yml new file mode 100644 index 0000000..d28b88c --- /dev/null +++ b/examples/defender-test-project/serverless.yml @@ -0,0 +1,205 @@ +service: defender-serverless-test-project +configValidationMode: error +frameworkVersion: '3' + +provider: + name: defender + stage: ${opt:stage, 'dev'} + stackName: 'mystack' + # SSOT: use this template as a single source of truth. + # This will delete Defender resources (with the exception of Relayers) not found in this template upon deployment. + ssot: false + +custom: + config: ${file(secrets.${self:provider.stage}.yml)} + +defender: + key: ${self:custom.config.keys.api} + secret: ${self:custom.config.keys.secret} + +functions: + autotask-example-1: + name: 'Hello world from serverless' + path: './autotasks/hello-world' + # optional + relayer: ${self:resources.Resources.relayers.relayer-1} + trigger: + type: 'schedule' # or webhook + # optional if not cron + frequency: 1500 + # optional + cron: null + paused: false + autotask-example-2: + name: 'Hello world from serverless 2' + path: './autotasks/hello-world' + trigger: + type: 'schedule' + cron: '0 */12 * * *' + paused: false + autotask-example-3: + name: 'Hello world from serverless 3' + path: './autotasks/hello-world' + trigger: + type: 'webhook' + paused: false + +resources: + Resources: + policies: + policy-1: + # optional + gas-price-cap: 1000 + # optional + whitelist-receivers: + - '0x0f06aB75c7DD497981b75CD82F6566e3a5CAd8f2' + # optional + eip1559-pricing: true + private-transactions: true + + secrets: + # optional - global secrets are not affected by stackName changes + global: + foo: ${self:custom.config.secrets.foo} + hello: ${self:custom.config.secrets.hello} + test: ${self:custom.config.secrets.test} + # optional - stack secrets (formatted as _) + stack: + test: ${self:custom.config.secrets.test} + + contracts: + contract-1: + name: 'Demo-Flash' + address: '0xA91382E82fB676d4c935E601305E5253b3829dCD' + network: 'mainnet' + # optional + abi: ${file(./abis/demoflash.json.abi)} + # optional + nat-spec: null + + relayers: + relayer-1: + name: 'Test Relayer 1' + network: 'goerli' + min-balance: 1000 + # optional + policy: ${self:resources.Resources.policies.policy-1} + relayer-2: + name: 'Test Relayer 2' + network: 'mainnet' + min-balance: 1000 + # optional (make sure relayer-1 is above current relayer) + address-from-relayer: ${self:resources.Resources.relayers.relayer-1} + # optional + policy: ${self:resources.Resources.policies.policy-1} + + notifications: + email-1: + type: 'email' + name: 'Nami' + config: + emails: + - ${self:custom.config.notifications.nami} + paused: false + slack-1: + type: 'slack' + name: 'Workspace Slack' + config: + url: ${self:custom.config.notifications.slack} + paused: false + + categories: + high-severity: + name: High Severity + # optional + description: A default category to be assigned for high risk monitors. + low-severity: + name: Low Severity + # optional + description: A default category to be assigned for low risk monitors. + medium-severity: + name: Medium Severity + # optional + description: A default category to be assigned for medium risk monitors. + # optional + notification-ids: + - ${self:resources.Resources.notifications.email-1} + - ${self:resources.Resources.notifications.slack-1} + + sentinels: + # unique resource name + block-example: + name: 'Block Example' + type: 'BLOCK' + network: 'goerli' + risk-category: 'TECHNICAL' # optional + addresses: + - '0x0f06aB75c7DD497981b75CD82F6566e3a5CAd8f2' + # optional + abi: ${file(./abis/erc721.json.abi)} + # optional + alert-threshold: + amount: 2 + window-seconds: 3600 + # optional + paused: false + # optional + autotask-condition: ${self:functions.autotask-example-1} + # optional + autotask-trigger: null + # optional + confirm-level: 1 # or 'safe' or 'finalized' + notify-config: + timeout: 0 # optional + message: null # optional + channels: + - ${self:resources.Resources.notifications.email-1} + # optional + conditions: + event: + - signature: 'OwnershipTransferred(address,address)' + expression: 'previousOwner=0x0f06aB75c7DD497981b75CD82F6566e3a5CAd8f2' # optional + function: + - signature: 'renounceOwnership()' + expression: null # optional + transaction: 'gasPrice > 0' # optional expression + forta-example: + name: 'Forta Example' + type: 'FORTA' + network: 'mainnet' + # optional if agent-ids is defined + addresses: + - '0x318958A61A3dFa42fBdAA6A28A4F481678D943cC' + # optional + alert-threshold: + amount: 2 + window-seconds: 3600 + # optional + paused: false + # optional + autotask-condition: ${self:functions.autotask-example-1} + # optional + autotask-trigger: null + notify-config: + timeout: 0 # optional + message: null # optional + channels: [] # assign channels as empty list if you wish to use a category + category: ${self:resources.Resources.categories.medium-severity} # optional (only used if channels is empty) + # optional + conditions: + min-scanner-count: 1 + severity: 2 # optional (unknown=0, info=1, low=2, medium=3, high=4, critical=5) + # optional + alert-ids: + - '123' + - '456' + # optional + forta-node-id: '123' + # optional if addresses is defined + agent-ids: + - '0x8fe07f1a4d33b30be2387293f052c273660c829e9a6965cf7e8d485bcb871083' + # optional + forta-last-processed-time: null + +plugins: + - '@openzeppelin/defender-serverless' diff --git a/examples/defender-test-project/yarn.lock b/examples/defender-test-project/yarn.lock new file mode 100644 index 0000000..7e366a4 --- /dev/null +++ b/examples/defender-test-project/yarn.lock @@ -0,0 +1,3564 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +"2-thenable@^1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/2-thenable/-/2-thenable-1.0.0.tgz#56e9a2e363293b1e507f501aac1aa9927670b2fc" + integrity sha512-HqiDzaLDFCXkcCO/SwoyhRwqYtINFHF7t9BDRq4x90TOKNAJpiqUt9X5lQ08bwxYzc067HUywDjGySpebHcUpw== + dependencies: + d "1" + es5-ext "^0.10.47" + +"@aws-crypto/sha256-js@1.2.2": + version "1.2.2" + resolved "https://registry.yarnpkg.com/@aws-crypto/sha256-js/-/sha256-js-1.2.2.tgz#02acd1a1fda92896fc5a28ec7c6e164644ea32fc" + integrity sha512-Nr1QJIbW/afYYGzYvrF70LtaHrIRtd4TNAglX8BvlfxJLZ45SAmueIKYl5tWoNBPzp65ymXGFK0Bb1vZUpuc9g== + dependencies: + "@aws-crypto/util" "^1.2.2" + "@aws-sdk/types" "^3.1.0" + tslib "^1.11.1" + +"@aws-crypto/util@^1.2.2": + version "1.2.2" + resolved "https://registry.yarnpkg.com/@aws-crypto/util/-/util-1.2.2.tgz#b28f7897730eb6538b21c18bd4de22d0ea09003c" + integrity sha512-H8PjG5WJ4wz0UXAFXeJjWCW1vkvIJ3qUUD+rGRwJ2/hj+xT58Qle2MTql/2MGzkU+1JLAFuR6aJpLAjHwhmwwg== + dependencies: + "@aws-sdk/types" "^3.1.0" + "@aws-sdk/util-utf8-browser" "^3.0.0" + tslib "^1.11.1" + +"@aws-sdk/types@^3.1.0": + version "3.347.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/types/-/types-3.347.0.tgz#4affe91de36ef227f6375d64a6efda8d4ececd5d" + integrity sha512-GkCMy79mdjU9OTIe5KT58fI/6uqdf8UmMdWqVHmFJ+UpEzOci7L/uw4sOXWo7xpPzLs6cJ7s5ouGZW4GRPmHFA== + dependencies: + tslib "^2.5.0" + +"@aws-sdk/util-utf8-browser@^3.0.0": + version "3.259.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-utf8-browser/-/util-utf8-browser-3.259.0.tgz#3275a6f5eb334f96ca76635b961d3c50259fd9ff" + integrity sha512-UvFa/vR+e19XookZF8RzFZBrw2EUkQWxiBW0yYQAhvk3C+QVGl0H3ouca8LDBlBfQKXwmW3huo/59H8rwb1wJw== + dependencies: + tslib "^2.3.1" + +"@colors/colors@1.5.0": + version "1.5.0" + resolved "https://registry.yarnpkg.com/@colors/colors/-/colors-1.5.0.tgz#bb504579c1cae923e6576a4f5da43d25f97bdbd9" + integrity sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ== + +"@ethersproject/abi@5.7.0", "@ethersproject/abi@^5.6.3", "@ethersproject/abi@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/abi/-/abi-5.7.0.tgz#b3f3e045bbbeed1af3947335c247ad625a44e449" + integrity sha512-351ktp42TiRcYB3H1OP8yajPeAQstMW/yCFokj/AthP9bLHzQFPlOrxOcwYEDkUAICmOHljvN4K39OMTMUa9RA== + dependencies: + "@ethersproject/address" "^5.7.0" + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/constants" "^5.7.0" + "@ethersproject/hash" "^5.7.0" + "@ethersproject/keccak256" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/strings" "^5.7.0" + +"@ethersproject/abstract-provider@5.7.0", "@ethersproject/abstract-provider@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/abstract-provider/-/abstract-provider-5.7.0.tgz#b0a8550f88b6bf9d51f90e4795d48294630cb9ef" + integrity sha512-R41c9UkchKCpAqStMYUpdunjo3pkEvZC3FAwZn5S5MGbXoMQOHIdHItezTETxAO5bevtMApSyEhn9+CHcDsWBw== + dependencies: + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/networks" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/transactions" "^5.7.0" + "@ethersproject/web" "^5.7.0" + +"@ethersproject/abstract-signer@5.7.0", "@ethersproject/abstract-signer@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/abstract-signer/-/abstract-signer-5.7.0.tgz#13f4f32117868452191a4649723cb086d2b596b2" + integrity sha512-a16V8bq1/Cz+TGCkE2OPMTOUDLS3grCpdjoJCYNnVBbdYEMSgKrU0+B90s8b6H+ByYTBZN7a3g76jdIJi7UfKQ== + dependencies: + "@ethersproject/abstract-provider" "^5.7.0" + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + +"@ethersproject/address@5.7.0", "@ethersproject/address@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/address/-/address-5.7.0.tgz#19b56c4d74a3b0a46bfdbb6cfcc0a153fc697f37" + integrity sha512-9wYhYt7aghVGo758POM5nqcOMaE168Q6aRLJZwUmiqSrAungkG74gSSeKEIR7ukixesdRZGPgVqme6vmxs1fkA== + dependencies: + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/keccak256" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/rlp" "^5.7.0" + +"@ethersproject/base64@5.7.0", "@ethersproject/base64@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/base64/-/base64-5.7.0.tgz#ac4ee92aa36c1628173e221d0d01f53692059e1c" + integrity sha512-Dr8tcHt2mEbsZr/mwTPIQAf3Ai0Bks/7gTw9dSqk1mQvhW3XvRlmDJr/4n+wg1JmCl16NZue17CDh8xb/vZ0sQ== + dependencies: + "@ethersproject/bytes" "^5.7.0" + +"@ethersproject/basex@5.7.0", "@ethersproject/basex@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/basex/-/basex-5.7.0.tgz#97034dc7e8938a8ca943ab20f8a5e492ece4020b" + integrity sha512-ywlh43GwZLv2Voc2gQVTKBoVQ1mti3d8HK5aMxsfu/nRDnMmNqaSJ3r3n85HBByT8OpoY96SXM1FogC533T4zw== + dependencies: + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + +"@ethersproject/bignumber@5.7.0", "@ethersproject/bignumber@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/bignumber/-/bignumber-5.7.0.tgz#e2f03837f268ba655ffba03a57853e18a18dc9c2" + integrity sha512-n1CAdIHRWjSucQO3MC1zPSVgV/6dy/fjL9pMrPP9peL+QxEg9wOsVqwD4+818B6LUEtaXzVHQiuivzRoxPxUGw== + dependencies: + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + bn.js "^5.2.1" + +"@ethersproject/bytes@5.7.0", "@ethersproject/bytes@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/bytes/-/bytes-5.7.0.tgz#a00f6ea8d7e7534d6d87f47188af1148d71f155d" + integrity sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A== + dependencies: + "@ethersproject/logger" "^5.7.0" + +"@ethersproject/constants@5.7.0", "@ethersproject/constants@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/constants/-/constants-5.7.0.tgz#df80a9705a7e08984161f09014ea012d1c75295e" + integrity sha512-DHI+y5dBNvkpYUMiRQyxRBYBefZkJfo70VUkUAsRjcPs47muV9evftfZ0PJVCXYbAiCgght0DtcF9srFQmIgWA== + dependencies: + "@ethersproject/bignumber" "^5.7.0" + +"@ethersproject/contracts@5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/contracts/-/contracts-5.7.0.tgz#c305e775abd07e48aa590e1a877ed5c316f8bd1e" + integrity sha512-5GJbzEU3X+d33CdfPhcyS+z8MzsTrBGk/sc+G+59+tPa9yFkl6HQ9D6L0QMgNTA9q8dT0XKxxkyp883XsQvbbg== + dependencies: + "@ethersproject/abi" "^5.7.0" + "@ethersproject/abstract-provider" "^5.7.0" + "@ethersproject/abstract-signer" "^5.7.0" + "@ethersproject/address" "^5.7.0" + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/constants" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/transactions" "^5.7.0" + +"@ethersproject/hash@5.7.0", "@ethersproject/hash@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/hash/-/hash-5.7.0.tgz#eb7aca84a588508369562e16e514b539ba5240a7" + integrity sha512-qX5WrQfnah1EFnO5zJv1v46a8HW0+E5xuBBDTwMFZLuVTx0tbU2kkx15NqdjxecrLGatQN9FGQKpb1FKdHCt+g== + dependencies: + "@ethersproject/abstract-signer" "^5.7.0" + "@ethersproject/address" "^5.7.0" + "@ethersproject/base64" "^5.7.0" + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/keccak256" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/strings" "^5.7.0" + +"@ethersproject/hdnode@5.7.0", "@ethersproject/hdnode@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/hdnode/-/hdnode-5.7.0.tgz#e627ddc6b466bc77aebf1a6b9e47405ca5aef9cf" + integrity sha512-OmyYo9EENBPPf4ERhR7oj6uAtUAhYGqOnIS+jE5pTXvdKBS99ikzq1E7Iv0ZQZ5V36Lqx1qZLeak0Ra16qpeOg== + dependencies: + "@ethersproject/abstract-signer" "^5.7.0" + "@ethersproject/basex" "^5.7.0" + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/pbkdf2" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/sha2" "^5.7.0" + "@ethersproject/signing-key" "^5.7.0" + "@ethersproject/strings" "^5.7.0" + "@ethersproject/transactions" "^5.7.0" + "@ethersproject/wordlists" "^5.7.0" + +"@ethersproject/json-wallets@5.7.0", "@ethersproject/json-wallets@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/json-wallets/-/json-wallets-5.7.0.tgz#5e3355287b548c32b368d91014919ebebddd5360" + integrity sha512-8oee5Xgu6+RKgJTkvEMl2wDgSPSAQ9MB/3JYjFV9jlKvcYHUXZC+cQp0njgmxdHkYWn8s6/IqIZYm0YWCjO/0g== + dependencies: + "@ethersproject/abstract-signer" "^5.7.0" + "@ethersproject/address" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/hdnode" "^5.7.0" + "@ethersproject/keccak256" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/pbkdf2" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/random" "^5.7.0" + "@ethersproject/strings" "^5.7.0" + "@ethersproject/transactions" "^5.7.0" + aes-js "3.0.0" + scrypt-js "3.0.1" + +"@ethersproject/keccak256@5.7.0", "@ethersproject/keccak256@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/keccak256/-/keccak256-5.7.0.tgz#3186350c6e1cd6aba7940384ec7d6d9db01f335a" + integrity sha512-2UcPboeL/iW+pSg6vZ6ydF8tCnv3Iu/8tUmLLzWWGzxWKFFqOBQFLo6uLUv6BDrLgCDfN28RJ/wtByx+jZ4KBg== + dependencies: + "@ethersproject/bytes" "^5.7.0" + js-sha3 "0.8.0" + +"@ethersproject/logger@5.7.0", "@ethersproject/logger@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/logger/-/logger-5.7.0.tgz#6ce9ae168e74fecf287be17062b590852c311892" + integrity sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig== + +"@ethersproject/networks@5.7.1", "@ethersproject/networks@^5.7.0": + version "5.7.1" + resolved "https://registry.yarnpkg.com/@ethersproject/networks/-/networks-5.7.1.tgz#118e1a981d757d45ccea6bb58d9fd3d9db14ead6" + integrity sha512-n/MufjFYv3yFcUyfhnXotyDlNdFb7onmkSy8aQERi2PjNcnWQ66xXxa3XlS8nCcA8aJKJjIIMNJTC7tu80GwpQ== + dependencies: + "@ethersproject/logger" "^5.7.0" + +"@ethersproject/pbkdf2@5.7.0", "@ethersproject/pbkdf2@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/pbkdf2/-/pbkdf2-5.7.0.tgz#d2267d0a1f6e123f3771007338c47cccd83d3102" + integrity sha512-oR/dBRZR6GTyaofd86DehG72hY6NpAjhabkhxgr3X2FpJtJuodEl2auADWBZfhDHgVCbu3/H/Ocq2uC6dpNjjw== + dependencies: + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/sha2" "^5.7.0" + +"@ethersproject/properties@5.7.0", "@ethersproject/properties@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/properties/-/properties-5.7.0.tgz#a6e12cb0439b878aaf470f1902a176033067ed30" + integrity sha512-J87jy8suntrAkIZtecpxEPxY//szqr1mlBaYlQ0r4RCaiD2hjheqF9s1LVE8vVuJCXisjIP+JgtK/Do54ej4Sw== + dependencies: + "@ethersproject/logger" "^5.7.0" + +"@ethersproject/providers@5.7.2": + version "5.7.2" + resolved "https://registry.yarnpkg.com/@ethersproject/providers/-/providers-5.7.2.tgz#f8b1a4f275d7ce58cf0a2eec222269a08beb18cb" + integrity sha512-g34EWZ1WWAVgr4aptGlVBF8mhl3VWjv+8hoAnzStu8Ah22VHBsuGzP17eb6xDVRzw895G4W7vvx60lFFur/1Rg== + dependencies: + "@ethersproject/abstract-provider" "^5.7.0" + "@ethersproject/abstract-signer" "^5.7.0" + "@ethersproject/address" "^5.7.0" + "@ethersproject/base64" "^5.7.0" + "@ethersproject/basex" "^5.7.0" + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/constants" "^5.7.0" + "@ethersproject/hash" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/networks" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/random" "^5.7.0" + "@ethersproject/rlp" "^5.7.0" + "@ethersproject/sha2" "^5.7.0" + "@ethersproject/strings" "^5.7.0" + "@ethersproject/transactions" "^5.7.0" + "@ethersproject/web" "^5.7.0" + bech32 "1.1.4" + ws "7.4.6" + +"@ethersproject/random@5.7.0", "@ethersproject/random@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/random/-/random-5.7.0.tgz#af19dcbc2484aae078bb03656ec05df66253280c" + integrity sha512-19WjScqRA8IIeWclFme75VMXSBvi4e6InrUNuaR4s5pTF2qNhcGdCUwdxUVGtDDqC00sDLCO93jPQoDUH4HVmQ== + dependencies: + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + +"@ethersproject/rlp@5.7.0", "@ethersproject/rlp@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/rlp/-/rlp-5.7.0.tgz#de39e4d5918b9d74d46de93af80b7685a9c21304" + integrity sha512-rBxzX2vK8mVF7b0Tol44t5Tb8gomOHkj5guL+HhzQ1yBh/ydjGnpw6at+X6Iw0Kp3OzzzkcKp8N9r0W4kYSs9w== + dependencies: + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + +"@ethersproject/sha2@5.7.0", "@ethersproject/sha2@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/sha2/-/sha2-5.7.0.tgz#9a5f7a7824ef784f7f7680984e593a800480c9fb" + integrity sha512-gKlH42riwb3KYp0reLsFTokByAKoJdgFCwI+CCiX/k+Jm2mbNs6oOaCjYQSlI1+XBVejwH2KrmCbMAT/GnRDQw== + dependencies: + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + hash.js "1.1.7" + +"@ethersproject/signing-key@5.7.0", "@ethersproject/signing-key@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/signing-key/-/signing-key-5.7.0.tgz#06b2df39411b00bc57c7c09b01d1e41cf1b16ab3" + integrity sha512-MZdy2nL3wO0u7gkB4nA/pEf8lu1TlFswPNmy8AiYkfKTdO6eXBJyUdmHO/ehm/htHw9K/qF8ujnTyUAD+Ry54Q== + dependencies: + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + bn.js "^5.2.1" + elliptic "6.5.4" + hash.js "1.1.7" + +"@ethersproject/solidity@5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/solidity/-/solidity-5.7.0.tgz#5e9c911d8a2acce2a5ebb48a5e2e0af20b631cb8" + integrity sha512-HmabMd2Dt/raavyaGukF4XxizWKhKQ24DoLtdNbBmNKUOPqwjsKQSdV9GQtj9CBEea9DlzETlVER1gYeXXBGaA== + dependencies: + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/keccak256" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/sha2" "^5.7.0" + "@ethersproject/strings" "^5.7.0" + +"@ethersproject/strings@5.7.0", "@ethersproject/strings@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/strings/-/strings-5.7.0.tgz#54c9d2a7c57ae8f1205c88a9d3a56471e14d5ed2" + integrity sha512-/9nu+lj0YswRNSH0NXYqrh8775XNyEdUQAuf3f+SmOrnVewcJ5SBNAjF7lpgehKi4abvNNXyf+HX86czCdJ8Mg== + dependencies: + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/constants" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + +"@ethersproject/transactions@5.7.0", "@ethersproject/transactions@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/transactions/-/transactions-5.7.0.tgz#91318fc24063e057885a6af13fdb703e1f993d3b" + integrity sha512-kmcNicCp1lp8qanMTC3RIikGgoJ80ztTyvtsFvCYpSCfkjhD0jZ2LOrnbcuxuToLIUYYf+4XwD1rP+B/erDIhQ== + dependencies: + "@ethersproject/address" "^5.7.0" + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/constants" "^5.7.0" + "@ethersproject/keccak256" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/rlp" "^5.7.0" + "@ethersproject/signing-key" "^5.7.0" + +"@ethersproject/units@5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/units/-/units-5.7.0.tgz#637b563d7e14f42deeee39245275d477aae1d8b1" + integrity sha512-pD3xLMy3SJu9kG5xDGI7+xhTEmGXlEqXU4OfNapmfnxLVY4EMSSRp7j1k7eezutBPH7RBN/7QPnwR7hzNlEFeg== + dependencies: + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/constants" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + +"@ethersproject/wallet@5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/wallet/-/wallet-5.7.0.tgz#4e5d0790d96fe21d61d38fb40324e6c7ef350b2d" + integrity sha512-MhmXlJXEJFBFVKrDLB4ZdDzxcBxQ3rLyCkhNqVu3CDYvR97E+8r01UgrI+TI99Le+aYm/in/0vp86guJuM7FCA== + dependencies: + "@ethersproject/abstract-provider" "^5.7.0" + "@ethersproject/abstract-signer" "^5.7.0" + "@ethersproject/address" "^5.7.0" + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/hash" "^5.7.0" + "@ethersproject/hdnode" "^5.7.0" + "@ethersproject/json-wallets" "^5.7.0" + "@ethersproject/keccak256" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/random" "^5.7.0" + "@ethersproject/signing-key" "^5.7.0" + "@ethersproject/transactions" "^5.7.0" + "@ethersproject/wordlists" "^5.7.0" + +"@ethersproject/web@5.7.1", "@ethersproject/web@^5.7.0": + version "5.7.1" + resolved "https://registry.yarnpkg.com/@ethersproject/web/-/web-5.7.1.tgz#de1f285b373149bee5928f4eb7bcb87ee5fbb4ae" + integrity sha512-Gueu8lSvyjBWL4cYsWsjh6MtMwM0+H4HvqFPZfB6dV8ctbP9zFAO73VG1cMWae0FLPCtz0peKPpZY8/ugJJX2w== + dependencies: + "@ethersproject/base64" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/strings" "^5.7.0" + +"@ethersproject/wordlists@5.7.0", "@ethersproject/wordlists@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/wordlists/-/wordlists-5.7.0.tgz#8fb2c07185d68c3e09eb3bfd6e779ba2774627f5" + integrity sha512-S2TFNJNfHWVHNE6cNDjbVlZ6MgE17MIxMbMg2zv3wn+3XSJGosL1m9ZVv3GXCf/2ymSsQ+hRI5IzoMJTG6aoVA== + dependencies: + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/hash" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/strings" "^5.7.0" + +"@kwsites/file-exists@^1.1.1": + version "1.1.1" + resolved "https://registry.yarnpkg.com/@kwsites/file-exists/-/file-exists-1.1.1.tgz#ad1efcac13e1987d8dbaf235ef3be5b0d96faa99" + integrity sha512-m9/5YGR18lIwxSFDwfE3oA7bWuq9kdau6ugN4H2rJeyhFQZcG9AgSHkQtSD15a8WvTgfz9aikZMrKPHvbpqFiw== + dependencies: + debug "^4.1.1" + +"@kwsites/promise-deferred@^1.1.1": + version "1.1.1" + resolved "https://registry.yarnpkg.com/@kwsites/promise-deferred/-/promise-deferred-1.1.1.tgz#8ace5259254426ccef57f3175bc64ed7095ed919" + integrity sha512-GaHYm+c0O9MjZRu0ongGBRbinu8gVAMd2UZjji6jVmqKtZluZnptXGWhz1E8j8D2HJ3f/yMxKAUC0b+57wncIw== + +"@nodelib/fs.scandir@2.1.5": + version "2.1.5" + resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" + integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== + dependencies: + "@nodelib/fs.stat" "2.0.5" + run-parallel "^1.1.9" + +"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": + version "2.0.5" + resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b" + integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== + +"@nodelib/fs.walk@^1.2.3": + version "1.2.8" + resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a" + integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== + dependencies: + "@nodelib/fs.scandir" "2.1.5" + fastq "^1.6.0" + +"@openzeppelin/defender-admin-client@^1.46.0": + version "1.46.0" + resolved "https://registry.yarnpkg.com/@openzeppelin/defender-admin-client/-/defender-admin-client-1.46.0.tgz#b8af0269bda215a01108ce04d2bc6db872d84367" + integrity sha512-ZOt8z6Vce3vC1CgwZ3wt5paepfw1EHNcb0hssLkrbXBNeANcHI8e37p+VE6/DdEECoAKdQj2qQwggcsPqc19OQ== + dependencies: + "@openzeppelin/defender-base-client" "1.46.0" + axios "^0.21.2" + ethers "^5.7.2" + lodash "^4.17.19" + node-fetch "^2.6.0" + +"@openzeppelin/defender-autotask-client@^1.46.0": + version "1.46.0" + resolved "https://registry.yarnpkg.com/@openzeppelin/defender-autotask-client/-/defender-autotask-client-1.46.0.tgz#b89649ff039c1ac8013146dac7179218cb6c03a0" + integrity sha512-3HgVf6t7gNkMRikYUkN8UxG7syAskot9ExNt7okLRc8sMAaoMQu0f9KPMiidwUEm/dGRg5jmGTkl1l9r2KaVIw== + dependencies: + "@openzeppelin/defender-base-client" "1.46.0" + axios "^0.21.2" + dotenv "^10.0.0" + glob "^7.1.6" + jszip "^3.5.0" + lodash "^4.17.19" + node-fetch "^2.6.0" + +"@openzeppelin/defender-base-client@1.46.0", "@openzeppelin/defender-base-client@^1.46.0": + version "1.46.0" + resolved "https://registry.yarnpkg.com/@openzeppelin/defender-base-client/-/defender-base-client-1.46.0.tgz#aa5177f8fbad23fd03d78f3dbe06664bbe9333ff" + integrity sha512-EMnVBcfE6ZN5yMxfaxrFF3eqyGp2RQp3oSRSRP+R3yuCRJf8VCc2ArdZf1QPmQQzbq70nl8EZa03mmAqPauNlQ== + dependencies: + amazon-cognito-identity-js "^6.0.1" + async-retry "^1.3.3" + axios "^0.21.2" + lodash "^4.17.19" + node-fetch "^2.6.0" + +"@openzeppelin/defender-relay-client@^1.46.0": + version "1.46.0" + resolved "https://registry.yarnpkg.com/@openzeppelin/defender-relay-client/-/defender-relay-client-1.46.0.tgz#4c937edfd049a7b8a5fa3f15e63d6c9d44cc5d37" + integrity sha512-tkbNkdEaLZV0np32vX7c7/ExEuoWfyA4Q5WZzF7G09SWmbS38dvrBqRevT4bLDLgZcSvC0WU5jqBpQk1pqI8pw== + dependencies: + "@openzeppelin/defender-base-client" "1.46.0" + amazon-cognito-identity-js "^6.0.1" + axios "^0.21.2" + lodash "^4.17.19" + node-fetch "^2.6.0" + +"@openzeppelin/defender-sentinel-client@^1.46.0": + version "1.46.0" + resolved "https://registry.yarnpkg.com/@openzeppelin/defender-sentinel-client/-/defender-sentinel-client-1.46.0.tgz#b5f27b005a6c1ede7f584b7d1bef95b0deaee242" + integrity sha512-oQMmLlDMHzOmX6sU2tOQZEK5jq25fv58e3F6M/vvo9tCXUvNHYHwie2Ug/SSdHhIkPvrGKX1npUI0+MrBAyLPA== + dependencies: + "@ethersproject/abi" "^5.6.3" + "@openzeppelin/defender-base-client" "1.46.0" + axios "^0.21.2" + lodash "^4.17.19" + node-fetch "^2.6.0" + +"@openzeppelin/platform-deploy-client@^0.8.0": + version "0.8.0" + resolved "https://registry.yarnpkg.com/@openzeppelin/platform-deploy-client/-/platform-deploy-client-0.8.0.tgz#af6596275a19c283d6145f0128cc1247d18223c1" + integrity sha512-POx3AsnKwKSV/ZLOU/gheksj0Lq7Is1q2F3pKmcFjGZiibf+4kjGxr4eSMrT+2qgKYZQH1ZLQZ+SkbguD8fTvA== + dependencies: + "@ethersproject/abi" "^5.6.3" + "@openzeppelin/defender-base-client" "^1.46.0" + axios "^0.21.2" + lodash "^4.17.19" + node-fetch "^2.6.0" + +"@serverless/dashboard-plugin@^6.2.3": + version "6.2.3" + resolved "https://registry.yarnpkg.com/@serverless/dashboard-plugin/-/dashboard-plugin-6.2.3.tgz#039a94e8319dee85e78eb6adae051fb8505a3789" + integrity sha512-iTZhpZbiVl6G2AyfgoqxemqqpG4pUceWys3GsyZtjimnfnGd2UFBOMVUMTavLhYia7lQc4kQVuXQ+afLlkg+pQ== + dependencies: + "@serverless/event-mocks" "^1.1.1" + "@serverless/platform-client" "^4.3.2" + "@serverless/utils" "^6.8.2" + child-process-ext "^2.1.1" + chokidar "^3.5.3" + flat "^5.0.2" + fs-extra "^9.1.0" + js-yaml "^4.1.0" + jszip "^3.10.1" + lodash "^4.17.21" + memoizee "^0.4.15" + ncjsm "^4.3.2" + node-dir "^0.1.17" + node-fetch "^2.6.8" + open "^7.4.2" + semver "^7.3.8" + simple-git "^3.16.0" + type "^2.7.2" + uuid "^8.3.2" + yamljs "^0.3.0" + +"@serverless/event-mocks@^1.1.1": + version "1.1.1" + resolved "https://registry.yarnpkg.com/@serverless/event-mocks/-/event-mocks-1.1.1.tgz#7064b99ccc29d9a8e9b799f413dbcfd64ea3b7ee" + integrity sha512-YAV5V/y+XIOfd+HEVeXfPWZb8C6QLruFk9tBivoX2roQLWVq145s4uxf8D0QioCueuRzkukHUS4JIj+KVoS34A== + dependencies: + "@types/lodash" "^4.14.123" + lodash "^4.17.11" + +"@serverless/platform-client@^4.3.2": + version "4.3.2" + resolved "https://registry.yarnpkg.com/@serverless/platform-client/-/platform-client-4.3.2.tgz#10cd3ad8cf452a33528cfb14bbb6003d30a74805" + integrity sha512-DAa5Z0JAZc6UfrTZLYwqoZxgAponZpFwaqd7WzzMA+loMCkYWyJNwxrAmV6cr2UUJpkko4toPZuJ3vM9Ie+NDA== + dependencies: + adm-zip "^0.5.5" + archiver "^5.3.0" + axios "^0.21.1" + fast-glob "^3.2.7" + https-proxy-agent "^5.0.0" + ignore "^5.1.8" + isomorphic-ws "^4.0.1" + js-yaml "^3.14.1" + jwt-decode "^2.2.0" + minimatch "^3.0.4" + querystring "^0.2.1" + run-parallel-limit "^1.1.0" + throat "^5.0.0" + traverse "^0.6.6" + ws "^7.5.3" + +"@serverless/utils@^6.8.2": + version "6.8.2" + resolved "https://registry.yarnpkg.com/@serverless/utils/-/utils-6.8.2.tgz#6ec34e8308b74f219cc80704e417c1a438629dd0" + integrity sha512-FW8zdG8OPoF6qgyutiMhz4m/5SxbQjoQdbaGcW3wU6xe3QzQh41Hif7I3Xuu4J62CvxiWuz19sxNDJz2mTcskw== + dependencies: + archive-type "^4.0.0" + chalk "^4.1.2" + ci-info "^3.5.0" + cli-progress-footer "^2.3.2" + content-disposition "^0.5.4" + d "^1.0.1" + decompress "^4.2.1" + event-emitter "^0.3.5" + ext "^1.7.0" + ext-name "^5.0.0" + file-type "^16.5.4" + filenamify "^4.3.0" + get-stream "^6.0.1" + got "^11.8.5" + inquirer "^8.2.5" + js-yaml "^4.1.0" + jwt-decode "^3.1.2" + lodash "^4.17.21" + log "^6.3.1" + log-node "^8.0.3" + make-dir "^3.1.0" + memoizee "^0.4.15" + ncjsm "^4.3.1" + node-fetch "^2.6.7" + open "^8.4.0" + p-event "^4.2.0" + supports-color "^8.1.1" + timers-ext "^0.1.7" + type "^2.7.2" + uni-global "^1.0.0" + uuid "^8.3.2" + write-file-atomic "^4.0.2" + +"@sindresorhus/is@^4.0.0": + version "4.6.0" + resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-4.6.0.tgz#3c7c9c46e678feefe7a2e5bb609d3dbd665ffb3f" + integrity sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw== + +"@szmarczak/http-timer@^4.0.5": + version "4.0.6" + resolved "https://registry.yarnpkg.com/@szmarczak/http-timer/-/http-timer-4.0.6.tgz#b4a914bb62e7c272d4e5989fe4440f812ab1d807" + integrity sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w== + dependencies: + defer-to-connect "^2.0.0" + +"@tokenizer/token@^0.3.0": + version "0.3.0" + resolved "https://registry.yarnpkg.com/@tokenizer/token/-/token-0.3.0.tgz#fe98a93fe789247e998c75e74e9c7c63217aa276" + integrity sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A== + +"@types/cacheable-request@^6.0.1": + version "6.0.3" + resolved "https://registry.yarnpkg.com/@types/cacheable-request/-/cacheable-request-6.0.3.tgz#a430b3260466ca7b5ca5bfd735693b36e7a9d183" + integrity sha512-IQ3EbTzGxIigb1I3qPZc1rWJnH0BmSKv5QYTalEwweFvyBDLSAe24zP0le/hyi7ecGfZVlIVAg4BZqb8WBwKqw== + dependencies: + "@types/http-cache-semantics" "*" + "@types/keyv" "^3.1.4" + "@types/node" "*" + "@types/responselike" "^1.0.0" + +"@types/http-cache-semantics@*": + version "4.0.1" + resolved "https://registry.yarnpkg.com/@types/http-cache-semantics/-/http-cache-semantics-4.0.1.tgz#0ea7b61496902b95890dc4c3a116b60cb8dae812" + integrity sha512-SZs7ekbP8CN0txVG2xVRH6EgKmEm31BOxA07vkFaETzZz1xh+cbt8BcI0slpymvwhx5dlFnQG2rTlPVQn+iRPQ== + +"@types/keyv@^3.1.4": + version "3.1.4" + resolved "https://registry.yarnpkg.com/@types/keyv/-/keyv-3.1.4.tgz#3ccdb1c6751b0c7e52300bcdacd5bcbf8faa75b6" + integrity sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg== + dependencies: + "@types/node" "*" + +"@types/lodash@^4.14.123": + version "4.14.191" + resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.191.tgz#09511e7f7cba275acd8b419ddac8da9a6a79e2fa" + integrity sha512-BdZ5BCCvho3EIXw6wUCXHe7rS53AIDPLE+JzwgT+OsJk53oBfbSmZZ7CX4VaRoN78N+TJpFi9QPlfIVNmJYWxQ== + +"@types/node@*": + version "18.13.0" + resolved "https://registry.yarnpkg.com/@types/node/-/node-18.13.0.tgz#0400d1e6ce87e9d3032c19eb6c58205b0d3f7850" + integrity sha512-gC3TazRzGoOnoKAhUx+Q0t8S9Tzs74z7m0ipwGpSqQrleP14hKxP4/JUeEQcD3W1/aIpnWl8pHowI7WokuZpXg== + +"@types/responselike@^1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@types/responselike/-/responselike-1.0.0.tgz#251f4fe7d154d2bad125abe1b429b23afd262e29" + integrity sha512-85Y2BjiufFzaMIlvJDvTTB8Fxl2xfLo4HgmHzVBz08w4wDePCTjYw66PdrolO0kzli3yam/YCgRufyo1DdQVTA== + dependencies: + "@types/node" "*" + +adm-zip@^0.5.5: + version "0.5.10" + resolved "https://registry.yarnpkg.com/adm-zip/-/adm-zip-0.5.10.tgz#4a51d5ab544b1f5ce51e1b9043139b639afff45b" + integrity sha512-x0HvcHqVJNTPk/Bw8JbLWlWoo6Wwnsug0fnYYro1HBrjxZ3G7/AZk7Ahv8JwDe1uIcz8eBqvu86FuF1POiG7vQ== + +aes-js@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/aes-js/-/aes-js-3.0.0.tgz#e21df10ad6c2053295bcbb8dab40b09dbea87e4d" + integrity sha512-H7wUZRn8WpTq9jocdxQ2c8x2sKo9ZVmzfRE13GiNJXfp7NcKYEdvl3vspKjXox6RIG2VtaRe4JFvxG4rqp2Zuw== + +agent-base@6: + version "6.0.2" + resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-6.0.2.tgz#49fff58577cfee3f37176feab4c22e00f86d7f77" + integrity sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ== + dependencies: + debug "4" + +ajv-formats@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/ajv-formats/-/ajv-formats-2.1.1.tgz#6e669400659eb74973bbf2e33327180a0996b520" + integrity sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA== + dependencies: + ajv "^8.0.0" + +ajv@^8.0.0, ajv@^8.12.0: + version "8.12.0" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.12.0.tgz#d1a0527323e22f53562c567c00991577dfbe19d1" + integrity sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA== + dependencies: + fast-deep-equal "^3.1.1" + json-schema-traverse "^1.0.0" + require-from-string "^2.0.2" + uri-js "^4.2.2" + +amazon-cognito-identity-js@^6.0.1: + version "6.2.0" + resolved "https://registry.yarnpkg.com/amazon-cognito-identity-js/-/amazon-cognito-identity-js-6.2.0.tgz#99e96666944429cb8f67b62e4cf7ad77fbe71ad0" + integrity sha512-9Fxrp9+MtLdsJvqOwSaE3ll+pneICeuE3pwj2yDkiyGNWuHx97b8bVLR2bOgfDmDJnY0Hq8QoeXtwdM4aaXJjg== + dependencies: + "@aws-crypto/sha256-js" "1.2.2" + buffer "4.9.2" + fast-base64-decode "^1.0.0" + isomorphic-unfetch "^3.0.0" + js-cookie "^2.2.1" + +ansi-escapes@^4.2.1: + version "4.3.2" + resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.2.tgz#6b2291d1db7d98b6521d5f1efa42d0f3a9feb65e" + integrity sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ== + dependencies: + type-fest "^0.21.3" + +ansi-regex@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" + integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== + +ansi-styles@^4.0.0, ansi-styles@^4.1.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" + integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== + dependencies: + color-convert "^2.0.1" + +anymatch@~3.1.2: + version "3.1.3" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.3.tgz#790c58b19ba1720a84205b57c618d5ad8524973e" + integrity sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw== + dependencies: + normalize-path "^3.0.0" + picomatch "^2.0.4" + +archive-type@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/archive-type/-/archive-type-4.0.0.tgz#f92e72233056dfc6969472749c267bdb046b1d70" + integrity sha512-zV4Ky0v1F8dBrdYElwTvQhweQ0P7Kwc1aluqJsYtOBP01jXcWCyW2IEfI1YiqsG+Iy7ZR+o5LF1N+PGECBxHWA== + dependencies: + file-type "^4.2.0" + +archiver-utils@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/archiver-utils/-/archiver-utils-2.1.0.tgz#e8a460e94b693c3e3da182a098ca6285ba9249e2" + integrity sha512-bEL/yUb/fNNiNTuUz979Z0Yg5L+LzLxGJz8x79lYmR54fmTIb6ob/hNQgkQnIUDWIFjZVQwl9Xs356I6BAMHfw== + dependencies: + glob "^7.1.4" + graceful-fs "^4.2.0" + lazystream "^1.0.0" + lodash.defaults "^4.2.0" + lodash.difference "^4.5.0" + lodash.flatten "^4.4.0" + lodash.isplainobject "^4.0.6" + lodash.union "^4.6.0" + normalize-path "^3.0.0" + readable-stream "^2.0.0" + +archiver@^5.3.0, archiver@^5.3.1: + version "5.3.1" + resolved "https://registry.yarnpkg.com/archiver/-/archiver-5.3.1.tgz#21e92811d6f09ecfce649fbefefe8c79e57cbbb6" + integrity sha512-8KyabkmbYrH+9ibcTScQ1xCJC/CGcugdVIwB+53f5sZziXgwUh3iXlAlANMxcZyDEfTHMe6+Z5FofV8nopXP7w== + dependencies: + archiver-utils "^2.1.0" + async "^3.2.3" + buffer-crc32 "^0.2.1" + readable-stream "^3.6.0" + readdir-glob "^1.0.0" + tar-stream "^2.2.0" + zip-stream "^4.1.0" + +argparse@^1.0.7: + version "1.0.10" + resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" + integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== + dependencies: + sprintf-js "~1.0.2" + +argparse@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" + integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== + +array-union@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" + integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== + +asap@^2.0.0: + version "2.0.6" + resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46" + integrity sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA== + +async-retry@^1.3.3: + version "1.3.3" + resolved "https://registry.yarnpkg.com/async-retry/-/async-retry-1.3.3.tgz#0e7f36c04d8478e7a58bdbed80cedf977785f280" + integrity sha512-wfr/jstw9xNi/0teMHrRW7dsz3Lt5ARhYNZ2ewpadnhaIp5mbALhOAP+EAdsC7t4Z6wqsDVv9+W6gm1Dk9mEyw== + dependencies: + retry "0.13.1" + +async@3.2.3: + version "3.2.3" + resolved "https://registry.yarnpkg.com/async/-/async-3.2.3.tgz#ac53dafd3f4720ee9e8a160628f18ea91df196c9" + integrity sha512-spZRyzKL5l5BZQrr/6m/SqFdBN0q3OCI0f9rjfBzCMBIP4p75P620rR3gTmaksNOhmzgdxcaxdNfMy6anrbM0g== + +async@^2.6.4: + version "2.6.4" + resolved "https://registry.yarnpkg.com/async/-/async-2.6.4.tgz#706b7ff6084664cd7eae713f6f965433b5504221" + integrity sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA== + dependencies: + lodash "^4.17.14" + +async@^3.2.3: + version "3.2.4" + resolved "https://registry.yarnpkg.com/async/-/async-3.2.4.tgz#2d22e00f8cddeb5fde5dd33522b56d1cf569a81c" + integrity sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ== + +asynckit@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" + integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q== + +at-least-node@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/at-least-node/-/at-least-node-1.0.0.tgz#602cd4b46e844ad4effc92a8011a3c46e0238dc2" + integrity sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg== + +available-typed-arrays@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz#92f95616501069d07d10edb2fc37d3e1c65123b7" + integrity sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw== + +aws-sdk@^2.1303.0: + version "2.1315.0" + resolved "https://registry.yarnpkg.com/aws-sdk/-/aws-sdk-2.1315.0.tgz#24e485c21ea443b0bbc02c219601737ec2e5e1bb" + integrity sha512-fDlK3iqA0bpXW6azVBAB8RTKhJ5YUjfe6sqKQF1lKT2cYT5qU4rtH5qUlMixlWkb8oKeSMA2voW3wZZtSpBFKQ== + dependencies: + buffer "4.9.2" + events "1.1.1" + ieee754 "1.1.13" + jmespath "0.16.0" + querystring "0.2.0" + sax "1.2.1" + url "0.10.3" + util "^0.12.4" + uuid "8.0.0" + xml2js "0.4.19" + +axios@^0.21.1, axios@^0.21.2: + version "0.21.4" + resolved "https://registry.yarnpkg.com/axios/-/axios-0.21.4.tgz#c67b90dc0568e5c1cf2b0b858c43ba28e2eda575" + integrity sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg== + dependencies: + follow-redirects "^1.14.0" + +balanced-match@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" + integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== + +base64-js@^1.0.2, base64-js@^1.3.1: + version "1.5.1" + resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" + integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== + +bech32@1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/bech32/-/bech32-1.1.4.tgz#e38c9f37bf179b8eb16ae3a772b40c356d4832e9" + integrity sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ== + +binary-extensions@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" + integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== + +bl@^1.0.0: + version "1.2.3" + resolved "https://registry.yarnpkg.com/bl/-/bl-1.2.3.tgz#1e8dd80142eac80d7158c9dccc047fb620e035e7" + integrity sha512-pvcNpa0UU69UT341rO6AYy4FVAIkUHuZXRIWbq+zHnsVcRzDDjIAhGuuYoi0d//cwIwtt4pkpKycWEfjdV+vww== + dependencies: + readable-stream "^2.3.5" + safe-buffer "^5.1.1" + +bl@^4.0.3, bl@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/bl/-/bl-4.1.0.tgz#451535264182bec2fbbc83a62ab98cf11d9f7b3a" + integrity sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w== + dependencies: + buffer "^5.5.0" + inherits "^2.0.4" + readable-stream "^3.4.0" + +bluebird@^3.7.2: + version "3.7.2" + resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f" + integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg== + +bn.js@^4.11.9: + version "4.12.0" + resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.12.0.tgz#775b3f278efbb9718eec7361f483fb36fbbfea88" + integrity sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA== + +bn.js@^5.2.0, bn.js@^5.2.1: + version "5.2.1" + resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.2.1.tgz#0bc527a6a0d18d0aa8d5b0538ce4a77dccfa7b70" + integrity sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ== + +brace-expansion@^1.1.7: + version "1.1.11" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" + integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== + dependencies: + balanced-match "^1.0.0" + concat-map "0.0.1" + +brace-expansion@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-2.0.1.tgz#1edc459e0f0c548486ecf9fc99f2221364b9a0ae" + integrity sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA== + dependencies: + balanced-match "^1.0.0" + +braces@^3.0.2, braces@~3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" + integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== + dependencies: + fill-range "^7.0.1" + +brorand@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" + integrity sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w== + +buffer-alloc-unsafe@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz#bd7dc26ae2972d0eda253be061dba992349c19f0" + integrity sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg== + +buffer-alloc@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/buffer-alloc/-/buffer-alloc-1.2.0.tgz#890dd90d923a873e08e10e5fd51a57e5b7cce0ec" + integrity sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow== + dependencies: + buffer-alloc-unsafe "^1.1.0" + buffer-fill "^1.0.0" + +buffer-crc32@^0.2.1, buffer-crc32@^0.2.13, buffer-crc32@~0.2.3: + version "0.2.13" + resolved "https://registry.yarnpkg.com/buffer-crc32/-/buffer-crc32-0.2.13.tgz#0d333e3f00eac50aa1454abd30ef8c2a5d9a7242" + integrity sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ== + +buffer-fill@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/buffer-fill/-/buffer-fill-1.0.0.tgz#f8f78b76789888ef39f205cd637f68e702122b2c" + integrity sha512-T7zexNBwiiaCOGDg9xNX9PBmjrubblRkENuptryuI64URkXDFum9il/JGL8Lm8wYfAXpredVXXZz7eMHilimiQ== + +buffer@4.9.2: + version "4.9.2" + resolved "https://registry.yarnpkg.com/buffer/-/buffer-4.9.2.tgz#230ead344002988644841ab0244af8c44bbe3ef8" + integrity sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg== + dependencies: + base64-js "^1.0.2" + ieee754 "^1.1.4" + isarray "^1.0.0" + +buffer@^5.2.1, buffer@^5.5.0: + version "5.7.1" + resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.7.1.tgz#ba62e7c13133053582197160851a8f648e99eed0" + integrity sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ== + dependencies: + base64-js "^1.3.1" + ieee754 "^1.1.13" + +buffer@^6.0.3: + version "6.0.3" + resolved "https://registry.yarnpkg.com/buffer/-/buffer-6.0.3.tgz#2ace578459cc8fbe2a70aaa8f52ee63b6a74c6c6" + integrity sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA== + dependencies: + base64-js "^1.3.1" + ieee754 "^1.2.1" + +builtin-modules@^3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-3.3.0.tgz#cae62812b89801e9656336e46223e030386be7b6" + integrity sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw== + +builtins@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/builtins/-/builtins-1.0.3.tgz#cb94faeb61c8696451db36534e1422f94f0aee88" + integrity sha512-uYBjakWipfaO/bXI7E8rq6kpwHRZK5cNYrUv2OzZSI/FvmdMyXJ2tG9dKcjEC5YHmHpUAwsargWIZNWdxb/bnQ== + +cacheable-lookup@^5.0.3: + version "5.0.4" + resolved "https://registry.yarnpkg.com/cacheable-lookup/-/cacheable-lookup-5.0.4.tgz#5a6b865b2c44357be3d5ebc2a467b032719a7005" + integrity sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA== + +cacheable-request@^7.0.2: + version "7.0.2" + resolved "https://registry.yarnpkg.com/cacheable-request/-/cacheable-request-7.0.2.tgz#ea0d0b889364a25854757301ca12b2da77f91d27" + integrity sha512-pouW8/FmiPQbuGpkXQ9BAPv/Mo5xDGANgSNXzTzJ8DrKGuXOssM4wIQRjfanNRh3Yu5cfYPvcorqbhg2KIJtew== + dependencies: + clone-response "^1.0.2" + get-stream "^5.1.0" + http-cache-semantics "^4.0.0" + keyv "^4.0.0" + lowercase-keys "^2.0.0" + normalize-url "^6.0.1" + responselike "^2.0.0" + +cachedir@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/cachedir/-/cachedir-2.3.0.tgz#0c75892a052198f0b21c7c1804d8331edfcae0e8" + integrity sha512-A+Fezp4zxnit6FanDmv9EqXNAi3vt9DWp51/71UEhXukb7QUuvtv9344h91dyAxuTLoSYJFU299qzR3tzwPAhw== + +call-bind@^1.0.0, call-bind@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c" + integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA== + dependencies: + function-bind "^1.1.1" + get-intrinsic "^1.0.2" + +chalk@^4.1.0, chalk@^4.1.1, chalk@^4.1.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" + integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + +chardet@^0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e" + integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA== + +child-process-ext@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/child-process-ext/-/child-process-ext-2.1.1.tgz#f7cf4e68fef60c4c8ee911e1b402413191467dc3" + integrity sha512-0UQ55f51JBkOFa+fvR76ywRzxiPwQS3Xe8oe5bZRphpv+dIMeerW5Zn5e4cUy4COJwVtJyU0R79RMnw+aCqmGA== + dependencies: + cross-spawn "^6.0.5" + es5-ext "^0.10.53" + log "^6.0.0" + split2 "^3.1.1" + stream-promise "^3.2.0" + +chokidar@^3.5.3: + version "3.5.3" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd" + integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw== + dependencies: + anymatch "~3.1.2" + braces "~3.0.2" + glob-parent "~5.1.2" + is-binary-path "~2.1.0" + is-glob "~4.0.1" + normalize-path "~3.0.0" + readdirp "~3.6.0" + optionalDependencies: + fsevents "~2.3.2" + +chownr@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/chownr/-/chownr-2.0.0.tgz#15bfbe53d2eab4cf70f18a8cd68ebe5b3cb1dece" + integrity sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ== + +ci-info@^3.5.0, ci-info@^3.7.1: + version "3.8.0" + resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.8.0.tgz#81408265a5380c929f0bc665d62256628ce9ef91" + integrity sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw== + +cli-color@^2.0.1, cli-color@^2.0.2: + version "2.0.3" + resolved "https://registry.yarnpkg.com/cli-color/-/cli-color-2.0.3.tgz#73769ba969080629670f3f2ef69a4bf4e7cc1879" + integrity sha512-OkoZnxyC4ERN3zLzZaY9Emb7f/MhBOIpePv0Ycok0fJYT+Ouo00UBEIwsVsr0yoow++n5YWlSUgST9GKhNHiRQ== + dependencies: + d "^1.0.1" + es5-ext "^0.10.61" + es6-iterator "^2.0.3" + memoizee "^0.4.15" + timers-ext "^0.1.7" + +cli-cursor@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-3.1.0.tgz#264305a7ae490d1d03bf0c9ba7c925d1753af307" + integrity sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw== + dependencies: + restore-cursor "^3.1.0" + +cli-progress-footer@^2.3.2: + version "2.3.2" + resolved "https://registry.yarnpkg.com/cli-progress-footer/-/cli-progress-footer-2.3.2.tgz#1c13ba3c3dd894ef366f4a4f0620b3067284154d" + integrity sha512-uzHGgkKdeA9Kr57eyH1W5HGiNShP8fV1ETq04HDNM1Un6ShXbHhwi/H8LNV9L1fQXKjEw0q5FUkEVNuZ+yZdSw== + dependencies: + cli-color "^2.0.2" + d "^1.0.1" + es5-ext "^0.10.61" + mute-stream "0.0.8" + process-utils "^4.0.0" + timers-ext "^0.1.7" + type "^2.6.0" + +cli-spinners@^2.5.0: + version "2.7.0" + resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-2.7.0.tgz#f815fd30b5f9eaac02db604c7a231ed7cb2f797a" + integrity sha512-qu3pN8Y3qHNgE2AFweciB1IfMnmZ/fsNTEE+NOFjmGB2F/7rLhnhzppvpCnN4FovtP26k8lHyy9ptEbNwWFLzw== + +cli-sprintf-format@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/cli-sprintf-format/-/cli-sprintf-format-1.1.1.tgz#ec69955c89ef1c61243b52e68015b75c08fb9188" + integrity sha512-BbEjY9BEdA6wagVwTqPvmAwGB24U93rQPBFZUT8lNCDxXzre5LFHQUTJc70czjgUomVg8u8R5kW8oY9DYRFNeg== + dependencies: + cli-color "^2.0.1" + es5-ext "^0.10.53" + sprintf-kit "^2.0.1" + supports-color "^6.1.0" + +cli-width@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-3.0.0.tgz#a2f48437a2caa9a22436e794bf071ec9e61cedf6" + integrity sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw== + +clone-response@^1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/clone-response/-/clone-response-1.0.3.tgz#af2032aa47816399cf5f0a1d0db902f517abb8c3" + integrity sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA== + dependencies: + mimic-response "^1.0.0" + +clone@^1.0.2: + version "1.0.4" + resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e" + integrity sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg== + +color-convert@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" + integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== + dependencies: + color-name "~1.1.4" + +color-name@~1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" + integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== + +colors@1.0.x: + version "1.0.3" + resolved "https://registry.yarnpkg.com/colors/-/colors-1.0.3.tgz#0433f44d809680fdeb60ed260f1b0c262e82a40b" + integrity sha512-pFGrxThWcWQ2MsAz6RtgeWe4NK2kUE1WfsrvvlctdII745EW9I0yflqhe7++M5LEc7bV2c/9/5zc8sFcpL0Drw== + +combined-stream@^1.0.8: + version "1.0.8" + resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" + integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== + dependencies: + delayed-stream "~1.0.0" + +commander@^2.8.1: + version "2.20.3" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" + integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== + +commander@~4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/commander/-/commander-4.1.1.tgz#9fd602bd936294e9e9ef46a3f4d6964044b18068" + integrity sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA== + +component-emitter@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.3.0.tgz#16e4070fba8ae29b679f2215853ee181ab2eabc0" + integrity sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg== + +compress-commons@^4.1.0: + version "4.1.1" + resolved "https://registry.yarnpkg.com/compress-commons/-/compress-commons-4.1.1.tgz#df2a09a7ed17447642bad10a85cc9a19e5c42a7d" + integrity sha512-QLdDLCKNV2dtoTorqgxngQCMA+gWXkM/Nwu7FpeBhk/RdkzimqC3jueb/FDmaZeXh+uby1jkBqE3xArsLBE5wQ== + dependencies: + buffer-crc32 "^0.2.13" + crc32-stream "^4.0.2" + normalize-path "^3.0.0" + readable-stream "^3.6.0" + +concat-map@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" + integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== + +content-disposition@^0.5.4: + version "0.5.4" + resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.4.tgz#8b82b4efac82512a02bb0b1dcec9d2c5e8eb5bfe" + integrity sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ== + dependencies: + safe-buffer "5.2.1" + +cookiejar@^2.1.3: + version "2.1.4" + resolved "https://registry.yarnpkg.com/cookiejar/-/cookiejar-2.1.4.tgz#ee669c1fea2cf42dc31585469d193fef0d65771b" + integrity sha512-LDx6oHrK+PhzLKJU9j5S7/Y3jM/mUHvD/DeI1WQmJn652iPC5Y4TBzC9l+5OMOXlyTTA+SmVUPm0HQUwpD5Jqw== + +core-util-is@~1.0.0: + version "1.0.3" + resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.3.tgz#a6042d3634c2b27e9328f837b965fac83808db85" + integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ== + +crc-32@^1.2.0: + version "1.2.2" + resolved "https://registry.yarnpkg.com/crc-32/-/crc-32-1.2.2.tgz#3cad35a934b8bf71f25ca524b6da51fb7eace2ff" + integrity sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ== + +crc32-stream@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/crc32-stream/-/crc32-stream-4.0.2.tgz#c922ad22b38395abe9d3870f02fa8134ed709007" + integrity sha512-DxFZ/Hk473b/muq1VJ///PMNLj0ZMnzye9thBpmjpJKCc5eMgB95aK8zCGrGfQ90cWo561Te6HK9D+j4KPdM6w== + dependencies: + crc-32 "^1.2.0" + readable-stream "^3.4.0" + +cross-spawn@^6.0.5: + version "6.0.5" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" + integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ== + dependencies: + nice-try "^1.0.4" + path-key "^2.0.1" + semver "^5.5.0" + shebang-command "^1.2.0" + which "^1.2.9" + +cycle@1.0.x: + version "1.0.3" + resolved "https://registry.yarnpkg.com/cycle/-/cycle-1.0.3.tgz#21e80b2be8580f98b468f379430662b046c34ad2" + integrity sha512-TVF6svNzeQCOpjCqsy0/CSy8VgObG3wXusJ73xW2GbG5rGx7lC8zxDSURicsXI2UsGdi2L0QNRCi745/wUDvsA== + +d@1, d@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/d/-/d-1.0.1.tgz#8698095372d58dbee346ffd0c7093f99f8f9eb5a" + integrity sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA== + dependencies: + es5-ext "^0.10.50" + type "^1.0.1" + +dayjs@^1.11.7: + version "1.11.7" + resolved "https://registry.yarnpkg.com/dayjs/-/dayjs-1.11.7.tgz#4b296922642f70999544d1144a2c25730fce63e2" + integrity sha512-+Yw9U6YO5TQohxLcIkrXBeY73WP3ejHWVvx8XCk3gxvQDCTEmS48ZrSZCKciI7Bhl/uCMyxYtE9UqRILmFphkQ== + +debug@4, debug@^4.1.1, debug@^4.3.4: + version "4.3.4" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" + integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== + dependencies: + ms "2.1.2" + +decompress-response@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-6.0.0.tgz#ca387612ddb7e104bd16d85aab00d5ecf09c66fc" + integrity sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ== + dependencies: + mimic-response "^3.1.0" + +decompress-tar@^4.0.0, decompress-tar@^4.1.0, decompress-tar@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/decompress-tar/-/decompress-tar-4.1.1.tgz#718cbd3fcb16209716e70a26b84e7ba4592e5af1" + integrity sha512-JdJMaCrGpB5fESVyxwpCx4Jdj2AagLmv3y58Qy4GE6HMVjWz1FeVQk1Ct4Kye7PftcdOo/7U7UKzYBJgqnGeUQ== + dependencies: + file-type "^5.2.0" + is-stream "^1.1.0" + tar-stream "^1.5.2" + +decompress-tarbz2@^4.0.0: + version "4.1.1" + resolved "https://registry.yarnpkg.com/decompress-tarbz2/-/decompress-tarbz2-4.1.1.tgz#3082a5b880ea4043816349f378b56c516be1a39b" + integrity sha512-s88xLzf1r81ICXLAVQVzaN6ZmX4A6U4z2nMbOwobxkLoIIfjVMBg7TeguTUXkKeXni795B6y5rnvDw7rxhAq9A== + dependencies: + decompress-tar "^4.1.0" + file-type "^6.1.0" + is-stream "^1.1.0" + seek-bzip "^1.0.5" + unbzip2-stream "^1.0.9" + +decompress-targz@^4.0.0: + version "4.1.1" + resolved "https://registry.yarnpkg.com/decompress-targz/-/decompress-targz-4.1.1.tgz#c09bc35c4d11f3de09f2d2da53e9de23e7ce1eee" + integrity sha512-4z81Znfr6chWnRDNfFNqLwPvm4db3WuZkqV+UgXQzSngG3CEKdBkw5jrv3axjjL96glyiiKjsxJG3X6WBZwX3w== + dependencies: + decompress-tar "^4.1.1" + file-type "^5.2.0" + is-stream "^1.1.0" + +decompress-unzip@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/decompress-unzip/-/decompress-unzip-4.0.1.tgz#deaaccdfd14aeaf85578f733ae8210f9b4848f69" + integrity sha512-1fqeluvxgnn86MOh66u8FjbtJpAFv5wgCT9Iw8rcBqQcCo5tO8eiJw7NNTrvt9n4CRBVq7CstiS922oPgyGLrw== + dependencies: + file-type "^3.8.0" + get-stream "^2.2.0" + pify "^2.3.0" + yauzl "^2.4.2" + +decompress@^4.2.1: + version "4.2.1" + resolved "https://registry.yarnpkg.com/decompress/-/decompress-4.2.1.tgz#007f55cc6a62c055afa37c07eb6a4ee1b773f118" + integrity sha512-e48kc2IjU+2Zw8cTb6VZcJQ3lgVbS4uuB1TfCHbiZIP/haNXm+SVyhu+87jts5/3ROpd82GSVCoNs/z8l4ZOaQ== + dependencies: + decompress-tar "^4.0.0" + decompress-tarbz2 "^4.0.0" + decompress-targz "^4.0.0" + decompress-unzip "^4.0.1" + graceful-fs "^4.1.10" + make-dir "^1.0.0" + pify "^2.3.0" + strip-dirs "^2.0.0" + +defaults@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/defaults/-/defaults-1.0.4.tgz#b0b02062c1e2aa62ff5d9528f0f98baa90978d7a" + integrity sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A== + dependencies: + clone "^1.0.2" + +defender-serverless@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/defender-serverless/-/defender-serverless-1.1.0.tgz#f121f6cb469923f91ad47ba4cc019c514118d145" + integrity sha512-YQzBrUp+2/utdmfK93pnwH/2PsYdrxMTDJvcyfxLT9ufrpmcA2Had9sPA9f7u31ZAFtNrUKeuz0VQklful4cOw== + dependencies: + "@openzeppelin/defender-admin-client" "^1.46.0" + "@openzeppelin/defender-autotask-client" "^1.46.0" + "@openzeppelin/defender-relay-client" "^1.46.0" + "@openzeppelin/defender-sentinel-client" "^1.46.0" + "@openzeppelin/platform-deploy-client" "^0.8.0" + keccak256 "^1.0.6" + lodash "^4.17.21" + prompt "^1.3.0" + +defer-to-connect@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/defer-to-connect/-/defer-to-connect-2.0.1.tgz#8016bdb4143e4632b77a3449c6236277de520587" + integrity sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg== + +deferred@^0.7.11: + version "0.7.11" + resolved "https://registry.yarnpkg.com/deferred/-/deferred-0.7.11.tgz#8c3f272fd5e6ce48a969cb428c0d233ba2146322" + integrity sha512-8eluCl/Blx4YOGwMapBvXRKxHXhA8ejDXYzEaK8+/gtcm8hRMhSLmXSqDmNUKNc/C8HNSmuyyp/hflhqDAvK2A== + dependencies: + d "^1.0.1" + es5-ext "^0.10.50" + event-emitter "^0.3.5" + next-tick "^1.0.0" + timers-ext "^0.1.7" + +define-lazy-prop@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz#3f7ae421129bcaaac9bc74905c98a0009ec9ee7f" + integrity sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og== + +delayed-stream@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" + integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ== + +dezalgo@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/dezalgo/-/dezalgo-1.0.4.tgz#751235260469084c132157dfa857f386d4c33d81" + integrity sha512-rXSP0bf+5n0Qonsb+SVVfNfIsimO4HEtmnIpPHY8Q1UCzKlQrDMfdobr8nJOOsRgWCyMRqeSBQzmWUMq7zvVig== + dependencies: + asap "^2.0.0" + wrappy "1" + +dir-glob@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" + integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA== + dependencies: + path-type "^4.0.0" + +dotenv-expand@^9.0.0: + version "9.0.0" + resolved "https://registry.yarnpkg.com/dotenv-expand/-/dotenv-expand-9.0.0.tgz#1fd37e2cd63ea0b5f7389fb87256efc38b035b26" + integrity sha512-uW8Hrhp5ammm9x7kBLR6jDfujgaDarNA02tprvZdyrJ7MpdzD1KyrIHG4l+YoC2fJ2UcdFdNWNWIjt+sexBHJw== + +dotenv@^10.0.0: + version "10.0.0" + resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-10.0.0.tgz#3d4227b8fb95f81096cdd2b66653fb2c7085ba81" + integrity sha512-rlBi9d8jpv9Sf1klPjNfFAuWDjKLwTIJJ/VxtoTwIR6hnZxcEOQCZg2oIL3MWBYw5GpUDKOEnND7LXTbIpQ03Q== + +dotenv@^16.0.3: + version "16.0.3" + resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-16.0.3.tgz#115aec42bac5053db3c456db30cc243a5a836a07" + integrity sha512-7GO6HghkA5fYG9TYnNxi14/7K9f5occMlp3zXAuSxn7CKCxt9xbNWG7yF8hTCSUchlfWSe3uLmlPfigevRItzQ== + +duration@^0.2.2: + version "0.2.2" + resolved "https://registry.yarnpkg.com/duration/-/duration-0.2.2.tgz#ddf149bc3bc6901150fe9017111d016b3357f529" + integrity sha512-06kgtea+bGreF5eKYgI/36A6pLXggY7oR4p1pq4SmdFBn1ReOL5D8RhG64VrqfTTKNucqqtBAwEj8aB88mcqrg== + dependencies: + d "1" + es5-ext "~0.10.46" + +elliptic@6.5.4: + version "6.5.4" + resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.4.tgz#da37cebd31e79a1367e941b592ed1fbebd58abbb" + integrity sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ== + dependencies: + bn.js "^4.11.9" + brorand "^1.1.0" + hash.js "^1.0.0" + hmac-drbg "^1.0.1" + inherits "^2.0.4" + minimalistic-assert "^1.0.1" + minimalistic-crypto-utils "^1.0.1" + +emoji-regex@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" + integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== + +end-of-stream@^1.0.0, end-of-stream@^1.1.0, end-of-stream@^1.4.1: + version "1.4.4" + resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" + integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== + dependencies: + once "^1.4.0" + +es5-ext@^0.10.12, es5-ext@^0.10.35, es5-ext@^0.10.46, es5-ext@^0.10.47, es5-ext@^0.10.49, es5-ext@^0.10.50, es5-ext@^0.10.53, es5-ext@^0.10.61, es5-ext@^0.10.62, es5-ext@~0.10.14, es5-ext@~0.10.2, es5-ext@~0.10.46: + version "0.10.62" + resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.62.tgz#5e6adc19a6da524bf3d1e02bbc8960e5eb49a9a5" + integrity sha512-BHLqn0klhEpnOKSrzn/Xsz2UIW8j+cGmo9JLzr8BiUapV8hPL9+FliFqjwr9ngW7jWdnxv6eO+/LqyhJVqgrjA== + dependencies: + es6-iterator "^2.0.3" + es6-symbol "^3.1.3" + next-tick "^1.1.0" + +es6-iterator@^2.0.3, es6-iterator@~2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/es6-iterator/-/es6-iterator-2.0.3.tgz#a7de889141a05a94b0854403b2d0a0fbfa98f3b7" + integrity sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g== + dependencies: + d "1" + es5-ext "^0.10.35" + es6-symbol "^3.1.1" + +es6-set@^0.1.6: + version "0.1.6" + resolved "https://registry.yarnpkg.com/es6-set/-/es6-set-0.1.6.tgz#5669e3b2aa01d61a50ba79964f733673574983b8" + integrity sha512-TE3LgGLDIBX332jq3ypv6bcOpkLO0AslAQo7p2VqX/1N46YNsvIWgvjojjSEnWEGWMhr1qUbYeTSir5J6mFHOw== + dependencies: + d "^1.0.1" + es5-ext "^0.10.62" + es6-iterator "~2.0.3" + es6-symbol "^3.1.3" + event-emitter "^0.3.5" + type "^2.7.2" + +es6-symbol@^3.1.1, es6-symbol@^3.1.3: + version "3.1.3" + resolved "https://registry.yarnpkg.com/es6-symbol/-/es6-symbol-3.1.3.tgz#bad5d3c1bcdac28269f4cb331e431c78ac705d18" + integrity sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA== + dependencies: + d "^1.0.1" + ext "^1.1.2" + +es6-weak-map@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/es6-weak-map/-/es6-weak-map-2.0.3.tgz#b6da1f16cc2cc0d9be43e6bdbfc5e7dfcdf31d53" + integrity sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA== + dependencies: + d "1" + es5-ext "^0.10.46" + es6-iterator "^2.0.3" + es6-symbol "^3.1.1" + +escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" + integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg== + +esniff@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/esniff/-/esniff-1.1.0.tgz#c66849229f91464dede2e0d40201ed6abf65f2ac" + integrity sha512-vmHXOeOt7FJLsqofvFk4WB3ejvcHizCd8toXXwADmYfd02p2QwHRgkUbhYDX54y08nqk818CUTWipgZGlyN07g== + dependencies: + d "1" + es5-ext "^0.10.12" + +esprima@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" + integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== + +essentials@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/essentials/-/essentials-1.2.0.tgz#c6361fb648f5c8c0c51279707f6139e521a05807" + integrity sha512-kP/j7Iw7KeNE8b/o7+tr9uX2s1wegElGOoGZ2Xm35qBr4BbbEcH3/bxR2nfH9l9JANCq9AUrvKw+gRuHtZp0HQ== + dependencies: + uni-global "^1.0.0" + +ethers@^5.7.2: + version "5.7.2" + resolved "https://registry.yarnpkg.com/ethers/-/ethers-5.7.2.tgz#3a7deeabbb8c030d4126b24f84e525466145872e" + integrity sha512-wswUsmWo1aOK8rR7DIKiWSw9DbLWe6x98Jrn8wcTflTVvaXhAMaB5zGAXy0GYQEQp9iO1iSHWVyARQm11zUtyg== + dependencies: + "@ethersproject/abi" "5.7.0" + "@ethersproject/abstract-provider" "5.7.0" + "@ethersproject/abstract-signer" "5.7.0" + "@ethersproject/address" "5.7.0" + "@ethersproject/base64" "5.7.0" + "@ethersproject/basex" "5.7.0" + "@ethersproject/bignumber" "5.7.0" + "@ethersproject/bytes" "5.7.0" + "@ethersproject/constants" "5.7.0" + "@ethersproject/contracts" "5.7.0" + "@ethersproject/hash" "5.7.0" + "@ethersproject/hdnode" "5.7.0" + "@ethersproject/json-wallets" "5.7.0" + "@ethersproject/keccak256" "5.7.0" + "@ethersproject/logger" "5.7.0" + "@ethersproject/networks" "5.7.1" + "@ethersproject/pbkdf2" "5.7.0" + "@ethersproject/properties" "5.7.0" + "@ethersproject/providers" "5.7.2" + "@ethersproject/random" "5.7.0" + "@ethersproject/rlp" "5.7.0" + "@ethersproject/sha2" "5.7.0" + "@ethersproject/signing-key" "5.7.0" + "@ethersproject/solidity" "5.7.0" + "@ethersproject/strings" "5.7.0" + "@ethersproject/transactions" "5.7.0" + "@ethersproject/units" "5.7.0" + "@ethersproject/wallet" "5.7.0" + "@ethersproject/web" "5.7.1" + "@ethersproject/wordlists" "5.7.0" + +event-emitter@^0.3.5: + version "0.3.5" + resolved "https://registry.yarnpkg.com/event-emitter/-/event-emitter-0.3.5.tgz#df8c69eef1647923c7157b9ce83840610b02cc39" + integrity sha512-D9rRn9y7kLPnJ+hMq7S/nhvoKwwvVJahBi2BPmx3bvbsEdK3W9ii8cBSGjP+72/LnM4n6fo3+dkCX5FeTQruXA== + dependencies: + d "1" + es5-ext "~0.10.14" + +events@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/events/-/events-1.1.1.tgz#9ebdb7635ad099c70dcc4c2a1f5004288e8bd924" + integrity sha512-kEcvvCBByWXGnZy6JUlgAp2gBIUjfCAV6P6TgT1/aaQKcmuAEC4OZTV1I4EWQLz2gxZw76atuVyvHhTxvi0Flw== + +ext-list@^2.0.0: + version "2.2.2" + resolved "https://registry.yarnpkg.com/ext-list/-/ext-list-2.2.2.tgz#0b98e64ed82f5acf0f2931babf69212ef52ddd37" + integrity sha512-u+SQgsubraE6zItfVA0tBuCBhfU9ogSRnsvygI7wht9TS510oLkBRXBsqopeUG/GBOIQyKZO9wjTqIu/sf5zFA== + dependencies: + mime-db "^1.28.0" + +ext-name@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/ext-name/-/ext-name-5.0.0.tgz#70781981d183ee15d13993c8822045c506c8f0a6" + integrity sha512-yblEwXAbGv1VQDmow7s38W77hzAgJAO50ztBLMcUyUBfxv1HC+LGwtiEN+Co6LtlqT/5uwVOxsD4TNIilWhwdQ== + dependencies: + ext-list "^2.0.0" + sort-keys-length "^1.0.0" + +ext@^1.1.2, ext@^1.4.0, ext@^1.6.0, ext@^1.7.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/ext/-/ext-1.7.0.tgz#0ea4383c0103d60e70be99e9a7f11027a33c4f5f" + integrity sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw== + dependencies: + type "^2.7.2" + +external-editor@^3.0.3: + version "3.1.0" + resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-3.1.0.tgz#cb03f740befae03ea4d283caed2741a83f335495" + integrity sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew== + dependencies: + chardet "^0.7.0" + iconv-lite "^0.4.24" + tmp "^0.0.33" + +eyes@0.1.x: + version "0.1.8" + resolved "https://registry.yarnpkg.com/eyes/-/eyes-0.1.8.tgz#62cf120234c683785d902348a800ef3e0cc20bc0" + integrity sha512-GipyPsXO1anza0AOZdy69Im7hGFCNB7Y/NGjDlZGJ3GJJLtwNSb2vrzYrTYJRrRloVx7pl+bhUaTB8yiccPvFQ== + +fast-base64-decode@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fast-base64-decode/-/fast-base64-decode-1.0.0.tgz#b434a0dd7d92b12b43f26819300d2dafb83ee418" + integrity sha512-qwaScUgUGBYeDNRnbc/KyllVU88Jk1pRHPStuF/lO7B0/RTRLj7U0lkdTAutlBblY08rwZDff6tNU9cjv6j//Q== + +fast-deep-equal@^3.1.1: + version "3.1.3" + resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" + integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== + +fast-glob@^3.2.7, fast-glob@^3.2.9: + version "3.2.12" + resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.12.tgz#7f39ec99c2e6ab030337142da9e0c18f37afae80" + integrity sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w== + dependencies: + "@nodelib/fs.stat" "^2.0.2" + "@nodelib/fs.walk" "^1.2.3" + glob-parent "^5.1.2" + merge2 "^1.3.0" + micromatch "^4.0.4" + +fast-safe-stringify@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz#c406a83b6e70d9e35ce3b30a81141df30aeba884" + integrity sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA== + +fastest-levenshtein@^1.0.16: + version "1.0.16" + resolved "https://registry.yarnpkg.com/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz#210e61b6ff181de91ea9b3d1b84fdedd47e034e5" + integrity sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg== + +fastq@^1.6.0: + version "1.15.0" + resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.15.0.tgz#d04d07c6a2a68fe4599fea8d2e103a937fae6b3a" + integrity sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw== + dependencies: + reusify "^1.0.4" + +fd-slicer@~1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/fd-slicer/-/fd-slicer-1.1.0.tgz#25c7c89cb1f9077f8891bbe61d8f390eae256f1e" + integrity sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g== + dependencies: + pend "~1.2.0" + +figures@^3.0.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/figures/-/figures-3.2.0.tgz#625c18bd293c604dc4a8ddb2febf0c88341746af" + integrity sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg== + dependencies: + escape-string-regexp "^1.0.5" + +file-type@^16.5.4: + version "16.5.4" + resolved "https://registry.yarnpkg.com/file-type/-/file-type-16.5.4.tgz#474fb4f704bee427681f98dd390058a172a6c2fd" + integrity sha512-/yFHK0aGjFEgDJjEKP0pWCplsPFPhwyfwevf/pVxiN0tmE4L9LmwWxWukdJSHdoCli4VgQLehjJtwQBnqmsKcw== + dependencies: + readable-web-to-node-stream "^3.0.0" + strtok3 "^6.2.4" + token-types "^4.1.1" + +file-type@^3.8.0: + version "3.9.0" + resolved "https://registry.yarnpkg.com/file-type/-/file-type-3.9.0.tgz#257a078384d1db8087bc449d107d52a52672b9e9" + integrity sha512-RLoqTXE8/vPmMuTI88DAzhMYC99I8BWv7zYP4A1puo5HIjEJ5EX48ighy4ZyKMG9EDXxBgW6e++cn7d1xuFghA== + +file-type@^4.2.0: + version "4.4.0" + resolved "https://registry.yarnpkg.com/file-type/-/file-type-4.4.0.tgz#1b600e5fca1fbdc6e80c0a70c71c8dba5f7906c5" + integrity sha512-f2UbFQEk7LXgWpi5ntcO86OeA/cC80fuDDDaX/fZ2ZGel+AF7leRQqBBW1eJNiiQkrZlAoM6P+VYP5P6bOlDEQ== + +file-type@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/file-type/-/file-type-5.2.0.tgz#2ddbea7c73ffe36368dfae49dc338c058c2b8ad6" + integrity sha512-Iq1nJ6D2+yIO4c8HHg4fyVb8mAJieo1Oloy1mLLaB2PvezNedhBVm+QU7g0qM42aiMbRXTxKKwGD17rjKNJYVQ== + +file-type@^6.1.0: + version "6.2.0" + resolved "https://registry.yarnpkg.com/file-type/-/file-type-6.2.0.tgz#e50cd75d356ffed4e306dc4f5bcf52a79903a919" + integrity sha512-YPcTBDV+2Tm0VqjybVd32MHdlEGAtuxS3VAYsumFokDSMG+ROT5wawGlnHDoz7bfMcMDt9hxuXvXwoKUx2fkOg== + +filename-reserved-regex@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/filename-reserved-regex/-/filename-reserved-regex-2.0.0.tgz#abf73dfab735d045440abfea2d91f389ebbfa229" + integrity sha512-lc1bnsSr4L4Bdif8Xb/qrtokGbq5zlsms/CYH8PP+WtCkGNF65DPiQY8vG3SakEdRn8Dlnm+gW/qWKKjS5sZzQ== + +filenamify@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/filenamify/-/filenamify-4.3.0.tgz#62391cb58f02b09971c9d4f9d63b3cf9aba03106" + integrity sha512-hcFKyUG57yWGAzu1CMt/dPzYZuv+jAJUT85bL8mrXvNe6hWj6yEHEc4EdcgiA6Z3oi1/9wXJdZPXF2dZNgwgOg== + dependencies: + filename-reserved-regex "^2.0.0" + strip-outer "^1.0.1" + trim-repeated "^1.0.0" + +filesize@^10.0.6: + version "10.0.6" + resolved "https://registry.yarnpkg.com/filesize/-/filesize-10.0.6.tgz#5f4cd2721664cd925db3a7a5a87bbfd6ab5ebb1a" + integrity sha512-rzpOZ4C9vMFDqOa6dNpog92CoLYjD79dnjLk2TYDDtImRIyLTOzqojCb05Opd1WuiWjs+fshhCgTd8cl7y5t+g== + +fill-range@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" + integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== + dependencies: + to-regex-range "^5.0.1" + +find-requires@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/find-requires/-/find-requires-1.0.0.tgz#a4a750ed37133dee8a9cc8efd2cc56aca01dd96d" + integrity sha512-UME7hNwBfzeISSFQcBEDemEEskpOjI/shPrpJM5PI4DSdn6hX0dmz+2dL70blZER2z8tSnTRL+2rfzlYgtbBoQ== + dependencies: + es5-ext "^0.10.49" + esniff "^1.1.0" + +flat@^5.0.2: + version "5.0.2" + resolved "https://registry.yarnpkg.com/flat/-/flat-5.0.2.tgz#8ca6fe332069ffa9d324c327198c598259ceb241" + integrity sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ== + +follow-redirects@^1.14.0: + version "1.15.2" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.2.tgz#b460864144ba63f2681096f274c4e57026da2c13" + integrity sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA== + +for-each@^0.3.3: + version "0.3.3" + resolved "https://registry.yarnpkg.com/for-each/-/for-each-0.3.3.tgz#69b447e88a0a5d32c3e7084f3f1710034b21376e" + integrity sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw== + dependencies: + is-callable "^1.1.3" + +form-data@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-4.0.0.tgz#93919daeaf361ee529584b9b31664dc12c9fa452" + integrity sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww== + dependencies: + asynckit "^0.4.0" + combined-stream "^1.0.8" + mime-types "^2.1.12" + +formidable@^2.0.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/formidable/-/formidable-2.1.1.tgz#81269cbea1a613240049f5f61a9d97731517414f" + integrity sha512-0EcS9wCFEzLvfiks7omJ+SiYJAiD+TzK4Pcw1UlUoGnhUxDcMKjt0P7x8wEb0u6OHu8Nb98WG3nxtlF5C7bvUQ== + dependencies: + dezalgo "^1.0.4" + hexoid "^1.0.0" + once "^1.4.0" + qs "^6.11.0" + +fs-constants@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs-constants/-/fs-constants-1.0.0.tgz#6be0de9be998ce16af8afc24497b9ee9b7ccd9ad" + integrity sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow== + +fs-extra@^10.1.0: + version "10.1.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-10.1.0.tgz#02873cfbc4084dde127eaa5f9905eef2325d1abf" + integrity sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ== + dependencies: + graceful-fs "^4.2.0" + jsonfile "^6.0.1" + universalify "^2.0.0" + +fs-extra@^9.1.0: + version "9.1.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-9.1.0.tgz#5954460c764a8da2094ba3554bf839e6b9a7c86d" + integrity sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ== + dependencies: + at-least-node "^1.0.0" + graceful-fs "^4.2.0" + jsonfile "^6.0.1" + universalify "^2.0.0" + +fs-minipass@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-2.1.0.tgz#7f5036fdbf12c63c169190cbe4199c852271f9fb" + integrity sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg== + dependencies: + minipass "^3.0.0" + +fs.realpath@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" + integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== + +fs2@^0.3.9: + version "0.3.9" + resolved "https://registry.yarnpkg.com/fs2/-/fs2-0.3.9.tgz#3869e5b2ec7e0622eaa5f4373df540d3d427a9fb" + integrity sha512-WsOqncODWRlkjwll+73bAxVW3JPChDgaPX3DT4iTTm73UmG4VgALa7LaFblP232/DN60itkOrPZ8kaP1feksGQ== + dependencies: + d "^1.0.1" + deferred "^0.7.11" + es5-ext "^0.10.53" + event-emitter "^0.3.5" + ignore "^5.1.8" + memoizee "^0.4.14" + type "^2.1.0" + +fsevents@~2.3.2: + version "2.3.2" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" + integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== + +function-bind@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" + integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== + +get-intrinsic@^1.0.2, get-intrinsic@^1.1.3: + version "1.2.0" + resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.0.tgz#7ad1dc0535f3a2904bba075772763e5051f6d05f" + integrity sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q== + dependencies: + function-bind "^1.1.1" + has "^1.0.3" + has-symbols "^1.0.3" + +get-stdin@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-8.0.0.tgz#cbad6a73feb75f6eeb22ba9e01f89aa28aa97a53" + integrity sha512-sY22aA6xchAzprjyqmSEQv4UbAAzRN0L2dQB0NlN5acTTK9Don6nhoc3eAbUnpZiCANAMfd/+40kVdKfFygohg== + +get-stream@^2.2.0: + version "2.3.1" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-2.3.1.tgz#5f38f93f346009666ee0150a054167f91bdd95de" + integrity sha512-AUGhbbemXxrZJRD5cDvKtQxLuYaIbNtDTK8YqupCI393Q2KSTreEsLUN3ZxAWFGiKTzL6nKuzfcIvieflUX9qA== + dependencies: + object-assign "^4.0.1" + pinkie-promise "^2.0.0" + +get-stream@^5.1.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-5.2.0.tgz#4966a1795ee5ace65e706c4b7beb71257d6e22d3" + integrity sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA== + dependencies: + pump "^3.0.0" + +get-stream@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7" + integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg== + +glob-parent@^5.1.2, glob-parent@~5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" + integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== + dependencies: + is-glob "^4.0.1" + +glob@^7.0.5, glob@^7.1.4, glob@^7.1.6: + version "7.2.3" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" + integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.1.1" + once "^1.3.0" + path-is-absolute "^1.0.0" + +globby@^11.1.0: + version "11.1.0" + resolved "https://registry.yarnpkg.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b" + integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g== + dependencies: + array-union "^2.1.0" + dir-glob "^3.0.1" + fast-glob "^3.2.9" + ignore "^5.2.0" + merge2 "^1.4.1" + slash "^3.0.0" + +gopd@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/gopd/-/gopd-1.0.1.tgz#29ff76de69dac7489b7c0918a5788e56477c332c" + integrity sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA== + dependencies: + get-intrinsic "^1.1.3" + +got@^11.8.5, got@^11.8.6: + version "11.8.6" + resolved "https://registry.yarnpkg.com/got/-/got-11.8.6.tgz#276e827ead8772eddbcfc97170590b841823233a" + integrity sha512-6tfZ91bOr7bOXnK7PRDCGBLa1H4U080YHNaAQ2KsMGlLEzRbk44nsZF2E1IeRc3vtJHPVbKCYgdFbaGO2ljd8g== + dependencies: + "@sindresorhus/is" "^4.0.0" + "@szmarczak/http-timer" "^4.0.5" + "@types/cacheable-request" "^6.0.1" + "@types/responselike" "^1.0.0" + cacheable-lookup "^5.0.3" + cacheable-request "^7.0.2" + decompress-response "^6.0.0" + http2-wrapper "^1.0.0-beta.5.2" + lowercase-keys "^2.0.0" + p-cancelable "^2.0.0" + responselike "^2.0.0" + +graceful-fs@^4.1.10, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.10: + version "4.2.10" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.10.tgz#147d3a006da4ca3ce14728c7aefc287c367d7a6c" + integrity sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA== + +graphlib@^2.1.8: + version "2.1.8" + resolved "https://registry.yarnpkg.com/graphlib/-/graphlib-2.1.8.tgz#5761d414737870084c92ec7b5dbcb0592c9d35da" + integrity sha512-jcLLfkpoVGmH7/InMC/1hIvOPSUh38oJtGhvrOFGzioE1DZ+0YW16RgmOJhHiuWTvGiJQ9Z1Ik43JvkRPRvE+A== + dependencies: + lodash "^4.17.15" + +has-flag@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" + integrity sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw== + +has-flag@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" + integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== + +has-symbols@^1.0.2, has-symbols@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8" + integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A== + +has-tostringtag@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-tostringtag/-/has-tostringtag-1.0.0.tgz#7e133818a7d394734f941e73c3d3f9291e658b25" + integrity sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ== + dependencies: + has-symbols "^1.0.2" + +has@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" + integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== + dependencies: + function-bind "^1.1.1" + +hash.js@1.1.7, hash.js@^1.0.0, hash.js@^1.0.3: + version "1.1.7" + resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.7.tgz#0babca538e8d4ee4a0f8988d68866537a003cf42" + integrity sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA== + dependencies: + inherits "^2.0.3" + minimalistic-assert "^1.0.1" + +hexoid@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/hexoid/-/hexoid-1.0.0.tgz#ad10c6573fb907de23d9ec63a711267d9dc9bc18" + integrity sha512-QFLV0taWQOZtvIRIAdBChesmogZrtuXvVWsFHZTk2SU+anspqZ2vMnoLg7IE1+Uk16N19APic1BuF8bC8c2m5g== + +hmac-drbg@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1" + integrity sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg== + dependencies: + hash.js "^1.0.3" + minimalistic-assert "^1.0.0" + minimalistic-crypto-utils "^1.0.1" + +http-cache-semantics@^4.0.0: + version "4.1.1" + resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz#abe02fcb2985460bf0323be664436ec3476a6d5a" + integrity sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ== + +http2-wrapper@^1.0.0-beta.5.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/http2-wrapper/-/http2-wrapper-1.0.3.tgz#b8f55e0c1f25d4ebd08b3b0c2c079f9590800b3d" + integrity sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg== + dependencies: + quick-lru "^5.1.1" + resolve-alpn "^1.0.0" + +https-proxy-agent@^5.0.0, https-proxy-agent@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz#c59ef224a04fe8b754f3db0063a25ea30d0005d6" + integrity sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA== + dependencies: + agent-base "6" + debug "4" + +iconv-lite@^0.4.24: + version "0.4.24" + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" + integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== + dependencies: + safer-buffer ">= 2.1.2 < 3" + +ieee754@1.1.13: + version "1.1.13" + resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.13.tgz#ec168558e95aa181fd87d37f55c32bbcb6708b84" + integrity sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg== + +ieee754@^1.1.13, ieee754@^1.1.4, ieee754@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" + integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== + +ignore@^5.1.8, ignore@^5.2.0: + version "5.2.4" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.4.tgz#a291c0c6178ff1b960befe47fcdec301674a6324" + integrity sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ== + +immediate@~3.0.5: + version "3.0.6" + resolved "https://registry.yarnpkg.com/immediate/-/immediate-3.0.6.tgz#9db1dbd0faf8de6fbe0f5dd5e56bb606280de69b" + integrity sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ== + +imurmurhash@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" + integrity sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA== + +inflight@^1.0.4: + version "1.0.6" + resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" + integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA== + dependencies: + once "^1.3.0" + wrappy "1" + +inherits@2, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.3: + version "2.0.4" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" + integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== + +inquirer@^8.2.5: + version "8.2.5" + resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-8.2.5.tgz#d8654a7542c35a9b9e069d27e2df4858784d54f8" + integrity sha512-QAgPDQMEgrDssk1XiwwHoOGYF9BAbUcc1+j+FhEvaOt8/cKRqyLn0U5qA6F74fGhTMGxf92pOvPBeh29jQJDTQ== + dependencies: + ansi-escapes "^4.2.1" + chalk "^4.1.1" + cli-cursor "^3.1.0" + cli-width "^3.0.0" + external-editor "^3.0.3" + figures "^3.0.0" + lodash "^4.17.21" + mute-stream "0.0.8" + ora "^5.4.1" + run-async "^2.4.0" + rxjs "^7.5.5" + string-width "^4.1.0" + strip-ansi "^6.0.0" + through "^2.3.6" + wrap-ansi "^7.0.0" + +is-arguments@^1.0.4: + version "1.1.1" + resolved "https://registry.yarnpkg.com/is-arguments/-/is-arguments-1.1.1.tgz#15b3f88fda01f2a97fec84ca761a560f123efa9b" + integrity sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA== + dependencies: + call-bind "^1.0.2" + has-tostringtag "^1.0.0" + +is-binary-path@~2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" + integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== + dependencies: + binary-extensions "^2.0.0" + +is-callable@^1.1.3: + version "1.2.7" + resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.7.tgz#3bc2a85ea742d9e36205dcacdd72ca1fdc51b055" + integrity sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA== + +is-docker@^2.0.0, is-docker@^2.1.1, is-docker@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-2.2.1.tgz#33eeabe23cfe86f14bde4408a02c0cfb853acdaa" + integrity sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ== + +is-extglob@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" + integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== + +is-fullwidth-code-point@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" + integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== + +is-generator-function@^1.0.7: + version "1.0.10" + resolved "https://registry.yarnpkg.com/is-generator-function/-/is-generator-function-1.0.10.tgz#f1558baf1ac17e0deea7c0415c438351ff2b3c72" + integrity sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A== + dependencies: + has-tostringtag "^1.0.0" + +is-glob@^4.0.1, is-glob@~4.0.1: + version "4.0.3" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" + integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== + dependencies: + is-extglob "^2.1.1" + +is-interactive@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-interactive/-/is-interactive-1.0.0.tgz#cea6e6ae5c870a7b0a0004070b7b587e0252912e" + integrity sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w== + +is-natural-number@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/is-natural-number/-/is-natural-number-4.0.1.tgz#ab9d76e1db4ced51e35de0c72ebecf09f734cde8" + integrity sha512-Y4LTamMe0DDQIIAlaer9eKebAlDSV6huy+TWhJVPlzZh2o4tRP5SQWFlLn5N0To4mDD22/qdOq+veo1cSISLgQ== + +is-number@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" + integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== + +is-plain-obj@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e" + integrity sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg== + +is-promise@^2.2.2: + version "2.2.2" + resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.2.2.tgz#39ab959ccbf9a774cf079f7b40c7a26f763135f1" + integrity sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ== + +is-stream@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" + integrity sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ== + +is-typed-array@^1.1.10, is-typed-array@^1.1.3: + version "1.1.10" + resolved "https://registry.yarnpkg.com/is-typed-array/-/is-typed-array-1.1.10.tgz#36a5b5cb4189b575d1a3e4b08536bfb485801e3f" + integrity sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A== + dependencies: + available-typed-arrays "^1.0.5" + call-bind "^1.0.2" + for-each "^0.3.3" + gopd "^1.0.1" + has-tostringtag "^1.0.0" + +is-unicode-supported@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz#3f26c76a809593b52bfa2ecb5710ed2779b522a7" + integrity sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw== + +is-wsl@^2.1.1, is-wsl@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-2.2.0.tgz#74a4c76e77ca9fd3f932f290c17ea326cd157271" + integrity sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww== + dependencies: + is-docker "^2.0.0" + +isarray@^1.0.0, isarray@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" + integrity sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ== + +isexe@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" + integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== + +isomorphic-unfetch@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/isomorphic-unfetch/-/isomorphic-unfetch-3.1.0.tgz#87341d5f4f7b63843d468438128cb087b7c3e98f" + integrity sha512-geDJjpoZ8N0kWexiwkX8F9NkTsXhetLPVbZFQ+JTW239QNOwvB0gniuR1Wc6f0AMTn7/mFGyXvHTifrCp/GH8Q== + dependencies: + node-fetch "^2.6.1" + unfetch "^4.2.0" + +isomorphic-ws@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/isomorphic-ws/-/isomorphic-ws-4.0.1.tgz#55fd4cd6c5e6491e76dc125938dd863f5cd4f2dc" + integrity sha512-BhBvN2MBpWTaSHdWRb/bwdZJ1WaehQ2L1KngkCkfLUGF0mAWAT1sQUQacEmQ0jXkFw/czDXPNQSL5u2/Krsz1w== + +isstream@0.1.x: + version "0.1.2" + resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" + integrity sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g== + +jmespath@0.16.0: + version "0.16.0" + resolved "https://registry.yarnpkg.com/jmespath/-/jmespath-0.16.0.tgz#b15b0a85dfd4d930d43e69ed605943c802785076" + integrity sha512-9FzQjJ7MATs1tSpnco1K6ayiYE3figslrXA72G2HQ/n76RzvYlofyi5QM+iX4YRs/pu3yzxlVQSST23+dMDknw== + +js-cookie@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/js-cookie/-/js-cookie-2.2.1.tgz#69e106dc5d5806894562902aa5baec3744e9b2b8" + integrity sha512-HvdH2LzI/EAZcUwA8+0nKNtWHqS+ZmijLA30RwZA0bo7ToCckjK5MkGhjED9KoRcXO6BaGI3I9UIzSA1FKFPOQ== + +js-sha3@0.8.0: + version "0.8.0" + resolved "https://registry.yarnpkg.com/js-sha3/-/js-sha3-0.8.0.tgz#b9b7a5da73afad7dedd0f8c463954cbde6818840" + integrity sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q== + +js-yaml@^3.13.1, js-yaml@^3.14.1: + version "3.14.1" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537" + integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g== + dependencies: + argparse "^1.0.7" + esprima "^4.0.0" + +js-yaml@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" + integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== + dependencies: + argparse "^2.0.1" + +json-buffer@3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.1.tgz#9338802a30d3b6605fbe0613e094008ca8c05a13" + integrity sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ== + +json-cycle@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/json-cycle/-/json-cycle-1.3.0.tgz#c4f6f7d926c2979012cba173b06f9cae9e866d3f" + integrity sha512-FD/SedD78LCdSvJaOUQAXseT8oQBb5z6IVYaQaCrVUlu9zOAr1BDdKyVYQaSD/GDsAMrXpKcOyBD4LIl8nfjHw== + +json-refs@^3.0.15: + version "3.0.15" + resolved "https://registry.yarnpkg.com/json-refs/-/json-refs-3.0.15.tgz#1089f4acf263a3152c790479485195cd6449e855" + integrity sha512-0vOQd9eLNBL18EGl5yYaO44GhixmImes2wiYn9Z3sag3QnehWrYWlB9AFtMxCL2Bj3fyxgDYkxGFEU/chlYssw== + dependencies: + commander "~4.1.1" + graphlib "^2.1.8" + js-yaml "^3.13.1" + lodash "^4.17.15" + native-promise-only "^0.8.1" + path-loader "^1.0.10" + slash "^3.0.0" + uri-js "^4.2.2" + +json-schema-traverse@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz#ae7bcb3656ab77a73ba5c49bf654f38e6b6860e2" + integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug== + +jsonfile@^6.0.1: + version "6.1.0" + resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-6.1.0.tgz#bc55b2634793c679ec6403094eb13698a6ec0aae" + integrity sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ== + dependencies: + universalify "^2.0.0" + optionalDependencies: + graceful-fs "^4.1.6" + +jszip@^3.10.1, jszip@^3.5.0: + version "3.10.1" + resolved "https://registry.yarnpkg.com/jszip/-/jszip-3.10.1.tgz#34aee70eb18ea1faec2f589208a157d1feb091c2" + integrity sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g== + dependencies: + lie "~3.3.0" + pako "~1.0.2" + readable-stream "~2.3.6" + setimmediate "^1.0.5" + +jwt-decode@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/jwt-decode/-/jwt-decode-2.2.0.tgz#7d86bd56679f58ce6a84704a657dd392bba81a79" + integrity sha512-86GgN2vzfUu7m9Wcj63iUkuDzFNYFVmjeDm2GzWpUk+opB0pEpMsw6ePCMrhYkumz2C1ihqtZzOMAg7FiXcNoQ== + +jwt-decode@^3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/jwt-decode/-/jwt-decode-3.1.2.tgz#3fb319f3675a2df0c2895c8f5e9fa4b67b04ed59" + integrity sha512-UfpWE/VZn0iP50d8cz9NrZLM9lSWhcJ+0Gt/nm4by88UL+J1SiKN8/5dkjMmbEzwL2CAe+67GsegCbIKtbp75A== + +keccak256@^1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/keccak256/-/keccak256-1.0.6.tgz#dd32fb771558fed51ce4e45a035ae7515573da58" + integrity sha512-8GLiM01PkdJVGUhR1e6M/AvWnSqYS0HaERI+K/QtStGDGlSTx2B1zTqZk4Zlqu5TxHJNTxWAdP9Y+WI50OApUw== + dependencies: + bn.js "^5.2.0" + buffer "^6.0.3" + keccak "^3.0.2" + +keccak@^3.0.2: + version "3.0.3" + resolved "https://registry.yarnpkg.com/keccak/-/keccak-3.0.3.tgz#4bc35ad917be1ef54ff246f904c2bbbf9ac61276" + integrity sha512-JZrLIAJWuZxKbCilMpNz5Vj7Vtb4scDG3dMXLOsbzBmQGyjwE61BbW7bJkfKKCShXiQZt3T6sBgALRtmd+nZaQ== + dependencies: + node-addon-api "^2.0.0" + node-gyp-build "^4.2.0" + readable-stream "^3.6.0" + +keyv@^4.0.0: + version "4.5.2" + resolved "https://registry.yarnpkg.com/keyv/-/keyv-4.5.2.tgz#0e310ce73bf7851ec702f2eaf46ec4e3805cce56" + integrity sha512-5MHbFaKn8cNSmVW7BYnijeAVlE4cYA/SVkifVgrh7yotnfhKmjuXpDKjrABLnT0SfHWV21P8ow07OGfRrNDg8g== + dependencies: + json-buffer "3.0.1" + +lazystream@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/lazystream/-/lazystream-1.0.1.tgz#494c831062f1f9408251ec44db1cba29242a2638" + integrity sha512-b94GiNHQNy6JNTrt5w6zNyffMrNkXZb3KTkCZJb2V1xaEGCk093vkZ2jk3tpaeP33/OiXC+WvK9AxUebnf5nbw== + dependencies: + readable-stream "^2.0.5" + +lie@~3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/lie/-/lie-3.3.0.tgz#dcf82dee545f46074daf200c7c1c5a08e0f40f6a" + integrity sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ== + dependencies: + immediate "~3.0.5" + +lodash.defaults@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/lodash.defaults/-/lodash.defaults-4.2.0.tgz#d09178716ffea4dde9e5fb7b37f6f0802274580c" + integrity sha512-qjxPLHd3r5DnsdGacqOMU6pb/avJzdh9tFX2ymgoZE27BmjXrNy/y4LoaiTeAb+O3gL8AfpJGtqfX/ae2leYYQ== + +lodash.difference@^4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/lodash.difference/-/lodash.difference-4.5.0.tgz#9ccb4e505d486b91651345772885a2df27fd017c" + integrity sha512-dS2j+W26TQ7taQBGN8Lbbq04ssV3emRw4NY58WErlTO29pIqS0HmoT5aJ9+TUQ1N3G+JOZSji4eugsWwGp9yPA== + +lodash.flatten@^4.4.0: + version "4.4.0" + resolved "https://registry.yarnpkg.com/lodash.flatten/-/lodash.flatten-4.4.0.tgz#f31c22225a9632d2bbf8e4addbef240aa765a61f" + integrity sha512-C5N2Z3DgnnKr0LOpv/hKCgKdb7ZZwafIrsesve6lmzvZIRZRGaZ/l6Q8+2W7NaT+ZwO3fFlSCzCzrDCFdJfZ4g== + +lodash.isplainobject@^4.0.6: + version "4.0.6" + resolved "https://registry.yarnpkg.com/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz#7c526a52d89b45c45cc690b88163be0497f550cb" + integrity sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA== + +lodash.union@^4.6.0: + version "4.6.0" + resolved "https://registry.yarnpkg.com/lodash.union/-/lodash.union-4.6.0.tgz#48bb5088409f16f1821666641c44dd1aaae3cd88" + integrity sha512-c4pB2CdGrGdjMKYLA+XiRDO7Y0PRQbm/Gzg8qMj+QH+pFVAoTp5sBpO0odL3FjoPCGjK96p6qsP+yQoiLoOBcw== + +lodash@^4.17.11, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.21: + version "4.17.21" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" + integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== + +log-node@^8.0.3: + version "8.0.3" + resolved "https://registry.yarnpkg.com/log-node/-/log-node-8.0.3.tgz#441bf1a72f9f1c28b62f5bf42e9eb3765af74d73" + integrity sha512-1UBwzgYiCIDFs8A0rM2QdBFo8Wd8UQ0HrSTu/MNI+/2zN3NoHRj2fhplurAyuxTYUXu3Oohugq1jAn5s05u1MQ== + dependencies: + ansi-regex "^5.0.1" + cli-color "^2.0.1" + cli-sprintf-format "^1.1.1" + d "^1.0.1" + es5-ext "^0.10.53" + sprintf-kit "^2.0.1" + supports-color "^8.1.1" + type "^2.5.0" + +log-symbols@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-4.1.0.tgz#3fbdbb95b4683ac9fc785111e792e558d4abd503" + integrity sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg== + dependencies: + chalk "^4.1.0" + is-unicode-supported "^0.1.0" + +log@^6.0.0, log@^6.3.1: + version "6.3.1" + resolved "https://registry.yarnpkg.com/log/-/log-6.3.1.tgz#fcf9bd71fe2274a51ad608dc95c549dd7512146b" + integrity sha512-McG47rJEWOkXTDioZzQNydAVvZNeEkSyLJ1VWkFwfW+o1knW+QSi8D1KjPn/TnctV+q99lkvJNe1f0E1IjfY2A== + dependencies: + d "^1.0.1" + duration "^0.2.2" + es5-ext "^0.10.53" + event-emitter "^0.3.5" + sprintf-kit "^2.0.1" + type "^2.5.0" + uni-global "^1.0.0" + +lowercase-keys@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-2.0.0.tgz#2603e78b7b4b0006cbca2fbcc8a3202558ac9479" + integrity sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA== + +lru-cache@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" + integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== + dependencies: + yallist "^4.0.0" + +lru-queue@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/lru-queue/-/lru-queue-0.1.0.tgz#2738bd9f0d3cf4f84490c5736c48699ac632cda3" + integrity sha512-BpdYkt9EvGl8OfWHDQPISVpcl5xZthb+XPsbELj5AQXxIC8IriDZIQYjBJPEm5rS420sjZ0TLEzRcq5KdBhYrQ== + dependencies: + es5-ext "~0.10.2" + +make-dir@^1.0.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-1.3.0.tgz#79c1033b80515bd6d24ec9933e860ca75ee27f0c" + integrity sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ== + dependencies: + pify "^3.0.0" + +make-dir@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f" + integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw== + dependencies: + semver "^6.0.0" + +memoizee@^0.4.14, memoizee@^0.4.15: + version "0.4.15" + resolved "https://registry.yarnpkg.com/memoizee/-/memoizee-0.4.15.tgz#e6f3d2da863f318d02225391829a6c5956555b72" + integrity sha512-UBWmJpLZd5STPm7PMUlOw/TSy972M+z8gcyQ5veOnSDRREz/0bmpyTfKt3/51DhEBqCZQn1udM/5flcSPYhkdQ== + dependencies: + d "^1.0.1" + es5-ext "^0.10.53" + es6-weak-map "^2.0.3" + event-emitter "^0.3.5" + is-promise "^2.2.2" + lru-queue "^0.1.0" + next-tick "^1.1.0" + timers-ext "^0.1.7" + +merge2@^1.3.0, merge2@^1.4.1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" + integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== + +methods@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" + integrity sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w== + +micromatch@^4.0.4, micromatch@^4.0.5: + version "4.0.5" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.5.tgz#bc8999a7cbbf77cdc89f132f6e467051b49090c6" + integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA== + dependencies: + braces "^3.0.2" + picomatch "^2.3.1" + +mime-db@1.52.0, mime-db@^1.28.0: + version "1.52.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" + integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== + +mime-types@^2.1.12: + version "2.1.35" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" + integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== + dependencies: + mime-db "1.52.0" + +mime@2.6.0: + version "2.6.0" + resolved "https://registry.yarnpkg.com/mime/-/mime-2.6.0.tgz#a2a682a95cd4d0cb1d6257e28f83da7e35800367" + integrity sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg== + +mimic-fn@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" + integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== + +mimic-response@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-1.0.1.tgz#4923538878eef42063cb8a3e3b0798781487ab1b" + integrity sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ== + +mimic-response@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-3.1.0.tgz#2d1d59af9c1b129815accc2c46a022a5ce1fa3c9" + integrity sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ== + +minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" + integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A== + +minimalistic-crypto-utils@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" + integrity sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg== + +minimatch@^3.0.2, minimatch@^3.0.4, minimatch@^3.1.1: + version "3.1.2" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" + integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== + dependencies: + brace-expansion "^1.1.7" + +minimatch@^5.1.0: + version "5.1.6" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-5.1.6.tgz#1cfcb8cf5522ea69952cd2af95ae09477f122a96" + integrity sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g== + dependencies: + brace-expansion "^2.0.1" + +minipass@^3.0.0: + version "3.3.6" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-3.3.6.tgz#7bba384db3a1520d18c9c0e5251c3444e95dd94a" + integrity sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw== + dependencies: + yallist "^4.0.0" + +minipass@^4.0.0: + version "4.0.3" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-4.0.3.tgz#00bfbaf1e16e35e804f4aa31a7c1f6b8d9f0ee72" + integrity sha512-OW2r4sQ0sI+z5ckEt5c1Tri4xTgZwYDxpE54eqWlQloQRoWtXjqt9udJ5Z4dSv7wK+nfFI7FRXyCpBSft+gpFw== + +minizlib@^2.1.1: + version "2.1.2" + resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-2.1.2.tgz#e90d3466ba209b932451508a11ce3d3632145931" + integrity sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg== + dependencies: + minipass "^3.0.0" + yallist "^4.0.0" + +mkdirp@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" + integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== + +ms@2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" + integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== + +mute-stream@0.0.8, mute-stream@~0.0.4: + version "0.0.8" + resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d" + integrity sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA== + +native-promise-only@^0.8.1: + version "0.8.1" + resolved "https://registry.yarnpkg.com/native-promise-only/-/native-promise-only-0.8.1.tgz#20a318c30cb45f71fe7adfbf7b21c99c1472ef11" + integrity sha512-zkVhZUA3y8mbz652WrL5x0fB0ehrBkulWT3TomAQ9iDtyXZvzKeEA6GPxAItBYeNYl5yngKRX612qHOhvMkDeg== + +ncjsm@^4.3.1, ncjsm@^4.3.2: + version "4.3.2" + resolved "https://registry.yarnpkg.com/ncjsm/-/ncjsm-4.3.2.tgz#87fc4be253481969f691060a919ca194ba5ca879" + integrity sha512-6d1VWA7FY31CpI4Ki97Fpm36jfURkVbpktizp8aoVViTZRQgr/0ddmlKerALSSlzfwQRBeSq1qwwVcBJK4Sk7Q== + dependencies: + builtin-modules "^3.3.0" + deferred "^0.7.11" + es5-ext "^0.10.62" + es6-set "^0.1.6" + ext "^1.7.0" + find-requires "^1.0.0" + fs2 "^0.3.9" + type "^2.7.2" + +next-tick@1, next-tick@^1.0.0, next-tick@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/next-tick/-/next-tick-1.1.0.tgz#1836ee30ad56d67ef281b22bd199f709449b35eb" + integrity sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ== + +nice-try@^1.0.4: + version "1.0.5" + resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" + integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ== + +node-addon-api@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-2.0.2.tgz#432cfa82962ce494b132e9d72a15b29f71ff5d32" + integrity sha512-Ntyt4AIXyaLIuMHF6IOoTakB3K+RWxwtsHNRxllEoA6vPwP9o4866g6YWDLUdnucilZhmkxiHwHr11gAENw+QA== + +node-dir@^0.1.17: + version "0.1.17" + resolved "https://registry.yarnpkg.com/node-dir/-/node-dir-0.1.17.tgz#5f5665d93351335caabef8f1c554516cf5f1e4e5" + integrity sha512-tmPX422rYgofd4epzrNoOXiE8XFZYOcCq1vD7MAXCDO+O+zndlA2ztdKKMa+EeuBG5tHETpr4ml4RGgpqDCCAg== + dependencies: + minimatch "^3.0.2" + +node-fetch@^2.6.0, node-fetch@^2.6.1: + version "2.6.11" + resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.11.tgz#cde7fc71deef3131ef80a738919f999e6edfff25" + integrity sha512-4I6pdBY1EthSqDmJkiNk3JIT8cswwR9nfeW/cPdUagJYEQG7R95WRH74wpz7ma8Gh/9dI9FP+OU+0E4FvtA55w== + dependencies: + whatwg-url "^5.0.0" + +node-fetch@^2.6.7, node-fetch@^2.6.8: + version "2.6.9" + resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.9.tgz#7c7f744b5cc6eb5fd404e0c7a9fec630a55657e6" + integrity sha512-DJm/CJkZkRjKKj4Zi4BsKVZh3ValV5IR5s7LVZnW+6YMh0W1BfNA8XSs6DLMGYlId5F3KnA70uu2qepcR08Qqg== + dependencies: + whatwg-url "^5.0.0" + +node-gyp-build@^4.2.0: + version "4.6.0" + resolved "https://registry.yarnpkg.com/node-gyp-build/-/node-gyp-build-4.6.0.tgz#0c52e4cbf54bbd28b709820ef7b6a3c2d6209055" + integrity sha512-NTZVKn9IylLwUzaKjkas1e4u2DLNcV4rdYagA4PWdPwW87Bi7z+BznyKSRwS/761tV/lzCGXplWsiaMjLqP2zQ== + +normalize-path@^3.0.0, normalize-path@~3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" + integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== + +normalize-url@^6.0.1: + version "6.1.0" + resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-6.1.0.tgz#40d0885b535deffe3f3147bec877d05fe4c5668a" + integrity sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A== + +npm-registry-utilities@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/npm-registry-utilities/-/npm-registry-utilities-1.0.0.tgz#75dc21fcb96020d506b99823407c2088508a4edd" + integrity sha512-9xYfSJy2IFQw1i6462EJzjChL9e65EfSo2Cw6kl0EFeDp05VvU+anrQk3Fc0d1MbVCq7rWIxeer89O9SUQ/uOg== + dependencies: + ext "^1.6.0" + fs2 "^0.3.9" + memoizee "^0.4.15" + node-fetch "^2.6.7" + semver "^7.3.5" + type "^2.6.0" + validate-npm-package-name "^3.0.0" + +object-assign@^4.0.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" + integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== + +object-hash@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/object-hash/-/object-hash-3.0.0.tgz#73f97f753e7baffc0e2cc9d6e079079744ac82e9" + integrity sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw== + +object-inspect@^1.9.0: + version "1.12.3" + resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.12.3.tgz#ba62dffd67ee256c8c086dfae69e016cd1f198b9" + integrity sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g== + +once@^1.3.0, once@^1.3.1, once@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" + integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== + dependencies: + wrappy "1" + +onetime@^5.1.0: + version "5.1.2" + resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e" + integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== + dependencies: + mimic-fn "^2.1.0" + +open@^7.4.2: + version "7.4.2" + resolved "https://registry.yarnpkg.com/open/-/open-7.4.2.tgz#b8147e26dcf3e426316c730089fd71edd29c2321" + integrity sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q== + dependencies: + is-docker "^2.0.0" + is-wsl "^2.1.1" + +open@^8.4.0: + version "8.4.1" + resolved "https://registry.yarnpkg.com/open/-/open-8.4.1.tgz#2ab3754c07f5d1f99a7a8d6a82737c95e3101cff" + integrity sha512-/4b7qZNhv6Uhd7jjnREh1NjnPxlTq+XNWPG88Ydkj5AILcA5m3ajvcg57pB24EQjKv0dK62XnDqk9c/hkIG5Kg== + dependencies: + define-lazy-prop "^2.0.0" + is-docker "^2.1.1" + is-wsl "^2.2.0" + +ora@^5.4.1: + version "5.4.1" + resolved "https://registry.yarnpkg.com/ora/-/ora-5.4.1.tgz#1b2678426af4ac4a509008e5e4ac9e9959db9e18" + integrity sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ== + dependencies: + bl "^4.1.0" + chalk "^4.1.0" + cli-cursor "^3.1.0" + cli-spinners "^2.5.0" + is-interactive "^1.0.0" + is-unicode-supported "^0.1.0" + log-symbols "^4.1.0" + strip-ansi "^6.0.0" + wcwidth "^1.0.1" + +os-tmpdir@~1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" + integrity sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g== + +p-cancelable@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-2.1.1.tgz#aab7fbd416582fa32a3db49859c122487c5ed2cf" + integrity sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg== + +p-event@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/p-event/-/p-event-4.2.0.tgz#af4b049c8acd91ae81083ebd1e6f5cae2044c1b5" + integrity sha512-KXatOjCRXXkSePPb1Nbi0p0m+gQAwdlbhi4wQKJPI1HsMQS9g+Sqp2o+QHziPr7eYJyOZet836KoHEVM1mwOrQ== + dependencies: + p-timeout "^3.1.0" + +p-finally@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" + integrity sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow== + +p-timeout@^3.1.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/p-timeout/-/p-timeout-3.2.0.tgz#c7e17abc971d2a7962ef83626b35d635acf23dfe" + integrity sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg== + dependencies: + p-finally "^1.0.0" + +pako@~1.0.2: + version "1.0.11" + resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.11.tgz#6c9599d340d54dfd3946380252a35705a6b992bf" + integrity sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw== + +path-is-absolute@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" + integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== + +path-key@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" + integrity sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw== + +path-loader@^1.0.10: + version "1.0.12" + resolved "https://registry.yarnpkg.com/path-loader/-/path-loader-1.0.12.tgz#c5a99d464da27cfde5891d158a68807abbdfa5f5" + integrity sha512-n7oDG8B+k/p818uweWrOixY9/Dsr89o2TkCm6tOTex3fpdo2+BFDgR+KpB37mGKBRsBAlR8CIJMFN0OEy/7hIQ== + dependencies: + native-promise-only "^0.8.1" + superagent "^7.1.6" + +path-type@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" + integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== + +path2@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/path2/-/path2-0.1.0.tgz#639828942cdbda44a41a45b074ae8873483b4efa" + integrity sha512-TX+cz8Jk+ta7IvRy2FAej8rdlbrP0+uBIkP/5DTODez/AuL/vSb30KuAdDxGVREXzn8QfAiu5mJYJ1XjbOhEPA== + +peek-readable@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/peek-readable/-/peek-readable-4.1.0.tgz#4ece1111bf5c2ad8867c314c81356847e8a62e72" + integrity sha512-ZI3LnwUv5nOGbQzD9c2iDG6toheuXSZP5esSHBjopsXH4dg19soufvpUGA3uohi5anFtGb2lhAVdHzH6R/Evvg== + +pend@~1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/pend/-/pend-1.2.0.tgz#7a57eb550a6783f9115331fcf4663d5c8e007a50" + integrity sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg== + +picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.3.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" + integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== + +pify@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" + integrity sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog== + +pify@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176" + integrity sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg== + +pinkie-promise@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa" + integrity sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw== + dependencies: + pinkie "^2.0.0" + +pinkie@^2.0.0: + version "2.0.4" + resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870" + integrity sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg== + +process-nextick-args@~2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" + integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== + +process-utils@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/process-utils/-/process-utils-4.0.0.tgz#3e5b204e1d38e62fe39ef3144664a1fe94097b9e" + integrity sha512-fMyMQbKCxX51YxR7YGCzPjLsU3yDzXFkP4oi1/Mt5Ixnk7GO/7uUTj8mrCHUwuvozWzI+V7QSJR9cZYnwNOZPg== + dependencies: + ext "^1.4.0" + fs2 "^0.3.9" + memoizee "^0.4.14" + type "^2.1.0" + +promise-queue@^2.2.5: + version "2.2.5" + resolved "https://registry.yarnpkg.com/promise-queue/-/promise-queue-2.2.5.tgz#2f6f5f7c0f6d08109e967659c79b88a9ed5e93b4" + integrity sha512-p/iXrPSVfnqPft24ZdNNLECw/UrtLTpT3jpAAMzl/o5/rDsGCPo3/CQS2611flL6LkoEJ3oQZw7C8Q80ZISXRQ== + +prompt@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/prompt/-/prompt-1.3.0.tgz#b1f6d47cb1b6beed4f0660b470f5d3ec157ad7ce" + integrity sha512-ZkaRWtaLBZl7KKAKndKYUL8WqNT+cQHKRZnT4RYYms48jQkFw3rrBL+/N5K/KtdEveHkxs982MX2BkDKub2ZMg== + dependencies: + "@colors/colors" "1.5.0" + async "3.2.3" + read "1.0.x" + revalidator "0.1.x" + winston "2.x" + +pump@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" + integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww== + dependencies: + end-of-stream "^1.1.0" + once "^1.3.1" + +punycode@1.3.2: + version "1.3.2" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d" + integrity sha512-RofWgt/7fL5wP1Y7fxE7/EmTLzQVnB0ycyibJ0OOHIlJqTNzglYFxVwETOcIoJqJmpDXJ9xImDv+Fq34F/d4Dw== + +punycode@^2.1.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.0.tgz#f67fa67c94da8f4d0cfff981aee4118064199b8f" + integrity sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA== + +qs@^6.10.3, qs@^6.11.0: + version "6.11.0" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.11.0.tgz#fd0d963446f7a65e1367e01abd85429453f0c37a" + integrity sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q== + dependencies: + side-channel "^1.0.4" + +querystring@0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620" + integrity sha512-X/xY82scca2tau62i9mDyU9K+I+djTMUsvwf7xnUX5GLvVzgJybOJf4Y6o9Zx3oJK/LSXg5tTZBjwzqVPaPO2g== + +querystring@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.1.tgz#40d77615bb09d16902a85c3e38aa8b5ed761c2dd" + integrity sha512-wkvS7mL/JMugcup3/rMitHmd9ecIGd2lhFhK9N3UUQ450h66d1r3Y9nvXzQAW1Lq+wyx61k/1pfKS5KuKiyEbg== + +queue-microtask@^1.2.2: + version "1.2.3" + resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" + integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== + +quick-lru@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-5.1.1.tgz#366493e6b3e42a3a6885e2e99d18f80fb7a8c932" + integrity sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA== + +read@1.0.x: + version "1.0.7" + resolved "https://registry.yarnpkg.com/read/-/read-1.0.7.tgz#b3da19bd052431a97671d44a42634adf710b40c4" + integrity sha512-rSOKNYUmaxy0om1BNjMN4ezNT6VKK+2xF4GBhc81mkH7L60i6dp8qPYrkndNLT3QPphoII3maL9PVC9XmhHwVQ== + dependencies: + mute-stream "~0.0.4" + +readable-stream@^2.0.0, readable-stream@^2.0.5, readable-stream@^2.3.0, readable-stream@^2.3.5, readable-stream@~2.3.6: + version "2.3.7" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" + integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.3" + isarray "~1.0.0" + process-nextick-args "~2.0.0" + safe-buffer "~5.1.1" + string_decoder "~1.1.1" + util-deprecate "~1.0.1" + +readable-stream@^3.0.0, readable-stream@^3.1.1, readable-stream@^3.4.0, readable-stream@^3.6.0: + version "3.6.0" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198" + integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA== + dependencies: + inherits "^2.0.3" + string_decoder "^1.1.1" + util-deprecate "^1.0.1" + +readable-web-to-node-stream@^3.0.0: + version "3.0.2" + resolved "https://registry.yarnpkg.com/readable-web-to-node-stream/-/readable-web-to-node-stream-3.0.2.tgz#5d52bb5df7b54861fd48d015e93a2cb87b3ee0bb" + integrity sha512-ePeK6cc1EcKLEhJFt/AebMCLL+GgSKhuygrZ/GLaKZYEecIgIECf4UaUuaByiGtzckwR4ain9VzUh95T1exYGw== + dependencies: + readable-stream "^3.6.0" + +readdir-glob@^1.0.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/readdir-glob/-/readdir-glob-1.1.2.tgz#b185789b8e6a43491635b6953295c5c5e3fd224c" + integrity sha512-6RLVvwJtVwEDfPdn6X6Ille4/lxGl0ATOY4FN/B9nxQcgOazvvI0nodiD19ScKq0PvA/29VpaOQML36o5IzZWA== + dependencies: + minimatch "^5.1.0" + +readdirp@~3.6.0: + version "3.6.0" + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" + integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== + dependencies: + picomatch "^2.2.1" + +require-from-string@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909" + integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw== + +resolve-alpn@^1.0.0: + version "1.2.1" + resolved "https://registry.yarnpkg.com/resolve-alpn/-/resolve-alpn-1.2.1.tgz#b7adbdac3546aaaec20b45e7d8265927072726f9" + integrity sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g== + +responselike@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/responselike/-/responselike-2.0.1.tgz#9a0bc8fdc252f3fb1cca68b016591059ba1422bc" + integrity sha512-4gl03wn3hj1HP3yzgdI7d3lCkF95F21Pz4BPGvKHinyQzALR5CapwC8yIi0Rh58DEMQ/SguC03wFj2k0M/mHhw== + dependencies: + lowercase-keys "^2.0.0" + +restore-cursor@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-3.1.0.tgz#39f67c54b3a7a58cea5236d95cf0034239631f7e" + integrity sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA== + dependencies: + onetime "^5.1.0" + signal-exit "^3.0.2" + +retry@0.13.1: + version "0.13.1" + resolved "https://registry.yarnpkg.com/retry/-/retry-0.13.1.tgz#185b1587acf67919d63b357349e03537b2484658" + integrity sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg== + +reusify@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" + integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== + +revalidator@0.1.x: + version "0.1.8" + resolved "https://registry.yarnpkg.com/revalidator/-/revalidator-0.1.8.tgz#fece61bfa0c1b52a206bd6b18198184bdd523a3b" + integrity sha512-xcBILK2pA9oh4SiinPEZfhP8HfrB/ha+a2fTMyl7Om2WjlDVrOQy99N2MXXlUHqGJz4qEu2duXxHJjDWuK/0xg== + +run-async@^2.4.0: + version "2.4.1" + resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.4.1.tgz#8440eccf99ea3e70bd409d49aab88e10c189a455" + integrity sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ== + +run-parallel-limit@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/run-parallel-limit/-/run-parallel-limit-1.1.0.tgz#be80e936f5768623a38a963262d6bef8ff11e7ba" + integrity sha512-jJA7irRNM91jaKc3Hcl1npHsFLOXOoTkPCUL1JEa1R82O2miplXXRaGdjW/KM/98YQWDhJLiSs793CnXfblJUw== + dependencies: + queue-microtask "^1.2.2" + +run-parallel@^1.1.9: + version "1.2.0" + resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" + integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== + dependencies: + queue-microtask "^1.2.2" + +rxjs@^7.5.5: + version "7.8.0" + resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-7.8.0.tgz#90a938862a82888ff4c7359811a595e14e1e09a4" + integrity sha512-F2+gxDshqmIub1KdvZkaEfGDwLNpPvk9Fs6LD/MyQxNgMds/WH9OdDDXOmxUZpME+iSK3rQCctkL0DYyytUqMg== + dependencies: + tslib "^2.1.0" + +safe-buffer@5.2.1, safe-buffer@^5.1.1, safe-buffer@~5.2.0: + version "5.2.1" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" + integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== + +safe-buffer@~5.1.0, safe-buffer@~5.1.1: + version "5.1.2" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" + integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== + +"safer-buffer@>= 2.1.2 < 3": + version "2.1.2" + resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" + integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== + +sax@1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.1.tgz#7b8e656190b228e81a66aea748480d828cd2d37a" + integrity sha512-8I2a3LovHTOpm7NV5yOyO8IHqgVsfK4+UuySrXU8YXkSRX7k6hCV9b3HrkKCr3nMpgj+0bmocaJJWpvp1oc7ZA== + +sax@>=0.6.0: + version "1.2.4" + resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" + integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== + +scrypt-js@3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/scrypt-js/-/scrypt-js-3.0.1.tgz#d314a57c2aef69d1ad98a138a21fe9eafa9ee312" + integrity sha512-cdwTTnqPu0Hyvf5in5asVdZocVDTNRmR7XEcJuIzMjJeSHybHl7vpB66AzwTaIg6CLSbtjcxc8fqcySfnTkccA== + +seek-bzip@^1.0.5: + version "1.0.6" + resolved "https://registry.yarnpkg.com/seek-bzip/-/seek-bzip-1.0.6.tgz#35c4171f55a680916b52a07859ecf3b5857f21c4" + integrity sha512-e1QtP3YL5tWww8uKaOCQ18UxIT2laNBXHjV/S2WYCiK4udiv8lkG89KRIoCjUagnAmCBurjF4zEVX2ByBbnCjQ== + dependencies: + commander "^2.8.1" + +semver@^5.5.0: + version "5.7.1" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" + integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== + +semver@^6.0.0: + version "6.3.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" + integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== + +semver@^7.3.5, semver@^7.3.7, semver@^7.3.8: + version "7.3.8" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.8.tgz#07a78feafb3f7b32347d725e33de7e2a2df67798" + integrity sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A== + dependencies: + lru-cache "^6.0.0" + +serverless@^3.20.0: + version "3.27.0" + resolved "https://registry.yarnpkg.com/serverless/-/serverless-3.27.0.tgz#06e38fb150ef95419ad83d9f0b8878533b1517a0" + integrity sha512-+8EDo7x8IJxTj4KqQG71qpX7oq+EZy0NGm/04q3M5jK7L8rLowEtnzq82s93yeNSgmJSMopd3pTzuH9CCWkNMw== + dependencies: + "@serverless/dashboard-plugin" "^6.2.3" + "@serverless/platform-client" "^4.3.2" + "@serverless/utils" "^6.8.2" + ajv "^8.12.0" + ajv-formats "^2.1.1" + archiver "^5.3.1" + aws-sdk "^2.1303.0" + bluebird "^3.7.2" + cachedir "^2.3.0" + chalk "^4.1.2" + child-process-ext "^2.1.1" + ci-info "^3.7.1" + cli-progress-footer "^2.3.2" + d "^1.0.1" + dayjs "^1.11.7" + decompress "^4.2.1" + dotenv "^16.0.3" + dotenv-expand "^9.0.0" + essentials "^1.2.0" + ext "^1.7.0" + fastest-levenshtein "^1.0.16" + filesize "^10.0.6" + fs-extra "^10.1.0" + get-stdin "^8.0.0" + globby "^11.1.0" + got "^11.8.6" + graceful-fs "^4.2.10" + https-proxy-agent "^5.0.1" + is-docker "^2.2.1" + js-yaml "^4.1.0" + json-cycle "^1.3.0" + json-refs "^3.0.15" + lodash "^4.17.21" + memoizee "^0.4.15" + micromatch "^4.0.5" + node-fetch "^2.6.8" + npm-registry-utilities "^1.0.0" + object-hash "^3.0.0" + open "^8.4.0" + path2 "^0.1.0" + process-utils "^4.0.0" + promise-queue "^2.2.5" + require-from-string "^2.0.2" + semver "^7.3.8" + signal-exit "^3.0.7" + strip-ansi "^6.0.1" + supports-color "^8.1.1" + tar "^6.1.13" + timers-ext "^0.1.7" + type "^2.7.2" + untildify "^4.0.0" + uuid "^9.0.0" + yaml-ast-parser "0.0.43" + +setimmediate@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" + integrity sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA== + +shebang-command@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" + integrity sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg== + dependencies: + shebang-regex "^1.0.0" + +shebang-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" + integrity sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ== + +side-channel@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.4.tgz#efce5c8fdc104ee751b25c58d4290011fa5ea2cf" + integrity sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw== + dependencies: + call-bind "^1.0.0" + get-intrinsic "^1.0.2" + object-inspect "^1.9.0" + +signal-exit@^3.0.2, signal-exit@^3.0.7: + version "3.0.7" + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" + integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== + +simple-git@^3.16.0: + version "3.16.0" + resolved "https://registry.yarnpkg.com/simple-git/-/simple-git-3.16.0.tgz#421773e24680f5716999cc4a1d60127b4b6a9dec" + integrity sha512-zuWYsOLEhbJRWVxpjdiXl6eyAyGo/KzVW+KFhhw9MqEEJttcq+32jTWSGyxTdf9e/YCohxRE+9xpWFj9FdiJNw== + dependencies: + "@kwsites/file-exists" "^1.1.1" + "@kwsites/promise-deferred" "^1.1.1" + debug "^4.3.4" + +slash@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" + integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== + +sort-keys-length@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/sort-keys-length/-/sort-keys-length-1.0.1.tgz#9cb6f4f4e9e48155a6aa0671edd336ff1479a188" + integrity sha512-GRbEOUqCxemTAk/b32F2xa8wDTs+Z1QHOkbhJDQTvv/6G3ZkbJ+frYWsTcc7cBB3Fu4wy4XlLCuNtJuMn7Gsvw== + dependencies: + sort-keys "^1.0.0" + +sort-keys@^1.0.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/sort-keys/-/sort-keys-1.1.2.tgz#441b6d4d346798f1b4e49e8920adfba0e543f9ad" + integrity sha512-vzn8aSqKgytVik0iwdBEi+zevbTYZogewTUM6dtpmGwEcdzbub/TX4bCzRhebDCRC3QzXgJsLRKB2V/Oof7HXg== + dependencies: + is-plain-obj "^1.0.0" + +split2@^3.1.1: + version "3.2.2" + resolved "https://registry.yarnpkg.com/split2/-/split2-3.2.2.tgz#bf2cf2a37d838312c249c89206fd7a17dd12365f" + integrity sha512-9NThjpgZnifTkJpzTZ7Eue85S49QwpNhZTq6GRJwObb6jnLFNGB7Qm73V5HewTROPyxD0C29xqmaI68bQtV+hg== + dependencies: + readable-stream "^3.0.0" + +sprintf-js@~1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" + integrity sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g== + +sprintf-kit@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/sprintf-kit/-/sprintf-kit-2.0.1.tgz#bb837e8fa4b28f094531d8e33669120027236bb8" + integrity sha512-2PNlcs3j5JflQKcg4wpdqpZ+AjhQJ2OZEo34NXDtlB0tIPG84xaaXhpA8XFacFiwjKA4m49UOYG83y3hbMn/gQ== + dependencies: + es5-ext "^0.10.53" + +stack-trace@0.0.x: + version "0.0.10" + resolved "https://registry.yarnpkg.com/stack-trace/-/stack-trace-0.0.10.tgz#547c70b347e8d32b4e108ea1a2a159e5fdde19c0" + integrity sha512-KGzahc7puUKkzyMt+IqAep+TVNbKP+k2Lmwhub39m1AsTSkaDutx56aDCo+HLDzf/D26BIHTJWNiTG1KAJiQCg== + +stream-promise@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/stream-promise/-/stream-promise-3.2.0.tgz#bad976f2d0e1f11d56cc95cc11907cfd869a27ff" + integrity sha512-P+7muTGs2C8yRcgJw/PPt61q7O517tDHiwYEzMWo1GSBCcZedUMT/clz7vUNsSxFphIlJ6QUL4GexQKlfJoVtA== + dependencies: + "2-thenable" "^1.0.0" + es5-ext "^0.10.49" + is-stream "^1.1.0" + +string-width@^4.1.0: + version "4.2.3" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" + integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.1" + +string_decoder@^1.1.1: + version "1.3.0" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" + integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== + dependencies: + safe-buffer "~5.2.0" + +string_decoder@~1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" + integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== + dependencies: + safe-buffer "~5.1.0" + +strip-ansi@^6.0.0, strip-ansi@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" + integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== + dependencies: + ansi-regex "^5.0.1" + +strip-dirs@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/strip-dirs/-/strip-dirs-2.1.0.tgz#4987736264fc344cf20f6c34aca9d13d1d4ed6c5" + integrity sha512-JOCxOeKLm2CAS73y/U4ZeZPTkE+gNVCzKt7Eox84Iej1LT/2pTWYpZKJuxwQpvX1LiZb1xokNR7RLfuBAa7T3g== + dependencies: + is-natural-number "^4.0.1" + +strip-outer@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/strip-outer/-/strip-outer-1.0.1.tgz#b2fd2abf6604b9d1e6013057195df836b8a9d631" + integrity sha512-k55yxKHwaXnpYGsOzg4Vl8+tDrWylxDEpknGjhTiZB8dFRU5rTo9CAzeycivxV3s+zlTKwrs6WxMxR95n26kwg== + dependencies: + escape-string-regexp "^1.0.2" + +strtok3@^6.2.4: + version "6.3.0" + resolved "https://registry.yarnpkg.com/strtok3/-/strtok3-6.3.0.tgz#358b80ffe6d5d5620e19a073aa78ce947a90f9a0" + integrity sha512-fZtbhtvI9I48xDSywd/somNqgUHl2L2cstmXCCif0itOf96jeW18MBSyrLuNicYQVkvpOxkZtkzujiTJ9LW5Jw== + dependencies: + "@tokenizer/token" "^0.3.0" + peek-readable "^4.1.0" + +superagent@^7.1.6: + version "7.1.6" + resolved "https://registry.yarnpkg.com/superagent/-/superagent-7.1.6.tgz#64f303ed4e4aba1e9da319f134107a54cacdc9c6" + integrity sha512-gZkVCQR1gy/oUXr+kxJMLDjla434KmSOKbx5iGD30Ql+AkJQ/YlPKECJy2nhqOsHLjGHzoDTXNSjhnvWhzKk7g== + dependencies: + component-emitter "^1.3.0" + cookiejar "^2.1.3" + debug "^4.3.4" + fast-safe-stringify "^2.1.1" + form-data "^4.0.0" + formidable "^2.0.1" + methods "^1.1.2" + mime "2.6.0" + qs "^6.10.3" + readable-stream "^3.6.0" + semver "^7.3.7" + +supports-color@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-6.1.0.tgz#0764abc69c63d5ac842dd4867e8d025e880df8f3" + integrity sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ== + dependencies: + has-flag "^3.0.0" + +supports-color@^7.1.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" + integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== + dependencies: + has-flag "^4.0.0" + +supports-color@^8.1.1: + version "8.1.1" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c" + integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== + dependencies: + has-flag "^4.0.0" + +tar-stream@^1.5.2: + version "1.6.2" + resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-1.6.2.tgz#8ea55dab37972253d9a9af90fdcd559ae435c555" + integrity sha512-rzS0heiNf8Xn7/mpdSVVSMAWAoy9bfb1WOTYC78Z0UQKeKa/CWS8FOq0lKGNa8DWKAn9gxjCvMLYc5PGXYlK2A== + dependencies: + bl "^1.0.0" + buffer-alloc "^1.2.0" + end-of-stream "^1.0.0" + fs-constants "^1.0.0" + readable-stream "^2.3.0" + to-buffer "^1.1.1" + xtend "^4.0.0" + +tar-stream@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-2.2.0.tgz#acad84c284136b060dc3faa64474aa9aebd77287" + integrity sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ== + dependencies: + bl "^4.0.3" + end-of-stream "^1.4.1" + fs-constants "^1.0.0" + inherits "^2.0.3" + readable-stream "^3.1.1" + +tar@^6.1.13: + version "6.1.13" + resolved "https://registry.yarnpkg.com/tar/-/tar-6.1.13.tgz#46e22529000f612180601a6fe0680e7da508847b" + integrity sha512-jdIBIN6LTIe2jqzay/2vtYLlBHa3JF42ot3h1dW8Q0PaAG4v8rm0cvpVePtau5C6OKXGGcgO9q2AMNSWxiLqKw== + dependencies: + chownr "^2.0.0" + fs-minipass "^2.0.0" + minipass "^4.0.0" + minizlib "^2.1.1" + mkdirp "^1.0.3" + yallist "^4.0.0" + +throat@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/throat/-/throat-5.0.0.tgz#c5199235803aad18754a667d659b5e72ce16764b" + integrity sha512-fcwX4mndzpLQKBS1DVYhGAcYaYt7vsHNIvQV+WXMvnow5cgjPphq5CaayLaGsjRdSCKZFNGt7/GYAuXaNOiYCA== + +through@^2.3.6, through@^2.3.8: + version "2.3.8" + resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" + integrity sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg== + +timers-ext@^0.1.7: + version "0.1.7" + resolved "https://registry.yarnpkg.com/timers-ext/-/timers-ext-0.1.7.tgz#6f57ad8578e07a3fb9f91d9387d65647555e25c6" + integrity sha512-b85NUNzTSdodShTIbky6ZF02e8STtVVfD+fu4aXXShEELpozH+bCpJLYMPZbsABN2wDH7fJpqIoXxJpzbf0NqQ== + dependencies: + es5-ext "~0.10.46" + next-tick "1" + +tmp@^0.0.33: + version "0.0.33" + resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" + integrity sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw== + dependencies: + os-tmpdir "~1.0.2" + +to-buffer@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/to-buffer/-/to-buffer-1.1.1.tgz#493bd48f62d7c43fcded313a03dcadb2e1213a80" + integrity sha512-lx9B5iv7msuFYE3dytT+KE5tap+rNYw+K4jVkb9R/asAb+pbBSM17jtunHplhBe6RRJdZx3Pn2Jph24O32mOVg== + +to-regex-range@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" + integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== + dependencies: + is-number "^7.0.0" + +token-types@^4.1.1: + version "4.2.1" + resolved "https://registry.yarnpkg.com/token-types/-/token-types-4.2.1.tgz#0f897f03665846982806e138977dbe72d44df753" + integrity sha512-6udB24Q737UD/SDsKAHI9FCRP7Bqc9D/MQUV02ORQg5iskjtLJlZJNdN4kKtcdtwCeWIwIHDGaUsTsCCAa8sFQ== + dependencies: + "@tokenizer/token" "^0.3.0" + ieee754 "^1.2.1" + +tr46@~0.0.3: + version "0.0.3" + resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" + integrity sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw== + +traverse@^0.6.6: + version "0.6.7" + resolved "https://registry.yarnpkg.com/traverse/-/traverse-0.6.7.tgz#46961cd2d57dd8706c36664acde06a248f1173fe" + integrity sha512-/y956gpUo9ZNCb99YjxG7OaslxZWHfCHAUUfshwqOXmxUIvqLjVO581BT+gM59+QV9tFe6/CGG53tsA1Y7RSdg== + +trim-repeated@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/trim-repeated/-/trim-repeated-1.0.0.tgz#e3646a2ea4e891312bf7eace6cfb05380bc01c21" + integrity sha512-pkonvlKk8/ZuR0D5tLW8ljt5I8kmxp2XKymhepUeOdCEfKpZaktSArkLHZt76OB1ZvO9bssUsDty4SWhLvZpLg== + dependencies: + escape-string-regexp "^1.0.2" + +tslib@^1.11.1: + version "1.14.1" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" + integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== + +tslib@^2.1.0: + version "2.5.0" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.5.0.tgz#42bfed86f5787aeb41d031866c8f402429e0fddf" + integrity sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg== + +tslib@^2.3.1, tslib@^2.5.0: + version "2.5.3" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.5.3.tgz#24944ba2d990940e6e982c4bea147aba80209913" + integrity sha512-mSxlJJwl3BMEQCUNnxXBU9jP4JBktcEGhURcPR6VQVlnP0FdDEsIaz0C35dXNGLyRfrATNofF0F5p2KPxQgB+w== + +type-fest@^0.21.3: + version "0.21.3" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.21.3.tgz#d260a24b0198436e133fa26a524a6d65fa3b2e37" + integrity sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w== + +type@^1.0.1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/type/-/type-1.2.0.tgz#848dd7698dafa3e54a6c479e759c4bc3f18847a0" + integrity sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg== + +type@^2.1.0, type@^2.5.0, type@^2.6.0, type@^2.7.2: + version "2.7.2" + resolved "https://registry.yarnpkg.com/type/-/type-2.7.2.tgz#2376a15a3a28b1efa0f5350dcf72d24df6ef98d0" + integrity sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw== + +unbzip2-stream@^1.0.9: + version "1.4.3" + resolved "https://registry.yarnpkg.com/unbzip2-stream/-/unbzip2-stream-1.4.3.tgz#b0da04c4371311df771cdc215e87f2130991ace7" + integrity sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg== + dependencies: + buffer "^5.2.1" + through "^2.3.8" + +unfetch@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/unfetch/-/unfetch-4.2.0.tgz#7e21b0ef7d363d8d9af0fb929a5555f6ef97a3be" + integrity sha512-F9p7yYCn6cIW9El1zi0HI6vqpeIvBsr3dSuRO6Xuppb1u5rXpCPmMvLSyECLhybr9isec8Ohl0hPekMVrEinDA== + +uni-global@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/uni-global/-/uni-global-1.0.0.tgz#3583c449e87a2d9dc270ea221410a649bcdad040" + integrity sha512-WWM3HP+siTxzIWPNUg7hZ4XO8clKi6NoCAJJWnuRL+BAqyFXF8gC03WNyTefGoUXYc47uYgXxpKLIEvo65PEHw== + dependencies: + type "^2.5.0" + +universalify@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.0.tgz#75a4984efedc4b08975c5aeb73f530d02df25717" + integrity sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ== + +untildify@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/untildify/-/untildify-4.0.0.tgz#2bc947b953652487e4600949fb091e3ae8cd919b" + integrity sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw== + +uri-js@^4.2.2: + version "4.4.1" + resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" + integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== + dependencies: + punycode "^2.1.0" + +url@0.10.3: + version "0.10.3" + resolved "https://registry.yarnpkg.com/url/-/url-0.10.3.tgz#021e4d9c7705f21bbf37d03ceb58767402774c64" + integrity sha512-hzSUW2q06EqL1gKM/a+obYHLIO6ct2hwPuviqTTOcfFVc61UbfJ2Q32+uGL/HCPxKqrdGB5QUwIe7UqlDgwsOQ== + dependencies: + punycode "1.3.2" + querystring "0.2.0" + +util-deprecate@^1.0.1, util-deprecate@~1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" + integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== + +util@^0.12.4: + version "0.12.5" + resolved "https://registry.yarnpkg.com/util/-/util-0.12.5.tgz#5f17a6059b73db61a875668781a1c2b136bd6fbc" + integrity sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA== + dependencies: + inherits "^2.0.3" + is-arguments "^1.0.4" + is-generator-function "^1.0.7" + is-typed-array "^1.1.3" + which-typed-array "^1.1.2" + +uuid@8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.0.0.tgz#bc6ccf91b5ff0ac07bbcdbf1c7c4e150db4dbb6c" + integrity sha512-jOXGuXZAWdsTH7eZLtyXMqUb9EcWMGZNbL9YcGBJl4MH4nrxHmZJhEHvyLFrkxo+28uLb/NYRcStH48fnD0Vzw== + +uuid@^8.3.2: + version "8.3.2" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" + integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== + +uuid@^9.0.0: + version "9.0.0" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-9.0.0.tgz#592f550650024a38ceb0c562f2f6aa435761efb5" + integrity sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg== + +validate-npm-package-name@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/validate-npm-package-name/-/validate-npm-package-name-3.0.0.tgz#5fa912d81eb7d0c74afc140de7317f0ca7df437e" + integrity sha512-M6w37eVCMMouJ9V/sdPGnC5H4uDr73/+xdq0FBLO3TFFX1+7wiUY6Es328NN+y43tmY+doUdN9g9J21vqB7iLw== + dependencies: + builtins "^1.0.3" + +wcwidth@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/wcwidth/-/wcwidth-1.0.1.tgz#f0b0dcf915bc5ff1528afadb2c0e17b532da2fe8" + integrity sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg== + dependencies: + defaults "^1.0.3" + +webidl-conversions@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" + integrity sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ== + +whatwg-url@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d" + integrity sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw== + dependencies: + tr46 "~0.0.3" + webidl-conversions "^3.0.0" + +which-typed-array@^1.1.2: + version "1.1.9" + resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.9.tgz#307cf898025848cf995e795e8423c7f337efbde6" + integrity sha512-w9c4xkx6mPidwp7180ckYWfMmvxpjlZuIudNtDf4N/tTAUB8VJbX25qZoAsrtGuYNnGw3pa0AXgbGKRB8/EceA== + dependencies: + available-typed-arrays "^1.0.5" + call-bind "^1.0.2" + for-each "^0.3.3" + gopd "^1.0.1" + has-tostringtag "^1.0.0" + is-typed-array "^1.1.10" + +which@^1.2.9: + version "1.3.1" + resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" + integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== + dependencies: + isexe "^2.0.0" + +winston@2.x: + version "2.4.7" + resolved "https://registry.yarnpkg.com/winston/-/winston-2.4.7.tgz#5791fe08ea7e90db090f1cb31ef98f32531062f1" + integrity sha512-vLB4BqzCKDnnZH9PHGoS2ycawueX4HLqENXQitvFHczhgW2vFpSOn31LZtVr1KU8YTw7DS4tM+cqyovxo8taVg== + dependencies: + async "^2.6.4" + colors "1.0.x" + cycle "1.0.x" + eyes "0.1.x" + isstream "0.1.x" + stack-trace "0.0.x" + +wrap-ansi@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" + integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + +wrappy@1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" + integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== + +write-file-atomic@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-4.0.2.tgz#a9df01ae5b77858a027fd2e80768ee433555fcfd" + integrity sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg== + dependencies: + imurmurhash "^0.1.4" + signal-exit "^3.0.7" + +ws@7.4.6: + version "7.4.6" + resolved "https://registry.yarnpkg.com/ws/-/ws-7.4.6.tgz#5654ca8ecdeee47c33a9a4bf6d28e2be2980377c" + integrity sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A== + +ws@^7.5.3: + version "7.5.9" + resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.9.tgz#54fa7db29f4c7cec68b1ddd3a89de099942bb591" + integrity sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q== + +xml2js@0.4.19: + version "0.4.19" + resolved "https://registry.yarnpkg.com/xml2js/-/xml2js-0.4.19.tgz#686c20f213209e94abf0d1bcf1efaa291c7827a7" + integrity sha512-esZnJZJOiJR9wWKMyuvSE1y6Dq5LCuJanqhxslH2bxM6duahNZ+HMpCLhBQGZkbX6xRf8x1Y2eJlgt2q3qo49Q== + dependencies: + sax ">=0.6.0" + xmlbuilder "~9.0.1" + +xmlbuilder@~9.0.1: + version "9.0.7" + resolved "https://registry.yarnpkg.com/xmlbuilder/-/xmlbuilder-9.0.7.tgz#132ee63d2ec5565c557e20f4c22df9aca686b10d" + integrity sha512-7YXTQc3P2l9+0rjaUbLwMKRhtmwg1M1eDf6nag7urC7pIPYLD9W/jmzQ4ptRSUbodw5S0jfoGTflLemQibSpeQ== + +xtend@^4.0.0: + version "4.0.2" + resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" + integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== + +yallist@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" + integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== + +yaml-ast-parser@0.0.43: + version "0.0.43" + resolved "https://registry.yarnpkg.com/yaml-ast-parser/-/yaml-ast-parser-0.0.43.tgz#e8a23e6fb4c38076ab92995c5dca33f3d3d7c9bb" + integrity sha512-2PTINUwsRqSd+s8XxKaJWQlUuEMHJQyEuh2edBbW8KNJz0SJPwUSD2zRWqezFEdN7IzAgeuYHFUCF7o8zRdZ0A== + +yamljs@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/yamljs/-/yamljs-0.3.0.tgz#dc060bf267447b39f7304e9b2bfbe8b5a7ddb03b" + integrity sha512-C/FsVVhht4iPQYXOInoxUM/1ELSf9EsgKH34FofQOp6hwCPrW4vG4w5++TED3xRUo8gD7l0P1J1dLlDYzODsTQ== + dependencies: + argparse "^1.0.7" + glob "^7.0.5" + +yauzl@^2.4.2: + version "2.10.0" + resolved "https://registry.yarnpkg.com/yauzl/-/yauzl-2.10.0.tgz#c7eb17c93e112cb1086fa6d8e51fb0667b79a5f9" + integrity sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g== + dependencies: + buffer-crc32 "~0.2.3" + fd-slicer "~1.1.0" + +zip-stream@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/zip-stream/-/zip-stream-4.1.0.tgz#51dd326571544e36aa3f756430b313576dc8fc79" + integrity sha512-zshzwQW7gG7hjpBlgeQP9RuyPGNxvJdzR8SUM3QhxCnLjWN2E7j3dOvpeDcQoETfHx0urRS7EtmVToql7YpU4A== + dependencies: + archiver-utils "^2.1.0" + compress-commons "^4.1.0" + readable-stream "^3.6.0" diff --git a/package.json b/package.json new file mode 100644 index 0000000..e6cc738 --- /dev/null +++ b/package.json @@ -0,0 +1,83 @@ +{ + "name": "@openzeppelin/defender-serverless", + "version": "1.2.1", + "description": "Configure your Defender environment via code", + "main": "./lib/index.js", + "types": "./lib/index.d.ts", + "scripts": { + "build": "rm -rf lib tsconfig.tsbuildinfo && tsc && yarn build:schemas", + "test": "yarn test:unit", + "test:unit": "jest --verbose --passWithNoTests", + "watch": "tsc -w", + "prepare": "yarn build", + "lint": "yarn lint:check --fix", + "lint:check": "eslint 'src/**/*.{js,ts}' --quiet", + "format": "yarn format:check --write", + "format:check": "prettier --check 'src/**/*.(js|ts)'", + "style": "yarn lint && yarn format", + "build:schemas": "yarn generate:schemas && yarn format:schemas", + "generate:schemas": "rm -rf src/types/docs && jsonschema2md -d src/types/docs-schemas -o src/types/docs -x src/types/schemas -v 07 -h false", + "format:schemas": "replace-in-file --configFile=src/types/schemas/configs/replace-ref-config.ts && replace-in-file --configFile=src/types/schemas/configs/replace-undefined-config.ts" + }, + "keywords": [ + "Defender", + "Serverless", + "OpenZeppelin", + "Deployment", + "Management", + "Plugin" + ], + "repository": { + "type": "git", + "url": "git+https://github.com/OpenZeppelin/defender-serverless.git" + }, + "contributors": [ + { + "name": "Santiago Palladino", + "email": "santiago@openzeppelin.com" + }, + { + "name": "Nami Shah", + "email": "nami@openzeppelin.com" + } + ], + "license": "MIT", + "bugs": { + "url": "https://github.com/OpenZeppelin/defender-serverless/issues" + }, + "homepage": "https://github.com/OpenZeppelin/defender-serverless#readme", + "devDependencies": { + "@adobe/jsonschema2md": "^7.1.1", + "@types/eslint": "^8.4.6", + "@types/lodash": "^4.14.184", + "@types/node": "^18.7.14", + "@types/prompt": "^1.1.3", + "@types/serverless": "^3.12.8", + "@typescript-eslint/eslint-plugin": "^5.36.2", + "@typescript-eslint/parser": "^5.36.2", + "code-style": "https://github.com/OpenZeppelin/code-style.git", + "eslint": "^8.23.0", + "eslint-config-prettier": "^8.6.0", + "eslint-plugin-prettier": "^4.2.1", + "prettier": "^2.7.1", + "replace-in-file": "^6.3.5", + "typescript": "^4.9.5" + }, + "dependencies": { + "@openzeppelin/defender-admin-client": "^1.46.0", + "@openzeppelin/defender-autotask-client": "^1.46.0", + "@openzeppelin/defender-relay-client": "^1.46.0", + "@openzeppelin/defender-sentinel-client": "^1.46.0", + "@openzeppelin/platform-deploy-client": "^0.8.0", + "keccak256": "^1.0.6", + "lodash": "^4.17.21", + "prompt": "^1.3.0" + }, + "files": [ + "lib", + "!*.test.js", + "!*.test.js.map", + "!*.test.d.ts", + "!*__mocks__" + ] +} diff --git a/src/cmd/deploy.ts b/src/cmd/deploy.ts new file mode 100644 index 0000000..e21e978 --- /dev/null +++ b/src/cmd/deploy.ts @@ -0,0 +1,1326 @@ +import Serverless from 'serverless'; +import prompt from 'prompt'; +import _ from 'lodash'; + +import { Logging } from 'serverless/classes/Plugin'; + +import Logger from '../utils/logger'; + +import { + getSentinelClient, + getAutotaskClient, + getAdminClient, + getRelayClient, + constructSentinel, + constructNotification, + getTeamAPIkeysOrThrow, + getStackName, + getResourceID, + getEquivalentResource, + isSSOT, + getEquivalentResourceByKey, + getConsolidatedSecrets, + validateTypesAndSanitise, + constructNotificationCategory, + validateAdditionalPermissionsOrThrow, + getDeploymentConfigClient, + getBlockExplorerApiKeyClient, + formatABI, +} from '../utils'; +import { + DefenderAutotask, + DefenderContract, + DefenderNotification, + DefenderRelayer, + DefenderSentinel, + DefenderRelayerApiKey, + TeamKey, + YAutotask, + YContract, + YNotification, + YRelayer, + YSecret, + YSentinel, + DeployOutput, + DeployResponse, + ResourceType, + ListDefenderResources, + DefenderNotificationReference, + DefenderBlockSentinelResponse, + DefenderFortaSentinelResponse, + DefenderScheduleTrigger, + DefenderWebhookTrigger, + DefenderSentinelTrigger, + DefenderMonitorFilterTrigger, + DefenderDeploymentConfig, + YDeploymentConfig, + DefenderBlockExplorerApiKey, + YBlockExplorerApiKey, + DefenderCategory, + YCategory, +} from '../types'; +import keccak256 from 'keccak256'; + +export default class DefenderDeploy { + serverless: Serverless; + options: Serverless.Options; + logging: Logging; + log: Logger; + hooks: any; + teamKey?: TeamKey; + ssotDifference?: ListDefenderResources; + + constructor(serverless: Serverless, options: Serverless.Options, logging: Logging) { + this.serverless = serverless; + this.options = options; + this.logging = logging; + + this.log = Logger.getInstance(); + + this.hooks = { + 'before:deploy:deploy': () => this.validateKeys(), + 'deploy:deploy': this.requestConfirmation.bind(this), + }; + } + + validateKeys() { + this.teamKey = getTeamAPIkeysOrThrow(this.serverless); + } + + private async getSSOTDifference(): Promise { + const difference: ListDefenderResources = { + sentinels: [], + autotasks: [], + notifications: [], + categories: [], + contracts: [], + relayerApiKeys: [], + secrets: [], + deploymentConfigs: [], + blockExplorerApiKeys: [], + }; + // Contracts + const contracts: YContract[] = this.serverless.service.resources?.Resources?.contracts ?? []; + const adminClient = getAdminClient(this.teamKey!); + const dContracts = await adminClient.listContracts(); + const contractDifference = _.differenceWith( + dContracts, + Object.entries(contracts ?? []), + (a: DefenderContract, b: [string, YContract]) => + `${a.network}-${a.address}` === `${b[1].network}-${b[1].address}`, + ); + + // Sentinels + const sentinels: YSentinel[] = this.serverless.service.resources?.Resources?.sentinels ?? []; + const sentinelClient = getSentinelClient(this.teamKey!); + const dSentinels = (await sentinelClient.list()).items; + const sentinelDifference = _.differenceWith( + dSentinels, + Object.entries(sentinels ?? []), + (a: DefenderSentinel, b: [string, YSentinel]) => + a.stackResourceId === getResourceID(getStackName(this.serverless), b[0]), + ); + + // Relayers + const relayers: YRelayer[] = this.serverless.service.resources?.Resources?.relayers ?? []; + const relayerClient = getRelayClient(this.teamKey!); + const dRelayers = (await relayerClient.list()).items; + + // Relayers API keys + await Promise.all( + Object.entries(relayers).map(async ([id, relayer]) => { + const dRelayer = getEquivalentResourceByKey( + getResourceID(getStackName(this.serverless), id), + dRelayers, + ); + if (dRelayer) { + const dRelayerApiKeys = await relayerClient.listKeys(dRelayer.relayerId); + const configuredKeys = relayer['api-keys']; + const relayerApiKeyDifference = _.differenceWith( + dRelayerApiKeys, + configuredKeys, + (a: DefenderRelayerApiKey, b: string) => a.stackResourceId === getResourceID(dRelayer.stackResourceId!, b), + ); + difference.relayerApiKeys.push(...relayerApiKeyDifference); + } + }), + ); + + // Notifications + const notifications: YNotification[] = this.serverless.service.resources?.Resources?.notifications ?? []; + const dNotifications = await sentinelClient.listNotificationChannels(); + const notificationDifference = _.differenceWith( + dNotifications, + Object.entries(notifications ?? []), + (a: DefenderNotification, b: [string, YNotification]) => + a.stackResourceId === getResourceID(getStackName(this.serverless), b[0]), + ); + + // Notification Categories + const categories: YCategory[] = this.serverless.service.resources?.Resources?.categories ?? []; + const dCategories = await sentinelClient.listNotificationCategories(); + const categoryDifference = _.differenceWith( + dCategories, + Object.entries(categories ?? []), + (a: DefenderCategory, b: [string, YCategory]) => + a.stackResourceId === getResourceID(getStackName(this.serverless), b[0]), + ); + + // Autotasks + const autotasks: YAutotask[] = this.serverless.service.functions as any; + const autotaskClient = getAutotaskClient(this.teamKey!); + const dAutotasks = (await autotaskClient.list()).items; + const autotaskDifference = _.differenceWith( + dAutotasks, + Object.entries(autotasks ?? []), + (a: DefenderAutotask, b: [string, YAutotask]) => + a.stackResourceId === getResourceID(getStackName(this.serverless), b[0]), + ); + + // Secrets + const allSecrets = getConsolidatedSecrets(this.serverless); + const dSecrets = (await autotaskClient.listSecrets()).secretNames ?? []; + const secretsDifference = _.differenceWith( + dSecrets, + Object.values(allSecrets).map((k, _) => Object.keys(k)[0] ?? ''), + (a: string, b: string) => a === b, + ); + + // Deployment Configs + const deploymentConfigs: YDeploymentConfig[] = + this.serverless.service.resources?.Resources?.['deployment-configs'] ?? []; + const deploymentConfigClient = getDeploymentConfigClient(this.teamKey!); + const dDeploymentConfigs = await deploymentConfigClient.list(); + const deploymentConfigDifference = _.differenceWith( + dDeploymentConfigs, + Object.entries(deploymentConfigs ?? []), + (a: DefenderDeploymentConfig, b: [string, YDeploymentConfig]) => + a.stackResourceId === getResourceID(getStackName(this.serverless), b[0]), + ); + + // Block Explorer Api Keys + const blockExplorerApiKeys: YBlockExplorerApiKey[] = + this.serverless.service.resources?.Resources?.['block-explorer-api-keys'] ?? []; + const blockExplorerApiKeysClient = getBlockExplorerApiKeyClient(this.teamKey!); + const dBlockExplorerApiKeys = await blockExplorerApiKeysClient.list(); + const blockExplorerApiKeyDifference = _.differenceWith( + dBlockExplorerApiKeys, + Object.entries(blockExplorerApiKeys ?? []), + (a: DefenderBlockExplorerApiKey, b: [string, YBlockExplorerApiKey]) => + a.stackResourceId === getResourceID(getStackName(this.serverless), b[0]), + ); + + difference.contracts = contractDifference; + difference.sentinels = sentinelDifference; + difference.notifications = notificationDifference; + difference.categories = categoryDifference; + difference.autotasks = autotaskDifference; + difference.secrets = secretsDifference; + difference.deploymentConfigs = deploymentConfigDifference; + difference.blockExplorerApiKeys = blockExplorerApiKeyDifference; + + return difference; + } + private async constructConfirmationMessage(withResources: ListDefenderResources): Promise { + const start = `You have SSOT enabled. This might remove resources from Defender permanently.\nHaving SSOT enabled will interpret the resources defined in the serverless.yml file as the Single Source Of Truth, and will remove any existing Defender resource which is not defined in the YAML file (with the exception of Relayers).\nIf you continue, the following resources will be removed from Defender:`; + const end = `Are you sure you wish to continue [y/n]?`; + + const formattedResources = { + autotasks: + withResources.autotasks.length > 0 + ? withResources.autotasks.map(a => `${a.stackResourceId ?? a.name} (${a.autotaskId})`) + : undefined, + sentinels: + withResources.sentinels.length > 0 + ? withResources.sentinels.map(a => `${a.stackResourceId ?? a.name} (${a.subscriberId})`) + : undefined, + notifications: + withResources.notifications.length > 0 + ? withResources.notifications.map(a => `${a.stackResourceId ?? a.name} (${a.notificationId})`) + : undefined, + contracts: + withResources.contracts.length > 0 + ? withResources.contracts.map(a => `${a.network}-${a.address} (${a.name})`) + : undefined, + relayerApiKeys: + withResources.relayerApiKeys.length > 0 + ? withResources.relayerApiKeys.map(a => `${a.stackResourceId ?? a.apiKey} (${a.keyId})`) + : undefined, + secrets: withResources.secrets.length > 0 ? withResources.secrets.map(a => `${a}`) : undefined, + }; + return `${start}\n${ + _.isEmpty(validateTypesAndSanitise(formattedResources)) + ? 'None. No differences found.' + : JSON.stringify(formattedResources, null, 2) + }\n\n${end}`; + } + + private async requestConfirmation() { + if (isSSOT(this.serverless) && process.stdout.isTTY) { + const properties = [ + { + name: 'confirm', + validator: /^(y|n){1}$/i, + warning: 'Confirmation must be `y` (yes) or `n` (no)', + }, + ]; + + this.log.progress('component-deploy', `Retrieving list of resources`); + + this.ssotDifference = await this.getSSOTDifference(); + + this.log.progress('component-deploy', `Awaiting confirmation from user`); + prompt.start({ + message: await this.constructConfirmationMessage(this.ssotDifference), + }); + const { confirm } = await prompt.get(properties); + + if (confirm!.toString().toLowerCase() !== 'y') { + this.log.error('Confirmation not acquired. Terminating command'); + return; + } + this.log.success('Confirmation acquired'); + } + + await this.deploy(); + } + + private async deploySecrets(output: DeployOutput) { + const allSecrets = getConsolidatedSecrets(this.serverless); + const client = getAutotaskClient(this.teamKey!); + const retrieveExisting = () => client.listSecrets().then(r => r.secretNames ?? []); + await this.wrapper( + this.serverless, + 'Secrets', + allSecrets, + retrieveExisting, + // on update + async (secret: YSecret, match: string) => { + await client.createSecrets({ + deletes: [], + secrets: secret as any, + }); + return { + name: `Secret`, + id: `${match}`, + success: true, + response: secret, + }; + }, + // on create + async (secret: YSecret, _: string) => { + await client.createSecrets({ + deletes: [], + secrets: secret as any, + }); + return { + name: `Secret`, + id: `${Object.keys(secret)[0]}`, + success: true, + response: secret, + }; + }, + // on remove + async (secrets: string[]) => { + await client.createSecrets({ + deletes: secrets, + secrets: {}, + }); + }, + // overrideMatchDefinition + (a: string, b: YSecret) => !!b[a], + output, + this.ssotDifference?.secrets, + ); + } + + private async deployContracts(output: DeployOutput) { + const contracts: YContract[] = this.serverless.service.resources?.Resources?.contracts ?? []; + const client = getAdminClient(this.teamKey!); + const retrieveExisting = () => client.listContracts(); + + await this.wrapper( + this.serverless, + 'Contracts', + contracts, + retrieveExisting, + // on update + async (contract: YContract, match: DefenderContract) => { + const mappedMatch = { + name: match.name, + network: match.network, + address: match.address, + abi: match.abi && JSON.stringify(JSON.parse(match.abi)), + 'nat-spec': match.natSpec ? match.natSpec : undefined, + }; + + // in reality this will never be called as long as defender-client does not return ABI as part of the list response + if (_.isEqual(validateTypesAndSanitise(contract), validateTypesAndSanitise(mappedMatch))) { + return { + name: match.name, + id: `${match.network}-${match.address}`, + success: false, + response: match, + notice: `Skipped import - contract ${match.address} already exists on ${match.network}`, + }; + } + + this.log.notice( + `Contracts will always update regardless of changes due to certain limitations in Defender API clients.`, + ); + + const updatedContract = await client.addContract({ + name: contract.name, + network: match.network, + address: match.address, + abi: formatABI(contract.abi), + natSpec: contract['nat-spec'] ? contract['nat-spec'] : undefined, + }); + + return { + name: updatedContract.name, + id: `${match.network}-${match.address}`, + success: true, + response: updatedContract, + }; + }, + // on create + async (contract: YContract, _: string) => { + const importedContract = await client.addContract({ + name: contract.name, + network: contract.network, + address: contract.address, + abi: formatABI(contract.abi), + natSpec: contract['nat-spec'] ? contract['nat-spec'] : undefined, + }); + return { + name: importedContract.name, + id: `${importedContract.network}-${importedContract.address}`, + success: true, + response: importedContract, + }; + }, + // on remove + async (contracts: DefenderContract[]) => { + await Promise.all(contracts.map(async c => await client.deleteContract(`${c.network}-${c.address}`))); + }, + // overrideMatchDefinition + (a: DefenderContract, b: YContract) => { + return a.address === b.address && a.network === b.network; + }, + output, + this.ssotDifference?.contracts, + ); + } + + private async deployRelayers( + output: DeployOutput & { + relayerKeys: DeployOutput; + }, + ) { + const relayers: YRelayer[] = this.serverless.service.resources?.Resources?.relayers ?? []; + const client = getRelayClient(this.teamKey!); + const retrieveExisting = () => client.list().then(r => r.items); + await this.wrapper( + this.serverless, + 'Relayers', + relayers, + retrieveExisting, + // on update + async (relayer: YRelayer, match: DefenderRelayer) => { + // Warn users when they try to change the relayer network + if (match.network !== relayer.network) { + this.log.warn( + `Detected a network change from ${match.network} to ${relayer.network} for Relayer: ${match.stackResourceId}. Defender does not currently allow updates to the network once a Relayer is created. This change will be ignored. To enforce this change, remove this relayer and create a new one. Alternatively, you can change the unique identifier (stack resource ID), to force a new creation of the relayer. Note that this change might cause errors further in the deployment process for resources that have any dependencies to this relayer.`, + ); + relayer.network = match.network!; + } + + const mappedMatch = { + name: match.name, + network: match.network, + 'min-balance': parseInt(match.minBalance.toString()), + policy: { + 'gas-price-cap': match.policies.gasPriceCap, + 'whitelist-receivers': match.policies.whitelistReceivers, + 'eip1559-pricing': match.policies.EIP1559Pricing, + 'private-transactions': match.policies.privateTransactions, + }, + // currently not supported by defender-client + // paused: match.paused + }; + let updatedRelayer = undefined; + if ( + !_.isEqual( + validateTypesAndSanitise(_.omit(relayer, ['api-keys', 'address-from-relayer'])), + validateTypesAndSanitise(mappedMatch), + ) + ) { + updatedRelayer = await client.update(match.relayerId, { + name: relayer.name, + minBalance: relayer['min-balance'], + policies: relayer.policy && { + whitelistReceivers: relayer.policy['whitelist-receivers'], + gasPriceCap: relayer.policy['gas-price-cap'], + EIP1559Pricing: relayer.policy['eip1559-pricing'], + privateTransactions: relayer.policy['private-transactions'], + }, + }); + } + + // check existing keys and remove / create accordingly + const existingRelayerKeys = await client.listKeys(match.relayerId); + const configuredKeys = relayer['api-keys']; + const inDefender = _.differenceWith( + existingRelayerKeys, + configuredKeys, + (a: DefenderRelayerApiKey, b: string) => a.stackResourceId === getResourceID(match.stackResourceId!, b), + ); + + // delete key in Defender thats not defined in template + if (isSSOT(this.serverless) && inDefender.length > 0) { + this.log.info(`Unused resources found on Defender:`); + this.log.info(JSON.stringify(inDefender, null, 2)); + this.log.progress('component-deploy-extra', `Removing resources from Defender`); + await Promise.all(inDefender.map(async key => await client.deleteKey(match.relayerId, key.keyId))); + this.log.success(`Removed resources from Defender`); + output.relayerKeys.removed.push(...inDefender); + } + + const inTemplate = _.differenceWith( + configuredKeys, + existingRelayerKeys, + (a: string, b: DefenderRelayerApiKey) => getResourceID(match.stackResourceId!, a) === b.stackResourceId, + ); + + // create key in Defender thats defined in template + if (inTemplate) { + await Promise.all( + inTemplate.map(async key => { + const keyStackResource = getResourceID(match.stackResourceId!, key); + const createdKey = await client.createKey(match.relayerId, keyStackResource); + this.log.success(`Created API Key (${keyStackResource}) for Relayer (${match.relayerId})`); + const keyPath = `${process.cwd()}/.defender/relayer-keys/${keyStackResource}.json`; + await this.serverless.utils.writeFile(keyPath, JSON.stringify({ ...createdKey }, null, 2)); + this.log.info(`API Key details stored in ${keyPath}`, 1); + output.relayerKeys.created.push(createdKey); + }), + ); + } + + return { + name: match.stackResourceId!, + id: match.relayerId, + success: !!updatedRelayer, + response: updatedRelayer ?? match, + notice: !updatedRelayer ? `Skipped ${match.stackResourceId} - no changes detected` : undefined, + }; + }, + // on create + async (relayer: YRelayer, stackResourceId: string) => { + const relayers: YRelayer[] = this.serverless.service.resources?.Resources?.relayers ?? []; + const existingRelayers = (await getRelayClient(this.teamKey!).list()).items; + const maybeRelayer = getEquivalentResource( + this.serverless, + relayer['address-from-relayer'], + relayers, + existingRelayers, + ); + + const createdRelayer = await client.create({ + name: relayer.name, + network: relayer.network, + minBalance: relayer['min-balance'], + useAddressFromRelayerId: maybeRelayer?.relayerId, + policies: relayer.policy && { + whitelistReceivers: relayer.policy['whitelist-receivers'], + gasPriceCap: relayer.policy['gas-price-cap'], + EIP1559Pricing: relayer.policy['eip1559-pricing'], + privateTransactions: relayer.policy['private-transactions'], + }, + stackResourceId, + }); + + const relayerKeys = relayer['api-keys']; + if (relayerKeys) { + await Promise.all( + relayerKeys.map(async key => { + const keyStackResource = getResourceID(stackResourceId, key); + const createdKey = await client.createKey(createdRelayer.relayerId, keyStackResource); + this.log.success(`Created API Key (${keyStackResource}) for Relayer (${createdRelayer.relayerId})`); + const keyPath = `${process.cwd()}/.defender/relayer-keys/${keyStackResource}.json`; + await this.serverless.utils.writeFile(keyPath, JSON.stringify({ ...createdKey }, null, 2)); + this.log.info(`API Key details stored in ${keyPath}`, 1); + output.relayerKeys.created.push(createdKey); + }), + ); + } + + return { + name: stackResourceId, + id: createdRelayer.relayerId, + success: true, + response: createdRelayer, + }; + }, + // on remove requires manual interaction + undefined, + undefined, + output, + ); + } + + private async deployNotifications(output: DeployOutput) { + const notifications: YNotification[] = this.serverless.service.resources?.Resources?.notifications ?? []; + const client = getSentinelClient(this.teamKey!); + const retrieveExisting = () => client.listNotificationChannels(); + + await this.wrapper( + this.serverless, + 'Notifications', + notifications, + retrieveExisting, + // on update + async (notification: YNotification, match: DefenderNotification) => { + const mappedMatch = { + type: match.type, + name: match.name, + config: match.config, + paused: match.paused, + }; + if (_.isEqual(validateTypesAndSanitise(notification), validateTypesAndSanitise(mappedMatch))) { + return { + name: match.stackResourceId!, + id: match.notificationId, + success: false, + response: match, + notice: `Skipped ${match.stackResourceId} - no changes detected`, + }; + } + + const updatedNotification = await client.updateNotificationChannel({ + ...constructNotification(notification, match.stackResourceId!), + notificationId: match.notificationId, + }); + return { + name: updatedNotification.stackResourceId!, + id: updatedNotification.notificationId, + success: true, + response: updatedNotification, + }; + }, + // on create + async (notification: YNotification, stackResourceId: string) => { + const createdNotification = await client.createNotificationChannel( + constructNotification(notification, stackResourceId), + ); + return { + name: stackResourceId, + id: createdNotification.notificationId, + success: true, + response: createdNotification, + }; + }, + // on remove + async (notifications: DefenderNotification[]) => { + await Promise.all(notifications.map(async n => await client.deleteNotificationChannel(n))); + }, + undefined, + output, + this.ssotDifference?.notifications, + ); + } + + private async deployCategories(output: DeployOutput) { + const categories: YCategory[] = this.serverless.service.resources?.Resources?.categories ?? []; + const client = getSentinelClient(this.teamKey!); + const notifications = await client.listNotificationChannels(); + const retrieveExisting = () => client.listNotificationCategories(); + + await this.wrapper( + this.serverless, + 'Categories', + categories, + retrieveExisting, + // on update + async (category: YCategory, match: DefenderCategory) => { + const newCategory = constructNotificationCategory( + this.serverless, + category, + match.stackResourceId!, + notifications, + ); + const mappedMatch = { + name: match.name, + description: match.description, + notificationIds: match.notificationIds, + stackResourceId: match.stackResourceId, + }; + if (_.isEqual(validateTypesAndSanitise(newCategory), validateTypesAndSanitise(mappedMatch))) { + return { + name: match.stackResourceId!, + id: match.categoryId, + success: false, + response: match, + notice: `Skipped ${match.stackResourceId} - no changes detected`, + }; + } + + const updatedCategory = await client.updateNotificationCategory({ + ...newCategory, + categoryId: match.categoryId, + }); + return { + name: updatedCategory.stackResourceId!, + id: updatedCategory.categoryId, + success: true, + response: updatedCategory, + }; + }, + // on create + async (category: YCategory, stackResourceId: string) => { + return { + name: stackResourceId, + id: '', + success: false, + notice: 'Creating custom notification categories is not yet supported', + }; + // const createdCategory = await client.createNotificationCategory( + // constructNotificationCategory(this.serverless, category, stackResourceId, notifications), + // ); + // return { + // name: stackResourceId, + // id: createdCategory.categoryId, + // success: true, + // response: createdCategory, + // }; + }, + // on remove + async (categories: DefenderCategory[]) => { + this.log.warn(`Deleting notification categories is not yet supported.`); + // await Promise.all(categories.map(async (n) => await client.deleteNotificationCategory(n.categoryId))); + }, + // overrideMatchDefinition + // TODO: remove this when we allow creating new categories + (a: DefenderCategory, b: YCategory) => { + return a.name === b.name; + }, + output, + this.ssotDifference?.categories, + ); + } + + private async deploySentinels(output: DeployOutput) { + try { + const sentinels: YSentinel[] = this.serverless.service.resources?.Resources?.sentinels ?? []; + const client = getSentinelClient(this.teamKey!); + const autotasks = await getAutotaskClient(this.teamKey!).list(); + const notifications = await client.listNotificationChannels(); + const categories = await client.listNotificationCategories(); + const retrieveExisting = () => client.list().then(r => r.items); + + await this.wrapper( + this.serverless, + 'Sentinels', + sentinels, + retrieveExisting, + // on update + async (sentinel: YSentinel, match: DefenderSentinel) => { + const isForta = (o: DefenderSentinel): o is DefenderFortaSentinelResponse => o.type === 'FORTA'; + const isBlock = (o: DefenderSentinel): o is DefenderBlockSentinelResponse => o.type === 'BLOCK'; + + // Warn users when they try to change the sentinel network + if (match.network !== sentinel.network) { + this.log.warn( + `Detected a network change from ${match.network} to ${sentinel.network} for Sentinel: ${match.stackResourceId}. Defender does not currently allow updates to the network once a Sentinel is created. This change will be ignored. To enforce this change, remove this sentinel and create a new one. Alternatively, you can change the unique identifier (stack resource ID), to force a new creation of the sentinel. Note that this change might cause errors further in the deployment process for resources that have any dependencies to this sentinel.`, + ); + sentinel.network = match.network!; + } + + // Warn users when they try to change the sentinel type + if (sentinel.type !== match.type) { + this.log.warn( + `Detected a type change from ${match.type} to ${sentinel.type} for Sentinel: ${match.stackResourceId}. Defender does not currently allow updates to the type once a Sentinel is created. This change will be ignored. To enforce this change, remove this sentinel and create a new one. Alternatively, you can change the unique identifier (stack resource ID), to force a new creation of the sentinel. Note that this change might cause errors further in the deployment process for resources that have any dependencies to this sentinel.`, + ); + sentinel.type = match.type; + } + + const blockwatchersForNetwork = (await client.listBlockwatchers()).filter( + b => b.network === sentinel.network, + ); + + const newSentinel = constructSentinel( + this.serverless, + match.stackResourceId!, + sentinel, + notifications, + autotasks.items, + blockwatchersForNetwork, + categories, + ); + + // Map match "response" object to that of a "create" object + const addressRule = + (isBlock(match) && match.addressRules.length > 0 && _.first(match.addressRules)) || undefined; + const blockConditions = + (addressRule && addressRule.conditions.length > 0 && addressRule.conditions) || undefined; + const confirmLevel = + (isBlock(match) && match.blockWatcherId.split('-').length > 0 && _.last(match.blockWatcherId.split('-'))) || + undefined; + + const mappedMatch = { + name: match.name, + abi: addressRule && addressRule.abi, + paused: match.paused, + alertThreshold: match.alertThreshold, + autotaskTrigger: match.notifyConfig?.autotaskId, + alertTimeoutMs: match.notifyConfig?.timeoutMs, + alertMessageBody: match.notifyConfig?.messageBody, + alertMessageSubject: match.notifyConfig?.messageSubject, + notificationChannels: match.notifyConfig?.notifications.map( + (n: DefenderNotificationReference) => n.notificationId, + ), + notificationCategoryId: _.isEmpty(match.notifyConfig?.notifications) + ? match.notifyConfig?.notificationCategoryId + : undefined, + type: match.type, + stackResourceId: match.stackResourceId, + network: match.network, + confirmLevel: (confirmLevel && parseInt(confirmLevel)) || confirmLevel, + eventConditions: blockConditions && blockConditions.flatMap((c: any) => c.eventConditions), + functionConditions: blockConditions && blockConditions.flatMap((c: any) => c.functionConditions), + txCondition: + blockConditions && + blockConditions[0]!.txConditions.length > 0 && + blockConditions[0]!.txConditions[0]!.expression, + privateFortaNodeId: (isForta(match) && match.privateFortaNodeId) || undefined, + addresses: isBlock(match) ? addressRule && addressRule.addresses : match.fortaRule?.addresses, + autotaskCondition: isBlock(match) + ? addressRule && addressRule.autotaskCondition?.autotaskId + : match.fortaRule?.autotaskCondition?.autotaskId, + fortaLastProcessedTime: (isForta(match) && match.fortaLastProcessedTime) || undefined, + agentIDs: (isForta(match) && match.fortaRule?.agentIDs) || undefined, + fortaConditions: (isForta(match) && match.fortaRule.conditions) || undefined, + riskCategory: match.riskCategory, + }; + + if (_.isEqual(validateTypesAndSanitise(newSentinel), validateTypesAndSanitise(mappedMatch))) { + return { + name: match.stackResourceId!, + id: match.subscriberId, + success: false, + response: match, + notice: `Skipped ${match.stackResourceId} - no changes detected`, + }; + } + + const updatedSentinel = await client.update( + match.subscriberId, + // Do not allow to update network of (existing) sentinels + _.omit(newSentinel, ['network']), + ); + + return { + name: updatedSentinel.stackResourceId!, + id: updatedSentinel.subscriberId, + success: true, + response: updatedSentinel, + }; + }, + // on create + async (sentinel: YSentinel, stackResourceId: string) => { + const blockwatchersForNetwork = (await client.listBlockwatchers()).filter( + b => b.network === sentinel.network, + ); + const createdSentinel = await client.create( + constructSentinel( + this.serverless, + stackResourceId, + sentinel, + notifications, + autotasks.items, + blockwatchersForNetwork, + categories, + ), + ); + return { + name: stackResourceId, + id: createdSentinel.subscriberId, + success: true, + response: createdSentinel, + }; + }, + // on remove + async (sentinels: DefenderSentinel[]) => { + await Promise.all(sentinels.map(async s => await client.delete(s.subscriberId))); + }, + undefined, + output, + this.ssotDifference?.sentinels, + ); + } catch (e) { + this.log.tryLogDefenderError(e); + } + } + + private async deployAutotasks(output: DeployOutput) { + const autotasks: YAutotask[] = this.serverless.service.functions as any; + const client = getAutotaskClient(this.teamKey!); + const retrieveExisting = () => client.list().then(r => r.items); + + await this.wrapper( + this.serverless, + 'Autotasks', + autotasks, + retrieveExisting, + // on update + async (autotask: YAutotask, match: DefenderAutotask) => { + const relayers: YRelayer[] = this.serverless.service.resources?.Resources?.relayers ?? []; + const existingRelayers = (await getRelayClient(this.teamKey!).list()).items; + const maybeRelayer = getEquivalentResource( + this.serverless, + autotask.relayer, + relayers, + existingRelayers, + ); + // Get new code digest + const code = await client.getEncodedZippedCodeFromFolder(autotask.path); + const newDigest = client.getCodeDigest(code); + const { codeDigest } = await client.get(match.autotaskId); + + const isSchedule = ( + o: DefenderWebhookTrigger | DefenderScheduleTrigger | DefenderSentinelTrigger | DefenderMonitorFilterTrigger, + ): o is DefenderScheduleTrigger => o.type === 'schedule'; + + const mappedMatch = { + name: match.name, + trigger: { + type: match.trigger.type, + frequency: (isSchedule(match.trigger) && match.trigger.frequencyMinutes) || undefined, + cron: (isSchedule(match.trigger) && match.trigger.cron) || undefined, + }, + paused: match.paused, + relayerId: match.relayerId, + codeDigest: match.codeDigest, + }; + + if ( + _.isEqual( + validateTypesAndSanitise({ + ..._.omit(autotask, ['events', 'package', 'relayer', 'path']), + relayerId: maybeRelayer?.relayerId, + codeDigest: newDigest, + }), + validateTypesAndSanitise(mappedMatch), + ) + ) { + return { + name: match.stackResourceId!, + id: match.autotaskId, + success: false, + response: match, + notice: `Skipped ${match.stackResourceId} - no changes detected`, + }; + } + + const updatesAutotask = await client.update({ + autotaskId: match.autotaskId, + name: autotask.name, + paused: autotask.paused, + trigger: { + type: autotask.trigger.type, + frequencyMinutes: autotask.trigger.frequency ?? undefined, + cron: autotask.trigger.cron ?? undefined, + }, + relayerId: maybeRelayer?.relayerId, + }); + + if (newDigest === codeDigest) { + return { + name: match.stackResourceId!, + id: match.autotaskId, + success: true, + notice: `Skipped code upload - no changes detected for ${match.stackResourceId}`, + response: updatesAutotask, + }; + } else { + await client.updateCodeFromFolder(match.autotaskId, autotask.path); + return { + name: match.stackResourceId!, + id: match.autotaskId, + success: true, + response: updatesAutotask, + }; + } + }, + // on create + async (autotask: YAutotask, stackResourceId: string) => { + const autotaskRelayer = autotask.relayer; + const relayers: YRelayer[] = this.serverless.service.resources?.Resources?.relayers ?? []; + const existingRelayers = (await getRelayClient(this.teamKey!).list()).items; + const maybeRelayer = getEquivalentResource( + this.serverless, + autotaskRelayer, + relayers, + existingRelayers, + ); + + const createdAutotask = await client.create({ + name: autotask.name, + trigger: { + type: autotask.trigger.type, + frequencyMinutes: autotask.trigger.frequency ?? undefined, + cron: autotask.trigger.cron ?? undefined, + }, + encodedZippedCode: await client.getEncodedZippedCodeFromFolder(autotask.path), + paused: autotask.paused, + relayerId: maybeRelayer?.relayerId, + stackResourceId: stackResourceId, + }); + return { + name: stackResourceId, + id: createdAutotask.autotaskId, + success: true, + response: createdAutotask, + }; + }, + // on remove + async (autotasks: DefenderAutotask[]) => { + await Promise.all(autotasks.map(async a => await client.delete(a.autotaskId))); + }, + undefined, + output, + this.ssotDifference?.autotasks, + ); + } + + private async deployDeploymentConfig(output: DeployOutput) { + const deploymentConfigs: YDeploymentConfig[] = + this.serverless.service.resources?.Resources?.['deployment-configs'] ?? []; + const client = getDeploymentConfigClient(this.teamKey!); + const retrieveExisting = () => client.list(); + + await this.wrapper( + this.serverless, + 'Deployment Configs', + deploymentConfigs, + retrieveExisting, + // on update + async (deploymentConfig: YDeploymentConfig, match: DefenderDeploymentConfig) => { + const deploymentConfigRelayer = deploymentConfig.relayer; + const relayers: YRelayer[] = this.serverless.service.resources?.Resources?.relayers ?? []; + + const existingRelayers = (await getRelayClient(this.teamKey!).list()).items; + const maybeRelayer = getEquivalentResource( + this.serverless, + deploymentConfigRelayer, + relayers, + existingRelayers, + ); + + if (!maybeRelayer) + throw new Error(`Cannot find relayer ${deploymentConfigRelayer} in ${match.stackResourceId!}`); + + if (_.isEqual(maybeRelayer.relayerId, match.relayerId)) { + return { + name: match.stackResourceId!, + id: match.deploymentConfigId, + success: false, + response: match, + notice: `Skipped ${match.stackResourceId} - no changes detected`, + }; + } + + const updatedDeploymentConfig = await client.update(match.deploymentConfigId, { + relayerId: maybeRelayer.relayerId, + stackResourceId: match.stackResourceId!, + }); + return { + name: updatedDeploymentConfig.stackResourceId!, + id: updatedDeploymentConfig.deploymentConfigId, + success: true, + response: updatedDeploymentConfig, + }; + }, + // on create + async (deploymentConfig: YDeploymentConfig, stackResourceId: string) => { + const deploymentConfigRelayer = deploymentConfig.relayer; + const relayers: YRelayer[] = this.serverless.service.resources?.Resources?.relayers ?? []; + const existingRelayers = (await getRelayClient(this.teamKey!).list()).items; + + const maybeRelayer = getEquivalentResource( + this.serverless, + deploymentConfigRelayer, + relayers, + existingRelayers, + ); + + if (!maybeRelayer) throw new Error(`Cannot find relayer ${deploymentConfigRelayer} in ${stackResourceId}`); + + const importedDeployment = await client.create({ relayerId: maybeRelayer.relayerId, stackResourceId }); + + return { + name: stackResourceId, + id: importedDeployment.deploymentConfigId, + success: true, + response: importedDeployment, + }; + }, + // on remove + async (deploymentConfigs: DefenderDeploymentConfig[]) => { + await Promise.all(deploymentConfigs.map(async c => await client.remove(c.deploymentConfigId))); + }, + undefined, + output, + this.ssotDifference?.deploymentConfigs, + ); + } + + private async deployBlockExplorerApiKey(output: DeployOutput) { + const blockExplorerApiKeys: YBlockExplorerApiKey[] = + this.serverless.service.resources?.Resources?.['block-explorer-api-keys'] ?? []; + const client = getBlockExplorerApiKeyClient(this.teamKey!); + const retrieveExisting = () => client.list(); + + await this.wrapper( + this.serverless, + 'Block Explorer Api Keys', + blockExplorerApiKeys, + retrieveExisting, + // on update + async (blockExplorerApiKey: YBlockExplorerApiKey, match: DefenderBlockExplorerApiKey) => { + if (_.isEqual(keccak256(blockExplorerApiKey.key).toString('hex'), match.keyHash)) { + return { + name: match.stackResourceId!, + id: match.blockExplorerApiKeyId, + success: false, + response: match, + notice: `Skipped ${match.stackResourceId} - no changes detected`, + }; + } + + const updatedBlockExplorerApiKey = await client.update(match.blockExplorerApiKeyId, { + ...blockExplorerApiKey, + stackResourceId: match.stackResourceId!, + }); + return { + name: updatedBlockExplorerApiKey.stackResourceId!, + id: updatedBlockExplorerApiKey.blockExplorerApiKeyId, + success: true, + response: updatedBlockExplorerApiKey, + }; + }, + // on create + async (blockExplorerApiKey: YBlockExplorerApiKey, stackResourceId: string) => { + const importedBlockExplorerApiKey = await client.create({ ...blockExplorerApiKey, stackResourceId }); + return { + name: stackResourceId, + id: importedBlockExplorerApiKey.blockExplorerApiKeyId, + success: true, + response: importedBlockExplorerApiKey, + }; + }, + // on remove + async (blockExplorerApiKeys: DefenderBlockExplorerApiKey[]) => { + await Promise.all(blockExplorerApiKeys.map(async c => await client.remove(c.blockExplorerApiKeyId))); + }, + undefined, + output, + this.ssotDifference?.blockExplorerApiKeys, + ); + } + + private async wrapper( + context: Serverless, + resourceType: ResourceType, + resources: Y[] | undefined, + retrieveExistingResources: () => Promise, + onUpdate: (resource: Y, match: D) => Promise, + onCreate: (resource: Y, stackResourceId: string) => Promise, + onRemove?: (resources: D[]) => Promise, + overrideMatchDefinition?: (a: D, b: Y) => boolean, + output: DeployOutput = { removed: [], created: [], updated: [] }, + ssotDifference: D[] = [], + ) { + try { + const stackName = getStackName(context); + this.log.notice(`${resourceType}`); + this.log.progress('component-deploy', `Validating permissions for ${resourceType}`); + await validateAdditionalPermissionsOrThrow(context, resources, resourceType); + this.log.progress('component-deploy', `Initialising deployment of ${resourceType}`); + + // only remove if template is considered single source of truth + if (isSSOT(context) && onRemove) { + if (ssotDifference.length > 0) { + this.log.info(`Unused resources found on Defender:`); + this.log.info(JSON.stringify(ssotDifference, null, 2)); + this.log.progress('component-deploy-extra', `Removing resources from Defender`); + await onRemove(ssotDifference); + this.log.success(`Removed resources from Defender`); + output.removed.push(...ssotDifference); + } + } + + for (const [id, resource] of Object.entries(resources ?? [])) { + // always refresh list after each addition as some resources rely on the previous one + const existing = await retrieveExistingResources(); + const entryStackResourceId = getResourceID(stackName, id); + let match; + if (overrideMatchDefinition) { + match = existing.find((e: D) => overrideMatchDefinition(e, resource)); + } else { + match = existing.find((e: any) => e.stackResourceId === entryStackResourceId); + } + + if (match) { + this.log.progress( + 'component-deploy-extra', + `Updating ${ + resourceType === 'Contracts' + ? (match as unknown as DefenderContract).name + : resourceType === 'Secrets' + ? match + : (match as D & { stackResourceId: string }).stackResourceId + }`, + ); + try { + const result = await onUpdate(resource, match); + if (result.success) { + this.log.success(`Updated ${result.name} (${result.id})`); + output.updated.push(result.response); + } + // notice logs requires the --verbose flag + if (result.notice) this.log.info(`${result.notice}`, 1); + if (result.error) this.log.error(`${result.error}`); + } catch (e) { + this.log.tryLogDefenderError(e); + } + } else { + this.log.progress( + 'component-deploy-extra', + `Creating ${ + resourceType === 'Secrets' ? Object.keys(resource as unknown as YSecret)[0] : entryStackResourceId + }`, + ); + try { + const result = await onCreate(resource, entryStackResourceId); + if (result.success) { + this.log.success(`Created ${result.name} (${result.id})`); + output.created.push(result.response); + } + if (result.notice) this.log.info(`${result.notice}`, 1); + if (result.error) this.log.error(`${result.error}`); + } catch (e) { + this.log.tryLogDefenderError(e); + } + } + } + } catch (e) { + this.log.tryLogDefenderError(e); + } + } + + public async deploy() { + this.log.notice('========================================================'); + const stackName = getStackName(this.serverless); + this.log.progress('deploy', `Running Defender Deploy on stack: ${stackName}`); + + const sentinels: DeployOutput = { + removed: [], + created: [], + updated: [], + }; + const autotasks: DeployOutput = { + removed: [], + created: [], + updated: [], + }; + const contracts: DeployOutput = { + removed: [], + created: [], + updated: [], + }; + const notifications: DeployOutput = { + removed: [], + created: [], + updated: [], + }; + const categories: DeployOutput = { + removed: [], + created: [], + updated: [], + }; + const secrets: DeployOutput = { + removed: [], + created: [], + updated: [], + }; + const relayers: DeployOutput & { + relayerKeys: DeployOutput; + } = { + removed: [], + created: [], + updated: [], + relayerKeys: { + removed: [], + created: [], + updated: [], + }, + }; + + const deploymentConfigs: DeployOutput = { + removed: [], + created: [], + updated: [], + }; + + const blockExplorerApiKeys: DeployOutput = { + removed: [], + created: [], + updated: [], + }; + + const stdOut = { + stack: stackName, + timestamp: new Date().toISOString(), + sentinels, + autotasks, + contracts, + relayers, + notifications, + categories, + secrets, + deploymentConfigs, + blockExplorerApiKeys, + }; + await this.deploySecrets(stdOut.secrets); + await this.deployContracts(stdOut.contracts); + // Always deploy relayers before autotasks + await this.deployRelayers(stdOut.relayers); + await this.deployAutotasks(stdOut.autotasks); + // Deploy notifications before sentinels and categories + await this.deployNotifications(stdOut.notifications); + await this.deployCategories(stdOut.categories); + await this.deploySentinels(stdOut.sentinels); + + await this.deployDeploymentConfig(stdOut.deploymentConfigs); + await this.deployBlockExplorerApiKey(stdOut.blockExplorerApiKeys); + + this.log.notice('========================================================'); + + if (!process.stdout.isTTY) this.log.stdOut(JSON.stringify(stdOut, null, 2)); + + const keyDir = `${process.cwd()}/.defender`; + if (!this.serverless.utils.dirExistsSync(keyDir)) { + await this.serverless.utils.writeFile( + `${keyDir}/deployment-log.${stackName}.json`, + JSON.stringify(stdOut, null, 0) + '\r\n', + ); + } else { + await this.serverless.utils.appendFileSync( + `${keyDir}/deployment-log.${stackName}.json`, + JSON.stringify(stdOut, null, 0) + '\r\n', + ); + } + } +} diff --git a/src/cmd/info.ts b/src/cmd/info.ts new file mode 100644 index 0000000..a808ab2 --- /dev/null +++ b/src/cmd/info.ts @@ -0,0 +1,209 @@ +import Serverless from 'serverless'; +import _ from 'lodash'; + +import { Logging } from 'serverless/classes/Plugin'; + +import Logger from '../utils/logger'; + +import { + getAdminClient, + getAutotaskClient, + getConsolidatedSecrets, + getRelayClient, + getSentinelClient, + getStackName, + getTeamAPIkeysOrThrow, + isTemplateResource, +} from '../utils'; +import { + DefenderAutotask, + DefenderCategory, + DefenderContract, + DefenderNotification, + DefenderRelayer, + DefenderRelayerApiKey, + DefenderSentinel, + ResourceType, + TeamKey, + YAutotask, + YCategory, + YContract, + YNotification, + YRelayer, + YSecret, + YSentinel, +} from '../types'; + +export default class DefenderInfo { + serverless: Serverless; + options: Serverless.Options; + logging: Logging; + log: Logger; + hooks: any; + teamKey?: TeamKey; + + constructor(serverless: Serverless, options: Serverless.Options, logging: Logging) { + this.serverless = serverless; + this.options = options; + this.logging = logging; + + this.log = Logger.getInstance(); + + this.hooks = { + 'before:info:info': () => this.validateKeys(), + 'info:info': this.info.bind(this), + }; + } + + validateKeys() { + this.teamKey = getTeamAPIkeysOrThrow(this.serverless); + } + + private async wrapper( + context: Serverless, + resourceType: ResourceType, + resources: Y[] | undefined, + retrieveExistingResources: () => Promise, + format: (resource: D) => string, + output: any[], + ) { + try { + this.log.progress('component-info', `Retrieving ${resourceType}`); + this.log.notice(`${resourceType}`); + const existing = (await retrieveExistingResources()).filter(e => + isTemplateResource(context, e, resourceType, resources ?? []), + ); + + await Promise.all( + existing.map(async e => { + this.log.notice(`${format(e)}`, 1); + let keys: DefenderRelayerApiKey[] = []; + // Also print relayer API keys + if (resourceType === 'Relayers') { + const listRelayerAPIKeys = await getRelayClient(getTeamAPIkeysOrThrow(context)).listKeys( + (e as unknown as DefenderRelayer).relayerId, + ); + listRelayerAPIKeys.map(k => { + this.log.notice(`${k.stackResourceId}: ${k.keyId}`, 2); + }); + keys = listRelayerAPIKeys; + } + if (resourceType === 'Relayers') output.push({ ...e, relayerKeys: keys }); + else output.push(e); + }), + ); + } catch (e) { + this.log.tryLogDefenderError(e); + } + } + + async info() { + this.log.notice('========================================================'); + const stackName = getStackName(this.serverless); + this.log.progress('info', `Running Defender Info on stack: ${stackName}`); + const stdOut = { + stack: stackName, + sentinels: [], + autotasks: [], + contracts: [], + relayers: [], + notifications: [], + categories: [], + secrets: [], + }; + // Sentinels + const listSentinels = () => + getSentinelClient(this.teamKey!) + .list() + .then(i => i.items); + + await this.wrapper( + this.serverless, + 'Sentinels', + this.serverless.service.resources?.Resources?.sentinels, + listSentinels, + (resource: DefenderSentinel) => `${resource.stackResourceId}: ${resource.subscriberId}`, + stdOut.sentinels, + ); + + // Autotasks + const listAutotasks = () => + getAutotaskClient(this.teamKey!) + .list() + .then(r => r.items); + await this.wrapper( + this.serverless, + 'Autotasks', + this.serverless.service.functions as unknown as YAutotask[], + listAutotasks, + (resource: DefenderAutotask) => `${resource.stackResourceId}: ${resource.autotaskId}`, + stdOut.autotasks, + ); + + // Contracts + const listContracts = () => getAdminClient(this.teamKey!).listContracts(); + await this.wrapper( + this.serverless, + 'Contracts', + this.serverless.service.resources?.Resources?.contracts, + listContracts, + (resource: DefenderContract) => `${resource.network}-${resource.address}: ${resource.name}`, + stdOut.contracts, + ); + + // Relayers + const listRelayers = () => + getRelayClient(this.teamKey!) + .list() + .then(r => r.items); + await this.wrapper( + this.serverless, + 'Relayers', + this.serverless.service.resources?.Resources?.relayers, + listRelayers, + (resource: DefenderRelayer) => `${resource.stackResourceId}: ${resource.relayerId}`, + stdOut.relayers, + ); + + // Notifications + const listNotifications = () => getSentinelClient(this.teamKey!).listNotificationChannels(); + await this.wrapper( + this.serverless, + 'Notifications', + this.serverless.service.resources?.Resources?.notifications, + listNotifications, + (resource: DefenderNotification) => `${resource.stackResourceId}: ${resource.notificationId}`, + stdOut.notifications, + ); + + // Categories + const listNotificationCategories = () => getSentinelClient(this.teamKey!).listNotificationCategories(); + await this.wrapper( + this.serverless, + 'Categories', + this.serverless.service.resources?.Resources?.categories, + listNotificationCategories, + (resource: DefenderCategory) => `${resource.stackResourceId}: ${resource.categoryId}`, + stdOut.categories, + ); + + // Secrets + const listSecrets = () => + getAutotaskClient(this.teamKey!) + .listSecrets() + .then(r => r.secretNames ?? []); + + const allSecrets = getConsolidatedSecrets(this.serverless); + + await this.wrapper( + this.serverless, + 'Secrets', + allSecrets, + listSecrets, + (resource: string) => `${resource}`, + stdOut.secrets, + ); + this.log.notice('========================================================'); + if (!process.stdout.isTTY) this.log.stdOut(JSON.stringify(stdOut, null, 2)); + } +} diff --git a/src/cmd/invoke.ts b/src/cmd/invoke.ts new file mode 100644 index 0000000..78f1fb0 --- /dev/null +++ b/src/cmd/invoke.ts @@ -0,0 +1,55 @@ +import Serverless from 'serverless'; + +import { Logging } from 'serverless/classes/Plugin'; + +import Logger from '../utils/logger'; + +import { getAutotaskClient, getEquivalentResourceByKey, getTeamAPIkeysOrThrow } from '../utils'; +import { DefenderAutotask, TeamKey } from '../types'; + +export default class DefenderInvoke { + serverless: Serverless; + options: Serverless.Options; + logging: Logging; + log: Logger; + hooks: any; + teamKey?: TeamKey; + + constructor(serverless: Serverless, options: Serverless.Options, logging: Logging) { + this.serverless = serverless; + this.options = options; + this.logging = logging; + + this.log = Logger.getInstance(); + + this.hooks = { + 'before:invoke:invoke': () => this.validateKeys(), + 'invoke:invoke': this.invoke.bind(this), + }; + } + + validateKeys() { + this.teamKey = getTeamAPIkeysOrThrow(this.serverless); + } + + async invoke() { + try { + this.log.notice('========================================================'); + this.log.progress('logs', `Running Defender Invoke on stack function: ${this.options.function}`); + const payload = JSON.parse((this.options as any)?.data ?? '{}'); + const client = getAutotaskClient(this.teamKey!); + const list = (await client.list()).items; + const defenderAutotask = getEquivalentResourceByKey(this.options.function!, list); + if (defenderAutotask) { + const response = await client.runAutotask(defenderAutotask.autotaskId, payload); + this.log.notice(JSON.stringify(response, null, 2)); + if (!process.stdout.isTTY) this.log.stdOut(JSON.stringify(response, null, 2)); + } else { + this.log.error(`No autotask with identifier: ${this.options.function} found.`); + } + this.log.notice('========================================================'); + } catch (e) { + this.log.tryLogDefenderError(e); + } + } +} diff --git a/src/cmd/logs.ts b/src/cmd/logs.ts new file mode 100644 index 0000000..1994089 --- /dev/null +++ b/src/cmd/logs.ts @@ -0,0 +1,53 @@ +import Serverless from 'serverless'; + +import { Logging } from 'serverless/classes/Plugin'; + +import Logger from '../utils/logger'; + +import { tailLogsFor } from '@openzeppelin/defender-autotask-client/lib/utils'; + +import { getAutotaskClient, getEquivalentResourceByKey, getTeamAPIkeysOrThrow } from '../utils'; +import { DefenderAutotask, TeamKey } from '../types'; + +export default class DefenderLogs { + serverless: Serverless; + options: Serverless.Options; + logging: Logging; + log: Logger; + hooks: any; + teamKey?: TeamKey; + + constructor(serverless: Serverless, options: Serverless.Options, logging: Logging) { + this.serverless = serverless; + this.options = options; + this.logging = logging; + + this.log = Logger.getInstance(); + + this.hooks = { + 'before:logs:logs': () => this.validateKeys(), + 'logs:logs': this.logs.bind(this), + }; + } + + validateKeys() { + this.teamKey = getTeamAPIkeysOrThrow(this.serverless); + } + + async logs() { + try { + this.log.notice('========================================================'); + this.log.progress('logs', `Running Defender Logs on stack function: ${this.options.function}`); + const client = getAutotaskClient(this.teamKey!); + const list = (await client.list()).items; + + const defenderAutotask = getEquivalentResourceByKey(this.options.function!, list); + + if (defenderAutotask) await tailLogsFor(client, defenderAutotask!.autotaskId); + else this.log.error(`No autotask with stackResourceId: ${this.options.function} found.`); + this.log.notice('========================================================'); + } catch (e) { + this.log.tryLogDefenderError(e); + } + } +} diff --git a/src/cmd/remove.ts b/src/cmd/remove.ts new file mode 100644 index 0000000..c5607e8 --- /dev/null +++ b/src/cmd/remove.ts @@ -0,0 +1,300 @@ +import Serverless from 'serverless'; +import prompt from 'prompt'; +import _ from 'lodash'; + +import { Logging } from 'serverless/classes/Plugin'; + +import Logger from '../utils/logger'; + +import { + getAdminClient, + getAutotaskClient, + getConsolidatedSecrets, + getRelayClient, + getSentinelClient, + getStackName, + getTeamAPIkeysOrThrow, + isTemplateResource, +} from '../utils'; +import { + DefenderAutotask, + DefenderCategory, + DefenderContract, + DefenderNotification, + DefenderRelayer, + DefenderRelayerApiKey, + DefenderSentinel, + ResourceType, + TeamKey, + YAutotask, + YCategory, + YContract, + YNotification, + YRelayer, + YSecret, + YSentinel, +} from '../types'; + +export default class DefenderRemove { + serverless: Serverless; + options: Serverless.Options; + logging: Logging; + log: Logger; + hooks: any; + teamKey?: TeamKey; + + constructor(serverless: Serverless, options: Serverless.Options, logging: Logging) { + this.serverless = serverless; + this.options = options; + this.logging = logging; + + this.log = Logger.getInstance(); + + this.hooks = { + 'before:remove:remove': () => this.validateKeys(), + 'remove:remove': this.requestConfirmation.bind(this), + }; + } + + validateKeys() { + this.teamKey = getTeamAPIkeysOrThrow(this.serverless); + } + + private async wrapper( + context: Serverless, + resourceType: ResourceType, + resources: Y[] | undefined, + retrieveExistingResources: () => Promise, + onRemove: (resources: D[]) => Promise, + output: any[] = [], + ) { + try { + this.log.progress('component-info', `Retrieving ${resourceType}`); + const existing = (await retrieveExistingResources()).filter(e => + isTemplateResource(context, e, resourceType, resources ?? []), + ); + this.log.progress('component-remove', `Removing ${resourceType} from Defender`); + await onRemove(existing); + output.push(...existing); + } catch (e) { + this.log.tryLogDefenderError(e); + } + } + + private async requestConfirmation() { + if (process.stdout.isTTY) { + const properties = [ + { + name: 'confirm', + validator: /^(y|n){1}$/i, + warning: 'Confirmation must be `y` (yes) or `n` (no)', + }, + ]; + prompt.start({ + message: + 'This action will remove your resources from Defender permanently. Are you sure you wish to continue [y/n]?', + }); + const { confirm } = await prompt.get(properties); + + if (confirm!.toString().toLowerCase() !== 'y') { + this.log.error('Confirmation not acquired. Terminating command'); + return; + } + this.log.success('Confirmation acquired'); + } + + await this.remove(); + } + + private async remove() { + this.log.notice('========================================================'); + const stackName = getStackName(this.serverless); + this.log.progress('remove', `Running Defender Remove on stack: ${stackName}`); + const stdOut: { + stack: string; + sentinels: DefenderSentinel[]; + autotasks: DefenderAutotask[]; + contracts: DefenderContract[]; + relayers: { relayerId: string; relayerApiKeys: DefenderRelayerApiKey[] }[]; + notifications: DefenderNotification[]; + categories: DefenderCategory[]; + secrets: string[]; + } = { + stack: stackName, + sentinels: [], + autotasks: [], + contracts: [], + relayers: [], + notifications: [], + categories: [], + secrets: [], + }; + // Sentinels + const sentinelClient = getSentinelClient(this.teamKey!); + const listSentinels = () => sentinelClient.list().then(i => i.items); + await this.wrapper( + this.serverless, + 'Sentinels', + this.serverless.service.resources?.Resources?.sentinels, + listSentinels, + async (sentinels: DefenderSentinel[]) => { + await Promise.all( + sentinels.map(async e => { + this.log.progress( + 'component-remove-extra', + `Removing ${e.stackResourceId} (${e.subscriberId}) from Defender`, + ); + await sentinelClient.delete(e.subscriberId); + this.log.success(`Removed ${e.stackResourceId} (${e.subscriberId})`); + }), + ); + }, + stdOut.sentinels, + ); + + // Autotasks + const autotaskClient = getAutotaskClient(this.teamKey!); + const listAutotasks = () => autotaskClient.list().then(i => i.items); + await this.wrapper( + this.serverless, + 'Autotasks', + this.serverless.service.functions as any, + listAutotasks, + async (autotasks: DefenderAutotask[]) => { + await Promise.all( + autotasks.map(async e => { + this.log.progress( + 'component-remove-extra', + `Removing ${e.stackResourceId} (${e.autotaskId}) from Defender`, + ); + await autotaskClient.delete(e.autotaskId); + this.log.success(`Removed ${e.stackResourceId} (${e.autotaskId})`); + }), + ); + }, + stdOut.autotasks, + ); + + // Contracts + const adminClient = getAdminClient(this.teamKey!); + const listContracts = () => adminClient.listContracts(); + await this.wrapper & { abi?: string }, DefenderContract>( + this.serverless, + 'Contracts', + this.serverless.service.resources?.Resources?.contracts, + listContracts, + async (contracts: DefenderContract[]) => { + await Promise.all( + contracts.map(async e => { + const id = `${e.network}-${e.address}`; + this.log.progress('component-remove-extra', `Removing ${id} (${e.name}) from Defender`); + await adminClient.deleteContract(id); + this.log.success(`Removed ${id} (${e.name})`); + }), + ); + }, + stdOut.contracts, + ); + + try { + // Relayer API keys + const relayClient = getRelayClient(this.teamKey!); + const listRelayers = (await relayClient.list()).items; + const existingRelayers = listRelayers.filter(e => + isTemplateResource( + this.serverless, + e, + 'Relayers', + this.serverless.service.resources?.Resources?.relayers ?? [], + ), + ); + this.log.error('Deleting Relayers is currently only possible via the Defender UI.'); + this.log.progress('component-info', `Retrieving Relayer API Keys`); + await Promise.all( + existingRelayers.map(async relayer => { + this.log.progress('component-info', `Retrieving API Keys for relayer ${relayer.stackResourceId}`); + const relayerApiKeys = await relayClient.listKeys(relayer.relayerId); + await Promise.all( + relayerApiKeys.map(async e => { + this.log.progress('component-remove-extra', `Removing ${e.stackResourceId} (${e.keyId}) from Defender`); + await relayClient.deleteKey(e.relayerId, e.keyId); + this.log.success(`Removed ${e.stackResourceId} (${e.keyId})`); + }), + ); + stdOut.relayers.push({ relayerId: relayer.relayerId, relayerApiKeys }); + }), + ); + } catch (e) { + this.log.tryLogDefenderError(e); + } + + // Notifications + const listNotifications = () => sentinelClient.listNotificationChannels(); + await this.wrapper( + this.serverless, + 'Notifications', + this.serverless.service.resources?.Resources?.notifications, + listNotifications, + async (notifications: DefenderNotification[]) => { + await Promise.all( + notifications.map(async e => { + this.log.progress( + 'component-remove-extra', + `Removing ${e.stackResourceId} (${e.notificationId}) from Defender`, + ); + await sentinelClient.deleteNotificationChannel(e); + this.log.success(`Removed ${e.stackResourceId} (${e.notificationId})`); + }), + ); + }, + stdOut.notifications, + ); + + // Categories + + // Temporarily Disabled + // const listNotificationCategories = () => sentinelClient.listNotificationCategories(); + // await this.wrapper( + // this.serverless, + // 'Categories', + // this.serverless.service.resources?.Resources?.categories, + // listNotificationCategories, + // async (categories: DefenderCategory[]) => { + // await Promise.all( + // categories.map(async (e) => { + // this.log.progress( + // 'component-remove-extra', + // `Removing ${e.stackResourceId} (${e.categoryId}) from Defender`, + // ); + // await sentinelClient.deleteNotificationCategory(e.categoryId); + // this.log.success(`Removed ${e.stackResourceId} (${e.categoryId})`); + // }), + // ); + // }, + // stdOut.categories, + // ); + + // Secrets + const listSecrets = () => autotaskClient.listSecrets().then(r => r.secretNames ?? []); + + const allSecrets = getConsolidatedSecrets(this.serverless); + + await this.wrapper( + this.serverless, + 'Secrets', + allSecrets, + listSecrets, + async (secrets: string[]) => { + this.log.progress('component-remove-extra', `Removing (${secrets.join(', ')}) from Defender`); + await autotaskClient.createSecrets({ + deletes: secrets, + secrets: {}, + }); + this.log.success(`Removed (${secrets.join(', ')})`); + }, + stdOut.secrets, + ); + this.log.notice('========================================================'); + if (!process.stdout.isTTY) this.log.stdOut(JSON.stringify(stdOut, null, 2)); + } +} diff --git a/src/index.ts b/src/index.ts new file mode 100644 index 0000000..a0e411a --- /dev/null +++ b/src/index.ts @@ -0,0 +1,34 @@ +import Serverless from 'serverless'; + +import { Logging } from 'serverless/classes/Plugin'; + +import DefenderProvider from './provider'; +import DefenderDeploy from './cmd/deploy'; +import DefenderInfo from './cmd/info'; +import DefenderRemove from './cmd/remove'; +import DefenderLogs from './cmd/logs'; +import DefenderInvoke from './cmd/invoke'; + +import Logger from './utils/logger'; + +class DefenderPlugin { + serverless: Serverless; + options: Serverless.Options; + logging: Logging; + constructor(serverless: Serverless, options: Serverless.Options, logging: Logging) { + this.serverless = serverless; + this.options = options; + this.logging = logging; + + Logger.getInstance(logging); + + this.serverless.setProvider('defender', new DefenderProvider(this.serverless) as any); + this.serverless.pluginManager.addPlugin(DefenderDeploy); + this.serverless.pluginManager.addPlugin(DefenderInfo); + this.serverless.pluginManager.addPlugin(DefenderRemove); + this.serverless.pluginManager.addPlugin(DefenderLogs); + this.serverless.pluginManager.addPlugin(DefenderInvoke); + } +} + +module.exports = DefenderPlugin; diff --git a/src/provider.ts b/src/provider.ts new file mode 100644 index 0000000..736af42 --- /dev/null +++ b/src/provider.ts @@ -0,0 +1,15 @@ +import Serverless from 'serverless'; + +import { DefenderSchema, DefinitionsSchema, ResourcesSchema, FunctionSchema, ProviderSchema } from './types/schemas'; + +export default class DefenderProvider { + constructor(serverless: Serverless) { + serverless.configSchemaHandler.defineTopLevelProperty('defender', DefenderSchema); + serverless.configSchemaHandler.defineProvider('defender', { + definitions: DefinitionsSchema.definitions, + provider: ProviderSchema, + resources: ResourcesSchema, + function: FunctionSchema, + }); + } +} diff --git a/src/types/docs-schemas/defender.schema.json b/src/types/docs-schemas/defender.schema.json new file mode 100644 index 0000000..818f3ac --- /dev/null +++ b/src/types/docs-schemas/defender.schema.json @@ -0,0 +1,10 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "Defender", + "type": "object", + "properties": { + "key": { "type": "string" }, + "secret": { "type": "string" } + }, + "required": ["key", "secret"] +} diff --git a/src/types/docs-schemas/definitions.schema.json b/src/types/docs-schemas/definitions.schema.json new file mode 100644 index 0000000..420bab6 --- /dev/null +++ b/src/types/docs-schemas/definitions.schema.json @@ -0,0 +1,572 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "Definitions", + "definitions": { + "address": { "title": "Address", "type": "string", "pattern": "^0x[a-fA-F0-9]{40}$" }, + "risk-category": { + "title": "RiskCategory", + "type": "string", + "enum": ["NONE", "GOVERNANCE", "ACCESS-CONTROL", "SUSPICIOUS", "FINANCIAL", "TECHNICAL"] + }, + "network": { + "title": "Network", + "type": "string", + "enum": [ + "mainnet", + "sepolia", + "rinkeby", + "ropsten", + "kovan", + "goerli", + "xdai", + "sokol", + "fuse", + "bsc", + "bsctest", + "fantom", + "fantomtest", + "moonbase", + "moonriver", + "moonbeam", + "matic", + "mumbai", + "avalanche", + "fuji", + "optimism", + "optimism-kovan", + "optimism-goerli", + "arbitrum", + "arbitrum-nova", + "arbitrum-rinkeby", + "arbitrum-goerli", + "celo", + "alfajores", + "harmony-s0", + "harmony-test-s0", + "aurora", + "auroratest", + "hedera", + "hederatest", + "x-dfk-avax-chain", + "x-dfk-avax-chain-test", + "zksync", + "zksync-goerli", + "base-goerli", + "linea-goerli" + ] + }, + "policy": { + "title": "Policy", + "type": "object", + "properties": { + "gas-price-cap": { "type": "integer" }, + "whitelist-receivers": { "title": "WhitelistReceivers", "type": "array", "items": { "type": "string" } }, + "eip1559-pricing": { "type": "boolean" }, + "private-transactions": { "type": "boolean" } + } + }, + "relayer": { + "title": "Relayer", + "type": "object", + "properties": { + "name": { "type": "string" }, + "network": { "$ref": "definitions.schema.json/#/definitions/network", "format": "uri-reference" }, + "min-balance": { "type": "integer" }, + "address-from-relayer": { + "title": "AddressFromRelayer", + "type": "object" + }, + "policy": { "$ref": "definitions.schema.json/#/definitions/policy", "format": "uri-reference" }, + "api-keys": { + "title": "RelayerAPIKeys", + "type": "array", + "items": { "type": "string" } + } + }, + "required": ["name", "network", "min-balance"] + }, + "contract": { + "title": "Contract", + "type": "object", + "properties": { + "name": { "type": "string" }, + "address": { "$ref": "definitions.schema.json/#/definitions/address", "format": "uri-reference" }, + "network": { "$ref": "definitions.schema.json/#/definitions/network", "format": "uri-reference" }, + "abi": { "$ref": "definitions.schema.json/#/definitions/abi" }, + "nat-spec": { "type": "string" } + }, + "required": ["name", "address", "network"] + }, + "notificationType": { + "title": "NotificationType", + "type": "string", + "enum": ["slack", "email", "discord", "telegram", "datadog", "webhook", "opsgenie", "pager-duty"] + }, + "datadogConfig": { + "title": "DatadogConfig", + "type": "object", + "properties": { + "api-key": { "type": "string" }, + "metric-prefix": { + "type": "string", + "maxLength": 100, + "pattern": "^[A-Za-z]+[A-Za-z0-9_\\.]*\\.$" + } + }, + "required": ["api-key", "metric-prefix"] + }, + "urlConfig": { + "title": "UrlConfig", + "type": "object", + "properties": { + "url": { "type": "string", "format": "uri" } + }, + "required": ["url"] + }, + "telegramBotConfig": { + "title": "TelegramConfig", + "type": "object", + "properties": { + "bot-token": { "type": "string" }, + "chat-id": { "type": "string" } + }, + "required": ["bot-token", "chat-id"] + }, + "emailConfig": { + "title": "EmailConfig", + "type": "object", + "properties": { + "emails": { + "title": "Emails", + "type": "array", + "items": { "type": "string", "format": "email" }, + "default": [] + } + }, + "required": ["emails"] + }, + "opsgenieUserType": { + "title": "opsgenieUserType", + "type": "string", + "enum": ["team", "user", "escalation", "schedule"] + }, + "opsgeniePriorityLevel": { + "title": "OpsgeniePriorityLevel", + "type": "string", + "enum": ["P1", "P2", "P3", "P4", "P5"] + }, + "opsgenieInstanceLocation": { + "title": "OpsgenieInstanceLocation", + "type": "string", + "enum": ["US", "EU"] + }, + "opsgenieUser": { + "type": "object", + "properties": { + "username": { + "type": "string" + }, + "fullName": { + "type": "string" + }, + "id": { + "type": "string" + }, + "type": { + "$ref": "definitions.schema.json/#/definitions/opsgenieUserType" + } + }, + "required": ["type", "username"], + "additionalProperties": false + }, + "opsgenieConfig": { + "title": "OpsgenieConfig", + "properties": { + "apiKey": { + "type": "string" + }, + "instanceLocation": { + "$ref": "definitions.schema.json/#/definitions/opsgenieInstanceLocation" + }, + "alias": { + "type": "string", + "maxLength": 512 + }, + "responders": { + "type": "array", + "items": { + "$ref": "definitions.schema.json/#/definitions/opsgenieUser" + } + }, + "visibleTo": { + "type": "array", + "items": { + "$ref": "definitions.schema.json/#/definitions/opsgenieUser" + } + }, + "actions": { + "type": "array", + "maxItems": 10, + "items": { + "type": "string", + "maxLength": 50 + } + }, + "tags": { + "type": "array", + "maxItems": 10, + "items": { + "type": "string", + "maxLength": 50 + } + }, + "details": { + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "entity": { + "type": "string", + "maxLength": 512 + }, + "priority": { + "$ref": "definitions.schema.json/#/definitions/opsgeniePriorityLevel" + }, + "note": { + "type": "string", + "maxLength": 25000 + } + }, + "required": ["apiKey", "instanceLocation"], + "additionalProperties": false + }, + "pagerDutyEventType": { + "title": "PagerDutyEventType", + "type": "string", + "enum": [ + "change", + "alert" + ] + }, + "pagerDutyEventAction": { + "title": "PagerDutyEventAction", + "type": "string", + "enum": [ + "trigger", + "acknowledge", + "resolve" + ] + }, + "pagerDutySeverity": { + "title": "PagerDutySeverity", + "type": "string", + "enum": [ + "critical", + "error", + "warning", + "info" + ] + }, + "pagerDutyConfig": { + "title": "PagerDutyConfig", + "properties": { + "token": { + "type": "string" + }, + "eventType": { + "$ref": "definitions.schema.json/#/definitions/pagerDutyEventType" + }, + "routingKey": { + "type": "string", + "maxLength": 32, + "minLength": 32 + }, + "eventAction": { + "$ref": "definitions.schema.json/#/definitions/pagerDutyEventAction" + }, + "dedupKey": { + "type": "string", + "maxLength": 255 + }, + "severity": { + "$ref": "definitions.schema.json/#/definitions/pagerDutySeverity" + }, + "component": { + "type": "string" + }, + "group": { + "type": "string" + }, + "class": { + "type": "string" + }, + "customDetails": { + "type": "object", + "additionalProperties": { + "type": "string" + } + } + }, + "if": { + "properties": { + "eventType": { + "const": "alert" + } + } + }, + "then": { + "required": [ + "eventAction", + "severity" + ] + }, + "required": [ + "token", + "eventType", + "routingKey" + ], + "additionalProperties": false + }, + "notification": { + "title": "Notification", + "type": "object", + "properties": { + "type": { "$ref": "definitions.schema.json/#/definitions/notificationType", "format": "uri-reference" }, + "name": { "type": "string" }, + "paused": { "type": "boolean" }, + "config": { + "title": "Config", + "type": "object", + "oneOf": [ + { "$ref": "definitions.schema.json/#/definitions/emailConfig", "format": "uri-reference" }, + { "$ref": "definitions.schema.json/#/definitions/telegramBotConfig", "format": "uri-reference" }, + { "$ref": "definitions.schema.json/#/definitions/datadogConfig", "format": "uri-reference" }, + { "$ref": "definitions.schema.json/#/definitions/urlConfig", "format": "uri-reference" }, + { "$ref": "definitions.schema.json/#/definitions/opsgenieConfig", "format": "uri-reference" }, + { "$ref": "definitions.schema.json/#/definitions/pagerDutyConfig", "format": "uri-reference" } + ] + } + }, + "required": ["type", "name", "paused", "config"] + }, + "category": { + "title": "Category", + "type": "object", + "properties": { + "name": { "type": "string" }, + "description": { "type": "string" }, + "notificationIds": { + "type": "array", + "items": { "$ref": "definitions.schema.json/#/definitions/notification", "format": "uri-reference" } + } + }, + "required": ["name"] + }, + "blockSentinel": { + "title": "BlockSentinel", + "type": "object", + "properties": { + "name": { "type": "string" }, + "type": { "type": "string", "enum": ["BLOCK"] }, + "network": { "$ref": "definitions.schema.json/#/definitions/network", "format": "uri-reference" }, + "addresses": { + "title": "Addresses", + "type": "array", + "items": { "$ref": "definitions.schema.json/#/definitions/address", "format": "uri-reference" } + }, + "abi": { "$ref": "definitions.schema.json/#/definitions/abi" }, + "alert-threshold": { + "title": "AlertThreshold", + "type": "object", + "properties": { "amount": { "type": "integer" }, "window-seconds": { "type": "integer" } } + }, + "paused": { "type": "boolean" }, + "autotask-condition": { "$ref": "definitions.schema.json/#/definitions/autotask", "format": "uri-reference" }, + "autotask-trigger": { "$ref": "definitions.schema.json/#/definitions/autotask", "format": "uri-reference" }, + "confirm-level": { + "oneOf": [{ "type": "string", "enum": ["safe", "finalized"] }, { "type": "integer" }] + }, + "notify-config": { + "title": "NotifyConfig", + "type": "object", + "properties": { + "timeout": { "type": "integer" }, + "message": { "type": "string" }, + "category": { "$ref": "definitions.schema.json/#/definitions/category", "format": "uri-reference" }, + "channels": { + "title": "Channels", + "type": "array", + "items": { "$ref": "definitions.schema.json/#/definitions/notification", "format": "uri-reference" } + } + }, + "required": ["channels"] + }, + "conditions": { + "title": "Conditions", + "type": "object", + "properties": { + "event": { + "title": "Event", + "type": "array", + "items": { + "title": "EventItems", + "type": "object", + "properties": { "signature": { "type": "string" }, "expression": { "type": "string" } }, + "required": ["signature"] + } + }, + "function": { + "title": "Function", + "type": "array", + "items": { + "title": "FunctionItems", + "type": "object", + "properties": { "signature": { "type": "string" }, "expression": { "type": "string" } }, + "required": ["signature"] + } + }, + "transaction": { "type": "string" } + } + }, + "risk-category": { "$ref": "definitions.schema.json/#/definitions/risk-category" } + }, + "required": ["name", "type", "network", "addresses", "notify-config"] + }, + "fortaSentinel": { + "title": "FortaSentinel", + "type": "object", + "properties": { + "name": { "type": "string" }, + "type": { "type": "string", "enum": ["FORTA"] }, + "network": { "$ref": "definitions.schema.json/#/definitions/network", "format": "uri-reference" }, + "addresses": { + "title": "Addresses", + "type": "array", + "items": { "$ref": "definitions.schema.json/#/definitions/address", "format": "uri-reference" } + }, + "abi": { "$ref": "definitions.schema.json/#/definitions/abi" }, + "alert-threshold": { + "title": "AlertThreshold", + "type": "object", + "properties": { "amount": { "type": "integer" }, "window-seconds": { "type": "integer" } } + }, + "paused": { "type": "boolean" }, + "autotask-condition": { "$ref": "definitions.schema.json/#/definitions/autotask", "format": "uri-reference" }, + "autotask-trigger": { "$ref": "definitions.schema.json/#/definitions/autotask", "format": "uri-reference" }, + "notify-config": { + "title": "NotifyConfig", + "type": "object", + "properties": { + "timeout": { "type": "integer" }, + "message": { "type": "string" }, + "category": { "$ref": "definitions.schema.json/#/definitions/category", "format": "uri-reference" }, + "channels": { + "title": "Channels", + "type": "array", + "items": { "$ref": "definitions.schema.json/#/definitions/notification", "format": "uri-reference" } + } + }, + "required": ["channels"] + }, + "conditions": { + "title": "Conditions", + "type": "object", + "properties": { + "min-scanner-count": { "type": "integer" }, + "severity": { "type": "integer", "enum": [0, 1, 2, 3, 4, 5] }, + "alert-ids": { + "title": "AlertIDs", + "type": "array", + "items": { "type": "string" } + } + }, + "required": ["min-scanner-count"] + }, + "forta-node-id": { "type": "string" }, + "agent-ids": { + "title": "AgentIDs", + "type": "array", + "items": { "type": "string" } + }, + "risk-category": { "$ref": "definitions.schema.json/#/definitions/risk-category" } + }, + "anyOf": [ + { + "required": ["agent-ids"] + }, + { + "required": ["addresses"] + } + ], + "required": ["name", "type", "network", "notify-config"] + }, + "sentinel": { + "title": "Sentinel", + "type": "object", + "oneOf": [ + { "$ref": "definitions.schema.json/#/definitions/blockSentinel", "format": "uri-reference" }, + { "$ref": "definitions.schema.json/#/definitions/fortaSentinel", "format": "uri-reference" } + ] + }, + "autotask": { + "title": "Autotask", + "type": "object", + "properties": { + "name": { "type": "string" }, + "path": { "type": "string" }, + "relayer": { "$ref": "definitions.schema.json/#/definitions/relayer", "format": "uri-reference" }, + "trigger": { + "title": "Trigger", + "type": "object", + "properties": { + "type": { "title": "TriggerType", "type": "string", "enum": ["schedule", "webhook"] }, + "cron": { "title": "TriggerCron", "type": "string" }, + "frequency": { "title": "TriggerFrequency", "type": "integer" } + }, + "if": { + "properties": { "type": { "const": "schedule" } } + }, + "then": { + "oneOf": [ + { + "required": ["cron"] + }, + { + "required": ["frequency"] + } + ] + }, + "else": {}, + "required": ["type"] + }, + "paused": { "type": "boolean" } + }, + "required": ["name", "path", "trigger", "paused"] + }, + "deploymentConfig": { + "title": "DeploymentConfig", + "type": "object", + "properties": { + "relayer": { "$ref": "definitions.schema.json/#/definitions/relayer", "format": "uri-reference" } + }, + "required": ["relayer"] + }, + "blockExplorerApiKey": { + "title": "BlockExplorerApiKey", + "type": "object", + "properties": { + "key": { "type": "string" }, + "network": { "$ref": "definitions.schema.json/#/definitions/network", "format": "uri-reference" } + }, + "required": ["key", "network"] + }, + "abi": { + "title": "AbiType", + "anyOf": [ + { "title": "StringABI", "type": "string" }, + { "title": "ArrayABI", "type": "array" } + ] + } + } +} diff --git a/src/types/docs-schemas/function.schema.json b/src/types/docs-schemas/function.schema.json new file mode 100644 index 0000000..238733b --- /dev/null +++ b/src/types/docs-schemas/function.schema.json @@ -0,0 +1,39 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "Function", + "type": "object", + "properties": { + "path": { "type": "string" }, + "relayer": { + "title": "Relayer", + "$ref": "definitions.schema.json/#/definitions/relayer", + "format": "uri-reference" + }, + "trigger": { + "title": "Trigger", + "type": "object", + "properties": { + "type": { "title": "TriggerType", "type": "string", "enum": ["schedule", "webhook"] }, + "cron": { "title": "TriggerCron", "type": "string" }, + "frequency": { "title": "TriggerFrequency", "type": "integer" } + }, + "if": { + "properties": { "type": { "const": "schedule" } } + }, + "then": { + "oneOf": [ + { + "required": ["cron"] + }, + { + "required": ["frequency"] + } + ] + }, + "else": {}, + "required": ["type"] + }, + "paused": { "type": "boolean" } + }, + "required": ["name", "path", "trigger", "paused"] +} diff --git a/src/types/docs-schemas/provider.schema.json b/src/types/docs-schemas/provider.schema.json new file mode 100644 index 0000000..d11d254 --- /dev/null +++ b/src/types/docs-schemas/provider.schema.json @@ -0,0 +1,11 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "Provider", + "type": "object", + "properties": { + "stage": { "type": "string" }, + "stackName": { "type": "string" }, + "ssot": { "type": "boolean" } + }, + "required": ["stage", "stackName"] +} diff --git a/src/types/docs-schemas/resources.schema.json b/src/types/docs-schemas/resources.schema.json new file mode 100644 index 0000000..3036386 --- /dev/null +++ b/src/types/docs-schemas/resources.schema.json @@ -0,0 +1,79 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "Resources", + "type": "object", + "additionalProperties": false, + "properties": { + "Resources": { + "title": "Resources", + "type": "object", + "properties": { + "notifications": { + "title": "Notifications", + "type": "object", + "additionalProperties": { + "$ref": "definitions.schema.json/#/definitions/notification", + "format": "uri-reference" + } + }, + "relayers": { + "title": "Relayers", + "type": "object", + "additionalProperties": { + "$ref": "definitions.schema.json/#/definitions/relayer", + "format": "uri-reference" + } + }, + "policies": { + "title": "Policies", + "type": "object", + "additionalProperties": { + "$ref": "definitions.schema.json/#/definitions/policy", + "format": "uri-reference" + } + }, + "contracts": { + "title": "Contracts", + "type": "object", + "additionalProperties": { + "$ref": "definitions.schema.json/#/definitions/contract", + "format": "uri-reference" + } + }, + "secrets": { + "title": "AutotaskSecrets", + "type": "object", + "additionalProperties": false, + "properties": { + "global": { "title": "Global", "type": "object", "additionalProperties": { "type": "string" } }, + "stack": { "title": "Stack", "type": "object", "additionalProperties": { "type": "string" } } + } + }, + "sentinels": { + "title": "Sentinels", + "type": "object", + "additionalProperties": { + "$ref": "definitions.schema.json/#/definitions/sentinel", + "format": "uri-reference" + } + }, + "deployment-configs": { + "title": "Deployment Configs", + "type": "object", + "additionalProperties": { + "$ref": "definitions.schema.json/#/definitions/deploymentConfig", + "format": "uri-reference" + } + }, + "block-explorer-api-keys": { + "title": "Block Explorer Api Keys", + "type": "object", + "additionalProperties": { + "$ref": "definitions.schema.json/#/definitions/blockExplorerApiKey", + "format": "uri-reference" + } + } + } + } + } +} diff --git a/src/types/docs/README.md b/src/types/docs/README.md new file mode 100644 index 0000000..fe7db70 --- /dev/null +++ b/src/types/docs/README.md @@ -0,0 +1,139 @@ +# README + +## Top-level Schemas + +* [Defender](./defender.md) – `-` + +* [Definitions](./definitions.md) – `-` + +* [Function](./function.md) – `-` + +* [Provider](./provider.md) – `-` + +* [Resources](./resources.md) – `-` + +## Other Schemas + +### Objects + +* [AddressFromRelayer](./definitions-definitions-relayer-properties-addressfromrelayer.md) – `#/definitions/relayer/properties/address-from-relayer` + +* [AlertThreshold](./definitions-definitions-blocksentinel-properties-alertthreshold.md) – `#/definitions/blockSentinel/properties/alert-threshold` + +* [AlertThreshold](./definitions-definitions-fortasentinel-properties-alertthreshold.md) – `#/definitions/fortaSentinel/properties/alert-threshold` + +* [Autotask](./definitions-definitions-autotask.md) – `#/definitions/autotask` + +* [AutotaskSecrets](./resources-properties-resources-properties-autotasksecrets.md) – `#/properties/Resources/properties/secrets` + +* [Block Explorer Api Keys](./resources-properties-resources-properties-block-explorer-api-keys.md) – `#/properties/Resources/properties/block-explorer-api-keys` + +* [BlockExplorerApiKey](./definitions-definitions-blockexplorerapikey.md) – `#/definitions/blockExplorerApiKey` + +* [BlockSentinel](./definitions-definitions-blocksentinel.md) – `#/definitions/blockSentinel` + +* [Category](./definitions-definitions-category.md) – `#/definitions/category` + +* [Conditions](./definitions-definitions-blocksentinel-properties-conditions.md) – `#/definitions/blockSentinel/properties/conditions` + +* [Conditions](./definitions-definitions-fortasentinel-properties-conditions.md) – `#/definitions/fortaSentinel/properties/conditions` + +* [Config](./definitions-definitions-notification-properties-config.md) – `#/definitions/notification/properties/config` + +* [Contract](./definitions-definitions-contract.md) – `#/definitions/contract` + +* [Contracts](./resources-properties-resources-properties-contracts.md) – `#/properties/Resources/properties/contracts` + +* [DatadogConfig](./definitions-definitions-datadogconfig.md) – `#/definitions/datadogConfig` + +* [Deployment Configs](./resources-properties-resources-properties-deployment-configs.md) – `#/properties/Resources/properties/deployment-configs` + +* [DeploymentConfig](./definitions-definitions-deploymentconfig.md) – `#/definitions/deploymentConfig` + +* [EmailConfig](./definitions-definitions-emailconfig.md) – `#/definitions/emailConfig` + +* [EventItems](./definitions-definitions-blocksentinel-properties-conditions-properties-event-eventitems.md) – `#/definitions/blockSentinel/properties/conditions/properties/event/items` + +* [FortaSentinel](./definitions-definitions-fortasentinel.md) – `#/definitions/fortaSentinel` + +* [FunctionItems](./definitions-definitions-blocksentinel-properties-conditions-properties-function-functionitems.md) – `#/definitions/blockSentinel/properties/conditions/properties/function/items` + +* [Global](./resources-properties-resources-properties-autotasksecrets-properties-global.md) – `#/properties/Resources/properties/secrets/properties/global` + +* [Notification](./definitions-definitions-notification.md) – `#/definitions/notification` + +* [Notifications](./resources-properties-resources-properties-notifications.md) – `#/properties/Resources/properties/notifications` + +* [NotifyConfig](./definitions-definitions-blocksentinel-properties-notifyconfig.md) – `#/definitions/blockSentinel/properties/notify-config` + +* [NotifyConfig](./definitions-definitions-fortasentinel-properties-notifyconfig.md) – `#/definitions/fortaSentinel/properties/notify-config` + +* [Policies](./resources-properties-resources-properties-policies.md) – `#/properties/Resources/properties/policies` + +* [Policy](./definitions-definitions-policy.md) – `#/definitions/policy` + +* [Relayer](./definitions-definitions-relayer.md) – `#/definitions/relayer` + +* [Relayers](./resources-properties-resources-properties-relayers.md) – `#/properties/Resources/properties/relayers` + +* [Resources](./resources-properties-resources.md) – `#/properties/Resources` + +* [Sentinel](./definitions-definitions-sentinel.md) – `#/definitions/sentinel` + +* [Sentinels](./resources-properties-resources-properties-sentinels.md) – `#/properties/Resources/properties/sentinels` + +* [Stack](./resources-properties-resources-properties-autotasksecrets-properties-stack.md) – `#/properties/Resources/properties/secrets/properties/stack` + +* [TelegramConfig](./definitions-definitions-telegramconfig.md) – `#/definitions/telegramBotConfig` + +* [Trigger](./definitions-definitions-autotask-properties-trigger.md) – `#/definitions/autotask/properties/trigger` + +* [Trigger](./function-properties-trigger.md) – `#/properties/trigger` + +* [Untitled object in Definitions](./definitions-definitions-opsgenieuser.md) – `#/definitions/opsgenieUser` + +* [Untitled object in Definitions](./definitions-definitions-opsgenieconfig-properties-details.md) – `#/definitions/opsgenieConfig/properties/details` + +* [Untitled object in Definitions](./definitions-definitions-pagerdutyconfig-properties-customdetails.md) – `#/definitions/pagerDutyConfig/properties/customDetails` + +* [UrlConfig](./definitions-definitions-urlconfig.md) – `#/definitions/urlConfig` + +### Arrays + +* [Addresses](./definitions-definitions-blocksentinel-properties-addresses.md) – `#/definitions/blockSentinel/properties/addresses` + +* [Addresses](./definitions-definitions-fortasentinel-properties-addresses.md) – `#/definitions/fortaSentinel/properties/addresses` + +* [AgentIDs](./definitions-definitions-fortasentinel-properties-agentids.md) – `#/definitions/fortaSentinel/properties/agent-ids` + +* [AlertIDs](./definitions-definitions-fortasentinel-properties-conditions-properties-alertids.md) – `#/definitions/fortaSentinel/properties/conditions/properties/alert-ids` + +* [ArrayABI](./definitions-definitions-abitype-anyof-arrayabi.md) – `#/definitions/abi/anyOf/1` + +* [Channels](./definitions-definitions-blocksentinel-properties-notifyconfig-properties-channels.md) – `#/definitions/blockSentinel/properties/notify-config/properties/channels` + +* [Channels](./definitions-definitions-fortasentinel-properties-notifyconfig-properties-channels.md) – `#/definitions/fortaSentinel/properties/notify-config/properties/channels` + +* [Emails](./definitions-definitions-emailconfig-properties-emails.md) – `#/definitions/emailConfig/properties/emails` + +* [Event](./definitions-definitions-blocksentinel-properties-conditions-properties-event.md) – `#/definitions/blockSentinel/properties/conditions/properties/event` + +* [Function](./definitions-definitions-blocksentinel-properties-conditions-properties-function.md) – `#/definitions/blockSentinel/properties/conditions/properties/function` + +* [RelayerAPIKeys](./definitions-definitions-relayer-properties-relayerapikeys.md) – `#/definitions/relayer/properties/api-keys` + +* [Untitled array in Definitions](./definitions-definitions-opsgenieconfig-properties-responders.md) – `#/definitions/opsgenieConfig/properties/responders` + +* [Untitled array in Definitions](./definitions-definitions-opsgenieconfig-properties-visibleto.md) – `#/definitions/opsgenieConfig/properties/visibleTo` + +* [Untitled array in Definitions](./definitions-definitions-opsgenieconfig-properties-actions.md) – `#/definitions/opsgenieConfig/properties/actions` + +* [Untitled array in Definitions](./definitions-definitions-opsgenieconfig-properties-tags.md) – `#/definitions/opsgenieConfig/properties/tags` + +* [Untitled array in Definitions](./definitions-definitions-category-properties-notificationids.md) – `#/definitions/category/properties/notificationIds` + +* [WhitelistReceivers](./definitions-definitions-policy-properties-whitelistreceivers.md) – `#/definitions/policy/properties/whitelist-receivers` + +## Version Note + +The schemas linked above follow the JSON Schema Spec version: `http://json-schema.org/draft-07/schema#` diff --git a/src/types/docs/defender-properties-key.md b/src/types/docs/defender-properties-key.md new file mode 100644 index 0000000..d78348b --- /dev/null +++ b/src/types/docs/defender-properties-key.md @@ -0,0 +1,3 @@ +## key Type + +`string` diff --git a/src/types/docs/defender-properties-secret.md b/src/types/docs/defender-properties-secret.md new file mode 100644 index 0000000..bf91c33 --- /dev/null +++ b/src/types/docs/defender-properties-secret.md @@ -0,0 +1,3 @@ +## secret Type + +`string` diff --git a/src/types/docs/defender.md b/src/types/docs/defender.md new file mode 100644 index 0000000..034d604 --- /dev/null +++ b/src/types/docs/defender.md @@ -0,0 +1,46 @@ +## Defender Type + +`object` ([Defender](defender.md)) + +# Defender Properties + +| Property | Type | Required | Nullable | Defined by | +| :---------------- | :------- | :------- | :------------- | :----------------------------------------------------------------------- | +| [key](#key) | `string` | Required | cannot be null | [Defender](defender-properties-key.md "#/properties/key") | +| [secret](#secret) | `string` | Required | cannot be null | [Defender](defender-properties-secret.md "#/properties/secret") | + +## key + + + +`key` + +* is required + +* Type: `string` + +* cannot be null + +* defined in: [Defender](defender-properties-key.md "#/properties/key") + +### key Type + +`string` + +## secret + + + +`secret` + +* is required + +* Type: `string` + +* cannot be null + +* defined in: [Defender](defender-properties-secret.md "#/properties/secret") + +### secret Type + +`string` diff --git a/src/types/docs/definitions-definitions-abitype-anyof-arrayabi.md b/src/types/docs/definitions-definitions-abitype-anyof-arrayabi.md new file mode 100644 index 0000000..56da2bd --- /dev/null +++ b/src/types/docs/definitions-definitions-abitype-anyof-arrayabi.md @@ -0,0 +1,3 @@ +## 1 Type + +`array` ([ArrayABI](definitions-definitions-abitype-anyof-arrayabi.md)) diff --git a/src/types/docs/definitions-definitions-abitype-anyof-stringabi.md b/src/types/docs/definitions-definitions-abitype-anyof-stringabi.md new file mode 100644 index 0000000..9117785 --- /dev/null +++ b/src/types/docs/definitions-definitions-abitype-anyof-stringabi.md @@ -0,0 +1,3 @@ +## 0 Type + +`string` ([StringABI](definitions-definitions-abitype-anyof-stringabi.md)) diff --git a/src/types/docs/definitions-definitions-abitype.md b/src/types/docs/definitions-definitions-abitype.md new file mode 100644 index 0000000..e876ff9 --- /dev/null +++ b/src/types/docs/definitions-definitions-abitype.md @@ -0,0 +1,9 @@ +## abi Type + +merged type ([AbiType](definitions-definitions-abitype.md)) + +any of + +* [StringABI](definitions-definitions-abitype-anyof-stringabi.md "check type definition") + +* [ArrayABI](definitions-definitions-abitype-anyof-arrayabi.md "check type definition") diff --git a/src/types/docs/definitions-definitions-address.md b/src/types/docs/definitions-definitions-address.md new file mode 100644 index 0000000..1092b6c --- /dev/null +++ b/src/types/docs/definitions-definitions-address.md @@ -0,0 +1,15 @@ +## items Type + +`string` ([Address](definitions-definitions-address.md)) + +## items Constraints + +**pattern**: the string must match the following regular expression: + +```regexp +^0x[a-fA-F0-9]{40}$ +``` + +[try pattern](https://regexr.com/?expression=%5E0x%5Ba-fA-F0-9%5D%7B40%7D%24 "try regular expression with regexr.com") + +**URI reference**: the string must be a URI reference, according to [RFC 3986](https://tools.ietf.org/html/rfc3986 "check the specification") diff --git a/src/types/docs/definitions-definitions-autotask-properties-name.md b/src/types/docs/definitions-definitions-autotask-properties-name.md new file mode 100644 index 0000000..141700b --- /dev/null +++ b/src/types/docs/definitions-definitions-autotask-properties-name.md @@ -0,0 +1,3 @@ +## name Type + +`string` diff --git a/src/types/docs/definitions-definitions-autotask-properties-path.md b/src/types/docs/definitions-definitions-autotask-properties-path.md new file mode 100644 index 0000000..19b12be --- /dev/null +++ b/src/types/docs/definitions-definitions-autotask-properties-path.md @@ -0,0 +1,3 @@ +## path Type + +`string` diff --git a/src/types/docs/definitions-definitions-autotask-properties-paused.md b/src/types/docs/definitions-definitions-autotask-properties-paused.md new file mode 100644 index 0000000..00a4467 --- /dev/null +++ b/src/types/docs/definitions-definitions-autotask-properties-paused.md @@ -0,0 +1,3 @@ +## paused Type + +`boolean` diff --git a/src/types/docs/definitions-definitions-autotask-properties-trigger-else.md b/src/types/docs/definitions-definitions-autotask-properties-trigger-else.md new file mode 100644 index 0000000..bd36bdf --- /dev/null +++ b/src/types/docs/definitions-definitions-autotask-properties-trigger-else.md @@ -0,0 +1,3 @@ +## else Type + +unknown diff --git a/src/types/docs/definitions-definitions-autotask-properties-trigger-if-properties-type.md b/src/types/docs/definitions-definitions-autotask-properties-trigger-if-properties-type.md new file mode 100644 index 0000000..1368a3c --- /dev/null +++ b/src/types/docs/definitions-definitions-autotask-properties-trigger-if-properties-type.md @@ -0,0 +1,11 @@ +## type Type + +unknown + +## type Constraints + +**constant**: the value of this property must be equal to: + +```json +"schedule" +``` diff --git a/src/types/docs/definitions-definitions-autotask-properties-trigger-if-properties.md b/src/types/docs/definitions-definitions-autotask-properties-trigger-if-properties.md new file mode 100644 index 0000000..c89940c --- /dev/null +++ b/src/types/docs/definitions-definitions-autotask-properties-trigger-if-properties.md @@ -0,0 +1,3 @@ +## properties Type + +unknown diff --git a/src/types/docs/definitions-definitions-autotask-properties-trigger-if.md b/src/types/docs/definitions-definitions-autotask-properties-trigger-if.md new file mode 100644 index 0000000..16ca430 --- /dev/null +++ b/src/types/docs/definitions-definitions-autotask-properties-trigger-if.md @@ -0,0 +1,35 @@ +## if Type + +unknown + +# if Properties + +| Property | Type | Required | Nullable | Defined by | +| :------------ | :------------ | :------- | :------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| [type](#type) | Not specified | Optional | cannot be null | [Definitions](definitions-definitions-autotask-properties-trigger-if-properties-type.md "#/definitions/autotask/properties/trigger/if/properties/type") | + +## type + + + +`type` + +* is optional + +* Type: unknown + +* cannot be null + +* defined in: [Definitions](definitions-definitions-autotask-properties-trigger-if-properties-type.md "#/definitions/autotask/properties/trigger/if/properties/type") + +### type Type + +unknown + +### type Constraints + +**constant**: the value of this property must be equal to: + +```json +"schedule" +``` diff --git a/src/types/docs/definitions-definitions-autotask-properties-trigger-properties-triggercron.md b/src/types/docs/definitions-definitions-autotask-properties-trigger-properties-triggercron.md new file mode 100644 index 0000000..10463ac --- /dev/null +++ b/src/types/docs/definitions-definitions-autotask-properties-trigger-properties-triggercron.md @@ -0,0 +1,3 @@ +## cron Type + +`string` ([TriggerCron](definitions-definitions-autotask-properties-trigger-properties-triggercron.md)) diff --git a/src/types/docs/definitions-definitions-autotask-properties-trigger-properties-triggerfrequency.md b/src/types/docs/definitions-definitions-autotask-properties-trigger-properties-triggerfrequency.md new file mode 100644 index 0000000..c83d631 --- /dev/null +++ b/src/types/docs/definitions-definitions-autotask-properties-trigger-properties-triggerfrequency.md @@ -0,0 +1,3 @@ +## frequency Type + +`integer` ([TriggerFrequency](definitions-definitions-autotask-properties-trigger-properties-triggerfrequency.md)) diff --git a/src/types/docs/definitions-definitions-autotask-properties-trigger-properties-triggertype.md b/src/types/docs/definitions-definitions-autotask-properties-trigger-properties-triggertype.md new file mode 100644 index 0000000..94576fa --- /dev/null +++ b/src/types/docs/definitions-definitions-autotask-properties-trigger-properties-triggertype.md @@ -0,0 +1,12 @@ +## type Type + +`string` ([TriggerType](definitions-definitions-autotask-properties-trigger-properties-triggertype.md)) + +## type Constraints + +**enum**: the value of this property must be equal to one of the following values: + +| Value | Explanation | +| :----------- | :---------- | +| `"schedule"` | | +| `"webhook"` | | diff --git a/src/types/docs/definitions-definitions-autotask-properties-trigger-then-oneof-0.md b/src/types/docs/definitions-definitions-autotask-properties-trigger-then-oneof-0.md new file mode 100644 index 0000000..d22a257 --- /dev/null +++ b/src/types/docs/definitions-definitions-autotask-properties-trigger-then-oneof-0.md @@ -0,0 +1,3 @@ +## 0 Type + +unknown diff --git a/src/types/docs/definitions-definitions-autotask-properties-trigger-then-oneof-1.md b/src/types/docs/definitions-definitions-autotask-properties-trigger-then-oneof-1.md new file mode 100644 index 0000000..19f8d24 --- /dev/null +++ b/src/types/docs/definitions-definitions-autotask-properties-trigger-then-oneof-1.md @@ -0,0 +1,3 @@ +## 1 Type + +unknown diff --git a/src/types/docs/definitions-definitions-autotask-properties-trigger-then.md b/src/types/docs/definitions-definitions-autotask-properties-trigger-then.md new file mode 100644 index 0000000..f2bf850 --- /dev/null +++ b/src/types/docs/definitions-definitions-autotask-properties-trigger-then.md @@ -0,0 +1,9 @@ +## then Type + +merged type ([Details](definitions-definitions-autotask-properties-trigger-then.md)) + +one (and only one) of + +* [Untitled type in Definitions](definitions-definitions-autotask-properties-trigger-then-oneof-0.md "check type definition") + +* [Untitled type in Definitions](definitions-definitions-autotask-properties-trigger-then-oneof-1.md "check type definition") diff --git a/src/types/docs/definitions-definitions-autotask-properties-trigger.md b/src/types/docs/definitions-definitions-autotask-properties-trigger.md new file mode 100644 index 0000000..6022dce --- /dev/null +++ b/src/types/docs/definitions-definitions-autotask-properties-trigger.md @@ -0,0 +1,74 @@ +## trigger Type + +`object` ([Trigger](definitions-definitions-autotask-properties-trigger.md)) + +# trigger Properties + +| Property | Type | Required | Nullable | Defined by | +| :---------------------- | :-------- | :------- | :------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| [type](#type) | `string` | Required | cannot be null | [Definitions](definitions-definitions-autotask-properties-trigger-properties-triggertype.md "#/definitions/autotask/properties/trigger/properties/type") | +| [cron](#cron) | `string` | Optional | cannot be null | [Definitions](definitions-definitions-autotask-properties-trigger-properties-triggercron.md "#/definitions/autotask/properties/trigger/properties/cron") | +| [frequency](#frequency) | `integer` | Optional | cannot be null | [Definitions](definitions-definitions-autotask-properties-trigger-properties-triggerfrequency.md "#/definitions/autotask/properties/trigger/properties/frequency") | + +## type + + + +`type` + +* is required + +* Type: `string` ([TriggerType](definitions-definitions-autotask-properties-trigger-properties-triggertype.md)) + +* cannot be null + +* defined in: [Definitions](definitions-definitions-autotask-properties-trigger-properties-triggertype.md "#/definitions/autotask/properties/trigger/properties/type") + +### type Type + +`string` ([TriggerType](definitions-definitions-autotask-properties-trigger-properties-triggertype.md)) + +### type Constraints + +**enum**: the value of this property must be equal to one of the following values: + +| Value | Explanation | +| :----------- | :---------- | +| `"schedule"` | | +| `"webhook"` | | + +## cron + + + +`cron` + +* is optional + +* Type: `string` ([TriggerCron](definitions-definitions-autotask-properties-trigger-properties-triggercron.md)) + +* cannot be null + +* defined in: [Definitions](definitions-definitions-autotask-properties-trigger-properties-triggercron.md "#/definitions/autotask/properties/trigger/properties/cron") + +### cron Type + +`string` ([TriggerCron](definitions-definitions-autotask-properties-trigger-properties-triggercron.md)) + +## frequency + + + +`frequency` + +* is optional + +* Type: `integer` ([TriggerFrequency](definitions-definitions-autotask-properties-trigger-properties-triggerfrequency.md)) + +* cannot be null + +* defined in: [Definitions](definitions-definitions-autotask-properties-trigger-properties-triggerfrequency.md "#/definitions/autotask/properties/trigger/properties/frequency") + +### frequency Type + +`integer` ([TriggerFrequency](definitions-definitions-autotask-properties-trigger-properties-triggerfrequency.md)) diff --git a/src/types/docs/definitions-definitions-autotask.md b/src/types/docs/definitions-definitions-autotask.md new file mode 100644 index 0000000..d6371e7 --- /dev/null +++ b/src/types/docs/definitions-definitions-autotask.md @@ -0,0 +1,107 @@ +## autotask Type + +`object` ([Autotask](definitions-definitions-autotask.md)) + +# autotask Properties + +| Property | Type | Required | Nullable | Defined by | +| :------------------ | :-------- | :------- | :------------- | :------------------------------------------------------------------------------------------------------------------------- | +| [name](#name) | `string` | Required | cannot be null | [Definitions](definitions-definitions-autotask-properties-name.md "#/definitions/autotask/properties/name") | +| [path](#path) | `string` | Required | cannot be null | [Definitions](definitions-definitions-autotask-properties-path.md "#/definitions/autotask/properties/path") | +| [relayer](#relayer) | `object` | Optional | cannot be null | [Definitions](definitions-definitions-relayer.md "#/definitions/autotask/properties/relayer") | +| [trigger](#trigger) | `object` | Required | cannot be null | [Definitions](definitions-definitions-autotask-properties-trigger.md "#/definitions/autotask/properties/trigger") | +| [paused](#paused) | `boolean` | Required | cannot be null | [Definitions](definitions-definitions-autotask-properties-paused.md "#/definitions/autotask/properties/paused") | + +## name + + + +`name` + +* is required + +* Type: `string` + +* cannot be null + +* defined in: [Definitions](definitions-definitions-autotask-properties-name.md "#/definitions/autotask/properties/name") + +### name Type + +`string` + +## path + + + +`path` + +* is required + +* Type: `string` + +* cannot be null + +* defined in: [Definitions](definitions-definitions-autotask-properties-path.md "#/definitions/autotask/properties/path") + +### path Type + +`string` + +## relayer + + + +`relayer` + +* is optional + +* Type: `object` ([Relayer](definitions-definitions-relayer.md)) + +* cannot be null + +* defined in: [Definitions](definitions-definitions-relayer.md "#/definitions/autotask/properties/relayer") + +### relayer Type + +`object` ([Relayer](definitions-definitions-relayer.md)) + +### relayer Constraints + +**URI reference**: the string must be a URI reference, according to [RFC 3986](https://tools.ietf.org/html/rfc3986 "check the specification") + +## trigger + + + +`trigger` + +* is required + +* Type: `object` ([Trigger](definitions-definitions-autotask-properties-trigger.md)) + +* cannot be null + +* defined in: [Definitions](definitions-definitions-autotask-properties-trigger.md "#/definitions/autotask/properties/trigger") + +### trigger Type + +`object` ([Trigger](definitions-definitions-autotask-properties-trigger.md)) + +## paused + + + +`paused` + +* is required + +* Type: `boolean` + +* cannot be null + +* defined in: [Definitions](definitions-definitions-autotask-properties-paused.md "#/definitions/autotask/properties/paused") + +### paused Type + +`boolean` diff --git a/src/types/docs/definitions-definitions-blockexplorerapikey-properties-key.md b/src/types/docs/definitions-definitions-blockexplorerapikey-properties-key.md new file mode 100644 index 0000000..d78348b --- /dev/null +++ b/src/types/docs/definitions-definitions-blockexplorerapikey-properties-key.md @@ -0,0 +1,3 @@ +## key Type + +`string` diff --git a/src/types/docs/definitions-definitions-blockexplorerapikey.md b/src/types/docs/definitions-definitions-blockexplorerapikey.md new file mode 100644 index 0000000..2876c6f --- /dev/null +++ b/src/types/docs/definitions-definitions-blockexplorerapikey.md @@ -0,0 +1,100 @@ +## additionalProperties Type + +`object` ([BlockExplorerApiKey](definitions-definitions-blockexplorerapikey.md)) + +## additionalProperties Constraints + +**URI reference**: the string must be a URI reference, according to [RFC 3986](https://tools.ietf.org/html/rfc3986 "check the specification") + +# additionalProperties Properties + +| Property | Type | Required | Nullable | Defined by | +| :------------------ | :------- | :------- | :------------- | :--------------------------------------------------------------------------------------------------------------------------------------- | +| [key](#key) | `string` | Required | cannot be null | [Definitions](definitions-definitions-blockexplorerapikey-properties-key.md "#/definitions/blockExplorerApiKey/properties/key") | +| [network](#network) | `string` | Required | cannot be null | [Definitions](definitions-definitions-network.md "#/definitions/blockExplorerApiKey/properties/network") | + +## key + + + +`key` + +* is required + +* Type: `string` + +* cannot be null + +* defined in: [Definitions](definitions-definitions-blockexplorerapikey-properties-key.md "#/definitions/blockExplorerApiKey/properties/key") + +### key Type + +`string` + +## network + + + +`network` + +* is required + +* Type: `string` ([Network](definitions-definitions-network.md)) + +* cannot be null + +* defined in: [Definitions](definitions-definitions-network.md "#/definitions/blockExplorerApiKey/properties/network") + +### network Type + +`string` ([Network](definitions-definitions-network.md)) + +### network Constraints + +**enum**: the value of this property must be equal to one of the following values: + +| Value | Explanation | +| :------------------------ | :---------- | +| `"mainnet"` | | +| `"sepolia"` | | +| `"rinkeby"` | | +| `"ropsten"` | | +| `"kovan"` | | +| `"goerli"` | | +| `"xdai"` | | +| `"sokol"` | | +| `"fuse"` | | +| `"bsc"` | | +| `"bsctest"` | | +| `"fantom"` | | +| `"fantomtest"` | | +| `"moonbase"` | | +| `"moonriver"` | | +| `"moonbeam"` | | +| `"matic"` | | +| `"mumbai"` | | +| `"avalanche"` | | +| `"fuji"` | | +| `"optimism"` | | +| `"optimism-kovan"` | | +| `"optimism-goerli"` | | +| `"arbitrum"` | | +| `"arbitrum-nova"` | | +| `"arbitrum-rinkeby"` | | +| `"arbitrum-goerli"` | | +| `"celo"` | | +| `"alfajores"` | | +| `"harmony-s0"` | | +| `"harmony-test-s0"` | | +| `"aurora"` | | +| `"auroratest"` | | +| `"hedera"` | | +| `"hederatest"` | | +| `"x-dfk-avax-chain"` | | +| `"x-dfk-avax-chain-test"` | | +| `"zksync"` | | +| `"zksync-goerli"` | | +| `"base-goerli"` | | +| `"linea-goerli"` | | + +**URI reference**: the string must be a URI reference, according to [RFC 3986](https://tools.ietf.org/html/rfc3986 "check the specification") diff --git a/src/types/docs/definitions-definitions-blocksentinel-properties-addresses.md b/src/types/docs/definitions-definitions-blocksentinel-properties-addresses.md new file mode 100644 index 0000000..80735fa --- /dev/null +++ b/src/types/docs/definitions-definitions-blocksentinel-properties-addresses.md @@ -0,0 +1,3 @@ +## addresses Type + +`string[]` ([Address](definitions-definitions-address.md)) diff --git a/src/types/docs/definitions-definitions-blocksentinel-properties-alertthreshold-properties-amount.md b/src/types/docs/definitions-definitions-blocksentinel-properties-alertthreshold-properties-amount.md new file mode 100644 index 0000000..068a75f --- /dev/null +++ b/src/types/docs/definitions-definitions-blocksentinel-properties-alertthreshold-properties-amount.md @@ -0,0 +1,3 @@ +## amount Type + +`integer` diff --git a/src/types/docs/definitions-definitions-blocksentinel-properties-alertthreshold-properties-window-seconds.md b/src/types/docs/definitions-definitions-blocksentinel-properties-alertthreshold-properties-window-seconds.md new file mode 100644 index 0000000..2c65f5f --- /dev/null +++ b/src/types/docs/definitions-definitions-blocksentinel-properties-alertthreshold-properties-window-seconds.md @@ -0,0 +1,3 @@ +## window-seconds Type + +`integer` diff --git a/src/types/docs/definitions-definitions-blocksentinel-properties-alertthreshold.md b/src/types/docs/definitions-definitions-blocksentinel-properties-alertthreshold.md new file mode 100644 index 0000000..8090b3b --- /dev/null +++ b/src/types/docs/definitions-definitions-blocksentinel-properties-alertthreshold.md @@ -0,0 +1,46 @@ +## alert-threshold Type + +`object` ([AlertThreshold](definitions-definitions-blocksentinel-properties-alertthreshold.md)) + +# alert-threshold Properties + +| Property | Type | Required | Nullable | Defined by | +| :-------------------------------- | :-------- | :------- | :------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| [amount](#amount) | `integer` | Optional | cannot be null | [Definitions](definitions-definitions-blocksentinel-properties-alertthreshold-properties-amount.md "#/definitions/blockSentinel/properties/alert-threshold/properties/amount") | +| [window-seconds](#window-seconds) | `integer` | Optional | cannot be null | [Definitions](definitions-definitions-blocksentinel-properties-alertthreshold-properties-window-seconds.md "#/definitions/blockSentinel/properties/alert-threshold/properties/window-seconds") | + +## amount + + + +`amount` + +* is optional + +* Type: `integer` + +* cannot be null + +* defined in: [Definitions](definitions-definitions-blocksentinel-properties-alertthreshold-properties-amount.md "#/definitions/blockSentinel/properties/alert-threshold/properties/amount") + +### amount Type + +`integer` + +## window-seconds + + + +`window-seconds` + +* is optional + +* Type: `integer` + +* cannot be null + +* defined in: [Definitions](definitions-definitions-blocksentinel-properties-alertthreshold-properties-window-seconds.md "#/definitions/blockSentinel/properties/alert-threshold/properties/window-seconds") + +### window-seconds Type + +`integer` diff --git a/src/types/docs/definitions-definitions-blocksentinel-properties-conditions-properties-event-eventitems-properties-expression.md b/src/types/docs/definitions-definitions-blocksentinel-properties-conditions-properties-event-eventitems-properties-expression.md new file mode 100644 index 0000000..d96a315 --- /dev/null +++ b/src/types/docs/definitions-definitions-blocksentinel-properties-conditions-properties-event-eventitems-properties-expression.md @@ -0,0 +1,3 @@ +## expression Type + +`string` diff --git a/src/types/docs/definitions-definitions-blocksentinel-properties-conditions-properties-event-eventitems-properties-signature.md b/src/types/docs/definitions-definitions-blocksentinel-properties-conditions-properties-event-eventitems-properties-signature.md new file mode 100644 index 0000000..5110624 --- /dev/null +++ b/src/types/docs/definitions-definitions-blocksentinel-properties-conditions-properties-event-eventitems-properties-signature.md @@ -0,0 +1,3 @@ +## signature Type + +`string` diff --git a/src/types/docs/definitions-definitions-blocksentinel-properties-conditions-properties-event-eventitems.md b/src/types/docs/definitions-definitions-blocksentinel-properties-conditions-properties-event-eventitems.md new file mode 100644 index 0000000..59a00e7 --- /dev/null +++ b/src/types/docs/definitions-definitions-blocksentinel-properties-conditions-properties-event-eventitems.md @@ -0,0 +1,46 @@ +## items Type + +`object` ([EventItems](definitions-definitions-blocksentinel-properties-conditions-properties-event-eventitems.md)) + +# items Properties + +| Property | Type | Required | Nullable | Defined by | +| :------------------------ | :------- | :------- | :------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| [signature](#signature) | `string` | Required | cannot be null | [Definitions](definitions-definitions-blocksentinel-properties-conditions-properties-event-eventitems-properties-signature.md "#/definitions/blockSentinel/properties/conditions/properties/event/items/properties/signature") | +| [expression](#expression) | `string` | Optional | cannot be null | [Definitions](definitions-definitions-blocksentinel-properties-conditions-properties-event-eventitems-properties-expression.md "#/definitions/blockSentinel/properties/conditions/properties/event/items/properties/expression") | + +## signature + + + +`signature` + +* is required + +* Type: `string` + +* cannot be null + +* defined in: [Definitions](definitions-definitions-blocksentinel-properties-conditions-properties-event-eventitems-properties-signature.md "#/definitions/blockSentinel/properties/conditions/properties/event/items/properties/signature") + +### signature Type + +`string` + +## expression + + + +`expression` + +* is optional + +* Type: `string` + +* cannot be null + +* defined in: [Definitions](definitions-definitions-blocksentinel-properties-conditions-properties-event-eventitems-properties-expression.md "#/definitions/blockSentinel/properties/conditions/properties/event/items/properties/expression") + +### expression Type + +`string` diff --git a/src/types/docs/definitions-definitions-blocksentinel-properties-conditions-properties-event.md b/src/types/docs/definitions-definitions-blocksentinel-properties-conditions-properties-event.md new file mode 100644 index 0000000..b0ffd61 --- /dev/null +++ b/src/types/docs/definitions-definitions-blocksentinel-properties-conditions-properties-event.md @@ -0,0 +1,3 @@ +## event Type + +`object[]` ([EventItems](definitions-definitions-blocksentinel-properties-conditions-properties-event-eventitems.md)) diff --git a/src/types/docs/definitions-definitions-blocksentinel-properties-conditions-properties-function-functionitems-properties-expression.md b/src/types/docs/definitions-definitions-blocksentinel-properties-conditions-properties-function-functionitems-properties-expression.md new file mode 100644 index 0000000..d96a315 --- /dev/null +++ b/src/types/docs/definitions-definitions-blocksentinel-properties-conditions-properties-function-functionitems-properties-expression.md @@ -0,0 +1,3 @@ +## expression Type + +`string` diff --git a/src/types/docs/definitions-definitions-blocksentinel-properties-conditions-properties-function-functionitems-properties-signature.md b/src/types/docs/definitions-definitions-blocksentinel-properties-conditions-properties-function-functionitems-properties-signature.md new file mode 100644 index 0000000..5110624 --- /dev/null +++ b/src/types/docs/definitions-definitions-blocksentinel-properties-conditions-properties-function-functionitems-properties-signature.md @@ -0,0 +1,3 @@ +## signature Type + +`string` diff --git a/src/types/docs/definitions-definitions-blocksentinel-properties-conditions-properties-function-functionitems.md b/src/types/docs/definitions-definitions-blocksentinel-properties-conditions-properties-function-functionitems.md new file mode 100644 index 0000000..78a6a23 --- /dev/null +++ b/src/types/docs/definitions-definitions-blocksentinel-properties-conditions-properties-function-functionitems.md @@ -0,0 +1,46 @@ +## items Type + +`object` ([FunctionItems](definitions-definitions-blocksentinel-properties-conditions-properties-function-functionitems.md)) + +# items Properties + +| Property | Type | Required | Nullable | Defined by | +| :------------------------ | :------- | :------- | :------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| [signature](#signature) | `string` | Required | cannot be null | [Definitions](definitions-definitions-blocksentinel-properties-conditions-properties-function-functionitems-properties-signature.md "#/definitions/blockSentinel/properties/conditions/properties/function/items/properties/signature") | +| [expression](#expression) | `string` | Optional | cannot be null | [Definitions](definitions-definitions-blocksentinel-properties-conditions-properties-function-functionitems-properties-expression.md "#/definitions/blockSentinel/properties/conditions/properties/function/items/properties/expression") | + +## signature + + + +`signature` + +* is required + +* Type: `string` + +* cannot be null + +* defined in: [Definitions](definitions-definitions-blocksentinel-properties-conditions-properties-function-functionitems-properties-signature.md "#/definitions/blockSentinel/properties/conditions/properties/function/items/properties/signature") + +### signature Type + +`string` + +## expression + + + +`expression` + +* is optional + +* Type: `string` + +* cannot be null + +* defined in: [Definitions](definitions-definitions-blocksentinel-properties-conditions-properties-function-functionitems-properties-expression.md "#/definitions/blockSentinel/properties/conditions/properties/function/items/properties/expression") + +### expression Type + +`string` diff --git a/src/types/docs/definitions-definitions-blocksentinel-properties-conditions-properties-function.md b/src/types/docs/definitions-definitions-blocksentinel-properties-conditions-properties-function.md new file mode 100644 index 0000000..abaeac7 --- /dev/null +++ b/src/types/docs/definitions-definitions-blocksentinel-properties-conditions-properties-function.md @@ -0,0 +1,3 @@ +## function Type + +`object[]` ([FunctionItems](definitions-definitions-blocksentinel-properties-conditions-properties-function-functionitems.md)) diff --git a/src/types/docs/definitions-definitions-blocksentinel-properties-conditions-properties-transaction.md b/src/types/docs/definitions-definitions-blocksentinel-properties-conditions-properties-transaction.md new file mode 100644 index 0000000..a63e7a4 --- /dev/null +++ b/src/types/docs/definitions-definitions-blocksentinel-properties-conditions-properties-transaction.md @@ -0,0 +1,3 @@ +## transaction Type + +`string` diff --git a/src/types/docs/definitions-definitions-blocksentinel-properties-conditions.md b/src/types/docs/definitions-definitions-blocksentinel-properties-conditions.md new file mode 100644 index 0000000..78b3f6c --- /dev/null +++ b/src/types/docs/definitions-definitions-blocksentinel-properties-conditions.md @@ -0,0 +1,65 @@ +## conditions Type + +`object` ([Conditions](definitions-definitions-blocksentinel-properties-conditions.md)) + +# conditions Properties + +| Property | Type | Required | Nullable | Defined by | +| :-------------------------- | :------- | :------- | :------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| [event](#event) | `array` | Optional | cannot be null | [Definitions](definitions-definitions-blocksentinel-properties-conditions-properties-event.md "#/definitions/blockSentinel/properties/conditions/properties/event") | +| [function](#function) | `array` | Optional | cannot be null | [Definitions](definitions-definitions-blocksentinel-properties-conditions-properties-function.md "#/definitions/blockSentinel/properties/conditions/properties/function") | +| [transaction](#transaction) | `string` | Optional | cannot be null | [Definitions](definitions-definitions-blocksentinel-properties-conditions-properties-transaction.md "#/definitions/blockSentinel/properties/conditions/properties/transaction") | + +## event + + + +`event` + +* is optional + +* Type: `object[]` ([EventItems](definitions-definitions-blocksentinel-properties-conditions-properties-event-eventitems.md)) + +* cannot be null + +* defined in: [Definitions](definitions-definitions-blocksentinel-properties-conditions-properties-event.md "#/definitions/blockSentinel/properties/conditions/properties/event") + +### event Type + +`object[]` ([EventItems](definitions-definitions-blocksentinel-properties-conditions-properties-event-eventitems.md)) + +## function + + + +`function` + +* is optional + +* Type: `object[]` ([FunctionItems](definitions-definitions-blocksentinel-properties-conditions-properties-function-functionitems.md)) + +* cannot be null + +* defined in: [Definitions](definitions-definitions-blocksentinel-properties-conditions-properties-function.md "#/definitions/blockSentinel/properties/conditions/properties/function") + +### function Type + +`object[]` ([FunctionItems](definitions-definitions-blocksentinel-properties-conditions-properties-function-functionitems.md)) + +## transaction + + + +`transaction` + +* is optional + +* Type: `string` + +* cannot be null + +* defined in: [Definitions](definitions-definitions-blocksentinel-properties-conditions-properties-transaction.md "#/definitions/blockSentinel/properties/conditions/properties/transaction") + +### transaction Type + +`string` diff --git a/src/types/docs/definitions-definitions-blocksentinel-properties-confirm-level-oneof-0.md b/src/types/docs/definitions-definitions-blocksentinel-properties-confirm-level-oneof-0.md new file mode 100644 index 0000000..a1be76a --- /dev/null +++ b/src/types/docs/definitions-definitions-blocksentinel-properties-confirm-level-oneof-0.md @@ -0,0 +1,12 @@ +## 0 Type + +`string` + +## 0 Constraints + +**enum**: the value of this property must be equal to one of the following values: + +| Value | Explanation | +| :------------ | :---------- | +| `"safe"` | | +| `"finalized"` | | diff --git a/src/types/docs/definitions-definitions-blocksentinel-properties-confirm-level-oneof-1.md b/src/types/docs/definitions-definitions-blocksentinel-properties-confirm-level-oneof-1.md new file mode 100644 index 0000000..68894e1 --- /dev/null +++ b/src/types/docs/definitions-definitions-blocksentinel-properties-confirm-level-oneof-1.md @@ -0,0 +1,3 @@ +## 1 Type + +`integer` diff --git a/src/types/docs/definitions-definitions-blocksentinel-properties-confirm-level.md b/src/types/docs/definitions-definitions-blocksentinel-properties-confirm-level.md new file mode 100644 index 0000000..52cea6c --- /dev/null +++ b/src/types/docs/definitions-definitions-blocksentinel-properties-confirm-level.md @@ -0,0 +1,9 @@ +## confirm-level Type + +merged type ([Details](definitions-definitions-blocksentinel-properties-confirm-level.md)) + +one (and only one) of + +* [Untitled string in Definitions](definitions-definitions-blocksentinel-properties-confirm-level-oneof-0.md "check type definition") + +* [Untitled integer in Definitions](definitions-definitions-blocksentinel-properties-confirm-level-oneof-1.md "check type definition") diff --git a/src/types/docs/definitions-definitions-blocksentinel-properties-name.md b/src/types/docs/definitions-definitions-blocksentinel-properties-name.md new file mode 100644 index 0000000..141700b --- /dev/null +++ b/src/types/docs/definitions-definitions-blocksentinel-properties-name.md @@ -0,0 +1,3 @@ +## name Type + +`string` diff --git a/src/types/docs/definitions-definitions-blocksentinel-properties-notifyconfig-properties-channels.md b/src/types/docs/definitions-definitions-blocksentinel-properties-notifyconfig-properties-channels.md new file mode 100644 index 0000000..94ce5fd --- /dev/null +++ b/src/types/docs/definitions-definitions-blocksentinel-properties-notifyconfig-properties-channels.md @@ -0,0 +1,3 @@ +## channels Type + +`object[]` ([Notification](definitions-definitions-notification.md)) diff --git a/src/types/docs/definitions-definitions-blocksentinel-properties-notifyconfig-properties-message.md b/src/types/docs/definitions-definitions-blocksentinel-properties-notifyconfig-properties-message.md new file mode 100644 index 0000000..4ffe867 --- /dev/null +++ b/src/types/docs/definitions-definitions-blocksentinel-properties-notifyconfig-properties-message.md @@ -0,0 +1,3 @@ +## message Type + +`string` diff --git a/src/types/docs/definitions-definitions-blocksentinel-properties-notifyconfig-properties-timeout.md b/src/types/docs/definitions-definitions-blocksentinel-properties-notifyconfig-properties-timeout.md new file mode 100644 index 0000000..0324859 --- /dev/null +++ b/src/types/docs/definitions-definitions-blocksentinel-properties-notifyconfig-properties-timeout.md @@ -0,0 +1,3 @@ +## timeout Type + +`integer` diff --git a/src/types/docs/definitions-definitions-blocksentinel-properties-notifyconfig.md b/src/types/docs/definitions-definitions-blocksentinel-properties-notifyconfig.md new file mode 100644 index 0000000..32a100f --- /dev/null +++ b/src/types/docs/definitions-definitions-blocksentinel-properties-notifyconfig.md @@ -0,0 +1,88 @@ +## notify-config Type + +`object` ([NotifyConfig](definitions-definitions-blocksentinel-properties-notifyconfig.md)) + +# notify-config Properties + +| Property | Type | Required | Nullable | Defined by | +| :-------------------- | :-------- | :------- | :------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| [timeout](#timeout) | `integer` | Optional | cannot be null | [Definitions](definitions-definitions-blocksentinel-properties-notifyconfig-properties-timeout.md "#/definitions/blockSentinel/properties/notify-config/properties/timeout") | +| [message](#message) | `string` | Optional | cannot be null | [Definitions](definitions-definitions-blocksentinel-properties-notifyconfig-properties-message.md "#/definitions/blockSentinel/properties/notify-config/properties/message") | +| [category](#category) | `object` | Optional | cannot be null | [Definitions](definitions-definitions-category.md "#/definitions/blockSentinel/properties/notify-config/properties/category") | +| [channels](#channels) | `array` | Required | cannot be null | [Definitions](definitions-definitions-blocksentinel-properties-notifyconfig-properties-channels.md "#/definitions/blockSentinel/properties/notify-config/properties/channels") | + +## timeout + + + +`timeout` + +* is optional + +* Type: `integer` + +* cannot be null + +* defined in: [Definitions](definitions-definitions-blocksentinel-properties-notifyconfig-properties-timeout.md "#/definitions/blockSentinel/properties/notify-config/properties/timeout") + +### timeout Type + +`integer` + +## message + + + +`message` + +* is optional + +* Type: `string` + +* cannot be null + +* defined in: [Definitions](definitions-definitions-blocksentinel-properties-notifyconfig-properties-message.md "#/definitions/blockSentinel/properties/notify-config/properties/message") + +### message Type + +`string` + +## category + + + +`category` + +* is optional + +* Type: `object` ([Category](definitions-definitions-category.md)) + +* cannot be null + +* defined in: [Definitions](definitions-definitions-category.md "#/definitions/blockSentinel/properties/notify-config/properties/category") + +### category Type + +`object` ([Category](definitions-definitions-category.md)) + +### category Constraints + +**URI reference**: the string must be a URI reference, according to [RFC 3986](https://tools.ietf.org/html/rfc3986 "check the specification") + +## channels + + + +`channels` + +* is required + +* Type: `object[]` ([Notification](definitions-definitions-notification.md)) + +* cannot be null + +* defined in: [Definitions](definitions-definitions-blocksentinel-properties-notifyconfig-properties-channels.md "#/definitions/blockSentinel/properties/notify-config/properties/channels") + +### channels Type + +`object[]` ([Notification](definitions-definitions-notification.md)) diff --git a/src/types/docs/definitions-definitions-blocksentinel-properties-paused.md b/src/types/docs/definitions-definitions-blocksentinel-properties-paused.md new file mode 100644 index 0000000..00a4467 --- /dev/null +++ b/src/types/docs/definitions-definitions-blocksentinel-properties-paused.md @@ -0,0 +1,3 @@ +## paused Type + +`boolean` diff --git a/src/types/docs/definitions-definitions-blocksentinel-properties-type.md b/src/types/docs/definitions-definitions-blocksentinel-properties-type.md new file mode 100644 index 0000000..cc2c7dd --- /dev/null +++ b/src/types/docs/definitions-definitions-blocksentinel-properties-type.md @@ -0,0 +1,11 @@ +## type Type + +`string` + +## type Constraints + +**enum**: the value of this property must be equal to one of the following values: + +| Value | Explanation | +| :-------- | :---------- | +| `"BLOCK"` | | diff --git a/src/types/docs/definitions-definitions-blocksentinel.md b/src/types/docs/definitions-definitions-blocksentinel.md new file mode 100644 index 0000000..f3e4e17 --- /dev/null +++ b/src/types/docs/definitions-definitions-blocksentinel.md @@ -0,0 +1,350 @@ +## 0 Type + +`object` ([BlockSentinel](definitions-definitions-blocksentinel.md)) + +## 0 Constraints + +**URI reference**: the string must be a URI reference, according to [RFC 3986](https://tools.ietf.org/html/rfc3986 "check the specification") + +# 0 Properties + +| Property | Type | Required | Nullable | Defined by | +| :---------------------------------------- | :-------- | :------- | :------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------- | +| [name](#name) | `string` | Required | cannot be null | [Definitions](definitions-definitions-blocksentinel-properties-name.md "#/definitions/blockSentinel/properties/name") | +| [type](#type) | `string` | Required | cannot be null | [Definitions](definitions-definitions-blocksentinel-properties-type.md "#/definitions/blockSentinel/properties/type") | +| [network](#network) | `string` | Required | cannot be null | [Definitions](definitions-definitions-network.md "#/definitions/blockSentinel/properties/network") | +| [addresses](#addresses) | `array` | Required | cannot be null | [Definitions](definitions-definitions-blocksentinel-properties-addresses.md "#/definitions/blockSentinel/properties/addresses") | +| [abi](#abi) | Merged | Optional | cannot be null | [Definitions](definitions-definitions-abitype.md "#/definitions/blockSentinel/properties/abi") | +| [alert-threshold](#alert-threshold) | `object` | Optional | cannot be null | [Definitions](definitions-definitions-blocksentinel-properties-alertthreshold.md "#/definitions/blockSentinel/properties/alert-threshold") | +| [paused](#paused) | `boolean` | Optional | cannot be null | [Definitions](definitions-definitions-blocksentinel-properties-paused.md "#/definitions/blockSentinel/properties/paused") | +| [autotask-condition](#autotask-condition) | `object` | Optional | cannot be null | [Definitions](definitions-definitions-autotask.md "#/definitions/blockSentinel/properties/autotask-condition") | +| [autotask-trigger](#autotask-trigger) | `object` | Optional | cannot be null | [Definitions](definitions-definitions-autotask.md "#/definitions/blockSentinel/properties/autotask-trigger") | +| [confirm-level](#confirm-level) | Merged | Optional | cannot be null | [Definitions](definitions-definitions-blocksentinel-properties-confirm-level.md "#/definitions/blockSentinel/properties/confirm-level") | +| [notify-config](#notify-config) | `object` | Required | cannot be null | [Definitions](definitions-definitions-blocksentinel-properties-notifyconfig.md "#/definitions/blockSentinel/properties/notify-config") | +| [conditions](#conditions) | `object` | Optional | cannot be null | [Definitions](definitions-definitions-blocksentinel-properties-conditions.md "#/definitions/blockSentinel/properties/conditions") | +| [risk-category](#risk-category) | `string` | Optional | cannot be null | [Definitions](definitions-definitions-riskcategory.md "#/definitions/blockSentinel/properties/risk-category") | + +## name + + + +`name` + +* is required + +* Type: `string` + +* cannot be null + +* defined in: [Definitions](definitions-definitions-blocksentinel-properties-name.md "#/definitions/blockSentinel/properties/name") + +### name Type + +`string` + +## type + + + +`type` + +* is required + +* Type: `string` + +* cannot be null + +* defined in: [Definitions](definitions-definitions-blocksentinel-properties-type.md "#/definitions/blockSentinel/properties/type") + +### type Type + +`string` + +### type Constraints + +**enum**: the value of this property must be equal to one of the following values: + +| Value | Explanation | +| :-------- | :---------- | +| `"BLOCK"` | | + +## network + + + +`network` + +* is required + +* Type: `string` ([Network](definitions-definitions-network.md)) + +* cannot be null + +* defined in: [Definitions](definitions-definitions-network.md "#/definitions/blockSentinel/properties/network") + +### network Type + +`string` ([Network](definitions-definitions-network.md)) + +### network Constraints + +**enum**: the value of this property must be equal to one of the following values: + +| Value | Explanation | +| :------------------------ | :---------- | +| `"mainnet"` | | +| `"sepolia"` | | +| `"rinkeby"` | | +| `"ropsten"` | | +| `"kovan"` | | +| `"goerli"` | | +| `"xdai"` | | +| `"sokol"` | | +| `"fuse"` | | +| `"bsc"` | | +| `"bsctest"` | | +| `"fantom"` | | +| `"fantomtest"` | | +| `"moonbase"` | | +| `"moonriver"` | | +| `"moonbeam"` | | +| `"matic"` | | +| `"mumbai"` | | +| `"avalanche"` | | +| `"fuji"` | | +| `"optimism"` | | +| `"optimism-kovan"` | | +| `"optimism-goerli"` | | +| `"arbitrum"` | | +| `"arbitrum-nova"` | | +| `"arbitrum-rinkeby"` | | +| `"arbitrum-goerli"` | | +| `"celo"` | | +| `"alfajores"` | | +| `"harmony-s0"` | | +| `"harmony-test-s0"` | | +| `"aurora"` | | +| `"auroratest"` | | +| `"hedera"` | | +| `"hederatest"` | | +| `"x-dfk-avax-chain"` | | +| `"x-dfk-avax-chain-test"` | | +| `"zksync"` | | +| `"zksync-goerli"` | | +| `"base-goerli"` | | +| `"linea-goerli"` | | + +**URI reference**: the string must be a URI reference, according to [RFC 3986](https://tools.ietf.org/html/rfc3986 "check the specification") + +## addresses + + + +`addresses` + +* is required + +* Type: `string[]` ([Address](definitions-definitions-address.md)) + +* cannot be null + +* defined in: [Definitions](definitions-definitions-blocksentinel-properties-addresses.md "#/definitions/blockSentinel/properties/addresses") + +### addresses Type + +`string[]` ([Address](definitions-definitions-address.md)) + +## abi + + + +`abi` + +* is optional + +* Type: merged type ([AbiType](definitions-definitions-abitype.md)) + +* cannot be null + +* defined in: [Definitions](definitions-definitions-abitype.md "#/definitions/blockSentinel/properties/abi") + +### abi Type + +merged type ([AbiType](definitions-definitions-abitype.md)) + +any of + +* [StringABI](definitions-definitions-abitype-anyof-stringabi.md "check type definition") + +* [ArrayABI](definitions-definitions-abitype-anyof-arrayabi.md "check type definition") + +## alert-threshold + + + +`alert-threshold` + +* is optional + +* Type: `object` ([AlertThreshold](definitions-definitions-blocksentinel-properties-alertthreshold.md)) + +* cannot be null + +* defined in: [Definitions](definitions-definitions-blocksentinel-properties-alertthreshold.md "#/definitions/blockSentinel/properties/alert-threshold") + +### alert-threshold Type + +`object` ([AlertThreshold](definitions-definitions-blocksentinel-properties-alertthreshold.md)) + +## paused + + + +`paused` + +* is optional + +* Type: `boolean` + +* cannot be null + +* defined in: [Definitions](definitions-definitions-blocksentinel-properties-paused.md "#/definitions/blockSentinel/properties/paused") + +### paused Type + +`boolean` + +## autotask-condition + + + +`autotask-condition` + +* is optional + +* Type: `object` ([Autotask](definitions-definitions-autotask.md)) + +* cannot be null + +* defined in: [Definitions](definitions-definitions-autotask.md "#/definitions/blockSentinel/properties/autotask-condition") + +### autotask-condition Type + +`object` ([Autotask](definitions-definitions-autotask.md)) + +### autotask-condition Constraints + +**URI reference**: the string must be a URI reference, according to [RFC 3986](https://tools.ietf.org/html/rfc3986 "check the specification") + +## autotask-trigger + + + +`autotask-trigger` + +* is optional + +* Type: `object` ([Autotask](definitions-definitions-autotask.md)) + +* cannot be null + +* defined in: [Definitions](definitions-definitions-autotask.md "#/definitions/blockSentinel/properties/autotask-trigger") + +### autotask-trigger Type + +`object` ([Autotask](definitions-definitions-autotask.md)) + +### autotask-trigger Constraints + +**URI reference**: the string must be a URI reference, according to [RFC 3986](https://tools.ietf.org/html/rfc3986 "check the specification") + +## confirm-level + + + +`confirm-level` + +* is optional + +* Type: merged type ([Details](definitions-definitions-blocksentinel-properties-confirm-level.md)) + +* cannot be null + +* defined in: [Definitions](definitions-definitions-blocksentinel-properties-confirm-level.md "#/definitions/blockSentinel/properties/confirm-level") + +### confirm-level Type + +merged type ([Details](definitions-definitions-blocksentinel-properties-confirm-level.md)) + +one (and only one) of + +* [Untitled string in Definitions](definitions-definitions-blocksentinel-properties-confirm-level-oneof-0.md "check type definition") + +* [Untitled integer in Definitions](definitions-definitions-blocksentinel-properties-confirm-level-oneof-1.md "check type definition") + +## notify-config + + + +`notify-config` + +* is required + +* Type: `object` ([NotifyConfig](definitions-definitions-blocksentinel-properties-notifyconfig.md)) + +* cannot be null + +* defined in: [Definitions](definitions-definitions-blocksentinel-properties-notifyconfig.md "#/definitions/blockSentinel/properties/notify-config") + +### notify-config Type + +`object` ([NotifyConfig](definitions-definitions-blocksentinel-properties-notifyconfig.md)) + +## conditions + + + +`conditions` + +* is optional + +* Type: `object` ([Conditions](definitions-definitions-blocksentinel-properties-conditions.md)) + +* cannot be null + +* defined in: [Definitions](definitions-definitions-blocksentinel-properties-conditions.md "#/definitions/blockSentinel/properties/conditions") + +### conditions Type + +`object` ([Conditions](definitions-definitions-blocksentinel-properties-conditions.md)) + +## risk-category + + + +`risk-category` + +* is optional + +* Type: `string` ([RiskCategory](definitions-definitions-riskcategory.md)) + +* cannot be null + +* defined in: [Definitions](definitions-definitions-riskcategory.md "#/definitions/blockSentinel/properties/risk-category") + +### risk-category Type + +`string` ([RiskCategory](definitions-definitions-riskcategory.md)) + +### risk-category Constraints + +**enum**: the value of this property must be equal to one of the following values: + +| Value | Explanation | +| :----------------- | :---------- | +| `"NONE"` | | +| `"GOVERNANCE"` | | +| `"ACCESS-CONTROL"` | | +| `"SUSPICIOUS"` | | +| `"FINANCIAL"` | | +| `"TECHNICAL"` | | diff --git a/src/types/docs/definitions-definitions-category-properties-description.md b/src/types/docs/definitions-definitions-category-properties-description.md new file mode 100644 index 0000000..54236d2 --- /dev/null +++ b/src/types/docs/definitions-definitions-category-properties-description.md @@ -0,0 +1,3 @@ +## description Type + +`string` diff --git a/src/types/docs/definitions-definitions-category-properties-name.md b/src/types/docs/definitions-definitions-category-properties-name.md new file mode 100644 index 0000000..141700b --- /dev/null +++ b/src/types/docs/definitions-definitions-category-properties-name.md @@ -0,0 +1,3 @@ +## name Type + +`string` diff --git a/src/types/docs/definitions-definitions-category-properties-notificationids.md b/src/types/docs/definitions-definitions-category-properties-notificationids.md new file mode 100644 index 0000000..5a4901e --- /dev/null +++ b/src/types/docs/definitions-definitions-category-properties-notificationids.md @@ -0,0 +1,3 @@ +## notificationIds Type + +`object[]` ([Notification](definitions-definitions-notification.md)) diff --git a/src/types/docs/definitions-definitions-category.md b/src/types/docs/definitions-definitions-category.md new file mode 100644 index 0000000..ae9811b --- /dev/null +++ b/src/types/docs/definitions-definitions-category.md @@ -0,0 +1,69 @@ +## category Type + +`object` ([Category](definitions-definitions-category.md)) + +## category Constraints + +**URI reference**: the string must be a URI reference, according to [RFC 3986](https://tools.ietf.org/html/rfc3986 "check the specification") + +# category Properties + +| Property | Type | Required | Nullable | Defined by | +| :---------------------------------- | :------- | :------- | :------------- | :----------------------------------------------------------------------------------------------------------------------------------------- | +| [name](#name) | `string` | Required | cannot be null | [Definitions](definitions-definitions-category-properties-name.md "#/definitions/category/properties/name") | +| [description](#description) | `string` | Optional | cannot be null | [Definitions](definitions-definitions-category-properties-description.md "#/definitions/category/properties/description") | +| [notificationIds](#notificationids) | `array` | Optional | cannot be null | [Definitions](definitions-definitions-category-properties-notificationids.md "#/definitions/category/properties/notificationIds") | + +## name + + + +`name` + +* is required + +* Type: `string` + +* cannot be null + +* defined in: [Definitions](definitions-definitions-category-properties-name.md "#/definitions/category/properties/name") + +### name Type + +`string` + +## description + + + +`description` + +* is optional + +* Type: `string` + +* cannot be null + +* defined in: [Definitions](definitions-definitions-category-properties-description.md "#/definitions/category/properties/description") + +### description Type + +`string` + +## notificationIds + + + +`notificationIds` + +* is optional + +* Type: `object[]` ([Notification](definitions-definitions-notification.md)) + +* cannot be null + +* defined in: [Definitions](definitions-definitions-category-properties-notificationids.md "#/definitions/category/properties/notificationIds") + +### notificationIds Type + +`object[]` ([Notification](definitions-definitions-notification.md)) diff --git a/src/types/docs/definitions-definitions-contract-properties-name.md b/src/types/docs/definitions-definitions-contract-properties-name.md new file mode 100644 index 0000000..141700b --- /dev/null +++ b/src/types/docs/definitions-definitions-contract-properties-name.md @@ -0,0 +1,3 @@ +## name Type + +`string` diff --git a/src/types/docs/definitions-definitions-contract-properties-nat-spec.md b/src/types/docs/definitions-definitions-contract-properties-nat-spec.md new file mode 100644 index 0000000..3a0b7fa --- /dev/null +++ b/src/types/docs/definitions-definitions-contract-properties-nat-spec.md @@ -0,0 +1,3 @@ +## nat-spec Type + +`string` diff --git a/src/types/docs/definitions-definitions-contract.md b/src/types/docs/definitions-definitions-contract.md new file mode 100644 index 0000000..5404b15 --- /dev/null +++ b/src/types/docs/definitions-definitions-contract.md @@ -0,0 +1,175 @@ +## additionalProperties Type + +`object` ([Contract](definitions-definitions-contract.md)) + +## additionalProperties Constraints + +**URI reference**: the string must be a URI reference, according to [RFC 3986](https://tools.ietf.org/html/rfc3986 "check the specification") + +# additionalProperties Properties + +| Property | Type | Required | Nullable | Defined by | +| :-------------------- | :------- | :------- | :------------- | :--------------------------------------------------------------------------------------------------------------------------- | +| [name](#name) | `string` | Required | cannot be null | [Definitions](definitions-definitions-contract-properties-name.md "#/definitions/contract/properties/name") | +| [address](#address) | `string` | Required | cannot be null | [Definitions](definitions-definitions-address.md "#/definitions/contract/properties/address") | +| [network](#network) | `string` | Required | cannot be null | [Definitions](definitions-definitions-network.md "#/definitions/contract/properties/network") | +| [abi](#abi) | Merged | Optional | cannot be null | [Definitions](definitions-definitions-abitype.md "#/definitions/contract/properties/abi") | +| [nat-spec](#nat-spec) | `string` | Optional | cannot be null | [Definitions](definitions-definitions-contract-properties-nat-spec.md "#/definitions/contract/properties/nat-spec") | + +## name + + + +`name` + +* is required + +* Type: `string` + +* cannot be null + +* defined in: [Definitions](definitions-definitions-contract-properties-name.md "#/definitions/contract/properties/name") + +### name Type + +`string` + +## address + + + +`address` + +* is required + +* Type: `string` ([Address](definitions-definitions-address.md)) + +* cannot be null + +* defined in: [Definitions](definitions-definitions-address.md "#/definitions/contract/properties/address") + +### address Type + +`string` ([Address](definitions-definitions-address.md)) + +### address Constraints + +**pattern**: the string must match the following regular expression: + +```regexp +^0x[a-fA-F0-9]{40}$ +``` + +[try pattern](https://regexr.com/?expression=%5E0x%5Ba-fA-F0-9%5D%7B40%7D%24 "try regular expression with regexr.com") + +**URI reference**: the string must be a URI reference, according to [RFC 3986](https://tools.ietf.org/html/rfc3986 "check the specification") + +## network + + + +`network` + +* is required + +* Type: `string` ([Network](definitions-definitions-network.md)) + +* cannot be null + +* defined in: [Definitions](definitions-definitions-network.md "#/definitions/contract/properties/network") + +### network Type + +`string` ([Network](definitions-definitions-network.md)) + +### network Constraints + +**enum**: the value of this property must be equal to one of the following values: + +| Value | Explanation | +| :------------------------ | :---------- | +| `"mainnet"` | | +| `"sepolia"` | | +| `"rinkeby"` | | +| `"ropsten"` | | +| `"kovan"` | | +| `"goerli"` | | +| `"xdai"` | | +| `"sokol"` | | +| `"fuse"` | | +| `"bsc"` | | +| `"bsctest"` | | +| `"fantom"` | | +| `"fantomtest"` | | +| `"moonbase"` | | +| `"moonriver"` | | +| `"moonbeam"` | | +| `"matic"` | | +| `"mumbai"` | | +| `"avalanche"` | | +| `"fuji"` | | +| `"optimism"` | | +| `"optimism-kovan"` | | +| `"optimism-goerli"` | | +| `"arbitrum"` | | +| `"arbitrum-nova"` | | +| `"arbitrum-rinkeby"` | | +| `"arbitrum-goerli"` | | +| `"celo"` | | +| `"alfajores"` | | +| `"harmony-s0"` | | +| `"harmony-test-s0"` | | +| `"aurora"` | | +| `"auroratest"` | | +| `"hedera"` | | +| `"hederatest"` | | +| `"x-dfk-avax-chain"` | | +| `"x-dfk-avax-chain-test"` | | +| `"zksync"` | | +| `"zksync-goerli"` | | +| `"base-goerli"` | | +| `"linea-goerli"` | | + +**URI reference**: the string must be a URI reference, according to [RFC 3986](https://tools.ietf.org/html/rfc3986 "check the specification") + +## abi + + + +`abi` + +* is optional + +* Type: merged type ([AbiType](definitions-definitions-abitype.md)) + +* cannot be null + +* defined in: [Definitions](definitions-definitions-abitype.md "#/definitions/contract/properties/abi") + +### abi Type + +merged type ([AbiType](definitions-definitions-abitype.md)) + +any of + +* [StringABI](definitions-definitions-abitype-anyof-stringabi.md "check type definition") + +* [ArrayABI](definitions-definitions-abitype-anyof-arrayabi.md "check type definition") + +## nat-spec + + + +`nat-spec` + +* is optional + +* Type: `string` + +* cannot be null + +* defined in: [Definitions](definitions-definitions-contract-properties-nat-spec.md "#/definitions/contract/properties/nat-spec") + +### nat-spec Type + +`string` diff --git a/src/types/docs/definitions-definitions-datadogconfig-properties-api-key.md b/src/types/docs/definitions-definitions-datadogconfig-properties-api-key.md new file mode 100644 index 0000000..01bbd5f --- /dev/null +++ b/src/types/docs/definitions-definitions-datadogconfig-properties-api-key.md @@ -0,0 +1,3 @@ +## api-key Type + +`string` diff --git a/src/types/docs/definitions-definitions-datadogconfig-properties-metric-prefix.md b/src/types/docs/definitions-definitions-datadogconfig-properties-metric-prefix.md new file mode 100644 index 0000000..496e467 --- /dev/null +++ b/src/types/docs/definitions-definitions-datadogconfig-properties-metric-prefix.md @@ -0,0 +1,15 @@ +## metric-prefix Type + +`string` + +## metric-prefix Constraints + +**maximum length**: the maximum number of characters for this string is: `100` + +**pattern**: the string must match the following regular expression: + +```regexp +^[A-Za-z]+[A-Za-z0-9_\.]*\.$ +``` + +[try pattern](https://regexr.com/?expression=%5E%5BA-Za-z%5D%2B%5BA-Za-z0-9_%5C.%5D*%5C.%24 "try regular expression with regexr.com") diff --git a/src/types/docs/definitions-definitions-datadogconfig.md b/src/types/docs/definitions-definitions-datadogconfig.md new file mode 100644 index 0000000..ff1bf92 --- /dev/null +++ b/src/types/docs/definitions-definitions-datadogconfig.md @@ -0,0 +1,62 @@ +## 2 Type + +`object` ([DatadogConfig](definitions-definitions-datadogconfig.md)) + +## 2 Constraints + +**URI reference**: the string must be a URI reference, according to [RFC 3986](https://tools.ietf.org/html/rfc3986 "check the specification") + +# 2 Properties + +| Property | Type | Required | Nullable | Defined by | +| :------------------------------ | :------- | :------- | :------------- | :----------------------------------------------------------------------------------------------------------------------------------------------- | +| [api-key](#api-key) | `string` | Required | cannot be null | [Definitions](definitions-definitions-datadogconfig-properties-api-key.md "#/definitions/datadogConfig/properties/api-key") | +| [metric-prefix](#metric-prefix) | `string` | Required | cannot be null | [Definitions](definitions-definitions-datadogconfig-properties-metric-prefix.md "#/definitions/datadogConfig/properties/metric-prefix") | + +## api-key + + + +`api-key` + +* is required + +* Type: `string` + +* cannot be null + +* defined in: [Definitions](definitions-definitions-datadogconfig-properties-api-key.md "#/definitions/datadogConfig/properties/api-key") + +### api-key Type + +`string` + +## metric-prefix + + + +`metric-prefix` + +* is required + +* Type: `string` + +* cannot be null + +* defined in: [Definitions](definitions-definitions-datadogconfig-properties-metric-prefix.md "#/definitions/datadogConfig/properties/metric-prefix") + +### metric-prefix Type + +`string` + +### metric-prefix Constraints + +**maximum length**: the maximum number of characters for this string is: `100` + +**pattern**: the string must match the following regular expression: + +```regexp +^[A-Za-z]+[A-Za-z0-9_\.]*\.$ +``` + +[try pattern](https://regexr.com/?expression=%5E%5BA-Za-z%5D%2B%5BA-Za-z0-9_%5C.%5D*%5C.%24 "try regular expression with regexr.com") diff --git a/src/types/docs/definitions-definitions-deploymentconfig.md b/src/types/docs/definitions-definitions-deploymentconfig.md new file mode 100644 index 0000000..52de24b --- /dev/null +++ b/src/types/docs/definitions-definitions-deploymentconfig.md @@ -0,0 +1,35 @@ +## additionalProperties Type + +`object` ([DeploymentConfig](definitions-definitions-deploymentconfig.md)) + +## additionalProperties Constraints + +**URI reference**: the string must be a URI reference, according to [RFC 3986](https://tools.ietf.org/html/rfc3986 "check the specification") + +# additionalProperties Properties + +| Property | Type | Required | Nullable | Defined by | +| :------------------ | :------- | :------- | :------------- | :------------------------------------------------------------------------------------------------------------- | +| [relayer](#relayer) | `object` | Required | cannot be null | [Definitions](definitions-definitions-relayer.md "#/definitions/deploymentConfig/properties/relayer") | + +## relayer + + + +`relayer` + +* is required + +* Type: `object` ([Relayer](definitions-definitions-relayer.md)) + +* cannot be null + +* defined in: [Definitions](definitions-definitions-relayer.md "#/definitions/deploymentConfig/properties/relayer") + +### relayer Type + +`object` ([Relayer](definitions-definitions-relayer.md)) + +### relayer Constraints + +**URI reference**: the string must be a URI reference, according to [RFC 3986](https://tools.ietf.org/html/rfc3986 "check the specification") diff --git a/src/types/docs/definitions-definitions-emailconfig-properties-emails-items.md b/src/types/docs/definitions-definitions-emailconfig-properties-emails-items.md new file mode 100644 index 0000000..3700424 --- /dev/null +++ b/src/types/docs/definitions-definitions-emailconfig-properties-emails-items.md @@ -0,0 +1,7 @@ +## items Type + +`string` + +## items Constraints + +**email**: the string must be an email address, according to [RFC 5322, section 3.4.1](https://tools.ietf.org/html/rfc5322 "check the specification") diff --git a/src/types/docs/definitions-definitions-emailconfig-properties-emails.md b/src/types/docs/definitions-definitions-emailconfig-properties-emails.md new file mode 100644 index 0000000..8b61e3e --- /dev/null +++ b/src/types/docs/definitions-definitions-emailconfig-properties-emails.md @@ -0,0 +1,11 @@ +## emails Type + +`string[]` + +## emails Default Value + +The default value is: + +```json +[] +``` diff --git a/src/types/docs/definitions-definitions-emailconfig.md b/src/types/docs/definitions-definitions-emailconfig.md new file mode 100644 index 0000000..d5667fe --- /dev/null +++ b/src/types/docs/definitions-definitions-emailconfig.md @@ -0,0 +1,39 @@ +## 0 Type + +`object` ([EmailConfig](definitions-definitions-emailconfig.md)) + +## 0 Constraints + +**URI reference**: the string must be a URI reference, according to [RFC 3986](https://tools.ietf.org/html/rfc3986 "check the specification") + +# 0 Properties + +| Property | Type | Required | Nullable | Defined by | +| :---------------- | :------ | :------- | :------------- | :----------------------------------------------------------------------------------------------------------------------------- | +| [emails](#emails) | `array` | Required | cannot be null | [Definitions](definitions-definitions-emailconfig-properties-emails.md "#/definitions/emailConfig/properties/emails") | + +## emails + + + +`emails` + +* is required + +* Type: `string[]` + +* cannot be null + +* defined in: [Definitions](definitions-definitions-emailconfig-properties-emails.md "#/definitions/emailConfig/properties/emails") + +### emails Type + +`string[]` + +### emails Default Value + +The default value is: + +```json +[] +``` diff --git a/src/types/docs/definitions-definitions-fortasentinel-anyof-0.md b/src/types/docs/definitions-definitions-fortasentinel-anyof-0.md new file mode 100644 index 0000000..d22a257 --- /dev/null +++ b/src/types/docs/definitions-definitions-fortasentinel-anyof-0.md @@ -0,0 +1,3 @@ +## 0 Type + +unknown diff --git a/src/types/docs/definitions-definitions-fortasentinel-anyof-1.md b/src/types/docs/definitions-definitions-fortasentinel-anyof-1.md new file mode 100644 index 0000000..19f8d24 --- /dev/null +++ b/src/types/docs/definitions-definitions-fortasentinel-anyof-1.md @@ -0,0 +1,3 @@ +## 1 Type + +unknown diff --git a/src/types/docs/definitions-definitions-fortasentinel-properties-addresses.md b/src/types/docs/definitions-definitions-fortasentinel-properties-addresses.md new file mode 100644 index 0000000..80735fa --- /dev/null +++ b/src/types/docs/definitions-definitions-fortasentinel-properties-addresses.md @@ -0,0 +1,3 @@ +## addresses Type + +`string[]` ([Address](definitions-definitions-address.md)) diff --git a/src/types/docs/definitions-definitions-fortasentinel-properties-agentids-items.md b/src/types/docs/definitions-definitions-fortasentinel-properties-agentids-items.md new file mode 100644 index 0000000..98d2045 --- /dev/null +++ b/src/types/docs/definitions-definitions-fortasentinel-properties-agentids-items.md @@ -0,0 +1,3 @@ +## items Type + +`string` diff --git a/src/types/docs/definitions-definitions-fortasentinel-properties-agentids.md b/src/types/docs/definitions-definitions-fortasentinel-properties-agentids.md new file mode 100644 index 0000000..2c4dec1 --- /dev/null +++ b/src/types/docs/definitions-definitions-fortasentinel-properties-agentids.md @@ -0,0 +1,3 @@ +## agent-ids Type + +`string[]` diff --git a/src/types/docs/definitions-definitions-fortasentinel-properties-alertthreshold-properties-amount.md b/src/types/docs/definitions-definitions-fortasentinel-properties-alertthreshold-properties-amount.md new file mode 100644 index 0000000..068a75f --- /dev/null +++ b/src/types/docs/definitions-definitions-fortasentinel-properties-alertthreshold-properties-amount.md @@ -0,0 +1,3 @@ +## amount Type + +`integer` diff --git a/src/types/docs/definitions-definitions-fortasentinel-properties-alertthreshold-properties-window-seconds.md b/src/types/docs/definitions-definitions-fortasentinel-properties-alertthreshold-properties-window-seconds.md new file mode 100644 index 0000000..2c65f5f --- /dev/null +++ b/src/types/docs/definitions-definitions-fortasentinel-properties-alertthreshold-properties-window-seconds.md @@ -0,0 +1,3 @@ +## window-seconds Type + +`integer` diff --git a/src/types/docs/definitions-definitions-fortasentinel-properties-alertthreshold.md b/src/types/docs/definitions-definitions-fortasentinel-properties-alertthreshold.md new file mode 100644 index 0000000..2dc977b --- /dev/null +++ b/src/types/docs/definitions-definitions-fortasentinel-properties-alertthreshold.md @@ -0,0 +1,46 @@ +## alert-threshold Type + +`object` ([AlertThreshold](definitions-definitions-fortasentinel-properties-alertthreshold.md)) + +# alert-threshold Properties + +| Property | Type | Required | Nullable | Defined by | +| :-------------------------------- | :-------- | :------- | :------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| [amount](#amount) | `integer` | Optional | cannot be null | [Definitions](definitions-definitions-fortasentinel-properties-alertthreshold-properties-amount.md "#/definitions/fortaSentinel/properties/alert-threshold/properties/amount") | +| [window-seconds](#window-seconds) | `integer` | Optional | cannot be null | [Definitions](definitions-definitions-fortasentinel-properties-alertthreshold-properties-window-seconds.md "#/definitions/fortaSentinel/properties/alert-threshold/properties/window-seconds") | + +## amount + + + +`amount` + +* is optional + +* Type: `integer` + +* cannot be null + +* defined in: [Definitions](definitions-definitions-fortasentinel-properties-alertthreshold-properties-amount.md "#/definitions/fortaSentinel/properties/alert-threshold/properties/amount") + +### amount Type + +`integer` + +## window-seconds + + + +`window-seconds` + +* is optional + +* Type: `integer` + +* cannot be null + +* defined in: [Definitions](definitions-definitions-fortasentinel-properties-alertthreshold-properties-window-seconds.md "#/definitions/fortaSentinel/properties/alert-threshold/properties/window-seconds") + +### window-seconds Type + +`integer` diff --git a/src/types/docs/definitions-definitions-fortasentinel-properties-conditions-properties-alertids-items.md b/src/types/docs/definitions-definitions-fortasentinel-properties-conditions-properties-alertids-items.md new file mode 100644 index 0000000..98d2045 --- /dev/null +++ b/src/types/docs/definitions-definitions-fortasentinel-properties-conditions-properties-alertids-items.md @@ -0,0 +1,3 @@ +## items Type + +`string` diff --git a/src/types/docs/definitions-definitions-fortasentinel-properties-conditions-properties-alertids.md b/src/types/docs/definitions-definitions-fortasentinel-properties-conditions-properties-alertids.md new file mode 100644 index 0000000..b4d9958 --- /dev/null +++ b/src/types/docs/definitions-definitions-fortasentinel-properties-conditions-properties-alertids.md @@ -0,0 +1,3 @@ +## alert-ids Type + +`string[]` diff --git a/src/types/docs/definitions-definitions-fortasentinel-properties-conditions-properties-min-scanner-count.md b/src/types/docs/definitions-definitions-fortasentinel-properties-conditions-properties-min-scanner-count.md new file mode 100644 index 0000000..eb2d049 --- /dev/null +++ b/src/types/docs/definitions-definitions-fortasentinel-properties-conditions-properties-min-scanner-count.md @@ -0,0 +1,3 @@ +## min-scanner-count Type + +`integer` diff --git a/src/types/docs/definitions-definitions-fortasentinel-properties-conditions-properties-severity.md b/src/types/docs/definitions-definitions-fortasentinel-properties-conditions-properties-severity.md new file mode 100644 index 0000000..1b4de5b --- /dev/null +++ b/src/types/docs/definitions-definitions-fortasentinel-properties-conditions-properties-severity.md @@ -0,0 +1,16 @@ +## severity Type + +`integer` + +## severity Constraints + +**enum**: the value of this property must be equal to one of the following values: + +| Value | Explanation | +| :---- | :---------- | +| `0` | | +| `1` | | +| `2` | | +| `3` | | +| `4` | | +| `5` | | diff --git a/src/types/docs/definitions-definitions-fortasentinel-properties-conditions.md b/src/types/docs/definitions-definitions-fortasentinel-properties-conditions.md new file mode 100644 index 0000000..a1e2664 --- /dev/null +++ b/src/types/docs/definitions-definitions-fortasentinel-properties-conditions.md @@ -0,0 +1,78 @@ +## conditions Type + +`object` ([Conditions](definitions-definitions-fortasentinel-properties-conditions.md)) + +# conditions Properties + +| Property | Type | Required | Nullable | Defined by | +| :-------------------------------------- | :-------- | :------- | :------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| [min-scanner-count](#min-scanner-count) | `integer` | Required | cannot be null | [Definitions](definitions-definitions-fortasentinel-properties-conditions-properties-min-scanner-count.md "#/definitions/fortaSentinel/properties/conditions/properties/min-scanner-count") | +| [severity](#severity) | `integer` | Optional | cannot be null | [Definitions](definitions-definitions-fortasentinel-properties-conditions-properties-severity.md "#/definitions/fortaSentinel/properties/conditions/properties/severity") | +| [alert-ids](#alert-ids) | `array` | Optional | cannot be null | [Definitions](definitions-definitions-fortasentinel-properties-conditions-properties-alertids.md "#/definitions/fortaSentinel/properties/conditions/properties/alert-ids") | + +## min-scanner-count + + + +`min-scanner-count` + +* is required + +* Type: `integer` + +* cannot be null + +* defined in: [Definitions](definitions-definitions-fortasentinel-properties-conditions-properties-min-scanner-count.md "#/definitions/fortaSentinel/properties/conditions/properties/min-scanner-count") + +### min-scanner-count Type + +`integer` + +## severity + + + +`severity` + +* is optional + +* Type: `integer` + +* cannot be null + +* defined in: [Definitions](definitions-definitions-fortasentinel-properties-conditions-properties-severity.md "#/definitions/fortaSentinel/properties/conditions/properties/severity") + +### severity Type + +`integer` + +### severity Constraints + +**enum**: the value of this property must be equal to one of the following values: + +| Value | Explanation | +| :---- | :---------- | +| `0` | | +| `1` | | +| `2` | | +| `3` | | +| `4` | | +| `5` | | + +## alert-ids + + + +`alert-ids` + +* is optional + +* Type: `string[]` + +* cannot be null + +* defined in: [Definitions](definitions-definitions-fortasentinel-properties-conditions-properties-alertids.md "#/definitions/fortaSentinel/properties/conditions/properties/alert-ids") + +### alert-ids Type + +`string[]` diff --git a/src/types/docs/definitions-definitions-fortasentinel-properties-forta-node-id.md b/src/types/docs/definitions-definitions-fortasentinel-properties-forta-node-id.md new file mode 100644 index 0000000..07716f8 --- /dev/null +++ b/src/types/docs/definitions-definitions-fortasentinel-properties-forta-node-id.md @@ -0,0 +1,3 @@ +## forta-node-id Type + +`string` diff --git a/src/types/docs/definitions-definitions-fortasentinel-properties-name.md b/src/types/docs/definitions-definitions-fortasentinel-properties-name.md new file mode 100644 index 0000000..141700b --- /dev/null +++ b/src/types/docs/definitions-definitions-fortasentinel-properties-name.md @@ -0,0 +1,3 @@ +## name Type + +`string` diff --git a/src/types/docs/definitions-definitions-fortasentinel-properties-notifyconfig-properties-channels.md b/src/types/docs/definitions-definitions-fortasentinel-properties-notifyconfig-properties-channels.md new file mode 100644 index 0000000..94ce5fd --- /dev/null +++ b/src/types/docs/definitions-definitions-fortasentinel-properties-notifyconfig-properties-channels.md @@ -0,0 +1,3 @@ +## channels Type + +`object[]` ([Notification](definitions-definitions-notification.md)) diff --git a/src/types/docs/definitions-definitions-fortasentinel-properties-notifyconfig-properties-message.md b/src/types/docs/definitions-definitions-fortasentinel-properties-notifyconfig-properties-message.md new file mode 100644 index 0000000..4ffe867 --- /dev/null +++ b/src/types/docs/definitions-definitions-fortasentinel-properties-notifyconfig-properties-message.md @@ -0,0 +1,3 @@ +## message Type + +`string` diff --git a/src/types/docs/definitions-definitions-fortasentinel-properties-notifyconfig-properties-timeout.md b/src/types/docs/definitions-definitions-fortasentinel-properties-notifyconfig-properties-timeout.md new file mode 100644 index 0000000..0324859 --- /dev/null +++ b/src/types/docs/definitions-definitions-fortasentinel-properties-notifyconfig-properties-timeout.md @@ -0,0 +1,3 @@ +## timeout Type + +`integer` diff --git a/src/types/docs/definitions-definitions-fortasentinel-properties-notifyconfig.md b/src/types/docs/definitions-definitions-fortasentinel-properties-notifyconfig.md new file mode 100644 index 0000000..fff2835 --- /dev/null +++ b/src/types/docs/definitions-definitions-fortasentinel-properties-notifyconfig.md @@ -0,0 +1,88 @@ +## notify-config Type + +`object` ([NotifyConfig](definitions-definitions-fortasentinel-properties-notifyconfig.md)) + +# notify-config Properties + +| Property | Type | Required | Nullable | Defined by | +| :-------------------- | :-------- | :------- | :------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| [timeout](#timeout) | `integer` | Optional | cannot be null | [Definitions](definitions-definitions-fortasentinel-properties-notifyconfig-properties-timeout.md "#/definitions/fortaSentinel/properties/notify-config/properties/timeout") | +| [message](#message) | `string` | Optional | cannot be null | [Definitions](definitions-definitions-fortasentinel-properties-notifyconfig-properties-message.md "#/definitions/fortaSentinel/properties/notify-config/properties/message") | +| [category](#category) | `object` | Optional | cannot be null | [Definitions](definitions-definitions-category.md "#/definitions/fortaSentinel/properties/notify-config/properties/category") | +| [channels](#channels) | `array` | Required | cannot be null | [Definitions](definitions-definitions-fortasentinel-properties-notifyconfig-properties-channels.md "#/definitions/fortaSentinel/properties/notify-config/properties/channels") | + +## timeout + + + +`timeout` + +* is optional + +* Type: `integer` + +* cannot be null + +* defined in: [Definitions](definitions-definitions-fortasentinel-properties-notifyconfig-properties-timeout.md "#/definitions/fortaSentinel/properties/notify-config/properties/timeout") + +### timeout Type + +`integer` + +## message + + + +`message` + +* is optional + +* Type: `string` + +* cannot be null + +* defined in: [Definitions](definitions-definitions-fortasentinel-properties-notifyconfig-properties-message.md "#/definitions/fortaSentinel/properties/notify-config/properties/message") + +### message Type + +`string` + +## category + + + +`category` + +* is optional + +* Type: `object` ([Category](definitions-definitions-category.md)) + +* cannot be null + +* defined in: [Definitions](definitions-definitions-category.md "#/definitions/fortaSentinel/properties/notify-config/properties/category") + +### category Type + +`object` ([Category](definitions-definitions-category.md)) + +### category Constraints + +**URI reference**: the string must be a URI reference, according to [RFC 3986](https://tools.ietf.org/html/rfc3986 "check the specification") + +## channels + + + +`channels` + +* is required + +* Type: `object[]` ([Notification](definitions-definitions-notification.md)) + +* cannot be null + +* defined in: [Definitions](definitions-definitions-fortasentinel-properties-notifyconfig-properties-channels.md "#/definitions/fortaSentinel/properties/notify-config/properties/channels") + +### channels Type + +`object[]` ([Notification](definitions-definitions-notification.md)) diff --git a/src/types/docs/definitions-definitions-fortasentinel-properties-paused.md b/src/types/docs/definitions-definitions-fortasentinel-properties-paused.md new file mode 100644 index 0000000..00a4467 --- /dev/null +++ b/src/types/docs/definitions-definitions-fortasentinel-properties-paused.md @@ -0,0 +1,3 @@ +## paused Type + +`boolean` diff --git a/src/types/docs/definitions-definitions-fortasentinel-properties-type.md b/src/types/docs/definitions-definitions-fortasentinel-properties-type.md new file mode 100644 index 0000000..4c10fe8 --- /dev/null +++ b/src/types/docs/definitions-definitions-fortasentinel-properties-type.md @@ -0,0 +1,11 @@ +## type Type + +`string` + +## type Constraints + +**enum**: the value of this property must be equal to one of the following values: + +| Value | Explanation | +| :-------- | :---------- | +| `"FORTA"` | | diff --git a/src/types/docs/definitions-definitions-fortasentinel.md b/src/types/docs/definitions-definitions-fortasentinel.md new file mode 100644 index 0000000..44bc3fb --- /dev/null +++ b/src/types/docs/definitions-definitions-fortasentinel.md @@ -0,0 +1,369 @@ +## 1 Type + +`object` ([FortaSentinel](definitions-definitions-fortasentinel.md)) + +any of + +* [Untitled type in Definitions](definitions-definitions-fortasentinel-anyof-0.md "check type definition") + +* [Untitled type in Definitions](definitions-definitions-fortasentinel-anyof-1.md "check type definition") + +## 1 Constraints + +**URI reference**: the string must be a URI reference, according to [RFC 3986](https://tools.ietf.org/html/rfc3986 "check the specification") + +# 1 Properties + +| Property | Type | Required | Nullable | Defined by | +| :---------------------------------------- | :-------- | :------- | :------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------- | +| [name](#name) | `string` | Required | cannot be null | [Definitions](definitions-definitions-fortasentinel-properties-name.md "#/definitions/fortaSentinel/properties/name") | +| [type](#type) | `string` | Required | cannot be null | [Definitions](definitions-definitions-fortasentinel-properties-type.md "#/definitions/fortaSentinel/properties/type") | +| [network](#network) | `string` | Required | cannot be null | [Definitions](definitions-definitions-network.md "#/definitions/fortaSentinel/properties/network") | +| [addresses](#addresses) | `array` | Optional | cannot be null | [Definitions](definitions-definitions-fortasentinel-properties-addresses.md "#/definitions/fortaSentinel/properties/addresses") | +| [abi](#abi) | Merged | Optional | cannot be null | [Definitions](definitions-definitions-abitype.md "#/definitions/fortaSentinel/properties/abi") | +| [alert-threshold](#alert-threshold) | `object` | Optional | cannot be null | [Definitions](definitions-definitions-fortasentinel-properties-alertthreshold.md "#/definitions/fortaSentinel/properties/alert-threshold") | +| [paused](#paused) | `boolean` | Optional | cannot be null | [Definitions](definitions-definitions-fortasentinel-properties-paused.md "#/definitions/fortaSentinel/properties/paused") | +| [autotask-condition](#autotask-condition) | `object` | Optional | cannot be null | [Definitions](definitions-definitions-autotask.md "#/definitions/fortaSentinel/properties/autotask-condition") | +| [autotask-trigger](#autotask-trigger) | `object` | Optional | cannot be null | [Definitions](definitions-definitions-autotask.md "#/definitions/fortaSentinel/properties/autotask-trigger") | +| [notify-config](#notify-config) | `object` | Required | cannot be null | [Definitions](definitions-definitions-fortasentinel-properties-notifyconfig.md "#/definitions/fortaSentinel/properties/notify-config") | +| [conditions](#conditions) | `object` | Optional | cannot be null | [Definitions](definitions-definitions-fortasentinel-properties-conditions.md "#/definitions/fortaSentinel/properties/conditions") | +| [forta-node-id](#forta-node-id) | `string` | Optional | cannot be null | [Definitions](definitions-definitions-fortasentinel-properties-forta-node-id.md "#/definitions/fortaSentinel/properties/forta-node-id") | +| [agent-ids](#agent-ids) | `array` | Optional | cannot be null | [Definitions](definitions-definitions-fortasentinel-properties-agentids.md "#/definitions/fortaSentinel/properties/agent-ids") | +| [risk-category](#risk-category) | `string` | Optional | cannot be null | [Definitions](definitions-definitions-riskcategory.md "#/definitions/fortaSentinel/properties/risk-category") | + +## name + + + +`name` + +* is required + +* Type: `string` + +* cannot be null + +* defined in: [Definitions](definitions-definitions-fortasentinel-properties-name.md "#/definitions/fortaSentinel/properties/name") + +### name Type + +`string` + +## type + + + +`type` + +* is required + +* Type: `string` + +* cannot be null + +* defined in: [Definitions](definitions-definitions-fortasentinel-properties-type.md "#/definitions/fortaSentinel/properties/type") + +### type Type + +`string` + +### type Constraints + +**enum**: the value of this property must be equal to one of the following values: + +| Value | Explanation | +| :-------- | :---------- | +| `"FORTA"` | | + +## network + + + +`network` + +* is required + +* Type: `string` ([Network](definitions-definitions-network.md)) + +* cannot be null + +* defined in: [Definitions](definitions-definitions-network.md "#/definitions/fortaSentinel/properties/network") + +### network Type + +`string` ([Network](definitions-definitions-network.md)) + +### network Constraints + +**enum**: the value of this property must be equal to one of the following values: + +| Value | Explanation | +| :------------------------ | :---------- | +| `"mainnet"` | | +| `"sepolia"` | | +| `"rinkeby"` | | +| `"ropsten"` | | +| `"kovan"` | | +| `"goerli"` | | +| `"xdai"` | | +| `"sokol"` | | +| `"fuse"` | | +| `"bsc"` | | +| `"bsctest"` | | +| `"fantom"` | | +| `"fantomtest"` | | +| `"moonbase"` | | +| `"moonriver"` | | +| `"moonbeam"` | | +| `"matic"` | | +| `"mumbai"` | | +| `"avalanche"` | | +| `"fuji"` | | +| `"optimism"` | | +| `"optimism-kovan"` | | +| `"optimism-goerli"` | | +| `"arbitrum"` | | +| `"arbitrum-nova"` | | +| `"arbitrum-rinkeby"` | | +| `"arbitrum-goerli"` | | +| `"celo"` | | +| `"alfajores"` | | +| `"harmony-s0"` | | +| `"harmony-test-s0"` | | +| `"aurora"` | | +| `"auroratest"` | | +| `"hedera"` | | +| `"hederatest"` | | +| `"x-dfk-avax-chain"` | | +| `"x-dfk-avax-chain-test"` | | +| `"zksync"` | | +| `"zksync-goerli"` | | +| `"base-goerli"` | | +| `"linea-goerli"` | | + +**URI reference**: the string must be a URI reference, according to [RFC 3986](https://tools.ietf.org/html/rfc3986 "check the specification") + +## addresses + + + +`addresses` + +* is optional + +* Type: `string[]` ([Address](definitions-definitions-address.md)) + +* cannot be null + +* defined in: [Definitions](definitions-definitions-fortasentinel-properties-addresses.md "#/definitions/fortaSentinel/properties/addresses") + +### addresses Type + +`string[]` ([Address](definitions-definitions-address.md)) + +## abi + + + +`abi` + +* is optional + +* Type: merged type ([AbiType](definitions-definitions-abitype.md)) + +* cannot be null + +* defined in: [Definitions](definitions-definitions-abitype.md "#/definitions/fortaSentinel/properties/abi") + +### abi Type + +merged type ([AbiType](definitions-definitions-abitype.md)) + +any of + +* [StringABI](definitions-definitions-abitype-anyof-stringabi.md "check type definition") + +* [ArrayABI](definitions-definitions-abitype-anyof-arrayabi.md "check type definition") + +## alert-threshold + + + +`alert-threshold` + +* is optional + +* Type: `object` ([AlertThreshold](definitions-definitions-fortasentinel-properties-alertthreshold.md)) + +* cannot be null + +* defined in: [Definitions](definitions-definitions-fortasentinel-properties-alertthreshold.md "#/definitions/fortaSentinel/properties/alert-threshold") + +### alert-threshold Type + +`object` ([AlertThreshold](definitions-definitions-fortasentinel-properties-alertthreshold.md)) + +## paused + + + +`paused` + +* is optional + +* Type: `boolean` + +* cannot be null + +* defined in: [Definitions](definitions-definitions-fortasentinel-properties-paused.md "#/definitions/fortaSentinel/properties/paused") + +### paused Type + +`boolean` + +## autotask-condition + + + +`autotask-condition` + +* is optional + +* Type: `object` ([Autotask](definitions-definitions-autotask.md)) + +* cannot be null + +* defined in: [Definitions](definitions-definitions-autotask.md "#/definitions/fortaSentinel/properties/autotask-condition") + +### autotask-condition Type + +`object` ([Autotask](definitions-definitions-autotask.md)) + +### autotask-condition Constraints + +**URI reference**: the string must be a URI reference, according to [RFC 3986](https://tools.ietf.org/html/rfc3986 "check the specification") + +## autotask-trigger + + + +`autotask-trigger` + +* is optional + +* Type: `object` ([Autotask](definitions-definitions-autotask.md)) + +* cannot be null + +* defined in: [Definitions](definitions-definitions-autotask.md "#/definitions/fortaSentinel/properties/autotask-trigger") + +### autotask-trigger Type + +`object` ([Autotask](definitions-definitions-autotask.md)) + +### autotask-trigger Constraints + +**URI reference**: the string must be a URI reference, according to [RFC 3986](https://tools.ietf.org/html/rfc3986 "check the specification") + +## notify-config + + + +`notify-config` + +* is required + +* Type: `object` ([NotifyConfig](definitions-definitions-fortasentinel-properties-notifyconfig.md)) + +* cannot be null + +* defined in: [Definitions](definitions-definitions-fortasentinel-properties-notifyconfig.md "#/definitions/fortaSentinel/properties/notify-config") + +### notify-config Type + +`object` ([NotifyConfig](definitions-definitions-fortasentinel-properties-notifyconfig.md)) + +## conditions + + + +`conditions` + +* is optional + +* Type: `object` ([Conditions](definitions-definitions-fortasentinel-properties-conditions.md)) + +* cannot be null + +* defined in: [Definitions](definitions-definitions-fortasentinel-properties-conditions.md "#/definitions/fortaSentinel/properties/conditions") + +### conditions Type + +`object` ([Conditions](definitions-definitions-fortasentinel-properties-conditions.md)) + +## forta-node-id + + + +`forta-node-id` + +* is optional + +* Type: `string` + +* cannot be null + +* defined in: [Definitions](definitions-definitions-fortasentinel-properties-forta-node-id.md "#/definitions/fortaSentinel/properties/forta-node-id") + +### forta-node-id Type + +`string` + +## agent-ids + + + +`agent-ids` + +* is optional + +* Type: `string[]` + +* cannot be null + +* defined in: [Definitions](definitions-definitions-fortasentinel-properties-agentids.md "#/definitions/fortaSentinel/properties/agent-ids") + +### agent-ids Type + +`string[]` + +## risk-category + + + +`risk-category` + +* is optional + +* Type: `string` ([RiskCategory](definitions-definitions-riskcategory.md)) + +* cannot be null + +* defined in: [Definitions](definitions-definitions-riskcategory.md "#/definitions/fortaSentinel/properties/risk-category") + +### risk-category Type + +`string` ([RiskCategory](definitions-definitions-riskcategory.md)) + +### risk-category Constraints + +**enum**: the value of this property must be equal to one of the following values: + +| Value | Explanation | +| :----------------- | :---------- | +| `"NONE"` | | +| `"GOVERNANCE"` | | +| `"ACCESS-CONTROL"` | | +| `"SUSPICIOUS"` | | +| `"FINANCIAL"` | | +| `"TECHNICAL"` | | diff --git a/src/types/docs/definitions-definitions-network.md b/src/types/docs/definitions-definitions-network.md new file mode 100644 index 0000000..ca27d74 --- /dev/null +++ b/src/types/docs/definitions-definitions-network.md @@ -0,0 +1,53 @@ +## network Type + +`string` ([Network](definitions-definitions-network.md)) + +## network Constraints + +**enum**: the value of this property must be equal to one of the following values: + +| Value | Explanation | +| :------------------------ | :---------- | +| `"mainnet"` | | +| `"sepolia"` | | +| `"rinkeby"` | | +| `"ropsten"` | | +| `"kovan"` | | +| `"goerli"` | | +| `"xdai"` | | +| `"sokol"` | | +| `"fuse"` | | +| `"bsc"` | | +| `"bsctest"` | | +| `"fantom"` | | +| `"fantomtest"` | | +| `"moonbase"` | | +| `"moonriver"` | | +| `"moonbeam"` | | +| `"matic"` | | +| `"mumbai"` | | +| `"avalanche"` | | +| `"fuji"` | | +| `"optimism"` | | +| `"optimism-kovan"` | | +| `"optimism-goerli"` | | +| `"arbitrum"` | | +| `"arbitrum-nova"` | | +| `"arbitrum-rinkeby"` | | +| `"arbitrum-goerli"` | | +| `"celo"` | | +| `"alfajores"` | | +| `"harmony-s0"` | | +| `"harmony-test-s0"` | | +| `"aurora"` | | +| `"auroratest"` | | +| `"hedera"` | | +| `"hederatest"` | | +| `"x-dfk-avax-chain"` | | +| `"x-dfk-avax-chain-test"` | | +| `"zksync"` | | +| `"zksync-goerli"` | | +| `"base-goerli"` | | +| `"linea-goerli"` | | + +**URI reference**: the string must be a URI reference, according to [RFC 3986](https://tools.ietf.org/html/rfc3986 "check the specification") diff --git a/src/types/docs/definitions-definitions-notification-properties-config.md b/src/types/docs/definitions-definitions-notification-properties-config.md new file mode 100644 index 0000000..b020214 --- /dev/null +++ b/src/types/docs/definitions-definitions-notification-properties-config.md @@ -0,0 +1,17 @@ +## config Type + +`object` ([Config](definitions-definitions-notification-properties-config.md)) + +one (and only one) of + +* [EmailConfig](definitions-definitions-emailconfig.md "check type definition") + +* [TelegramConfig](definitions-definitions-telegramconfig.md "check type definition") + +* [DatadogConfig](definitions-definitions-datadogconfig.md "check type definition") + +* [UrlConfig](definitions-definitions-urlconfig.md "check type definition") + +* [OpsgenieConfig](definitions-definitions-opsgenieconfig.md "check type definition") + +* [PagerDutyConfig](definitions-definitions-pagerdutyconfig.md "check type definition") diff --git a/src/types/docs/definitions-definitions-notification-properties-name.md b/src/types/docs/definitions-definitions-notification-properties-name.md new file mode 100644 index 0000000..141700b --- /dev/null +++ b/src/types/docs/definitions-definitions-notification-properties-name.md @@ -0,0 +1,3 @@ +## name Type + +`string` diff --git a/src/types/docs/definitions-definitions-notification-properties-paused.md b/src/types/docs/definitions-definitions-notification-properties-paused.md new file mode 100644 index 0000000..00a4467 --- /dev/null +++ b/src/types/docs/definitions-definitions-notification-properties-paused.md @@ -0,0 +1,3 @@ +## paused Type + +`boolean` diff --git a/src/types/docs/definitions-definitions-notification.md b/src/types/docs/definitions-definitions-notification.md new file mode 100644 index 0000000..0354420 --- /dev/null +++ b/src/types/docs/definitions-definitions-notification.md @@ -0,0 +1,119 @@ +## additionalProperties Type + +`object` ([Notification](definitions-definitions-notification.md)) + +## additionalProperties Constraints + +**URI reference**: the string must be a URI reference, according to [RFC 3986](https://tools.ietf.org/html/rfc3986 "check the specification") + +# additionalProperties Properties + +| Property | Type | Required | Nullable | Defined by | +| :---------------- | :-------- | :------- | :------------- | :------------------------------------------------------------------------------------------------------------------------------- | +| [type](#type) | `string` | Required | cannot be null | [Definitions](definitions-definitions-notificationtype.md "#/definitions/notification/properties/type") | +| [name](#name) | `string` | Required | cannot be null | [Definitions](definitions-definitions-notification-properties-name.md "#/definitions/notification/properties/name") | +| [paused](#paused) | `boolean` | Required | cannot be null | [Definitions](definitions-definitions-notification-properties-paused.md "#/definitions/notification/properties/paused") | +| [config](#config) | Merged | Required | cannot be null | [Definitions](definitions-definitions-notification-properties-config.md "#/definitions/notification/properties/config") | + +## type + + + +`type` + +* is required + +* Type: `string` ([NotificationType](definitions-definitions-notificationtype.md)) + +* cannot be null + +* defined in: [Definitions](definitions-definitions-notificationtype.md "#/definitions/notification/properties/type") + +### type Type + +`string` ([NotificationType](definitions-definitions-notificationtype.md)) + +### type Constraints + +**enum**: the value of this property must be equal to one of the following values: + +| Value | Explanation | +| :------------- | :---------- | +| `"slack"` | | +| `"email"` | | +| `"discord"` | | +| `"telegram"` | | +| `"datadog"` | | +| `"webhook"` | | +| `"opsgenie"` | | +| `"pager-duty"` | | + +**URI reference**: the string must be a URI reference, according to [RFC 3986](https://tools.ietf.org/html/rfc3986 "check the specification") + +## name + + + +`name` + +* is required + +* Type: `string` + +* cannot be null + +* defined in: [Definitions](definitions-definitions-notification-properties-name.md "#/definitions/notification/properties/name") + +### name Type + +`string` + +## paused + + + +`paused` + +* is required + +* Type: `boolean` + +* cannot be null + +* defined in: [Definitions](definitions-definitions-notification-properties-paused.md "#/definitions/notification/properties/paused") + +### paused Type + +`boolean` + +## config + + + +`config` + +* is required + +* Type: `object` ([Config](definitions-definitions-notification-properties-config.md)) + +* cannot be null + +* defined in: [Definitions](definitions-definitions-notification-properties-config.md "#/definitions/notification/properties/config") + +### config Type + +`object` ([Config](definitions-definitions-notification-properties-config.md)) + +one (and only one) of + +* [EmailConfig](definitions-definitions-emailconfig.md "check type definition") + +* [TelegramConfig](definitions-definitions-telegramconfig.md "check type definition") + +* [DatadogConfig](definitions-definitions-datadogconfig.md "check type definition") + +* [UrlConfig](definitions-definitions-urlconfig.md "check type definition") + +* [OpsgenieConfig](definitions-definitions-opsgenieconfig.md "check type definition") + +* [PagerDutyConfig](definitions-definitions-pagerdutyconfig.md "check type definition") diff --git a/src/types/docs/definitions-definitions-notificationtype.md b/src/types/docs/definitions-definitions-notificationtype.md new file mode 100644 index 0000000..9d2eba8 --- /dev/null +++ b/src/types/docs/definitions-definitions-notificationtype.md @@ -0,0 +1,20 @@ +## type Type + +`string` ([NotificationType](definitions-definitions-notificationtype.md)) + +## type Constraints + +**enum**: the value of this property must be equal to one of the following values: + +| Value | Explanation | +| :------------- | :---------- | +| `"slack"` | | +| `"email"` | | +| `"discord"` | | +| `"telegram"` | | +| `"datadog"` | | +| `"webhook"` | | +| `"opsgenie"` | | +| `"pager-duty"` | | + +**URI reference**: the string must be a URI reference, according to [RFC 3986](https://tools.ietf.org/html/rfc3986 "check the specification") diff --git a/src/types/docs/definitions-definitions-opsgenieconfig-properties-actions-items.md b/src/types/docs/definitions-definitions-opsgenieconfig-properties-actions-items.md new file mode 100644 index 0000000..5526bb0 --- /dev/null +++ b/src/types/docs/definitions-definitions-opsgenieconfig-properties-actions-items.md @@ -0,0 +1,7 @@ +## items Type + +`string` + +## items Constraints + +**maximum length**: the maximum number of characters for this string is: `50` diff --git a/src/types/docs/definitions-definitions-opsgenieconfig-properties-actions.md b/src/types/docs/definitions-definitions-opsgenieconfig-properties-actions.md new file mode 100644 index 0000000..c57a94a --- /dev/null +++ b/src/types/docs/definitions-definitions-opsgenieconfig-properties-actions.md @@ -0,0 +1,7 @@ +## actions Type + +`string[]` + +## actions Constraints + +**maximum number of items**: the maximum number of items for this array is: `10` diff --git a/src/types/docs/definitions-definitions-opsgenieconfig-properties-alias.md b/src/types/docs/definitions-definitions-opsgenieconfig-properties-alias.md new file mode 100644 index 0000000..10b5c2a --- /dev/null +++ b/src/types/docs/definitions-definitions-opsgenieconfig-properties-alias.md @@ -0,0 +1,7 @@ +## alias Type + +`string` + +## alias Constraints + +**maximum length**: the maximum number of characters for this string is: `512` diff --git a/src/types/docs/definitions-definitions-opsgenieconfig-properties-apikey.md b/src/types/docs/definitions-definitions-opsgenieconfig-properties-apikey.md new file mode 100644 index 0000000..65a31a1 --- /dev/null +++ b/src/types/docs/definitions-definitions-opsgenieconfig-properties-apikey.md @@ -0,0 +1,3 @@ +## apiKey Type + +`string` diff --git a/src/types/docs/definitions-definitions-opsgenieconfig-properties-details-additionalproperties.md b/src/types/docs/definitions-definitions-opsgenieconfig-properties-details-additionalproperties.md new file mode 100644 index 0000000..1a73fed --- /dev/null +++ b/src/types/docs/definitions-definitions-opsgenieconfig-properties-details-additionalproperties.md @@ -0,0 +1,3 @@ +## additionalProperties Type + +`string` diff --git a/src/types/docs/definitions-definitions-opsgenieconfig-properties-details.md b/src/types/docs/definitions-definitions-opsgenieconfig-properties-details.md new file mode 100644 index 0000000..9153a54 --- /dev/null +++ b/src/types/docs/definitions-definitions-opsgenieconfig-properties-details.md @@ -0,0 +1,27 @@ +## details Type + +`object` ([Details](definitions-definitions-opsgenieconfig-properties-details.md)) + +# details Properties + +| Property | Type | Required | Nullable | Defined by | +| :-------------------- | :------- | :------- | :------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| Additional Properties | `string` | Optional | cannot be null | [Definitions](definitions-definitions-opsgenieconfig-properties-details-additionalproperties.md "#/definitions/opsgenieConfig/properties/details/additionalProperties") | + +## Additional Properties + +Additional properties are allowed, as long as they follow this schema: + + + +* is optional + +* Type: `string` + +* cannot be null + +* defined in: [Definitions](definitions-definitions-opsgenieconfig-properties-details-additionalproperties.md "#/definitions/opsgenieConfig/properties/details/additionalProperties") + +### additionalProperties Type + +`string` diff --git a/src/types/docs/definitions-definitions-opsgenieconfig-properties-entity.md b/src/types/docs/definitions-definitions-opsgenieconfig-properties-entity.md new file mode 100644 index 0000000..24da693 --- /dev/null +++ b/src/types/docs/definitions-definitions-opsgenieconfig-properties-entity.md @@ -0,0 +1,7 @@ +## entity Type + +`string` + +## entity Constraints + +**maximum length**: the maximum number of characters for this string is: `512` diff --git a/src/types/docs/definitions-definitions-opsgenieconfig-properties-note.md b/src/types/docs/definitions-definitions-opsgenieconfig-properties-note.md new file mode 100644 index 0000000..9a3eb30 --- /dev/null +++ b/src/types/docs/definitions-definitions-opsgenieconfig-properties-note.md @@ -0,0 +1,7 @@ +## note Type + +`string` + +## note Constraints + +**maximum length**: the maximum number of characters for this string is: `25000` diff --git a/src/types/docs/definitions-definitions-opsgenieconfig-properties-responders.md b/src/types/docs/definitions-definitions-opsgenieconfig-properties-responders.md new file mode 100644 index 0000000..c03ef96 --- /dev/null +++ b/src/types/docs/definitions-definitions-opsgenieconfig-properties-responders.md @@ -0,0 +1,3 @@ +## responders Type + +`object[]` ([Details](definitions-definitions-opsgenieuser.md)) diff --git a/src/types/docs/definitions-definitions-opsgenieconfig-properties-tags-items.md b/src/types/docs/definitions-definitions-opsgenieconfig-properties-tags-items.md new file mode 100644 index 0000000..5526bb0 --- /dev/null +++ b/src/types/docs/definitions-definitions-opsgenieconfig-properties-tags-items.md @@ -0,0 +1,7 @@ +## items Type + +`string` + +## items Constraints + +**maximum length**: the maximum number of characters for this string is: `50` diff --git a/src/types/docs/definitions-definitions-opsgenieconfig-properties-tags.md b/src/types/docs/definitions-definitions-opsgenieconfig-properties-tags.md new file mode 100644 index 0000000..01ede48 --- /dev/null +++ b/src/types/docs/definitions-definitions-opsgenieconfig-properties-tags.md @@ -0,0 +1,7 @@ +## tags Type + +`string[]` + +## tags Constraints + +**maximum number of items**: the maximum number of items for this array is: `10` diff --git a/src/types/docs/definitions-definitions-opsgenieconfig-properties-visibleto.md b/src/types/docs/definitions-definitions-opsgenieconfig-properties-visibleto.md new file mode 100644 index 0000000..9122685 --- /dev/null +++ b/src/types/docs/definitions-definitions-opsgenieconfig-properties-visibleto.md @@ -0,0 +1,3 @@ +## visibleTo Type + +`object[]` ([Details](definitions-definitions-opsgenieuser.md)) diff --git a/src/types/docs/definitions-definitions-opsgenieconfig-properties.md b/src/types/docs/definitions-definitions-opsgenieconfig-properties.md new file mode 100644 index 0000000..c89940c --- /dev/null +++ b/src/types/docs/definitions-definitions-opsgenieconfig-properties.md @@ -0,0 +1,3 @@ +## properties Type + +unknown diff --git a/src/types/docs/definitions-definitions-opsgenieconfig.md b/src/types/docs/definitions-definitions-opsgenieconfig.md new file mode 100644 index 0000000..3dafea2 --- /dev/null +++ b/src/types/docs/definitions-definitions-opsgenieconfig.md @@ -0,0 +1,262 @@ +## 4 Type + +unknown ([OpsgenieConfig](definitions-definitions-opsgenieconfig.md)) + +## 4 Constraints + +**URI reference**: the string must be a URI reference, according to [RFC 3986](https://tools.ietf.org/html/rfc3986 "check the specification") + +# 4 Properties + +| Property | Type | Required | Nullable | Defined by | +| :------------------------------------ | :------- | :------- | :------------- | :------------------------------------------------------------------------------------------------------------------------------------------- | +| [apiKey](#apikey) | `string` | Required | cannot be null | [Definitions](definitions-definitions-opsgenieconfig-properties-apikey.md "#/definitions/opsgenieConfig/properties/apiKey") | +| [instanceLocation](#instancelocation) | `string` | Required | cannot be null | [Definitions](definitions-definitions-opsgenieinstancelocation.md "#/definitions/opsgenieConfig/properties/instanceLocation") | +| [alias](#alias) | `string` | Optional | cannot be null | [Definitions](definitions-definitions-opsgenieconfig-properties-alias.md "#/definitions/opsgenieConfig/properties/alias") | +| [responders](#responders) | `array` | Optional | cannot be null | [Definitions](definitions-definitions-opsgenieconfig-properties-responders.md "#/definitions/opsgenieConfig/properties/responders") | +| [visibleTo](#visibleto) | `array` | Optional | cannot be null | [Definitions](definitions-definitions-opsgenieconfig-properties-visibleto.md "#/definitions/opsgenieConfig/properties/visibleTo") | +| [actions](#actions) | `array` | Optional | cannot be null | [Definitions](definitions-definitions-opsgenieconfig-properties-actions.md "#/definitions/opsgenieConfig/properties/actions") | +| [tags](#tags) | `array` | Optional | cannot be null | [Definitions](definitions-definitions-opsgenieconfig-properties-tags.md "#/definitions/opsgenieConfig/properties/tags") | +| [details](#details) | `object` | Optional | cannot be null | [Definitions](definitions-definitions-opsgenieconfig-properties-details.md "#/definitions/opsgenieConfig/properties/details") | +| [entity](#entity) | `string` | Optional | cannot be null | [Definitions](definitions-definitions-opsgenieconfig-properties-entity.md "#/definitions/opsgenieConfig/properties/entity") | +| [priority](#priority) | `string` | Optional | cannot be null | [Definitions](definitions-definitions-opsgenieprioritylevel.md "#/definitions/opsgenieConfig/properties/priority") | +| [note](#note) | `string` | Optional | cannot be null | [Definitions](definitions-definitions-opsgenieconfig-properties-note.md "#/definitions/opsgenieConfig/properties/note") | + +## apiKey + + + +`apiKey` + +* is required + +* Type: `string` + +* cannot be null + +* defined in: [Definitions](definitions-definitions-opsgenieconfig-properties-apikey.md "#/definitions/opsgenieConfig/properties/apiKey") + +### apiKey Type + +`string` + +## instanceLocation + + + +`instanceLocation` + +* is required + +* Type: `string` ([OpsgenieInstanceLocation](definitions-definitions-opsgenieinstancelocation.md)) + +* cannot be null + +* defined in: [Definitions](definitions-definitions-opsgenieinstancelocation.md "#/definitions/opsgenieConfig/properties/instanceLocation") + +### instanceLocation Type + +`string` ([OpsgenieInstanceLocation](definitions-definitions-opsgenieinstancelocation.md)) + +### instanceLocation Constraints + +**enum**: the value of this property must be equal to one of the following values: + +| Value | Explanation | +| :----- | :---------- | +| `"US"` | | +| `"EU"` | | + +## alias + + + +`alias` + +* is optional + +* Type: `string` + +* cannot be null + +* defined in: [Definitions](definitions-definitions-opsgenieconfig-properties-alias.md "#/definitions/opsgenieConfig/properties/alias") + +### alias Type + +`string` + +### alias Constraints + +**maximum length**: the maximum number of characters for this string is: `512` + +## responders + + + +`responders` + +* is optional + +* Type: `object[]` ([Details](definitions-definitions-opsgenieuser.md)) + +* cannot be null + +* defined in: [Definitions](definitions-definitions-opsgenieconfig-properties-responders.md "#/definitions/opsgenieConfig/properties/responders") + +### responders Type + +`object[]` ([Details](definitions-definitions-opsgenieuser.md)) + +## visibleTo + + + +`visibleTo` + +* is optional + +* Type: `object[]` ([Details](definitions-definitions-opsgenieuser.md)) + +* cannot be null + +* defined in: [Definitions](definitions-definitions-opsgenieconfig-properties-visibleto.md "#/definitions/opsgenieConfig/properties/visibleTo") + +### visibleTo Type + +`object[]` ([Details](definitions-definitions-opsgenieuser.md)) + +## actions + + + +`actions` + +* is optional + +* Type: `string[]` + +* cannot be null + +* defined in: [Definitions](definitions-definitions-opsgenieconfig-properties-actions.md "#/definitions/opsgenieConfig/properties/actions") + +### actions Type + +`string[]` + +### actions Constraints + +**maximum number of items**: the maximum number of items for this array is: `10` + +## tags + + + +`tags` + +* is optional + +* Type: `string[]` + +* cannot be null + +* defined in: [Definitions](definitions-definitions-opsgenieconfig-properties-tags.md "#/definitions/opsgenieConfig/properties/tags") + +### tags Type + +`string[]` + +### tags Constraints + +**maximum number of items**: the maximum number of items for this array is: `10` + +## details + + + +`details` + +* is optional + +* Type: `object` ([Details](definitions-definitions-opsgenieconfig-properties-details.md)) + +* cannot be null + +* defined in: [Definitions](definitions-definitions-opsgenieconfig-properties-details.md "#/definitions/opsgenieConfig/properties/details") + +### details Type + +`object` ([Details](definitions-definitions-opsgenieconfig-properties-details.md)) + +## entity + + + +`entity` + +* is optional + +* Type: `string` + +* cannot be null + +* defined in: [Definitions](definitions-definitions-opsgenieconfig-properties-entity.md "#/definitions/opsgenieConfig/properties/entity") + +### entity Type + +`string` + +### entity Constraints + +**maximum length**: the maximum number of characters for this string is: `512` + +## priority + + + +`priority` + +* is optional + +* Type: `string` ([OpsgeniePriorityLevel](definitions-definitions-opsgenieprioritylevel.md)) + +* cannot be null + +* defined in: [Definitions](definitions-definitions-opsgenieprioritylevel.md "#/definitions/opsgenieConfig/properties/priority") + +### priority Type + +`string` ([OpsgeniePriorityLevel](definitions-definitions-opsgenieprioritylevel.md)) + +### priority Constraints + +**enum**: the value of this property must be equal to one of the following values: + +| Value | Explanation | +| :----- | :---------- | +| `"P1"` | | +| `"P2"` | | +| `"P3"` | | +| `"P4"` | | +| `"P5"` | | + +## note + + + +`note` + +* is optional + +* Type: `string` + +* cannot be null + +* defined in: [Definitions](definitions-definitions-opsgenieconfig-properties-note.md "#/definitions/opsgenieConfig/properties/note") + +### note Type + +`string` + +### note Constraints + +**maximum length**: the maximum number of characters for this string is: `25000` diff --git a/src/types/docs/definitions-definitions-opsgenieinstancelocation.md b/src/types/docs/definitions-definitions-opsgenieinstancelocation.md new file mode 100644 index 0000000..93f173f --- /dev/null +++ b/src/types/docs/definitions-definitions-opsgenieinstancelocation.md @@ -0,0 +1,12 @@ +## instanceLocation Type + +`string` ([OpsgenieInstanceLocation](definitions-definitions-opsgenieinstancelocation.md)) + +## instanceLocation Constraints + +**enum**: the value of this property must be equal to one of the following values: + +| Value | Explanation | +| :----- | :---------- | +| `"US"` | | +| `"EU"` | | diff --git a/src/types/docs/definitions-definitions-opsgenieprioritylevel.md b/src/types/docs/definitions-definitions-opsgenieprioritylevel.md new file mode 100644 index 0000000..f1adeb1 --- /dev/null +++ b/src/types/docs/definitions-definitions-opsgenieprioritylevel.md @@ -0,0 +1,15 @@ +## priority Type + +`string` ([OpsgeniePriorityLevel](definitions-definitions-opsgenieprioritylevel.md)) + +## priority Constraints + +**enum**: the value of this property must be equal to one of the following values: + +| Value | Explanation | +| :----- | :---------- | +| `"P1"` | | +| `"P2"` | | +| `"P3"` | | +| `"P4"` | | +| `"P5"` | | diff --git a/src/types/docs/definitions-definitions-opsgenieuser-properties-fullname.md b/src/types/docs/definitions-definitions-opsgenieuser-properties-fullname.md new file mode 100644 index 0000000..232eca4 --- /dev/null +++ b/src/types/docs/definitions-definitions-opsgenieuser-properties-fullname.md @@ -0,0 +1,3 @@ +## fullName Type + +`string` diff --git a/src/types/docs/definitions-definitions-opsgenieuser-properties-id.md b/src/types/docs/definitions-definitions-opsgenieuser-properties-id.md new file mode 100644 index 0000000..6917deb --- /dev/null +++ b/src/types/docs/definitions-definitions-opsgenieuser-properties-id.md @@ -0,0 +1,3 @@ +## id Type + +`string` diff --git a/src/types/docs/definitions-definitions-opsgenieuser-properties-username.md b/src/types/docs/definitions-definitions-opsgenieuser-properties-username.md new file mode 100644 index 0000000..6740c3c --- /dev/null +++ b/src/types/docs/definitions-definitions-opsgenieuser-properties-username.md @@ -0,0 +1,3 @@ +## username Type + +`string` diff --git a/src/types/docs/definitions-definitions-opsgenieuser.md b/src/types/docs/definitions-definitions-opsgenieuser.md new file mode 100644 index 0000000..99bc23a --- /dev/null +++ b/src/types/docs/definitions-definitions-opsgenieuser.md @@ -0,0 +1,95 @@ +## items Type + +`object` ([Details](definitions-definitions-opsgenieuser.md)) + +# items Properties + +| Property | Type | Required | Nullable | Defined by | +| :-------------------- | :------- | :------- | :------------- | :----------------------------------------------------------------------------------------------------------------------------------- | +| [username](#username) | `string` | Required | cannot be null | [Definitions](definitions-definitions-opsgenieuser-properties-username.md "#/definitions/opsgenieUser/properties/username") | +| [fullName](#fullname) | `string` | Optional | cannot be null | [Definitions](definitions-definitions-opsgenieuser-properties-fullname.md "#/definitions/opsgenieUser/properties/fullName") | +| [id](#id) | `string` | Optional | cannot be null | [Definitions](definitions-definitions-opsgenieuser-properties-id.md "#/definitions/opsgenieUser/properties/id") | +| [type](#type) | `string` | Required | cannot be null | [Definitions](definitions-definitions-opsgenieusertype.md "#/definitions/opsgenieUser/properties/type") | + +## username + + + +`username` + +* is required + +* Type: `string` + +* cannot be null + +* defined in: [Definitions](definitions-definitions-opsgenieuser-properties-username.md "#/definitions/opsgenieUser/properties/username") + +### username Type + +`string` + +## fullName + + + +`fullName` + +* is optional + +* Type: `string` + +* cannot be null + +* defined in: [Definitions](definitions-definitions-opsgenieuser-properties-fullname.md "#/definitions/opsgenieUser/properties/fullName") + +### fullName Type + +`string` + +## id + + + +`id` + +* is optional + +* Type: `string` + +* cannot be null + +* defined in: [Definitions](definitions-definitions-opsgenieuser-properties-id.md "#/definitions/opsgenieUser/properties/id") + +### id Type + +`string` + +## type + + + +`type` + +* is required + +* Type: `string` ([opsgenieUserType](definitions-definitions-opsgenieusertype.md)) + +* cannot be null + +* defined in: [Definitions](definitions-definitions-opsgenieusertype.md "#/definitions/opsgenieUser/properties/type") + +### type Type + +`string` ([opsgenieUserType](definitions-definitions-opsgenieusertype.md)) + +### type Constraints + +**enum**: the value of this property must be equal to one of the following values: + +| Value | Explanation | +| :------------- | :---------- | +| `"team"` | | +| `"user"` | | +| `"escalation"` | | +| `"schedule"` | | diff --git a/src/types/docs/definitions-definitions-opsgenieusertype.md b/src/types/docs/definitions-definitions-opsgenieusertype.md new file mode 100644 index 0000000..0f1c1d6 --- /dev/null +++ b/src/types/docs/definitions-definitions-opsgenieusertype.md @@ -0,0 +1,14 @@ +## type Type + +`string` ([opsgenieUserType](definitions-definitions-opsgenieusertype.md)) + +## type Constraints + +**enum**: the value of this property must be equal to one of the following values: + +| Value | Explanation | +| :------------- | :---------- | +| `"team"` | | +| `"user"` | | +| `"escalation"` | | +| `"schedule"` | | diff --git a/src/types/docs/definitions-definitions-pagerdutyconfig-if-properties-eventtype.md b/src/types/docs/definitions-definitions-pagerdutyconfig-if-properties-eventtype.md new file mode 100644 index 0000000..4f40891 --- /dev/null +++ b/src/types/docs/definitions-definitions-pagerdutyconfig-if-properties-eventtype.md @@ -0,0 +1,11 @@ +## eventType Type + +unknown + +## eventType Constraints + +**constant**: the value of this property must be equal to: + +```json +"alert" +``` diff --git a/src/types/docs/definitions-definitions-pagerdutyconfig-if-properties.md b/src/types/docs/definitions-definitions-pagerdutyconfig-if-properties.md new file mode 100644 index 0000000..c89940c --- /dev/null +++ b/src/types/docs/definitions-definitions-pagerdutyconfig-if-properties.md @@ -0,0 +1,3 @@ +## properties Type + +unknown diff --git a/src/types/docs/definitions-definitions-pagerdutyconfig-if.md b/src/types/docs/definitions-definitions-pagerdutyconfig-if.md new file mode 100644 index 0000000..13f7ca3 --- /dev/null +++ b/src/types/docs/definitions-definitions-pagerdutyconfig-if.md @@ -0,0 +1,35 @@ +## if Type + +unknown + +# if Properties + +| Property | Type | Required | Nullable | Defined by | +| :---------------------- | :------------ | :------- | :------------- | :------------------------------------------------------------------------------------------------------------------------------------------------- | +| [eventType](#eventtype) | Not specified | Optional | cannot be null | [Definitions](definitions-definitions-pagerdutyconfig-if-properties-eventtype.md "#/definitions/pagerDutyConfig/if/properties/eventType") | + +## eventType + + + +`eventType` + +* is optional + +* Type: unknown + +* cannot be null + +* defined in: [Definitions](definitions-definitions-pagerdutyconfig-if-properties-eventtype.md "#/definitions/pagerDutyConfig/if/properties/eventType") + +### eventType Type + +unknown + +### eventType Constraints + +**constant**: the value of this property must be equal to: + +```json +"alert" +``` diff --git a/src/types/docs/definitions-definitions-pagerdutyconfig-properties-class.md b/src/types/docs/definitions-definitions-pagerdutyconfig-properties-class.md new file mode 100644 index 0000000..dbd7e46 --- /dev/null +++ b/src/types/docs/definitions-definitions-pagerdutyconfig-properties-class.md @@ -0,0 +1,3 @@ +## class Type + +`string` diff --git a/src/types/docs/definitions-definitions-pagerdutyconfig-properties-component.md b/src/types/docs/definitions-definitions-pagerdutyconfig-properties-component.md new file mode 100644 index 0000000..9b015f4 --- /dev/null +++ b/src/types/docs/definitions-definitions-pagerdutyconfig-properties-component.md @@ -0,0 +1,3 @@ +## component Type + +`string` diff --git a/src/types/docs/definitions-definitions-pagerdutyconfig-properties-customdetails-additionalproperties.md b/src/types/docs/definitions-definitions-pagerdutyconfig-properties-customdetails-additionalproperties.md new file mode 100644 index 0000000..1a73fed --- /dev/null +++ b/src/types/docs/definitions-definitions-pagerdutyconfig-properties-customdetails-additionalproperties.md @@ -0,0 +1,3 @@ +## additionalProperties Type + +`string` diff --git a/src/types/docs/definitions-definitions-pagerdutyconfig-properties-customdetails.md b/src/types/docs/definitions-definitions-pagerdutyconfig-properties-customdetails.md new file mode 100644 index 0000000..802082b --- /dev/null +++ b/src/types/docs/definitions-definitions-pagerdutyconfig-properties-customdetails.md @@ -0,0 +1,27 @@ +## customDetails Type + +`object` ([Details](definitions-definitions-pagerdutyconfig-properties-customdetails.md)) + +# customDetails Properties + +| Property | Type | Required | Nullable | Defined by | +| :-------------------- | :------- | :------- | :------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| Additional Properties | `string` | Optional | cannot be null | [Definitions](definitions-definitions-pagerdutyconfig-properties-customdetails-additionalproperties.md "#/definitions/pagerDutyConfig/properties/customDetails/additionalProperties") | + +## Additional Properties + +Additional properties are allowed, as long as they follow this schema: + + + +* is optional + +* Type: `string` + +* cannot be null + +* defined in: [Definitions](definitions-definitions-pagerdutyconfig-properties-customdetails-additionalproperties.md "#/definitions/pagerDutyConfig/properties/customDetails/additionalProperties") + +### additionalProperties Type + +`string` diff --git a/src/types/docs/definitions-definitions-pagerdutyconfig-properties-dedupkey.md b/src/types/docs/definitions-definitions-pagerdutyconfig-properties-dedupkey.md new file mode 100644 index 0000000..b483853 --- /dev/null +++ b/src/types/docs/definitions-definitions-pagerdutyconfig-properties-dedupkey.md @@ -0,0 +1,7 @@ +## dedupKey Type + +`string` + +## dedupKey Constraints + +**maximum length**: the maximum number of characters for this string is: `255` diff --git a/src/types/docs/definitions-definitions-pagerdutyconfig-properties-group.md b/src/types/docs/definitions-definitions-pagerdutyconfig-properties-group.md new file mode 100644 index 0000000..8d4b548 --- /dev/null +++ b/src/types/docs/definitions-definitions-pagerdutyconfig-properties-group.md @@ -0,0 +1,3 @@ +## group Type + +`string` diff --git a/src/types/docs/definitions-definitions-pagerdutyconfig-properties-routingkey.md b/src/types/docs/definitions-definitions-pagerdutyconfig-properties-routingkey.md new file mode 100644 index 0000000..efba8a6 --- /dev/null +++ b/src/types/docs/definitions-definitions-pagerdutyconfig-properties-routingkey.md @@ -0,0 +1,9 @@ +## routingKey Type + +`string` + +## routingKey Constraints + +**maximum length**: the maximum number of characters for this string is: `32` + +**minimum length**: the minimum number of characters for this string is: `32` diff --git a/src/types/docs/definitions-definitions-pagerdutyconfig-properties-token.md b/src/types/docs/definitions-definitions-pagerdutyconfig-properties-token.md new file mode 100644 index 0000000..a1df45a --- /dev/null +++ b/src/types/docs/definitions-definitions-pagerdutyconfig-properties-token.md @@ -0,0 +1,3 @@ +## token Type + +`string` diff --git a/src/types/docs/definitions-definitions-pagerdutyconfig-properties.md b/src/types/docs/definitions-definitions-pagerdutyconfig-properties.md new file mode 100644 index 0000000..c89940c --- /dev/null +++ b/src/types/docs/definitions-definitions-pagerdutyconfig-properties.md @@ -0,0 +1,3 @@ +## properties Type + +unknown diff --git a/src/types/docs/definitions-definitions-pagerdutyconfig-then.md b/src/types/docs/definitions-definitions-pagerdutyconfig-then.md new file mode 100644 index 0000000..139b21d --- /dev/null +++ b/src/types/docs/definitions-definitions-pagerdutyconfig-then.md @@ -0,0 +1,3 @@ +## then Type + +unknown diff --git a/src/types/docs/definitions-definitions-pagerdutyconfig.md b/src/types/docs/definitions-definitions-pagerdutyconfig.md new file mode 100644 index 0000000..4052d70 --- /dev/null +++ b/src/types/docs/definitions-definitions-pagerdutyconfig.md @@ -0,0 +1,242 @@ +## 5 Type + +unknown ([PagerDutyConfig](definitions-definitions-pagerdutyconfig.md)) + +## 5 Constraints + +**URI reference**: the string must be a URI reference, according to [RFC 3986](https://tools.ietf.org/html/rfc3986 "check the specification") + +# 5 Properties + +| Property | Type | Required | Nullable | Defined by | +| :------------------------------ | :------- | :------- | :------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------- | +| [token](#token) | `string` | Required | cannot be null | [Definitions](definitions-definitions-pagerdutyconfig-properties-token.md "#/definitions/pagerDutyConfig/properties/token") | +| [eventType](#eventtype) | `string` | Required | cannot be null | [Definitions](definitions-definitions-pagerdutyeventtype.md "#/definitions/pagerDutyConfig/properties/eventType") | +| [routingKey](#routingkey) | `string` | Required | cannot be null | [Definitions](definitions-definitions-pagerdutyconfig-properties-routingkey.md "#/definitions/pagerDutyConfig/properties/routingKey") | +| [eventAction](#eventaction) | `string` | Optional | cannot be null | [Definitions](definitions-definitions-pagerdutyeventaction.md "#/definitions/pagerDutyConfig/properties/eventAction") | +| [dedupKey](#dedupkey) | `string` | Optional | cannot be null | [Definitions](definitions-definitions-pagerdutyconfig-properties-dedupkey.md "#/definitions/pagerDutyConfig/properties/dedupKey") | +| [severity](#severity) | `string` | Optional | cannot be null | [Definitions](definitions-definitions-pagerdutyseverity.md "#/definitions/pagerDutyConfig/properties/severity") | +| [component](#component) | `string` | Optional | cannot be null | [Definitions](definitions-definitions-pagerdutyconfig-properties-component.md "#/definitions/pagerDutyConfig/properties/component") | +| [group](#group) | `string` | Optional | cannot be null | [Definitions](definitions-definitions-pagerdutyconfig-properties-group.md "#/definitions/pagerDutyConfig/properties/group") | +| [class](#class) | `string` | Optional | cannot be null | [Definitions](definitions-definitions-pagerdutyconfig-properties-class.md "#/definitions/pagerDutyConfig/properties/class") | +| [customDetails](#customdetails) | `object` | Optional | cannot be null | [Definitions](definitions-definitions-pagerdutyconfig-properties-customdetails.md "#/definitions/pagerDutyConfig/properties/customDetails") | + +## token + + + +`token` + +* is required + +* Type: `string` + +* cannot be null + +* defined in: [Definitions](definitions-definitions-pagerdutyconfig-properties-token.md "#/definitions/pagerDutyConfig/properties/token") + +### token Type + +`string` + +## eventType + + + +`eventType` + +* is required + +* Type: `string` ([PagerDutyEventType](definitions-definitions-pagerdutyeventtype.md)) + +* cannot be null + +* defined in: [Definitions](definitions-definitions-pagerdutyeventtype.md "#/definitions/pagerDutyConfig/properties/eventType") + +### eventType Type + +`string` ([PagerDutyEventType](definitions-definitions-pagerdutyeventtype.md)) + +### eventType Constraints + +**enum**: the value of this property must be equal to one of the following values: + +| Value | Explanation | +| :--------- | :---------- | +| `"change"` | | +| `"alert"` | | + +## routingKey + + + +`routingKey` + +* is required + +* Type: `string` + +* cannot be null + +* defined in: [Definitions](definitions-definitions-pagerdutyconfig-properties-routingkey.md "#/definitions/pagerDutyConfig/properties/routingKey") + +### routingKey Type + +`string` + +### routingKey Constraints + +**maximum length**: the maximum number of characters for this string is: `32` + +**minimum length**: the minimum number of characters for this string is: `32` + +## eventAction + + + +`eventAction` + +* is optional + +* Type: `string` ([PagerDutyEventAction](definitions-definitions-pagerdutyeventaction.md)) + +* cannot be null + +* defined in: [Definitions](definitions-definitions-pagerdutyeventaction.md "#/definitions/pagerDutyConfig/properties/eventAction") + +### eventAction Type + +`string` ([PagerDutyEventAction](definitions-definitions-pagerdutyeventaction.md)) + +### eventAction Constraints + +**enum**: the value of this property must be equal to one of the following values: + +| Value | Explanation | +| :-------------- | :---------- | +| `"trigger"` | | +| `"acknowledge"` | | +| `"resolve"` | | + +## dedupKey + + + +`dedupKey` + +* is optional + +* Type: `string` + +* cannot be null + +* defined in: [Definitions](definitions-definitions-pagerdutyconfig-properties-dedupkey.md "#/definitions/pagerDutyConfig/properties/dedupKey") + +### dedupKey Type + +`string` + +### dedupKey Constraints + +**maximum length**: the maximum number of characters for this string is: `255` + +## severity + + + +`severity` + +* is optional + +* Type: `string` ([PagerDutySeverity](definitions-definitions-pagerdutyseverity.md)) + +* cannot be null + +* defined in: [Definitions](definitions-definitions-pagerdutyseverity.md "#/definitions/pagerDutyConfig/properties/severity") + +### severity Type + +`string` ([PagerDutySeverity](definitions-definitions-pagerdutyseverity.md)) + +### severity Constraints + +**enum**: the value of this property must be equal to one of the following values: + +| Value | Explanation | +| :----------- | :---------- | +| `"critical"` | | +| `"error"` | | +| `"warning"` | | +| `"info"` | | + +## component + + + +`component` + +* is optional + +* Type: `string` + +* cannot be null + +* defined in: [Definitions](definitions-definitions-pagerdutyconfig-properties-component.md "#/definitions/pagerDutyConfig/properties/component") + +### component Type + +`string` + +## group + + + +`group` + +* is optional + +* Type: `string` + +* cannot be null + +* defined in: [Definitions](definitions-definitions-pagerdutyconfig-properties-group.md "#/definitions/pagerDutyConfig/properties/group") + +### group Type + +`string` + +## class + + + +`class` + +* is optional + +* Type: `string` + +* cannot be null + +* defined in: [Definitions](definitions-definitions-pagerdutyconfig-properties-class.md "#/definitions/pagerDutyConfig/properties/class") + +### class Type + +`string` + +## customDetails + + + +`customDetails` + +* is optional + +* Type: `object` ([Details](definitions-definitions-pagerdutyconfig-properties-customdetails.md)) + +* cannot be null + +* defined in: [Definitions](definitions-definitions-pagerdutyconfig-properties-customdetails.md "#/definitions/pagerDutyConfig/properties/customDetails") + +### customDetails Type + +`object` ([Details](definitions-definitions-pagerdutyconfig-properties-customdetails.md)) diff --git a/src/types/docs/definitions-definitions-pagerdutyeventaction.md b/src/types/docs/definitions-definitions-pagerdutyeventaction.md new file mode 100644 index 0000000..db971dc --- /dev/null +++ b/src/types/docs/definitions-definitions-pagerdutyeventaction.md @@ -0,0 +1,13 @@ +## eventAction Type + +`string` ([PagerDutyEventAction](definitions-definitions-pagerdutyeventaction.md)) + +## eventAction Constraints + +**enum**: the value of this property must be equal to one of the following values: + +| Value | Explanation | +| :-------------- | :---------- | +| `"trigger"` | | +| `"acknowledge"` | | +| `"resolve"` | | diff --git a/src/types/docs/definitions-definitions-pagerdutyeventtype.md b/src/types/docs/definitions-definitions-pagerdutyeventtype.md new file mode 100644 index 0000000..e32833b --- /dev/null +++ b/src/types/docs/definitions-definitions-pagerdutyeventtype.md @@ -0,0 +1,12 @@ +## eventType Type + +`string` ([PagerDutyEventType](definitions-definitions-pagerdutyeventtype.md)) + +## eventType Constraints + +**enum**: the value of this property must be equal to one of the following values: + +| Value | Explanation | +| :--------- | :---------- | +| `"change"` | | +| `"alert"` | | diff --git a/src/types/docs/definitions-definitions-pagerdutyseverity.md b/src/types/docs/definitions-definitions-pagerdutyseverity.md new file mode 100644 index 0000000..0470f40 --- /dev/null +++ b/src/types/docs/definitions-definitions-pagerdutyseverity.md @@ -0,0 +1,14 @@ +## severity Type + +`string` ([PagerDutySeverity](definitions-definitions-pagerdutyseverity.md)) + +## severity Constraints + +**enum**: the value of this property must be equal to one of the following values: + +| Value | Explanation | +| :----------- | :---------- | +| `"critical"` | | +| `"error"` | | +| `"warning"` | | +| `"info"` | | diff --git a/src/types/docs/definitions-definitions-policy-properties-eip1559-pricing.md b/src/types/docs/definitions-definitions-policy-properties-eip1559-pricing.md new file mode 100644 index 0000000..d5a304c --- /dev/null +++ b/src/types/docs/definitions-definitions-policy-properties-eip1559-pricing.md @@ -0,0 +1,3 @@ +## eip1559-pricing Type + +`boolean` diff --git a/src/types/docs/definitions-definitions-policy-properties-gas-price-cap.md b/src/types/docs/definitions-definitions-policy-properties-gas-price-cap.md new file mode 100644 index 0000000..e7c965f --- /dev/null +++ b/src/types/docs/definitions-definitions-policy-properties-gas-price-cap.md @@ -0,0 +1,3 @@ +## gas-price-cap Type + +`integer` diff --git a/src/types/docs/definitions-definitions-policy-properties-private-transactions.md b/src/types/docs/definitions-definitions-policy-properties-private-transactions.md new file mode 100644 index 0000000..7b4b6be --- /dev/null +++ b/src/types/docs/definitions-definitions-policy-properties-private-transactions.md @@ -0,0 +1,3 @@ +## private-transactions Type + +`boolean` diff --git a/src/types/docs/definitions-definitions-policy-properties-whitelistreceivers-items.md b/src/types/docs/definitions-definitions-policy-properties-whitelistreceivers-items.md new file mode 100644 index 0000000..98d2045 --- /dev/null +++ b/src/types/docs/definitions-definitions-policy-properties-whitelistreceivers-items.md @@ -0,0 +1,3 @@ +## items Type + +`string` diff --git a/src/types/docs/definitions-definitions-policy-properties-whitelistreceivers.md b/src/types/docs/definitions-definitions-policy-properties-whitelistreceivers.md new file mode 100644 index 0000000..8d96b48 --- /dev/null +++ b/src/types/docs/definitions-definitions-policy-properties-whitelistreceivers.md @@ -0,0 +1,3 @@ +## whitelist-receivers Type + +`string[]` diff --git a/src/types/docs/definitions-definitions-policy.md b/src/types/docs/definitions-definitions-policy.md new file mode 100644 index 0000000..e09d014 --- /dev/null +++ b/src/types/docs/definitions-definitions-policy.md @@ -0,0 +1,88 @@ +## additionalProperties Type + +`object` ([Policy](definitions-definitions-policy.md)) + +## additionalProperties Constraints + +**URI reference**: the string must be a URI reference, according to [RFC 3986](https://tools.ietf.org/html/rfc3986 "check the specification") + +# additionalProperties Properties + +| Property | Type | Required | Nullable | Defined by | +| :-------------------------------------------- | :-------- | :------- | :------------- | :----------------------------------------------------------------------------------------------------------------------------------------------- | +| [gas-price-cap](#gas-price-cap) | `integer` | Optional | cannot be null | [Definitions](definitions-definitions-policy-properties-gas-price-cap.md "#/definitions/policy/properties/gas-price-cap") | +| [whitelist-receivers](#whitelist-receivers) | `array` | Optional | cannot be null | [Definitions](definitions-definitions-policy-properties-whitelistreceivers.md "#/definitions/policy/properties/whitelist-receivers") | +| [eip1559-pricing](#eip1559-pricing) | `boolean` | Optional | cannot be null | [Definitions](definitions-definitions-policy-properties-eip1559-pricing.md "#/definitions/policy/properties/eip1559-pricing") | +| [private-transactions](#private-transactions) | `boolean` | Optional | cannot be null | [Definitions](definitions-definitions-policy-properties-private-transactions.md "#/definitions/policy/properties/private-transactions") | + +## gas-price-cap + + + +`gas-price-cap` + +* is optional + +* Type: `integer` + +* cannot be null + +* defined in: [Definitions](definitions-definitions-policy-properties-gas-price-cap.md "#/definitions/policy/properties/gas-price-cap") + +### gas-price-cap Type + +`integer` + +## whitelist-receivers + + + +`whitelist-receivers` + +* is optional + +* Type: `string[]` + +* cannot be null + +* defined in: [Definitions](definitions-definitions-policy-properties-whitelistreceivers.md "#/definitions/policy/properties/whitelist-receivers") + +### whitelist-receivers Type + +`string[]` + +## eip1559-pricing + + + +`eip1559-pricing` + +* is optional + +* Type: `boolean` + +* cannot be null + +* defined in: [Definitions](definitions-definitions-policy-properties-eip1559-pricing.md "#/definitions/policy/properties/eip1559-pricing") + +### eip1559-pricing Type + +`boolean` + +## private-transactions + + + +`private-transactions` + +* is optional + +* Type: `boolean` + +* cannot be null + +* defined in: [Definitions](definitions-definitions-policy-properties-private-transactions.md "#/definitions/policy/properties/private-transactions") + +### private-transactions Type + +`boolean` diff --git a/src/types/docs/definitions-definitions-relayer-properties-addressfromrelayer.md b/src/types/docs/definitions-definitions-relayer-properties-addressfromrelayer.md new file mode 100644 index 0000000..8c40842 --- /dev/null +++ b/src/types/docs/definitions-definitions-relayer-properties-addressfromrelayer.md @@ -0,0 +1,3 @@ +## address-from-relayer Type + +`object` ([AddressFromRelayer](definitions-definitions-relayer-properties-addressfromrelayer.md)) diff --git a/src/types/docs/definitions-definitions-relayer-properties-min-balance.md b/src/types/docs/definitions-definitions-relayer-properties-min-balance.md new file mode 100644 index 0000000..ea9edbb --- /dev/null +++ b/src/types/docs/definitions-definitions-relayer-properties-min-balance.md @@ -0,0 +1,3 @@ +## min-balance Type + +`integer` diff --git a/src/types/docs/definitions-definitions-relayer-properties-name.md b/src/types/docs/definitions-definitions-relayer-properties-name.md new file mode 100644 index 0000000..141700b --- /dev/null +++ b/src/types/docs/definitions-definitions-relayer-properties-name.md @@ -0,0 +1,3 @@ +## name Type + +`string` diff --git a/src/types/docs/definitions-definitions-relayer-properties-relayerapikeys-items.md b/src/types/docs/definitions-definitions-relayer-properties-relayerapikeys-items.md new file mode 100644 index 0000000..98d2045 --- /dev/null +++ b/src/types/docs/definitions-definitions-relayer-properties-relayerapikeys-items.md @@ -0,0 +1,3 @@ +## items Type + +`string` diff --git a/src/types/docs/definitions-definitions-relayer-properties-relayerapikeys.md b/src/types/docs/definitions-definitions-relayer-properties-relayerapikeys.md new file mode 100644 index 0000000..43c4440 --- /dev/null +++ b/src/types/docs/definitions-definitions-relayer-properties-relayerapikeys.md @@ -0,0 +1,3 @@ +## api-keys Type + +`string[]` diff --git a/src/types/docs/definitions-definitions-relayer.md b/src/types/docs/definitions-definitions-relayer.md new file mode 100644 index 0000000..c5a8171 --- /dev/null +++ b/src/types/docs/definitions-definitions-relayer.md @@ -0,0 +1,180 @@ +## additionalProperties Type + +`object` ([Relayer](definitions-definitions-relayer.md)) + +## additionalProperties Constraints + +**URI reference**: the string must be a URI reference, according to [RFC 3986](https://tools.ietf.org/html/rfc3986 "check the specification") + +# additionalProperties Properties + +| Property | Type | Required | Nullable | Defined by | +| :-------------------------------------------- | :-------- | :------- | :------------- | :----------------------------------------------------------------------------------------------------------------------------------------------- | +| [name](#name) | `string` | Required | cannot be null | [Definitions](definitions-definitions-relayer-properties-name.md "#/definitions/relayer/properties/name") | +| [network](#network) | `string` | Required | cannot be null | [Definitions](definitions-definitions-network.md "#/definitions/relayer/properties/network") | +| [min-balance](#min-balance) | `integer` | Required | cannot be null | [Definitions](definitions-definitions-relayer-properties-min-balance.md "#/definitions/relayer/properties/min-balance") | +| [address-from-relayer](#address-from-relayer) | `object` | Optional | cannot be null | [Definitions](definitions-definitions-relayer-properties-addressfromrelayer.md "#/definitions/relayer/properties/address-from-relayer") | +| [policy](#policy) | `object` | Optional | cannot be null | [Definitions](definitions-definitions-policy.md "#/definitions/relayer/properties/policy") | +| [api-keys](#api-keys) | `array` | Optional | cannot be null | [Definitions](definitions-definitions-relayer-properties-relayerapikeys.md "#/definitions/relayer/properties/api-keys") | + +## name + + + +`name` + +* is required + +* Type: `string` + +* cannot be null + +* defined in: [Definitions](definitions-definitions-relayer-properties-name.md "#/definitions/relayer/properties/name") + +### name Type + +`string` + +## network + + + +`network` + +* is required + +* Type: `string` ([Network](definitions-definitions-network.md)) + +* cannot be null + +* defined in: [Definitions](definitions-definitions-network.md "#/definitions/relayer/properties/network") + +### network Type + +`string` ([Network](definitions-definitions-network.md)) + +### network Constraints + +**enum**: the value of this property must be equal to one of the following values: + +| Value | Explanation | +| :------------------------ | :---------- | +| `"mainnet"` | | +| `"sepolia"` | | +| `"rinkeby"` | | +| `"ropsten"` | | +| `"kovan"` | | +| `"goerli"` | | +| `"xdai"` | | +| `"sokol"` | | +| `"fuse"` | | +| `"bsc"` | | +| `"bsctest"` | | +| `"fantom"` | | +| `"fantomtest"` | | +| `"moonbase"` | | +| `"moonriver"` | | +| `"moonbeam"` | | +| `"matic"` | | +| `"mumbai"` | | +| `"avalanche"` | | +| `"fuji"` | | +| `"optimism"` | | +| `"optimism-kovan"` | | +| `"optimism-goerli"` | | +| `"arbitrum"` | | +| `"arbitrum-nova"` | | +| `"arbitrum-rinkeby"` | | +| `"arbitrum-goerli"` | | +| `"celo"` | | +| `"alfajores"` | | +| `"harmony-s0"` | | +| `"harmony-test-s0"` | | +| `"aurora"` | | +| `"auroratest"` | | +| `"hedera"` | | +| `"hederatest"` | | +| `"x-dfk-avax-chain"` | | +| `"x-dfk-avax-chain-test"` | | +| `"zksync"` | | +| `"zksync-goerli"` | | +| `"base-goerli"` | | +| `"linea-goerli"` | | + +**URI reference**: the string must be a URI reference, according to [RFC 3986](https://tools.ietf.org/html/rfc3986 "check the specification") + +## min-balance + + + +`min-balance` + +* is required + +* Type: `integer` + +* cannot be null + +* defined in: [Definitions](definitions-definitions-relayer-properties-min-balance.md "#/definitions/relayer/properties/min-balance") + +### min-balance Type + +`integer` + +## address-from-relayer + + + +`address-from-relayer` + +* is optional + +* Type: `object` ([AddressFromRelayer](definitions-definitions-relayer-properties-addressfromrelayer.md)) + +* cannot be null + +* defined in: [Definitions](definitions-definitions-relayer-properties-addressfromrelayer.md "#/definitions/relayer/properties/address-from-relayer") + +### address-from-relayer Type + +`object` ([AddressFromRelayer](definitions-definitions-relayer-properties-addressfromrelayer.md)) + +## policy + + + +`policy` + +* is optional + +* Type: `object` ([Policy](definitions-definitions-policy.md)) + +* cannot be null + +* defined in: [Definitions](definitions-definitions-policy.md "#/definitions/relayer/properties/policy") + +### policy Type + +`object` ([Policy](definitions-definitions-policy.md)) + +### policy Constraints + +**URI reference**: the string must be a URI reference, according to [RFC 3986](https://tools.ietf.org/html/rfc3986 "check the specification") + +## api-keys + + + +`api-keys` + +* is optional + +* Type: `string[]` + +* cannot be null + +* defined in: [Definitions](definitions-definitions-relayer-properties-relayerapikeys.md "#/definitions/relayer/properties/api-keys") + +### api-keys Type + +`string[]` diff --git a/src/types/docs/definitions-definitions-riskcategory.md b/src/types/docs/definitions-definitions-riskcategory.md new file mode 100644 index 0000000..0840154 --- /dev/null +++ b/src/types/docs/definitions-definitions-riskcategory.md @@ -0,0 +1,16 @@ +## risk-category Type + +`string` ([RiskCategory](definitions-definitions-riskcategory.md)) + +## risk-category Constraints + +**enum**: the value of this property must be equal to one of the following values: + +| Value | Explanation | +| :----------------- | :---------- | +| `"NONE"` | | +| `"GOVERNANCE"` | | +| `"ACCESS-CONTROL"` | | +| `"SUSPICIOUS"` | | +| `"FINANCIAL"` | | +| `"TECHNICAL"` | | diff --git a/src/types/docs/definitions-definitions-sentinel.md b/src/types/docs/definitions-definitions-sentinel.md new file mode 100644 index 0000000..d6f17d3 --- /dev/null +++ b/src/types/docs/definitions-definitions-sentinel.md @@ -0,0 +1,17 @@ +## additionalProperties Type + +`object` ([Sentinel](definitions-definitions-sentinel.md)) + +one (and only one) of + +* [BlockSentinel](definitions-definitions-blocksentinel.md "check type definition") + +* any of + + * [Untitled type in Definitions](definitions-definitions-fortasentinel-anyof-0.md "check type definition") + + * [Untitled type in Definitions](definitions-definitions-fortasentinel-anyof-1.md "check type definition") + +## additionalProperties Constraints + +**URI reference**: the string must be a URI reference, according to [RFC 3986](https://tools.ietf.org/html/rfc3986 "check the specification") diff --git a/src/types/docs/definitions-definitions-telegramconfig-properties-bot-token.md b/src/types/docs/definitions-definitions-telegramconfig-properties-bot-token.md new file mode 100644 index 0000000..dd029c4 --- /dev/null +++ b/src/types/docs/definitions-definitions-telegramconfig-properties-bot-token.md @@ -0,0 +1,3 @@ +## bot-token Type + +`string` diff --git a/src/types/docs/definitions-definitions-telegramconfig-properties-chat-id.md b/src/types/docs/definitions-definitions-telegramconfig-properties-chat-id.md new file mode 100644 index 0000000..97cf5c3 --- /dev/null +++ b/src/types/docs/definitions-definitions-telegramconfig-properties-chat-id.md @@ -0,0 +1,3 @@ +## chat-id Type + +`string` diff --git a/src/types/docs/definitions-definitions-telegramconfig.md b/src/types/docs/definitions-definitions-telegramconfig.md new file mode 100644 index 0000000..5a88bc4 --- /dev/null +++ b/src/types/docs/definitions-definitions-telegramconfig.md @@ -0,0 +1,50 @@ +## 1 Type + +`object` ([TelegramConfig](definitions-definitions-telegramconfig.md)) + +## 1 Constraints + +**URI reference**: the string must be a URI reference, according to [RFC 3986](https://tools.ietf.org/html/rfc3986 "check the specification") + +# 1 Properties + +| Property | Type | Required | Nullable | Defined by | +| :---------------------- | :------- | :------- | :------------- | :-------------------------------------------------------------------------------------------------------------------------------------------- | +| [bot-token](#bot-token) | `string` | Required | cannot be null | [Definitions](definitions-definitions-telegramconfig-properties-bot-token.md "#/definitions/telegramBotConfig/properties/bot-token") | +| [chat-id](#chat-id) | `string` | Required | cannot be null | [Definitions](definitions-definitions-telegramconfig-properties-chat-id.md "#/definitions/telegramBotConfig/properties/chat-id") | + +## bot-token + + + +`bot-token` + +* is required + +* Type: `string` + +* cannot be null + +* defined in: [Definitions](definitions-definitions-telegramconfig-properties-bot-token.md "#/definitions/telegramBotConfig/properties/bot-token") + +### bot-token Type + +`string` + +## chat-id + + + +`chat-id` + +* is required + +* Type: `string` + +* cannot be null + +* defined in: [Definitions](definitions-definitions-telegramconfig-properties-chat-id.md "#/definitions/telegramBotConfig/properties/chat-id") + +### chat-id Type + +`string` diff --git a/src/types/docs/definitions-definitions-urlconfig-properties-url.md b/src/types/docs/definitions-definitions-urlconfig-properties-url.md new file mode 100644 index 0000000..b347676 --- /dev/null +++ b/src/types/docs/definitions-definitions-urlconfig-properties-url.md @@ -0,0 +1,7 @@ +## url Type + +`string` + +## url Constraints + +**URI**: the string must be a URI, according to [RFC 3986](https://tools.ietf.org/html/rfc3986 "check the specification") diff --git a/src/types/docs/definitions-definitions-urlconfig.md b/src/types/docs/definitions-definitions-urlconfig.md new file mode 100644 index 0000000..0a972e8 --- /dev/null +++ b/src/types/docs/definitions-definitions-urlconfig.md @@ -0,0 +1,35 @@ +## 3 Type + +`object` ([UrlConfig](definitions-definitions-urlconfig.md)) + +## 3 Constraints + +**URI reference**: the string must be a URI reference, according to [RFC 3986](https://tools.ietf.org/html/rfc3986 "check the specification") + +# 3 Properties + +| Property | Type | Required | Nullable | Defined by | +| :---------- | :------- | :------- | :------------- | :------------------------------------------------------------------------------------------------------------------- | +| [url](#url) | `string` | Required | cannot be null | [Definitions](definitions-definitions-urlconfig-properties-url.md "#/definitions/urlConfig/properties/url") | + +## url + + + +`url` + +* is required + +* Type: `string` + +* cannot be null + +* defined in: [Definitions](definitions-definitions-urlconfig-properties-url.md "#/definitions/urlConfig/properties/url") + +### url Type + +`string` + +### url Constraints + +**URI**: the string must be a URI, according to [RFC 3986](https://tools.ietf.org/html/rfc3986 "check the specification") diff --git a/src/types/docs/definitions-definitions.md b/src/types/docs/definitions-definitions.md new file mode 100644 index 0000000..0664bcd --- /dev/null +++ b/src/types/docs/definitions-definitions.md @@ -0,0 +1,3 @@ +## definitions Type + +unknown diff --git a/src/types/docs/definitions.md b/src/types/docs/definitions.md new file mode 100644 index 0000000..3c35ed0 --- /dev/null +++ b/src/types/docs/definitions.md @@ -0,0 +1,2499 @@ +## Definitions Type + +unknown ([Definitions](definitions.md)) + +# Definitions Definitions + +## Definitions group address + +Reference this group by using + +```json +{"$ref":"#/definitions/address"} +``` + +| Property | Type | Required | Nullable | Defined by | +| :------- | :--- | :------- | :------- | :--------- | + +## Definitions group risk-category + +Reference this group by using + +```json +{"$ref":"#/definitions/risk-category"} +``` + +| Property | Type | Required | Nullable | Defined by | +| :------- | :--- | :------- | :------- | :--------- | + +## Definitions group network + +Reference this group by using + +```json +{"$ref":"#/definitions/network"} +``` + +| Property | Type | Required | Nullable | Defined by | +| :------- | :--- | :------- | :------- | :--------- | + +## Definitions group policy + +Reference this group by using + +```json +{"$ref":"#/definitions/policy"} +``` + +| Property | Type | Required | Nullable | Defined by | +| :-------------------------------------------- | :-------- | :------- | :------------- | :----------------------------------------------------------------------------------------------------------------------------------------------- | +| [gas-price-cap](#gas-price-cap) | `integer` | Optional | cannot be null | [Definitions](definitions-definitions-policy-properties-gas-price-cap.md "#/definitions/policy/properties/gas-price-cap") | +| [whitelist-receivers](#whitelist-receivers) | `array` | Optional | cannot be null | [Definitions](definitions-definitions-policy-properties-whitelistreceivers.md "#/definitions/policy/properties/whitelist-receivers") | +| [eip1559-pricing](#eip1559-pricing) | `boolean` | Optional | cannot be null | [Definitions](definitions-definitions-policy-properties-eip1559-pricing.md "#/definitions/policy/properties/eip1559-pricing") | +| [private-transactions](#private-transactions) | `boolean` | Optional | cannot be null | [Definitions](definitions-definitions-policy-properties-private-transactions.md "#/definitions/policy/properties/private-transactions") | + +### gas-price-cap + + + +`gas-price-cap` + +* is optional + +* Type: `integer` + +* cannot be null + +* defined in: [Definitions](definitions-definitions-policy-properties-gas-price-cap.md "#/definitions/policy/properties/gas-price-cap") + +#### gas-price-cap Type + +`integer` + +### whitelist-receivers + + + +`whitelist-receivers` + +* is optional + +* Type: `string[]` + +* cannot be null + +* defined in: [Definitions](definitions-definitions-policy-properties-whitelistreceivers.md "#/definitions/policy/properties/whitelist-receivers") + +#### whitelist-receivers Type + +`string[]` + +### eip1559-pricing + + + +`eip1559-pricing` + +* is optional + +* Type: `boolean` + +* cannot be null + +* defined in: [Definitions](definitions-definitions-policy-properties-eip1559-pricing.md "#/definitions/policy/properties/eip1559-pricing") + +#### eip1559-pricing Type + +`boolean` + +### private-transactions + + + +`private-transactions` + +* is optional + +* Type: `boolean` + +* cannot be null + +* defined in: [Definitions](definitions-definitions-policy-properties-private-transactions.md "#/definitions/policy/properties/private-transactions") + +#### private-transactions Type + +`boolean` + +## Definitions group relayer + +Reference this group by using + +```json +{"$ref":"#/definitions/relayer"} +``` + +| Property | Type | Required | Nullable | Defined by | +| :-------------------------------------------- | :-------- | :------- | :------------- | :----------------------------------------------------------------------------------------------------------------------------------------------- | +| [name](#name) | `string` | Required | cannot be null | [Definitions](definitions-definitions-relayer-properties-name.md "#/definitions/relayer/properties/name") | +| [network](#network) | `string` | Required | cannot be null | [Definitions](definitions-definitions-relayer-properties-network.md "#/definitions/relayer/properties/network") | +| [min-balance](#min-balance) | `integer` | Required | cannot be null | [Definitions](definitions-definitions-relayer-properties-min-balance.md "#/definitions/relayer/properties/min-balance") | +| [address-from-relayer](#address-from-relayer) | `object` | Optional | cannot be null | [Definitions](definitions-definitions-relayer-properties-addressfromrelayer.md "#/definitions/relayer/properties/address-from-relayer") | +| [policy](#policy) | `object` | Optional | cannot be null | [Definitions](definitions-definitions-policy.md "#/definitions/relayer/properties/policy") | +| [api-keys](#api-keys) | `array` | Optional | cannot be null | [Definitions](definitions-definitions-relayer-properties-relayerapikeys.md "#/definitions/relayer/properties/api-keys") | + +### name + + + +`name` + +* is required + +* Type: `string` + +* cannot be null + +* defined in: [Definitions](definitions-definitions-relayer-properties-name.md "#/definitions/relayer/properties/name") + +#### name Type + +`string` + +### network + + + +`network` + +* is required + +* Type: `string` ([Network](definitions-definitions-relayer-properties-network.md)) + +* cannot be null + +* defined in: [Definitions](definitions-definitions-relayer-properties-network.md "#/definitions/relayer/properties/network") + +#### network Type + +`string` ([Network](definitions-definitions-relayer-properties-network.md)) + +#### network Constraints + +**enum**: the value of this property must be equal to one of the following values: + +| Value | Explanation | +| :------------------------ | :---------- | +| `"mainnet"` | | +| `"sepolia"` | | +| `"rinkeby"` | | +| `"ropsten"` | | +| `"kovan"` | | +| `"goerli"` | | +| `"xdai"` | | +| `"sokol"` | | +| `"fuse"` | | +| `"bsc"` | | +| `"bsctest"` | | +| `"fantom"` | | +| `"fantomtest"` | | +| `"moonbase"` | | +| `"moonriver"` | | +| `"moonbeam"` | | +| `"matic"` | | +| `"mumbai"` | | +| `"avalanche"` | | +| `"fuji"` | | +| `"optimism"` | | +| `"optimism-kovan"` | | +| `"optimism-goerli"` | | +| `"arbitrum"` | | +| `"arbitrum-nova"` | | +| `"arbitrum-rinkeby"` | | +| `"arbitrum-goerli"` | | +| `"celo"` | | +| `"alfajores"` | | +| `"harmony-s0"` | | +| `"harmony-test-s0"` | | +| `"aurora"` | | +| `"auroratest"` | | +| `"hedera"` | | +| `"hederatest"` | | +| `"x-dfk-avax-chain"` | | +| `"x-dfk-avax-chain-test"` | | +| `"zksync"` | | +| `"zksync-goerli"` | | +| `"base-goerli"` | | +| `"linea-goerli"` | | + +**URI reference**: the string must be a URI reference, according to [RFC 3986](https://tools.ietf.org/html/rfc3986 "check the specification") + +### min-balance + + + +`min-balance` + +* is required + +* Type: `integer` + +* cannot be null + +* defined in: [Definitions](definitions-definitions-relayer-properties-min-balance.md "#/definitions/relayer/properties/min-balance") + +#### min-balance Type + +`integer` + +### address-from-relayer + + + +`address-from-relayer` + +* is optional + +* Type: `object` ([AddressFromRelayer](definitions-definitions-relayer-properties-addressfromrelayer.md)) + +* cannot be null + +* defined in: [Definitions](definitions-definitions-relayer-properties-addressfromrelayer.md "#/definitions/relayer/properties/address-from-relayer") + +#### address-from-relayer Type + +`object` ([AddressFromRelayer](definitions-definitions-relayer-properties-addressfromrelayer.md)) + +### policy + + + +`policy` + +* is optional + +* Type: `object` ([Policy](definitions-definitions-policy.md)) + +* cannot be null + +* defined in: [Definitions](definitions-definitions-policy.md "#/definitions/relayer/properties/policy") + +#### policy Type + +`object` ([Policy](definitions-definitions-policy.md)) + +#### policy Constraints + +**URI reference**: the string must be a URI reference, according to [RFC 3986](https://tools.ietf.org/html/rfc3986 "check the specification") + +### api-keys + + + +`api-keys` + +* is optional + +* Type: `string[]` + +* cannot be null + +* defined in: [Definitions](definitions-definitions-relayer-properties-relayerapikeys.md "#/definitions/relayer/properties/api-keys") + +#### api-keys Type + +`string[]` + +## Definitions group contract + +Reference this group by using + +```json +{"$ref":"#/definitions/contract"} +``` + +| Property | Type | Required | Nullable | Defined by | +| :-------------------- | :------- | :------- | :------------- | :--------------------------------------------------------------------------------------------------------------------------- | +| [name](#name-1) | `string` | Required | cannot be null | [Definitions](definitions-definitions-contract-properties-name.md "#/definitions/contract/properties/name") | +| [address](#address) | `string` | Required | cannot be null | [Definitions](definitions-definitions-contract-properties-address.md "#/definitions/contract/properties/address") | +| [network](#network-1) | `string` | Required | cannot be null | [Definitions](definitions-definitions-contract-properties-network.md "#/definitions/contract/properties/network") | +| [abi](#abi) | Merged | Optional | cannot be null | [Definitions](definitions-definitions-abitype.md "#/definitions/contract/properties/abi") | +| [nat-spec](#nat-spec) | `string` | Optional | cannot be null | [Definitions](definitions-definitions-contract-properties-nat-spec.md "#/definitions/contract/properties/nat-spec") | + +### name + + + +`name` + +* is required + +* Type: `string` + +* cannot be null + +* defined in: [Definitions](definitions-definitions-contract-properties-name.md "#/definitions/contract/properties/name") + +#### name Type + +`string` + +### address + + + +`address` + +* is required + +* Type: `string` ([Address](definitions-definitions-contract-properties-address.md)) + +* cannot be null + +* defined in: [Definitions](definitions-definitions-contract-properties-address.md "#/definitions/contract/properties/address") + +#### address Type + +`string` ([Address](definitions-definitions-contract-properties-address.md)) + +#### address Constraints + +**pattern**: the string must match the following regular expression: + +```regexp +^0x[a-fA-F0-9]{40}$ +``` + +[try pattern](https://regexr.com/?expression=%5E0x%5Ba-fA-F0-9%5D%7B40%7D%24 "try regular expression with regexr.com") + +**URI reference**: the string must be a URI reference, according to [RFC 3986](https://tools.ietf.org/html/rfc3986 "check the specification") + +### network + + + +`network` + +* is required + +* Type: `string` ([Network](definitions-definitions-contract-properties-network.md)) + +* cannot be null + +* defined in: [Definitions](definitions-definitions-contract-properties-network.md "#/definitions/contract/properties/network") + +#### network Type + +`string` ([Network](definitions-definitions-contract-properties-network.md)) + +#### network Constraints + +**enum**: the value of this property must be equal to one of the following values: + +| Value | Explanation | +| :------------------------ | :---------- | +| `"mainnet"` | | +| `"sepolia"` | | +| `"rinkeby"` | | +| `"ropsten"` | | +| `"kovan"` | | +| `"goerli"` | | +| `"xdai"` | | +| `"sokol"` | | +| `"fuse"` | | +| `"bsc"` | | +| `"bsctest"` | | +| `"fantom"` | | +| `"fantomtest"` | | +| `"moonbase"` | | +| `"moonriver"` | | +| `"moonbeam"` | | +| `"matic"` | | +| `"mumbai"` | | +| `"avalanche"` | | +| `"fuji"` | | +| `"optimism"` | | +| `"optimism-kovan"` | | +| `"optimism-goerli"` | | +| `"arbitrum"` | | +| `"arbitrum-nova"` | | +| `"arbitrum-rinkeby"` | | +| `"arbitrum-goerli"` | | +| `"celo"` | | +| `"alfajores"` | | +| `"harmony-s0"` | | +| `"harmony-test-s0"` | | +| `"aurora"` | | +| `"auroratest"` | | +| `"hedera"` | | +| `"hederatest"` | | +| `"x-dfk-avax-chain"` | | +| `"x-dfk-avax-chain-test"` | | +| `"zksync"` | | +| `"zksync-goerli"` | | +| `"base-goerli"` | | +| `"linea-goerli"` | | + +**URI reference**: the string must be a URI reference, according to [RFC 3986](https://tools.ietf.org/html/rfc3986 "check the specification") + +### abi + + + +`abi` + +* is optional + +* Type: merged type ([AbiType](definitions-definitions-abitype.md)) + +* cannot be null + +* defined in: [Definitions](definitions-definitions-abitype.md "#/definitions/contract/properties/abi") + +#### abi Type + +merged type ([AbiType](definitions-definitions-abitype.md)) + +any of + +* [StringABI](definitions-definitions-abitype-anyof-stringabi.md "check type definition") + +* [ArrayABI](definitions-definitions-abitype-anyof-arrayabi.md "check type definition") + +### nat-spec + + + +`nat-spec` + +* is optional + +* Type: `string` + +* cannot be null + +* defined in: [Definitions](definitions-definitions-contract-properties-nat-spec.md "#/definitions/contract/properties/nat-spec") + +#### nat-spec Type + +`string` + +## Definitions group notificationType + +Reference this group by using + +```json +{"$ref":"#/definitions/notificationType"} +``` + +| Property | Type | Required | Nullable | Defined by | +| :------- | :--- | :------- | :------- | :--------- | + +## Definitions group datadogConfig + +Reference this group by using + +```json +{"$ref":"#/definitions/datadogConfig"} +``` + +| Property | Type | Required | Nullable | Defined by | +| :------------------------------ | :------- | :------- | :------------- | :----------------------------------------------------------------------------------------------------------------------------------------------- | +| [api-key](#api-key) | `string` | Required | cannot be null | [Definitions](definitions-definitions-datadogconfig-properties-api-key.md "#/definitions/datadogConfig/properties/api-key") | +| [metric-prefix](#metric-prefix) | `string` | Required | cannot be null | [Definitions](definitions-definitions-datadogconfig-properties-metric-prefix.md "#/definitions/datadogConfig/properties/metric-prefix") | + +### api-key + + + +`api-key` + +* is required + +* Type: `string` + +* cannot be null + +* defined in: [Definitions](definitions-definitions-datadogconfig-properties-api-key.md "#/definitions/datadogConfig/properties/api-key") + +#### api-key Type + +`string` + +### metric-prefix + + + +`metric-prefix` + +* is required + +* Type: `string` + +* cannot be null + +* defined in: [Definitions](definitions-definitions-datadogconfig-properties-metric-prefix.md "#/definitions/datadogConfig/properties/metric-prefix") + +#### metric-prefix Type + +`string` + +#### metric-prefix Constraints + +**maximum length**: the maximum number of characters for this string is: `100` + +**pattern**: the string must match the following regular expression: + +```regexp +^[A-Za-z]+[A-Za-z0-9_\.]*\.$ +``` + +[try pattern](https://regexr.com/?expression=%5E%5BA-Za-z%5D%2B%5BA-Za-z0-9_%5C.%5D*%5C.%24 "try regular expression with regexr.com") + +## Definitions group urlConfig + +Reference this group by using + +```json +{"$ref":"#/definitions/urlConfig"} +``` + +| Property | Type | Required | Nullable | Defined by | +| :---------- | :------- | :------- | :------------- | :------------------------------------------------------------------------------------------------------------------- | +| [url](#url) | `string` | Required | cannot be null | [Definitions](definitions-definitions-urlconfig-properties-url.md "#/definitions/urlConfig/properties/url") | + +### url + + + +`url` + +* is required + +* Type: `string` + +* cannot be null + +* defined in: [Definitions](definitions-definitions-urlconfig-properties-url.md "#/definitions/urlConfig/properties/url") + +#### url Type + +`string` + +#### url Constraints + +**URI**: the string must be a URI, according to [RFC 3986](https://tools.ietf.org/html/rfc3986 "check the specification") + +## Definitions group telegramBotConfig + +Reference this group by using + +```json +{"$ref":"#/definitions/telegramBotConfig"} +``` + +| Property | Type | Required | Nullable | Defined by | +| :---------------------- | :------- | :------- | :------------- | :-------------------------------------------------------------------------------------------------------------------------------------------- | +| [bot-token](#bot-token) | `string` | Required | cannot be null | [Definitions](definitions-definitions-telegramconfig-properties-bot-token.md "#/definitions/telegramBotConfig/properties/bot-token") | +| [chat-id](#chat-id) | `string` | Required | cannot be null | [Definitions](definitions-definitions-telegramconfig-properties-chat-id.md "#/definitions/telegramBotConfig/properties/chat-id") | + +### bot-token + + + +`bot-token` + +* is required + +* Type: `string` + +* cannot be null + +* defined in: [Definitions](definitions-definitions-telegramconfig-properties-bot-token.md "#/definitions/telegramBotConfig/properties/bot-token") + +#### bot-token Type + +`string` + +### chat-id + + + +`chat-id` + +* is required + +* Type: `string` + +* cannot be null + +* defined in: [Definitions](definitions-definitions-telegramconfig-properties-chat-id.md "#/definitions/telegramBotConfig/properties/chat-id") + +#### chat-id Type + +`string` + +## Definitions group emailConfig + +Reference this group by using + +```json +{"$ref":"#/definitions/emailConfig"} +``` + +| Property | Type | Required | Nullable | Defined by | +| :---------------- | :------ | :------- | :------------- | :----------------------------------------------------------------------------------------------------------------------------- | +| [emails](#emails) | `array` | Required | cannot be null | [Definitions](definitions-definitions-emailconfig-properties-emails.md "#/definitions/emailConfig/properties/emails") | + +### emails + + + +`emails` + +* is required + +* Type: `string[]` + +* cannot be null + +* defined in: [Definitions](definitions-definitions-emailconfig-properties-emails.md "#/definitions/emailConfig/properties/emails") + +#### emails Type + +`string[]` + +#### emails Default Value + +The default value is: + +```json +[] +``` + +## Definitions group opsgenieUserType + +Reference this group by using + +```json +{"$ref":"#/definitions/opsgenieUserType"} +``` + +| Property | Type | Required | Nullable | Defined by | +| :------- | :--- | :------- | :------- | :--------- | + +## Definitions group opsgeniePriorityLevel + +Reference this group by using + +```json +{"$ref":"#/definitions/opsgeniePriorityLevel"} +``` + +| Property | Type | Required | Nullable | Defined by | +| :------- | :--- | :------- | :------- | :--------- | + +## Definitions group opsgenieInstanceLocation + +Reference this group by using + +```json +{"$ref":"#/definitions/opsgenieInstanceLocation"} +``` + +| Property | Type | Required | Nullable | Defined by | +| :------- | :--- | :------- | :------- | :--------- | + +## Definitions group opsgenieUser + +Reference this group by using + +```json +{"$ref":"#/definitions/opsgenieUser"} +``` + +| Property | Type | Required | Nullable | Defined by | +| :-------------------- | :------- | :------- | :------------- | :--------------------------------------------------------------------------------------------------------------------------------------- | +| [username](#username) | `string` | Required | cannot be null | [Definitions](definitions-definitions-opsgenieuser-properties-username.md "#/definitions/opsgenieUser/properties/username") | +| [fullName](#fullname) | `string` | Optional | cannot be null | [Definitions](definitions-definitions-opsgenieuser-properties-fullname.md "#/definitions/opsgenieUser/properties/fullName") | +| [id](#id) | `string` | Optional | cannot be null | [Definitions](definitions-definitions-opsgenieuser-properties-id.md "#/definitions/opsgenieUser/properties/id") | +| [type](#type) | `string` | Required | cannot be null | [Definitions](definitions-definitions-opsgenieuser-properties-opsgenieusertype.md "#/definitions/opsgenieUser/properties/type") | + +### username + + + +`username` + +* is required + +* Type: `string` + +* cannot be null + +* defined in: [Definitions](definitions-definitions-opsgenieuser-properties-username.md "#/definitions/opsgenieUser/properties/username") + +#### username Type + +`string` + +### fullName + + + +`fullName` + +* is optional + +* Type: `string` + +* cannot be null + +* defined in: [Definitions](definitions-definitions-opsgenieuser-properties-fullname.md "#/definitions/opsgenieUser/properties/fullName") + +#### fullName Type + +`string` + +### id + + + +`id` + +* is optional + +* Type: `string` + +* cannot be null + +* defined in: [Definitions](definitions-definitions-opsgenieuser-properties-id.md "#/definitions/opsgenieUser/properties/id") + +#### id Type + +`string` + +### type + + + +`type` + +* is required + +* Type: `string` ([opsgenieUserType](definitions-definitions-opsgenieuser-properties-opsgenieusertype.md)) + +* cannot be null + +* defined in: [Definitions](definitions-definitions-opsgenieuser-properties-opsgenieusertype.md "#/definitions/opsgenieUser/properties/type") + +#### type Type + +`string` ([opsgenieUserType](definitions-definitions-opsgenieuser-properties-opsgenieusertype.md)) + +#### type Constraints + +**enum**: the value of this property must be equal to one of the following values: + +| Value | Explanation | +| :------------- | :---------- | +| `"team"` | | +| `"user"` | | +| `"escalation"` | | +| `"schedule"` | | + +## Definitions group opsgenieConfig + +Reference this group by using + +```json +{"$ref":"#/definitions/opsgenieConfig"} +``` + +| Property | Type | Required | Nullable | Defined by | +| :------------------------------------ | :------- | :------- | :------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| [apiKey](#apikey) | `string` | Required | cannot be null | [Definitions](definitions-definitions-opsgenieconfig-properties-apikey.md "#/definitions/opsgenieConfig/properties/apiKey") | +| [instanceLocation](#instancelocation) | `string` | Required | cannot be null | [Definitions](definitions-definitions-opsgenieconfig-properties-opsgenieinstancelocation.md "#/definitions/opsgenieConfig/properties/instanceLocation") | +| [alias](#alias) | `string` | Optional | cannot be null | [Definitions](definitions-definitions-opsgenieconfig-properties-alias.md "#/definitions/opsgenieConfig/properties/alias") | +| [responders](#responders) | `array` | Optional | cannot be null | [Definitions](definitions-definitions-opsgenieconfig-properties-responders.md "#/definitions/opsgenieConfig/properties/responders") | +| [visibleTo](#visibleto) | `array` | Optional | cannot be null | [Definitions](definitions-definitions-opsgenieconfig-properties-visibleto.md "#/definitions/opsgenieConfig/properties/visibleTo") | +| [actions](#actions) | `array` | Optional | cannot be null | [Definitions](definitions-definitions-opsgenieconfig-properties-actions.md "#/definitions/opsgenieConfig/properties/actions") | +| [tags](#tags) | `array` | Optional | cannot be null | [Definitions](definitions-definitions-opsgenieconfig-properties-tags.md "#/definitions/opsgenieConfig/properties/tags") | +| [details](#details) | `object` | Optional | cannot be null | [Definitions](definitions-definitions-opsgenieconfig-properties-details.md "#/definitions/opsgenieConfig/properties/details") | +| [entity](#entity) | `string` | Optional | cannot be null | [Definitions](definitions-definitions-opsgenieconfig-properties-entity.md "#/definitions/opsgenieConfig/properties/entity") | +| [priority](#priority) | `string` | Optional | cannot be null | [Definitions](definitions-definitions-opsgenieconfig-properties-opsgenieprioritylevel.md "#/definitions/opsgenieConfig/properties/priority") | +| [note](#note) | `string` | Optional | cannot be null | [Definitions](definitions-definitions-opsgenieconfig-properties-note.md "#/definitions/opsgenieConfig/properties/note") | + +### apiKey + + + +`apiKey` + +* is required + +* Type: `string` + +* cannot be null + +* defined in: [Definitions](definitions-definitions-opsgenieconfig-properties-apikey.md "#/definitions/opsgenieConfig/properties/apiKey") + +#### apiKey Type + +`string` + +### instanceLocation + + + +`instanceLocation` + +* is required + +* Type: `string` ([OpsgenieInstanceLocation](definitions-definitions-opsgenieconfig-properties-opsgenieinstancelocation.md)) + +* cannot be null + +* defined in: [Definitions](definitions-definitions-opsgenieconfig-properties-opsgenieinstancelocation.md "#/definitions/opsgenieConfig/properties/instanceLocation") + +#### instanceLocation Type + +`string` ([OpsgenieInstanceLocation](definitions-definitions-opsgenieconfig-properties-opsgenieinstancelocation.md)) + +#### instanceLocation Constraints + +**enum**: the value of this property must be equal to one of the following values: + +| Value | Explanation | +| :----- | :---------- | +| `"US"` | | +| `"EU"` | | + +### alias + + + +`alias` + +* is optional + +* Type: `string` + +* cannot be null + +* defined in: [Definitions](definitions-definitions-opsgenieconfig-properties-alias.md "#/definitions/opsgenieConfig/properties/alias") + +#### alias Type + +`string` + +#### alias Constraints + +**maximum length**: the maximum number of characters for this string is: `512` + +### responders + + + +`responders` + +* is optional + +* Type: `object[]` ([Details](definitions-definitions-opsgenieuser.md)) + +* cannot be null + +* defined in: [Definitions](definitions-definitions-opsgenieconfig-properties-responders.md "#/definitions/opsgenieConfig/properties/responders") + +#### responders Type + +`object[]` ([Details](definitions-definitions-opsgenieuser.md)) + +### visibleTo + + + +`visibleTo` + +* is optional + +* Type: `object[]` ([Details](definitions-definitions-opsgenieuser.md)) + +* cannot be null + +* defined in: [Definitions](definitions-definitions-opsgenieconfig-properties-visibleto.md "#/definitions/opsgenieConfig/properties/visibleTo") + +#### visibleTo Type + +`object[]` ([Details](definitions-definitions-opsgenieuser.md)) + +### actions + + + +`actions` + +* is optional + +* Type: `string[]` + +* cannot be null + +* defined in: [Definitions](definitions-definitions-opsgenieconfig-properties-actions.md "#/definitions/opsgenieConfig/properties/actions") + +#### actions Type + +`string[]` + +#### actions Constraints + +**maximum number of items**: the maximum number of items for this array is: `10` + +### tags + + + +`tags` + +* is optional + +* Type: `string[]` + +* cannot be null + +* defined in: [Definitions](definitions-definitions-opsgenieconfig-properties-tags.md "#/definitions/opsgenieConfig/properties/tags") + +#### tags Type + +`string[]` + +#### tags Constraints + +**maximum number of items**: the maximum number of items for this array is: `10` + +### details + + + +`details` + +* is optional + +* Type: `object` ([Details](definitions-definitions-opsgenieconfig-properties-details.md)) + +* cannot be null + +* defined in: [Definitions](definitions-definitions-opsgenieconfig-properties-details.md "#/definitions/opsgenieConfig/properties/details") + +#### details Type + +`object` ([Details](definitions-definitions-opsgenieconfig-properties-details.md)) + +### entity + + + +`entity` + +* is optional + +* Type: `string` + +* cannot be null + +* defined in: [Definitions](definitions-definitions-opsgenieconfig-properties-entity.md "#/definitions/opsgenieConfig/properties/entity") + +#### entity Type + +`string` + +#### entity Constraints + +**maximum length**: the maximum number of characters for this string is: `512` + +### priority + + + +`priority` + +* is optional + +* Type: `string` ([OpsgeniePriorityLevel](definitions-definitions-opsgenieconfig-properties-opsgenieprioritylevel.md)) + +* cannot be null + +* defined in: [Definitions](definitions-definitions-opsgenieconfig-properties-opsgenieprioritylevel.md "#/definitions/opsgenieConfig/properties/priority") + +#### priority Type + +`string` ([OpsgeniePriorityLevel](definitions-definitions-opsgenieconfig-properties-opsgenieprioritylevel.md)) + +#### priority Constraints + +**enum**: the value of this property must be equal to one of the following values: + +| Value | Explanation | +| :----- | :---------- | +| `"P1"` | | +| `"P2"` | | +| `"P3"` | | +| `"P4"` | | +| `"P5"` | | + +### note + + + +`note` + +* is optional + +* Type: `string` + +* cannot be null + +* defined in: [Definitions](definitions-definitions-opsgenieconfig-properties-note.md "#/definitions/opsgenieConfig/properties/note") + +#### note Type + +`string` + +#### note Constraints + +**maximum length**: the maximum number of characters for this string is: `25000` + +## Definitions group pagerDutyEventType + +Reference this group by using + +```json +{"$ref":"#/definitions/pagerDutyEventType"} +``` + +| Property | Type | Required | Nullable | Defined by | +| :------- | :--- | :------- | :------- | :--------- | + +## Definitions group pagerDutyEventAction + +Reference this group by using + +```json +{"$ref":"#/definitions/pagerDutyEventAction"} +``` + +| Property | Type | Required | Nullable | Defined by | +| :------- | :--- | :------- | :------- | :--------- | + +## Definitions group pagerDutySeverity + +Reference this group by using + +```json +{"$ref":"#/definitions/pagerDutySeverity"} +``` + +| Property | Type | Required | Nullable | Defined by | +| :------- | :--- | :------- | :------- | :--------- | + +## Definitions group pagerDutyConfig + +Reference this group by using + +```json +{"$ref":"#/definitions/pagerDutyConfig"} +``` + +| Property | Type | Required | Nullable | Defined by | +| :------------------------------ | :------- | :------- | :------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------- | +| [token](#token) | `string` | Required | cannot be null | [Definitions](definitions-definitions-pagerdutyconfig-properties-token.md "#/definitions/pagerDutyConfig/properties/token") | +| [eventType](#eventtype) | `string` | Required | cannot be null | [Definitions](definitions-definitions-pagerdutyconfig-properties-pagerdutyeventtype.md "#/definitions/pagerDutyConfig/properties/eventType") | +| [routingKey](#routingkey) | `string` | Required | cannot be null | [Definitions](definitions-definitions-pagerdutyconfig-properties-routingkey.md "#/definitions/pagerDutyConfig/properties/routingKey") | +| [eventAction](#eventaction) | `string` | Optional | cannot be null | [Definitions](definitions-definitions-pagerdutyconfig-properties-pagerdutyeventaction.md "#/definitions/pagerDutyConfig/properties/eventAction") | +| [dedupKey](#dedupkey) | `string` | Optional | cannot be null | [Definitions](definitions-definitions-pagerdutyconfig-properties-dedupkey.md "#/definitions/pagerDutyConfig/properties/dedupKey") | +| [severity](#severity) | `string` | Optional | cannot be null | [Definitions](definitions-definitions-pagerdutyconfig-properties-pagerdutyseverity.md "#/definitions/pagerDutyConfig/properties/severity") | +| [component](#component) | `string` | Optional | cannot be null | [Definitions](definitions-definitions-pagerdutyconfig-properties-component.md "#/definitions/pagerDutyConfig/properties/component") | +| [group](#group) | `string` | Optional | cannot be null | [Definitions](definitions-definitions-pagerdutyconfig-properties-group.md "#/definitions/pagerDutyConfig/properties/group") | +| [class](#class) | `string` | Optional | cannot be null | [Definitions](definitions-definitions-pagerdutyconfig-properties-class.md "#/definitions/pagerDutyConfig/properties/class") | +| [customDetails](#customdetails) | `object` | Optional | cannot be null | [Definitions](definitions-definitions-pagerdutyconfig-properties-customdetails.md "#/definitions/pagerDutyConfig/properties/customDetails") | + +### token + + + +`token` + +* is required + +* Type: `string` + +* cannot be null + +* defined in: [Definitions](definitions-definitions-pagerdutyconfig-properties-token.md "#/definitions/pagerDutyConfig/properties/token") + +#### token Type + +`string` + +### eventType + + + +`eventType` + +* is required + +* Type: `string` ([PagerDutyEventType](definitions-definitions-pagerdutyconfig-properties-pagerdutyeventtype.md)) + +* cannot be null + +* defined in: [Definitions](definitions-definitions-pagerdutyconfig-properties-pagerdutyeventtype.md "#/definitions/pagerDutyConfig/properties/eventType") + +#### eventType Type + +`string` ([PagerDutyEventType](definitions-definitions-pagerdutyconfig-properties-pagerdutyeventtype.md)) + +#### eventType Constraints + +**enum**: the value of this property must be equal to one of the following values: + +| Value | Explanation | +| :--------- | :---------- | +| `"change"` | | +| `"alert"` | | + +### routingKey + + + +`routingKey` + +* is required + +* Type: `string` + +* cannot be null + +* defined in: [Definitions](definitions-definitions-pagerdutyconfig-properties-routingkey.md "#/definitions/pagerDutyConfig/properties/routingKey") + +#### routingKey Type + +`string` + +#### routingKey Constraints + +**maximum length**: the maximum number of characters for this string is: `32` + +**minimum length**: the minimum number of characters for this string is: `32` + +### eventAction + + + +`eventAction` + +* is optional + +* Type: `string` ([PagerDutyEventAction](definitions-definitions-pagerdutyconfig-properties-pagerdutyeventaction.md)) + +* cannot be null + +* defined in: [Definitions](definitions-definitions-pagerdutyconfig-properties-pagerdutyeventaction.md "#/definitions/pagerDutyConfig/properties/eventAction") + +#### eventAction Type + +`string` ([PagerDutyEventAction](definitions-definitions-pagerdutyconfig-properties-pagerdutyeventaction.md)) + +#### eventAction Constraints + +**enum**: the value of this property must be equal to one of the following values: + +| Value | Explanation | +| :-------------- | :---------- | +| `"trigger"` | | +| `"acknowledge"` | | +| `"resolve"` | | + +### dedupKey + + + +`dedupKey` + +* is optional + +* Type: `string` + +* cannot be null + +* defined in: [Definitions](definitions-definitions-pagerdutyconfig-properties-dedupkey.md "#/definitions/pagerDutyConfig/properties/dedupKey") + +#### dedupKey Type + +`string` + +#### dedupKey Constraints + +**maximum length**: the maximum number of characters for this string is: `255` + +### severity + + + +`severity` + +* is optional + +* Type: `string` ([PagerDutySeverity](definitions-definitions-pagerdutyconfig-properties-pagerdutyseverity.md)) + +* cannot be null + +* defined in: [Definitions](definitions-definitions-pagerdutyconfig-properties-pagerdutyseverity.md "#/definitions/pagerDutyConfig/properties/severity") + +#### severity Type + +`string` ([PagerDutySeverity](definitions-definitions-pagerdutyconfig-properties-pagerdutyseverity.md)) + +#### severity Constraints + +**enum**: the value of this property must be equal to one of the following values: + +| Value | Explanation | +| :----------- | :---------- | +| `"critical"` | | +| `"error"` | | +| `"warning"` | | +| `"info"` | | + +### component + + + +`component` + +* is optional + +* Type: `string` + +* cannot be null + +* defined in: [Definitions](definitions-definitions-pagerdutyconfig-properties-component.md "#/definitions/pagerDutyConfig/properties/component") + +#### component Type + +`string` + +### group + + + +`group` + +* is optional + +* Type: `string` + +* cannot be null + +* defined in: [Definitions](definitions-definitions-pagerdutyconfig-properties-group.md "#/definitions/pagerDutyConfig/properties/group") + +#### group Type + +`string` + +### class + + + +`class` + +* is optional + +* Type: `string` + +* cannot be null + +* defined in: [Definitions](definitions-definitions-pagerdutyconfig-properties-class.md "#/definitions/pagerDutyConfig/properties/class") + +#### class Type + +`string` + +### customDetails + + + +`customDetails` + +* is optional + +* Type: `object` ([Details](definitions-definitions-pagerdutyconfig-properties-customdetails.md)) + +* cannot be null + +* defined in: [Definitions](definitions-definitions-pagerdutyconfig-properties-customdetails.md "#/definitions/pagerDutyConfig/properties/customDetails") + +#### customDetails Type + +`object` ([Details](definitions-definitions-pagerdutyconfig-properties-customdetails.md)) + +## Definitions group notification + +Reference this group by using + +```json +{"$ref":"#/definitions/notification"} +``` + +| Property | Type | Required | Nullable | Defined by | +| :---------------- | :-------- | :------- | :------------- | :--------------------------------------------------------------------------------------------------------------------------------------- | +| [type](#type-1) | `string` | Required | cannot be null | [Definitions](definitions-definitions-notification-properties-notificationtype.md "#/definitions/notification/properties/type") | +| [name](#name-2) | `string` | Required | cannot be null | [Definitions](definitions-definitions-notification-properties-name.md "#/definitions/notification/properties/name") | +| [paused](#paused) | `boolean` | Required | cannot be null | [Definitions](definitions-definitions-notification-properties-paused.md "#/definitions/notification/properties/paused") | +| [config](#config) | Merged | Required | cannot be null | [Definitions](definitions-definitions-notification-properties-config.md "#/definitions/notification/properties/config") | + +### type + + + +`type` + +* is required + +* Type: `string` ([NotificationType](definitions-definitions-notification-properties-notificationtype.md)) + +* cannot be null + +* defined in: [Definitions](definitions-definitions-notification-properties-notificationtype.md "#/definitions/notification/properties/type") + +#### type Type + +`string` ([NotificationType](definitions-definitions-notification-properties-notificationtype.md)) + +#### type Constraints + +**enum**: the value of this property must be equal to one of the following values: + +| Value | Explanation | +| :------------- | :---------- | +| `"slack"` | | +| `"email"` | | +| `"discord"` | | +| `"telegram"` | | +| `"datadog"` | | +| `"webhook"` | | +| `"opsgenie"` | | +| `"pager-duty"` | | + +**URI reference**: the string must be a URI reference, according to [RFC 3986](https://tools.ietf.org/html/rfc3986 "check the specification") + +### name + + + +`name` + +* is required + +* Type: `string` + +* cannot be null + +* defined in: [Definitions](definitions-definitions-notification-properties-name.md "#/definitions/notification/properties/name") + +#### name Type + +`string` + +### paused + + + +`paused` + +* is required + +* Type: `boolean` + +* cannot be null + +* defined in: [Definitions](definitions-definitions-notification-properties-paused.md "#/definitions/notification/properties/paused") + +#### paused Type + +`boolean` + +### config + + + +`config` + +* is required + +* Type: `object` ([Config](definitions-definitions-notification-properties-config.md)) + +* cannot be null + +* defined in: [Definitions](definitions-definitions-notification-properties-config.md "#/definitions/notification/properties/config") + +#### config Type + +`object` ([Config](definitions-definitions-notification-properties-config.md)) + +one (and only one) of + +* [EmailConfig](definitions-definitions-emailconfig.md "check type definition") + +* [TelegramConfig](definitions-definitions-telegramconfig.md "check type definition") + +* [DatadogConfig](definitions-definitions-datadogconfig.md "check type definition") + +* [UrlConfig](definitions-definitions-urlconfig.md "check type definition") + +* [OpsgenieConfig](definitions-definitions-opsgenieconfig.md "check type definition") + +* [PagerDutyConfig](definitions-definitions-pagerdutyconfig.md "check type definition") + +## Definitions group category + +Reference this group by using + +```json +{"$ref":"#/definitions/category"} +``` + +| Property | Type | Required | Nullable | Defined by | +| :---------------------------------- | :------- | :------- | :------------- | :----------------------------------------------------------------------------------------------------------------------------------------- | +| [name](#name-3) | `string` | Required | cannot be null | [Definitions](definitions-definitions-category-properties-name.md "#/definitions/category/properties/name") | +| [description](#description) | `string` | Optional | cannot be null | [Definitions](definitions-definitions-category-properties-description.md "#/definitions/category/properties/description") | +| [notificationIds](#notificationids) | `array` | Optional | cannot be null | [Definitions](definitions-definitions-category-properties-notificationids.md "#/definitions/category/properties/notificationIds") | + +### name + + + +`name` + +* is required + +* Type: `string` + +* cannot be null + +* defined in: [Definitions](definitions-definitions-category-properties-name.md "#/definitions/category/properties/name") + +#### name Type + +`string` + +### description + + + +`description` + +* is optional + +* Type: `string` + +* cannot be null + +* defined in: [Definitions](definitions-definitions-category-properties-description.md "#/definitions/category/properties/description") + +#### description Type + +`string` + +### notificationIds + + + +`notificationIds` + +* is optional + +* Type: `object[]` ([Notification](definitions-definitions-notification.md)) + +* cannot be null + +* defined in: [Definitions](definitions-definitions-category-properties-notificationids.md "#/definitions/category/properties/notificationIds") + +#### notificationIds Type + +`object[]` ([Notification](definitions-definitions-notification.md)) + +## Definitions group blockSentinel + +Reference this group by using + +```json +{"$ref":"#/definitions/blockSentinel"} +``` + +| Property | Type | Required | Nullable | Defined by | +| :---------------------------------------- | :-------- | :------- | :------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------- | +| [name](#name-4) | `string` | Required | cannot be null | [Definitions](definitions-definitions-blocksentinel-properties-name.md "#/definitions/blockSentinel/properties/name") | +| [type](#type-2) | `string` | Required | cannot be null | [Definitions](definitions-definitions-blocksentinel-properties-type.md "#/definitions/blockSentinel/properties/type") | +| [network](#network-2) | `string` | Required | cannot be null | [Definitions](definitions-definitions-blocksentinel-properties-network.md "#/definitions/blockSentinel/properties/network") | +| [addresses](#addresses) | `array` | Required | cannot be null | [Definitions](definitions-definitions-blocksentinel-properties-addresses.md "#/definitions/blockSentinel/properties/addresses") | +| [abi](#abi-1) | Merged | Optional | cannot be null | [Definitions](definitions-definitions-abitype.md "#/definitions/blockSentinel/properties/abi") | +| [alert-threshold](#alert-threshold) | `object` | Optional | cannot be null | [Definitions](definitions-definitions-blocksentinel-properties-alertthreshold.md "#/definitions/blockSentinel/properties/alert-threshold") | +| [paused](#paused-1) | `boolean` | Optional | cannot be null | [Definitions](definitions-definitions-blocksentinel-properties-paused.md "#/definitions/blockSentinel/properties/paused") | +| [autotask-condition](#autotask-condition) | `object` | Optional | cannot be null | [Definitions](definitions-definitions-autotask.md "#/definitions/blockSentinel/properties/autotask-condition") | +| [autotask-trigger](#autotask-trigger) | `object` | Optional | cannot be null | [Definitions](definitions-definitions-autotask.md "#/definitions/blockSentinel/properties/autotask-trigger") | +| [confirm-level](#confirm-level) | Merged | Optional | cannot be null | [Definitions](definitions-definitions-blocksentinel-properties-confirm-level.md "#/definitions/blockSentinel/properties/confirm-level") | +| [notify-config](#notify-config) | `object` | Required | cannot be null | [Definitions](definitions-definitions-blocksentinel-properties-notifyconfig.md "#/definitions/blockSentinel/properties/notify-config") | +| [conditions](#conditions) | `object` | Optional | cannot be null | [Definitions](definitions-definitions-blocksentinel-properties-conditions.md "#/definitions/blockSentinel/properties/conditions") | +| [risk-category](#risk-category) | `string` | Optional | cannot be null | [Definitions](definitions-definitions-blocksentinel-properties-riskcategory.md "#/definitions/blockSentinel/properties/risk-category") | + +### name + + + +`name` + +* is required + +* Type: `string` + +* cannot be null + +* defined in: [Definitions](definitions-definitions-blocksentinel-properties-name.md "#/definitions/blockSentinel/properties/name") + +#### name Type + +`string` + +### type + + + +`type` + +* is required + +* Type: `string` + +* cannot be null + +* defined in: [Definitions](definitions-definitions-blocksentinel-properties-type.md "#/definitions/blockSentinel/properties/type") + +#### type Type + +`string` + +#### type Constraints + +**enum**: the value of this property must be equal to one of the following values: + +| Value | Explanation | +| :-------- | :---------- | +| `"BLOCK"` | | + +### network + + + +`network` + +* is required + +* Type: `string` ([Network](definitions-definitions-blocksentinel-properties-network.md)) + +* cannot be null + +* defined in: [Definitions](definitions-definitions-blocksentinel-properties-network.md "#/definitions/blockSentinel/properties/network") + +#### network Type + +`string` ([Network](definitions-definitions-blocksentinel-properties-network.md)) + +#### network Constraints + +**enum**: the value of this property must be equal to one of the following values: + +| Value | Explanation | +| :------------------------ | :---------- | +| `"mainnet"` | | +| `"sepolia"` | | +| `"rinkeby"` | | +| `"ropsten"` | | +| `"kovan"` | | +| `"goerli"` | | +| `"xdai"` | | +| `"sokol"` | | +| `"fuse"` | | +| `"bsc"` | | +| `"bsctest"` | | +| `"fantom"` | | +| `"fantomtest"` | | +| `"moonbase"` | | +| `"moonriver"` | | +| `"moonbeam"` | | +| `"matic"` | | +| `"mumbai"` | | +| `"avalanche"` | | +| `"fuji"` | | +| `"optimism"` | | +| `"optimism-kovan"` | | +| `"optimism-goerli"` | | +| `"arbitrum"` | | +| `"arbitrum-nova"` | | +| `"arbitrum-rinkeby"` | | +| `"arbitrum-goerli"` | | +| `"celo"` | | +| `"alfajores"` | | +| `"harmony-s0"` | | +| `"harmony-test-s0"` | | +| `"aurora"` | | +| `"auroratest"` | | +| `"hedera"` | | +| `"hederatest"` | | +| `"x-dfk-avax-chain"` | | +| `"x-dfk-avax-chain-test"` | | +| `"zksync"` | | +| `"zksync-goerli"` | | +| `"base-goerli"` | | +| `"linea-goerli"` | | + +**URI reference**: the string must be a URI reference, according to [RFC 3986](https://tools.ietf.org/html/rfc3986 "check the specification") + +### addresses + + + +`addresses` + +* is required + +* Type: `string[]` ([Address](definitions-definitions-blocksentinel-properties-addresses-address.md)) + +* cannot be null + +* defined in: [Definitions](definitions-definitions-blocksentinel-properties-addresses.md "#/definitions/blockSentinel/properties/addresses") + +#### addresses Type + +`string[]` ([Address](definitions-definitions-blocksentinel-properties-addresses-address.md)) + +### abi + + + +`abi` + +* is optional + +* Type: merged type ([AbiType](definitions-definitions-abitype.md)) + +* cannot be null + +* defined in: [Definitions](definitions-definitions-abitype.md "#/definitions/blockSentinel/properties/abi") + +#### abi Type + +merged type ([AbiType](definitions-definitions-abitype.md)) + +any of + +* [StringABI](definitions-definitions-abitype-anyof-stringabi.md "check type definition") + +* [ArrayABI](definitions-definitions-abitype-anyof-arrayabi.md "check type definition") + +### alert-threshold + + + +`alert-threshold` + +* is optional + +* Type: `object` ([AlertThreshold](definitions-definitions-blocksentinel-properties-alertthreshold.md)) + +* cannot be null + +* defined in: [Definitions](definitions-definitions-blocksentinel-properties-alertthreshold.md "#/definitions/blockSentinel/properties/alert-threshold") + +#### alert-threshold Type + +`object` ([AlertThreshold](definitions-definitions-blocksentinel-properties-alertthreshold.md)) + +### paused + + + +`paused` + +* is optional + +* Type: `boolean` + +* cannot be null + +* defined in: [Definitions](definitions-definitions-blocksentinel-properties-paused.md "#/definitions/blockSentinel/properties/paused") + +#### paused Type + +`boolean` + +### autotask-condition + + + +`autotask-condition` + +* is optional + +* Type: `object` ([Autotask](definitions-definitions-autotask.md)) + +* cannot be null + +* defined in: [Definitions](definitions-definitions-autotask.md "#/definitions/blockSentinel/properties/autotask-condition") + +#### autotask-condition Type + +`object` ([Autotask](definitions-definitions-autotask.md)) + +#### autotask-condition Constraints + +**URI reference**: the string must be a URI reference, according to [RFC 3986](https://tools.ietf.org/html/rfc3986 "check the specification") + +### autotask-trigger + + + +`autotask-trigger` + +* is optional + +* Type: `object` ([Autotask](definitions-definitions-autotask.md)) + +* cannot be null + +* defined in: [Definitions](definitions-definitions-autotask.md "#/definitions/blockSentinel/properties/autotask-trigger") + +#### autotask-trigger Type + +`object` ([Autotask](definitions-definitions-autotask.md)) + +#### autotask-trigger Constraints + +**URI reference**: the string must be a URI reference, according to [RFC 3986](https://tools.ietf.org/html/rfc3986 "check the specification") + +### confirm-level + + + +`confirm-level` + +* is optional + +* Type: merged type ([Details](definitions-definitions-blocksentinel-properties-confirm-level.md)) + +* cannot be null + +* defined in: [Definitions](definitions-definitions-blocksentinel-properties-confirm-level.md "#/definitions/blockSentinel/properties/confirm-level") + +#### confirm-level Type + +merged type ([Details](definitions-definitions-blocksentinel-properties-confirm-level.md)) + +one (and only one) of + +* [Untitled string in Definitions](definitions-definitions-blocksentinel-properties-confirm-level-oneof-0.md "check type definition") + +* [Untitled integer in Definitions](definitions-definitions-blocksentinel-properties-confirm-level-oneof-1.md "check type definition") + +### notify-config + + + +`notify-config` + +* is required + +* Type: `object` ([NotifyConfig](definitions-definitions-blocksentinel-properties-notifyconfig.md)) + +* cannot be null + +* defined in: [Definitions](definitions-definitions-blocksentinel-properties-notifyconfig.md "#/definitions/blockSentinel/properties/notify-config") + +#### notify-config Type + +`object` ([NotifyConfig](definitions-definitions-blocksentinel-properties-notifyconfig.md)) + +### conditions + + + +`conditions` + +* is optional + +* Type: `object` ([Conditions](definitions-definitions-blocksentinel-properties-conditions.md)) + +* cannot be null + +* defined in: [Definitions](definitions-definitions-blocksentinel-properties-conditions.md "#/definitions/blockSentinel/properties/conditions") + +#### conditions Type + +`object` ([Conditions](definitions-definitions-blocksentinel-properties-conditions.md)) + +### risk-category + + + +`risk-category` + +* is optional + +* Type: `string` ([RiskCategory](definitions-definitions-blocksentinel-properties-riskcategory.md)) + +* cannot be null + +* defined in: [Definitions](definitions-definitions-blocksentinel-properties-riskcategory.md "#/definitions/blockSentinel/properties/risk-category") + +#### risk-category Type + +`string` ([RiskCategory](definitions-definitions-blocksentinel-properties-riskcategory.md)) + +#### risk-category Constraints + +**enum**: the value of this property must be equal to one of the following values: + +| Value | Explanation | +| :----------------- | :---------- | +| `"NONE"` | | +| `"GOVERNANCE"` | | +| `"ACCESS-CONTROL"` | | +| `"SUSPICIOUS"` | | +| `"FINANCIAL"` | | +| `"TECHNICAL"` | | + +## Definitions group fortaSentinel + +Reference this group by using + +```json +{"$ref":"#/definitions/fortaSentinel"} +``` + +| Property | Type | Required | Nullable | Defined by | +| :------------------------------------------ | :-------- | :------- | :------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------- | +| [name](#name-5) | `string` | Required | cannot be null | [Definitions](definitions-definitions-fortasentinel-properties-name.md "#/definitions/fortaSentinel/properties/name") | +| [type](#type-3) | `string` | Required | cannot be null | [Definitions](definitions-definitions-fortasentinel-properties-type.md "#/definitions/fortaSentinel/properties/type") | +| [network](#network-3) | `string` | Required | cannot be null | [Definitions](definitions-definitions-fortasentinel-properties-network.md "#/definitions/fortaSentinel/properties/network") | +| [addresses](#addresses-1) | `array` | Optional | cannot be null | [Definitions](definitions-definitions-fortasentinel-properties-addresses.md "#/definitions/fortaSentinel/properties/addresses") | +| [abi](#abi-2) | Merged | Optional | cannot be null | [Definitions](definitions-definitions-abitype.md "#/definitions/fortaSentinel/properties/abi") | +| [alert-threshold](#alert-threshold-1) | `object` | Optional | cannot be null | [Definitions](definitions-definitions-fortasentinel-properties-alertthreshold.md "#/definitions/fortaSentinel/properties/alert-threshold") | +| [paused](#paused-2) | `boolean` | Optional | cannot be null | [Definitions](definitions-definitions-fortasentinel-properties-paused.md "#/definitions/fortaSentinel/properties/paused") | +| [autotask-condition](#autotask-condition-1) | `object` | Optional | cannot be null | [Definitions](definitions-definitions-autotask.md "#/definitions/fortaSentinel/properties/autotask-condition") | +| [autotask-trigger](#autotask-trigger-1) | `object` | Optional | cannot be null | [Definitions](definitions-definitions-autotask.md "#/definitions/fortaSentinel/properties/autotask-trigger") | +| [notify-config](#notify-config-1) | `object` | Required | cannot be null | [Definitions](definitions-definitions-fortasentinel-properties-notifyconfig.md "#/definitions/fortaSentinel/properties/notify-config") | +| [conditions](#conditions-1) | `object` | Optional | cannot be null | [Definitions](definitions-definitions-fortasentinel-properties-conditions.md "#/definitions/fortaSentinel/properties/conditions") | +| [forta-node-id](#forta-node-id) | `string` | Optional | cannot be null | [Definitions](definitions-definitions-fortasentinel-properties-forta-node-id.md "#/definitions/fortaSentinel/properties/forta-node-id") | +| [agent-ids](#agent-ids) | `array` | Optional | cannot be null | [Definitions](definitions-definitions-fortasentinel-properties-agentids.md "#/definitions/fortaSentinel/properties/agent-ids") | +| [risk-category](#risk-category-1) | `string` | Optional | cannot be null | [Definitions](definitions-definitions-fortasentinel-properties-riskcategory.md "#/definitions/fortaSentinel/properties/risk-category") | + +### name + + + +`name` + +* is required + +* Type: `string` + +* cannot be null + +* defined in: [Definitions](definitions-definitions-fortasentinel-properties-name.md "#/definitions/fortaSentinel/properties/name") + +#### name Type + +`string` + +### type + + + +`type` + +* is required + +* Type: `string` + +* cannot be null + +* defined in: [Definitions](definitions-definitions-fortasentinel-properties-type.md "#/definitions/fortaSentinel/properties/type") + +#### type Type + +`string` + +#### type Constraints + +**enum**: the value of this property must be equal to one of the following values: + +| Value | Explanation | +| :-------- | :---------- | +| `"FORTA"` | | + +### network + + + +`network` + +* is required + +* Type: `string` ([Network](definitions-definitions-fortasentinel-properties-network.md)) + +* cannot be null + +* defined in: [Definitions](definitions-definitions-fortasentinel-properties-network.md "#/definitions/fortaSentinel/properties/network") + +#### network Type + +`string` ([Network](definitions-definitions-fortasentinel-properties-network.md)) + +#### network Constraints + +**enum**: the value of this property must be equal to one of the following values: + +| Value | Explanation | +| :------------------------ | :---------- | +| `"mainnet"` | | +| `"sepolia"` | | +| `"rinkeby"` | | +| `"ropsten"` | | +| `"kovan"` | | +| `"goerli"` | | +| `"xdai"` | | +| `"sokol"` | | +| `"fuse"` | | +| `"bsc"` | | +| `"bsctest"` | | +| `"fantom"` | | +| `"fantomtest"` | | +| `"moonbase"` | | +| `"moonriver"` | | +| `"moonbeam"` | | +| `"matic"` | | +| `"mumbai"` | | +| `"avalanche"` | | +| `"fuji"` | | +| `"optimism"` | | +| `"optimism-kovan"` | | +| `"optimism-goerli"` | | +| `"arbitrum"` | | +| `"arbitrum-nova"` | | +| `"arbitrum-rinkeby"` | | +| `"arbitrum-goerli"` | | +| `"celo"` | | +| `"alfajores"` | | +| `"harmony-s0"` | | +| `"harmony-test-s0"` | | +| `"aurora"` | | +| `"auroratest"` | | +| `"hedera"` | | +| `"hederatest"` | | +| `"x-dfk-avax-chain"` | | +| `"x-dfk-avax-chain-test"` | | +| `"zksync"` | | +| `"zksync-goerli"` | | +| `"base-goerli"` | | +| `"linea-goerli"` | | + +**URI reference**: the string must be a URI reference, according to [RFC 3986](https://tools.ietf.org/html/rfc3986 "check the specification") + +### addresses + + + +`addresses` + +* is optional + +* Type: `string[]` ([Address](definitions-definitions-fortasentinel-properties-addresses-address.md)) + +* cannot be null + +* defined in: [Definitions](definitions-definitions-fortasentinel-properties-addresses.md "#/definitions/fortaSentinel/properties/addresses") + +#### addresses Type + +`string[]` ([Address](definitions-definitions-fortasentinel-properties-addresses-address.md)) + +### abi + + + +`abi` + +* is optional + +* Type: merged type ([AbiType](definitions-definitions-abitype.md)) + +* cannot be null + +* defined in: [Definitions](definitions-definitions-abitype.md "#/definitions/fortaSentinel/properties/abi") + +#### abi Type + +merged type ([AbiType](definitions-definitions-abitype.md)) + +any of + +* [StringABI](definitions-definitions-abitype-anyof-stringabi.md "check type definition") + +* [ArrayABI](definitions-definitions-abitype-anyof-arrayabi.md "check type definition") + +### alert-threshold + + + +`alert-threshold` + +* is optional + +* Type: `object` ([AlertThreshold](definitions-definitions-fortasentinel-properties-alertthreshold.md)) + +* cannot be null + +* defined in: [Definitions](definitions-definitions-fortasentinel-properties-alertthreshold.md "#/definitions/fortaSentinel/properties/alert-threshold") + +#### alert-threshold Type + +`object` ([AlertThreshold](definitions-definitions-fortasentinel-properties-alertthreshold.md)) + +### paused + + + +`paused` + +* is optional + +* Type: `boolean` + +* cannot be null + +* defined in: [Definitions](definitions-definitions-fortasentinel-properties-paused.md "#/definitions/fortaSentinel/properties/paused") + +#### paused Type + +`boolean` + +### autotask-condition + + + +`autotask-condition` + +* is optional + +* Type: `object` ([Autotask](definitions-definitions-autotask.md)) + +* cannot be null + +* defined in: [Definitions](definitions-definitions-autotask.md "#/definitions/fortaSentinel/properties/autotask-condition") + +#### autotask-condition Type + +`object` ([Autotask](definitions-definitions-autotask.md)) + +#### autotask-condition Constraints + +**URI reference**: the string must be a URI reference, according to [RFC 3986](https://tools.ietf.org/html/rfc3986 "check the specification") + +### autotask-trigger + + + +`autotask-trigger` + +* is optional + +* Type: `object` ([Autotask](definitions-definitions-autotask.md)) + +* cannot be null + +* defined in: [Definitions](definitions-definitions-autotask.md "#/definitions/fortaSentinel/properties/autotask-trigger") + +#### autotask-trigger Type + +`object` ([Autotask](definitions-definitions-autotask.md)) + +#### autotask-trigger Constraints + +**URI reference**: the string must be a URI reference, according to [RFC 3986](https://tools.ietf.org/html/rfc3986 "check the specification") + +### notify-config + + + +`notify-config` + +* is required + +* Type: `object` ([NotifyConfig](definitions-definitions-fortasentinel-properties-notifyconfig.md)) + +* cannot be null + +* defined in: [Definitions](definitions-definitions-fortasentinel-properties-notifyconfig.md "#/definitions/fortaSentinel/properties/notify-config") + +#### notify-config Type + +`object` ([NotifyConfig](definitions-definitions-fortasentinel-properties-notifyconfig.md)) + +### conditions + + + +`conditions` + +* is optional + +* Type: `object` ([Conditions](definitions-definitions-fortasentinel-properties-conditions.md)) + +* cannot be null + +* defined in: [Definitions](definitions-definitions-fortasentinel-properties-conditions.md "#/definitions/fortaSentinel/properties/conditions") + +#### conditions Type + +`object` ([Conditions](definitions-definitions-fortasentinel-properties-conditions.md)) + +### forta-node-id + + + +`forta-node-id` + +* is optional + +* Type: `string` + +* cannot be null + +* defined in: [Definitions](definitions-definitions-fortasentinel-properties-forta-node-id.md "#/definitions/fortaSentinel/properties/forta-node-id") + +#### forta-node-id Type + +`string` + +### agent-ids + + + +`agent-ids` + +* is optional + +* Type: `string[]` + +* cannot be null + +* defined in: [Definitions](definitions-definitions-fortasentinel-properties-agentids.md "#/definitions/fortaSentinel/properties/agent-ids") + +#### agent-ids Type + +`string[]` + +### risk-category + + + +`risk-category` + +* is optional + +* Type: `string` ([RiskCategory](definitions-definitions-fortasentinel-properties-riskcategory.md)) + +* cannot be null + +* defined in: [Definitions](definitions-definitions-fortasentinel-properties-riskcategory.md "#/definitions/fortaSentinel/properties/risk-category") + +#### risk-category Type + +`string` ([RiskCategory](definitions-definitions-fortasentinel-properties-riskcategory.md)) + +#### risk-category Constraints + +**enum**: the value of this property must be equal to one of the following values: + +| Value | Explanation | +| :----------------- | :---------- | +| `"NONE"` | | +| `"GOVERNANCE"` | | +| `"ACCESS-CONTROL"` | | +| `"SUSPICIOUS"` | | +| `"FINANCIAL"` | | +| `"TECHNICAL"` | | + +## Definitions group sentinel + +Reference this group by using + +```json +{"$ref":"#/definitions/sentinel"} +``` + +| Property | Type | Required | Nullable | Defined by | +| :------- | :--- | :------- | :------- | :--------- | + +## Definitions group autotask + +Reference this group by using + +```json +{"$ref":"#/definitions/autotask"} +``` + +| Property | Type | Required | Nullable | Defined by | +| :------------------ | :-------- | :------- | :------------- | :------------------------------------------------------------------------------------------------------------------------- | +| [name](#name-6) | `string` | Required | cannot be null | [Definitions](definitions-definitions-autotask-properties-name.md "#/definitions/autotask/properties/name") | +| [path](#path) | `string` | Required | cannot be null | [Definitions](definitions-definitions-autotask-properties-path.md "#/definitions/autotask/properties/path") | +| [relayer](#relayer) | `object` | Optional | cannot be null | [Definitions](definitions-definitions-relayer.md "#/definitions/autotask/properties/relayer") | +| [trigger](#trigger) | `object` | Required | cannot be null | [Definitions](definitions-definitions-autotask-properties-trigger.md "#/definitions/autotask/properties/trigger") | +| [paused](#paused-3) | `boolean` | Required | cannot be null | [Definitions](definitions-definitions-autotask-properties-paused.md "#/definitions/autotask/properties/paused") | + +### name + + + +`name` + +* is required + +* Type: `string` + +* cannot be null + +* defined in: [Definitions](definitions-definitions-autotask-properties-name.md "#/definitions/autotask/properties/name") + +#### name Type + +`string` + +### path + + + +`path` + +* is required + +* Type: `string` + +* cannot be null + +* defined in: [Definitions](definitions-definitions-autotask-properties-path.md "#/definitions/autotask/properties/path") + +#### path Type + +`string` + +### relayer + + + +`relayer` + +* is optional + +* Type: `object` ([Relayer](definitions-definitions-relayer.md)) + +* cannot be null + +* defined in: [Definitions](definitions-definitions-relayer.md "#/definitions/autotask/properties/relayer") + +#### relayer Type + +`object` ([Relayer](definitions-definitions-relayer.md)) + +#### relayer Constraints + +**URI reference**: the string must be a URI reference, according to [RFC 3986](https://tools.ietf.org/html/rfc3986 "check the specification") + +### trigger + + + +`trigger` + +* is required + +* Type: `object` ([Trigger](definitions-definitions-autotask-properties-trigger.md)) + +* cannot be null + +* defined in: [Definitions](definitions-definitions-autotask-properties-trigger.md "#/definitions/autotask/properties/trigger") + +#### trigger Type + +`object` ([Trigger](definitions-definitions-autotask-properties-trigger.md)) + +### paused + + + +`paused` + +* is required + +* Type: `boolean` + +* cannot be null + +* defined in: [Definitions](definitions-definitions-autotask-properties-paused.md "#/definitions/autotask/properties/paused") + +#### paused Type + +`boolean` + +## Definitions group deploymentConfig + +Reference this group by using + +```json +{"$ref":"#/definitions/deploymentConfig"} +``` + +| Property | Type | Required | Nullable | Defined by | +| :-------------------- | :------- | :------- | :------------- | :------------------------------------------------------------------------------------------------------------- | +| [relayer](#relayer-1) | `object` | Required | cannot be null | [Definitions](definitions-definitions-relayer.md "#/definitions/deploymentConfig/properties/relayer") | + +### relayer + + + +`relayer` + +* is required + +* Type: `object` ([Relayer](definitions-definitions-relayer.md)) + +* cannot be null + +* defined in: [Definitions](definitions-definitions-relayer.md "#/definitions/deploymentConfig/properties/relayer") + +#### relayer Type + +`object` ([Relayer](definitions-definitions-relayer.md)) + +#### relayer Constraints + +**URI reference**: the string must be a URI reference, according to [RFC 3986](https://tools.ietf.org/html/rfc3986 "check the specification") + +## Definitions group blockExplorerApiKey + +Reference this group by using + +```json +{"$ref":"#/definitions/blockExplorerApiKey"} +``` + +| Property | Type | Required | Nullable | Defined by | +| :-------------------- | :------- | :------- | :------------- | :----------------------------------------------------------------------------------------------------------------------------------------------- | +| [key](#key) | `string` | Required | cannot be null | [Definitions](definitions-definitions-blockexplorerapikey-properties-key.md "#/definitions/blockExplorerApiKey/properties/key") | +| [network](#network-4) | `string` | Required | cannot be null | [Definitions](definitions-definitions-blockexplorerapikey-properties-network.md "#/definitions/blockExplorerApiKey/properties/network") | + +### key + + + +`key` + +* is required + +* Type: `string` + +* cannot be null + +* defined in: [Definitions](definitions-definitions-blockexplorerapikey-properties-key.md "#/definitions/blockExplorerApiKey/properties/key") + +#### key Type + +`string` + +### network + + + +`network` + +* is required + +* Type: `string` ([Network](definitions-definitions-blockexplorerapikey-properties-network.md)) + +* cannot be null + +* defined in: [Definitions](definitions-definitions-blockexplorerapikey-properties-network.md "#/definitions/blockExplorerApiKey/properties/network") + +#### network Type + +`string` ([Network](definitions-definitions-blockexplorerapikey-properties-network.md)) + +#### network Constraints + +**enum**: the value of this property must be equal to one of the following values: + +| Value | Explanation | +| :------------------------ | :---------- | +| `"mainnet"` | | +| `"sepolia"` | | +| `"rinkeby"` | | +| `"ropsten"` | | +| `"kovan"` | | +| `"goerli"` | | +| `"xdai"` | | +| `"sokol"` | | +| `"fuse"` | | +| `"bsc"` | | +| `"bsctest"` | | +| `"fantom"` | | +| `"fantomtest"` | | +| `"moonbase"` | | +| `"moonriver"` | | +| `"moonbeam"` | | +| `"matic"` | | +| `"mumbai"` | | +| `"avalanche"` | | +| `"fuji"` | | +| `"optimism"` | | +| `"optimism-kovan"` | | +| `"optimism-goerli"` | | +| `"arbitrum"` | | +| `"arbitrum-nova"` | | +| `"arbitrum-rinkeby"` | | +| `"arbitrum-goerli"` | | +| `"celo"` | | +| `"alfajores"` | | +| `"harmony-s0"` | | +| `"harmony-test-s0"` | | +| `"aurora"` | | +| `"auroratest"` | | +| `"hedera"` | | +| `"hederatest"` | | +| `"x-dfk-avax-chain"` | | +| `"x-dfk-avax-chain-test"` | | +| `"zksync"` | | +| `"zksync-goerli"` | | +| `"base-goerli"` | | +| `"linea-goerli"` | | + +**URI reference**: the string must be a URI reference, according to [RFC 3986](https://tools.ietf.org/html/rfc3986 "check the specification") + +## Definitions group abi + +Reference this group by using + +```json +{"$ref":"#/definitions/abi"} +``` + +| Property | Type | Required | Nullable | Defined by | +| :------- | :--- | :------- | :------- | :--------- | diff --git a/src/types/docs/function-properties-path.md b/src/types/docs/function-properties-path.md new file mode 100644 index 0000000..19b12be --- /dev/null +++ b/src/types/docs/function-properties-path.md @@ -0,0 +1,3 @@ +## path Type + +`string` diff --git a/src/types/docs/function-properties-paused.md b/src/types/docs/function-properties-paused.md new file mode 100644 index 0000000..00a4467 --- /dev/null +++ b/src/types/docs/function-properties-paused.md @@ -0,0 +1,3 @@ +## paused Type + +`boolean` diff --git a/src/types/docs/function-properties-trigger-else.md b/src/types/docs/function-properties-trigger-else.md new file mode 100644 index 0000000..bd36bdf --- /dev/null +++ b/src/types/docs/function-properties-trigger-else.md @@ -0,0 +1,3 @@ +## else Type + +unknown diff --git a/src/types/docs/function-properties-trigger-if-properties-type.md b/src/types/docs/function-properties-trigger-if-properties-type.md new file mode 100644 index 0000000..1368a3c --- /dev/null +++ b/src/types/docs/function-properties-trigger-if-properties-type.md @@ -0,0 +1,11 @@ +## type Type + +unknown + +## type Constraints + +**constant**: the value of this property must be equal to: + +```json +"schedule" +``` diff --git a/src/types/docs/function-properties-trigger-if-properties.md b/src/types/docs/function-properties-trigger-if-properties.md new file mode 100644 index 0000000..c89940c --- /dev/null +++ b/src/types/docs/function-properties-trigger-if-properties.md @@ -0,0 +1,3 @@ +## properties Type + +unknown diff --git a/src/types/docs/function-properties-trigger-if.md b/src/types/docs/function-properties-trigger-if.md new file mode 100644 index 0000000..7c6b8d6 --- /dev/null +++ b/src/types/docs/function-properties-trigger-if.md @@ -0,0 +1,35 @@ +## if Type + +unknown + +# if Properties + +| Property | Type | Required | Nullable | Defined by | +| :------------ | :------------ | :------- | :------------- | :--------------------------------------------------------------------------------------------------------------- | +| [type](#type) | Not specified | Optional | cannot be null | [Function](function-properties-trigger-if-properties-type.md "#/properties/trigger/if/properties/type") | + +## type + + + +`type` + +* is optional + +* Type: unknown + +* cannot be null + +* defined in: [Function](function-properties-trigger-if-properties-type.md "#/properties/trigger/if/properties/type") + +### type Type + +unknown + +### type Constraints + +**constant**: the value of this property must be equal to: + +```json +"schedule" +``` diff --git a/src/types/docs/function-properties-trigger-properties-triggercron.md b/src/types/docs/function-properties-trigger-properties-triggercron.md new file mode 100644 index 0000000..b2e0ae6 --- /dev/null +++ b/src/types/docs/function-properties-trigger-properties-triggercron.md @@ -0,0 +1,3 @@ +## cron Type + +`string` ([TriggerCron](function-properties-trigger-properties-triggercron.md)) diff --git a/src/types/docs/function-properties-trigger-properties-triggerfrequency.md b/src/types/docs/function-properties-trigger-properties-triggerfrequency.md new file mode 100644 index 0000000..e55e27e --- /dev/null +++ b/src/types/docs/function-properties-trigger-properties-triggerfrequency.md @@ -0,0 +1,3 @@ +## frequency Type + +`integer` ([TriggerFrequency](function-properties-trigger-properties-triggerfrequency.md)) diff --git a/src/types/docs/function-properties-trigger-properties-triggertype.md b/src/types/docs/function-properties-trigger-properties-triggertype.md new file mode 100644 index 0000000..8d080e9 --- /dev/null +++ b/src/types/docs/function-properties-trigger-properties-triggertype.md @@ -0,0 +1,12 @@ +## type Type + +`string` ([TriggerType](function-properties-trigger-properties-triggertype.md)) + +## type Constraints + +**enum**: the value of this property must be equal to one of the following values: + +| Value | Explanation | +| :----------- | :---------- | +| `"schedule"` | | +| `"webhook"` | | diff --git a/src/types/docs/function-properties-trigger-then-oneof-0.md b/src/types/docs/function-properties-trigger-then-oneof-0.md new file mode 100644 index 0000000..d22a257 --- /dev/null +++ b/src/types/docs/function-properties-trigger-then-oneof-0.md @@ -0,0 +1,3 @@ +## 0 Type + +unknown diff --git a/src/types/docs/function-properties-trigger-then-oneof-1.md b/src/types/docs/function-properties-trigger-then-oneof-1.md new file mode 100644 index 0000000..19f8d24 --- /dev/null +++ b/src/types/docs/function-properties-trigger-then-oneof-1.md @@ -0,0 +1,3 @@ +## 1 Type + +unknown diff --git a/src/types/docs/function-properties-trigger-then.md b/src/types/docs/function-properties-trigger-then.md new file mode 100644 index 0000000..4dfeb29 --- /dev/null +++ b/src/types/docs/function-properties-trigger-then.md @@ -0,0 +1,9 @@ +## then Type + +merged type ([Details](function-properties-trigger-then.md)) + +one (and only one) of + +* [Untitled type in Function](function-properties-trigger-then-oneof-0.md "check type definition") + +* [Untitled type in Function](function-properties-trigger-then-oneof-1.md "check type definition") diff --git a/src/types/docs/function-properties-trigger.md b/src/types/docs/function-properties-trigger.md new file mode 100644 index 0000000..97986a1 --- /dev/null +++ b/src/types/docs/function-properties-trigger.md @@ -0,0 +1,74 @@ +## trigger Type + +`object` ([Trigger](function-properties-trigger.md)) + +# trigger Properties + +| Property | Type | Required | Nullable | Defined by | +| :---------------------- | :-------- | :------- | :------------- | :-------------------------------------------------------------------------------------------------------------------------- | +| [type](#type) | `string` | Required | cannot be null | [Function](function-properties-trigger-properties-triggertype.md "#/properties/trigger/properties/type") | +| [cron](#cron) | `string` | Optional | cannot be null | [Function](function-properties-trigger-properties-triggercron.md "#/properties/trigger/properties/cron") | +| [frequency](#frequency) | `integer` | Optional | cannot be null | [Function](function-properties-trigger-properties-triggerfrequency.md "#/properties/trigger/properties/frequency") | + +## type + + + +`type` + +* is required + +* Type: `string` ([TriggerType](function-properties-trigger-properties-triggertype.md)) + +* cannot be null + +* defined in: [Function](function-properties-trigger-properties-triggertype.md "#/properties/trigger/properties/type") + +### type Type + +`string` ([TriggerType](function-properties-trigger-properties-triggertype.md)) + +### type Constraints + +**enum**: the value of this property must be equal to one of the following values: + +| Value | Explanation | +| :----------- | :---------- | +| `"schedule"` | | +| `"webhook"` | | + +## cron + + + +`cron` + +* is optional + +* Type: `string` ([TriggerCron](function-properties-trigger-properties-triggercron.md)) + +* cannot be null + +* defined in: [Function](function-properties-trigger-properties-triggercron.md "#/properties/trigger/properties/cron") + +### cron Type + +`string` ([TriggerCron](function-properties-trigger-properties-triggercron.md)) + +## frequency + + + +`frequency` + +* is optional + +* Type: `integer` ([TriggerFrequency](function-properties-trigger-properties-triggerfrequency.md)) + +* cannot be null + +* defined in: [Function](function-properties-trigger-properties-triggerfrequency.md "#/properties/trigger/properties/frequency") + +### frequency Type + +`integer` ([TriggerFrequency](function-properties-trigger-properties-triggerfrequency.md)) diff --git a/src/types/docs/function.md b/src/types/docs/function.md new file mode 100644 index 0000000..b6126b0 --- /dev/null +++ b/src/types/docs/function.md @@ -0,0 +1,88 @@ +## Function Type + +`object` ([Function](function.md)) + +# Function Properties + +| Property | Type | Required | Nullable | Defined by | +| :------------------ | :-------- | :------- | :------------- | :----------------------------------------------------------------------------- | +| [path](#path) | `string` | Required | cannot be null | [Function](function-properties-path.md "#/properties/path") | +| [relayer](#relayer) | `object` | Optional | cannot be null | [Function](definitions-definitions-relayer.md "#/properties/relayer") | +| [trigger](#trigger) | `object` | Required | cannot be null | [Function](function-properties-trigger.md "#/properties/trigger") | +| [paused](#paused) | `boolean` | Required | cannot be null | [Function](function-properties-paused.md "#/properties/paused") | + +## path + + + +`path` + +* is required + +* Type: `string` + +* cannot be null + +* defined in: [Function](function-properties-path.md "#/properties/path") + +### path Type + +`string` + +## relayer + + + +`relayer` + +* is optional + +* Type: `object` ([Relayer](definitions-definitions-relayer.md)) + +* cannot be null + +* defined in: [Function](definitions-definitions-relayer.md "#/properties/relayer") + +### relayer Type + +`object` ([Relayer](definitions-definitions-relayer.md)) + +### relayer Constraints + +**URI reference**: the string must be a URI reference, according to [RFC 3986](https://tools.ietf.org/html/rfc3986 "check the specification") + +## trigger + + + +`trigger` + +* is required + +* Type: `object` ([Trigger](function-properties-trigger.md)) + +* cannot be null + +* defined in: [Function](function-properties-trigger.md "#/properties/trigger") + +### trigger Type + +`object` ([Trigger](function-properties-trigger.md)) + +## paused + + + +`paused` + +* is required + +* Type: `boolean` + +* cannot be null + +* defined in: [Function](function-properties-paused.md "#/properties/paused") + +### paused Type + +`boolean` diff --git a/src/types/docs/provider-properties-ssot.md b/src/types/docs/provider-properties-ssot.md new file mode 100644 index 0000000..6df75bb --- /dev/null +++ b/src/types/docs/provider-properties-ssot.md @@ -0,0 +1,3 @@ +## ssot Type + +`boolean` diff --git a/src/types/docs/provider-properties-stackname.md b/src/types/docs/provider-properties-stackname.md new file mode 100644 index 0000000..9ed8f0f --- /dev/null +++ b/src/types/docs/provider-properties-stackname.md @@ -0,0 +1,3 @@ +## stackName Type + +`string` diff --git a/src/types/docs/provider-properties-stage.md b/src/types/docs/provider-properties-stage.md new file mode 100644 index 0000000..4bd28ee --- /dev/null +++ b/src/types/docs/provider-properties-stage.md @@ -0,0 +1,3 @@ +## stage Type + +`string` diff --git a/src/types/docs/provider.md b/src/types/docs/provider.md new file mode 100644 index 0000000..811f1f5 --- /dev/null +++ b/src/types/docs/provider.md @@ -0,0 +1,65 @@ +## Provider Type + +`object` ([Provider](provider.md)) + +# Provider Properties + +| Property | Type | Required | Nullable | Defined by | +| :---------------------- | :-------- | :------- | :------------- | :----------------------------------------------------------------------------- | +| [stage](#stage) | `string` | Required | cannot be null | [Provider](provider-properties-stage.md "#/properties/stage") | +| [stackName](#stackname) | `string` | Required | cannot be null | [Provider](provider-properties-stackname.md "#/properties/stackName") | +| [ssot](#ssot) | `boolean` | Optional | cannot be null | [Provider](provider-properties-ssot.md "#/properties/ssot") | + +## stage + + + +`stage` + +* is required + +* Type: `string` + +* cannot be null + +* defined in: [Provider](provider-properties-stage.md "#/properties/stage") + +### stage Type + +`string` + +## stackName + + + +`stackName` + +* is required + +* Type: `string` + +* cannot be null + +* defined in: [Provider](provider-properties-stackname.md "#/properties/stackName") + +### stackName Type + +`string` + +## ssot + + + +`ssot` + +* is optional + +* Type: `boolean` + +* cannot be null + +* defined in: [Provider](provider-properties-ssot.md "#/properties/ssot") + +### ssot Type + +`boolean` diff --git a/src/types/docs/resources-properties-resources-properties-autotasksecrets-properties-global-additionalproperties.md b/src/types/docs/resources-properties-resources-properties-autotasksecrets-properties-global-additionalproperties.md new file mode 100644 index 0000000..1a73fed --- /dev/null +++ b/src/types/docs/resources-properties-resources-properties-autotasksecrets-properties-global-additionalproperties.md @@ -0,0 +1,3 @@ +## additionalProperties Type + +`string` diff --git a/src/types/docs/resources-properties-resources-properties-autotasksecrets-properties-global.md b/src/types/docs/resources-properties-resources-properties-autotasksecrets-properties-global.md new file mode 100644 index 0000000..5cd9662 --- /dev/null +++ b/src/types/docs/resources-properties-resources-properties-autotasksecrets-properties-global.md @@ -0,0 +1,27 @@ +## global Type + +`object` ([Global](resources-properties-resources-properties-autotasksecrets-properties-global.md)) + +# global Properties + +| Property | Type | Required | Nullable | Defined by | +| :-------------------- | :------- | :------- | :------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| Additional Properties | `string` | Optional | cannot be null | [Resources](resources-properties-resources-properties-autotasksecrets-properties-global-additionalproperties.md "#/properties/Resources/properties/secrets/properties/global/additionalProperties") | + +## Additional Properties + +Additional properties are allowed, as long as they follow this schema: + + + +* is optional + +* Type: `string` + +* cannot be null + +* defined in: [Resources](resources-properties-resources-properties-autotasksecrets-properties-global-additionalproperties.md "#/properties/Resources/properties/secrets/properties/global/additionalProperties") + +### additionalProperties Type + +`string` diff --git a/src/types/docs/resources-properties-resources-properties-autotasksecrets-properties-stack-additionalproperties.md b/src/types/docs/resources-properties-resources-properties-autotasksecrets-properties-stack-additionalproperties.md new file mode 100644 index 0000000..1a73fed --- /dev/null +++ b/src/types/docs/resources-properties-resources-properties-autotasksecrets-properties-stack-additionalproperties.md @@ -0,0 +1,3 @@ +## additionalProperties Type + +`string` diff --git a/src/types/docs/resources-properties-resources-properties-autotasksecrets-properties-stack.md b/src/types/docs/resources-properties-resources-properties-autotasksecrets-properties-stack.md new file mode 100644 index 0000000..29effca --- /dev/null +++ b/src/types/docs/resources-properties-resources-properties-autotasksecrets-properties-stack.md @@ -0,0 +1,27 @@ +## stack Type + +`object` ([Stack](resources-properties-resources-properties-autotasksecrets-properties-stack.md)) + +# stack Properties + +| Property | Type | Required | Nullable | Defined by | +| :-------------------- | :------- | :------- | :------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| Additional Properties | `string` | Optional | cannot be null | [Resources](resources-properties-resources-properties-autotasksecrets-properties-stack-additionalproperties.md "#/properties/Resources/properties/secrets/properties/stack/additionalProperties") | + +## Additional Properties + +Additional properties are allowed, as long as they follow this schema: + + + +* is optional + +* Type: `string` + +* cannot be null + +* defined in: [Resources](resources-properties-resources-properties-autotasksecrets-properties-stack-additionalproperties.md "#/properties/Resources/properties/secrets/properties/stack/additionalProperties") + +### additionalProperties Type + +`string` diff --git a/src/types/docs/resources-properties-resources-properties-autotasksecrets.md b/src/types/docs/resources-properties-resources-properties-autotasksecrets.md new file mode 100644 index 0000000..6038127 --- /dev/null +++ b/src/types/docs/resources-properties-resources-properties-autotasksecrets.md @@ -0,0 +1,46 @@ +## secrets Type + +`object` ([AutotaskSecrets](resources-properties-resources-properties-autotasksecrets.md)) + +# secrets Properties + +| Property | Type | Required | Nullable | Defined by | +| :---------------- | :------- | :------- | :------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| [global](#global) | `object` | Optional | cannot be null | [Resources](resources-properties-resources-properties-autotasksecrets-properties-global.md "#/properties/Resources/properties/secrets/properties/global") | +| [stack](#stack) | `object` | Optional | cannot be null | [Resources](resources-properties-resources-properties-autotasksecrets-properties-stack.md "#/properties/Resources/properties/secrets/properties/stack") | + +## global + + + +`global` + +* is optional + +* Type: `object` ([Global](resources-properties-resources-properties-autotasksecrets-properties-global.md)) + +* cannot be null + +* defined in: [Resources](resources-properties-resources-properties-autotasksecrets-properties-global.md "#/properties/Resources/properties/secrets/properties/global") + +### global Type + +`object` ([Global](resources-properties-resources-properties-autotasksecrets-properties-global.md)) + +## stack + + + +`stack` + +* is optional + +* Type: `object` ([Stack](resources-properties-resources-properties-autotasksecrets-properties-stack.md)) + +* cannot be null + +* defined in: [Resources](resources-properties-resources-properties-autotasksecrets-properties-stack.md "#/properties/Resources/properties/secrets/properties/stack") + +### stack Type + +`object` ([Stack](resources-properties-resources-properties-autotasksecrets-properties-stack.md)) diff --git a/src/types/docs/resources-properties-resources-properties-block-explorer-api-keys.md b/src/types/docs/resources-properties-resources-properties-block-explorer-api-keys.md new file mode 100644 index 0000000..4cf9bc2 --- /dev/null +++ b/src/types/docs/resources-properties-resources-properties-block-explorer-api-keys.md @@ -0,0 +1,31 @@ +## block-explorer-api-keys Type + +`object` ([Block Explorer Api Keys](resources-properties-resources-properties-block-explorer-api-keys.md)) + +# block-explorer-api-keys Properties + +| Property | Type | Required | Nullable | Defined by | +| :-------------------- | :------- | :------- | :------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------- | +| Additional Properties | `object` | Optional | cannot be null | [Resources](definitions-definitions-blockexplorerapikey.md "#/properties/Resources/properties/block-explorer-api-keys/additionalProperties") | + +## Additional Properties + +Additional properties are allowed, as long as they follow this schema: + + + +* is optional + +* Type: `object` ([BlockExplorerApiKey](definitions-definitions-blockexplorerapikey.md)) + +* cannot be null + +* defined in: [Resources](definitions-definitions-blockexplorerapikey.md "#/properties/Resources/properties/block-explorer-api-keys/additionalProperties") + +### additionalProperties Type + +`object` ([BlockExplorerApiKey](definitions-definitions-blockexplorerapikey.md)) + +### additionalProperties Constraints + +**URI reference**: the string must be a URI reference, according to [RFC 3986](https://tools.ietf.org/html/rfc3986 "check the specification") diff --git a/src/types/docs/resources-properties-resources-properties-contracts.md b/src/types/docs/resources-properties-resources-properties-contracts.md new file mode 100644 index 0000000..57f6240 --- /dev/null +++ b/src/types/docs/resources-properties-resources-properties-contracts.md @@ -0,0 +1,31 @@ +## contracts Type + +`object` ([Contracts](resources-properties-resources-properties-contracts.md)) + +# contracts Properties + +| Property | Type | Required | Nullable | Defined by | +| :-------------------- | :------- | :------- | :------------- | :--------------------------------------------------------------------------------------------------------------------------- | +| Additional Properties | `object` | Optional | cannot be null | [Resources](definitions-definitions-contract.md "#/properties/Resources/properties/contracts/additionalProperties") | + +## Additional Properties + +Additional properties are allowed, as long as they follow this schema: + + + +* is optional + +* Type: `object` ([Contract](definitions-definitions-contract.md)) + +* cannot be null + +* defined in: [Resources](definitions-definitions-contract.md "#/properties/Resources/properties/contracts/additionalProperties") + +### additionalProperties Type + +`object` ([Contract](definitions-definitions-contract.md)) + +### additionalProperties Constraints + +**URI reference**: the string must be a URI reference, according to [RFC 3986](https://tools.ietf.org/html/rfc3986 "check the specification") diff --git a/src/types/docs/resources-properties-resources-properties-deployment-configs.md b/src/types/docs/resources-properties-resources-properties-deployment-configs.md new file mode 100644 index 0000000..48794f3 --- /dev/null +++ b/src/types/docs/resources-properties-resources-properties-deployment-configs.md @@ -0,0 +1,31 @@ +## deployment-configs Type + +`object` ([Deployment Configs](resources-properties-resources-properties-deployment-configs.md)) + +# deployment-configs Properties + +| Property | Type | Required | Nullable | Defined by | +| :-------------------- | :------- | :------- | :------------- | :-------------------------------------------------------------------------------------------------------------------------------------------- | +| Additional Properties | `object` | Optional | cannot be null | [Resources](definitions-definitions-deploymentconfig.md "#/properties/Resources/properties/deployment-configs/additionalProperties") | + +## Additional Properties + +Additional properties are allowed, as long as they follow this schema: + + + +* is optional + +* Type: `object` ([DeploymentConfig](definitions-definitions-deploymentconfig.md)) + +* cannot be null + +* defined in: [Resources](definitions-definitions-deploymentconfig.md "#/properties/Resources/properties/deployment-configs/additionalProperties") + +### additionalProperties Type + +`object` ([DeploymentConfig](definitions-definitions-deploymentconfig.md)) + +### additionalProperties Constraints + +**URI reference**: the string must be a URI reference, according to [RFC 3986](https://tools.ietf.org/html/rfc3986 "check the specification") diff --git a/src/types/docs/resources-properties-resources-properties-notifications.md b/src/types/docs/resources-properties-resources-properties-notifications.md new file mode 100644 index 0000000..aa3eeda --- /dev/null +++ b/src/types/docs/resources-properties-resources-properties-notifications.md @@ -0,0 +1,31 @@ +## notifications Type + +`object` ([Notifications](resources-properties-resources-properties-notifications.md)) + +# notifications Properties + +| Property | Type | Required | Nullable | Defined by | +| :-------------------- | :------- | :------- | :------------- | :----------------------------------------------------------------------------------------------------------------------------------- | +| Additional Properties | `object` | Optional | cannot be null | [Resources](definitions-definitions-notification.md "#/properties/Resources/properties/notifications/additionalProperties") | + +## Additional Properties + +Additional properties are allowed, as long as they follow this schema: + + + +* is optional + +* Type: `object` ([Notification](definitions-definitions-notification.md)) + +* cannot be null + +* defined in: [Resources](definitions-definitions-notification.md "#/properties/Resources/properties/notifications/additionalProperties") + +### additionalProperties Type + +`object` ([Notification](definitions-definitions-notification.md)) + +### additionalProperties Constraints + +**URI reference**: the string must be a URI reference, according to [RFC 3986](https://tools.ietf.org/html/rfc3986 "check the specification") diff --git a/src/types/docs/resources-properties-resources-properties-policies.md b/src/types/docs/resources-properties-resources-properties-policies.md new file mode 100644 index 0000000..6a7b6a7 --- /dev/null +++ b/src/types/docs/resources-properties-resources-properties-policies.md @@ -0,0 +1,31 @@ +## policies Type + +`object` ([Policies](resources-properties-resources-properties-policies.md)) + +# policies Properties + +| Property | Type | Required | Nullable | Defined by | +| :-------------------- | :------- | :------- | :------------- | :------------------------------------------------------------------------------------------------------------------------ | +| Additional Properties | `object` | Optional | cannot be null | [Resources](definitions-definitions-policy.md "#/properties/Resources/properties/policies/additionalProperties") | + +## Additional Properties + +Additional properties are allowed, as long as they follow this schema: + + + +* is optional + +* Type: `object` ([Policy](definitions-definitions-policy.md)) + +* cannot be null + +* defined in: [Resources](definitions-definitions-policy.md "#/properties/Resources/properties/policies/additionalProperties") + +### additionalProperties Type + +`object` ([Policy](definitions-definitions-policy.md)) + +### additionalProperties Constraints + +**URI reference**: the string must be a URI reference, according to [RFC 3986](https://tools.ietf.org/html/rfc3986 "check the specification") diff --git a/src/types/docs/resources-properties-resources-properties-relayers.md b/src/types/docs/resources-properties-resources-properties-relayers.md new file mode 100644 index 0000000..0d417fa --- /dev/null +++ b/src/types/docs/resources-properties-resources-properties-relayers.md @@ -0,0 +1,31 @@ +## relayers Type + +`object` ([Relayers](resources-properties-resources-properties-relayers.md)) + +# relayers Properties + +| Property | Type | Required | Nullable | Defined by | +| :-------------------- | :------- | :------- | :------------- | :------------------------------------------------------------------------------------------------------------------------- | +| Additional Properties | `object` | Optional | cannot be null | [Resources](definitions-definitions-relayer.md "#/properties/Resources/properties/relayers/additionalProperties") | + +## Additional Properties + +Additional properties are allowed, as long as they follow this schema: + + + +* is optional + +* Type: `object` ([Relayer](definitions-definitions-relayer.md)) + +* cannot be null + +* defined in: [Resources](definitions-definitions-relayer.md "#/properties/Resources/properties/relayers/additionalProperties") + +### additionalProperties Type + +`object` ([Relayer](definitions-definitions-relayer.md)) + +### additionalProperties Constraints + +**URI reference**: the string must be a URI reference, according to [RFC 3986](https://tools.ietf.org/html/rfc3986 "check the specification") diff --git a/src/types/docs/resources-properties-resources-properties-sentinels.md b/src/types/docs/resources-properties-resources-properties-sentinels.md new file mode 100644 index 0000000..1cbf16b --- /dev/null +++ b/src/types/docs/resources-properties-resources-properties-sentinels.md @@ -0,0 +1,41 @@ +## sentinels Type + +`object` ([Sentinels](resources-properties-resources-properties-sentinels.md)) + +# sentinels Properties + +| Property | Type | Required | Nullable | Defined by | +| :-------------------- | :----- | :------- | :------------- | :--------------------------------------------------------------------------------------------------------------------------- | +| Additional Properties | Merged | Optional | cannot be null | [Resources](definitions-definitions-sentinel.md "#/properties/Resources/properties/sentinels/additionalProperties") | + +## Additional Properties + +Additional properties are allowed, as long as they follow this schema: + + + +* is optional + +* Type: `object` ([Sentinel](definitions-definitions-sentinel.md)) + +* cannot be null + +* defined in: [Resources](definitions-definitions-sentinel.md "#/properties/Resources/properties/sentinels/additionalProperties") + +### additionalProperties Type + +`object` ([Sentinel](definitions-definitions-sentinel.md)) + +one (and only one) of + +* [BlockSentinel](definitions-definitions-blocksentinel.md "check type definition") + +* any of + + * [Untitled type in Definitions](definitions-definitions-fortasentinel-anyof-0.md "check type definition") + + * [Untitled type in Definitions](definitions-definitions-fortasentinel-anyof-1.md "check type definition") + +### additionalProperties Constraints + +**URI reference**: the string must be a URI reference, according to [RFC 3986](https://tools.ietf.org/html/rfc3986 "check the specification") diff --git a/src/types/docs/resources-properties-resources.md b/src/types/docs/resources-properties-resources.md new file mode 100644 index 0000000..d7902ab --- /dev/null +++ b/src/types/docs/resources-properties-resources.md @@ -0,0 +1,160 @@ +## Resources Type + +`object` ([Resources](resources-properties-resources.md)) + +# Resources Properties + +| Property | Type | Required | Nullable | Defined by | +| :-------------------------------------------------- | :------- | :------- | :------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------- | +| [notifications](#notifications) | `object` | Optional | cannot be null | [Resources](resources-properties-resources-properties-notifications.md "#/properties/Resources/properties/notifications") | +| [relayers](#relayers) | `object` | Optional | cannot be null | [Resources](resources-properties-resources-properties-relayers.md "#/properties/Resources/properties/relayers") | +| [policies](#policies) | `object` | Optional | cannot be null | [Resources](resources-properties-resources-properties-policies.md "#/properties/Resources/properties/policies") | +| [contracts](#contracts) | `object` | Optional | cannot be null | [Resources](resources-properties-resources-properties-contracts.md "#/properties/Resources/properties/contracts") | +| [secrets](#secrets) | `object` | Optional | cannot be null | [Resources](resources-properties-resources-properties-autotasksecrets.md "#/properties/Resources/properties/secrets") | +| [sentinels](#sentinels) | `object` | Optional | cannot be null | [Resources](resources-properties-resources-properties-sentinels.md "#/properties/Resources/properties/sentinels") | +| [deployment-configs](#deployment-configs) | `object` | Optional | cannot be null | [Resources](resources-properties-resources-properties-deployment-configs.md "#/properties/Resources/properties/deployment-configs") | +| [block-explorer-api-keys](#block-explorer-api-keys) | `object` | Optional | cannot be null | [Resources](resources-properties-resources-properties-block-explorer-api-keys.md "#/properties/Resources/properties/block-explorer-api-keys") | + +## notifications + + + +`notifications` + +* is optional + +* Type: `object` ([Notifications](resources-properties-resources-properties-notifications.md)) + +* cannot be null + +* defined in: [Resources](resources-properties-resources-properties-notifications.md "#/properties/Resources/properties/notifications") + +### notifications Type + +`object` ([Notifications](resources-properties-resources-properties-notifications.md)) + +## relayers + + + +`relayers` + +* is optional + +* Type: `object` ([Relayers](resources-properties-resources-properties-relayers.md)) + +* cannot be null + +* defined in: [Resources](resources-properties-resources-properties-relayers.md "#/properties/Resources/properties/relayers") + +### relayers Type + +`object` ([Relayers](resources-properties-resources-properties-relayers.md)) + +## policies + + + +`policies` + +* is optional + +* Type: `object` ([Policies](resources-properties-resources-properties-policies.md)) + +* cannot be null + +* defined in: [Resources](resources-properties-resources-properties-policies.md "#/properties/Resources/properties/policies") + +### policies Type + +`object` ([Policies](resources-properties-resources-properties-policies.md)) + +## contracts + + + +`contracts` + +* is optional + +* Type: `object` ([Contracts](resources-properties-resources-properties-contracts.md)) + +* cannot be null + +* defined in: [Resources](resources-properties-resources-properties-contracts.md "#/properties/Resources/properties/contracts") + +### contracts Type + +`object` ([Contracts](resources-properties-resources-properties-contracts.md)) + +## secrets + + + +`secrets` + +* is optional + +* Type: `object` ([AutotaskSecrets](resources-properties-resources-properties-autotasksecrets.md)) + +* cannot be null + +* defined in: [Resources](resources-properties-resources-properties-autotasksecrets.md "#/properties/Resources/properties/secrets") + +### secrets Type + +`object` ([AutotaskSecrets](resources-properties-resources-properties-autotasksecrets.md)) + +## sentinels + + + +`sentinels` + +* is optional + +* Type: `object` ([Sentinels](resources-properties-resources-properties-sentinels.md)) + +* cannot be null + +* defined in: [Resources](resources-properties-resources-properties-sentinels.md "#/properties/Resources/properties/sentinels") + +### sentinels Type + +`object` ([Sentinels](resources-properties-resources-properties-sentinels.md)) + +## deployment-configs + + + +`deployment-configs` + +* is optional + +* Type: `object` ([Deployment Configs](resources-properties-resources-properties-deployment-configs.md)) + +* cannot be null + +* defined in: [Resources](resources-properties-resources-properties-deployment-configs.md "#/properties/Resources/properties/deployment-configs") + +### deployment-configs Type + +`object` ([Deployment Configs](resources-properties-resources-properties-deployment-configs.md)) + +## block-explorer-api-keys + + + +`block-explorer-api-keys` + +* is optional + +* Type: `object` ([Block Explorer Api Keys](resources-properties-resources-properties-block-explorer-api-keys.md)) + +* cannot be null + +* defined in: [Resources](resources-properties-resources-properties-block-explorer-api-keys.md "#/properties/Resources/properties/block-explorer-api-keys") + +### block-explorer-api-keys Type + +`object` ([Block Explorer Api Keys](resources-properties-resources-properties-block-explorer-api-keys.md)) diff --git a/src/types/docs/resources.md b/src/types/docs/resources.md new file mode 100644 index 0000000..bdd321f --- /dev/null +++ b/src/types/docs/resources.md @@ -0,0 +1,27 @@ +## Resources Type + +`object` ([Resources](resources.md)) + +# Resources Properties + +| Property | Type | Required | Nullable | Defined by | +| :---------------------- | :------- | :------- | :------------- | :------------------------------------------------------------------------------- | +| [Resources](#resources) | `object` | Optional | cannot be null | [Resources](resources-properties-resources.md "#/properties/Resources") | + +## Resources + + + +`Resources` + +* is optional + +* Type: `object` ([Resources](resources-properties-resources.md)) + +* cannot be null + +* defined in: [Resources](resources-properties-resources.md "#/properties/Resources") + +### Resources Type + +`object` ([Resources](resources-properties-resources.md)) diff --git a/src/types/index.ts b/src/types/index.ts new file mode 100644 index 0000000..a623ce5 --- /dev/null +++ b/src/types/index.ts @@ -0,0 +1,256 @@ +import { Network } from '@openzeppelin/defender-base-client'; +import { Contract } from '@openzeppelin/defender-admin-client'; +import { RelayerGetResponse, RelayerApiKey } from '@openzeppelin/defender-relay-client'; +import { JsonFragment } from '@ethersproject/abi'; +import { DefenderApiResponseError } from '@openzeppelin/defender-base-client/lib/api/api-error'; +import { + SaveNotificationRequest, + NotificationSummary, + DatadogConfig, + SlackConfig, + TelegramBotConfig, + EmailConfig, + DiscordConfig, + NotificationType, +} from '@openzeppelin/defender-sentinel-client/lib/models/notification'; + +import { NotificationCategory } from '@openzeppelin/defender-sentinel-client/lib/models/category'; +import { CreateSentinelResponse, BlockWatcher } from '@openzeppelin/defender-sentinel-client'; + +import { + CreateBlockSubscriberResponse, + CreateFortaSubscriberResponse, + ExternalCreateBlockSubscriberRequest, + ExternalCreateFortaSubscriberRequest, + NotificationReference, + SubscriberRiskCategory, +} from '@openzeppelin/defender-sentinel-client/lib/models/subscriber'; +import { + Autotask, + SecretsMap, + ScheduleTrigger, + WebhookTrigger, + SentinelTrigger, + MonitorFilterTrigger, +} from '@openzeppelin/defender-autotask-client/lib/models/autotask'; +import { BlockExplorerApiKeyResponse, DeploymentConfigResponse } from '@openzeppelin/platform-deploy-client'; +import { OpsgenieConfig } from '@openzeppelin/defender-sentinel-client/lib/models/opsgenie'; +import { PagerDutyConfig } from '@openzeppelin/defender-sentinel-client/lib/models/pager-duty'; + +export type DefenderAPIError = DefenderApiResponseError; +export type DefenderRelayerApiKey = RelayerApiKey; +export type DefenderSecretsMap = SecretsMap; +export type DefenderContract = Contract; +export type DefenderRelayer = RelayerGetResponse; +export type DefenderAutotask = Autotask; +export type DefenderBlockWatcher = BlockWatcher; +export type DefenderNotification = NotificationSummary; +export type DefenderCategory = NotificationCategory; +export type DefenderNotificationReference = NotificationReference; +export type DefenderSentinel = CreateSentinelResponse; +export type DefenderBlockSentinelResponse = CreateBlockSubscriberResponse; +export type DefenderFortaSentinelResponse = CreateFortaSubscriberResponse; +export type DefenderBlockSentinel = ExternalCreateBlockSubscriberRequest; +export type DefenderFortaSentinel = ExternalCreateFortaSubscriberRequest; +export type DefenderSlackConfig = SlackConfig; +export type DefenderDatadogConfig = DatadogConfig; +export type DefenderDiscordConfig = DiscordConfig; +export type DefenderTelegramConfig = TelegramBotConfig; +export type DefenderEmailConfig = EmailConfig; +export type DefenderNetwork = Network; +export type DefenderWebhookTrigger = WebhookTrigger; +export type DefenderScheduleTrigger = ScheduleTrigger; +export type DefenderDeploymentConfig = DeploymentConfigResponse; +export type DefenderBlockExplorerApiKey = BlockExplorerApiKeyResponse; +export type DefenderSentinelTrigger = SentinelTrigger; +export type DefenderMonitorFilterTrigger = MonitorFilterTrigger; +export type DefenderSubscriberRiskCategory = SubscriberRiskCategory; + +export type ResourceType = + | 'Sentinels' + | 'Relayers' + | 'Notifications' + | 'Categories' + | 'Autotasks' + | 'Contracts' + | 'Secrets' + | 'Deployment Configs' + | 'Block Explorer Api Keys'; + +export type YPolicy = { + 'gas-price-cap'?: number; + 'whitelist-receivers'?: string[]; + 'eip1559-pricing'?: boolean; + 'private-transactions'?: boolean; +}; + +export type YRelayer = { + name: string; + network: Network; + 'min-balance': number; + policy?: YPolicy; + 'api-keys': any[]; + 'address-from-relayer'?: YRelayer; +}; + +export type YAutotask = { + name: string; + path: string; + relayer?: YRelayer; + trigger: { + type: 'schedule' | 'webhook' | 'sentinel' | 'monitor-filter'; + frequency?: number; + cron?: string; + }; + paused: boolean; +}; + +export type YSlackConfig = { + url: string; +}; + +export type YTelegramConfig = { + 'bot-token': string; + 'chat-id': string; +}; + +export type YDiscordConfig = { + url: string; +}; + +export type YEmailConfig = { + emails: string[]; +}; + +export type YDatadogConfig = { + 'api-key': string; + 'metric-prefix': string; +}; + +export type YOpsgenieConfig = OpsgenieConfig; +export type YPagerdutyConfig = PagerDutyConfig; + +export type YNotification = SaveNotificationRequest & { + type: NotificationType; + name: string; + paused: boolean; + config: + | YSlackConfig + | YTelegramConfig + | YDatadogConfig + | YDiscordConfig + | YEmailConfig + | YOpsgenieConfig + | YPagerdutyConfig; +}; + +export type YCategory = { + name: string; + description: string; + 'notification-ids': YNotification[]; +}; + +export type YBlockSentinel = { + name: string; + type: 'BLOCK'; + network: Network; + addresses: string[]; + abi?: string | string[] | JsonFragment[]; + 'alert-threshold'?: { amount: number; 'window-seconds': number }; + paused?: boolean; + 'autotask-condition'?: YAutotask; + 'autotask-trigger'?: YAutotask; + 'confirm-level'?: number | 'safe' | 'finalized'; + 'notify-config': { + timeout?: number; + message?: string; + 'message-subject'?: string; + category?: YCategory; + channels: YNotification[]; + }; + conditions?: { + event: { signature: string; expression?: string }[]; + function: { signature: string; expression?: string }[]; + transaction?: string; + }; + 'risk-category': DefenderSubscriberRiskCategory; +}; + +export type YFortaSentinel = { + name: string; + type: 'FORTA'; + network?: Network; + addresses?: string[]; + abi?: string | string[] | JsonFragment[]; + 'alert-threshold'?: { amount: number; 'window-seconds': number }; + paused?: boolean; + 'autotask-condition'?: YAutotask; + 'autotask-trigger'?: YAutotask; + 'notify-config': { + timeout?: number; + message?: string; + 'message-subject'?: string; + category?: YCategory; + channels: YNotification[]; + }; + conditions?: { + 'min-scanner-count': number; + severity?: 0 | 1 | 2 | 3 | 4 | 5; + 'alert-ids'?: string[]; + }; + 'forta-node-id'?: string; + 'agent-ids'?: string[]; + 'forta-last-processed-time'?: string; + 'risk-category': DefenderSubscriberRiskCategory; +}; + +export type YSentinel = YBlockSentinel | YFortaSentinel; + +export type YContract = { + name: string; + address: string; + network: Network; + abi?: string | string[] | JsonFragment[]; + 'nat-spec'?: string; +}; + +export type YSecret = { + [k: string]: string; +}; + +export type TeamKey = { + apiKey: string; + apiSecret: string; +}; + +export type DeployResponse = { + name: string; + id: string; + success: boolean; + notice?: string; + error?: string; + [k: string]: any; +}; + +export type DeployOutput = { removed: T[]; created: T[]; updated: T[] }; + +export type ListDefenderResources = { + sentinels: DefenderSentinel[]; + autotasks: DefenderAutotask[]; + notifications: DefenderNotification[]; + categories: DefenderCategory[]; + contracts: DefenderContract[]; + relayerApiKeys: DefenderRelayerApiKey[]; + secrets: string[]; + deploymentConfigs: DefenderDeploymentConfig[]; + blockExplorerApiKeys: DefenderBlockExplorerApiKey[]; +}; + +export type YDeploymentConfig = { + relayer: YRelayer; +}; + +export type YBlockExplorerApiKey = { + key: string; + network: Network; +}; diff --git a/src/types/schemas/configs/replace-ref-config.ts b/src/types/schemas/configs/replace-ref-config.ts new file mode 100644 index 0000000..2a8fe1c --- /dev/null +++ b/src/types/schemas/configs/replace-ref-config.ts @@ -0,0 +1,6 @@ +// replace-in-file configuration +module.exports = { + files: ['**/schemas/*.schema.json'], + from: /definitions.schema.json\//g, + to: '', +}; diff --git a/src/types/schemas/configs/replace-undefined-config.ts b/src/types/schemas/configs/replace-undefined-config.ts new file mode 100644 index 0000000..43a71ec --- /dev/null +++ b/src/types/schemas/configs/replace-undefined-config.ts @@ -0,0 +1,6 @@ +// replace-in-file configuration +module.exports = { + files: ['**/docs/*.md'], + from: /undefined/g, + to: '', +}; diff --git a/src/types/schemas/defender.schema.json b/src/types/schemas/defender.schema.json new file mode 100644 index 0000000..c32d47e --- /dev/null +++ b/src/types/schemas/defender.schema.json @@ -0,0 +1 @@ +{"$schema":"http://json-schema.org/draft-07/schema#","title":"Defender","type":"object","properties":{"key":{"type":"string"},"secret":{"type":"string"}},"required":["key","secret"]} diff --git a/src/types/schemas/definitions.schema.json b/src/types/schemas/definitions.schema.json new file mode 100644 index 0000000..742340f --- /dev/null +++ b/src/types/schemas/definitions.schema.json @@ -0,0 +1 @@ +{"$schema":"http://json-schema.org/draft-07/schema#","title":"Definitions","definitions":{"address":{"title":"Address","type":"string","pattern":"^0x[a-fA-F0-9]{40}$"},"risk-category":{"title":"RiskCategory","type":"string","enum":["NONE","GOVERNANCE","ACCESS-CONTROL","SUSPICIOUS","FINANCIAL","TECHNICAL"]},"network":{"title":"Network","type":"string","enum":["mainnet","sepolia","rinkeby","ropsten","kovan","goerli","xdai","sokol","fuse","bsc","bsctest","fantom","fantomtest","moonbase","moonriver","moonbeam","matic","mumbai","avalanche","fuji","optimism","optimism-kovan","optimism-goerli","arbitrum","arbitrum-nova","arbitrum-rinkeby","arbitrum-goerli","celo","alfajores","harmony-s0","harmony-test-s0","aurora","auroratest","hedera","hederatest","x-dfk-avax-chain","x-dfk-avax-chain-test","zksync","zksync-goerli","base-goerli","linea-goerli"]},"policy":{"title":"Policy","type":"object","properties":{"gas-price-cap":{"type":"integer"},"whitelist-receivers":{"title":"WhitelistReceivers","type":"array","items":{"type":"string"}},"eip1559-pricing":{"type":"boolean"},"private-transactions":{"type":"boolean"}}},"relayer":{"title":"Relayer","type":"object","properties":{"name":{"type":"string"},"network":{"$ref":"#/definitions/network","format":"uri-reference"},"min-balance":{"type":"integer"},"address-from-relayer":{"title":"AddressFromRelayer","type":"object"},"policy":{"$ref":"#/definitions/policy","format":"uri-reference"},"api-keys":{"title":"RelayerAPIKeys","type":"array","items":{"type":"string"}}},"required":["name","network","min-balance"]},"contract":{"title":"Contract","type":"object","properties":{"name":{"type":"string"},"address":{"$ref":"#/definitions/address","format":"uri-reference"},"network":{"$ref":"#/definitions/network","format":"uri-reference"},"abi":{"$ref":"#/definitions/abi"},"nat-spec":{"type":"string"}},"required":["name","address","network"]},"notificationType":{"title":"NotificationType","type":"string","enum":["slack","email","discord","telegram","datadog","webhook","opsgenie","pager-duty"]},"datadogConfig":{"title":"DatadogConfig","type":"object","properties":{"api-key":{"type":"string"},"metric-prefix":{"type":"string","maxLength":100,"pattern":"^[A-Za-z]+[A-Za-z0-9_\\.]*\\.$"}},"required":["api-key","metric-prefix"]},"urlConfig":{"title":"UrlConfig","type":"object","properties":{"url":{"type":"string","format":"uri"}},"required":["url"]},"telegramBotConfig":{"title":"TelegramConfig","type":"object","properties":{"bot-token":{"type":"string"},"chat-id":{"type":"string"}},"required":["bot-token","chat-id"]},"emailConfig":{"title":"EmailConfig","type":"object","properties":{"emails":{"title":"Emails","type":"array","items":{"type":"string","format":"email"},"default":[]}},"required":["emails"]},"opsgenieUserType":{"title":"opsgenieUserType","type":"string","enum":["team","user","escalation","schedule"]},"opsgeniePriorityLevel":{"title":"OpsgeniePriorityLevel","type":"string","enum":["P1","P2","P3","P4","P5"]},"opsgenieInstanceLocation":{"title":"OpsgenieInstanceLocation","type":"string","enum":["US","EU"]},"opsgenieUser":{"type":"object","properties":{"username":{"type":"string"},"fullName":{"type":"string"},"id":{"type":"string"},"type":{"$ref":"#/definitions/opsgenieUserType"}},"required":["type","username"],"additionalProperties":false},"opsgenieConfig":{"title":"OpsgenieConfig","properties":{"apiKey":{"type":"string"},"instanceLocation":{"$ref":"#/definitions/opsgenieInstanceLocation"},"alias":{"type":"string","maxLength":512},"responders":{"type":"array","items":{"$ref":"#/definitions/opsgenieUser"}},"visibleTo":{"type":"array","items":{"$ref":"#/definitions/opsgenieUser"}},"actions":{"type":"array","maxItems":10,"items":{"type":"string","maxLength":50}},"tags":{"type":"array","maxItems":10,"items":{"type":"string","maxLength":50}},"details":{"type":"object","additionalProperties":{"type":"string"}},"entity":{"type":"string","maxLength":512},"priority":{"$ref":"#/definitions/opsgeniePriorityLevel"},"note":{"type":"string","maxLength":25000}},"required":["apiKey","instanceLocation"],"additionalProperties":false},"pagerDutyEventType":{"title":"PagerDutyEventType","type":"string","enum":["change","alert"]},"pagerDutyEventAction":{"title":"PagerDutyEventAction","type":"string","enum":["trigger","acknowledge","resolve"]},"pagerDutySeverity":{"title":"PagerDutySeverity","type":"string","enum":["critical","error","warning","info"]},"pagerDutyConfig":{"title":"PagerDutyConfig","properties":{"token":{"type":"string"},"eventType":{"$ref":"#/definitions/pagerDutyEventType"},"routingKey":{"type":"string","maxLength":32,"minLength":32},"eventAction":{"$ref":"#/definitions/pagerDutyEventAction"},"dedupKey":{"type":"string","maxLength":255},"severity":{"$ref":"#/definitions/pagerDutySeverity"},"component":{"type":"string"},"group":{"type":"string"},"class":{"type":"string"},"customDetails":{"type":"object","additionalProperties":{"type":"string"}}},"if":{"properties":{"eventType":{"const":"alert"}}},"then":{"required":["eventAction","severity"]},"required":["token","eventType","routingKey"],"additionalProperties":false},"notification":{"title":"Notification","type":"object","properties":{"type":{"$ref":"#/definitions/notificationType","format":"uri-reference"},"name":{"type":"string"},"paused":{"type":"boolean"},"config":{"title":"Config","type":"object","oneOf":[{"$ref":"#/definitions/emailConfig","format":"uri-reference"},{"$ref":"#/definitions/telegramBotConfig","format":"uri-reference"},{"$ref":"#/definitions/datadogConfig","format":"uri-reference"},{"$ref":"#/definitions/urlConfig","format":"uri-reference"},{"$ref":"#/definitions/opsgenieConfig","format":"uri-reference"},{"$ref":"#/definitions/pagerDutyConfig","format":"uri-reference"}]}},"required":["type","name","paused","config"]},"category":{"title":"Category","type":"object","properties":{"name":{"type":"string"},"description":{"type":"string"},"notificationIds":{"type":"array","items":{"$ref":"#/definitions/notification","format":"uri-reference"}}},"required":["name"]},"blockSentinel":{"title":"BlockSentinel","type":"object","properties":{"name":{"type":"string"},"type":{"type":"string","enum":["BLOCK"]},"network":{"$ref":"#/definitions/network","format":"uri-reference"},"addresses":{"title":"Addresses","type":"array","items":{"$ref":"#/definitions/address","format":"uri-reference"}},"abi":{"$ref":"#/definitions/abi"},"alert-threshold":{"title":"AlertThreshold","type":"object","properties":{"amount":{"type":"integer"},"window-seconds":{"type":"integer"}}},"paused":{"type":"boolean"},"autotask-condition":{"$ref":"#/definitions/autotask","format":"uri-reference"},"autotask-trigger":{"$ref":"#/definitions/autotask","format":"uri-reference"},"confirm-level":{"oneOf":[{"type":"string","enum":["safe","finalized"]},{"type":"integer"}]},"notify-config":{"title":"NotifyConfig","type":"object","properties":{"timeout":{"type":"integer"},"message":{"type":"string"},"category":{"$ref":"#/definitions/category","format":"uri-reference"},"channels":{"title":"Channels","type":"array","items":{"$ref":"#/definitions/notification","format":"uri-reference"}}},"required":["channels"]},"conditions":{"title":"Conditions","type":"object","properties":{"event":{"title":"Event","type":"array","items":{"title":"EventItems","type":"object","properties":{"signature":{"type":"string"},"expression":{"type":"string"}},"required":["signature"]}},"function":{"title":"Function","type":"array","items":{"title":"FunctionItems","type":"object","properties":{"signature":{"type":"string"},"expression":{"type":"string"}},"required":["signature"]}},"transaction":{"type":"string"}}},"risk-category":{"$ref":"#/definitions/risk-category"}},"required":["name","type","network","addresses","notify-config"]},"fortaSentinel":{"title":"FortaSentinel","type":"object","properties":{"name":{"type":"string"},"type":{"type":"string","enum":["FORTA"]},"network":{"$ref":"#/definitions/network","format":"uri-reference"},"addresses":{"title":"Addresses","type":"array","items":{"$ref":"#/definitions/address","format":"uri-reference"}},"abi":{"$ref":"#/definitions/abi"},"alert-threshold":{"title":"AlertThreshold","type":"object","properties":{"amount":{"type":"integer"},"window-seconds":{"type":"integer"}}},"paused":{"type":"boolean"},"autotask-condition":{"$ref":"#/definitions/autotask","format":"uri-reference"},"autotask-trigger":{"$ref":"#/definitions/autotask","format":"uri-reference"},"notify-config":{"title":"NotifyConfig","type":"object","properties":{"timeout":{"type":"integer"},"message":{"type":"string"},"category":{"$ref":"#/definitions/category","format":"uri-reference"},"channels":{"title":"Channels","type":"array","items":{"$ref":"#/definitions/notification","format":"uri-reference"}}},"required":["channels"]},"conditions":{"title":"Conditions","type":"object","properties":{"min-scanner-count":{"type":"integer"},"severity":{"type":"integer","enum":[0,1,2,3,4,5]},"alert-ids":{"title":"AlertIDs","type":"array","items":{"type":"string"}}},"required":["min-scanner-count"]},"forta-node-id":{"type":"string"},"agent-ids":{"title":"AgentIDs","type":"array","items":{"type":"string"}},"risk-category":{"$ref":"#/definitions/risk-category"}},"anyOf":[{"required":["agent-ids"]},{"required":["addresses"]}],"required":["name","type","network","notify-config"]},"sentinel":{"title":"Sentinel","type":"object","oneOf":[{"$ref":"#/definitions/blockSentinel","format":"uri-reference"},{"$ref":"#/definitions/fortaSentinel","format":"uri-reference"}]},"autotask":{"title":"Autotask","type":"object","properties":{"name":{"type":"string"},"path":{"type":"string"},"relayer":{"$ref":"#/definitions/relayer","format":"uri-reference"},"trigger":{"title":"Trigger","type":"object","properties":{"type":{"title":"TriggerType","type":"string","enum":["schedule","webhook"]},"cron":{"title":"TriggerCron","type":"string"},"frequency":{"title":"TriggerFrequency","type":"integer"}},"if":{"properties":{"type":{"const":"schedule"}}},"then":{"oneOf":[{"required":["cron"]},{"required":["frequency"]}]},"else":{},"required":["type"]},"paused":{"type":"boolean"}},"required":["name","path","trigger","paused"]},"deploymentConfig":{"title":"DeploymentConfig","type":"object","properties":{"relayer":{"$ref":"#/definitions/relayer","format":"uri-reference"}},"required":["relayer"]},"blockExplorerApiKey":{"title":"BlockExplorerApiKey","type":"object","properties":{"key":{"type":"string"},"network":{"$ref":"#/definitions/network","format":"uri-reference"}},"required":["key","network"]},"abi":{"title":"AbiType","anyOf":[{"title":"StringABI","type":"string"},{"title":"ArrayABI","type":"array"}]}}} diff --git a/src/types/schemas/function.schema.json b/src/types/schemas/function.schema.json new file mode 100644 index 0000000..f2d88a3 --- /dev/null +++ b/src/types/schemas/function.schema.json @@ -0,0 +1 @@ +{"$schema":"http://json-schema.org/draft-07/schema#","title":"Function","type":"object","properties":{"path":{"type":"string"},"relayer":{"title":"Relayer","$ref":"#/definitions/relayer","format":"uri-reference"},"trigger":{"title":"Trigger","type":"object","properties":{"type":{"title":"TriggerType","type":"string","enum":["schedule","webhook"]},"cron":{"title":"TriggerCron","type":"string"},"frequency":{"title":"TriggerFrequency","type":"integer"}},"if":{"properties":{"type":{"const":"schedule"}}},"then":{"oneOf":[{"required":["cron"]},{"required":["frequency"]}]},"else":{},"required":["type"]},"paused":{"type":"boolean"}},"required":["name","path","trigger","paused"]} diff --git a/src/types/schemas/index.ts b/src/types/schemas/index.ts new file mode 100644 index 0000000..d2640d3 --- /dev/null +++ b/src/types/schemas/index.ts @@ -0,0 +1,11 @@ +import DefenderSchemaJson from './defender.schema.json'; +import DefinitionsSchemaJson from './definitions.schema.json'; +import FunctionSchemaJson from './function.schema.json'; +import ProviderSchemaJson from './provider.schema.json'; +import ResourcesSchemaJson from './resources.schema.json'; + +export const DefenderSchema = DefenderSchemaJson; +export const DefinitionsSchema = DefinitionsSchemaJson; +export const FunctionSchema = FunctionSchemaJson; +export const ProviderSchema = ProviderSchemaJson; +export const ResourcesSchema = ResourcesSchemaJson; diff --git a/src/types/schemas/provider.schema.json b/src/types/schemas/provider.schema.json new file mode 100644 index 0000000..975cbb9 --- /dev/null +++ b/src/types/schemas/provider.schema.json @@ -0,0 +1 @@ +{"$schema":"http://json-schema.org/draft-07/schema#","title":"Provider","type":"object","properties":{"stage":{"type":"string"},"stackName":{"type":"string"},"ssot":{"type":"boolean"}},"required":["stage","stackName"]} diff --git a/src/types/schemas/resources.schema.json b/src/types/schemas/resources.schema.json new file mode 100644 index 0000000..180de77 --- /dev/null +++ b/src/types/schemas/resources.schema.json @@ -0,0 +1 @@ +{"$schema":"http://json-schema.org/draft-07/schema#","title":"Resources","type":"object","additionalProperties":false,"properties":{"Resources":{"title":"Resources","type":"object","properties":{"notifications":{"title":"Notifications","type":"object","additionalProperties":{"$ref":"#/definitions/notification","format":"uri-reference"}},"relayers":{"title":"Relayers","type":"object","additionalProperties":{"$ref":"#/definitions/relayer","format":"uri-reference"}},"policies":{"title":"Policies","type":"object","additionalProperties":{"$ref":"#/definitions/policy","format":"uri-reference"}},"contracts":{"title":"Contracts","type":"object","additionalProperties":{"$ref":"#/definitions/contract","format":"uri-reference"}},"secrets":{"title":"AutotaskSecrets","type":"object","additionalProperties":false,"properties":{"global":{"title":"Global","type":"object","additionalProperties":{"type":"string"}},"stack":{"title":"Stack","type":"object","additionalProperties":{"type":"string"}}}},"sentinels":{"title":"Sentinels","type":"object","additionalProperties":{"$ref":"#/definitions/sentinel","format":"uri-reference"}},"deployment-configs":{"title":"Deployment Configs","type":"object","additionalProperties":{"$ref":"#/definitions/deploymentConfig","format":"uri-reference"}},"block-explorer-api-keys":{"title":"Block Explorer Api Keys","type":"object","additionalProperties":{"$ref":"#/definitions/blockExplorerApiKey","format":"uri-reference"}}}}}} diff --git a/src/utils/index.ts b/src/utils/index.ts new file mode 100644 index 0000000..d9d6b61 --- /dev/null +++ b/src/utils/index.ts @@ -0,0 +1,419 @@ +import Serverless from 'serverless'; + +import _ from 'lodash'; +import { AutotaskClient } from '@openzeppelin/defender-autotask-client'; +import { SentinelClient } from '@openzeppelin/defender-sentinel-client'; +import { RelayClient } from '@openzeppelin/defender-relay-client'; +import { AdminClient } from '@openzeppelin/defender-admin-client'; + +import { + YSecret, + YSentinel, + YNotification, + YTelegramConfig, + YSlackConfig, + YEmailConfig, + YDiscordConfig, + YDatadogConfig, + YOpsgenieConfig, + YPagerdutyConfig, + DefenderAutotask, + DefenderNotification, + DefenderBlockSentinel, + DefenderFortaSentinel, + TeamKey, + YContract, + DefenderContract, + ResourceType, + DefenderBlockWatcher, + YCategory, + DefenderCategory, + DefenderAPIError, + YAutotask, + DefenderNotificationReference, +} from '../types'; +import { sanitise } from './sanitise'; +import { BlockExplorerApiKeyClient, DeploymentConfigClient } from '@openzeppelin/platform-deploy-client'; + +/** + * @dev this function retrieves the Defender equivalent object of the provided template resource + * This will not work for resources that do not have the stackResourceId property, ie. secrets and contracts + */ +export const getEquivalentResource = ( + context: Serverless, + resource: Y, + resources: Y[] | undefined, + currentResources: D[], +) => { + if (resource) { + const [key, value] = Object.entries(resources ?? []).find(a => _.isEqual(a[1], resource))!; + return currentResources.find((e: D) => (e as any).stackResourceId === getResourceID(getStackName(context), key)); + } +}; + +export const validateTypesAndSanitise = (o: object): object => { + return sanitise(o) as object; +}; + +export const getEquivalentResourceByKey = (resourceKey: string, currentResources: D[]) => { + return currentResources.find((e: D) => (e as any).stackResourceId === resourceKey); +}; + +/** + * @dev returns both a list of consolidated secrets for both global and stack, where the latter will be preceded with the stack name. + * */ +export const getConsolidatedSecrets = (context: Serverless): YSecret[] => { + const globalSecrets: YSecret = context.service.resources?.Resources?.secrets?.global ?? {}; + const stackSecrets: YSecret = context.service.resources?.Resources?.secrets?.stack ?? {}; + const stackSecretsPrecededWithStackName = Object.entries(stackSecrets).map(([ssk, ssv]) => { + return { + [`${getStackName(context)}_${ssk}`]: ssv, + }; + }); + return _.map(_.entries(Object.assign(globalSecrets, ...stackSecretsPrecededWithStackName)), ([k, v]) => ({ + [k]: v as string, + })); +}; + +export const isTemplateResource = ( + context: Serverless, + resource: D, + resourceType: ResourceType, + resources: Y[], +): boolean => { + return !!Object.entries(resources).find(a => + resourceType === 'Secrets' + ? // if secret, just compare key + Object.keys(a[1] as unknown as YSecret)[0] === (resource as unknown as string) + : resourceType === 'Contracts' + ? // if contracts, compare network and address + (a[1] as unknown as YContract).network === (resource as unknown as DefenderContract).network && + (a[1] as unknown as YContract).address === (resource as unknown as DefenderContract).address + : // anything else, compare stackResourceId + getResourceID(getStackName(context), a[0]) === (resource as D & { stackResourceId: string }).stackResourceId, + ); +}; + +export const getResourceID = (stackName: string, resourceName: string): string => { + return `${stackName}.${resourceName}`; +}; + +export const getStackName = (context: Serverless): string => { + if ((context.service.provider as any).stackName && typeof (context.service.provider as any).stackName === 'string') { + return (context.service.provider as any).stackName; + } + if (context.service.provider.stage) return `${context.service.service}-${context.service.provider.stage}`; + throw new Error( + `Unable to get stack name. Missing "provider.stage" property. Alternatively, define "stackName" under "provider" in your serverless.yaml file.`, + ); +}; + +export const isSSOT = (context: Serverless): boolean => { + return !!(context.service.provider as any).ssot; +}; + +export const getTeamAPIkeysOrThrow = (context: Serverless): TeamKey => { + const defenderConfig: { key: string; secret: string } = context.service.initialServerlessConfig.defender; + if (!defenderConfig) + throw new Error( + `Missing "defender" top-level property in configuration. Please define "defender" with the "key" and "secret" properties in your serverless.yaml file.`, + ); + if (!defenderConfig.key || !defenderConfig.secret) + throw new Error( + `Missing "defender" key or secret properties in configuration. Please define a "key" and "secret" property under "defender" in your serverless.yaml file.`, + ); + return { apiKey: defenderConfig.key, apiSecret: defenderConfig.secret }; +}; + +export const getSentinelClient = (key: TeamKey): SentinelClient => { + return new SentinelClient(key); +}; + +export const getAutotaskClient = (key: TeamKey): AutotaskClient => { + return new AutotaskClient(key); +}; + +export const getRelayClient = (key: TeamKey): RelayClient => { + return new RelayClient(key); +}; + +export const getAdminClient = (key: TeamKey): AdminClient => { + return new AdminClient(key); +}; + +export const getDeploymentConfigClient = (key: TeamKey): DeploymentConfigClient => { + return new DeploymentConfigClient(key); +}; + +export const getBlockExplorerApiKeyClient = (key: TeamKey): BlockExplorerApiKeyClient => { + return new BlockExplorerApiKeyClient(key); +}; + +export const constructNotification = (notification: YNotification, stackResourceId: string) => { + const commonNotification = { + type: notification.type, + name: notification.name, + paused: notification.paused, + stackResourceId, + }; + + let currentConfig; + let config; + + switch (notification.type) { + case 'datadog': + currentConfig = notification.config as YDatadogConfig; + config = { + apiKey: currentConfig['api-key'], + metricPrefix: currentConfig['metric-prefix'], + }; + return { ...commonNotification, config }; + case 'discord': + currentConfig = notification.config as YDiscordConfig; + config = { + url: currentConfig.url, + }; + return { ...commonNotification, config }; + case 'email': + currentConfig = notification.config as YEmailConfig; + config = { + emails: currentConfig.emails, + }; + return { ...commonNotification, config }; + case 'slack': + currentConfig = notification.config as YSlackConfig; + config = { + url: currentConfig.url, + }; + return { ...commonNotification, config }; + case 'telegram': + currentConfig = notification.config as YTelegramConfig; + config = { + botToken: currentConfig['bot-token'], + chatId: currentConfig['chat-id'], + }; + return { ...commonNotification, config }; + case 'opsgenie': + currentConfig = notification.config as YOpsgenieConfig; + config = currentConfig; + return { ...commonNotification, config }; + case 'pager-duty': + currentConfig = notification.config as YPagerdutyConfig; + config = currentConfig; + return { ...commonNotification, config }; + default: + throw new Error(`Incompatible notification type ${notification.type}`); + } +}; + +export const constructNotificationCategory = ( + context: Serverless, + category: YCategory, + stackResourceId: string, + notifications: DefenderNotification[], +) => { + return { + name: category.name, + description: category.description, + notificationIds: (category['notification-ids'] + ? category['notification-ids'] + .map(notification => { + const maybeNotification = getEquivalentResource( + context, + notification, + context.service.resources?.Resources?.notifications, + notifications, + ); + if (maybeNotification) + return { + notificationId: maybeNotification.notificationId, + type: maybeNotification.type, + } as DefenderNotificationReference; + }) + .filter(isResource) + : []) as [] | [DefenderNotificationReference] | [DefenderNotificationReference, DefenderNotificationReference], + stackResourceId, + }; +}; +const isResource = (item: T | undefined): item is T => { + return !!item; +}; + +export const constructSentinel = ( + context: Serverless, + stackResourceId: string, + sentinel: YSentinel, + notifications: DefenderNotification[], + autotasks: DefenderAutotask[], + blockwatchers: DefenderBlockWatcher[], + categories: DefenderCategory[], +): DefenderBlockSentinel | DefenderFortaSentinel => { + const autotaskCondition = + sentinel['autotask-condition'] && autotasks.find(a => a.name === sentinel['autotask-condition']!.name); + const autotaskTrigger = + sentinel['autotask-trigger'] && autotasks.find(a => a.name === sentinel['autotask-trigger']!.name); + + const notificationChannels = sentinel['notify-config'].channels + .map(notification => { + const maybeNotification = getEquivalentResource( + context, + notification, + context.service.resources?.Resources?.notifications, + notifications, + ); + return maybeNotification?.notificationId; + }) + .filter(isResource); + + const sentinelCategory = sentinel['notify-config'].category; + const notificationCategoryId = sentinelCategory && categories.find(c => c.name === sentinelCategory.name)?.categoryId; + + const commonSentinel = { + type: sentinel.type, + name: sentinel.name, + network: sentinel.network, + addresses: sentinel.addresses, + abi: sentinel.abi && JSON.stringify(typeof sentinel.abi === 'string' ? JSON.parse(sentinel.abi) : sentinel.abi), + paused: sentinel.paused, + autotaskCondition: autotaskCondition && autotaskCondition.autotaskId, + autotaskTrigger: autotaskTrigger && autotaskTrigger.autotaskId, + alertThreshold: sentinel['alert-threshold'] && { + amount: sentinel['alert-threshold'].amount, + windowSeconds: sentinel['alert-threshold']['window-seconds'], + }, + alertMessageBody: sentinel['notify-config'].message, + alertMessageSubject: sentinel['notify-config']['message-subject'], + alertTimeoutMs: sentinel['notify-config'].timeout, + notificationChannels, + notificationCategoryId: _.isEmpty(notificationChannels) ? notificationCategoryId : undefined, + riskCategory: sentinel['risk-category'], + stackResourceId: stackResourceId, + }; + + if (sentinel.type === 'FORTA') { + const fortaSentinel: DefenderFortaSentinel = { + ...commonSentinel, + type: 'FORTA', + privateFortaNodeId: sentinel['forta-node-id'], + agentIDs: sentinel['agent-ids'], + fortaConditions: { + alertIDs: sentinel.conditions && sentinel.conditions['alert-ids'], + minimumScannerCount: (sentinel.conditions && sentinel.conditions['min-scanner-count']) || 1, // default to 1 + severity: sentinel.conditions?.severity, + }, + fortaLastProcessedTime: sentinel['forta-last-processed-time'], + }; + return fortaSentinel; + } + + if (sentinel.type === 'BLOCK') { + const compatibleBlockWatcher = blockwatchers.find(b => b.confirmLevel === sentinel['confirm-level']); + if (!compatibleBlockWatcher) { + throw new Error( + `A blockwatcher with confirmation level (${sentinel['confirm-level']}) does not exist on ${sentinel.network}. Choose another confirmation level.`, + ); + } + const blockSentinel: DefenderBlockSentinel = { + ...commonSentinel, + type: 'BLOCK', + network: sentinel.network, + addresses: sentinel.addresses, + confirmLevel: compatibleBlockWatcher!.confirmLevel, + eventConditions: + sentinel.conditions && + sentinel.conditions.event && + sentinel.conditions.event.map(c => { + return { + eventSignature: c.signature, + expression: c.expression, + }; + }), + functionConditions: + sentinel.conditions && + sentinel.conditions.function && + sentinel.conditions.function.map(c => { + return { + functionSignature: c.signature, + expression: c.expression, + }; + }), + txCondition: sentinel.conditions && sentinel.conditions.transaction, + }; + return blockSentinel; + } + + throw new Error('Incompatible sentinel type. Type must be either FORTA or BLOCK'); +}; + +export const validateAdditionalPermissionsOrThrow = async ( + context: Serverless, + resources: T[] | undefined, + resourceType: ResourceType, +) => { + if (!resources) return; + const teamApiKey = getTeamAPIkeysOrThrow(context); + switch (resourceType) { + case 'Sentinels': + // Check for access to Autotasks + // Enumerate all sentinels, and check if any sentinel has an autotask associated + const sentinelsWithAutotasks = (Object.values(resources) as unknown as YSentinel[]).filter( + r => !!r['autotask-condition'] || !!r['autotask-trigger'], + ); + // If there are sentinels with autotasks associated, then try to list autotasks + if (!_.isEmpty(sentinelsWithAutotasks)) { + try { + await getAutotaskClient(teamApiKey).list(); + return; + } catch (e) { + // catch the error and verify it is an unauthorised access error + if (isUnauthorisedError(e)) { + // if this fails (due to permissions issue), we re-throw the error with more context + throw new Error( + 'At least one Sentinel is associated with an Autotask. Additional API key permissions are required to access Autotasks. Alternatively, remove the association with the autotask to complete this action.', + ); + } + // also throw with original error if its not a permission issue + throw e; + } + } + case 'Autotasks': + // Check for access to Relayers + // Enumerate all autotasks, and check if any autotask has a relayer associated + const autotasksWithRelayers = (Object.values(resources) as unknown as YAutotask[]).filter(r => !!r.relayer); + // If there are autotasks with relayers associated, then try to list relayers + if (!_.isEmpty(autotasksWithRelayers)) { + try { + await getRelayClient(teamApiKey).list(); + return; + } catch (e) { + // catch the error and verify it is an unauthorised access error + if (isUnauthorisedError(e)) { + // if this fails (due to permissions issue), we re-throw the error with more context + throw new Error( + 'At least one Autotask is associated with a Relayer. Additional API key permissions are required to access Relayers. Alternatively, remove the association with the relayer to complete this action.', + ); + } + // also throw with original error if its not a permission issue + throw e; + } + } + // No other resources require additional permissions + default: + return; + } +}; + +export const isUnauthorisedError = (e: any): boolean => { + try { + const defenderErrorStatus = (e as DefenderAPIError).response.status as number; + return defenderErrorStatus === 403; + } catch { + // if it is not a DefenderApiError, + // the error is most likely caused due to something else + return false; + } +}; + +export const formatABI = (abi: YContract['abi']) => { + return abi && JSON.stringify(typeof abi === 'string' ? JSON.parse(abi) : abi); +}; diff --git a/src/utils/logger.ts b/src/utils/logger.ts new file mode 100644 index 0000000..ff73eef --- /dev/null +++ b/src/utils/logger.ts @@ -0,0 +1,62 @@ +import { Logging } from 'serverless/classes/Plugin'; +import { DefenderAPIError } from '../types'; + +export default class Logger { + private static instance: Logger; + private logger?: Logging; + + private constructor(logging?: Logging) { + if (logging) { + this.logger = logging; + } + } + + public static getInstance(logging?: Logging): Logger { + if (!Logger.instance) { + Logger.instance = new Logger(logging); + } + return Logger.instance; + } + + public progress(name: string, message: string) { + const progress = this.logger?.progress.get(name); + if (progress) progress.update(message); + else this.logger?.progress.create({ message, name }); + } + + public removeProgress(name: string) { + this.logger?.progress.get(name).remove(); + } + + public info(message: any, indentLevel = 0) { + const indents = ` `.repeat(2).repeat(indentLevel); + const args = indents ? [indents + message] : [message]; + this.logger?.log.info(...args); + } + public notice(message: any, indentLevel = 0) { + const indents = ` `.repeat(2).repeat(indentLevel); + const args = indents ? [indents + message] : [message]; + this.logger?.log.notice(...args); + } + public warn(message: any) { + this.logger?.log.warning(message); + } + public success(message: any) { + this.logger?.log.success(message); + } + public error(message: any) { + this.logger?.log.error(message); + } + public stdOut(message: string | string[]) { + this.logger?.writeText(message); + } + public tryLogDefenderError(e: any) { + try { + const defenderAPIError = (e as DefenderAPIError).response.data as any; + this.error(defenderAPIError.message ?? defenderAPIError.Message); + } catch { + if (e.message) this.error(e.message); + else this.error(e); + } + } +} diff --git a/src/utils/sanitise.ts b/src/utils/sanitise.ts new file mode 100644 index 0000000..5b3a0a3 --- /dev/null +++ b/src/utils/sanitise.ts @@ -0,0 +1,29 @@ +/** + * @notice copied from https://gist.github.com/simonrenoult/2fa79fec8f035b2d35cef0767363b227 + * */ + +import _ from 'lodash'; + +export const sanitise = (object: object): object | string | null => { + if (_.isString(object)) return _sanitiseString(object); + if (_.isArray(object)) return _sanitiseArray(object); + if (_.isPlainObject(object)) return _sanitiseObject(object); + return object; +}; + +const _sanitiseString = (string: string) => { + return _.isEmpty(string) ? null : string; +}; + +const _sanitiseArray = (array: Array) => { + return _.filter(_.map(array, sanitise), _isProvided); +}; + +const _sanitiseObject = (object: object) => { + return _.pickBy(_.mapValues(object, sanitise), _isProvided); +}; + +const _isProvided = (value: any) => { + const typeIsNotSupported = !_.isNil(value) && !_.isString(value) && !_.isArray(value) && !_.isPlainObject(value); + return typeIsNotSupported || !_.isEmpty(value); +}; diff --git a/template/.gitignore b/template/.gitignore new file mode 100644 index 0000000..2996ebc --- /dev/null +++ b/template/.gitignore @@ -0,0 +1,15 @@ +# package directories +node_modules +jspm_packages + +# Serverless directories +.serverless + +# Other +.env +*.log +.DS_Store + +# Defender +secrets*.yml +.defender \ No newline at end of file diff --git a/template/README.md b/template/README.md new file mode 100644 index 0000000..dfd2c5e --- /dev/null +++ b/template/README.md @@ -0,0 +1,161 @@ +# Defender Serverless Plugin + +Defender Serverless is a Serverless Framework plugin for automated resource management on Defender. + +:warning: **This plugin is still under development. Bugs are expected. Use with care.** + +## Prerequisites + +Serverless Framework: https://www.serverless.com/framework/docs/getting-started/ + +## Installation + +You can initialise your Serverless project directly using our pre-configured template: + +``` +sls install --url https://github.com/OpenZeppelin/defender-serverless/tree/main/template -n my-service +``` + +Note: for the command above to work correctly you need access to this repo. + +Alternatively, you can install it directly into an existing project with: + +`yarn add @openzeppelin/defender-serverless` + +## Setup + +This plugin allows you to define Autotasks, Sentinels, Notifications, Relayers, Contracts, Policies and Secrets declaratively from a `serverless.yml` and provision them via the CLI using `serverless deploy`. An example template below with an autotask, a relayer, a policy and a single relayer API key defined: + +```yaml +service: defender-serverless-template +configValidationMode: error +frameworkVersion: '3' + +provider: + name: defender + stage: ${opt:stage, 'dev'} + stackName: 'mystack' + ssot: false + +defender: + key: '${env:TEAM_API_KEY}' + secret: '${env:TEAM_API_SECRET}' + +functions: + autotask-example-1: + name: 'Hello world from serverless' + path: './autotasks/hello-world' + relayer: ${self:resources.Resources.relayers.relayer-1} + trigger: + type: 'schedule' + frequency: 1500 + paused: false + +resources: + Resources: + policies: + policy-1: + gas-price-cap: 1000 + whitelist-receivers: + - '0x0f06aB75c7DD497981b75CD82F6566e3a5CAd8f2' + eip1559-pricing: true + + relayers: + relayer-1: + name: 'Test Relayer 1' + network: 'goerli' + min-balance: 1000 + policy: ${self:resources.Resources.policies.policy-1} + api-keys: + - key1 + +plugins: + - defender-serverless +``` + +This requires setting the `key` and `secret` under the `defender` property of the YAML file. We recommend using environment variables or a secure (gitignored) configuration file to retrieve these values. Modify the `serverless.yml` accordingly. + +Ensure the Defender Team API Keys are setup with all appropriate API capabilities. + +The `stackName` (e.g. mystack) is combined with the resource key (e.g. relayer-1) to uniquely identify each resource. This identifier is called the `stackResourceId` (e.g. mystack.relayer-1) and allows you to manage multiple deployments within the same Defender team. + +### SSOT mode + +Under the `provider` property in the `serverless.yml` file, you can optionally add a `ssot` boolean. SSOT or Single Source of Truth, ensures that the state of your stack in Defender is perfectly in sync with the `serverless.yml` template. +This means that all Defender resources, that are not defined in your current template file, are removed from Defender, with the exception of Relayers, upon deployment. If SSOT is not defined in the template, it will default to `false`. + +Any resource removed from the `serverless.yml` file does _not_ get automatically deleted in order to prevent inadvertent resource deletion. For this behaviour to be anticipated, SSOT mode must be enabled. + +### Secrets (Autotask) + +Autotask secrets can be defined both globally and per stack. Secrets defined under `global` are not affected by changes to the `stackName` and will retain when redeployed under a new stack. Secrets defined under `stack` will be removed (on the condition that [SSOT mode](#SSOT-mode) is enabled) when the stack is redeployed under a new `stackName`. To reference secrets defined under `stack`, use the following format: `_`, for example `mystack_test`. + +```yaml +secrets: + # optional - global secrets are not affected by stackName changes + global: + foo: ${self:custom.config.secrets.foo} + hello: ${self:custom.config.secrets.hello} + # optional - stack secrets (formatted as _) + stack: + test: ${self:custom.config.secrets.test} +``` + +### Types and Schema validation + +We provide auto-generated documentation based on the JSON schemas: + +- [Defender Property](https://github.com/OpenZeppelin/defender-serverless/blob/main/src/types/docs/defender.md) +- [Provider Property](https://github.com/OpenZeppelin/defender-serverless/blob/main/src/types/docs/provider.md) +- [Function (Autotask) Property](https://github.com/OpenZeppelin/defender-serverless/blob/main/src/types/docs/function.md) +- [Resources Property](https://github.com/OpenZeppelin/defender-serverless/blob/main/src/types/docs/resources.md) + +More information on types can be found [here](https://github.com/OpenZeppelin/defender-serverless/blob/main/src/types/index.ts). Specifically, the types preceded with `Y` (e.g. YRelayer). For the schemas, you can check out the [docs-schema](https://github.com/OpenZeppelin/defender-serverless/blob/main/src/types/docs-schemas) folder. + +Additionally, an [example project](https://github.com/OpenZeppelin/defender-serverless/blob/main/examples/defender-test-project/serverless.yml) is available which provides majority of properties that can be defined in the `serverless.yml` file. + +## Commands + +### Deploy + +You can use `sls deploy` to deploy your current stack to Defender. + +The deploy takes in an optional `--stage` flag, which is defaulted to `dev` when installed from the template above. + +Moreover, the `serverless.yml` may contain an `ssot` property. More information can be found in the [SSOT mode](#SSOT-mode) section. + +This command will append a log entry in the `.defender` folder of the current working directory. Additionally, if any new relayer keys are created, these will be stored as JSON objects in the `.defender/relayer-keys` folder. + +> When installed from the template, we ensure the `.defender` folder is ignored from any git commits. However, when installing directly, make sure to add this folder it your `.gitignore` file. + +### Info + +You can use `sls info` to retrieve information on every resource defined in the `serverless.yml` file, including unique identifiers, and properties unique to each Defender component. + +### Remove + +You can use `sls remove` to remove all defender resources defined in the `serverless.yml` file. + +> To avoid potential loss of funds, Relayers can only be deleted from the Defender UI directly. + +### Logs + +You can use `sls logs --function --data {...}` to retrieve the latest autotask logs for a given autotask identifier (e.g. mystack.autotask-example-1). This command will run continiously and retrieve logs every 2 seconds. The `--data` flag is optional. + +### Invoke + +You can use `sls invoke --function ` to manually run an autotask, given its identifier (e.g. mystack.autotask-example-1). + +> Each command has a standard output to a JSON object. + +More information can be found on our documentation page [here](https://docs.openzeppelin.com/defender/serverless-plugin.html) + +## Caveats + +Errors thrown during the `deploy` process, will not revert any prior changes. Common errors are: + +- Not having set the API key and secret +- Insufficient permissions for the API key +- Validation error of the `serverless.yml` file (see [Types and Schema validation](#Types-and-Schema-validation)) + +Usually, fixing the error and retrying the deploy should suffice as any existing resources will fall within the `update` clause of the deployment. However, if unsure, you can always call `sls remove` to remove the entire stack, and retry. diff --git a/template/autotasks/hello-world/index.js b/template/autotasks/hello-world/index.js new file mode 100644 index 0000000..caac5fe --- /dev/null +++ b/template/autotasks/hello-world/index.js @@ -0,0 +1,5 @@ +exports.handler = async function (event) { + console.log(`Hello world from serverless`); + console.log(JSON.stringify(event)); + return `Hello world from serverless`; +}; diff --git a/template/package.json b/template/package.json new file mode 100644 index 0000000..e922014 --- /dev/null +++ b/template/package.json @@ -0,0 +1,27 @@ +{ + "name": "defender-serverless-template", + "version": "1.0.0", + "description": "Template for the defender-serverless plugin", + "main": "handler.js", + "engines": { + "node": ">14.16" + }, + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "contributors": [ + { + "name": "Santiago Palladino", + "email": "santiago@openzeppelin.com" + }, + { + "name": "Nami Shah", + "email": "nami@openzeppelin.com" + } + ], + "license": "MIT", + "devDependencies": { + "serverless": "^3.20.0", + "@openzeppelin/defender-serverless": "^1.2.0" + } +} diff --git a/template/serverless.yml b/template/serverless.yml new file mode 100644 index 0000000..beb8d9c --- /dev/null +++ b/template/serverless.yml @@ -0,0 +1,47 @@ +service: defender-serverless-template +configValidationMode: error +frameworkVersion: '3' + +provider: + name: defender + stage: ${opt:stage, 'dev'} + stackName: 'mystack' + # SSOT: use this template as a single source of truth. + # This will delete Defender resources (with the exception of Relayers) not found in this template upon deployment. + ssot: false + +defender: + key: '${env:TEAM_API_KEY}' + secret: '${env:TEAM_API_SECRET}' + +functions: + autotask-example-1: + name: 'Hello world from serverless' + path: './autotasks/hello-world' + relayer: ${self:resources.Resources.relayers.relayer-1} + trigger: + type: 'schedule' + frequency: 1500 + paused: false + +resources: + Resources: + policies: + policy-1: + gas-price-cap: 1000 + whitelist-receivers: + - '0x0f06aB75c7DD497981b75CD82F6566e3a5CAd8f2' + eip1559-pricing: true + private-transactions: true + + relayers: + relayer-1: + name: 'My Relayer' + network: 'goerli' + min-balance: 1000 + policy: ${self:resources.Resources.policies.policy-1} + api-keys: + - key1 + +plugins: + - '@openzeppelin/defender-serverless' diff --git a/template/yarn.lock b/template/yarn.lock new file mode 100644 index 0000000..5c8ba1c --- /dev/null +++ b/template/yarn.lock @@ -0,0 +1,3451 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +"2-thenable@^1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/2-thenable/-/2-thenable-1.0.0.tgz#56e9a2e363293b1e507f501aac1aa9927670b2fc" + integrity sha512-HqiDzaLDFCXkcCO/SwoyhRwqYtINFHF7t9BDRq4x90TOKNAJpiqUt9X5lQ08bwxYzc067HUywDjGySpebHcUpw== + dependencies: + d "1" + es5-ext "^0.10.47" + +"@colors/colors@1.5.0": + version "1.5.0" + resolved "https://registry.yarnpkg.com/@colors/colors/-/colors-1.5.0.tgz#bb504579c1cae923e6576a4f5da43d25f97bdbd9" + integrity sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ== + +"@ethersproject/abi@^5.6.3": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/abi/-/abi-5.7.0.tgz#b3f3e045bbbeed1af3947335c247ad625a44e449" + integrity sha512-351ktp42TiRcYB3H1OP8yajPeAQstMW/yCFokj/AthP9bLHzQFPlOrxOcwYEDkUAICmOHljvN4K39OMTMUa9RA== + dependencies: + "@ethersproject/address" "^5.7.0" + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/constants" "^5.7.0" + "@ethersproject/hash" "^5.7.0" + "@ethersproject/keccak256" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/strings" "^5.7.0" + +"@ethersproject/abstract-provider@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/abstract-provider/-/abstract-provider-5.7.0.tgz#b0a8550f88b6bf9d51f90e4795d48294630cb9ef" + integrity sha512-R41c9UkchKCpAqStMYUpdunjo3pkEvZC3FAwZn5S5MGbXoMQOHIdHItezTETxAO5bevtMApSyEhn9+CHcDsWBw== + dependencies: + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/networks" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/transactions" "^5.7.0" + "@ethersproject/web" "^5.7.0" + +"@ethersproject/abstract-signer@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/abstract-signer/-/abstract-signer-5.7.0.tgz#13f4f32117868452191a4649723cb086d2b596b2" + integrity sha512-a16V8bq1/Cz+TGCkE2OPMTOUDLS3grCpdjoJCYNnVBbdYEMSgKrU0+B90s8b6H+ByYTBZN7a3g76jdIJi7UfKQ== + dependencies: + "@ethersproject/abstract-provider" "^5.7.0" + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + +"@ethersproject/address@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/address/-/address-5.7.0.tgz#19b56c4d74a3b0a46bfdbb6cfcc0a153fc697f37" + integrity sha512-9wYhYt7aghVGo758POM5nqcOMaE168Q6aRLJZwUmiqSrAungkG74gSSeKEIR7ukixesdRZGPgVqme6vmxs1fkA== + dependencies: + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/keccak256" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/rlp" "^5.7.0" + +"@ethersproject/base64@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/base64/-/base64-5.7.0.tgz#ac4ee92aa36c1628173e221d0d01f53692059e1c" + integrity sha512-Dr8tcHt2mEbsZr/mwTPIQAf3Ai0Bks/7gTw9dSqk1mQvhW3XvRlmDJr/4n+wg1JmCl16NZue17CDh8xb/vZ0sQ== + dependencies: + "@ethersproject/bytes" "^5.7.0" + +"@ethersproject/bignumber@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/bignumber/-/bignumber-5.7.0.tgz#e2f03837f268ba655ffba03a57853e18a18dc9c2" + integrity sha512-n1CAdIHRWjSucQO3MC1zPSVgV/6dy/fjL9pMrPP9peL+QxEg9wOsVqwD4+818B6LUEtaXzVHQiuivzRoxPxUGw== + dependencies: + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + bn.js "^5.2.1" + +"@ethersproject/bytes@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/bytes/-/bytes-5.7.0.tgz#a00f6ea8d7e7534d6d87f47188af1148d71f155d" + integrity sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A== + dependencies: + "@ethersproject/logger" "^5.7.0" + +"@ethersproject/constants@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/constants/-/constants-5.7.0.tgz#df80a9705a7e08984161f09014ea012d1c75295e" + integrity sha512-DHI+y5dBNvkpYUMiRQyxRBYBefZkJfo70VUkUAsRjcPs47muV9evftfZ0PJVCXYbAiCgght0DtcF9srFQmIgWA== + dependencies: + "@ethersproject/bignumber" "^5.7.0" + +"@ethersproject/hash@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/hash/-/hash-5.7.0.tgz#eb7aca84a588508369562e16e514b539ba5240a7" + integrity sha512-qX5WrQfnah1EFnO5zJv1v46a8HW0+E5xuBBDTwMFZLuVTx0tbU2kkx15NqdjxecrLGatQN9FGQKpb1FKdHCt+g== + dependencies: + "@ethersproject/abstract-signer" "^5.7.0" + "@ethersproject/address" "^5.7.0" + "@ethersproject/base64" "^5.7.0" + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/keccak256" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/strings" "^5.7.0" + +"@ethersproject/keccak256@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/keccak256/-/keccak256-5.7.0.tgz#3186350c6e1cd6aba7940384ec7d6d9db01f335a" + integrity sha512-2UcPboeL/iW+pSg6vZ6ydF8tCnv3Iu/8tUmLLzWWGzxWKFFqOBQFLo6uLUv6BDrLgCDfN28RJ/wtByx+jZ4KBg== + dependencies: + "@ethersproject/bytes" "^5.7.0" + js-sha3 "0.8.0" + +"@ethersproject/logger@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/logger/-/logger-5.7.0.tgz#6ce9ae168e74fecf287be17062b590852c311892" + integrity sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig== + +"@ethersproject/networks@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/networks/-/networks-5.7.0.tgz#df72a392f1a63a57f87210515695a31a245845ad" + integrity sha512-MG6oHSQHd4ebvJrleEQQ4HhVu8Ichr0RDYEfHzsVAVjHNM+w36x9wp9r+hf1JstMXtseXDtkiVoARAG6M959AA== + dependencies: + "@ethersproject/logger" "^5.7.0" + +"@ethersproject/properties@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/properties/-/properties-5.7.0.tgz#a6e12cb0439b878aaf470f1902a176033067ed30" + integrity sha512-J87jy8suntrAkIZtecpxEPxY//szqr1mlBaYlQ0r4RCaiD2hjheqF9s1LVE8vVuJCXisjIP+JgtK/Do54ej4Sw== + dependencies: + "@ethersproject/logger" "^5.7.0" + +"@ethersproject/rlp@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/rlp/-/rlp-5.7.0.tgz#de39e4d5918b9d74d46de93af80b7685a9c21304" + integrity sha512-rBxzX2vK8mVF7b0Tol44t5Tb8gomOHkj5guL+HhzQ1yBh/ydjGnpw6at+X6Iw0Kp3OzzzkcKp8N9r0W4kYSs9w== + dependencies: + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + +"@ethersproject/signing-key@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/signing-key/-/signing-key-5.7.0.tgz#06b2df39411b00bc57c7c09b01d1e41cf1b16ab3" + integrity sha512-MZdy2nL3wO0u7gkB4nA/pEf8lu1TlFswPNmy8AiYkfKTdO6eXBJyUdmHO/ehm/htHw9K/qF8ujnTyUAD+Ry54Q== + dependencies: + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + bn.js "^5.2.1" + elliptic "6.5.4" + hash.js "1.1.7" + +"@ethersproject/strings@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/strings/-/strings-5.7.0.tgz#54c9d2a7c57ae8f1205c88a9d3a56471e14d5ed2" + integrity sha512-/9nu+lj0YswRNSH0NXYqrh8775XNyEdUQAuf3f+SmOrnVewcJ5SBNAjF7lpgehKi4abvNNXyf+HX86czCdJ8Mg== + dependencies: + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/constants" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + +"@ethersproject/transactions@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/transactions/-/transactions-5.7.0.tgz#91318fc24063e057885a6af13fdb703e1f993d3b" + integrity sha512-kmcNicCp1lp8qanMTC3RIikGgoJ80ztTyvtsFvCYpSCfkjhD0jZ2LOrnbcuxuToLIUYYf+4XwD1rP+B/erDIhQ== + dependencies: + "@ethersproject/address" "^5.7.0" + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/constants" "^5.7.0" + "@ethersproject/keccak256" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/rlp" "^5.7.0" + "@ethersproject/signing-key" "^5.7.0" + +"@ethersproject/web@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/web/-/web-5.7.0.tgz#40850c05260edad8b54827923bbad23d96aac0bc" + integrity sha512-ApHcbbj+muRASVDSCl/tgxaH2LBkRMEYfLOLVa0COipx0+nlu0QKet7U2lEg0vdkh8XRSLf2nd1f1Uk9SrVSGA== + dependencies: + "@ethersproject/base64" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/strings" "^5.7.0" + +"@kwsites/file-exists@^1.1.1": + version "1.1.1" + resolved "https://registry.yarnpkg.com/@kwsites/file-exists/-/file-exists-1.1.1.tgz#ad1efcac13e1987d8dbaf235ef3be5b0d96faa99" + integrity sha512-m9/5YGR18lIwxSFDwfE3oA7bWuq9kdau6ugN4H2rJeyhFQZcG9AgSHkQtSD15a8WvTgfz9aikZMrKPHvbpqFiw== + dependencies: + debug "^4.1.1" + +"@kwsites/promise-deferred@^1.1.1": + version "1.1.1" + resolved "https://registry.yarnpkg.com/@kwsites/promise-deferred/-/promise-deferred-1.1.1.tgz#8ace5259254426ccef57f3175bc64ed7095ed919" + integrity sha512-GaHYm+c0O9MjZRu0ongGBRbinu8gVAMd2UZjji6jVmqKtZluZnptXGWhz1E8j8D2HJ3f/yMxKAUC0b+57wncIw== + +"@nodelib/fs.scandir@2.1.5": + version "2.1.5" + resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" + integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== + dependencies: + "@nodelib/fs.stat" "2.0.5" + run-parallel "^1.1.9" + +"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": + version "2.0.5" + resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b" + integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== + +"@nodelib/fs.walk@^1.2.3": + version "1.2.8" + resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a" + integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== + dependencies: + "@nodelib/fs.scandir" "2.1.5" + fastq "^1.6.0" + +"@serverless/dashboard-plugin@^6.2.2": + version "6.2.2" + resolved "https://registry.yarnpkg.com/@serverless/dashboard-plugin/-/dashboard-plugin-6.2.2.tgz#1de497040d1b30d4abd7f4cdfdc40c84715200f4" + integrity sha512-h3zOprpuWZCdAP7qoOKT2nboB+AaxMkGoSzOD0jIBpt9s0cXqLE2VFjR2vKn8Cvam47Qa3XYnT2/XN6tR6rZgQ== + dependencies: + "@serverless/event-mocks" "^1.1.1" + "@serverless/platform-client" "^4.3.2" + "@serverless/utils" "^6.0.3" + child-process-ext "^2.1.1" + chokidar "^3.5.3" + flat "^5.0.2" + fs-extra "^9.1.0" + js-yaml "^4.1.0" + jszip "^3.9.1" + lodash "^4.17.21" + memoizee "^0.4.15" + ncjsm "^4.3.0" + node-dir "^0.1.17" + node-fetch "^2.6.7" + open "^7.4.2" + semver "^7.3.7" + simple-git "^3.7.0" + type "^2.6.0" + uuid "^8.3.2" + yamljs "^0.3.0" + +"@serverless/event-mocks@^1.1.1": + version "1.1.1" + resolved "https://registry.yarnpkg.com/@serverless/event-mocks/-/event-mocks-1.1.1.tgz#7064b99ccc29d9a8e9b799f413dbcfd64ea3b7ee" + integrity sha512-YAV5V/y+XIOfd+HEVeXfPWZb8C6QLruFk9tBivoX2roQLWVq145s4uxf8D0QioCueuRzkukHUS4JIj+KVoS34A== + dependencies: + "@types/lodash" "^4.14.123" + lodash "^4.17.11" + +"@serverless/platform-client@^4.3.2": + version "4.3.2" + resolved "https://registry.yarnpkg.com/@serverless/platform-client/-/platform-client-4.3.2.tgz#10cd3ad8cf452a33528cfb14bbb6003d30a74805" + integrity sha512-DAa5Z0JAZc6UfrTZLYwqoZxgAponZpFwaqd7WzzMA+loMCkYWyJNwxrAmV6cr2UUJpkko4toPZuJ3vM9Ie+NDA== + dependencies: + adm-zip "^0.5.5" + archiver "^5.3.0" + axios "^0.21.1" + fast-glob "^3.2.7" + https-proxy-agent "^5.0.0" + ignore "^5.1.8" + isomorphic-ws "^4.0.1" + js-yaml "^3.14.1" + jwt-decode "^2.2.0" + minimatch "^3.0.4" + querystring "^0.2.1" + run-parallel-limit "^1.1.0" + throat "^5.0.0" + traverse "^0.6.6" + ws "^7.5.3" + +"@serverless/utils@^6.0.3", "@serverless/utils@^6.7.0": + version "6.7.0" + resolved "https://registry.yarnpkg.com/@serverless/utils/-/utils-6.7.0.tgz#7d09585749ff279f348109400c0a10a7738b547a" + integrity sha512-aUjkkOTJ5wH7f3raSIDeTCR4JsAbd9p5Pjs7yW3sVOmu0qiTPHZOr1x1TIkb3WDHiAoQQY8zGhfzW7zLTcAA3Q== + dependencies: + archive-type "^4.0.0" + chalk "^4.1.2" + ci-info "^3.3.2" + cli-progress-footer "^2.3.2" + content-disposition "^0.5.4" + d "^1.0.1" + decompress "^4.2.1" + event-emitter "^0.3.5" + ext "^1.6.0" + ext-name "^5.0.0" + file-type "^16.5.3" + filenamify "^4.3.0" + get-stream "^6.0.1" + got "^11.8.5" + inquirer "^8.2.4" + js-yaml "^4.1.0" + jwt-decode "^3.1.2" + lodash "^4.17.21" + log "^6.3.1" + log-node "^8.0.3" + make-dir "^3.1.0" + memoizee "^0.4.15" + ncjsm "^4.3.0" + node-fetch "^2.6.7" + open "^7.4.2" + p-event "^4.2.0" + supports-color "^8.1.1" + timers-ext "^0.1.7" + type "^2.6.0" + uni-global "^1.0.0" + uuid "^8.3.2" + write-file-atomic "^4.0.1" + +"@sindresorhus/is@^4.0.0": + version "4.6.0" + resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-4.6.0.tgz#3c7c9c46e678feefe7a2e5bb609d3dbd665ffb3f" + integrity sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw== + +"@szmarczak/http-timer@^4.0.5": + version "4.0.6" + resolved "https://registry.yarnpkg.com/@szmarczak/http-timer/-/http-timer-4.0.6.tgz#b4a914bb62e7c272d4e5989fe4440f812ab1d807" + integrity sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w== + dependencies: + defer-to-connect "^2.0.0" + +"@tokenizer/token@^0.3.0": + version "0.3.0" + resolved "https://registry.yarnpkg.com/@tokenizer/token/-/token-0.3.0.tgz#fe98a93fe789247e998c75e74e9c7c63217aa276" + integrity sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A== + +"@types/cacheable-request@^6.0.1": + version "6.0.2" + resolved "https://registry.yarnpkg.com/@types/cacheable-request/-/cacheable-request-6.0.2.tgz#c324da0197de0a98a2312156536ae262429ff6b9" + integrity sha512-B3xVo+dlKM6nnKTcmm5ZtY/OL8bOAOd2Olee9M1zft65ox50OzjEHW91sDiU9j6cvW8Ejg1/Qkf4xd2kugApUA== + dependencies: + "@types/http-cache-semantics" "*" + "@types/keyv" "*" + "@types/node" "*" + "@types/responselike" "*" + +"@types/http-cache-semantics@*": + version "4.0.1" + resolved "https://registry.yarnpkg.com/@types/http-cache-semantics/-/http-cache-semantics-4.0.1.tgz#0ea7b61496902b95890dc4c3a116b60cb8dae812" + integrity sha512-SZs7ekbP8CN0txVG2xVRH6EgKmEm31BOxA07vkFaETzZz1xh+cbt8BcI0slpymvwhx5dlFnQG2rTlPVQn+iRPQ== + +"@types/keyv@*": + version "3.1.4" + resolved "https://registry.yarnpkg.com/@types/keyv/-/keyv-3.1.4.tgz#3ccdb1c6751b0c7e52300bcdacd5bcbf8faa75b6" + integrity sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg== + dependencies: + "@types/node" "*" + +"@types/lodash@^4.14.123": + version "4.14.184" + resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.184.tgz#23f96cd2a21a28e106dc24d825d4aa966de7a9fe" + integrity sha512-RoZphVtHbxPZizt4IcILciSWiC6dcn+eZ8oX9IWEYfDMcocdd42f7NPI6fQj+6zI8y4E0L7gu2pcZKLGTRaV9Q== + +"@types/node@*": + version "18.7.15" + resolved "https://registry.yarnpkg.com/@types/node/-/node-18.7.15.tgz#20ae1ec80c57ee844b469f968a1cd511d4088b29" + integrity sha512-XnjpaI8Bgc3eBag2Aw4t2Uj/49lLBSStHWfqKvIuXD7FIrZyMLWp8KuAFHAqxMZYTF9l08N1ctUn9YNybZJVmQ== + +"@types/responselike@*": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@types/responselike/-/responselike-3.0.0.tgz#5ecc1fc88552e5ac03de648a7796f9e125d002dc" + integrity sha512-zfgGLWx5IQOTJgQPD4UfGEhapTKUPC1ra/QCG02y3GUJWrhX05bBf/EfTh3aFj2DKi7cLo+cipXLNclD27tQXQ== + dependencies: + responselike "*" + +"@types/responselike@^1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@types/responselike/-/responselike-1.0.0.tgz#251f4fe7d154d2bad125abe1b429b23afd262e29" + integrity sha512-85Y2BjiufFzaMIlvJDvTTB8Fxl2xfLo4HgmHzVBz08w4wDePCTjYw66PdrolO0kzli3yam/YCgRufyo1DdQVTA== + dependencies: + "@types/node" "*" + +adm-zip@^0.5.5: + version "0.5.9" + resolved "https://registry.yarnpkg.com/adm-zip/-/adm-zip-0.5.9.tgz#b33691028333821c0cf95c31374c5462f2905a83" + integrity sha512-s+3fXLkeeLjZ2kLjCBwQufpI5fuN+kIGBxu6530nVQZGVol0d7Y/M88/xw9HGGUcJjKf8LutN3VPRUBq6N7Ajg== + +agent-base@6: + version "6.0.2" + resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-6.0.2.tgz#49fff58577cfee3f37176feab4c22e00f86d7f77" + integrity sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ== + dependencies: + debug "4" + +ajv-formats@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/ajv-formats/-/ajv-formats-2.1.1.tgz#6e669400659eb74973bbf2e33327180a0996b520" + integrity sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA== + dependencies: + ajv "^8.0.0" + +ajv@^8.0.0, ajv@^8.11.0: + version "8.11.0" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.11.0.tgz#977e91dd96ca669f54a11e23e378e33b884a565f" + integrity sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg== + dependencies: + fast-deep-equal "^3.1.1" + json-schema-traverse "^1.0.0" + require-from-string "^2.0.2" + uri-js "^4.2.2" + +amazon-cognito-identity-js@^4.3.3: + version "4.6.3" + resolved "https://registry.yarnpkg.com/amazon-cognito-identity-js/-/amazon-cognito-identity-js-4.6.3.tgz#889410379a5fc5e883edc95f4ce233cc628e354c" + integrity sha512-MPVJfirbdmSGo7l4h7Kbn3ms1eJXT5Xq8ly+mCPPi8yAxaxdg7ouMUUNTqtDykoZxIdDLF/P6F3Zbg3dlGKOWg== + dependencies: + buffer "4.9.2" + crypto-js "^4.0.0" + fast-base64-decode "^1.0.0" + isomorphic-unfetch "^3.0.0" + js-cookie "^2.2.1" + +ansi-escapes@^4.2.1: + version "4.3.2" + resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.2.tgz#6b2291d1db7d98b6521d5f1efa42d0f3a9feb65e" + integrity sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ== + dependencies: + type-fest "^0.21.3" + +ansi-regex@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" + integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== + +ansi-styles@^4.0.0, ansi-styles@^4.1.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" + integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== + dependencies: + color-convert "^2.0.1" + +anymatch@~3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.2.tgz#c0557c096af32f106198f4f4e2a383537e378716" + integrity sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg== + dependencies: + normalize-path "^3.0.0" + picomatch "^2.0.4" + +archive-type@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/archive-type/-/archive-type-4.0.0.tgz#f92e72233056dfc6969472749c267bdb046b1d70" + integrity sha512-zV4Ky0v1F8dBrdYElwTvQhweQ0P7Kwc1aluqJsYtOBP01jXcWCyW2IEfI1YiqsG+Iy7ZR+o5LF1N+PGECBxHWA== + dependencies: + file-type "^4.2.0" + +archiver-utils@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/archiver-utils/-/archiver-utils-2.1.0.tgz#e8a460e94b693c3e3da182a098ca6285ba9249e2" + integrity sha512-bEL/yUb/fNNiNTuUz979Z0Yg5L+LzLxGJz8x79lYmR54fmTIb6ob/hNQgkQnIUDWIFjZVQwl9Xs356I6BAMHfw== + dependencies: + glob "^7.1.4" + graceful-fs "^4.2.0" + lazystream "^1.0.0" + lodash.defaults "^4.2.0" + lodash.difference "^4.5.0" + lodash.flatten "^4.4.0" + lodash.isplainobject "^4.0.6" + lodash.union "^4.6.0" + normalize-path "^3.0.0" + readable-stream "^2.0.0" + +archiver@^5.3.0, archiver@^5.3.1: + version "5.3.1" + resolved "https://registry.yarnpkg.com/archiver/-/archiver-5.3.1.tgz#21e92811d6f09ecfce649fbefefe8c79e57cbbb6" + integrity sha512-8KyabkmbYrH+9ibcTScQ1xCJC/CGcugdVIwB+53f5sZziXgwUh3iXlAlANMxcZyDEfTHMe6+Z5FofV8nopXP7w== + dependencies: + archiver-utils "^2.1.0" + async "^3.2.3" + buffer-crc32 "^0.2.1" + readable-stream "^3.6.0" + readdir-glob "^1.0.0" + tar-stream "^2.2.0" + zip-stream "^4.1.0" + +argparse@^1.0.7: + version "1.0.10" + resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" + integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== + dependencies: + sprintf-js "~1.0.2" + +argparse@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" + integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== + +array-union@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" + integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== + +asap@^2.0.0: + version "2.0.6" + resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46" + integrity sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA== + +async-retry@^1.3.3: + version "1.3.3" + resolved "https://registry.yarnpkg.com/async-retry/-/async-retry-1.3.3.tgz#0e7f36c04d8478e7a58bdbed80cedf977785f280" + integrity sha512-wfr/jstw9xNi/0teMHrRW7dsz3Lt5ARhYNZ2ewpadnhaIp5mbALhOAP+EAdsC7t4Z6wqsDVv9+W6gm1Dk9mEyw== + dependencies: + retry "0.13.1" + +async@3.2.3: + version "3.2.3" + resolved "https://registry.yarnpkg.com/async/-/async-3.2.3.tgz#ac53dafd3f4720ee9e8a160628f18ea91df196c9" + integrity sha512-spZRyzKL5l5BZQrr/6m/SqFdBN0q3OCI0f9rjfBzCMBIP4p75P620rR3gTmaksNOhmzgdxcaxdNfMy6anrbM0g== + +async@^3.2.3: + version "3.2.4" + resolved "https://registry.yarnpkg.com/async/-/async-3.2.4.tgz#2d22e00f8cddeb5fde5dd33522b56d1cf569a81c" + integrity sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ== + +asynckit@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" + integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q== + +at-least-node@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/at-least-node/-/at-least-node-1.0.0.tgz#602cd4b46e844ad4effc92a8011a3c46e0238dc2" + integrity sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg== + +available-typed-arrays@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz#92f95616501069d07d10edb2fc37d3e1c65123b7" + integrity sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw== + +aws-sdk@^2.1195.0: + version "2.1209.0" + resolved "https://registry.yarnpkg.com/aws-sdk/-/aws-sdk-2.1209.0.tgz#fd7b9efd4047ab6b45bba2c890529d4c296a4b85" + integrity sha512-m4Dd0HtyKeKBjwzP9rhe+NcmsRKR0wW+QXfpepu6vgXYhmcJuOB9TLUoeB7jiNDPimmwU+KxtL6eonRfeFhANw== + dependencies: + buffer "4.9.2" + events "1.1.1" + ieee754 "1.1.13" + jmespath "0.16.0" + querystring "0.2.0" + sax "1.2.1" + url "0.10.3" + util "^0.12.4" + uuid "8.0.0" + xml2js "0.4.19" + +axios@^0.21.1, axios@^0.21.2: + version "0.21.4" + resolved "https://registry.yarnpkg.com/axios/-/axios-0.21.4.tgz#c67b90dc0568e5c1cf2b0b858c43ba28e2eda575" + integrity sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg== + dependencies: + follow-redirects "^1.14.0" + +balanced-match@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" + integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== + +base64-js@^1.0.2, base64-js@^1.3.1: + version "1.5.1" + resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" + integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== + +binary-extensions@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" + integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== + +bl@^1.0.0: + version "1.2.3" + resolved "https://registry.yarnpkg.com/bl/-/bl-1.2.3.tgz#1e8dd80142eac80d7158c9dccc047fb620e035e7" + integrity sha512-pvcNpa0UU69UT341rO6AYy4FVAIkUHuZXRIWbq+zHnsVcRzDDjIAhGuuYoi0d//cwIwtt4pkpKycWEfjdV+vww== + dependencies: + readable-stream "^2.3.5" + safe-buffer "^5.1.1" + +bl@^4.0.3, bl@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/bl/-/bl-4.1.0.tgz#451535264182bec2fbbc83a62ab98cf11d9f7b3a" + integrity sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w== + dependencies: + buffer "^5.5.0" + inherits "^2.0.4" + readable-stream "^3.4.0" + +bluebird@^3.7.2: + version "3.7.2" + resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f" + integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg== + +bn.js@^4.11.9: + version "4.12.0" + resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.12.0.tgz#775b3f278efbb9718eec7361f483fb36fbbfea88" + integrity sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA== + +bn.js@^5.2.1: + version "5.2.1" + resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.2.1.tgz#0bc527a6a0d18d0aa8d5b0538ce4a77dccfa7b70" + integrity sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ== + +brace-expansion@^1.1.7: + version "1.1.11" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" + integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== + dependencies: + balanced-match "^1.0.0" + concat-map "0.0.1" + +brace-expansion@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-2.0.1.tgz#1edc459e0f0c548486ecf9fc99f2221364b9a0ae" + integrity sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA== + dependencies: + balanced-match "^1.0.0" + +braces@^3.0.2, braces@~3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" + integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== + dependencies: + fill-range "^7.0.1" + +brorand@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" + integrity sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w== + +buffer-alloc-unsafe@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz#bd7dc26ae2972d0eda253be061dba992349c19f0" + integrity sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg== + +buffer-alloc@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/buffer-alloc/-/buffer-alloc-1.2.0.tgz#890dd90d923a873e08e10e5fd51a57e5b7cce0ec" + integrity sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow== + dependencies: + buffer-alloc-unsafe "^1.1.0" + buffer-fill "^1.0.0" + +buffer-crc32@^0.2.1, buffer-crc32@^0.2.13, buffer-crc32@~0.2.3: + version "0.2.13" + resolved "https://registry.yarnpkg.com/buffer-crc32/-/buffer-crc32-0.2.13.tgz#0d333e3f00eac50aa1454abd30ef8c2a5d9a7242" + integrity sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ== + +buffer-fill@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/buffer-fill/-/buffer-fill-1.0.0.tgz#f8f78b76789888ef39f205cd637f68e702122b2c" + integrity sha512-T7zexNBwiiaCOGDg9xNX9PBmjrubblRkENuptryuI64URkXDFum9il/JGL8Lm8wYfAXpredVXXZz7eMHilimiQ== + +buffer@4.9.2: + version "4.9.2" + resolved "https://registry.yarnpkg.com/buffer/-/buffer-4.9.2.tgz#230ead344002988644841ab0244af8c44bbe3ef8" + integrity sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg== + dependencies: + base64-js "^1.0.2" + ieee754 "^1.1.4" + isarray "^1.0.0" + +buffer@^5.2.1, buffer@^5.5.0: + version "5.7.1" + resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.7.1.tgz#ba62e7c13133053582197160851a8f648e99eed0" + integrity sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ== + dependencies: + base64-js "^1.3.1" + ieee754 "^1.1.13" + +builtin-modules@^3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-3.3.0.tgz#cae62812b89801e9656336e46223e030386be7b6" + integrity sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw== + +builtins@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/builtins/-/builtins-1.0.3.tgz#cb94faeb61c8696451db36534e1422f94f0aee88" + integrity sha512-uYBjakWipfaO/bXI7E8rq6kpwHRZK5cNYrUv2OzZSI/FvmdMyXJ2tG9dKcjEC5YHmHpUAwsargWIZNWdxb/bnQ== + +cacheable-lookup@^5.0.3: + version "5.0.4" + resolved "https://registry.yarnpkg.com/cacheable-lookup/-/cacheable-lookup-5.0.4.tgz#5a6b865b2c44357be3d5ebc2a467b032719a7005" + integrity sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA== + +cacheable-request@^7.0.2: + version "7.0.2" + resolved "https://registry.yarnpkg.com/cacheable-request/-/cacheable-request-7.0.2.tgz#ea0d0b889364a25854757301ca12b2da77f91d27" + integrity sha512-pouW8/FmiPQbuGpkXQ9BAPv/Mo5xDGANgSNXzTzJ8DrKGuXOssM4wIQRjfanNRh3Yu5cfYPvcorqbhg2KIJtew== + dependencies: + clone-response "^1.0.2" + get-stream "^5.1.0" + http-cache-semantics "^4.0.0" + keyv "^4.0.0" + lowercase-keys "^2.0.0" + normalize-url "^6.0.1" + responselike "^2.0.0" + +cachedir@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/cachedir/-/cachedir-2.3.0.tgz#0c75892a052198f0b21c7c1804d8331edfcae0e8" + integrity sha512-A+Fezp4zxnit6FanDmv9EqXNAi3vt9DWp51/71UEhXukb7QUuvtv9344h91dyAxuTLoSYJFU299qzR3tzwPAhw== + +call-bind@^1.0.0, call-bind@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c" + integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA== + dependencies: + function-bind "^1.1.1" + get-intrinsic "^1.0.2" + +chalk@^4.1.0, chalk@^4.1.1, chalk@^4.1.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" + integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + +chalk@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-5.0.1.tgz#ca57d71e82bb534a296df63bbacc4a1c22b2a4b6" + integrity sha512-Fo07WOYGqMfCWHOzSXOt2CxDbC6skS/jO9ynEcmpANMoPrD+W1r1K6Vx7iNm+AQmETU1Xr2t+n8nzkV9t6xh3w== + +chardet@^0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e" + integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA== + +child-process-ext@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/child-process-ext/-/child-process-ext-2.1.1.tgz#f7cf4e68fef60c4c8ee911e1b402413191467dc3" + integrity sha512-0UQ55f51JBkOFa+fvR76ywRzxiPwQS3Xe8oe5bZRphpv+dIMeerW5Zn5e4cUy4COJwVtJyU0R79RMnw+aCqmGA== + dependencies: + cross-spawn "^6.0.5" + es5-ext "^0.10.53" + log "^6.0.0" + split2 "^3.1.1" + stream-promise "^3.2.0" + +chokidar@^3.5.3: + version "3.5.3" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd" + integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw== + dependencies: + anymatch "~3.1.2" + braces "~3.0.2" + glob-parent "~5.1.2" + is-binary-path "~2.1.0" + is-glob "~4.0.1" + normalize-path "~3.0.0" + readdirp "~3.6.0" + optionalDependencies: + fsevents "~2.3.2" + +chownr@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/chownr/-/chownr-2.0.0.tgz#15bfbe53d2eab4cf70f18a8cd68ebe5b3cb1dece" + integrity sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ== + +ci-info@^3.3.2: + version "3.3.2" + resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.3.2.tgz#6d2967ffa407466481c6c90b6e16b3098f080128" + integrity sha512-xmDt/QIAdeZ9+nfdPsaBCpMvHNLFiLdjj59qjqn+6iPe6YmHGQ35sBnQ8uslRBXFmXkiZQOJRjvQeoGppoTjjg== + +cli-color@^2.0.1, cli-color@^2.0.2: + version "2.0.3" + resolved "https://registry.yarnpkg.com/cli-color/-/cli-color-2.0.3.tgz#73769ba969080629670f3f2ef69a4bf4e7cc1879" + integrity sha512-OkoZnxyC4ERN3zLzZaY9Emb7f/MhBOIpePv0Ycok0fJYT+Ouo00UBEIwsVsr0yoow++n5YWlSUgST9GKhNHiRQ== + dependencies: + d "^1.0.1" + es5-ext "^0.10.61" + es6-iterator "^2.0.3" + memoizee "^0.4.15" + timers-ext "^0.1.7" + +cli-cursor@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-3.1.0.tgz#264305a7ae490d1d03bf0c9ba7c925d1753af307" + integrity sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw== + dependencies: + restore-cursor "^3.1.0" + +cli-progress-footer@^2.3.2: + version "2.3.2" + resolved "https://registry.yarnpkg.com/cli-progress-footer/-/cli-progress-footer-2.3.2.tgz#1c13ba3c3dd894ef366f4a4f0620b3067284154d" + integrity sha512-uzHGgkKdeA9Kr57eyH1W5HGiNShP8fV1ETq04HDNM1Un6ShXbHhwi/H8LNV9L1fQXKjEw0q5FUkEVNuZ+yZdSw== + dependencies: + cli-color "^2.0.2" + d "^1.0.1" + es5-ext "^0.10.61" + mute-stream "0.0.8" + process-utils "^4.0.0" + timers-ext "^0.1.7" + type "^2.6.0" + +cli-spinners@^2.5.0: + version "2.7.0" + resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-2.7.0.tgz#f815fd30b5f9eaac02db604c7a231ed7cb2f797a" + integrity sha512-qu3pN8Y3qHNgE2AFweciB1IfMnmZ/fsNTEE+NOFjmGB2F/7rLhnhzppvpCnN4FovtP26k8lHyy9ptEbNwWFLzw== + +cli-sprintf-format@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/cli-sprintf-format/-/cli-sprintf-format-1.1.1.tgz#ec69955c89ef1c61243b52e68015b75c08fb9188" + integrity sha512-BbEjY9BEdA6wagVwTqPvmAwGB24U93rQPBFZUT8lNCDxXzre5LFHQUTJc70czjgUomVg8u8R5kW8oY9DYRFNeg== + dependencies: + cli-color "^2.0.1" + es5-ext "^0.10.53" + sprintf-kit "^2.0.1" + supports-color "^6.1.0" + +cli-width@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-3.0.0.tgz#a2f48437a2caa9a22436e794bf071ec9e61cedf6" + integrity sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw== + +clone-response@^1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/clone-response/-/clone-response-1.0.3.tgz#af2032aa47816399cf5f0a1d0db902f517abb8c3" + integrity sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA== + dependencies: + mimic-response "^1.0.0" + +clone@^1.0.2: + version "1.0.4" + resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e" + integrity sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg== + +color-convert@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" + integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== + dependencies: + color-name "~1.1.4" + +color-name@~1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" + integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== + +colors@1.0.x: + version "1.0.3" + resolved "https://registry.yarnpkg.com/colors/-/colors-1.0.3.tgz#0433f44d809680fdeb60ed260f1b0c262e82a40b" + integrity sha512-pFGrxThWcWQ2MsAz6RtgeWe4NK2kUE1WfsrvvlctdII745EW9I0yflqhe7++M5LEc7bV2c/9/5zc8sFcpL0Drw== + +combined-stream@^1.0.8: + version "1.0.8" + resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" + integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== + dependencies: + delayed-stream "~1.0.0" + +commander@^2.8.1: + version "2.20.3" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" + integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== + +commander@~4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/commander/-/commander-4.1.1.tgz#9fd602bd936294e9e9ef46a3f4d6964044b18068" + integrity sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA== + +component-emitter@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.3.0.tgz#16e4070fba8ae29b679f2215853ee181ab2eabc0" + integrity sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg== + +compress-commons@^4.1.0: + version "4.1.1" + resolved "https://registry.yarnpkg.com/compress-commons/-/compress-commons-4.1.1.tgz#df2a09a7ed17447642bad10a85cc9a19e5c42a7d" + integrity sha512-QLdDLCKNV2dtoTorqgxngQCMA+gWXkM/Nwu7FpeBhk/RdkzimqC3jueb/FDmaZeXh+uby1jkBqE3xArsLBE5wQ== + dependencies: + buffer-crc32 "^0.2.13" + crc32-stream "^4.0.2" + normalize-path "^3.0.0" + readable-stream "^3.6.0" + +concat-map@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" + integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== + +content-disposition@^0.5.4: + version "0.5.4" + resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.4.tgz#8b82b4efac82512a02bb0b1dcec9d2c5e8eb5bfe" + integrity sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ== + dependencies: + safe-buffer "5.2.1" + +cookiejar@^2.1.3: + version "2.1.3" + resolved "https://registry.yarnpkg.com/cookiejar/-/cookiejar-2.1.3.tgz#fc7a6216e408e74414b90230050842dacda75acc" + integrity sha512-JxbCBUdrfr6AQjOXrxoTvAMJO4HBTUIlBzslcJPAz+/KT8yk53fXun51u+RenNYvad/+Vc2DIz5o9UxlCDymFQ== + +core-util-is@~1.0.0: + version "1.0.3" + resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.3.tgz#a6042d3634c2b27e9328f837b965fac83808db85" + integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ== + +crc-32@^1.2.0: + version "1.2.2" + resolved "https://registry.yarnpkg.com/crc-32/-/crc-32-1.2.2.tgz#3cad35a934b8bf71f25ca524b6da51fb7eace2ff" + integrity sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ== + +crc32-stream@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/crc32-stream/-/crc32-stream-4.0.2.tgz#c922ad22b38395abe9d3870f02fa8134ed709007" + integrity sha512-DxFZ/Hk473b/muq1VJ///PMNLj0ZMnzye9thBpmjpJKCc5eMgB95aK8zCGrGfQ90cWo561Te6HK9D+j4KPdM6w== + dependencies: + crc-32 "^1.2.0" + readable-stream "^3.4.0" + +cross-spawn@^6.0.5: + version "6.0.5" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" + integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ== + dependencies: + nice-try "^1.0.4" + path-key "^2.0.1" + semver "^5.5.0" + shebang-command "^1.2.0" + which "^1.2.9" + +crypto-js@^4.0.0: + version "4.1.1" + resolved "https://registry.yarnpkg.com/crypto-js/-/crypto-js-4.1.1.tgz#9e485bcf03521041bd85844786b83fb7619736cf" + integrity sha512-o2JlM7ydqd3Qk9CA0L4NL6mTzU2sdx96a+oOfPu8Mkl/PK51vSyoi8/rQ8NknZtk44vq15lmhAj9CIAGwgeWKw== + +cycle@1.0.x: + version "1.0.3" + resolved "https://registry.yarnpkg.com/cycle/-/cycle-1.0.3.tgz#21e80b2be8580f98b468f379430662b046c34ad2" + integrity sha512-TVF6svNzeQCOpjCqsy0/CSy8VgObG3wXusJ73xW2GbG5rGx7lC8zxDSURicsXI2UsGdi2L0QNRCi745/wUDvsA== + +d@1, d@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/d/-/d-1.0.1.tgz#8698095372d58dbee346ffd0c7093f99f8f9eb5a" + integrity sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA== + dependencies: + es5-ext "^0.10.50" + type "^1.0.1" + +dayjs@^1.11.5: + version "1.11.5" + resolved "https://registry.yarnpkg.com/dayjs/-/dayjs-1.11.5.tgz#00e8cc627f231f9499c19b38af49f56dc0ac5e93" + integrity sha512-CAdX5Q3YW3Gclyo5Vpqkgpj8fSdLQcRuzfX6mC6Phy0nfJ0eGYOeS7m4mt2plDWLAtA4TqTakvbboHvUxfe4iA== + +debug@4, debug@^4.1.1, debug@^4.3.4: + version "4.3.4" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" + integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== + dependencies: + ms "2.1.2" + +decompress-response@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-6.0.0.tgz#ca387612ddb7e104bd16d85aab00d5ecf09c66fc" + integrity sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ== + dependencies: + mimic-response "^3.1.0" + +decompress-tar@^4.0.0, decompress-tar@^4.1.0, decompress-tar@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/decompress-tar/-/decompress-tar-4.1.1.tgz#718cbd3fcb16209716e70a26b84e7ba4592e5af1" + integrity sha512-JdJMaCrGpB5fESVyxwpCx4Jdj2AagLmv3y58Qy4GE6HMVjWz1FeVQk1Ct4Kye7PftcdOo/7U7UKzYBJgqnGeUQ== + dependencies: + file-type "^5.2.0" + is-stream "^1.1.0" + tar-stream "^1.5.2" + +decompress-tarbz2@^4.0.0: + version "4.1.1" + resolved "https://registry.yarnpkg.com/decompress-tarbz2/-/decompress-tarbz2-4.1.1.tgz#3082a5b880ea4043816349f378b56c516be1a39b" + integrity sha512-s88xLzf1r81ICXLAVQVzaN6ZmX4A6U4z2nMbOwobxkLoIIfjVMBg7TeguTUXkKeXni795B6y5rnvDw7rxhAq9A== + dependencies: + decompress-tar "^4.1.0" + file-type "^6.1.0" + is-stream "^1.1.0" + seek-bzip "^1.0.5" + unbzip2-stream "^1.0.9" + +decompress-targz@^4.0.0: + version "4.1.1" + resolved "https://registry.yarnpkg.com/decompress-targz/-/decompress-targz-4.1.1.tgz#c09bc35c4d11f3de09f2d2da53e9de23e7ce1eee" + integrity sha512-4z81Znfr6chWnRDNfFNqLwPvm4db3WuZkqV+UgXQzSngG3CEKdBkw5jrv3axjjL96glyiiKjsxJG3X6WBZwX3w== + dependencies: + decompress-tar "^4.1.1" + file-type "^5.2.0" + is-stream "^1.1.0" + +decompress-unzip@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/decompress-unzip/-/decompress-unzip-4.0.1.tgz#deaaccdfd14aeaf85578f733ae8210f9b4848f69" + integrity sha512-1fqeluvxgnn86MOh66u8FjbtJpAFv5wgCT9Iw8rcBqQcCo5tO8eiJw7NNTrvt9n4CRBVq7CstiS922oPgyGLrw== + dependencies: + file-type "^3.8.0" + get-stream "^2.2.0" + pify "^2.3.0" + yauzl "^2.4.2" + +decompress@^4.2.1: + version "4.2.1" + resolved "https://registry.yarnpkg.com/decompress/-/decompress-4.2.1.tgz#007f55cc6a62c055afa37c07eb6a4ee1b773f118" + integrity sha512-e48kc2IjU+2Zw8cTb6VZcJQ3lgVbS4uuB1TfCHbiZIP/haNXm+SVyhu+87jts5/3ROpd82GSVCoNs/z8l4ZOaQ== + dependencies: + decompress-tar "^4.0.0" + decompress-tarbz2 "^4.0.0" + decompress-targz "^4.0.0" + decompress-unzip "^4.0.1" + graceful-fs "^4.1.10" + make-dir "^1.0.0" + pify "^2.3.0" + strip-dirs "^2.0.0" + +defaults@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/defaults/-/defaults-1.0.3.tgz#c656051e9817d9ff08ed881477f3fe4019f3ef7d" + integrity sha512-s82itHOnYrN0Ib8r+z7laQz3sdE+4FP3d9Q7VLO7U+KRT+CR0GsWuyHxzdAY82I7cXv0G/twrqomTJLOssO5HA== + dependencies: + clone "^1.0.2" + +defender-admin-client@^1.31.0-rc.2: + version "1.31.0-rc.2" + resolved "https://registry.yarnpkg.com/defender-admin-client/-/defender-admin-client-1.31.0-rc.2.tgz#71315fd9c4925e0839c21db8fc7eccc7779193e6" + integrity sha512-CPk8LQLuu9GH4WnqOwZvU76V1et1ZN9hO1xQj7NE5op5OE+TC/0KDkqqTgAie0idKNsksqp6iY44oJNFNu576A== + dependencies: + axios "^0.21.2" + defender-base-client "1.30.0" + lodash "^4.17.19" + node-fetch "^2.6.0" + +defender-autotask-client@^1.31.0-rc.2: + version "1.31.0-rc.2" + resolved "https://registry.yarnpkg.com/defender-autotask-client/-/defender-autotask-client-1.31.0-rc.2.tgz#023b244152d931a7a2d9ab787bbdaa2c45c9a608" + integrity sha512-4Ogpq+IeqTRPJRW36oqWZ/0gJynpS7U7WxuBV1nNz4Db6COqws6aqQhZpqb17ItjSPztlE4qvgEX3ruK5mTSPw== + dependencies: + axios "^0.21.2" + defender-base-client "1.30.0" + dotenv "^10.0.0" + glob "^7.1.6" + jszip "^3.5.0" + lodash "^4.17.19" + node-fetch "^2.6.0" + +defender-base-client@1.30.0: + version "1.30.0" + resolved "https://registry.yarnpkg.com/defender-base-client/-/defender-base-client-1.30.0.tgz#dabe6efef2355f02e6fd9ef1acdd27c3d79b1377" + integrity sha512-Q1jo3kNhG9Z/jkkPhZds69pyWd3BEEej3ZdbBne3+nVxsRgLyEdtIBKfYFeliFz0vYnXqfgilRdCQ1MjSB3H4g== + dependencies: + amazon-cognito-identity-js "^4.3.3" + async-retry "^1.3.3" + axios "^0.21.2" + lodash "^4.17.19" + node-fetch "^2.6.0" + +defender-relay-client@^1.31.0-rc.2: + version "1.31.0-rc.2" + resolved "https://registry.yarnpkg.com/defender-relay-client/-/defender-relay-client-1.31.0-rc.2.tgz#bf980bc35717c94eef69509986709b5f3674d7c8" + integrity sha512-DBUxhS3dIGfNsO0g/ztu8QM67PncZxMlQuB0xBpOuCe+cXyVGUlFe002hb6KAvp4sVlvyaZ6lxH9C7VMc+tF/w== + dependencies: + amazon-cognito-identity-js "^4.3.3" + axios "^0.21.2" + defender-base-client "1.30.0" + lodash "^4.17.19" + node-fetch "^2.6.0" + +defender-sentinel-client@^1.31.0-rc.2: + version "1.31.0-rc.2" + resolved "https://registry.yarnpkg.com/defender-sentinel-client/-/defender-sentinel-client-1.31.0-rc.2.tgz#a8e4f83524db8f027ad3dbcd5f2fbc96dd693a1c" + integrity sha512-i0Qviy1YZqlQMzJin5s5uD7T5zbGGHGggN0hzQqJXv9FKUm2YHObDRegim18lwcw6CyzWPcEuVHgBInpjD6SQw== + dependencies: + "@ethersproject/abi" "^5.6.3" + axios "^0.21.2" + defender-base-client "1.30.0" + lodash "^4.17.19" + node-fetch "^2.6.0" + +defender-serverless@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/defender-serverless/-/defender-serverless-1.0.1.tgz#b6f3335935e3685fd2a032a26d7ff09489361309" + integrity sha512-UGf3kXIWu39bDTE/qfLmgYEpRgQE4fLxMs1uZqtrTxYj3qF7eDvq6y9/0OBuTjh+lfcsq08LKPKK2l0dmmqCKg== + dependencies: + chalk "^5.0.1" + defender-admin-client "^1.31.0-rc.2" + defender-autotask-client "^1.31.0-rc.2" + defender-relay-client "^1.31.0-rc.2" + defender-sentinel-client "^1.31.0-rc.2" + lodash "^4.17.21" + prompt "^1.3.0" + +defer-to-connect@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/defer-to-connect/-/defer-to-connect-2.0.1.tgz#8016bdb4143e4632b77a3449c6236277de520587" + integrity sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg== + +deferred@^0.7.11: + version "0.7.11" + resolved "https://registry.yarnpkg.com/deferred/-/deferred-0.7.11.tgz#8c3f272fd5e6ce48a969cb428c0d233ba2146322" + integrity sha512-8eluCl/Blx4YOGwMapBvXRKxHXhA8ejDXYzEaK8+/gtcm8hRMhSLmXSqDmNUKNc/C8HNSmuyyp/hflhqDAvK2A== + dependencies: + d "^1.0.1" + es5-ext "^0.10.50" + event-emitter "^0.3.5" + next-tick "^1.0.0" + timers-ext "^0.1.7" + +define-properties@^1.1.3, define-properties@^1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.4.tgz#0b14d7bd7fbeb2f3572c3a7eda80ea5d57fb05b1" + integrity sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA== + dependencies: + has-property-descriptors "^1.0.0" + object-keys "^1.1.1" + +delayed-stream@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" + integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ== + +dezalgo@1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/dezalgo/-/dezalgo-1.0.3.tgz#7f742de066fc748bc8db820569dddce49bf0d456" + integrity sha512-K7i4zNfT2kgQz3GylDw40ot9GAE47sFZ9EXHFSPP6zONLgH6kWXE0KWJchkbQJLBkRazq4APwZ4OwiFFlT95OQ== + dependencies: + asap "^2.0.0" + wrappy "1" + +dir-glob@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" + integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA== + dependencies: + path-type "^4.0.0" + +dotenv-expand@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/dotenv-expand/-/dotenv-expand-5.1.0.tgz#3fbaf020bfd794884072ea26b1e9791d45a629f0" + integrity sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA== + +dotenv@^10.0.0: + version "10.0.0" + resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-10.0.0.tgz#3d4227b8fb95f81096cdd2b66653fb2c7085ba81" + integrity sha512-rlBi9d8jpv9Sf1klPjNfFAuWDjKLwTIJJ/VxtoTwIR6hnZxcEOQCZg2oIL3MWBYw5GpUDKOEnND7LXTbIpQ03Q== + +duration@^0.2.2: + version "0.2.2" + resolved "https://registry.yarnpkg.com/duration/-/duration-0.2.2.tgz#ddf149bc3bc6901150fe9017111d016b3357f529" + integrity sha512-06kgtea+bGreF5eKYgI/36A6pLXggY7oR4p1pq4SmdFBn1ReOL5D8RhG64VrqfTTKNucqqtBAwEj8aB88mcqrg== + dependencies: + d "1" + es5-ext "~0.10.46" + +elliptic@6.5.4: + version "6.5.4" + resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.4.tgz#da37cebd31e79a1367e941b592ed1fbebd58abbb" + integrity sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ== + dependencies: + bn.js "^4.11.9" + brorand "^1.1.0" + hash.js "^1.0.0" + hmac-drbg "^1.0.1" + inherits "^2.0.4" + minimalistic-assert "^1.0.1" + minimalistic-crypto-utils "^1.0.1" + +emoji-regex@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" + integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== + +end-of-stream@^1.0.0, end-of-stream@^1.1.0, end-of-stream@^1.4.1: + version "1.4.4" + resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" + integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== + dependencies: + once "^1.4.0" + +es-abstract@^1.19.0, es-abstract@^1.19.5, es-abstract@^1.20.0: + version "1.20.2" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.20.2.tgz#8495a07bc56d342a3b8ea3ab01bd986700c2ccb3" + integrity sha512-XxXQuVNrySBNlEkTYJoDNFe5+s2yIOpzq80sUHEdPdQr0S5nTLz4ZPPPswNIpKseDDUS5yghX1gfLIHQZ1iNuQ== + dependencies: + call-bind "^1.0.2" + es-to-primitive "^1.2.1" + function-bind "^1.1.1" + function.prototype.name "^1.1.5" + get-intrinsic "^1.1.2" + get-symbol-description "^1.0.0" + has "^1.0.3" + has-property-descriptors "^1.0.0" + has-symbols "^1.0.3" + internal-slot "^1.0.3" + is-callable "^1.2.4" + is-negative-zero "^2.0.2" + is-regex "^1.1.4" + is-shared-array-buffer "^1.0.2" + is-string "^1.0.7" + is-weakref "^1.0.2" + object-inspect "^1.12.2" + object-keys "^1.1.1" + object.assign "^4.1.4" + regexp.prototype.flags "^1.4.3" + string.prototype.trimend "^1.0.5" + string.prototype.trimstart "^1.0.5" + unbox-primitive "^1.0.2" + +es-to-primitive@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a" + integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA== + dependencies: + is-callable "^1.1.4" + is-date-object "^1.0.1" + is-symbol "^1.0.2" + +es5-ext@^0.10.12, es5-ext@^0.10.35, es5-ext@^0.10.46, es5-ext@^0.10.47, es5-ext@^0.10.49, es5-ext@^0.10.50, es5-ext@^0.10.53, es5-ext@^0.10.61, es5-ext@^0.10.62, es5-ext@~0.10.14, es5-ext@~0.10.2, es5-ext@~0.10.46: + version "0.10.62" + resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.62.tgz#5e6adc19a6da524bf3d1e02bbc8960e5eb49a9a5" + integrity sha512-BHLqn0klhEpnOKSrzn/Xsz2UIW8j+cGmo9JLzr8BiUapV8hPL9+FliFqjwr9ngW7jWdnxv6eO+/LqyhJVqgrjA== + dependencies: + es6-iterator "^2.0.3" + es6-symbol "^3.1.3" + next-tick "^1.1.0" + +es6-iterator@^2.0.3, es6-iterator@~2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/es6-iterator/-/es6-iterator-2.0.3.tgz#a7de889141a05a94b0854403b2d0a0fbfa98f3b7" + integrity sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g== + dependencies: + d "1" + es5-ext "^0.10.35" + es6-symbol "^3.1.1" + +es6-set@^0.1.5: + version "0.1.6" + resolved "https://registry.yarnpkg.com/es6-set/-/es6-set-0.1.6.tgz#5669e3b2aa01d61a50ba79964f733673574983b8" + integrity sha512-TE3LgGLDIBX332jq3ypv6bcOpkLO0AslAQo7p2VqX/1N46YNsvIWgvjojjSEnWEGWMhr1qUbYeTSir5J6mFHOw== + dependencies: + d "^1.0.1" + es5-ext "^0.10.62" + es6-iterator "~2.0.3" + es6-symbol "^3.1.3" + event-emitter "^0.3.5" + type "^2.7.2" + +es6-symbol@^3.1.1, es6-symbol@^3.1.3: + version "3.1.3" + resolved "https://registry.yarnpkg.com/es6-symbol/-/es6-symbol-3.1.3.tgz#bad5d3c1bcdac28269f4cb331e431c78ac705d18" + integrity sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA== + dependencies: + d "^1.0.1" + ext "^1.1.2" + +es6-weak-map@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/es6-weak-map/-/es6-weak-map-2.0.3.tgz#b6da1f16cc2cc0d9be43e6bdbfc5e7dfcdf31d53" + integrity sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA== + dependencies: + d "1" + es5-ext "^0.10.46" + es6-iterator "^2.0.3" + es6-symbol "^3.1.1" + +escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" + integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg== + +esniff@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/esniff/-/esniff-1.1.0.tgz#c66849229f91464dede2e0d40201ed6abf65f2ac" + integrity sha512-vmHXOeOt7FJLsqofvFk4WB3ejvcHizCd8toXXwADmYfd02p2QwHRgkUbhYDX54y08nqk818CUTWipgZGlyN07g== + dependencies: + d "1" + es5-ext "^0.10.12" + +esprima@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" + integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== + +essentials@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/essentials/-/essentials-1.2.0.tgz#c6361fb648f5c8c0c51279707f6139e521a05807" + integrity sha512-kP/j7Iw7KeNE8b/o7+tr9uX2s1wegElGOoGZ2Xm35qBr4BbbEcH3/bxR2nfH9l9JANCq9AUrvKw+gRuHtZp0HQ== + dependencies: + uni-global "^1.0.0" + +event-emitter@^0.3.5: + version "0.3.5" + resolved "https://registry.yarnpkg.com/event-emitter/-/event-emitter-0.3.5.tgz#df8c69eef1647923c7157b9ce83840610b02cc39" + integrity sha512-D9rRn9y7kLPnJ+hMq7S/nhvoKwwvVJahBi2BPmx3bvbsEdK3W9ii8cBSGjP+72/LnM4n6fo3+dkCX5FeTQruXA== + dependencies: + d "1" + es5-ext "~0.10.14" + +events@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/events/-/events-1.1.1.tgz#9ebdb7635ad099c70dcc4c2a1f5004288e8bd924" + integrity sha512-kEcvvCBByWXGnZy6JUlgAp2gBIUjfCAV6P6TgT1/aaQKcmuAEC4OZTV1I4EWQLz2gxZw76atuVyvHhTxvi0Flw== + +ext-list@^2.0.0: + version "2.2.2" + resolved "https://registry.yarnpkg.com/ext-list/-/ext-list-2.2.2.tgz#0b98e64ed82f5acf0f2931babf69212ef52ddd37" + integrity sha512-u+SQgsubraE6zItfVA0tBuCBhfU9ogSRnsvygI7wht9TS510oLkBRXBsqopeUG/GBOIQyKZO9wjTqIu/sf5zFA== + dependencies: + mime-db "^1.28.0" + +ext-name@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/ext-name/-/ext-name-5.0.0.tgz#70781981d183ee15d13993c8822045c506c8f0a6" + integrity sha512-yblEwXAbGv1VQDmow7s38W77hzAgJAO50ztBLMcUyUBfxv1HC+LGwtiEN+Co6LtlqT/5uwVOxsD4TNIilWhwdQ== + dependencies: + ext-list "^2.0.0" + sort-keys-length "^1.0.0" + +ext@^1.1.2, ext@^1.4.0, ext@^1.6.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/ext/-/ext-1.7.0.tgz#0ea4383c0103d60e70be99e9a7f11027a33c4f5f" + integrity sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw== + dependencies: + type "^2.7.2" + +external-editor@^3.0.3: + version "3.1.0" + resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-3.1.0.tgz#cb03f740befae03ea4d283caed2741a83f335495" + integrity sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew== + dependencies: + chardet "^0.7.0" + iconv-lite "^0.4.24" + tmp "^0.0.33" + +eyes@0.1.x: + version "0.1.8" + resolved "https://registry.yarnpkg.com/eyes/-/eyes-0.1.8.tgz#62cf120234c683785d902348a800ef3e0cc20bc0" + integrity sha512-GipyPsXO1anza0AOZdy69Im7hGFCNB7Y/NGjDlZGJ3GJJLtwNSb2vrzYrTYJRrRloVx7pl+bhUaTB8yiccPvFQ== + +fast-base64-decode@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fast-base64-decode/-/fast-base64-decode-1.0.0.tgz#b434a0dd7d92b12b43f26819300d2dafb83ee418" + integrity sha512-qwaScUgUGBYeDNRnbc/KyllVU88Jk1pRHPStuF/lO7B0/RTRLj7U0lkdTAutlBblY08rwZDff6tNU9cjv6j//Q== + +fast-deep-equal@^3.1.1: + version "3.1.3" + resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" + integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== + +fast-glob@^3.2.7, fast-glob@^3.2.9: + version "3.2.11" + resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.11.tgz#a1172ad95ceb8a16e20caa5c5e56480e5129c1d9" + integrity sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew== + dependencies: + "@nodelib/fs.stat" "^2.0.2" + "@nodelib/fs.walk" "^1.2.3" + glob-parent "^5.1.2" + merge2 "^1.3.0" + micromatch "^4.0.4" + +fast-safe-stringify@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz#c406a83b6e70d9e35ce3b30a81141df30aeba884" + integrity sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA== + +fastest-levenshtein@^1.0.16: + version "1.0.16" + resolved "https://registry.yarnpkg.com/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz#210e61b6ff181de91ea9b3d1b84fdedd47e034e5" + integrity sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg== + +fastq@^1.6.0: + version "1.13.0" + resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.13.0.tgz#616760f88a7526bdfc596b7cab8c18938c36b98c" + integrity sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw== + dependencies: + reusify "^1.0.4" + +fd-slicer@~1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/fd-slicer/-/fd-slicer-1.1.0.tgz#25c7c89cb1f9077f8891bbe61d8f390eae256f1e" + integrity sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g== + dependencies: + pend "~1.2.0" + +figures@^3.0.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/figures/-/figures-3.2.0.tgz#625c18bd293c604dc4a8ddb2febf0c88341746af" + integrity sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg== + dependencies: + escape-string-regexp "^1.0.5" + +file-type@^16.5.3: + version "16.5.4" + resolved "https://registry.yarnpkg.com/file-type/-/file-type-16.5.4.tgz#474fb4f704bee427681f98dd390058a172a6c2fd" + integrity sha512-/yFHK0aGjFEgDJjEKP0pWCplsPFPhwyfwevf/pVxiN0tmE4L9LmwWxWukdJSHdoCli4VgQLehjJtwQBnqmsKcw== + dependencies: + readable-web-to-node-stream "^3.0.0" + strtok3 "^6.2.4" + token-types "^4.1.1" + +file-type@^3.8.0: + version "3.9.0" + resolved "https://registry.yarnpkg.com/file-type/-/file-type-3.9.0.tgz#257a078384d1db8087bc449d107d52a52672b9e9" + integrity sha512-RLoqTXE8/vPmMuTI88DAzhMYC99I8BWv7zYP4A1puo5HIjEJ5EX48ighy4ZyKMG9EDXxBgW6e++cn7d1xuFghA== + +file-type@^4.2.0: + version "4.4.0" + resolved "https://registry.yarnpkg.com/file-type/-/file-type-4.4.0.tgz#1b600e5fca1fbdc6e80c0a70c71c8dba5f7906c5" + integrity sha512-f2UbFQEk7LXgWpi5ntcO86OeA/cC80fuDDDaX/fZ2ZGel+AF7leRQqBBW1eJNiiQkrZlAoM6P+VYP5P6bOlDEQ== + +file-type@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/file-type/-/file-type-5.2.0.tgz#2ddbea7c73ffe36368dfae49dc338c058c2b8ad6" + integrity sha512-Iq1nJ6D2+yIO4c8HHg4fyVb8mAJieo1Oloy1mLLaB2PvezNedhBVm+QU7g0qM42aiMbRXTxKKwGD17rjKNJYVQ== + +file-type@^6.1.0: + version "6.2.0" + resolved "https://registry.yarnpkg.com/file-type/-/file-type-6.2.0.tgz#e50cd75d356ffed4e306dc4f5bcf52a79903a919" + integrity sha512-YPcTBDV+2Tm0VqjybVd32MHdlEGAtuxS3VAYsumFokDSMG+ROT5wawGlnHDoz7bfMcMDt9hxuXvXwoKUx2fkOg== + +filename-reserved-regex@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/filename-reserved-regex/-/filename-reserved-regex-2.0.0.tgz#abf73dfab735d045440abfea2d91f389ebbfa229" + integrity sha512-lc1bnsSr4L4Bdif8Xb/qrtokGbq5zlsms/CYH8PP+WtCkGNF65DPiQY8vG3SakEdRn8Dlnm+gW/qWKKjS5sZzQ== + +filenamify@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/filenamify/-/filenamify-4.3.0.tgz#62391cb58f02b09971c9d4f9d63b3cf9aba03106" + integrity sha512-hcFKyUG57yWGAzu1CMt/dPzYZuv+jAJUT85bL8mrXvNe6hWj6yEHEc4EdcgiA6Z3oi1/9wXJdZPXF2dZNgwgOg== + dependencies: + filename-reserved-regex "^2.0.0" + strip-outer "^1.0.1" + trim-repeated "^1.0.0" + +filesize@^8.0.7: + version "8.0.7" + resolved "https://registry.yarnpkg.com/filesize/-/filesize-8.0.7.tgz#695e70d80f4e47012c132d57a059e80c6b580bd8" + integrity sha512-pjmC+bkIF8XI7fWaH8KxHcZL3DPybs1roSKP4rKDvy20tAWwIObE4+JIseG2byfGKhud5ZnM4YSGKBz7Sh0ndQ== + +fill-range@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" + integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== + dependencies: + to-regex-range "^5.0.1" + +find-requires@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/find-requires/-/find-requires-1.0.0.tgz#a4a750ed37133dee8a9cc8efd2cc56aca01dd96d" + integrity sha512-UME7hNwBfzeISSFQcBEDemEEskpOjI/shPrpJM5PI4DSdn6hX0dmz+2dL70blZER2z8tSnTRL+2rfzlYgtbBoQ== + dependencies: + es5-ext "^0.10.49" + esniff "^1.1.0" + +flat@^5.0.2: + version "5.0.2" + resolved "https://registry.yarnpkg.com/flat/-/flat-5.0.2.tgz#8ca6fe332069ffa9d324c327198c598259ceb241" + integrity sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ== + +follow-redirects@^1.14.0: + version "1.15.1" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.1.tgz#0ca6a452306c9b276e4d3127483e29575e207ad5" + integrity sha512-yLAMQs+k0b2m7cVxpS1VKJVvoz7SS9Td1zss3XRwXj+ZDH00RJgnuLx7E44wx02kQLrdM3aOOy+FpzS7+8OizA== + +for-each@^0.3.3: + version "0.3.3" + resolved "https://registry.yarnpkg.com/for-each/-/for-each-0.3.3.tgz#69b447e88a0a5d32c3e7084f3f1710034b21376e" + integrity sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw== + dependencies: + is-callable "^1.1.3" + +form-data@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-4.0.0.tgz#93919daeaf361ee529584b9b31664dc12c9fa452" + integrity sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww== + dependencies: + asynckit "^0.4.0" + combined-stream "^1.0.8" + mime-types "^2.1.12" + +formidable@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/formidable/-/formidable-2.0.1.tgz#4310bc7965d185536f9565184dee74fbb75557ff" + integrity sha512-rjTMNbp2BpfQShhFbR3Ruk3qk2y9jKpvMW78nJgx8QKtxjDVrwbZG+wvDOmVbifHyOUOQJXxqEy6r0faRrPzTQ== + dependencies: + dezalgo "1.0.3" + hexoid "1.0.0" + once "1.4.0" + qs "6.9.3" + +fs-constants@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs-constants/-/fs-constants-1.0.0.tgz#6be0de9be998ce16af8afc24497b9ee9b7ccd9ad" + integrity sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow== + +fs-extra@^9.1.0: + version "9.1.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-9.1.0.tgz#5954460c764a8da2094ba3554bf839e6b9a7c86d" + integrity sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ== + dependencies: + at-least-node "^1.0.0" + graceful-fs "^4.2.0" + jsonfile "^6.0.1" + universalify "^2.0.0" + +fs-minipass@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-2.1.0.tgz#7f5036fdbf12c63c169190cbe4199c852271f9fb" + integrity sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg== + dependencies: + minipass "^3.0.0" + +fs.realpath@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" + integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== + +fs2@^0.3.9: + version "0.3.9" + resolved "https://registry.yarnpkg.com/fs2/-/fs2-0.3.9.tgz#3869e5b2ec7e0622eaa5f4373df540d3d427a9fb" + integrity sha512-WsOqncODWRlkjwll+73bAxVW3JPChDgaPX3DT4iTTm73UmG4VgALa7LaFblP232/DN60itkOrPZ8kaP1feksGQ== + dependencies: + d "^1.0.1" + deferred "^0.7.11" + es5-ext "^0.10.53" + event-emitter "^0.3.5" + ignore "^5.1.8" + memoizee "^0.4.14" + type "^2.1.0" + +fsevents@~2.3.2: + version "2.3.2" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" + integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== + +function-bind@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" + integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== + +function.prototype.name@^1.1.5: + version "1.1.5" + resolved "https://registry.yarnpkg.com/function.prototype.name/-/function.prototype.name-1.1.5.tgz#cce0505fe1ffb80503e6f9e46cc64e46a12a9621" + integrity sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + es-abstract "^1.19.0" + functions-have-names "^1.2.2" + +functions-have-names@^1.2.2: + version "1.2.3" + resolved "https://registry.yarnpkg.com/functions-have-names/-/functions-have-names-1.2.3.tgz#0404fe4ee2ba2f607f0e0ec3c80bae994133b834" + integrity sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ== + +get-intrinsic@^1.0.2, get-intrinsic@^1.1.0, get-intrinsic@^1.1.1, get-intrinsic@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.1.2.tgz#336975123e05ad0b7ba41f152ee4aadbea6cf598" + integrity sha512-Jfm3OyCxHh9DJyc28qGk+JmfkpO41A4XkneDSujN9MDXrm4oDKdHvndhZ2dN94+ERNfkYJWDclW6k2L/ZGHjXA== + dependencies: + function-bind "^1.1.1" + has "^1.0.3" + has-symbols "^1.0.3" + +get-stdin@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-8.0.0.tgz#cbad6a73feb75f6eeb22ba9e01f89aa28aa97a53" + integrity sha512-sY22aA6xchAzprjyqmSEQv4UbAAzRN0L2dQB0NlN5acTTK9Don6nhoc3eAbUnpZiCANAMfd/+40kVdKfFygohg== + +get-stream@^2.2.0: + version "2.3.1" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-2.3.1.tgz#5f38f93f346009666ee0150a054167f91bdd95de" + integrity sha512-AUGhbbemXxrZJRD5cDvKtQxLuYaIbNtDTK8YqupCI393Q2KSTreEsLUN3ZxAWFGiKTzL6nKuzfcIvieflUX9qA== + dependencies: + object-assign "^4.0.1" + pinkie-promise "^2.0.0" + +get-stream@^5.1.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-5.2.0.tgz#4966a1795ee5ace65e706c4b7beb71257d6e22d3" + integrity sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA== + dependencies: + pump "^3.0.0" + +get-stream@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7" + integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg== + +get-symbol-description@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/get-symbol-description/-/get-symbol-description-1.0.0.tgz#7fdb81c900101fbd564dd5f1a30af5aadc1e58d6" + integrity sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw== + dependencies: + call-bind "^1.0.2" + get-intrinsic "^1.1.1" + +glob-parent@^5.1.2, glob-parent@~5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" + integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== + dependencies: + is-glob "^4.0.1" + +glob@^7.0.5, glob@^7.1.4, glob@^7.1.6: + version "7.2.3" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" + integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.1.1" + once "^1.3.0" + path-is-absolute "^1.0.0" + +globby@^11.1.0: + version "11.1.0" + resolved "https://registry.yarnpkg.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b" + integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g== + dependencies: + array-union "^2.1.0" + dir-glob "^3.0.1" + fast-glob "^3.2.9" + ignore "^5.2.0" + merge2 "^1.4.1" + slash "^3.0.0" + +got@^11.8.5: + version "11.8.5" + resolved "https://registry.yarnpkg.com/got/-/got-11.8.5.tgz#ce77d045136de56e8f024bebb82ea349bc730046" + integrity sha512-o0Je4NvQObAuZPHLFoRSkdG2lTgtcynqymzg2Vupdx6PorhaT5MCbIyXG6d4D94kk8ZG57QeosgdiqfJWhEhlQ== + dependencies: + "@sindresorhus/is" "^4.0.0" + "@szmarczak/http-timer" "^4.0.5" + "@types/cacheable-request" "^6.0.1" + "@types/responselike" "^1.0.0" + cacheable-lookup "^5.0.3" + cacheable-request "^7.0.2" + decompress-response "^6.0.0" + http2-wrapper "^1.0.0-beta.5.2" + lowercase-keys "^2.0.0" + p-cancelable "^2.0.0" + responselike "^2.0.0" + +graceful-fs@^4.1.10, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.10: + version "4.2.10" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.10.tgz#147d3a006da4ca3ce14728c7aefc287c367d7a6c" + integrity sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA== + +graphlib@^2.1.8: + version "2.1.8" + resolved "https://registry.yarnpkg.com/graphlib/-/graphlib-2.1.8.tgz#5761d414737870084c92ec7b5dbcb0592c9d35da" + integrity sha512-jcLLfkpoVGmH7/InMC/1hIvOPSUh38oJtGhvrOFGzioE1DZ+0YW16RgmOJhHiuWTvGiJQ9Z1Ik43JvkRPRvE+A== + dependencies: + lodash "^4.17.15" + +has-bigints@^1.0.1, has-bigints@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/has-bigints/-/has-bigints-1.0.2.tgz#0871bd3e3d51626f6ca0966668ba35d5602d6eaa" + integrity sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ== + +has-flag@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" + integrity sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw== + +has-flag@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" + integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== + +has-property-descriptors@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz#610708600606d36961ed04c196193b6a607fa861" + integrity sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ== + dependencies: + get-intrinsic "^1.1.1" + +has-symbols@^1.0.2, has-symbols@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8" + integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A== + +has-tostringtag@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-tostringtag/-/has-tostringtag-1.0.0.tgz#7e133818a7d394734f941e73c3d3f9291e658b25" + integrity sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ== + dependencies: + has-symbols "^1.0.2" + +has@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" + integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== + dependencies: + function-bind "^1.1.1" + +hash.js@1.1.7, hash.js@^1.0.0, hash.js@^1.0.3: + version "1.1.7" + resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.7.tgz#0babca538e8d4ee4a0f8988d68866537a003cf42" + integrity sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA== + dependencies: + inherits "^2.0.3" + minimalistic-assert "^1.0.1" + +hexoid@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/hexoid/-/hexoid-1.0.0.tgz#ad10c6573fb907de23d9ec63a711267d9dc9bc18" + integrity sha512-QFLV0taWQOZtvIRIAdBChesmogZrtuXvVWsFHZTk2SU+anspqZ2vMnoLg7IE1+Uk16N19APic1BuF8bC8c2m5g== + +hmac-drbg@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1" + integrity sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg== + dependencies: + hash.js "^1.0.3" + minimalistic-assert "^1.0.0" + minimalistic-crypto-utils "^1.0.1" + +http-cache-semantics@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz#49e91c5cbf36c9b94bcfcd71c23d5249ec74e390" + integrity sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ== + +http2-wrapper@^1.0.0-beta.5.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/http2-wrapper/-/http2-wrapper-1.0.3.tgz#b8f55e0c1f25d4ebd08b3b0c2c079f9590800b3d" + integrity sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg== + dependencies: + quick-lru "^5.1.1" + resolve-alpn "^1.0.0" + +https-proxy-agent@^5.0.0, https-proxy-agent@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz#c59ef224a04fe8b754f3db0063a25ea30d0005d6" + integrity sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA== + dependencies: + agent-base "6" + debug "4" + +iconv-lite@^0.4.24: + version "0.4.24" + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" + integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== + dependencies: + safer-buffer ">= 2.1.2 < 3" + +ieee754@1.1.13: + version "1.1.13" + resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.13.tgz#ec168558e95aa181fd87d37f55c32bbcb6708b84" + integrity sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg== + +ieee754@^1.1.13, ieee754@^1.1.4, ieee754@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" + integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== + +ignore@^5.1.8, ignore@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.0.tgz#6d3bac8fa7fe0d45d9f9be7bac2fc279577e345a" + integrity sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ== + +immediate@~3.0.5: + version "3.0.6" + resolved "https://registry.yarnpkg.com/immediate/-/immediate-3.0.6.tgz#9db1dbd0faf8de6fbe0f5dd5e56bb606280de69b" + integrity sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ== + +imurmurhash@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" + integrity sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA== + +inflight@^1.0.4: + version "1.0.6" + resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" + integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA== + dependencies: + once "^1.3.0" + wrappy "1" + +inherits@2, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.3: + version "2.0.4" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" + integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== + +inquirer@^8.2.4: + version "8.2.4" + resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-8.2.4.tgz#ddbfe86ca2f67649a67daa6f1051c128f684f0b4" + integrity sha512-nn4F01dxU8VeKfq192IjLsxu0/OmMZ4Lg3xKAns148rCaXP6ntAoEkVYZThWjwON8AlzdZZi6oqnhNbxUG9hVg== + dependencies: + ansi-escapes "^4.2.1" + chalk "^4.1.1" + cli-cursor "^3.1.0" + cli-width "^3.0.0" + external-editor "^3.0.3" + figures "^3.0.0" + lodash "^4.17.21" + mute-stream "0.0.8" + ora "^5.4.1" + run-async "^2.4.0" + rxjs "^7.5.5" + string-width "^4.1.0" + strip-ansi "^6.0.0" + through "^2.3.6" + wrap-ansi "^7.0.0" + +internal-slot@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.3.tgz#7347e307deeea2faac2ac6205d4bc7d34967f59c" + integrity sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA== + dependencies: + get-intrinsic "^1.1.0" + has "^1.0.3" + side-channel "^1.0.4" + +is-arguments@^1.0.4: + version "1.1.1" + resolved "https://registry.yarnpkg.com/is-arguments/-/is-arguments-1.1.1.tgz#15b3f88fda01f2a97fec84ca761a560f123efa9b" + integrity sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA== + dependencies: + call-bind "^1.0.2" + has-tostringtag "^1.0.0" + +is-bigint@^1.0.1: + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-bigint/-/is-bigint-1.0.4.tgz#08147a1875bc2b32005d41ccd8291dffc6691df3" + integrity sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg== + dependencies: + has-bigints "^1.0.1" + +is-binary-path@~2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" + integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== + dependencies: + binary-extensions "^2.0.0" + +is-boolean-object@^1.1.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/is-boolean-object/-/is-boolean-object-1.1.2.tgz#5c6dc200246dd9321ae4b885a114bb1f75f63719" + integrity sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA== + dependencies: + call-bind "^1.0.2" + has-tostringtag "^1.0.0" + +is-callable@^1.1.3, is-callable@^1.1.4, is-callable@^1.2.4: + version "1.2.4" + resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.4.tgz#47301d58dd0259407865547853df6d61fe471945" + integrity sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w== + +is-date-object@^1.0.1: + version "1.0.5" + resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.5.tgz#0841d5536e724c25597bf6ea62e1bd38298df31f" + integrity sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ== + dependencies: + has-tostringtag "^1.0.0" + +is-docker@^2.0.0, is-docker@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-2.2.1.tgz#33eeabe23cfe86f14bde4408a02c0cfb853acdaa" + integrity sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ== + +is-extglob@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" + integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== + +is-fullwidth-code-point@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" + integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== + +is-generator-function@^1.0.7: + version "1.0.10" + resolved "https://registry.yarnpkg.com/is-generator-function/-/is-generator-function-1.0.10.tgz#f1558baf1ac17e0deea7c0415c438351ff2b3c72" + integrity sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A== + dependencies: + has-tostringtag "^1.0.0" + +is-glob@^4.0.1, is-glob@~4.0.1: + version "4.0.3" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" + integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== + dependencies: + is-extglob "^2.1.1" + +is-interactive@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-interactive/-/is-interactive-1.0.0.tgz#cea6e6ae5c870a7b0a0004070b7b587e0252912e" + integrity sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w== + +is-natural-number@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/is-natural-number/-/is-natural-number-4.0.1.tgz#ab9d76e1db4ced51e35de0c72ebecf09f734cde8" + integrity sha512-Y4LTamMe0DDQIIAlaer9eKebAlDSV6huy+TWhJVPlzZh2o4tRP5SQWFlLn5N0To4mDD22/qdOq+veo1cSISLgQ== + +is-negative-zero@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.2.tgz#7bf6f03a28003b8b3965de3ac26f664d765f3150" + integrity sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA== + +is-number-object@^1.0.4: + version "1.0.7" + resolved "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.0.7.tgz#59d50ada4c45251784e9904f5246c742f07a42fc" + integrity sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ== + dependencies: + has-tostringtag "^1.0.0" + +is-number@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" + integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== + +is-plain-obj@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e" + integrity sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg== + +is-promise@^2.2.2: + version "2.2.2" + resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.2.2.tgz#39ab959ccbf9a774cf079f7b40c7a26f763135f1" + integrity sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ== + +is-regex@^1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.4.tgz#eef5663cd59fa4c0ae339505323df6854bb15958" + integrity sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg== + dependencies: + call-bind "^1.0.2" + has-tostringtag "^1.0.0" + +is-shared-array-buffer@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz#8f259c573b60b6a32d4058a1a07430c0a7344c79" + integrity sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA== + dependencies: + call-bind "^1.0.2" + +is-stream@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" + integrity sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ== + +is-string@^1.0.5, is-string@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.7.tgz#0dd12bf2006f255bb58f695110eff7491eebc0fd" + integrity sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg== + dependencies: + has-tostringtag "^1.0.0" + +is-symbol@^1.0.2, is-symbol@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.4.tgz#a6dac93b635b063ca6872236de88910a57af139c" + integrity sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg== + dependencies: + has-symbols "^1.0.2" + +is-typed-array@^1.1.3, is-typed-array@^1.1.9: + version "1.1.9" + resolved "https://registry.yarnpkg.com/is-typed-array/-/is-typed-array-1.1.9.tgz#246d77d2871e7d9f5aeb1d54b9f52c71329ece67" + integrity sha512-kfrlnTTn8pZkfpJMUgYD7YZ3qzeJgWUn8XfVYBARc4wnmNOmLbmuuaAs3q5fvB0UJOn6yHAKaGTPM7d6ezoD/A== + dependencies: + available-typed-arrays "^1.0.5" + call-bind "^1.0.2" + es-abstract "^1.20.0" + for-each "^0.3.3" + has-tostringtag "^1.0.0" + +is-unicode-supported@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz#3f26c76a809593b52bfa2ecb5710ed2779b522a7" + integrity sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw== + +is-weakref@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-weakref/-/is-weakref-1.0.2.tgz#9529f383a9338205e89765e0392efc2f100f06f2" + integrity sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ== + dependencies: + call-bind "^1.0.2" + +is-wsl@^2.1.1: + version "2.2.0" + resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-2.2.0.tgz#74a4c76e77ca9fd3f932f290c17ea326cd157271" + integrity sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww== + dependencies: + is-docker "^2.0.0" + +isarray@^1.0.0, isarray@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" + integrity sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ== + +isexe@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" + integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== + +isomorphic-unfetch@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/isomorphic-unfetch/-/isomorphic-unfetch-3.1.0.tgz#87341d5f4f7b63843d468438128cb087b7c3e98f" + integrity sha512-geDJjpoZ8N0kWexiwkX8F9NkTsXhetLPVbZFQ+JTW239QNOwvB0gniuR1Wc6f0AMTn7/mFGyXvHTifrCp/GH8Q== + dependencies: + node-fetch "^2.6.1" + unfetch "^4.2.0" + +isomorphic-ws@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/isomorphic-ws/-/isomorphic-ws-4.0.1.tgz#55fd4cd6c5e6491e76dc125938dd863f5cd4f2dc" + integrity sha512-BhBvN2MBpWTaSHdWRb/bwdZJ1WaehQ2L1KngkCkfLUGF0mAWAT1sQUQacEmQ0jXkFw/czDXPNQSL5u2/Krsz1w== + +isstream@0.1.x: + version "0.1.2" + resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" + integrity sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g== + +jmespath@0.16.0: + version "0.16.0" + resolved "https://registry.yarnpkg.com/jmespath/-/jmespath-0.16.0.tgz#b15b0a85dfd4d930d43e69ed605943c802785076" + integrity sha512-9FzQjJ7MATs1tSpnco1K6ayiYE3figslrXA72G2HQ/n76RzvYlofyi5QM+iX4YRs/pu3yzxlVQSST23+dMDknw== + +js-cookie@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/js-cookie/-/js-cookie-2.2.1.tgz#69e106dc5d5806894562902aa5baec3744e9b2b8" + integrity sha512-HvdH2LzI/EAZcUwA8+0nKNtWHqS+ZmijLA30RwZA0bo7ToCckjK5MkGhjED9KoRcXO6BaGI3I9UIzSA1FKFPOQ== + +js-sha3@0.8.0: + version "0.8.0" + resolved "https://registry.yarnpkg.com/js-sha3/-/js-sha3-0.8.0.tgz#b9b7a5da73afad7dedd0f8c463954cbde6818840" + integrity sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q== + +js-yaml@^3.13.1, js-yaml@^3.14.1: + version "3.14.1" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537" + integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g== + dependencies: + argparse "^1.0.7" + esprima "^4.0.0" + +js-yaml@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" + integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== + dependencies: + argparse "^2.0.1" + +json-buffer@3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.1.tgz#9338802a30d3b6605fbe0613e094008ca8c05a13" + integrity sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ== + +json-cycle@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/json-cycle/-/json-cycle-1.3.0.tgz#c4f6f7d926c2979012cba173b06f9cae9e866d3f" + integrity sha512-FD/SedD78LCdSvJaOUQAXseT8oQBb5z6IVYaQaCrVUlu9zOAr1BDdKyVYQaSD/GDsAMrXpKcOyBD4LIl8nfjHw== + +json-refs@^3.0.15: + version "3.0.15" + resolved "https://registry.yarnpkg.com/json-refs/-/json-refs-3.0.15.tgz#1089f4acf263a3152c790479485195cd6449e855" + integrity sha512-0vOQd9eLNBL18EGl5yYaO44GhixmImes2wiYn9Z3sag3QnehWrYWlB9AFtMxCL2Bj3fyxgDYkxGFEU/chlYssw== + dependencies: + commander "~4.1.1" + graphlib "^2.1.8" + js-yaml "^3.13.1" + lodash "^4.17.15" + native-promise-only "^0.8.1" + path-loader "^1.0.10" + slash "^3.0.0" + uri-js "^4.2.2" + +json-schema-traverse@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz#ae7bcb3656ab77a73ba5c49bf654f38e6b6860e2" + integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug== + +jsonfile@^6.0.1: + version "6.1.0" + resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-6.1.0.tgz#bc55b2634793c679ec6403094eb13698a6ec0aae" + integrity sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ== + dependencies: + universalify "^2.0.0" + optionalDependencies: + graceful-fs "^4.1.6" + +jszip@^3.5.0, jszip@^3.9.1: + version "3.10.1" + resolved "https://registry.yarnpkg.com/jszip/-/jszip-3.10.1.tgz#34aee70eb18ea1faec2f589208a157d1feb091c2" + integrity sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g== + dependencies: + lie "~3.3.0" + pako "~1.0.2" + readable-stream "~2.3.6" + setimmediate "^1.0.5" + +jwt-decode@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/jwt-decode/-/jwt-decode-2.2.0.tgz#7d86bd56679f58ce6a84704a657dd392bba81a79" + integrity sha512-86GgN2vzfUu7m9Wcj63iUkuDzFNYFVmjeDm2GzWpUk+opB0pEpMsw6ePCMrhYkumz2C1ihqtZzOMAg7FiXcNoQ== + +jwt-decode@^3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/jwt-decode/-/jwt-decode-3.1.2.tgz#3fb319f3675a2df0c2895c8f5e9fa4b67b04ed59" + integrity sha512-UfpWE/VZn0iP50d8cz9NrZLM9lSWhcJ+0Gt/nm4by88UL+J1SiKN8/5dkjMmbEzwL2CAe+67GsegCbIKtbp75A== + +keyv@^4.0.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/keyv/-/keyv-4.5.0.tgz#dbce9ade79610b6e641a9a65f2f6499ba06b9bc6" + integrity sha512-2YvuMsA+jnFGtBareKqgANOEKe1mk3HKiXu2fRmAfyxG0MJAywNhi5ttWA3PMjl4NmpyjZNbFifR2vNjW1znfA== + dependencies: + json-buffer "3.0.1" + +lazystream@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/lazystream/-/lazystream-1.0.1.tgz#494c831062f1f9408251ec44db1cba29242a2638" + integrity sha512-b94GiNHQNy6JNTrt5w6zNyffMrNkXZb3KTkCZJb2V1xaEGCk093vkZ2jk3tpaeP33/OiXC+WvK9AxUebnf5nbw== + dependencies: + readable-stream "^2.0.5" + +lie@~3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/lie/-/lie-3.3.0.tgz#dcf82dee545f46074daf200c7c1c5a08e0f40f6a" + integrity sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ== + dependencies: + immediate "~3.0.5" + +lodash.defaults@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/lodash.defaults/-/lodash.defaults-4.2.0.tgz#d09178716ffea4dde9e5fb7b37f6f0802274580c" + integrity sha512-qjxPLHd3r5DnsdGacqOMU6pb/avJzdh9tFX2ymgoZE27BmjXrNy/y4LoaiTeAb+O3gL8AfpJGtqfX/ae2leYYQ== + +lodash.difference@^4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/lodash.difference/-/lodash.difference-4.5.0.tgz#9ccb4e505d486b91651345772885a2df27fd017c" + integrity sha512-dS2j+W26TQ7taQBGN8Lbbq04ssV3emRw4NY58WErlTO29pIqS0HmoT5aJ9+TUQ1N3G+JOZSji4eugsWwGp9yPA== + +lodash.flatten@^4.4.0: + version "4.4.0" + resolved "https://registry.yarnpkg.com/lodash.flatten/-/lodash.flatten-4.4.0.tgz#f31c22225a9632d2bbf8e4addbef240aa765a61f" + integrity sha512-C5N2Z3DgnnKr0LOpv/hKCgKdb7ZZwafIrsesve6lmzvZIRZRGaZ/l6Q8+2W7NaT+ZwO3fFlSCzCzrDCFdJfZ4g== + +lodash.isplainobject@^4.0.6: + version "4.0.6" + resolved "https://registry.yarnpkg.com/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz#7c526a52d89b45c45cc690b88163be0497f550cb" + integrity sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA== + +lodash.union@^4.6.0: + version "4.6.0" + resolved "https://registry.yarnpkg.com/lodash.union/-/lodash.union-4.6.0.tgz#48bb5088409f16f1821666641c44dd1aaae3cd88" + integrity sha512-c4pB2CdGrGdjMKYLA+XiRDO7Y0PRQbm/Gzg8qMj+QH+pFVAoTp5sBpO0odL3FjoPCGjK96p6qsP+yQoiLoOBcw== + +lodash@^4.17.11, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.21: + version "4.17.21" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" + integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== + +log-node@^8.0.3: + version "8.0.3" + resolved "https://registry.yarnpkg.com/log-node/-/log-node-8.0.3.tgz#441bf1a72f9f1c28b62f5bf42e9eb3765af74d73" + integrity sha512-1UBwzgYiCIDFs8A0rM2QdBFo8Wd8UQ0HrSTu/MNI+/2zN3NoHRj2fhplurAyuxTYUXu3Oohugq1jAn5s05u1MQ== + dependencies: + ansi-regex "^5.0.1" + cli-color "^2.0.1" + cli-sprintf-format "^1.1.1" + d "^1.0.1" + es5-ext "^0.10.53" + sprintf-kit "^2.0.1" + supports-color "^8.1.1" + type "^2.5.0" + +log-symbols@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-4.1.0.tgz#3fbdbb95b4683ac9fc785111e792e558d4abd503" + integrity sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg== + dependencies: + chalk "^4.1.0" + is-unicode-supported "^0.1.0" + +log@^6.0.0, log@^6.3.1: + version "6.3.1" + resolved "https://registry.yarnpkg.com/log/-/log-6.3.1.tgz#fcf9bd71fe2274a51ad608dc95c549dd7512146b" + integrity sha512-McG47rJEWOkXTDioZzQNydAVvZNeEkSyLJ1VWkFwfW+o1knW+QSi8D1KjPn/TnctV+q99lkvJNe1f0E1IjfY2A== + dependencies: + d "^1.0.1" + duration "^0.2.2" + es5-ext "^0.10.53" + event-emitter "^0.3.5" + sprintf-kit "^2.0.1" + type "^2.5.0" + uni-global "^1.0.0" + +lowercase-keys@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-2.0.0.tgz#2603e78b7b4b0006cbca2fbcc8a3202558ac9479" + integrity sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA== + +lowercase-keys@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-3.0.0.tgz#c5e7d442e37ead247ae9db117a9d0a467c89d4f2" + integrity sha512-ozCC6gdQ+glXOQsveKD0YsDy8DSQFjDTz4zyzEHNV5+JP5D62LmfDZ6o1cycFx9ouG940M5dE8C8CTewdj2YWQ== + +lru-cache@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" + integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== + dependencies: + yallist "^4.0.0" + +lru-queue@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/lru-queue/-/lru-queue-0.1.0.tgz#2738bd9f0d3cf4f84490c5736c48699ac632cda3" + integrity sha512-BpdYkt9EvGl8OfWHDQPISVpcl5xZthb+XPsbELj5AQXxIC8IriDZIQYjBJPEm5rS420sjZ0TLEzRcq5KdBhYrQ== + dependencies: + es5-ext "~0.10.2" + +make-dir@^1.0.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-1.3.0.tgz#79c1033b80515bd6d24ec9933e860ca75ee27f0c" + integrity sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ== + dependencies: + pify "^3.0.0" + +make-dir@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f" + integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw== + dependencies: + semver "^6.0.0" + +memoizee@^0.4.14, memoizee@^0.4.15: + version "0.4.15" + resolved "https://registry.yarnpkg.com/memoizee/-/memoizee-0.4.15.tgz#e6f3d2da863f318d02225391829a6c5956555b72" + integrity sha512-UBWmJpLZd5STPm7PMUlOw/TSy972M+z8gcyQ5veOnSDRREz/0bmpyTfKt3/51DhEBqCZQn1udM/5flcSPYhkdQ== + dependencies: + d "^1.0.1" + es5-ext "^0.10.53" + es6-weak-map "^2.0.3" + event-emitter "^0.3.5" + is-promise "^2.2.2" + lru-queue "^0.1.0" + next-tick "^1.1.0" + timers-ext "^0.1.7" + +merge2@^1.3.0, merge2@^1.4.1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" + integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== + +methods@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" + integrity sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w== + +micromatch@^4.0.4, micromatch@^4.0.5: + version "4.0.5" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.5.tgz#bc8999a7cbbf77cdc89f132f6e467051b49090c6" + integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA== + dependencies: + braces "^3.0.2" + picomatch "^2.3.1" + +mime-db@1.52.0, mime-db@^1.28.0: + version "1.52.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" + integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== + +mime-types@^2.1.12: + version "2.1.35" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" + integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== + dependencies: + mime-db "1.52.0" + +mime@2.6.0: + version "2.6.0" + resolved "https://registry.yarnpkg.com/mime/-/mime-2.6.0.tgz#a2a682a95cd4d0cb1d6257e28f83da7e35800367" + integrity sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg== + +mimic-fn@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" + integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== + +mimic-response@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-1.0.1.tgz#4923538878eef42063cb8a3e3b0798781487ab1b" + integrity sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ== + +mimic-response@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-3.1.0.tgz#2d1d59af9c1b129815accc2c46a022a5ce1fa3c9" + integrity sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ== + +minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" + integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A== + +minimalistic-crypto-utils@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" + integrity sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg== + +minimatch@^3.0.2, minimatch@^3.0.4, minimatch@^3.1.1: + version "3.1.2" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" + integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== + dependencies: + brace-expansion "^1.1.7" + +minimatch@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-5.1.0.tgz#1717b464f4971b144f6aabe8f2d0b8e4511e09c7" + integrity sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg== + dependencies: + brace-expansion "^2.0.1" + +minipass@^3.0.0: + version "3.3.4" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-3.3.4.tgz#ca99f95dd77c43c7a76bf51e6d200025eee0ffae" + integrity sha512-I9WPbWHCGu8W+6k1ZiGpPu0GkoKBeorkfKNuAFBNS1HNFJvke82sxvI5bzcCNpWPorkOO5QQ+zomzzwRxejXiw== + dependencies: + yallist "^4.0.0" + +minizlib@^2.1.1: + version "2.1.2" + resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-2.1.2.tgz#e90d3466ba209b932451508a11ce3d3632145931" + integrity sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg== + dependencies: + minipass "^3.0.0" + yallist "^4.0.0" + +mkdirp@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" + integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== + +ms@2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" + integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== + +mute-stream@0.0.8, mute-stream@~0.0.4: + version "0.0.8" + resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d" + integrity sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA== + +native-promise-only@^0.8.1: + version "0.8.1" + resolved "https://registry.yarnpkg.com/native-promise-only/-/native-promise-only-0.8.1.tgz#20a318c30cb45f71fe7adfbf7b21c99c1472ef11" + integrity sha512-zkVhZUA3y8mbz652WrL5x0fB0ehrBkulWT3TomAQ9iDtyXZvzKeEA6GPxAItBYeNYl5yngKRX612qHOhvMkDeg== + +ncjsm@^4.3.0: + version "4.3.1" + resolved "https://registry.yarnpkg.com/ncjsm/-/ncjsm-4.3.1.tgz#794cd307c877f2dad1e2d71bf7e36074b1bde6d9" + integrity sha512-5hy/Mr7KKLS/AFyY4Be8q0aXz8wYd2PN3cSSMBeQHfcrK6Sbd0EGoQxiNrUoKMAYhl67v4A975f6Gy1oEqfJlA== + dependencies: + builtin-modules "^3.3.0" + deferred "^0.7.11" + es5-ext "^0.10.61" + es6-set "^0.1.5" + ext "^1.6.0" + find-requires "^1.0.0" + fs2 "^0.3.9" + type "^2.6.0" + +next-tick@1, next-tick@^1.0.0, next-tick@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/next-tick/-/next-tick-1.1.0.tgz#1836ee30ad56d67ef281b22bd199f709449b35eb" + integrity sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ== + +nice-try@^1.0.4: + version "1.0.5" + resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" + integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ== + +node-dir@^0.1.17: + version "0.1.17" + resolved "https://registry.yarnpkg.com/node-dir/-/node-dir-0.1.17.tgz#5f5665d93351335caabef8f1c554516cf5f1e4e5" + integrity sha512-tmPX422rYgofd4epzrNoOXiE8XFZYOcCq1vD7MAXCDO+O+zndlA2ztdKKMa+EeuBG5tHETpr4ml4RGgpqDCCAg== + dependencies: + minimatch "^3.0.2" + +node-fetch@^2.6.0, node-fetch@^2.6.1, node-fetch@^2.6.7: + version "2.6.7" + resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.7.tgz#24de9fba827e3b4ae44dc8b20256a379160052ad" + integrity sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ== + dependencies: + whatwg-url "^5.0.0" + +normalize-path@^3.0.0, normalize-path@~3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" + integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== + +normalize-url@^6.0.1: + version "6.1.0" + resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-6.1.0.tgz#40d0885b535deffe3f3147bec877d05fe4c5668a" + integrity sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A== + +npm-registry-utilities@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/npm-registry-utilities/-/npm-registry-utilities-1.0.0.tgz#75dc21fcb96020d506b99823407c2088508a4edd" + integrity sha512-9xYfSJy2IFQw1i6462EJzjChL9e65EfSo2Cw6kl0EFeDp05VvU+anrQk3Fc0d1MbVCq7rWIxeer89O9SUQ/uOg== + dependencies: + ext "^1.6.0" + fs2 "^0.3.9" + memoizee "^0.4.15" + node-fetch "^2.6.7" + semver "^7.3.5" + type "^2.6.0" + validate-npm-package-name "^3.0.0" + +object-assign@^4.0.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" + integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== + +object-hash@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/object-hash/-/object-hash-2.2.0.tgz#5ad518581eefc443bd763472b8ff2e9c2c0d54a5" + integrity sha512-gScRMn0bS5fH+IuwyIFgnh9zBdo4DV+6GhygmWM9HyNJSgS0hScp1f5vjtm7oIIOiT9trXrShAkLFSc2IqKNgw== + +object-inspect@^1.12.2, object-inspect@^1.9.0: + version "1.12.2" + resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.12.2.tgz#c0641f26394532f28ab8d796ab954e43c009a8ea" + integrity sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ== + +object-keys@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" + integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== + +object.assign@^4.1.4: + version "4.1.4" + resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.4.tgz#9673c7c7c351ab8c4d0b516f4343ebf4dfb7799f" + integrity sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.4" + has-symbols "^1.0.3" + object-keys "^1.1.1" + +once@1.4.0, once@^1.3.0, once@^1.3.1, once@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" + integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== + dependencies: + wrappy "1" + +onetime@^5.1.0: + version "5.1.2" + resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e" + integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== + dependencies: + mimic-fn "^2.1.0" + +open@^7.4.2: + version "7.4.2" + resolved "https://registry.yarnpkg.com/open/-/open-7.4.2.tgz#b8147e26dcf3e426316c730089fd71edd29c2321" + integrity sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q== + dependencies: + is-docker "^2.0.0" + is-wsl "^2.1.1" + +ora@^5.4.1: + version "5.4.1" + resolved "https://registry.yarnpkg.com/ora/-/ora-5.4.1.tgz#1b2678426af4ac4a509008e5e4ac9e9959db9e18" + integrity sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ== + dependencies: + bl "^4.1.0" + chalk "^4.1.0" + cli-cursor "^3.1.0" + cli-spinners "^2.5.0" + is-interactive "^1.0.0" + is-unicode-supported "^0.1.0" + log-symbols "^4.1.0" + strip-ansi "^6.0.0" + wcwidth "^1.0.1" + +os-tmpdir@~1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" + integrity sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g== + +p-cancelable@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-2.1.1.tgz#aab7fbd416582fa32a3db49859c122487c5ed2cf" + integrity sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg== + +p-event@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/p-event/-/p-event-4.2.0.tgz#af4b049c8acd91ae81083ebd1e6f5cae2044c1b5" + integrity sha512-KXatOjCRXXkSePPb1Nbi0p0m+gQAwdlbhi4wQKJPI1HsMQS9g+Sqp2o+QHziPr7eYJyOZet836KoHEVM1mwOrQ== + dependencies: + p-timeout "^3.1.0" + +p-finally@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" + integrity sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow== + +p-timeout@^3.1.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/p-timeout/-/p-timeout-3.2.0.tgz#c7e17abc971d2a7962ef83626b35d635acf23dfe" + integrity sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg== + dependencies: + p-finally "^1.0.0" + +pako@~1.0.2: + version "1.0.11" + resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.11.tgz#6c9599d340d54dfd3946380252a35705a6b992bf" + integrity sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw== + +path-is-absolute@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" + integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== + +path-key@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" + integrity sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw== + +path-loader@^1.0.10: + version "1.0.12" + resolved "https://registry.yarnpkg.com/path-loader/-/path-loader-1.0.12.tgz#c5a99d464da27cfde5891d158a68807abbdfa5f5" + integrity sha512-n7oDG8B+k/p818uweWrOixY9/Dsr89o2TkCm6tOTex3fpdo2+BFDgR+KpB37mGKBRsBAlR8CIJMFN0OEy/7hIQ== + dependencies: + native-promise-only "^0.8.1" + superagent "^7.1.6" + +path-type@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" + integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== + +path2@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/path2/-/path2-0.1.0.tgz#639828942cdbda44a41a45b074ae8873483b4efa" + integrity sha512-TX+cz8Jk+ta7IvRy2FAej8rdlbrP0+uBIkP/5DTODez/AuL/vSb30KuAdDxGVREXzn8QfAiu5mJYJ1XjbOhEPA== + +peek-readable@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/peek-readable/-/peek-readable-4.1.0.tgz#4ece1111bf5c2ad8867c314c81356847e8a62e72" + integrity sha512-ZI3LnwUv5nOGbQzD9c2iDG6toheuXSZP5esSHBjopsXH4dg19soufvpUGA3uohi5anFtGb2lhAVdHzH6R/Evvg== + +pend@~1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/pend/-/pend-1.2.0.tgz#7a57eb550a6783f9115331fcf4663d5c8e007a50" + integrity sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg== + +picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.3.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" + integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== + +pify@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" + integrity sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog== + +pify@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176" + integrity sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg== + +pinkie-promise@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa" + integrity sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw== + dependencies: + pinkie "^2.0.0" + +pinkie@^2.0.0: + version "2.0.4" + resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870" + integrity sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg== + +process-nextick-args@~2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" + integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== + +process-utils@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/process-utils/-/process-utils-4.0.0.tgz#3e5b204e1d38e62fe39ef3144664a1fe94097b9e" + integrity sha512-fMyMQbKCxX51YxR7YGCzPjLsU3yDzXFkP4oi1/Mt5Ixnk7GO/7uUTj8mrCHUwuvozWzI+V7QSJR9cZYnwNOZPg== + dependencies: + ext "^1.4.0" + fs2 "^0.3.9" + memoizee "^0.4.14" + type "^2.1.0" + +promise-queue@^2.2.5: + version "2.2.5" + resolved "https://registry.yarnpkg.com/promise-queue/-/promise-queue-2.2.5.tgz#2f6f5f7c0f6d08109e967659c79b88a9ed5e93b4" + integrity sha512-p/iXrPSVfnqPft24ZdNNLECw/UrtLTpT3jpAAMzl/o5/rDsGCPo3/CQS2611flL6LkoEJ3oQZw7C8Q80ZISXRQ== + +prompt@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/prompt/-/prompt-1.3.0.tgz#b1f6d47cb1b6beed4f0660b470f5d3ec157ad7ce" + integrity sha512-ZkaRWtaLBZl7KKAKndKYUL8WqNT+cQHKRZnT4RYYms48jQkFw3rrBL+/N5K/KtdEveHkxs982MX2BkDKub2ZMg== + dependencies: + "@colors/colors" "1.5.0" + async "3.2.3" + read "1.0.x" + revalidator "0.1.x" + winston "2.x" + +pump@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" + integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww== + dependencies: + end-of-stream "^1.1.0" + once "^1.3.1" + +punycode@1.3.2: + version "1.3.2" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d" + integrity sha512-RofWgt/7fL5wP1Y7fxE7/EmTLzQVnB0ycyibJ0OOHIlJqTNzglYFxVwETOcIoJqJmpDXJ9xImDv+Fq34F/d4Dw== + +punycode@^2.1.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" + integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== + +qs@6.9.3: + version "6.9.3" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.9.3.tgz#bfadcd296c2d549f1dffa560619132c977f5008e" + integrity sha512-EbZYNarm6138UKKq46tdx08Yo/q9ZhFoAXAI1meAFd2GtbRDhbZY2WQSICskT0c5q99aFzLG1D4nvTk9tqfXIw== + +qs@^6.10.3: + version "6.11.0" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.11.0.tgz#fd0d963446f7a65e1367e01abd85429453f0c37a" + integrity sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q== + dependencies: + side-channel "^1.0.4" + +querystring@0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620" + integrity sha512-X/xY82scca2tau62i9mDyU9K+I+djTMUsvwf7xnUX5GLvVzgJybOJf4Y6o9Zx3oJK/LSXg5tTZBjwzqVPaPO2g== + +querystring@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.1.tgz#40d77615bb09d16902a85c3e38aa8b5ed761c2dd" + integrity sha512-wkvS7mL/JMugcup3/rMitHmd9ecIGd2lhFhK9N3UUQ450h66d1r3Y9nvXzQAW1Lq+wyx61k/1pfKS5KuKiyEbg== + +queue-microtask@^1.2.2: + version "1.2.3" + resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" + integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== + +quick-lru@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-5.1.1.tgz#366493e6b3e42a3a6885e2e99d18f80fb7a8c932" + integrity sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA== + +read@1.0.x: + version "1.0.7" + resolved "https://registry.yarnpkg.com/read/-/read-1.0.7.tgz#b3da19bd052431a97671d44a42634adf710b40c4" + integrity sha512-rSOKNYUmaxy0om1BNjMN4ezNT6VKK+2xF4GBhc81mkH7L60i6dp8qPYrkndNLT3QPphoII3maL9PVC9XmhHwVQ== + dependencies: + mute-stream "~0.0.4" + +readable-stream@^2.0.0, readable-stream@^2.0.5, readable-stream@^2.3.0, readable-stream@^2.3.5, readable-stream@~2.3.6: + version "2.3.7" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" + integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.3" + isarray "~1.0.0" + process-nextick-args "~2.0.0" + safe-buffer "~5.1.1" + string_decoder "~1.1.1" + util-deprecate "~1.0.1" + +readable-stream@^3.0.0, readable-stream@^3.1.1, readable-stream@^3.4.0, readable-stream@^3.6.0: + version "3.6.0" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198" + integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA== + dependencies: + inherits "^2.0.3" + string_decoder "^1.1.1" + util-deprecate "^1.0.1" + +readable-web-to-node-stream@^3.0.0: + version "3.0.2" + resolved "https://registry.yarnpkg.com/readable-web-to-node-stream/-/readable-web-to-node-stream-3.0.2.tgz#5d52bb5df7b54861fd48d015e93a2cb87b3ee0bb" + integrity sha512-ePeK6cc1EcKLEhJFt/AebMCLL+GgSKhuygrZ/GLaKZYEecIgIECf4UaUuaByiGtzckwR4ain9VzUh95T1exYGw== + dependencies: + readable-stream "^3.6.0" + +readdir-glob@^1.0.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/readdir-glob/-/readdir-glob-1.1.2.tgz#b185789b8e6a43491635b6953295c5c5e3fd224c" + integrity sha512-6RLVvwJtVwEDfPdn6X6Ille4/lxGl0ATOY4FN/B9nxQcgOazvvI0nodiD19ScKq0PvA/29VpaOQML36o5IzZWA== + dependencies: + minimatch "^5.1.0" + +readdirp@~3.6.0: + version "3.6.0" + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" + integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== + dependencies: + picomatch "^2.2.1" + +regexp.prototype.flags@^1.4.3: + version "1.4.3" + resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz#87cab30f80f66660181a3bb7bf5981a872b367ac" + integrity sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + functions-have-names "^1.2.2" + +require-from-string@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909" + integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw== + +resolve-alpn@^1.0.0: + version "1.2.1" + resolved "https://registry.yarnpkg.com/resolve-alpn/-/resolve-alpn-1.2.1.tgz#b7adbdac3546aaaec20b45e7d8265927072726f9" + integrity sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g== + +responselike@*: + version "3.0.0" + resolved "https://registry.yarnpkg.com/responselike/-/responselike-3.0.0.tgz#20decb6c298aff0dbee1c355ca95461d42823626" + integrity sha512-40yHxbNcl2+rzXvZuVkrYohathsSJlMTXKryG5y8uciHv1+xDLHQpgjG64JUO9nrEq2jGLH6IZ8BcZyw3wrweg== + dependencies: + lowercase-keys "^3.0.0" + +responselike@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/responselike/-/responselike-2.0.1.tgz#9a0bc8fdc252f3fb1cca68b016591059ba1422bc" + integrity sha512-4gl03wn3hj1HP3yzgdI7d3lCkF95F21Pz4BPGvKHinyQzALR5CapwC8yIi0Rh58DEMQ/SguC03wFj2k0M/mHhw== + dependencies: + lowercase-keys "^2.0.0" + +restore-cursor@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-3.1.0.tgz#39f67c54b3a7a58cea5236d95cf0034239631f7e" + integrity sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA== + dependencies: + onetime "^5.1.0" + signal-exit "^3.0.2" + +retry@0.13.1: + version "0.13.1" + resolved "https://registry.yarnpkg.com/retry/-/retry-0.13.1.tgz#185b1587acf67919d63b357349e03537b2484658" + integrity sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg== + +reusify@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" + integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== + +revalidator@0.1.x: + version "0.1.8" + resolved "https://registry.yarnpkg.com/revalidator/-/revalidator-0.1.8.tgz#fece61bfa0c1b52a206bd6b18198184bdd523a3b" + integrity sha512-xcBILK2pA9oh4SiinPEZfhP8HfrB/ha+a2fTMyl7Om2WjlDVrOQy99N2MXXlUHqGJz4qEu2duXxHJjDWuK/0xg== + +run-async@^2.4.0: + version "2.4.1" + resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.4.1.tgz#8440eccf99ea3e70bd409d49aab88e10c189a455" + integrity sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ== + +run-parallel-limit@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/run-parallel-limit/-/run-parallel-limit-1.1.0.tgz#be80e936f5768623a38a963262d6bef8ff11e7ba" + integrity sha512-jJA7irRNM91jaKc3Hcl1npHsFLOXOoTkPCUL1JEa1R82O2miplXXRaGdjW/KM/98YQWDhJLiSs793CnXfblJUw== + dependencies: + queue-microtask "^1.2.2" + +run-parallel@^1.1.9: + version "1.2.0" + resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" + integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== + dependencies: + queue-microtask "^1.2.2" + +rxjs@^7.5.5: + version "7.5.6" + resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-7.5.6.tgz#0446577557862afd6903517ce7cae79ecb9662bc" + integrity sha512-dnyv2/YsXhnm461G+R/Pe5bWP41Nm6LBXEYWI6eiFP4fiwx6WRI/CD0zbdVAudd9xwLEF2IDcKXLHit0FYjUzw== + dependencies: + tslib "^2.1.0" + +safe-buffer@5.2.1, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@~5.2.0: + version "5.2.1" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" + integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== + +safe-buffer@~5.1.0, safe-buffer@~5.1.1: + version "5.1.2" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" + integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== + +"safer-buffer@>= 2.1.2 < 3": + version "2.1.2" + resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" + integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== + +sax@1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.1.tgz#7b8e656190b228e81a66aea748480d828cd2d37a" + integrity sha512-8I2a3LovHTOpm7NV5yOyO8IHqgVsfK4+UuySrXU8YXkSRX7k6hCV9b3HrkKCr3nMpgj+0bmocaJJWpvp1oc7ZA== + +sax@>=0.6.0: + version "1.2.4" + resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" + integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== + +seek-bzip@^1.0.5: + version "1.0.6" + resolved "https://registry.yarnpkg.com/seek-bzip/-/seek-bzip-1.0.6.tgz#35c4171f55a680916b52a07859ecf3b5857f21c4" + integrity sha512-e1QtP3YL5tWww8uKaOCQ18UxIT2laNBXHjV/S2WYCiK4udiv8lkG89KRIoCjUagnAmCBurjF4zEVX2ByBbnCjQ== + dependencies: + commander "^2.8.1" + +semver@^5.5.0: + version "5.7.1" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" + integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== + +semver@^6.0.0: + version "6.3.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" + integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== + +semver@^7.3.5, semver@^7.3.7: + version "7.3.7" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.7.tgz#12c5b649afdbf9049707796e22a4028814ce523f" + integrity sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g== + dependencies: + lru-cache "^6.0.0" + +serverless@^3.20.0: + version "3.22.0" + resolved "https://registry.yarnpkg.com/serverless/-/serverless-3.22.0.tgz#b4dde8142ebd72ba08a8f264cc2b900ad3ecdbaf" + integrity sha512-S/C4jbTFW95AwAw2wSqQa28FCordHwj+sUt3SHPgLNq0ryWcagR03C7vvIEnunmb7Rj5uEIcvArmjuaYNYN0+w== + dependencies: + "@serverless/dashboard-plugin" "^6.2.2" + "@serverless/platform-client" "^4.3.2" + "@serverless/utils" "^6.7.0" + ajv "^8.11.0" + ajv-formats "^2.1.1" + archiver "^5.3.1" + aws-sdk "^2.1195.0" + bluebird "^3.7.2" + cachedir "^2.3.0" + chalk "^4.1.2" + child-process-ext "^2.1.1" + ci-info "^3.3.2" + cli-progress-footer "^2.3.2" + d "^1.0.1" + dayjs "^1.11.5" + decompress "^4.2.1" + dotenv "^10.0.0" + dotenv-expand "^5.1.0" + essentials "^1.2.0" + ext "^1.6.0" + fastest-levenshtein "^1.0.16" + filesize "^8.0.7" + fs-extra "^9.1.0" + get-stdin "^8.0.0" + globby "^11.1.0" + got "^11.8.5" + graceful-fs "^4.2.10" + https-proxy-agent "^5.0.1" + is-docker "^2.2.1" + js-yaml "^4.1.0" + json-cycle "^1.3.0" + json-refs "^3.0.15" + lodash "^4.17.21" + memoizee "^0.4.15" + micromatch "^4.0.5" + node-fetch "^2.6.7" + npm-registry-utilities "^1.0.0" + object-hash "^2.2.0" + open "^7.4.2" + path2 "^0.1.0" + process-utils "^4.0.0" + promise-queue "^2.2.5" + require-from-string "^2.0.2" + semver "^7.3.7" + signal-exit "^3.0.7" + strip-ansi "^6.0.1" + supports-color "^8.1.1" + tar "^6.1.11" + timers-ext "^0.1.7" + type "^2.7.2" + untildify "^4.0.0" + uuid "^8.3.2" + yaml-ast-parser "0.0.43" + +setimmediate@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" + integrity sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA== + +shebang-command@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" + integrity sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg== + dependencies: + shebang-regex "^1.0.0" + +shebang-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" + integrity sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ== + +side-channel@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.4.tgz#efce5c8fdc104ee751b25c58d4290011fa5ea2cf" + integrity sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw== + dependencies: + call-bind "^1.0.0" + get-intrinsic "^1.0.2" + object-inspect "^1.9.0" + +signal-exit@^3.0.2, signal-exit@^3.0.7: + version "3.0.7" + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" + integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== + +simple-git@^3.7.0: + version "3.14.0" + resolved "https://registry.yarnpkg.com/simple-git/-/simple-git-3.14.0.tgz#6b98b445635ea778e8af9baa299dca71ede896ec" + integrity sha512-Paad1BkrI7vWhImLybDRYOHnh3WPsHSKXJpmKM+iGjjKNV91XaOdd+yIdZ/gqdzncHDEKYff4k+74oNo1R+U8Q== + dependencies: + "@kwsites/file-exists" "^1.1.1" + "@kwsites/promise-deferred" "^1.1.1" + debug "^4.3.4" + +slash@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" + integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== + +sort-keys-length@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/sort-keys-length/-/sort-keys-length-1.0.1.tgz#9cb6f4f4e9e48155a6aa0671edd336ff1479a188" + integrity sha512-GRbEOUqCxemTAk/b32F2xa8wDTs+Z1QHOkbhJDQTvv/6G3ZkbJ+frYWsTcc7cBB3Fu4wy4XlLCuNtJuMn7Gsvw== + dependencies: + sort-keys "^1.0.0" + +sort-keys@^1.0.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/sort-keys/-/sort-keys-1.1.2.tgz#441b6d4d346798f1b4e49e8920adfba0e543f9ad" + integrity sha512-vzn8aSqKgytVik0iwdBEi+zevbTYZogewTUM6dtpmGwEcdzbub/TX4bCzRhebDCRC3QzXgJsLRKB2V/Oof7HXg== + dependencies: + is-plain-obj "^1.0.0" + +split2@^3.1.1: + version "3.2.2" + resolved "https://registry.yarnpkg.com/split2/-/split2-3.2.2.tgz#bf2cf2a37d838312c249c89206fd7a17dd12365f" + integrity sha512-9NThjpgZnifTkJpzTZ7Eue85S49QwpNhZTq6GRJwObb6jnLFNGB7Qm73V5HewTROPyxD0C29xqmaI68bQtV+hg== + dependencies: + readable-stream "^3.0.0" + +sprintf-js@~1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" + integrity sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g== + +sprintf-kit@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/sprintf-kit/-/sprintf-kit-2.0.1.tgz#bb837e8fa4b28f094531d8e33669120027236bb8" + integrity sha512-2PNlcs3j5JflQKcg4wpdqpZ+AjhQJ2OZEo34NXDtlB0tIPG84xaaXhpA8XFacFiwjKA4m49UOYG83y3hbMn/gQ== + dependencies: + es5-ext "^0.10.53" + +stack-trace@0.0.x: + version "0.0.10" + resolved "https://registry.yarnpkg.com/stack-trace/-/stack-trace-0.0.10.tgz#547c70b347e8d32b4e108ea1a2a159e5fdde19c0" + integrity sha512-KGzahc7puUKkzyMt+IqAep+TVNbKP+k2Lmwhub39m1AsTSkaDutx56aDCo+HLDzf/D26BIHTJWNiTG1KAJiQCg== + +stream-promise@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/stream-promise/-/stream-promise-3.2.0.tgz#bad976f2d0e1f11d56cc95cc11907cfd869a27ff" + integrity sha512-P+7muTGs2C8yRcgJw/PPt61q7O517tDHiwYEzMWo1GSBCcZedUMT/clz7vUNsSxFphIlJ6QUL4GexQKlfJoVtA== + dependencies: + "2-thenable" "^1.0.0" + es5-ext "^0.10.49" + is-stream "^1.1.0" + +string-width@^4.1.0: + version "4.2.3" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" + integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.1" + +string.prototype.trimend@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.5.tgz#914a65baaab25fbdd4ee291ca7dde57e869cb8d0" + integrity sha512-I7RGvmjV4pJ7O3kdf+LXFpVfdNOxtCW/2C8f6jNiW4+PQchwxkCDzlk1/7p+Wl4bqFIZeF47qAHXLuHHWKAxog== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.4" + es-abstract "^1.19.5" + +string.prototype.trimstart@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.5.tgz#5466d93ba58cfa2134839f81d7f42437e8c01fef" + integrity sha512-THx16TJCGlsN0o6dl2o6ncWUsdgnLRSA23rRE5pyGBw/mLr3Ej/R2LaqCtgP8VNMGZsvMWnf9ooZPyY2bHvUFg== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.4" + es-abstract "^1.19.5" + +string_decoder@^1.1.1: + version "1.3.0" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" + integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== + dependencies: + safe-buffer "~5.2.0" + +string_decoder@~1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" + integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== + dependencies: + safe-buffer "~5.1.0" + +strip-ansi@^6.0.0, strip-ansi@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" + integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== + dependencies: + ansi-regex "^5.0.1" + +strip-dirs@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/strip-dirs/-/strip-dirs-2.1.0.tgz#4987736264fc344cf20f6c34aca9d13d1d4ed6c5" + integrity sha512-JOCxOeKLm2CAS73y/U4ZeZPTkE+gNVCzKt7Eox84Iej1LT/2pTWYpZKJuxwQpvX1LiZb1xokNR7RLfuBAa7T3g== + dependencies: + is-natural-number "^4.0.1" + +strip-outer@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/strip-outer/-/strip-outer-1.0.1.tgz#b2fd2abf6604b9d1e6013057195df836b8a9d631" + integrity sha512-k55yxKHwaXnpYGsOzg4Vl8+tDrWylxDEpknGjhTiZB8dFRU5rTo9CAzeycivxV3s+zlTKwrs6WxMxR95n26kwg== + dependencies: + escape-string-regexp "^1.0.2" + +strtok3@^6.2.4: + version "6.3.0" + resolved "https://registry.yarnpkg.com/strtok3/-/strtok3-6.3.0.tgz#358b80ffe6d5d5620e19a073aa78ce947a90f9a0" + integrity sha512-fZtbhtvI9I48xDSywd/somNqgUHl2L2cstmXCCif0itOf96jeW18MBSyrLuNicYQVkvpOxkZtkzujiTJ9LW5Jw== + dependencies: + "@tokenizer/token" "^0.3.0" + peek-readable "^4.1.0" + +superagent@^7.1.6: + version "7.1.6" + resolved "https://registry.yarnpkg.com/superagent/-/superagent-7.1.6.tgz#64f303ed4e4aba1e9da319f134107a54cacdc9c6" + integrity sha512-gZkVCQR1gy/oUXr+kxJMLDjla434KmSOKbx5iGD30Ql+AkJQ/YlPKECJy2nhqOsHLjGHzoDTXNSjhnvWhzKk7g== + dependencies: + component-emitter "^1.3.0" + cookiejar "^2.1.3" + debug "^4.3.4" + fast-safe-stringify "^2.1.1" + form-data "^4.0.0" + formidable "^2.0.1" + methods "^1.1.2" + mime "2.6.0" + qs "^6.10.3" + readable-stream "^3.6.0" + semver "^7.3.7" + +supports-color@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-6.1.0.tgz#0764abc69c63d5ac842dd4867e8d025e880df8f3" + integrity sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ== + dependencies: + has-flag "^3.0.0" + +supports-color@^7.1.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" + integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== + dependencies: + has-flag "^4.0.0" + +supports-color@^8.1.1: + version "8.1.1" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c" + integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== + dependencies: + has-flag "^4.0.0" + +tar-stream@^1.5.2: + version "1.6.2" + resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-1.6.2.tgz#8ea55dab37972253d9a9af90fdcd559ae435c555" + integrity sha512-rzS0heiNf8Xn7/mpdSVVSMAWAoy9bfb1WOTYC78Z0UQKeKa/CWS8FOq0lKGNa8DWKAn9gxjCvMLYc5PGXYlK2A== + dependencies: + bl "^1.0.0" + buffer-alloc "^1.2.0" + end-of-stream "^1.0.0" + fs-constants "^1.0.0" + readable-stream "^2.3.0" + to-buffer "^1.1.1" + xtend "^4.0.0" + +tar-stream@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-2.2.0.tgz#acad84c284136b060dc3faa64474aa9aebd77287" + integrity sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ== + dependencies: + bl "^4.0.3" + end-of-stream "^1.4.1" + fs-constants "^1.0.0" + inherits "^2.0.3" + readable-stream "^3.1.1" + +tar@^6.1.11: + version "6.1.11" + resolved "https://registry.yarnpkg.com/tar/-/tar-6.1.11.tgz#6760a38f003afa1b2ffd0ffe9e9abbd0eab3d621" + integrity sha512-an/KZQzQUkZCkuoAA64hM92X0Urb6VpRhAFllDzz44U2mcD5scmT3zBc4VgVpkugF580+DQn8eAFSyoQt0tznA== + dependencies: + chownr "^2.0.0" + fs-minipass "^2.0.0" + minipass "^3.0.0" + minizlib "^2.1.1" + mkdirp "^1.0.3" + yallist "^4.0.0" + +throat@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/throat/-/throat-5.0.0.tgz#c5199235803aad18754a667d659b5e72ce16764b" + integrity sha512-fcwX4mndzpLQKBS1DVYhGAcYaYt7vsHNIvQV+WXMvnow5cgjPphq5CaayLaGsjRdSCKZFNGt7/GYAuXaNOiYCA== + +through@^2.3.6, through@^2.3.8: + version "2.3.8" + resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" + integrity sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg== + +timers-ext@^0.1.7: + version "0.1.7" + resolved "https://registry.yarnpkg.com/timers-ext/-/timers-ext-0.1.7.tgz#6f57ad8578e07a3fb9f91d9387d65647555e25c6" + integrity sha512-b85NUNzTSdodShTIbky6ZF02e8STtVVfD+fu4aXXShEELpozH+bCpJLYMPZbsABN2wDH7fJpqIoXxJpzbf0NqQ== + dependencies: + es5-ext "~0.10.46" + next-tick "1" + +tmp@^0.0.33: + version "0.0.33" + resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" + integrity sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw== + dependencies: + os-tmpdir "~1.0.2" + +to-buffer@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/to-buffer/-/to-buffer-1.1.1.tgz#493bd48f62d7c43fcded313a03dcadb2e1213a80" + integrity sha512-lx9B5iv7msuFYE3dytT+KE5tap+rNYw+K4jVkb9R/asAb+pbBSM17jtunHplhBe6RRJdZx3Pn2Jph24O32mOVg== + +to-regex-range@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" + integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== + dependencies: + is-number "^7.0.0" + +token-types@^4.1.1: + version "4.2.1" + resolved "https://registry.yarnpkg.com/token-types/-/token-types-4.2.1.tgz#0f897f03665846982806e138977dbe72d44df753" + integrity sha512-6udB24Q737UD/SDsKAHI9FCRP7Bqc9D/MQUV02ORQg5iskjtLJlZJNdN4kKtcdtwCeWIwIHDGaUsTsCCAa8sFQ== + dependencies: + "@tokenizer/token" "^0.3.0" + ieee754 "^1.2.1" + +tr46@~0.0.3: + version "0.0.3" + resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" + integrity sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw== + +traverse@^0.6.6: + version "0.6.6" + resolved "https://registry.yarnpkg.com/traverse/-/traverse-0.6.6.tgz#cbdf560fd7b9af632502fed40f918c157ea97137" + integrity sha512-kdf4JKs8lbARxWdp7RKdNzoJBhGUcIalSYibuGyHJbmk40pOysQ0+QPvlkCOICOivDWU2IJo2rkrxyTK2AH4fw== + +trim-repeated@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/trim-repeated/-/trim-repeated-1.0.0.tgz#e3646a2ea4e891312bf7eace6cfb05380bc01c21" + integrity sha512-pkonvlKk8/ZuR0D5tLW8ljt5I8kmxp2XKymhepUeOdCEfKpZaktSArkLHZt76OB1ZvO9bssUsDty4SWhLvZpLg== + dependencies: + escape-string-regexp "^1.0.2" + +tslib@^2.1.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.4.0.tgz#7cecaa7f073ce680a05847aa77be941098f36dc3" + integrity sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ== + +type-fest@^0.21.3: + version "0.21.3" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.21.3.tgz#d260a24b0198436e133fa26a524a6d65fa3b2e37" + integrity sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w== + +type@^1.0.1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/type/-/type-1.2.0.tgz#848dd7698dafa3e54a6c479e759c4bc3f18847a0" + integrity sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg== + +type@^2.1.0, type@^2.5.0, type@^2.6.0, type@^2.7.2: + version "2.7.2" + resolved "https://registry.yarnpkg.com/type/-/type-2.7.2.tgz#2376a15a3a28b1efa0f5350dcf72d24df6ef98d0" + integrity sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw== + +unbox-primitive@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/unbox-primitive/-/unbox-primitive-1.0.2.tgz#29032021057d5e6cdbd08c5129c226dff8ed6f9e" + integrity sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw== + dependencies: + call-bind "^1.0.2" + has-bigints "^1.0.2" + has-symbols "^1.0.3" + which-boxed-primitive "^1.0.2" + +unbzip2-stream@^1.0.9: + version "1.4.3" + resolved "https://registry.yarnpkg.com/unbzip2-stream/-/unbzip2-stream-1.4.3.tgz#b0da04c4371311df771cdc215e87f2130991ace7" + integrity sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg== + dependencies: + buffer "^5.2.1" + through "^2.3.8" + +unfetch@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/unfetch/-/unfetch-4.2.0.tgz#7e21b0ef7d363d8d9af0fb929a5555f6ef97a3be" + integrity sha512-F9p7yYCn6cIW9El1zi0HI6vqpeIvBsr3dSuRO6Xuppb1u5rXpCPmMvLSyECLhybr9isec8Ohl0hPekMVrEinDA== + +uni-global@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/uni-global/-/uni-global-1.0.0.tgz#3583c449e87a2d9dc270ea221410a649bcdad040" + integrity sha512-WWM3HP+siTxzIWPNUg7hZ4XO8clKi6NoCAJJWnuRL+BAqyFXF8gC03WNyTefGoUXYc47uYgXxpKLIEvo65PEHw== + dependencies: + type "^2.5.0" + +universalify@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.0.tgz#75a4984efedc4b08975c5aeb73f530d02df25717" + integrity sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ== + +untildify@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/untildify/-/untildify-4.0.0.tgz#2bc947b953652487e4600949fb091e3ae8cd919b" + integrity sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw== + +uri-js@^4.2.2: + version "4.4.1" + resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" + integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== + dependencies: + punycode "^2.1.0" + +url@0.10.3: + version "0.10.3" + resolved "https://registry.yarnpkg.com/url/-/url-0.10.3.tgz#021e4d9c7705f21bbf37d03ceb58767402774c64" + integrity sha512-hzSUW2q06EqL1gKM/a+obYHLIO6ct2hwPuviqTTOcfFVc61UbfJ2Q32+uGL/HCPxKqrdGB5QUwIe7UqlDgwsOQ== + dependencies: + punycode "1.3.2" + querystring "0.2.0" + +util-deprecate@^1.0.1, util-deprecate@~1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" + integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== + +util@^0.12.4: + version "0.12.4" + resolved "https://registry.yarnpkg.com/util/-/util-0.12.4.tgz#66121a31420df8f01ca0c464be15dfa1d1850253" + integrity sha512-bxZ9qtSlGUWSOy9Qa9Xgk11kSslpuZwaxCg4sNIDj6FLucDab2JxnHwyNTCpHMtK1MjoQiWQ6DiUMZYbSrO+Sw== + dependencies: + inherits "^2.0.3" + is-arguments "^1.0.4" + is-generator-function "^1.0.7" + is-typed-array "^1.1.3" + safe-buffer "^5.1.2" + which-typed-array "^1.1.2" + +uuid@8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.0.0.tgz#bc6ccf91b5ff0ac07bbcdbf1c7c4e150db4dbb6c" + integrity sha512-jOXGuXZAWdsTH7eZLtyXMqUb9EcWMGZNbL9YcGBJl4MH4nrxHmZJhEHvyLFrkxo+28uLb/NYRcStH48fnD0Vzw== + +uuid@^8.3.2: + version "8.3.2" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" + integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== + +validate-npm-package-name@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/validate-npm-package-name/-/validate-npm-package-name-3.0.0.tgz#5fa912d81eb7d0c74afc140de7317f0ca7df437e" + integrity sha512-M6w37eVCMMouJ9V/sdPGnC5H4uDr73/+xdq0FBLO3TFFX1+7wiUY6Es328NN+y43tmY+doUdN9g9J21vqB7iLw== + dependencies: + builtins "^1.0.3" + +wcwidth@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/wcwidth/-/wcwidth-1.0.1.tgz#f0b0dcf915bc5ff1528afadb2c0e17b532da2fe8" + integrity sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg== + dependencies: + defaults "^1.0.3" + +webidl-conversions@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" + integrity sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ== + +whatwg-url@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d" + integrity sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw== + dependencies: + tr46 "~0.0.3" + webidl-conversions "^3.0.0" + +which-boxed-primitive@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz#13757bc89b209b049fe5d86430e21cf40a89a8e6" + integrity sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg== + dependencies: + is-bigint "^1.0.1" + is-boolean-object "^1.1.0" + is-number-object "^1.0.4" + is-string "^1.0.5" + is-symbol "^1.0.3" + +which-typed-array@^1.1.2: + version "1.1.8" + resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.8.tgz#0cfd53401a6f334d90ed1125754a42ed663eb01f" + integrity sha512-Jn4e5PItbcAHyLoRDwvPj1ypu27DJbtdYXUa5zsinrUx77Uvfb0cXwwnGMTn7cjUfhhqgVQnVJCwF+7cgU7tpw== + dependencies: + available-typed-arrays "^1.0.5" + call-bind "^1.0.2" + es-abstract "^1.20.0" + for-each "^0.3.3" + has-tostringtag "^1.0.0" + is-typed-array "^1.1.9" + +which@^1.2.9: + version "1.3.1" + resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" + integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== + dependencies: + isexe "^2.0.0" + +winston@2.x: + version "2.4.6" + resolved "https://registry.yarnpkg.com/winston/-/winston-2.4.6.tgz#da616f332928f70aac482f59b43d62228f29e478" + integrity sha512-J5Zu4p0tojLde8mIOyDSsmLmcP8I3Z6wtwpTDHx1+hGcdhxcJaAmG4CFtagkb+NiN1M9Ek4b42pzMWqfc9jm8w== + dependencies: + async "^3.2.3" + colors "1.0.x" + cycle "1.0.x" + eyes "0.1.x" + isstream "0.1.x" + stack-trace "0.0.x" + +wrap-ansi@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" + integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + +wrappy@1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" + integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== + +write-file-atomic@^4.0.1: + version "4.0.2" + resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-4.0.2.tgz#a9df01ae5b77858a027fd2e80768ee433555fcfd" + integrity sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg== + dependencies: + imurmurhash "^0.1.4" + signal-exit "^3.0.7" + +ws@^7.5.3: + version "7.5.9" + resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.9.tgz#54fa7db29f4c7cec68b1ddd3a89de099942bb591" + integrity sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q== + +xml2js@0.4.19: + version "0.4.19" + resolved "https://registry.yarnpkg.com/xml2js/-/xml2js-0.4.19.tgz#686c20f213209e94abf0d1bcf1efaa291c7827a7" + integrity sha512-esZnJZJOiJR9wWKMyuvSE1y6Dq5LCuJanqhxslH2bxM6duahNZ+HMpCLhBQGZkbX6xRf8x1Y2eJlgt2q3qo49Q== + dependencies: + sax ">=0.6.0" + xmlbuilder "~9.0.1" + +xmlbuilder@~9.0.1: + version "9.0.7" + resolved "https://registry.yarnpkg.com/xmlbuilder/-/xmlbuilder-9.0.7.tgz#132ee63d2ec5565c557e20f4c22df9aca686b10d" + integrity sha512-7YXTQc3P2l9+0rjaUbLwMKRhtmwg1M1eDf6nag7urC7pIPYLD9W/jmzQ4ptRSUbodw5S0jfoGTflLemQibSpeQ== + +xtend@^4.0.0: + version "4.0.2" + resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" + integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== + +yallist@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" + integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== + +yaml-ast-parser@0.0.43: + version "0.0.43" + resolved "https://registry.yarnpkg.com/yaml-ast-parser/-/yaml-ast-parser-0.0.43.tgz#e8a23e6fb4c38076ab92995c5dca33f3d3d7c9bb" + integrity sha512-2PTINUwsRqSd+s8XxKaJWQlUuEMHJQyEuh2edBbW8KNJz0SJPwUSD2zRWqezFEdN7IzAgeuYHFUCF7o8zRdZ0A== + +yamljs@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/yamljs/-/yamljs-0.3.0.tgz#dc060bf267447b39f7304e9b2bfbe8b5a7ddb03b" + integrity sha512-C/FsVVhht4iPQYXOInoxUM/1ELSf9EsgKH34FofQOp6hwCPrW4vG4w5++TED3xRUo8gD7l0P1J1dLlDYzODsTQ== + dependencies: + argparse "^1.0.7" + glob "^7.0.5" + +yauzl@^2.4.2: + version "2.10.0" + resolved "https://registry.yarnpkg.com/yauzl/-/yauzl-2.10.0.tgz#c7eb17c93e112cb1086fa6d8e51fb0667b79a5f9" + integrity sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g== + dependencies: + buffer-crc32 "~0.2.3" + fd-slicer "~1.1.0" + +zip-stream@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/zip-stream/-/zip-stream-4.1.0.tgz#51dd326571544e36aa3f756430b313576dc8fc79" + integrity sha512-zshzwQW7gG7hjpBlgeQP9RuyPGNxvJdzR8SUM3QhxCnLjWN2E7j3dOvpeDcQoETfHx0urRS7EtmVToql7YpU4A== + dependencies: + archiver-utils "^2.1.0" + compress-commons "^4.1.0" + readable-stream "^3.6.0" diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 0000000..4efa1c4 --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,14 @@ +{ + "extends": "code-style/tsconfig.json", + "compilerOptions": { + "declaration": true, + "outDir": "./lib", + "rootDir": "./src", + "skipLibCheck": true, + "sourceMap": false, + "resolveJsonModule": true + }, + "include": ["./src"], + "exclude": ["./src/types", "node_modules"] + } + \ No newline at end of file diff --git a/yarn.lock b/yarn.lock new file mode 100644 index 0000000..11bdcb9 --- /dev/null +++ b/yarn.lock @@ -0,0 +1,2755 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +"@adobe/helix-log@6.0.0": + version "6.0.0" + resolved "https://registry.yarnpkg.com/@adobe/helix-log/-/helix-log-6.0.0.tgz#1aea2ff6f4894f49007c08478adec6f127de5c58" + integrity sha512-+9gpf49sFDmZLV3gtjY+RmEUistqYJdVWpiqlRYpxE59x5bHFzYf93dZ7fljSTBtZdVq8lm97HxrTUloh5HvRg== + dependencies: + big.js "^6.1.1" + colorette "^2.0.2" + ferrum "^1.9.3" + phin "^3.6.0" + polka "^0.5.2" + +"@adobe/jsonschema2md@^7.1.1": + version "7.1.5" + resolved "https://registry.yarnpkg.com/@adobe/jsonschema2md/-/jsonschema2md-7.1.5.tgz#2dc0fba47801490e588486506df495a31075552a" + integrity sha512-uybF3Ryn0xz5lzGz6sb6Th5nkX9H60zOnKVYCUXunUtWENGb7Ut+8CYPzPA9sjY8+gLK8pQq3rbmsKprcjkN0A== + dependencies: + "@adobe/helix-log" "6.0.0" + "@types/json-schema" "^7.0.8" + "@types/mdast" "^3.0.4" + es2015-i18n-tag "1.6.1" + ferrum "1.9.4" + fs-extra "11.1.0" + github-slugger "2.0.0" + js-yaml "4.1.0" + json-schema "^0.4.0" + mdast-builder "1.1.1" + mdast-util-to-string "3.1.0" + readdirp "3.6.0" + remark-gfm "^3.0.0" + remark-parse "10.0.1" + remark-stringify "10.0.2" + unified "10.1.2" + unist-util-inspect "7.0.1" + yargs "17.6.2" + +"@arr/every@^1.0.0": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@arr/every/-/every-1.0.1.tgz#22fe1f8e6355beca6c7c7bde965eb15cf994387b" + integrity sha512-UQFQ6SgyJ6LX42W8rHCs8KVc0JS0tzVL9ct4XYedJukskYVWTo49tNiMEK9C2HTyarbNiT/RVIRSY82vH+6sTg== + +"@aws-crypto/sha256-js@1.2.2": + version "1.2.2" + resolved "https://registry.yarnpkg.com/@aws-crypto/sha256-js/-/sha256-js-1.2.2.tgz#02acd1a1fda92896fc5a28ec7c6e164644ea32fc" + integrity sha512-Nr1QJIbW/afYYGzYvrF70LtaHrIRtd4TNAglX8BvlfxJLZ45SAmueIKYl5tWoNBPzp65ymXGFK0Bb1vZUpuc9g== + dependencies: + "@aws-crypto/util" "^1.2.2" + "@aws-sdk/types" "^3.1.0" + tslib "^1.11.1" + +"@aws-crypto/util@^1.2.2": + version "1.2.2" + resolved "https://registry.yarnpkg.com/@aws-crypto/util/-/util-1.2.2.tgz#b28f7897730eb6538b21c18bd4de22d0ea09003c" + integrity sha512-H8PjG5WJ4wz0UXAFXeJjWCW1vkvIJ3qUUD+rGRwJ2/hj+xT58Qle2MTql/2MGzkU+1JLAFuR6aJpLAjHwhmwwg== + dependencies: + "@aws-sdk/types" "^3.1.0" + "@aws-sdk/util-utf8-browser" "^3.0.0" + tslib "^1.11.1" + +"@aws-sdk/types@^3.1.0": + version "3.338.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/types/-/types-3.338.0.tgz#2b14c063f3be09d2465fe23fd2554ce2287fbeca" + integrity sha512-hrNK15o+EObLrl9oWOyxJN2dwjgbdBMGolLEVP/wR/+M9ojHgk/x1kMsCVcV82a8Vgdtqx1TyOC3UugUPT0+NA== + dependencies: + tslib "^2.5.0" + +"@aws-sdk/util-utf8-browser@^3.0.0": + version "3.259.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-utf8-browser/-/util-utf8-browser-3.259.0.tgz#3275a6f5eb334f96ca76635b961d3c50259fd9ff" + integrity sha512-UvFa/vR+e19XookZF8RzFZBrw2EUkQWxiBW0yYQAhvk3C+QVGl0H3ouca8LDBlBfQKXwmW3huo/59H8rwb1wJw== + dependencies: + tslib "^2.3.1" + +"@colors/colors@1.5.0": + version "1.5.0" + resolved "https://registry.yarnpkg.com/@colors/colors/-/colors-1.5.0.tgz#bb504579c1cae923e6576a4f5da43d25f97bdbd9" + integrity sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ== + +"@eslint-community/eslint-utils@^4.2.0": + version "4.4.0" + resolved "https://registry.yarnpkg.com/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz#a23514e8fb9af1269d5f7788aa556798d61c6b59" + integrity sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA== + dependencies: + eslint-visitor-keys "^3.3.0" + +"@eslint-community/regexpp@^4.4.0": + version "4.5.1" + resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.5.1.tgz#cdd35dce4fa1a89a4fd42b1599eb35b3af408884" + integrity sha512-Z5ba73P98O1KUYCCJTUeVpja9RcGoMdncZ6T49FCUl2lN38JtCJ+3WgIDBv0AuY4WChU5PmtJmOCTlN6FZTFKQ== + +"@eslint/eslintrc@^2.0.3": + version "2.0.3" + resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-2.0.3.tgz#4910db5505f4d503f27774bf356e3704818a0331" + integrity sha512-+5gy6OQfk+xx3q0d6jGZZC3f3KzAkXc/IanVxd1is/VIIziRqqt3ongQz0FiTUXqTk0c7aDB3OaFuKnuSoJicQ== + dependencies: + ajv "^6.12.4" + debug "^4.3.2" + espree "^9.5.2" + globals "^13.19.0" + ignore "^5.2.0" + import-fresh "^3.2.1" + js-yaml "^4.1.0" + minimatch "^3.1.2" + strip-json-comments "^3.1.1" + +"@eslint/js@8.41.0": + version "8.41.0" + resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.41.0.tgz#080321c3b68253522f7646b55b577dd99d2950b3" + integrity sha512-LxcyMGxwmTh2lY9FwHPGWOHmYFCZvbrFCBZL4FzSSsxsRPuhrYUg/49/0KDfW8tnIEaEHtfmn6+NPN+1DqaNmA== + +"@ethersproject/abi@5.7.0", "@ethersproject/abi@^5.6.3", "@ethersproject/abi@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/abi/-/abi-5.7.0.tgz#b3f3e045bbbeed1af3947335c247ad625a44e449" + integrity sha512-351ktp42TiRcYB3H1OP8yajPeAQstMW/yCFokj/AthP9bLHzQFPlOrxOcwYEDkUAICmOHljvN4K39OMTMUa9RA== + dependencies: + "@ethersproject/address" "^5.7.0" + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/constants" "^5.7.0" + "@ethersproject/hash" "^5.7.0" + "@ethersproject/keccak256" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/strings" "^5.7.0" + +"@ethersproject/abstract-provider@5.7.0", "@ethersproject/abstract-provider@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/abstract-provider/-/abstract-provider-5.7.0.tgz#b0a8550f88b6bf9d51f90e4795d48294630cb9ef" + integrity sha512-R41c9UkchKCpAqStMYUpdunjo3pkEvZC3FAwZn5S5MGbXoMQOHIdHItezTETxAO5bevtMApSyEhn9+CHcDsWBw== + dependencies: + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/networks" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/transactions" "^5.7.0" + "@ethersproject/web" "^5.7.0" + +"@ethersproject/abstract-signer@5.7.0", "@ethersproject/abstract-signer@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/abstract-signer/-/abstract-signer-5.7.0.tgz#13f4f32117868452191a4649723cb086d2b596b2" + integrity sha512-a16V8bq1/Cz+TGCkE2OPMTOUDLS3grCpdjoJCYNnVBbdYEMSgKrU0+B90s8b6H+ByYTBZN7a3g76jdIJi7UfKQ== + dependencies: + "@ethersproject/abstract-provider" "^5.7.0" + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + +"@ethersproject/address@5.7.0", "@ethersproject/address@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/address/-/address-5.7.0.tgz#19b56c4d74a3b0a46bfdbb6cfcc0a153fc697f37" + integrity sha512-9wYhYt7aghVGo758POM5nqcOMaE168Q6aRLJZwUmiqSrAungkG74gSSeKEIR7ukixesdRZGPgVqme6vmxs1fkA== + dependencies: + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/keccak256" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/rlp" "^5.7.0" + +"@ethersproject/base64@5.7.0", "@ethersproject/base64@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/base64/-/base64-5.7.0.tgz#ac4ee92aa36c1628173e221d0d01f53692059e1c" + integrity sha512-Dr8tcHt2mEbsZr/mwTPIQAf3Ai0Bks/7gTw9dSqk1mQvhW3XvRlmDJr/4n+wg1JmCl16NZue17CDh8xb/vZ0sQ== + dependencies: + "@ethersproject/bytes" "^5.7.0" + +"@ethersproject/basex@5.7.0", "@ethersproject/basex@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/basex/-/basex-5.7.0.tgz#97034dc7e8938a8ca943ab20f8a5e492ece4020b" + integrity sha512-ywlh43GwZLv2Voc2gQVTKBoVQ1mti3d8HK5aMxsfu/nRDnMmNqaSJ3r3n85HBByT8OpoY96SXM1FogC533T4zw== + dependencies: + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + +"@ethersproject/bignumber@5.7.0", "@ethersproject/bignumber@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/bignumber/-/bignumber-5.7.0.tgz#e2f03837f268ba655ffba03a57853e18a18dc9c2" + integrity sha512-n1CAdIHRWjSucQO3MC1zPSVgV/6dy/fjL9pMrPP9peL+QxEg9wOsVqwD4+818B6LUEtaXzVHQiuivzRoxPxUGw== + dependencies: + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + bn.js "^5.2.1" + +"@ethersproject/bytes@5.7.0", "@ethersproject/bytes@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/bytes/-/bytes-5.7.0.tgz#a00f6ea8d7e7534d6d87f47188af1148d71f155d" + integrity sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A== + dependencies: + "@ethersproject/logger" "^5.7.0" + +"@ethersproject/constants@5.7.0", "@ethersproject/constants@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/constants/-/constants-5.7.0.tgz#df80a9705a7e08984161f09014ea012d1c75295e" + integrity sha512-DHI+y5dBNvkpYUMiRQyxRBYBefZkJfo70VUkUAsRjcPs47muV9evftfZ0PJVCXYbAiCgght0DtcF9srFQmIgWA== + dependencies: + "@ethersproject/bignumber" "^5.7.0" + +"@ethersproject/contracts@5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/contracts/-/contracts-5.7.0.tgz#c305e775abd07e48aa590e1a877ed5c316f8bd1e" + integrity sha512-5GJbzEU3X+d33CdfPhcyS+z8MzsTrBGk/sc+G+59+tPa9yFkl6HQ9D6L0QMgNTA9q8dT0XKxxkyp883XsQvbbg== + dependencies: + "@ethersproject/abi" "^5.7.0" + "@ethersproject/abstract-provider" "^5.7.0" + "@ethersproject/abstract-signer" "^5.7.0" + "@ethersproject/address" "^5.7.0" + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/constants" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/transactions" "^5.7.0" + +"@ethersproject/hash@5.7.0", "@ethersproject/hash@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/hash/-/hash-5.7.0.tgz#eb7aca84a588508369562e16e514b539ba5240a7" + integrity sha512-qX5WrQfnah1EFnO5zJv1v46a8HW0+E5xuBBDTwMFZLuVTx0tbU2kkx15NqdjxecrLGatQN9FGQKpb1FKdHCt+g== + dependencies: + "@ethersproject/abstract-signer" "^5.7.0" + "@ethersproject/address" "^5.7.0" + "@ethersproject/base64" "^5.7.0" + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/keccak256" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/strings" "^5.7.0" + +"@ethersproject/hdnode@5.7.0", "@ethersproject/hdnode@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/hdnode/-/hdnode-5.7.0.tgz#e627ddc6b466bc77aebf1a6b9e47405ca5aef9cf" + integrity sha512-OmyYo9EENBPPf4ERhR7oj6uAtUAhYGqOnIS+jE5pTXvdKBS99ikzq1E7Iv0ZQZ5V36Lqx1qZLeak0Ra16qpeOg== + dependencies: + "@ethersproject/abstract-signer" "^5.7.0" + "@ethersproject/basex" "^5.7.0" + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/pbkdf2" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/sha2" "^5.7.0" + "@ethersproject/signing-key" "^5.7.0" + "@ethersproject/strings" "^5.7.0" + "@ethersproject/transactions" "^5.7.0" + "@ethersproject/wordlists" "^5.7.0" + +"@ethersproject/json-wallets@5.7.0", "@ethersproject/json-wallets@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/json-wallets/-/json-wallets-5.7.0.tgz#5e3355287b548c32b368d91014919ebebddd5360" + integrity sha512-8oee5Xgu6+RKgJTkvEMl2wDgSPSAQ9MB/3JYjFV9jlKvcYHUXZC+cQp0njgmxdHkYWn8s6/IqIZYm0YWCjO/0g== + dependencies: + "@ethersproject/abstract-signer" "^5.7.0" + "@ethersproject/address" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/hdnode" "^5.7.0" + "@ethersproject/keccak256" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/pbkdf2" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/random" "^5.7.0" + "@ethersproject/strings" "^5.7.0" + "@ethersproject/transactions" "^5.7.0" + aes-js "3.0.0" + scrypt-js "3.0.1" + +"@ethersproject/keccak256@5.7.0", "@ethersproject/keccak256@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/keccak256/-/keccak256-5.7.0.tgz#3186350c6e1cd6aba7940384ec7d6d9db01f335a" + integrity sha512-2UcPboeL/iW+pSg6vZ6ydF8tCnv3Iu/8tUmLLzWWGzxWKFFqOBQFLo6uLUv6BDrLgCDfN28RJ/wtByx+jZ4KBg== + dependencies: + "@ethersproject/bytes" "^5.7.0" + js-sha3 "0.8.0" + +"@ethersproject/logger@5.7.0", "@ethersproject/logger@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/logger/-/logger-5.7.0.tgz#6ce9ae168e74fecf287be17062b590852c311892" + integrity sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig== + +"@ethersproject/networks@5.7.1", "@ethersproject/networks@^5.7.0": + version "5.7.1" + resolved "https://registry.yarnpkg.com/@ethersproject/networks/-/networks-5.7.1.tgz#118e1a981d757d45ccea6bb58d9fd3d9db14ead6" + integrity sha512-n/MufjFYv3yFcUyfhnXotyDlNdFb7onmkSy8aQERi2PjNcnWQ66xXxa3XlS8nCcA8aJKJjIIMNJTC7tu80GwpQ== + dependencies: + "@ethersproject/logger" "^5.7.0" + +"@ethersproject/pbkdf2@5.7.0", "@ethersproject/pbkdf2@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/pbkdf2/-/pbkdf2-5.7.0.tgz#d2267d0a1f6e123f3771007338c47cccd83d3102" + integrity sha512-oR/dBRZR6GTyaofd86DehG72hY6NpAjhabkhxgr3X2FpJtJuodEl2auADWBZfhDHgVCbu3/H/Ocq2uC6dpNjjw== + dependencies: + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/sha2" "^5.7.0" + +"@ethersproject/properties@5.7.0", "@ethersproject/properties@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/properties/-/properties-5.7.0.tgz#a6e12cb0439b878aaf470f1902a176033067ed30" + integrity sha512-J87jy8suntrAkIZtecpxEPxY//szqr1mlBaYlQ0r4RCaiD2hjheqF9s1LVE8vVuJCXisjIP+JgtK/Do54ej4Sw== + dependencies: + "@ethersproject/logger" "^5.7.0" + +"@ethersproject/providers@5.7.2": + version "5.7.2" + resolved "https://registry.yarnpkg.com/@ethersproject/providers/-/providers-5.7.2.tgz#f8b1a4f275d7ce58cf0a2eec222269a08beb18cb" + integrity sha512-g34EWZ1WWAVgr4aptGlVBF8mhl3VWjv+8hoAnzStu8Ah22VHBsuGzP17eb6xDVRzw895G4W7vvx60lFFur/1Rg== + dependencies: + "@ethersproject/abstract-provider" "^5.7.0" + "@ethersproject/abstract-signer" "^5.7.0" + "@ethersproject/address" "^5.7.0" + "@ethersproject/base64" "^5.7.0" + "@ethersproject/basex" "^5.7.0" + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/constants" "^5.7.0" + "@ethersproject/hash" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/networks" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/random" "^5.7.0" + "@ethersproject/rlp" "^5.7.0" + "@ethersproject/sha2" "^5.7.0" + "@ethersproject/strings" "^5.7.0" + "@ethersproject/transactions" "^5.7.0" + "@ethersproject/web" "^5.7.0" + bech32 "1.1.4" + ws "7.4.6" + +"@ethersproject/random@5.7.0", "@ethersproject/random@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/random/-/random-5.7.0.tgz#af19dcbc2484aae078bb03656ec05df66253280c" + integrity sha512-19WjScqRA8IIeWclFme75VMXSBvi4e6InrUNuaR4s5pTF2qNhcGdCUwdxUVGtDDqC00sDLCO93jPQoDUH4HVmQ== + dependencies: + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + +"@ethersproject/rlp@5.7.0", "@ethersproject/rlp@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/rlp/-/rlp-5.7.0.tgz#de39e4d5918b9d74d46de93af80b7685a9c21304" + integrity sha512-rBxzX2vK8mVF7b0Tol44t5Tb8gomOHkj5guL+HhzQ1yBh/ydjGnpw6at+X6Iw0Kp3OzzzkcKp8N9r0W4kYSs9w== + dependencies: + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + +"@ethersproject/sha2@5.7.0", "@ethersproject/sha2@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/sha2/-/sha2-5.7.0.tgz#9a5f7a7824ef784f7f7680984e593a800480c9fb" + integrity sha512-gKlH42riwb3KYp0reLsFTokByAKoJdgFCwI+CCiX/k+Jm2mbNs6oOaCjYQSlI1+XBVejwH2KrmCbMAT/GnRDQw== + dependencies: + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + hash.js "1.1.7" + +"@ethersproject/signing-key@5.7.0", "@ethersproject/signing-key@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/signing-key/-/signing-key-5.7.0.tgz#06b2df39411b00bc57c7c09b01d1e41cf1b16ab3" + integrity sha512-MZdy2nL3wO0u7gkB4nA/pEf8lu1TlFswPNmy8AiYkfKTdO6eXBJyUdmHO/ehm/htHw9K/qF8ujnTyUAD+Ry54Q== + dependencies: + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + bn.js "^5.2.1" + elliptic "6.5.4" + hash.js "1.1.7" + +"@ethersproject/solidity@5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/solidity/-/solidity-5.7.0.tgz#5e9c911d8a2acce2a5ebb48a5e2e0af20b631cb8" + integrity sha512-HmabMd2Dt/raavyaGukF4XxizWKhKQ24DoLtdNbBmNKUOPqwjsKQSdV9GQtj9CBEea9DlzETlVER1gYeXXBGaA== + dependencies: + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/keccak256" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/sha2" "^5.7.0" + "@ethersproject/strings" "^5.7.0" + +"@ethersproject/strings@5.7.0", "@ethersproject/strings@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/strings/-/strings-5.7.0.tgz#54c9d2a7c57ae8f1205c88a9d3a56471e14d5ed2" + integrity sha512-/9nu+lj0YswRNSH0NXYqrh8775XNyEdUQAuf3f+SmOrnVewcJ5SBNAjF7lpgehKi4abvNNXyf+HX86czCdJ8Mg== + dependencies: + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/constants" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + +"@ethersproject/transactions@5.7.0", "@ethersproject/transactions@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/transactions/-/transactions-5.7.0.tgz#91318fc24063e057885a6af13fdb703e1f993d3b" + integrity sha512-kmcNicCp1lp8qanMTC3RIikGgoJ80ztTyvtsFvCYpSCfkjhD0jZ2LOrnbcuxuToLIUYYf+4XwD1rP+B/erDIhQ== + dependencies: + "@ethersproject/address" "^5.7.0" + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/constants" "^5.7.0" + "@ethersproject/keccak256" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/rlp" "^5.7.0" + "@ethersproject/signing-key" "^5.7.0" + +"@ethersproject/units@5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/units/-/units-5.7.0.tgz#637b563d7e14f42deeee39245275d477aae1d8b1" + integrity sha512-pD3xLMy3SJu9kG5xDGI7+xhTEmGXlEqXU4OfNapmfnxLVY4EMSSRp7j1k7eezutBPH7RBN/7QPnwR7hzNlEFeg== + dependencies: + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/constants" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + +"@ethersproject/wallet@5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/wallet/-/wallet-5.7.0.tgz#4e5d0790d96fe21d61d38fb40324e6c7ef350b2d" + integrity sha512-MhmXlJXEJFBFVKrDLB4ZdDzxcBxQ3rLyCkhNqVu3CDYvR97E+8r01UgrI+TI99Le+aYm/in/0vp86guJuM7FCA== + dependencies: + "@ethersproject/abstract-provider" "^5.7.0" + "@ethersproject/abstract-signer" "^5.7.0" + "@ethersproject/address" "^5.7.0" + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/hash" "^5.7.0" + "@ethersproject/hdnode" "^5.7.0" + "@ethersproject/json-wallets" "^5.7.0" + "@ethersproject/keccak256" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/random" "^5.7.0" + "@ethersproject/signing-key" "^5.7.0" + "@ethersproject/transactions" "^5.7.0" + "@ethersproject/wordlists" "^5.7.0" + +"@ethersproject/web@5.7.1", "@ethersproject/web@^5.7.0": + version "5.7.1" + resolved "https://registry.yarnpkg.com/@ethersproject/web/-/web-5.7.1.tgz#de1f285b373149bee5928f4eb7bcb87ee5fbb4ae" + integrity sha512-Gueu8lSvyjBWL4cYsWsjh6MtMwM0+H4HvqFPZfB6dV8ctbP9zFAO73VG1cMWae0FLPCtz0peKPpZY8/ugJJX2w== + dependencies: + "@ethersproject/base64" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/strings" "^5.7.0" + +"@ethersproject/wordlists@5.7.0", "@ethersproject/wordlists@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/wordlists/-/wordlists-5.7.0.tgz#8fb2c07185d68c3e09eb3bfd6e779ba2774627f5" + integrity sha512-S2TFNJNfHWVHNE6cNDjbVlZ6MgE17MIxMbMg2zv3wn+3XSJGosL1m9ZVv3GXCf/2ymSsQ+hRI5IzoMJTG6aoVA== + dependencies: + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/hash" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/strings" "^5.7.0" + +"@humanwhocodes/config-array@^0.11.8": + version "0.11.8" + resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.11.8.tgz#03595ac2075a4dc0f191cc2131de14fbd7d410b9" + integrity sha512-UybHIJzJnR5Qc/MsD9Kr+RpO2h+/P1GhOwdiLPXK5TWk5sgTdu88bTD9UP+CKbPPh5Rni1u0GjAdYQLemG8g+g== + dependencies: + "@humanwhocodes/object-schema" "^1.2.1" + debug "^4.1.1" + minimatch "^3.0.5" + +"@humanwhocodes/module-importer@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz#af5b2691a22b44be847b0ca81641c5fb6ad0172c" + integrity sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA== + +"@humanwhocodes/object-schema@^1.2.1": + version "1.2.1" + resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz#b520529ec21d8e5945a1851dfd1c32e94e39ff45" + integrity sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA== + +"@nodelib/fs.scandir@2.1.5": + version "2.1.5" + resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" + integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== + dependencies: + "@nodelib/fs.stat" "2.0.5" + run-parallel "^1.1.9" + +"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": + version "2.0.5" + resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b" + integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== + +"@nodelib/fs.walk@^1.2.3", "@nodelib/fs.walk@^1.2.8": + version "1.2.8" + resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a" + integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== + dependencies: + "@nodelib/fs.scandir" "2.1.5" + fastq "^1.6.0" + +"@openzeppelin/defender-admin-client@^1.46.0": + version "1.46.0" + resolved "https://registry.yarnpkg.com/@openzeppelin/defender-admin-client/-/defender-admin-client-1.46.0.tgz#b8af0269bda215a01108ce04d2bc6db872d84367" + integrity sha512-ZOt8z6Vce3vC1CgwZ3wt5paepfw1EHNcb0hssLkrbXBNeANcHI8e37p+VE6/DdEECoAKdQj2qQwggcsPqc19OQ== + dependencies: + "@openzeppelin/defender-base-client" "1.46.0" + axios "^0.21.2" + ethers "^5.7.2" + lodash "^4.17.19" + node-fetch "^2.6.0" + +"@openzeppelin/defender-autotask-client@^1.46.0": + version "1.46.0" + resolved "https://registry.yarnpkg.com/@openzeppelin/defender-autotask-client/-/defender-autotask-client-1.46.0.tgz#b89649ff039c1ac8013146dac7179218cb6c03a0" + integrity sha512-3HgVf6t7gNkMRikYUkN8UxG7syAskot9ExNt7okLRc8sMAaoMQu0f9KPMiidwUEm/dGRg5jmGTkl1l9r2KaVIw== + dependencies: + "@openzeppelin/defender-base-client" "1.46.0" + axios "^0.21.2" + dotenv "^10.0.0" + glob "^7.1.6" + jszip "^3.5.0" + lodash "^4.17.19" + node-fetch "^2.6.0" + +"@openzeppelin/defender-base-client@1.46.0", "@openzeppelin/defender-base-client@^1.46.0": + version "1.46.0" + resolved "https://registry.yarnpkg.com/@openzeppelin/defender-base-client/-/defender-base-client-1.46.0.tgz#aa5177f8fbad23fd03d78f3dbe06664bbe9333ff" + integrity sha512-EMnVBcfE6ZN5yMxfaxrFF3eqyGp2RQp3oSRSRP+R3yuCRJf8VCc2ArdZf1QPmQQzbq70nl8EZa03mmAqPauNlQ== + dependencies: + amazon-cognito-identity-js "^6.0.1" + async-retry "^1.3.3" + axios "^0.21.2" + lodash "^4.17.19" + node-fetch "^2.6.0" + +"@openzeppelin/defender-relay-client@^1.46.0": + version "1.46.0" + resolved "https://registry.yarnpkg.com/@openzeppelin/defender-relay-client/-/defender-relay-client-1.46.0.tgz#4c937edfd049a7b8a5fa3f15e63d6c9d44cc5d37" + integrity sha512-tkbNkdEaLZV0np32vX7c7/ExEuoWfyA4Q5WZzF7G09SWmbS38dvrBqRevT4bLDLgZcSvC0WU5jqBpQk1pqI8pw== + dependencies: + "@openzeppelin/defender-base-client" "1.46.0" + amazon-cognito-identity-js "^6.0.1" + axios "^0.21.2" + lodash "^4.17.19" + node-fetch "^2.6.0" + +"@openzeppelin/defender-sentinel-client@^1.46.0": + version "1.46.0" + resolved "https://registry.yarnpkg.com/@openzeppelin/defender-sentinel-client/-/defender-sentinel-client-1.46.0.tgz#b5f27b005a6c1ede7f584b7d1bef95b0deaee242" + integrity sha512-oQMmLlDMHzOmX6sU2tOQZEK5jq25fv58e3F6M/vvo9tCXUvNHYHwie2Ug/SSdHhIkPvrGKX1npUI0+MrBAyLPA== + dependencies: + "@ethersproject/abi" "^5.6.3" + "@openzeppelin/defender-base-client" "1.46.0" + axios "^0.21.2" + lodash "^4.17.19" + node-fetch "^2.6.0" + +"@openzeppelin/platform-deploy-client@^0.8.0": + version "0.8.0" + resolved "https://registry.yarnpkg.com/@openzeppelin/platform-deploy-client/-/platform-deploy-client-0.8.0.tgz#af6596275a19c283d6145f0128cc1247d18223c1" + integrity sha512-POx3AsnKwKSV/ZLOU/gheksj0Lq7Is1q2F3pKmcFjGZiibf+4kjGxr4eSMrT+2qgKYZQH1ZLQZ+SkbguD8fTvA== + dependencies: + "@ethersproject/abi" "^5.6.3" + "@openzeppelin/defender-base-client" "^1.46.0" + axios "^0.21.2" + lodash "^4.17.19" + node-fetch "^2.6.0" + +"@polka/url@^0.5.0": + version "0.5.0" + resolved "https://registry.yarnpkg.com/@polka/url/-/url-0.5.0.tgz#b21510597fd601e5d7c95008b76bf0d254ebfd31" + integrity sha512-oZLYFEAzUKyi3SKnXvj32ZCEGH6RDnao7COuCVhDydMS9NrCSVXhM79VaKyP5+Zc33m0QXEd2DN3UkU7OsHcfw== + +"@types/debug@^4.0.0": + version "4.1.8" + resolved "https://registry.yarnpkg.com/@types/debug/-/debug-4.1.8.tgz#cef723a5d0a90990313faec2d1e22aee5eecb317" + integrity sha512-/vPO1EPOs306Cvhwv7KfVfYvOJqA/S/AXjaHQiJboCZzcNDb+TIJFN9/2C9DZ//ijSKWioNyUxD792QmDJ+HKQ== + dependencies: + "@types/ms" "*" + +"@types/eslint@^8.4.6": + version "8.40.0" + resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-8.40.0.tgz#ae73dc9ec5237f2794c4f79efd6a4c73b13daf23" + integrity sha512-nbq2mvc/tBrK9zQQuItvjJl++GTN5j06DaPtp3hZCpngmG6Q3xoyEmd0TwZI0gAy/G1X0zhGBbr2imsGFdFV0g== + dependencies: + "@types/estree" "*" + "@types/json-schema" "*" + +"@types/estree@*": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.1.tgz#aa22750962f3bf0e79d753d3cc067f010c95f194" + integrity sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA== + +"@types/json-schema@*", "@types/json-schema@^7.0.8", "@types/json-schema@^7.0.9": + version "7.0.11" + resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.11.tgz#d421b6c527a3037f7c84433fd2c4229e016863d3" + integrity sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ== + +"@types/lodash@^4.14.184": + version "4.14.194" + resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.194.tgz#b71eb6f7a0ff11bff59fc987134a093029258a76" + integrity sha512-r22s9tAS7imvBt2lyHC9B8AGwWnXaYb1tY09oyLkXDs4vArpYJzw09nj8MLx5VfciBPGIb+ZwG0ssYnEPJxn/g== + +"@types/mdast@^3.0.0", "@types/mdast@^3.0.4": + version "3.0.11" + resolved "https://registry.yarnpkg.com/@types/mdast/-/mdast-3.0.11.tgz#dc130f7e7d9306124286f6d6cee40cf4d14a3dc0" + integrity sha512-Y/uImid8aAwrEA24/1tcRZwpxX3pIFTSilcNDKSPn+Y2iDywSEachzRuvgAYYLR3wpGXAsMbv5lvKLDZLeYPAw== + dependencies: + "@types/unist" "*" + +"@types/ms@*": + version "0.7.31" + resolved "https://registry.yarnpkg.com/@types/ms/-/ms-0.7.31.tgz#31b7ca6407128a3d2bbc27fe2d21b345397f6197" + integrity sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA== + +"@types/node@*": + version "20.2.3" + resolved "https://registry.yarnpkg.com/@types/node/-/node-20.2.3.tgz#b31eb300610c3835ac008d690de6f87e28f9b878" + integrity sha512-pg9d0yC4rVNWQzX8U7xb4olIOFuuVL9za3bzMT2pu2SU0SNEi66i2qrvhE2qt0HvkhuCaWJu7pLNOt/Pj8BIrw== + +"@types/node@^18.7.14": + version "18.16.14" + resolved "https://registry.yarnpkg.com/@types/node/-/node-18.16.14.tgz#ab67bb907f1146afc6fedb9ce60ae8a99c989631" + integrity sha512-+ImzUB3mw2c5ISJUq0punjDilUQ5GnUim0ZRvchHIWJmOC0G+p0kzhXBqj6cDjK0QdPFwzrHWgrJp3RPvCG5qg== + +"@types/prompt@^1.1.3": + version "1.1.5" + resolved "https://registry.yarnpkg.com/@types/prompt/-/prompt-1.1.5.tgz#170f296d5535300c7d5f92dbcb473d188025866b" + integrity sha512-xvIqQ/DOwlRxVT/P47f85rJGIQLZ59XQnbRpCdSJi93FtaAFOScr6H7GhiaaLGi1jo8WfOy1rhkpjc2zPFXMoQ== + dependencies: + "@types/node" "*" + "@types/revalidator" "*" + +"@types/revalidator@*": + version "0.3.8" + resolved "https://registry.yarnpkg.com/@types/revalidator/-/revalidator-0.3.8.tgz#86e0b03b49736000ad42ce6b002725e74c6805ff" + integrity sha512-q6KSi3PklLGQ0CesZ/XuLwly4DXXlnJuucYOG9lrBqrP8rKiuPZThav2h2+pFjaheNpnT0qKK3i304QWIePeJw== + +"@types/semver@^7.3.12": + version "7.5.0" + resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.5.0.tgz#591c1ce3a702c45ee15f47a42ade72c2fd78978a" + integrity sha512-G8hZ6XJiHnuhQKR7ZmysCeJWE08o8T0AXtk5darsCaTVsYZhhgUrq53jizaR2FvsoeCwJhlmwTjkXBY5Pn/ZHw== + +"@types/serverless@^3.12.8": + version "3.12.11" + resolved "https://registry.yarnpkg.com/@types/serverless/-/serverless-3.12.11.tgz#f6950fb557a30d9f8fecec3c9d74832e48255f6d" + integrity sha512-2CCtHisSPvbaeJwV1fJ9ppdea7luQV7AKIlpndk/Br4gdDCCJ/BZ9xo/0GQxeE6ID82X3AyNVj2A454PnuIXEA== + +"@types/unist@*", "@types/unist@^2.0.0", "@types/unist@^2.0.3": + version "2.0.6" + resolved "https://registry.yarnpkg.com/@types/unist/-/unist-2.0.6.tgz#250a7b16c3b91f672a24552ec64678eeb1d3a08d" + integrity sha512-PBjIUxZHOuj0R15/xuwJYjFi+KZdNFrehocChv4g5hu6aFroHue8m0lBP0POdK2nKzbw0cgV1mws8+V/JAcEkQ== + +"@typescript-eslint/eslint-plugin@^5.36.2": + version "5.59.7" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.59.7.tgz#e470af414f05ecfdc05a23e9ce6ec8f91db56fe2" + integrity sha512-BL+jYxUFIbuYwy+4fF86k5vdT9lT0CNJ6HtwrIvGh0PhH8s0yy5rjaKH2fDCrz5ITHy07WCzVGNvAmjJh4IJFA== + dependencies: + "@eslint-community/regexpp" "^4.4.0" + "@typescript-eslint/scope-manager" "5.59.7" + "@typescript-eslint/type-utils" "5.59.7" + "@typescript-eslint/utils" "5.59.7" + debug "^4.3.4" + grapheme-splitter "^1.0.4" + ignore "^5.2.0" + natural-compare-lite "^1.4.0" + semver "^7.3.7" + tsutils "^3.21.0" + +"@typescript-eslint/parser@^5.36.2": + version "5.59.7" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-5.59.7.tgz#02682554d7c1028b89aa44a48bf598db33048caa" + integrity sha512-VhpsIEuq/8i5SF+mPg9jSdIwgMBBp0z9XqjiEay+81PYLJuroN+ET1hM5IhkiYMJd9MkTz8iJLt7aaGAgzWUbQ== + dependencies: + "@typescript-eslint/scope-manager" "5.59.7" + "@typescript-eslint/types" "5.59.7" + "@typescript-eslint/typescript-estree" "5.59.7" + debug "^4.3.4" + +"@typescript-eslint/scope-manager@5.59.7": + version "5.59.7" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.59.7.tgz#0243f41f9066f3339d2f06d7f72d6c16a16769e2" + integrity sha512-FL6hkYWK9zBGdxT2wWEd2W8ocXMu3K94i3gvMrjXpx+koFYdYV7KprKfirpgY34vTGzEPPuKoERpP8kD5h7vZQ== + dependencies: + "@typescript-eslint/types" "5.59.7" + "@typescript-eslint/visitor-keys" "5.59.7" + +"@typescript-eslint/type-utils@5.59.7": + version "5.59.7" + resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-5.59.7.tgz#89c97291371b59eb18a68039857c829776f1426d" + integrity sha512-ozuz/GILuYG7osdY5O5yg0QxXUAEoI4Go3Do5xeu+ERH9PorHBPSdvD3Tjp2NN2bNLh1NJQSsQu2TPu/Ly+HaQ== + dependencies: + "@typescript-eslint/typescript-estree" "5.59.7" + "@typescript-eslint/utils" "5.59.7" + debug "^4.3.4" + tsutils "^3.21.0" + +"@typescript-eslint/types@5.59.7": + version "5.59.7" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.59.7.tgz#6f4857203fceee91d0034ccc30512d2939000742" + integrity sha512-UnVS2MRRg6p7xOSATscWkKjlf/NDKuqo5TdbWck6rIRZbmKpVNTLALzNvcjIfHBE7736kZOFc/4Z3VcZwuOM/A== + +"@typescript-eslint/typescript-estree@5.59.7": + version "5.59.7" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.59.7.tgz#b887acbd4b58e654829c94860dbff4ac55c5cff8" + integrity sha512-4A1NtZ1I3wMN2UGDkU9HMBL+TIQfbrh4uS0WDMMpf3xMRursDbqEf1ahh6vAAe3mObt8k3ZATnezwG4pdtWuUQ== + dependencies: + "@typescript-eslint/types" "5.59.7" + "@typescript-eslint/visitor-keys" "5.59.7" + debug "^4.3.4" + globby "^11.1.0" + is-glob "^4.0.3" + semver "^7.3.7" + tsutils "^3.21.0" + +"@typescript-eslint/utils@5.59.7": + version "5.59.7" + resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.59.7.tgz#7adf068b136deae54abd9a66ba5a8780d2d0f898" + integrity sha512-yCX9WpdQKaLufz5luG4aJbOpdXf/fjwGMcLFXZVPUz3QqLirG5QcwwnIHNf8cjLjxK4qtzTO8udUtMQSAToQnQ== + dependencies: + "@eslint-community/eslint-utils" "^4.2.0" + "@types/json-schema" "^7.0.9" + "@types/semver" "^7.3.12" + "@typescript-eslint/scope-manager" "5.59.7" + "@typescript-eslint/types" "5.59.7" + "@typescript-eslint/typescript-estree" "5.59.7" + eslint-scope "^5.1.1" + semver "^7.3.7" + +"@typescript-eslint/visitor-keys@5.59.7": + version "5.59.7" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.59.7.tgz#09c36eaf268086b4fbb5eb9dc5199391b6485fc5" + integrity sha512-tyN+X2jvMslUszIiYbF0ZleP+RqQsFVpGrKI6e0Eet1w8WmhsAtmzaqm8oM8WJQ1ysLwhnsK/4hYHJjOgJVfQQ== + dependencies: + "@typescript-eslint/types" "5.59.7" + eslint-visitor-keys "^3.3.0" + +acorn-jsx@^5.3.2: + version "5.3.2" + resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" + integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== + +acorn@^8.8.0: + version "8.8.2" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.8.2.tgz#1b2f25db02af965399b9776b0c2c391276d37c4a" + integrity sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw== + +aes-js@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/aes-js/-/aes-js-3.0.0.tgz#e21df10ad6c2053295bcbb8dab40b09dbea87e4d" + integrity sha512-H7wUZRn8WpTq9jocdxQ2c8x2sKo9ZVmzfRE13GiNJXfp7NcKYEdvl3vspKjXox6RIG2VtaRe4JFvxG4rqp2Zuw== + +ajv@^6.10.0, ajv@^6.12.4: + version "6.12.6" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" + integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== + dependencies: + fast-deep-equal "^3.1.1" + fast-json-stable-stringify "^2.0.0" + json-schema-traverse "^0.4.1" + uri-js "^4.2.2" + +amazon-cognito-identity-js@^6.0.1: + version "6.2.0" + resolved "https://registry.yarnpkg.com/amazon-cognito-identity-js/-/amazon-cognito-identity-js-6.2.0.tgz#99e96666944429cb8f67b62e4cf7ad77fbe71ad0" + integrity sha512-9Fxrp9+MtLdsJvqOwSaE3ll+pneICeuE3pwj2yDkiyGNWuHx97b8bVLR2bOgfDmDJnY0Hq8QoeXtwdM4aaXJjg== + dependencies: + "@aws-crypto/sha256-js" "1.2.2" + buffer "4.9.2" + fast-base64-decode "^1.0.0" + isomorphic-unfetch "^3.0.0" + js-cookie "^2.2.1" + +ansi-regex@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" + integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== + +ansi-styles@^4.0.0, ansi-styles@^4.1.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" + integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== + dependencies: + color-convert "^2.0.1" + +argparse@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" + integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== + +array-union@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" + integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== + +async-retry@^1.3.3: + version "1.3.3" + resolved "https://registry.yarnpkg.com/async-retry/-/async-retry-1.3.3.tgz#0e7f36c04d8478e7a58bdbed80cedf977785f280" + integrity sha512-wfr/jstw9xNi/0teMHrRW7dsz3Lt5ARhYNZ2ewpadnhaIp5mbALhOAP+EAdsC7t4Z6wqsDVv9+W6gm1Dk9mEyw== + dependencies: + retry "0.13.1" + +async@3.2.3: + version "3.2.3" + resolved "https://registry.yarnpkg.com/async/-/async-3.2.3.tgz#ac53dafd3f4720ee9e8a160628f18ea91df196c9" + integrity sha512-spZRyzKL5l5BZQrr/6m/SqFdBN0q3OCI0f9rjfBzCMBIP4p75P620rR3gTmaksNOhmzgdxcaxdNfMy6anrbM0g== + +async@^2.6.4: + version "2.6.4" + resolved "https://registry.yarnpkg.com/async/-/async-2.6.4.tgz#706b7ff6084664cd7eae713f6f965433b5504221" + integrity sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA== + dependencies: + lodash "^4.17.14" + +axios@^0.21.2: + version "0.21.4" + resolved "https://registry.yarnpkg.com/axios/-/axios-0.21.4.tgz#c67b90dc0568e5c1cf2b0b858c43ba28e2eda575" + integrity sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg== + dependencies: + follow-redirects "^1.14.0" + +bail@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/bail/-/bail-2.0.2.tgz#d26f5cd8fe5d6f832a31517b9f7c356040ba6d5d" + integrity sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw== + +balanced-match@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" + integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== + +base64-js@^1.0.2, base64-js@^1.3.1: + version "1.5.1" + resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" + integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== + +bech32@1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/bech32/-/bech32-1.1.4.tgz#e38c9f37bf179b8eb16ae3a772b40c356d4832e9" + integrity sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ== + +big.js@^6.1.1: + version "6.2.1" + resolved "https://registry.yarnpkg.com/big.js/-/big.js-6.2.1.tgz#7205ce763efb17c2e41f26f121c420c6a7c2744f" + integrity sha512-bCtHMwL9LeDIozFn+oNhhFoq+yQ3BNdnsLSASUxLciOb1vgvpHsIO1dsENiGMgbb4SkP5TrzWzRiLddn8ahVOQ== + +bn.js@^4.11.9: + version "4.12.0" + resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.12.0.tgz#775b3f278efbb9718eec7361f483fb36fbbfea88" + integrity sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA== + +bn.js@^5.2.0, bn.js@^5.2.1: + version "5.2.1" + resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.2.1.tgz#0bc527a6a0d18d0aa8d5b0538ce4a77dccfa7b70" + integrity sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ== + +brace-expansion@^1.1.7: + version "1.1.11" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" + integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== + dependencies: + balanced-match "^1.0.0" + concat-map "0.0.1" + +braces@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" + integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== + dependencies: + fill-range "^7.0.1" + +brorand@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" + integrity sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w== + +buffer@4.9.2: + version "4.9.2" + resolved "https://registry.yarnpkg.com/buffer/-/buffer-4.9.2.tgz#230ead344002988644841ab0244af8c44bbe3ef8" + integrity sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg== + dependencies: + base64-js "^1.0.2" + ieee754 "^1.1.4" + isarray "^1.0.0" + +buffer@^6.0.3: + version "6.0.3" + resolved "https://registry.yarnpkg.com/buffer/-/buffer-6.0.3.tgz#2ace578459cc8fbe2a70aaa8f52ee63b6a74c6c6" + integrity sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA== + dependencies: + base64-js "^1.3.1" + ieee754 "^1.2.1" + +callsites@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" + integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== + +ccount@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/ccount/-/ccount-2.0.1.tgz#17a3bf82302e0870d6da43a01311a8bc02a3ecf5" + integrity sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg== + +centra@^2.6.0: + version "2.6.0" + resolved "https://registry.yarnpkg.com/centra/-/centra-2.6.0.tgz#79117998ee6908642258db263871381aa5d1204a" + integrity sha512-dgh+YleemrT8u85QL11Z6tYhegAs3MMxsaWAq/oXeAmYJ7VxL3SI9TZtnfaEvNDMAPolj25FXIb3S+HCI4wQaQ== + +chalk@^4.0.0, chalk@^4.1.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" + integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + +character-entities@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/character-entities/-/character-entities-2.0.2.tgz#2d09c2e72cd9523076ccb21157dff66ad43fcc22" + integrity sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ== + +cliui@^8.0.1: + version "8.0.1" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-8.0.1.tgz#0c04b075db02cbfe60dc8e6cf2f5486b1a3608aa" + integrity sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ== + dependencies: + string-width "^4.2.0" + strip-ansi "^6.0.1" + wrap-ansi "^7.0.0" + +"code-style@https://github.com/OpenZeppelin/code-style.git": + version "0.1.0" + resolved "https://github.com/OpenZeppelin/code-style.git#0c7b3073da623d1112e4f9c3f186586167ab2d03" + +color-convert@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" + integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== + dependencies: + color-name "~1.1.4" + +color-name@~1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" + integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== + +colorette@^2.0.2: + version "2.0.20" + resolved "https://registry.yarnpkg.com/colorette/-/colorette-2.0.20.tgz#9eb793e6833067f7235902fcd3b09917a000a95a" + integrity sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w== + +colors@1.0.x: + version "1.0.3" + resolved "https://registry.yarnpkg.com/colors/-/colors-1.0.3.tgz#0433f44d809680fdeb60ed260f1b0c262e82a40b" + integrity sha512-pFGrxThWcWQ2MsAz6RtgeWe4NK2kUE1WfsrvvlctdII745EW9I0yflqhe7++M5LEc7bV2c/9/5zc8sFcpL0Drw== + +concat-map@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" + integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== + +core-util-is@~1.0.0: + version "1.0.3" + resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.3.tgz#a6042d3634c2b27e9328f837b965fac83808db85" + integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ== + +cross-spawn@^7.0.2: + version "7.0.3" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" + integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== + dependencies: + path-key "^3.1.0" + shebang-command "^2.0.0" + which "^2.0.1" + +cuint@^0.2.2: + version "0.2.2" + resolved "https://registry.yarnpkg.com/cuint/-/cuint-0.2.2.tgz#408086d409550c2631155619e9fa7bcadc3b991b" + integrity sha512-d4ZVpCW31eWwCMe1YT3ur7mUDnTXbgwyzaL320DrcRT45rfjYxkt5QWLrmOJ+/UEAI2+fQgKe/fCjR8l4TpRgw== + +cycle@1.0.x: + version "1.0.3" + resolved "https://registry.yarnpkg.com/cycle/-/cycle-1.0.3.tgz#21e80b2be8580f98b468f379430662b046c34ad2" + integrity sha512-TVF6svNzeQCOpjCqsy0/CSy8VgObG3wXusJ73xW2GbG5rGx7lC8zxDSURicsXI2UsGdi2L0QNRCi745/wUDvsA== + +debug@^4.0.0, debug@^4.1.1, debug@^4.3.2, debug@^4.3.4: + version "4.3.4" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" + integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== + dependencies: + ms "2.1.2" + +decode-named-character-reference@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/decode-named-character-reference/-/decode-named-character-reference-1.0.2.tgz#daabac9690874c394c81e4162a0304b35d824f0e" + integrity sha512-O8x12RzrUF8xyVcY0KJowWsmaJxQbmy0/EtnNtHRpsOcT7dFk5W598coHqBVpmWo1oQQfsCqfCmkZN5DJrZVdg== + dependencies: + character-entities "^2.0.0" + +deep-is@^0.1.3: + version "0.1.4" + resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831" + integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== + +dequal@^2.0.0: + version "2.0.3" + resolved "https://registry.yarnpkg.com/dequal/-/dequal-2.0.3.tgz#2644214f1997d39ed0ee0ece72335490a7ac67be" + integrity sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA== + +diff@^5.0.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/diff/-/diff-5.1.0.tgz#bc52d298c5ea8df9194800224445ed43ffc87e40" + integrity sha512-D+mk+qE8VC/PAUrlAU34N+VfXev0ghe5ywmpqrawphmVZc1bEfn56uo9qpyGp1p4xpzOHkSW4ztBd6L7Xx4ACw== + +dir-glob@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" + integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA== + dependencies: + path-type "^4.0.0" + +doctrine@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" + integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== + dependencies: + esutils "^2.0.2" + +dotenv@^10.0.0: + version "10.0.0" + resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-10.0.0.tgz#3d4227b8fb95f81096cdd2b66653fb2c7085ba81" + integrity sha512-rlBi9d8jpv9Sf1klPjNfFAuWDjKLwTIJJ/VxtoTwIR6hnZxcEOQCZg2oIL3MWBYw5GpUDKOEnND7LXTbIpQ03Q== + +elliptic@6.5.4: + version "6.5.4" + resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.4.tgz#da37cebd31e79a1367e941b592ed1fbebd58abbb" + integrity sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ== + dependencies: + bn.js "^4.11.9" + brorand "^1.1.0" + hash.js "^1.0.0" + hmac-drbg "^1.0.1" + inherits "^2.0.4" + minimalistic-assert "^1.0.1" + minimalistic-crypto-utils "^1.0.1" + +emoji-regex@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" + integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== + +es2015-i18n-tag@1.6.1: + version "1.6.1" + resolved "https://registry.yarnpkg.com/es2015-i18n-tag/-/es2015-i18n-tag-1.6.1.tgz#76c782a083c188ae761774c54d1a56029784a458" + integrity sha512-MYoh9p+JTkgnzBh0MEBON6xUyzdmwT6wzsmmFJvZujGSXiI2kM+3XvFl6+AcIO2eeL6VWgtX9szSiDTMwDxyYA== + +escalade@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" + integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== + +escape-string-regexp@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" + integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== + +escape-string-regexp@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz#4683126b500b61762f2dbebace1806e8be31b1c8" + integrity sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw== + +eslint-config-prettier@^8.6.0: + version "8.8.0" + resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-8.8.0.tgz#bfda738d412adc917fd7b038857110efe98c9348" + integrity sha512-wLbQiFre3tdGgpDv67NQKnJuTlcUVYHas3k+DZCc2U2BadthoEY4B7hLPvAxaqdyOGCzuLfii2fqGph10va7oA== + +eslint-plugin-prettier@^4.2.1: + version "4.2.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-4.2.1.tgz#651cbb88b1dab98bfd42f017a12fa6b2d993f94b" + integrity sha512-f/0rXLXUt0oFYs8ra4w49wYZBG5GKZpAYsJSm6rnYL5uVDjd+zowwMwVZHnAjf4edNrKpCDYfXDgmRE/Ak7QyQ== + dependencies: + prettier-linter-helpers "^1.0.0" + +eslint-scope@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" + integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== + dependencies: + esrecurse "^4.3.0" + estraverse "^4.1.1" + +eslint-scope@^7.2.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-7.2.0.tgz#f21ebdafda02352f103634b96dd47d9f81ca117b" + integrity sha512-DYj5deGlHBfMt15J7rdtyKNq/Nqlv5KfU4iodrQ019XESsRnwXH9KAE0y3cwtUHDo2ob7CypAnCqefh6vioWRw== + dependencies: + esrecurse "^4.3.0" + estraverse "^5.2.0" + +eslint-visitor-keys@^3.3.0, eslint-visitor-keys@^3.4.1: + version "3.4.1" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.1.tgz#c22c48f48942d08ca824cc526211ae400478a994" + integrity sha512-pZnmmLwYzf+kWaM/Qgrvpen51upAktaaiI01nsJD/Yr3lMOdNtq0cxkrrg16w64VtisN6okbs7Q8AfGqj4c9fA== + +eslint@^8.23.0: + version "8.41.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.41.0.tgz#3062ca73363b4714b16dbc1e60f035e6134b6f1c" + integrity sha512-WQDQpzGBOP5IrXPo4Hc0814r4/v2rrIsB0rhT7jtunIalgg6gYXWhRMOejVO8yH21T/FGaxjmFjBMNqcIlmH1Q== + dependencies: + "@eslint-community/eslint-utils" "^4.2.0" + "@eslint-community/regexpp" "^4.4.0" + "@eslint/eslintrc" "^2.0.3" + "@eslint/js" "8.41.0" + "@humanwhocodes/config-array" "^0.11.8" + "@humanwhocodes/module-importer" "^1.0.1" + "@nodelib/fs.walk" "^1.2.8" + ajv "^6.10.0" + chalk "^4.0.0" + cross-spawn "^7.0.2" + debug "^4.3.2" + doctrine "^3.0.0" + escape-string-regexp "^4.0.0" + eslint-scope "^7.2.0" + eslint-visitor-keys "^3.4.1" + espree "^9.5.2" + esquery "^1.4.2" + esutils "^2.0.2" + fast-deep-equal "^3.1.3" + file-entry-cache "^6.0.1" + find-up "^5.0.0" + glob-parent "^6.0.2" + globals "^13.19.0" + graphemer "^1.4.0" + ignore "^5.2.0" + import-fresh "^3.0.0" + imurmurhash "^0.1.4" + is-glob "^4.0.0" + is-path-inside "^3.0.3" + js-yaml "^4.1.0" + json-stable-stringify-without-jsonify "^1.0.1" + levn "^0.4.1" + lodash.merge "^4.6.2" + minimatch "^3.1.2" + natural-compare "^1.4.0" + optionator "^0.9.1" + strip-ansi "^6.0.1" + strip-json-comments "^3.1.0" + text-table "^0.2.0" + +espree@^9.5.2: + version "9.5.2" + resolved "https://registry.yarnpkg.com/espree/-/espree-9.5.2.tgz#e994e7dc33a082a7a82dceaf12883a829353215b" + integrity sha512-7OASN1Wma5fum5SrNhFMAMJxOUAbhyfQ8dQ//PJaJbNw0URTPWqIghHWt1MmAANKhHZIYOHruW4Kw4ruUWOdGw== + dependencies: + acorn "^8.8.0" + acorn-jsx "^5.3.2" + eslint-visitor-keys "^3.4.1" + +esquery@^1.4.2: + version "1.5.0" + resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.5.0.tgz#6ce17738de8577694edd7361c57182ac8cb0db0b" + integrity sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg== + dependencies: + estraverse "^5.1.0" + +esrecurse@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" + integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== + dependencies: + estraverse "^5.2.0" + +estraverse@^4.1.1: + version "4.3.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" + integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== + +estraverse@^5.1.0, estraverse@^5.2.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123" + integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== + +esutils@^2.0.2: + version "2.0.3" + resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" + integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== + +ethers@^5.7.2: + version "5.7.2" + resolved "https://registry.yarnpkg.com/ethers/-/ethers-5.7.2.tgz#3a7deeabbb8c030d4126b24f84e525466145872e" + integrity sha512-wswUsmWo1aOK8rR7DIKiWSw9DbLWe6x98Jrn8wcTflTVvaXhAMaB5zGAXy0GYQEQp9iO1iSHWVyARQm11zUtyg== + dependencies: + "@ethersproject/abi" "5.7.0" + "@ethersproject/abstract-provider" "5.7.0" + "@ethersproject/abstract-signer" "5.7.0" + "@ethersproject/address" "5.7.0" + "@ethersproject/base64" "5.7.0" + "@ethersproject/basex" "5.7.0" + "@ethersproject/bignumber" "5.7.0" + "@ethersproject/bytes" "5.7.0" + "@ethersproject/constants" "5.7.0" + "@ethersproject/contracts" "5.7.0" + "@ethersproject/hash" "5.7.0" + "@ethersproject/hdnode" "5.7.0" + "@ethersproject/json-wallets" "5.7.0" + "@ethersproject/keccak256" "5.7.0" + "@ethersproject/logger" "5.7.0" + "@ethersproject/networks" "5.7.1" + "@ethersproject/pbkdf2" "5.7.0" + "@ethersproject/properties" "5.7.0" + "@ethersproject/providers" "5.7.2" + "@ethersproject/random" "5.7.0" + "@ethersproject/rlp" "5.7.0" + "@ethersproject/sha2" "5.7.0" + "@ethersproject/signing-key" "5.7.0" + "@ethersproject/solidity" "5.7.0" + "@ethersproject/strings" "5.7.0" + "@ethersproject/transactions" "5.7.0" + "@ethersproject/units" "5.7.0" + "@ethersproject/wallet" "5.7.0" + "@ethersproject/web" "5.7.1" + "@ethersproject/wordlists" "5.7.0" + +extend@^3.0.0: + version "3.0.2" + resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" + integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== + +eyes@0.1.x: + version "0.1.8" + resolved "https://registry.yarnpkg.com/eyes/-/eyes-0.1.8.tgz#62cf120234c683785d902348a800ef3e0cc20bc0" + integrity sha512-GipyPsXO1anza0AOZdy69Im7hGFCNB7Y/NGjDlZGJ3GJJLtwNSb2vrzYrTYJRrRloVx7pl+bhUaTB8yiccPvFQ== + +fast-base64-decode@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fast-base64-decode/-/fast-base64-decode-1.0.0.tgz#b434a0dd7d92b12b43f26819300d2dafb83ee418" + integrity sha512-qwaScUgUGBYeDNRnbc/KyllVU88Jk1pRHPStuF/lO7B0/RTRLj7U0lkdTAutlBblY08rwZDff6tNU9cjv6j//Q== + +fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: + version "3.1.3" + resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" + integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== + +fast-diff@^1.1.2: + version "1.3.0" + resolved "https://registry.yarnpkg.com/fast-diff/-/fast-diff-1.3.0.tgz#ece407fa550a64d638536cd727e129c61616e0f0" + integrity sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw== + +fast-glob@^3.2.9: + version "3.2.12" + resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.12.tgz#7f39ec99c2e6ab030337142da9e0c18f37afae80" + integrity sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w== + dependencies: + "@nodelib/fs.stat" "^2.0.2" + "@nodelib/fs.walk" "^1.2.3" + glob-parent "^5.1.2" + merge2 "^1.3.0" + micromatch "^4.0.4" + +fast-json-stable-stringify@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" + integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== + +fast-levenshtein@^2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" + integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw== + +fastestsmallesttextencoderdecoder@1.0.22: + version "1.0.22" + resolved "https://registry.yarnpkg.com/fastestsmallesttextencoderdecoder/-/fastestsmallesttextencoderdecoder-1.0.22.tgz#59b47e7b965f45258629cc6c127bf783281c5e93" + integrity sha512-Pb8d48e+oIuY4MaM64Cd7OW1gt4nxCHs7/ddPPZ/Ic3sg8yVGM7O9wDvZ7us6ScaUupzM+pfBolwtYhN1IxBIw== + +fastq@^1.6.0: + version "1.15.0" + resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.15.0.tgz#d04d07c6a2a68fe4599fea8d2e103a937fae6b3a" + integrity sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw== + dependencies: + reusify "^1.0.4" + +ferrum@1.9.4, ferrum@^1.9.3: + version "1.9.4" + resolved "https://registry.yarnpkg.com/ferrum/-/ferrum-1.9.4.tgz#809e7c025ef9b82780be5e0dfda447c92a2dccb8" + integrity sha512-ooNerLoIht/dK4CQJux93z/hnt9JysrXniJCI3r6YRgmHeXC57EJ8XaTCT1Gm8LfhIAeWxyJA0O7d/W3pqDYRg== + dependencies: + fastestsmallesttextencoderdecoder "1.0.22" + lodash.isplainobject "4.0.6" + xxhashjs "0.2.2" + +file-entry-cache@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027" + integrity sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg== + dependencies: + flat-cache "^3.0.4" + +fill-range@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" + integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== + dependencies: + to-regex-range "^5.0.1" + +find-up@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" + integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== + dependencies: + locate-path "^6.0.0" + path-exists "^4.0.0" + +flat-cache@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.0.4.tgz#61b0338302b2fe9f957dcc32fc2a87f1c3048b11" + integrity sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg== + dependencies: + flatted "^3.1.0" + rimraf "^3.0.2" + +flatted@^3.1.0: + version "3.2.7" + resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.2.7.tgz#609f39207cb614b89d0765b477cb2d437fbf9787" + integrity sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ== + +follow-redirects@^1.14.0: + version "1.15.2" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.2.tgz#b460864144ba63f2681096f274c4e57026da2c13" + integrity sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA== + +fs-extra@11.1.0: + version "11.1.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-11.1.0.tgz#5784b102104433bb0e090f48bfc4a30742c357ed" + integrity sha512-0rcTq621PD5jM/e0a3EJoGC/1TC5ZBCERW82LQuwfGnCa1V8w7dpYH1yNu+SLb6E5dkeCBzKEyLGlFrnr+dUyw== + dependencies: + graceful-fs "^4.2.0" + jsonfile "^6.0.1" + universalify "^2.0.0" + +fs.realpath@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" + integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== + +get-caller-file@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" + integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== + +github-slugger@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/github-slugger/-/github-slugger-2.0.0.tgz#52cf2f9279a21eb6c59dd385b410f0c0adda8f1a" + integrity sha512-IaOQ9puYtjrkq7Y0Ygl9KDZnrf/aiUJYUpVf89y8kyaxbRG7Y1SrX/jaumrv81vc61+kiMempujsM3Yw7w5qcw== + +glob-parent@^5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" + integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== + dependencies: + is-glob "^4.0.1" + +glob-parent@^6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-6.0.2.tgz#6d237d99083950c79290f24c7642a3de9a28f9e3" + integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A== + dependencies: + is-glob "^4.0.3" + +glob@^7.1.3, glob@^7.1.6, glob@^7.2.0: + version "7.2.3" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" + integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.1.1" + once "^1.3.0" + path-is-absolute "^1.0.0" + +globals@^13.19.0: + version "13.20.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-13.20.0.tgz#ea276a1e508ffd4f1612888f9d1bad1e2717bf82" + integrity sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ== + dependencies: + type-fest "^0.20.2" + +globby@^11.1.0: + version "11.1.0" + resolved "https://registry.yarnpkg.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b" + integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g== + dependencies: + array-union "^2.1.0" + dir-glob "^3.0.1" + fast-glob "^3.2.9" + ignore "^5.2.0" + merge2 "^1.4.1" + slash "^3.0.0" + +graceful-fs@^4.1.6, graceful-fs@^4.2.0: + version "4.2.11" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3" + integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== + +grapheme-splitter@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz#9cf3a665c6247479896834af35cf1dbb4400767e" + integrity sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ== + +graphemer@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/graphemer/-/graphemer-1.4.0.tgz#fb2f1d55e0e3a1849aeffc90c4fa0dd53a0e66c6" + integrity sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag== + +has-flag@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" + integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== + +hash.js@1.1.7, hash.js@^1.0.0, hash.js@^1.0.3: + version "1.1.7" + resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.7.tgz#0babca538e8d4ee4a0f8988d68866537a003cf42" + integrity sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA== + dependencies: + inherits "^2.0.3" + minimalistic-assert "^1.0.1" + +hmac-drbg@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1" + integrity sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg== + dependencies: + hash.js "^1.0.3" + minimalistic-assert "^1.0.0" + minimalistic-crypto-utils "^1.0.1" + +ieee754@^1.1.4, ieee754@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" + integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== + +ignore@^5.2.0: + version "5.2.4" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.4.tgz#a291c0c6178ff1b960befe47fcdec301674a6324" + integrity sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ== + +immediate@~3.0.5: + version "3.0.6" + resolved "https://registry.yarnpkg.com/immediate/-/immediate-3.0.6.tgz#9db1dbd0faf8de6fbe0f5dd5e56bb606280de69b" + integrity sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ== + +import-fresh@^3.0.0, import-fresh@^3.2.1: + version "3.3.0" + resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" + integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== + dependencies: + parent-module "^1.0.0" + resolve-from "^4.0.0" + +imurmurhash@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" + integrity sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA== + +inflight@^1.0.4: + version "1.0.6" + resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" + integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA== + dependencies: + once "^1.3.0" + wrappy "1" + +inherits@2, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.3: + version "2.0.4" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" + integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== + +is-buffer@^2.0.0: + version "2.0.5" + resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-2.0.5.tgz#ebc252e400d22ff8d77fa09888821a24a658c191" + integrity sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ== + +is-extglob@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" + integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== + +is-fullwidth-code-point@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" + integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== + +is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" + integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== + dependencies: + is-extglob "^2.1.1" + +is-number@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" + integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== + +is-path-inside@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283" + integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ== + +is-plain-obj@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-4.1.0.tgz#d65025edec3657ce032fd7db63c97883eaed71f0" + integrity sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg== + +isarray@^1.0.0, isarray@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" + integrity sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ== + +isexe@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" + integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== + +isomorphic-unfetch@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/isomorphic-unfetch/-/isomorphic-unfetch-3.1.0.tgz#87341d5f4f7b63843d468438128cb087b7c3e98f" + integrity sha512-geDJjpoZ8N0kWexiwkX8F9NkTsXhetLPVbZFQ+JTW239QNOwvB0gniuR1Wc6f0AMTn7/mFGyXvHTifrCp/GH8Q== + dependencies: + node-fetch "^2.6.1" + unfetch "^4.2.0" + +isstream@0.1.x: + version "0.1.2" + resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" + integrity sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g== + +js-cookie@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/js-cookie/-/js-cookie-2.2.1.tgz#69e106dc5d5806894562902aa5baec3744e9b2b8" + integrity sha512-HvdH2LzI/EAZcUwA8+0nKNtWHqS+ZmijLA30RwZA0bo7ToCckjK5MkGhjED9KoRcXO6BaGI3I9UIzSA1FKFPOQ== + +js-sha3@0.8.0: + version "0.8.0" + resolved "https://registry.yarnpkg.com/js-sha3/-/js-sha3-0.8.0.tgz#b9b7a5da73afad7dedd0f8c463954cbde6818840" + integrity sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q== + +js-yaml@4.1.0, js-yaml@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" + integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== + dependencies: + argparse "^2.0.1" + +json-schema-traverse@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" + integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== + +json-schema@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.4.0.tgz#f7de4cf6efab838ebaeb3236474cbba5a1930ab5" + integrity sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA== + +json-stable-stringify-without-jsonify@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" + integrity sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw== + +jsonfile@^6.0.1: + version "6.1.0" + resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-6.1.0.tgz#bc55b2634793c679ec6403094eb13698a6ec0aae" + integrity sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ== + dependencies: + universalify "^2.0.0" + optionalDependencies: + graceful-fs "^4.1.6" + +jszip@^3.5.0: + version "3.10.1" + resolved "https://registry.yarnpkg.com/jszip/-/jszip-3.10.1.tgz#34aee70eb18ea1faec2f589208a157d1feb091c2" + integrity sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g== + dependencies: + lie "~3.3.0" + pako "~1.0.2" + readable-stream "~2.3.6" + setimmediate "^1.0.5" + +keccak256@^1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/keccak256/-/keccak256-1.0.6.tgz#dd32fb771558fed51ce4e45a035ae7515573da58" + integrity sha512-8GLiM01PkdJVGUhR1e6M/AvWnSqYS0HaERI+K/QtStGDGlSTx2B1zTqZk4Zlqu5TxHJNTxWAdP9Y+WI50OApUw== + dependencies: + bn.js "^5.2.0" + buffer "^6.0.3" + keccak "^3.0.2" + +keccak@^3.0.2: + version "3.0.3" + resolved "https://registry.yarnpkg.com/keccak/-/keccak-3.0.3.tgz#4bc35ad917be1ef54ff246f904c2bbbf9ac61276" + integrity sha512-JZrLIAJWuZxKbCilMpNz5Vj7Vtb4scDG3dMXLOsbzBmQGyjwE61BbW7bJkfKKCShXiQZt3T6sBgALRtmd+nZaQ== + dependencies: + node-addon-api "^2.0.0" + node-gyp-build "^4.2.0" + readable-stream "^3.6.0" + +kleur@^4.0.3: + version "4.1.5" + resolved "https://registry.yarnpkg.com/kleur/-/kleur-4.1.5.tgz#95106101795f7050c6c650f350c683febddb1780" + integrity sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ== + +levn@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade" + integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ== + dependencies: + prelude-ls "^1.2.1" + type-check "~0.4.0" + +lie@~3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/lie/-/lie-3.3.0.tgz#dcf82dee545f46074daf200c7c1c5a08e0f40f6a" + integrity sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ== + dependencies: + immediate "~3.0.5" + +locate-path@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286" + integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw== + dependencies: + p-locate "^5.0.0" + +lodash.isplainobject@4.0.6: + version "4.0.6" + resolved "https://registry.yarnpkg.com/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz#7c526a52d89b45c45cc690b88163be0497f550cb" + integrity sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA== + +lodash.merge@^4.6.2: + version "4.6.2" + resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" + integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== + +lodash@^4.17.14, lodash@^4.17.19, lodash@^4.17.21: + version "4.17.21" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" + integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== + +longest-streak@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/longest-streak/-/longest-streak-3.1.0.tgz#62fa67cd958742a1574af9f39866364102d90cd4" + integrity sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g== + +lru-cache@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" + integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== + dependencies: + yallist "^4.0.0" + +markdown-table@^3.0.0: + version "3.0.3" + resolved "https://registry.yarnpkg.com/markdown-table/-/markdown-table-3.0.3.tgz#e6331d30e493127e031dd385488b5bd326e4a6bd" + integrity sha512-Z1NL3Tb1M9wH4XESsCDEksWoKTdlUafKc4pt0GRwjUyXaCFZ+dc3g2erqB6zm3szA2IUSi7VnPI+o/9jnxh9hw== + +matchit@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/matchit/-/matchit-1.1.0.tgz#c4ccf17d9c824cc1301edbcffde9b75a61d10a7c" + integrity sha512-+nGYoOlfHmxe5BW5tE0EMJppXEwdSf8uBA1GTZC7Q77kbT35+VKLYJMzVNWCHSsga1ps1tPYFtFyvxvKzWVmMA== + dependencies: + "@arr/every" "^1.0.0" + +mdast-builder@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/mdast-builder/-/mdast-builder-1.1.1.tgz#ccaaa5ead8ec9c69883ec87d289770569e4b49b2" + integrity sha512-a3KBk/LmYD6wKsWi8WJrGU/rXR4yuF4Men0JO0z6dSZCm5FrXXWTRDjqK0vGSqa+1M6p9edeuypZAZAzSehTUw== + dependencies: + "@types/unist" "^2.0.3" + +mdast-util-find-and-replace@^2.0.0: + version "2.2.2" + resolved "https://registry.yarnpkg.com/mdast-util-find-and-replace/-/mdast-util-find-and-replace-2.2.2.tgz#cc2b774f7f3630da4bd592f61966fecade8b99b1" + integrity sha512-MTtdFRz/eMDHXzeK6W3dO7mXUlF82Gom4y0oOgvHhh/HXZAGvIQDUvQ0SuUx+j2tv44b8xTHOm8K/9OoRFnXKw== + dependencies: + "@types/mdast" "^3.0.0" + escape-string-regexp "^5.0.0" + unist-util-is "^5.0.0" + unist-util-visit-parents "^5.0.0" + +mdast-util-from-markdown@^1.0.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/mdast-util-from-markdown/-/mdast-util-from-markdown-1.3.0.tgz#0214124154f26154a2b3f9d401155509be45e894" + integrity sha512-HN3W1gRIuN/ZW295c7zi7g9lVBllMgZE40RxCX37wrTPWXCWtpvOZdfnuK+1WNpvZje6XuJeI3Wnb4TJEUem+g== + dependencies: + "@types/mdast" "^3.0.0" + "@types/unist" "^2.0.0" + decode-named-character-reference "^1.0.0" + mdast-util-to-string "^3.1.0" + micromark "^3.0.0" + micromark-util-decode-numeric-character-reference "^1.0.0" + micromark-util-decode-string "^1.0.0" + micromark-util-normalize-identifier "^1.0.0" + micromark-util-symbol "^1.0.0" + micromark-util-types "^1.0.0" + unist-util-stringify-position "^3.0.0" + uvu "^0.5.0" + +mdast-util-gfm-autolink-literal@^1.0.0: + version "1.0.3" + resolved "https://registry.yarnpkg.com/mdast-util-gfm-autolink-literal/-/mdast-util-gfm-autolink-literal-1.0.3.tgz#67a13abe813d7eba350453a5333ae1bc0ec05c06" + integrity sha512-My8KJ57FYEy2W2LyNom4n3E7hKTuQk/0SES0u16tjA9Z3oFkF4RrC/hPAPgjlSpezsOvI8ObcXcElo92wn5IGA== + dependencies: + "@types/mdast" "^3.0.0" + ccount "^2.0.0" + mdast-util-find-and-replace "^2.0.0" + micromark-util-character "^1.0.0" + +mdast-util-gfm-footnote@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/mdast-util-gfm-footnote/-/mdast-util-gfm-footnote-1.0.2.tgz#ce5e49b639c44de68d5bf5399877a14d5020424e" + integrity sha512-56D19KOGbE00uKVj3sgIykpwKL179QsVFwx/DCW0u/0+URsryacI4MAdNJl0dh+u2PSsD9FtxPFbHCzJ78qJFQ== + dependencies: + "@types/mdast" "^3.0.0" + mdast-util-to-markdown "^1.3.0" + micromark-util-normalize-identifier "^1.0.0" + +mdast-util-gfm-strikethrough@^1.0.0: + version "1.0.3" + resolved "https://registry.yarnpkg.com/mdast-util-gfm-strikethrough/-/mdast-util-gfm-strikethrough-1.0.3.tgz#5470eb105b483f7746b8805b9b989342085795b7" + integrity sha512-DAPhYzTYrRcXdMjUtUjKvW9z/FNAMTdU0ORyMcbmkwYNbKocDpdk+PX1L1dQgOID/+vVs1uBQ7ElrBQfZ0cuiQ== + dependencies: + "@types/mdast" "^3.0.0" + mdast-util-to-markdown "^1.3.0" + +mdast-util-gfm-table@^1.0.0: + version "1.0.7" + resolved "https://registry.yarnpkg.com/mdast-util-gfm-table/-/mdast-util-gfm-table-1.0.7.tgz#3552153a146379f0f9c4c1101b071d70bbed1a46" + integrity sha512-jjcpmNnQvrmN5Vx7y7lEc2iIOEytYv7rTvu+MeyAsSHTASGCCRA79Igg2uKssgOs1i1po8s3plW0sTu1wkkLGg== + dependencies: + "@types/mdast" "^3.0.0" + markdown-table "^3.0.0" + mdast-util-from-markdown "^1.0.0" + mdast-util-to-markdown "^1.3.0" + +mdast-util-gfm-task-list-item@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/mdast-util-gfm-task-list-item/-/mdast-util-gfm-task-list-item-1.0.2.tgz#b280fcf3b7be6fd0cc012bbe67a59831eb34097b" + integrity sha512-PFTA1gzfp1B1UaiJVyhJZA1rm0+Tzn690frc/L8vNX1Jop4STZgOE6bxUhnzdVSB+vm2GU1tIsuQcA9bxTQpMQ== + dependencies: + "@types/mdast" "^3.0.0" + mdast-util-to-markdown "^1.3.0" + +mdast-util-gfm@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/mdast-util-gfm/-/mdast-util-gfm-2.0.2.tgz#e92f4d8717d74bdba6de57ed21cc8b9552e2d0b6" + integrity sha512-qvZ608nBppZ4icQlhQQIAdc6S3Ffj9RGmzwUKUWuEICFnd1LVkN3EktF7ZHAgfcEdvZB5owU9tQgt99e2TlLjg== + dependencies: + mdast-util-from-markdown "^1.0.0" + mdast-util-gfm-autolink-literal "^1.0.0" + mdast-util-gfm-footnote "^1.0.0" + mdast-util-gfm-strikethrough "^1.0.0" + mdast-util-gfm-table "^1.0.0" + mdast-util-gfm-task-list-item "^1.0.0" + mdast-util-to-markdown "^1.0.0" + +mdast-util-phrasing@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/mdast-util-phrasing/-/mdast-util-phrasing-3.0.1.tgz#c7c21d0d435d7fb90956038f02e8702781f95463" + integrity sha512-WmI1gTXUBJo4/ZmSk79Wcb2HcjPJBzM1nlI/OUWA8yk2X9ik3ffNbBGsU+09BFmXaL1IBb9fiuvq6/KMiNycSg== + dependencies: + "@types/mdast" "^3.0.0" + unist-util-is "^5.0.0" + +mdast-util-to-markdown@^1.0.0, mdast-util-to-markdown@^1.3.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/mdast-util-to-markdown/-/mdast-util-to-markdown-1.5.0.tgz#c13343cb3fc98621911d33b5cd42e7d0731171c6" + integrity sha512-bbv7TPv/WC49thZPg3jXuqzuvI45IL2EVAr/KxF0BSdHsU0ceFHOmwQn6evxAh1GaoK/6GQ1wp4R4oW2+LFL/A== + dependencies: + "@types/mdast" "^3.0.0" + "@types/unist" "^2.0.0" + longest-streak "^3.0.0" + mdast-util-phrasing "^3.0.0" + mdast-util-to-string "^3.0.0" + micromark-util-decode-string "^1.0.0" + unist-util-visit "^4.0.0" + zwitch "^2.0.0" + +mdast-util-to-string@3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/mdast-util-to-string/-/mdast-util-to-string-3.1.0.tgz#56c506d065fbf769515235e577b5a261552d56e9" + integrity sha512-n4Vypz/DZgwo0iMHLQL49dJzlp7YtAJP+N07MZHpjPf/5XJuHUWstviF4Mn2jEiR/GNmtnRRqnwsXExk3igfFA== + +mdast-util-to-string@^3.0.0, mdast-util-to-string@^3.1.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/mdast-util-to-string/-/mdast-util-to-string-3.2.0.tgz#66f7bb6324756741c5f47a53557f0cbf16b6f789" + integrity sha512-V4Zn/ncyN1QNSqSBxTrMOLpjr+IKdHl2v3KVLoWmDPscP4r9GcCi71gjgvUV1SFSKh92AjAG4peFuBl2/YgCJg== + dependencies: + "@types/mdast" "^3.0.0" + +merge2@^1.3.0, merge2@^1.4.1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" + integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== + +micromark-core-commonmark@^1.0.0, micromark-core-commonmark@^1.0.1: + version "1.0.6" + resolved "https://registry.yarnpkg.com/micromark-core-commonmark/-/micromark-core-commonmark-1.0.6.tgz#edff4c72e5993d93724a3c206970f5a15b0585ad" + integrity sha512-K+PkJTxqjFfSNkfAhp4GB+cZPfQd6dxtTXnf+RjZOV7T4EEXnvgzOcnp+eSTmpGk9d1S9sL6/lqrgSNn/s0HZA== + dependencies: + decode-named-character-reference "^1.0.0" + micromark-factory-destination "^1.0.0" + micromark-factory-label "^1.0.0" + micromark-factory-space "^1.0.0" + micromark-factory-title "^1.0.0" + micromark-factory-whitespace "^1.0.0" + micromark-util-character "^1.0.0" + micromark-util-chunked "^1.0.0" + micromark-util-classify-character "^1.0.0" + micromark-util-html-tag-name "^1.0.0" + micromark-util-normalize-identifier "^1.0.0" + micromark-util-resolve-all "^1.0.0" + micromark-util-subtokenize "^1.0.0" + micromark-util-symbol "^1.0.0" + micromark-util-types "^1.0.1" + uvu "^0.5.0" + +micromark-extension-gfm-autolink-literal@^1.0.0: + version "1.0.4" + resolved "https://registry.yarnpkg.com/micromark-extension-gfm-autolink-literal/-/micromark-extension-gfm-autolink-literal-1.0.4.tgz#3a8af48264be47138654ab0b8700a8e22785ef07" + integrity sha512-WCssN+M9rUyfHN5zPBn3/f0mIA7tqArHL/EKbv3CZK+LT2rG77FEikIQEqBkv46fOqXQK4NEW/Pc7Z27gshpeg== + dependencies: + micromark-util-character "^1.0.0" + micromark-util-sanitize-uri "^1.0.0" + micromark-util-symbol "^1.0.0" + micromark-util-types "^1.0.0" + +micromark-extension-gfm-footnote@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/micromark-extension-gfm-footnote/-/micromark-extension-gfm-footnote-1.1.0.tgz#73e3db823db9defef25f68074cb4cf4bb9cf6a8c" + integrity sha512-RWYce7j8+c0n7Djzv5NzGEGitNNYO3uj+h/XYMdS/JinH1Go+/Qkomg/rfxExFzYTiydaV6GLeffGO5qcJbMPA== + dependencies: + micromark-core-commonmark "^1.0.0" + micromark-factory-space "^1.0.0" + micromark-util-character "^1.0.0" + micromark-util-normalize-identifier "^1.0.0" + micromark-util-sanitize-uri "^1.0.0" + micromark-util-symbol "^1.0.0" + micromark-util-types "^1.0.0" + uvu "^0.5.0" + +micromark-extension-gfm-strikethrough@^1.0.0: + version "1.0.5" + resolved "https://registry.yarnpkg.com/micromark-extension-gfm-strikethrough/-/micromark-extension-gfm-strikethrough-1.0.5.tgz#4db40b87d674a6fe1d00d59ac91118e4f5960f12" + integrity sha512-X0oI5eYYQVARhiNfbETy7BfLSmSilzN1eOuoRnrf9oUNsPRrWOAe9UqSizgw1vNxQBfOwL+n2610S3bYjVNi7w== + dependencies: + micromark-util-chunked "^1.0.0" + micromark-util-classify-character "^1.0.0" + micromark-util-resolve-all "^1.0.0" + micromark-util-symbol "^1.0.0" + micromark-util-types "^1.0.0" + uvu "^0.5.0" + +micromark-extension-gfm-table@^1.0.0: + version "1.0.6" + resolved "https://registry.yarnpkg.com/micromark-extension-gfm-table/-/micromark-extension-gfm-table-1.0.6.tgz#22b2b18dff9db39bdb29d6017e53bdd370672c8e" + integrity sha512-92pq7Q+T+4kXH4M6kL+pc8WU23Z9iuhcqmtYFWdFWjm73ZscFpH2xE28+XFpGWlvgq3LUwcN0XC0PGCicYFpgA== + dependencies: + micromark-factory-space "^1.0.0" + micromark-util-character "^1.0.0" + micromark-util-symbol "^1.0.0" + micromark-util-types "^1.0.0" + uvu "^0.5.0" + +micromark-extension-gfm-tagfilter@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/micromark-extension-gfm-tagfilter/-/micromark-extension-gfm-tagfilter-1.0.2.tgz#aa7c4dd92dabbcb80f313ebaaa8eb3dac05f13a7" + integrity sha512-5XWB9GbAUSHTn8VPU8/1DBXMuKYT5uOgEjJb8gN3mW0PNW5OPHpSdojoqf+iq1xo7vWzw/P8bAHY0n6ijpXF7g== + dependencies: + micromark-util-types "^1.0.0" + +micromark-extension-gfm-task-list-item@^1.0.0: + version "1.0.4" + resolved "https://registry.yarnpkg.com/micromark-extension-gfm-task-list-item/-/micromark-extension-gfm-task-list-item-1.0.4.tgz#4b66d87847de40cef2b5ceddb9f9629a6dfe7472" + integrity sha512-9XlIUUVnYXHsFF2HZ9jby4h3npfX10S1coXTnV035QGPgrtNYQq3J6IfIvcCIUAJrrqBVi5BqA/LmaOMJqPwMQ== + dependencies: + micromark-factory-space "^1.0.0" + micromark-util-character "^1.0.0" + micromark-util-symbol "^1.0.0" + micromark-util-types "^1.0.0" + uvu "^0.5.0" + +micromark-extension-gfm@^2.0.0: + version "2.0.3" + resolved "https://registry.yarnpkg.com/micromark-extension-gfm/-/micromark-extension-gfm-2.0.3.tgz#e517e8579949a5024a493e49204e884aa74f5acf" + integrity sha512-vb9OoHqrhCmbRidQv/2+Bc6pkP0FrtlhurxZofvOEy5o8RtuuvTq+RQ1Vw5ZDNrVraQZu3HixESqbG+0iKk/MQ== + dependencies: + micromark-extension-gfm-autolink-literal "^1.0.0" + micromark-extension-gfm-footnote "^1.0.0" + micromark-extension-gfm-strikethrough "^1.0.0" + micromark-extension-gfm-table "^1.0.0" + micromark-extension-gfm-tagfilter "^1.0.0" + micromark-extension-gfm-task-list-item "^1.0.0" + micromark-util-combine-extensions "^1.0.0" + micromark-util-types "^1.0.0" + +micromark-factory-destination@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/micromark-factory-destination/-/micromark-factory-destination-1.0.0.tgz#fef1cb59ad4997c496f887b6977aa3034a5a277e" + integrity sha512-eUBA7Rs1/xtTVun9TmV3gjfPz2wEwgK5R5xcbIM5ZYAtvGF6JkyaDsj0agx8urXnO31tEO6Ug83iVH3tdedLnw== + dependencies: + micromark-util-character "^1.0.0" + micromark-util-symbol "^1.0.0" + micromark-util-types "^1.0.0" + +micromark-factory-label@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/micromark-factory-label/-/micromark-factory-label-1.0.2.tgz#6be2551fa8d13542fcbbac478258fb7a20047137" + integrity sha512-CTIwxlOnU7dEshXDQ+dsr2n+yxpP0+fn271pu0bwDIS8uqfFcumXpj5mLn3hSC8iw2MUr6Gx8EcKng1dD7i6hg== + dependencies: + micromark-util-character "^1.0.0" + micromark-util-symbol "^1.0.0" + micromark-util-types "^1.0.0" + uvu "^0.5.0" + +micromark-factory-space@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/micromark-factory-space/-/micromark-factory-space-1.0.0.tgz#cebff49968f2b9616c0fcb239e96685cb9497633" + integrity sha512-qUmqs4kj9a5yBnk3JMLyjtWYN6Mzfcx8uJfi5XAveBniDevmZasdGBba5b4QsvRcAkmvGo5ACmSUmyGiKTLZew== + dependencies: + micromark-util-character "^1.0.0" + micromark-util-types "^1.0.0" + +micromark-factory-title@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/micromark-factory-title/-/micromark-factory-title-1.0.2.tgz#7e09287c3748ff1693930f176e1c4a328382494f" + integrity sha512-zily+Nr4yFqgMGRKLpTVsNl5L4PMu485fGFDOQJQBl2NFpjGte1e86zC0da93wf97jrc4+2G2GQudFMHn3IX+A== + dependencies: + micromark-factory-space "^1.0.0" + micromark-util-character "^1.0.0" + micromark-util-symbol "^1.0.0" + micromark-util-types "^1.0.0" + uvu "^0.5.0" + +micromark-factory-whitespace@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/micromark-factory-whitespace/-/micromark-factory-whitespace-1.0.0.tgz#e991e043ad376c1ba52f4e49858ce0794678621c" + integrity sha512-Qx7uEyahU1lt1RnsECBiuEbfr9INjQTGa6Err+gF3g0Tx4YEviPbqqGKNv/NrBaE7dVHdn1bVZKM/n5I/Bak7A== + dependencies: + micromark-factory-space "^1.0.0" + micromark-util-character "^1.0.0" + micromark-util-symbol "^1.0.0" + micromark-util-types "^1.0.0" + +micromark-util-character@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/micromark-util-character/-/micromark-util-character-1.1.0.tgz#d97c54d5742a0d9611a68ca0cd4124331f264d86" + integrity sha512-agJ5B3unGNJ9rJvADMJ5ZiYjBRyDpzKAOk01Kpi1TKhlT1APx3XZk6eN7RtSz1erbWHC2L8T3xLZ81wdtGRZzg== + dependencies: + micromark-util-symbol "^1.0.0" + micromark-util-types "^1.0.0" + +micromark-util-chunked@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/micromark-util-chunked/-/micromark-util-chunked-1.0.0.tgz#5b40d83f3d53b84c4c6bce30ed4257e9a4c79d06" + integrity sha512-5e8xTis5tEZKgesfbQMKRCyzvffRRUX+lK/y+DvsMFdabAicPkkZV6gO+FEWi9RfuKKoxxPwNL+dFF0SMImc1g== + dependencies: + micromark-util-symbol "^1.0.0" + +micromark-util-classify-character@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/micromark-util-classify-character/-/micromark-util-classify-character-1.0.0.tgz#cbd7b447cb79ee6997dd274a46fc4eb806460a20" + integrity sha512-F8oW2KKrQRb3vS5ud5HIqBVkCqQi224Nm55o5wYLzY/9PwHGXC01tr3d7+TqHHz6zrKQ72Okwtvm/xQm6OVNZA== + dependencies: + micromark-util-character "^1.0.0" + micromark-util-symbol "^1.0.0" + micromark-util-types "^1.0.0" + +micromark-util-combine-extensions@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/micromark-util-combine-extensions/-/micromark-util-combine-extensions-1.0.0.tgz#91418e1e74fb893e3628b8d496085639124ff3d5" + integrity sha512-J8H058vFBdo/6+AsjHp2NF7AJ02SZtWaVUjsayNFeAiydTxUwViQPxN0Hf8dp4FmCQi0UUFovFsEyRSUmFH3MA== + dependencies: + micromark-util-chunked "^1.0.0" + micromark-util-types "^1.0.0" + +micromark-util-decode-numeric-character-reference@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/micromark-util-decode-numeric-character-reference/-/micromark-util-decode-numeric-character-reference-1.0.0.tgz#dcc85f13b5bd93ff8d2868c3dba28039d490b946" + integrity sha512-OzO9AI5VUtrTD7KSdagf4MWgHMtET17Ua1fIpXTpuhclCqD8egFWo85GxSGvxgkGS74bEahvtM0WP0HjvV0e4w== + dependencies: + micromark-util-symbol "^1.0.0" + +micromark-util-decode-string@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/micromark-util-decode-string/-/micromark-util-decode-string-1.0.2.tgz#942252ab7a76dec2dbf089cc32505ee2bc3acf02" + integrity sha512-DLT5Ho02qr6QWVNYbRZ3RYOSSWWFuH3tJexd3dgN1odEuPNxCngTCXJum7+ViRAd9BbdxCvMToPOD/IvVhzG6Q== + dependencies: + decode-named-character-reference "^1.0.0" + micromark-util-character "^1.0.0" + micromark-util-decode-numeric-character-reference "^1.0.0" + micromark-util-symbol "^1.0.0" + +micromark-util-encode@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/micromark-util-encode/-/micromark-util-encode-1.0.1.tgz#2c1c22d3800870ad770ece5686ebca5920353383" + integrity sha512-U2s5YdnAYexjKDel31SVMPbfi+eF8y1U4pfiRW/Y8EFVCy/vgxk/2wWTxzcqE71LHtCuCzlBDRU2a5CQ5j+mQA== + +micromark-util-html-tag-name@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/micromark-util-html-tag-name/-/micromark-util-html-tag-name-1.1.0.tgz#eb227118befd51f48858e879b7a419fc0df20497" + integrity sha512-BKlClMmYROy9UiV03SwNmckkjn8QHVaWkqoAqzivabvdGcwNGMMMH/5szAnywmsTBUzDsU57/mFi0sp4BQO6dA== + +micromark-util-normalize-identifier@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/micromark-util-normalize-identifier/-/micromark-util-normalize-identifier-1.0.0.tgz#4a3539cb8db954bbec5203952bfe8cedadae7828" + integrity sha512-yg+zrL14bBTFrQ7n35CmByWUTFsgst5JhA4gJYoty4Dqzj4Z4Fr/DHekSS5aLfH9bdlfnSvKAWsAgJhIbogyBg== + dependencies: + micromark-util-symbol "^1.0.0" + +micromark-util-resolve-all@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/micromark-util-resolve-all/-/micromark-util-resolve-all-1.0.0.tgz#a7c363f49a0162e931960c44f3127ab58f031d88" + integrity sha512-CB/AGk98u50k42kvgaMM94wzBqozSzDDaonKU7P7jwQIuH2RU0TeBqGYJz2WY1UdihhjweivStrJ2JdkdEmcfw== + dependencies: + micromark-util-types "^1.0.0" + +micromark-util-sanitize-uri@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-1.1.0.tgz#f12e07a85106b902645e0364feb07cf253a85aee" + integrity sha512-RoxtuSCX6sUNtxhbmsEFQfWzs8VN7cTctmBPvYivo98xb/kDEoTCtJQX5wyzIYEmk/lvNFTat4hL8oW0KndFpg== + dependencies: + micromark-util-character "^1.0.0" + micromark-util-encode "^1.0.0" + micromark-util-symbol "^1.0.0" + +micromark-util-subtokenize@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/micromark-util-subtokenize/-/micromark-util-subtokenize-1.0.2.tgz#ff6f1af6ac836f8bfdbf9b02f40431760ad89105" + integrity sha512-d90uqCnXp/cy4G881Ub4psE57Sf8YD0pim9QdjCRNjfas2M1u6Lbt+XZK9gnHL2XFhnozZiEdCa9CNfXSfQ6xA== + dependencies: + micromark-util-chunked "^1.0.0" + micromark-util-symbol "^1.0.0" + micromark-util-types "^1.0.0" + uvu "^0.5.0" + +micromark-util-symbol@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/micromark-util-symbol/-/micromark-util-symbol-1.0.1.tgz#b90344db62042ce454f351cf0bebcc0a6da4920e" + integrity sha512-oKDEMK2u5qqAptasDAwWDXq0tG9AssVwAx3E9bBF3t/shRIGsWIRG+cGafs2p/SnDSOecnt6hZPCE2o6lHfFmQ== + +micromark-util-types@^1.0.0, micromark-util-types@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/micromark-util-types/-/micromark-util-types-1.0.2.tgz#f4220fdb319205812f99c40f8c87a9be83eded20" + integrity sha512-DCfg/T8fcrhrRKTPjRrw/5LLvdGV7BHySf/1LOZx7TzWZdYRjogNtyNq885z3nNallwr3QUKARjqvHqX1/7t+w== + +micromark@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/micromark/-/micromark-3.1.0.tgz#eeba0fe0ac1c9aaef675157b52c166f125e89f62" + integrity sha512-6Mj0yHLdUZjHnOPgr5xfWIMqMWS12zDN6iws9SLuSz76W8jTtAv24MN4/CL7gJrl5vtxGInkkqDv/JIoRsQOvA== + dependencies: + "@types/debug" "^4.0.0" + debug "^4.0.0" + decode-named-character-reference "^1.0.0" + micromark-core-commonmark "^1.0.1" + micromark-factory-space "^1.0.0" + micromark-util-character "^1.0.0" + micromark-util-chunked "^1.0.0" + micromark-util-combine-extensions "^1.0.0" + micromark-util-decode-numeric-character-reference "^1.0.0" + micromark-util-encode "^1.0.0" + micromark-util-normalize-identifier "^1.0.0" + micromark-util-resolve-all "^1.0.0" + micromark-util-sanitize-uri "^1.0.0" + micromark-util-subtokenize "^1.0.0" + micromark-util-symbol "^1.0.0" + micromark-util-types "^1.0.1" + uvu "^0.5.0" + +micromatch@^4.0.4: + version "4.0.5" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.5.tgz#bc8999a7cbbf77cdc89f132f6e467051b49090c6" + integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA== + dependencies: + braces "^3.0.2" + picomatch "^2.3.1" + +minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" + integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A== + +minimalistic-crypto-utils@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" + integrity sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg== + +minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" + integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== + dependencies: + brace-expansion "^1.1.7" + +mri@^1.1.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/mri/-/mri-1.2.0.tgz#6721480fec2a11a4889861115a48b6cbe7cc8f0b" + integrity sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA== + +ms@2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" + integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== + +mute-stream@~0.0.4: + version "0.0.8" + resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d" + integrity sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA== + +natural-compare-lite@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz#17b09581988979fddafe0201e931ba933c96cbb4" + integrity sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g== + +natural-compare@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" + integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw== + +node-addon-api@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-2.0.2.tgz#432cfa82962ce494b132e9d72a15b29f71ff5d32" + integrity sha512-Ntyt4AIXyaLIuMHF6IOoTakB3K+RWxwtsHNRxllEoA6vPwP9o4866g6YWDLUdnucilZhmkxiHwHr11gAENw+QA== + +node-fetch@^2.6.0, node-fetch@^2.6.1: + version "2.6.11" + resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.11.tgz#cde7fc71deef3131ef80a738919f999e6edfff25" + integrity sha512-4I6pdBY1EthSqDmJkiNk3JIT8cswwR9nfeW/cPdUagJYEQG7R95WRH74wpz7ma8Gh/9dI9FP+OU+0E4FvtA55w== + dependencies: + whatwg-url "^5.0.0" + +node-gyp-build@^4.2.0: + version "4.6.0" + resolved "https://registry.yarnpkg.com/node-gyp-build/-/node-gyp-build-4.6.0.tgz#0c52e4cbf54bbd28b709820ef7b6a3c2d6209055" + integrity sha512-NTZVKn9IylLwUzaKjkas1e4u2DLNcV4rdYagA4PWdPwW87Bi7z+BznyKSRwS/761tV/lzCGXplWsiaMjLqP2zQ== + +once@^1.3.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" + integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== + dependencies: + wrappy "1" + +optionator@^0.9.1: + version "0.9.1" + resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.1.tgz#4f236a6373dae0566a6d43e1326674f50c291499" + integrity sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw== + dependencies: + deep-is "^0.1.3" + fast-levenshtein "^2.0.6" + levn "^0.4.1" + prelude-ls "^1.2.1" + type-check "^0.4.0" + word-wrap "^1.2.3" + +p-limit@^3.0.2: + version "3.1.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" + integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== + dependencies: + yocto-queue "^0.1.0" + +p-locate@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834" + integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw== + dependencies: + p-limit "^3.0.2" + +pako@~1.0.2: + version "1.0.11" + resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.11.tgz#6c9599d340d54dfd3946380252a35705a6b992bf" + integrity sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw== + +parent-module@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" + integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== + dependencies: + callsites "^3.0.0" + +path-exists@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" + integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== + +path-is-absolute@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" + integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== + +path-key@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" + integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== + +path-type@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" + integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== + +phin@^3.6.0: + version "3.7.0" + resolved "https://registry.yarnpkg.com/phin/-/phin-3.7.0.tgz#eeeff7660408515d8cf0c6252901012d4ab7153b" + integrity sha512-DqnVNrpYhKGBZppNKprD+UJylMeEKOZxHgPB+ZP6mGzf3uA2uox4Ep9tUm+rUc8WLIdHT3HcAE4X8fhwQA9JKg== + dependencies: + centra "^2.6.0" + +picomatch@^2.2.1, picomatch@^2.3.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" + integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== + +polka@^0.5.2: + version "0.5.2" + resolved "https://registry.yarnpkg.com/polka/-/polka-0.5.2.tgz#588bee0c5806dbc6c64958de3a1251860e9f2e26" + integrity sha512-FVg3vDmCqP80tOrs+OeNlgXYmFppTXdjD5E7I4ET1NjvtNmQrb1/mJibybKkb/d4NA7YWAr1ojxuhpL3FHqdlw== + dependencies: + "@polka/url" "^0.5.0" + trouter "^2.0.1" + +prelude-ls@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" + integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== + +prettier-linter-helpers@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz#d23d41fe1375646de2d0104d3454a3008802cf7b" + integrity sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w== + dependencies: + fast-diff "^1.1.2" + +prettier@^2.7.1: + version "2.8.8" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.8.8.tgz#e8c5d7e98a4305ffe3de2e1fc4aca1a71c28b1da" + integrity sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q== + +process-nextick-args@~2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" + integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== + +prompt@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/prompt/-/prompt-1.3.0.tgz#b1f6d47cb1b6beed4f0660b470f5d3ec157ad7ce" + integrity sha512-ZkaRWtaLBZl7KKAKndKYUL8WqNT+cQHKRZnT4RYYms48jQkFw3rrBL+/N5K/KtdEveHkxs982MX2BkDKub2ZMg== + dependencies: + "@colors/colors" "1.5.0" + async "3.2.3" + read "1.0.x" + revalidator "0.1.x" + winston "2.x" + +punycode@^2.1.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.0.tgz#f67fa67c94da8f4d0cfff981aee4118064199b8f" + integrity sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA== + +queue-microtask@^1.2.2: + version "1.2.3" + resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" + integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== + +read@1.0.x: + version "1.0.7" + resolved "https://registry.yarnpkg.com/read/-/read-1.0.7.tgz#b3da19bd052431a97671d44a42634adf710b40c4" + integrity sha512-rSOKNYUmaxy0om1BNjMN4ezNT6VKK+2xF4GBhc81mkH7L60i6dp8qPYrkndNLT3QPphoII3maL9PVC9XmhHwVQ== + dependencies: + mute-stream "~0.0.4" + +readable-stream@^3.6.0: + version "3.6.2" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.2.tgz#56a9b36ea965c00c5a93ef31eb111a0f11056967" + integrity sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA== + dependencies: + inherits "^2.0.3" + string_decoder "^1.1.1" + util-deprecate "^1.0.1" + +readable-stream@~2.3.6: + version "2.3.8" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.8.tgz#91125e8042bba1b9887f49345f6277027ce8be9b" + integrity sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA== + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.3" + isarray "~1.0.0" + process-nextick-args "~2.0.0" + safe-buffer "~5.1.1" + string_decoder "~1.1.1" + util-deprecate "~1.0.1" + +readdirp@3.6.0: + version "3.6.0" + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" + integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== + dependencies: + picomatch "^2.2.1" + +remark-gfm@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/remark-gfm/-/remark-gfm-3.0.1.tgz#0b180f095e3036545e9dddac0e8df3fa5cfee54f" + integrity sha512-lEFDoi2PICJyNrACFOfDD3JlLkuSbOa5Wd8EPt06HUdptv8Gn0bxYTdbU/XXQ3swAPkEaGxxPN9cbnMHvVu1Ig== + dependencies: + "@types/mdast" "^3.0.0" + mdast-util-gfm "^2.0.0" + micromark-extension-gfm "^2.0.0" + unified "^10.0.0" + +remark-parse@10.0.1: + version "10.0.1" + resolved "https://registry.yarnpkg.com/remark-parse/-/remark-parse-10.0.1.tgz#6f60ae53edbf0cf38ea223fe643db64d112e0775" + integrity sha512-1fUyHr2jLsVOkhbvPRBJ5zTKZZyD6yZzYaWCS6BPBdQ8vEMBCH+9zNCDA6tET/zHCi/jLqjCWtlJZUPk+DbnFw== + dependencies: + "@types/mdast" "^3.0.0" + mdast-util-from-markdown "^1.0.0" + unified "^10.0.0" + +remark-stringify@10.0.2: + version "10.0.2" + resolved "https://registry.yarnpkg.com/remark-stringify/-/remark-stringify-10.0.2.tgz#50414a6983f5008eb9e72eed05f980582d1f69d7" + integrity sha512-6wV3pvbPvHkbNnWB0wdDvVFHOe1hBRAx1Q/5g/EpH4RppAII6J8Gnwe7VbHuXaoKIF6LAg6ExTel/+kNqSQ7lw== + dependencies: + "@types/mdast" "^3.0.0" + mdast-util-to-markdown "^1.0.0" + unified "^10.0.0" + +replace-in-file@^6.3.5: + version "6.3.5" + resolved "https://registry.yarnpkg.com/replace-in-file/-/replace-in-file-6.3.5.tgz#ff956b0ab5bc96613207d603d197cd209400a654" + integrity sha512-arB9d3ENdKva2fxRnSjwBEXfK1npgyci7ZZuwysgAp7ORjHSyxz6oqIjTEv8R0Ydl4Ll7uOAZXL4vbkhGIizCg== + dependencies: + chalk "^4.1.2" + glob "^7.2.0" + yargs "^17.2.1" + +require-directory@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" + integrity sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q== + +resolve-from@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" + integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== + +retry@0.13.1: + version "0.13.1" + resolved "https://registry.yarnpkg.com/retry/-/retry-0.13.1.tgz#185b1587acf67919d63b357349e03537b2484658" + integrity sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg== + +reusify@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" + integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== + +revalidator@0.1.x: + version "0.1.8" + resolved "https://registry.yarnpkg.com/revalidator/-/revalidator-0.1.8.tgz#fece61bfa0c1b52a206bd6b18198184bdd523a3b" + integrity sha512-xcBILK2pA9oh4SiinPEZfhP8HfrB/ha+a2fTMyl7Om2WjlDVrOQy99N2MXXlUHqGJz4qEu2duXxHJjDWuK/0xg== + +rimraf@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" + integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== + dependencies: + glob "^7.1.3" + +run-parallel@^1.1.9: + version "1.2.0" + resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" + integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== + dependencies: + queue-microtask "^1.2.2" + +sade@^1.7.3: + version "1.8.1" + resolved "https://registry.yarnpkg.com/sade/-/sade-1.8.1.tgz#0a78e81d658d394887be57d2a409bf703a3b2701" + integrity sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A== + dependencies: + mri "^1.1.0" + +safe-buffer@~5.1.0, safe-buffer@~5.1.1: + version "5.1.2" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" + integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== + +safe-buffer@~5.2.0: + version "5.2.1" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" + integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== + +scrypt-js@3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/scrypt-js/-/scrypt-js-3.0.1.tgz#d314a57c2aef69d1ad98a138a21fe9eafa9ee312" + integrity sha512-cdwTTnqPu0Hyvf5in5asVdZocVDTNRmR7XEcJuIzMjJeSHybHl7vpB66AzwTaIg6CLSbtjcxc8fqcySfnTkccA== + +semver@^7.3.7: + version "7.5.1" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.5.1.tgz#c90c4d631cf74720e46b21c1d37ea07edfab91ec" + integrity sha512-Wvss5ivl8TMRZXXESstBA4uR5iXgEN/VC5/sOcuXdVLzcdkz4HWetIoRfG5gb5X+ij/G9rw9YoGn3QoQ8OCSpw== + dependencies: + lru-cache "^6.0.0" + +setimmediate@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" + integrity sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA== + +shebang-command@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" + integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== + dependencies: + shebang-regex "^3.0.0" + +shebang-regex@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" + integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== + +slash@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" + integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== + +stack-trace@0.0.x: + version "0.0.10" + resolved "https://registry.yarnpkg.com/stack-trace/-/stack-trace-0.0.10.tgz#547c70b347e8d32b4e108ea1a2a159e5fdde19c0" + integrity sha512-KGzahc7puUKkzyMt+IqAep+TVNbKP+k2Lmwhub39m1AsTSkaDutx56aDCo+HLDzf/D26BIHTJWNiTG1KAJiQCg== + +string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: + version "4.2.3" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" + integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.1" + +string_decoder@^1.1.1: + version "1.3.0" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" + integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== + dependencies: + safe-buffer "~5.2.0" + +string_decoder@~1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" + integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== + dependencies: + safe-buffer "~5.1.0" + +strip-ansi@^6.0.0, strip-ansi@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" + integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== + dependencies: + ansi-regex "^5.0.1" + +strip-json-comments@^3.1.0, strip-json-comments@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" + integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== + +supports-color@^7.1.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" + integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== + dependencies: + has-flag "^4.0.0" + +text-table@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" + integrity sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw== + +to-regex-range@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" + integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== + dependencies: + is-number "^7.0.0" + +tr46@~0.0.3: + version "0.0.3" + resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" + integrity sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw== + +trough@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/trough/-/trough-2.1.0.tgz#0f7b511a4fde65a46f18477ab38849b22c554876" + integrity sha512-AqTiAOLcj85xS7vQ8QkAV41hPDIJ71XJB4RCUrzo/1GM2CQwhkJGaf9Hgr7BOugMRpgGUrqRg/DrBDl4H40+8g== + +trouter@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/trouter/-/trouter-2.0.1.tgz#2726a5f8558e090d24c3a393f09eaab1df232df6" + integrity sha512-kr8SKKw94OI+xTGOkfsvwZQ8mWoikZDd2n8XZHjJVZUARZT+4/VV6cacRS6CLsH9bNm+HFIPU1Zx4CnNnb4qlQ== + dependencies: + matchit "^1.0.0" + +tslib@^1.11.1, tslib@^1.8.1: + version "1.14.1" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" + integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== + +tslib@^2.3.1, tslib@^2.5.0: + version "2.5.2" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.5.2.tgz#1b6f07185c881557b0ffa84b111a0106989e8338" + integrity sha512-5svOrSA2w3iGFDs1HibEVBGbDrAY82bFQ3HZ3ixB+88nsbsWQoKqDRb5UBYAUPEzbBn6dAp5gRNXglySbx1MlA== + +tsutils@^3.21.0: + version "3.21.0" + resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.21.0.tgz#b48717d394cea6c1e096983eed58e9d61715b623" + integrity sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA== + dependencies: + tslib "^1.8.1" + +type-check@^0.4.0, type-check@~0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1" + integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew== + dependencies: + prelude-ls "^1.2.1" + +type-fest@^0.20.2: + version "0.20.2" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4" + integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== + +typescript@^4.9.5: + version "4.9.5" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.9.5.tgz#095979f9bcc0d09da324d58d03ce8f8374cbe65a" + integrity sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g== + +unfetch@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/unfetch/-/unfetch-4.2.0.tgz#7e21b0ef7d363d8d9af0fb929a5555f6ef97a3be" + integrity sha512-F9p7yYCn6cIW9El1zi0HI6vqpeIvBsr3dSuRO6Xuppb1u5rXpCPmMvLSyECLhybr9isec8Ohl0hPekMVrEinDA== + +unified@10.1.2, unified@^10.0.0: + version "10.1.2" + resolved "https://registry.yarnpkg.com/unified/-/unified-10.1.2.tgz#b1d64e55dafe1f0b98bb6c719881103ecf6c86df" + integrity sha512-pUSWAi/RAnVy1Pif2kAoeWNBa3JVrx0MId2LASj8G+7AiHWoKZNTomq6LG326T68U7/e263X6fTdcXIy7XnF7Q== + dependencies: + "@types/unist" "^2.0.0" + bail "^2.0.0" + extend "^3.0.0" + is-buffer "^2.0.0" + is-plain-obj "^4.0.0" + trough "^2.0.0" + vfile "^5.0.0" + +unist-util-inspect@7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/unist-util-inspect/-/unist-util-inspect-7.0.1.tgz#7e0db27bb2999bcc0f1b70c4b07be5c6620e843f" + integrity sha512-gEPeSrsYXus8012VJ00p9uZC8D0iogtLLiHlBgvS61hU22KNKduQhMKezJm83viHlLf3TYS2y9SDEFglWPDMKw== + dependencies: + "@types/unist" "^2.0.0" + +unist-util-is@^5.0.0: + version "5.2.1" + resolved "https://registry.yarnpkg.com/unist-util-is/-/unist-util-is-5.2.1.tgz#b74960e145c18dcb6226bc57933597f5486deae9" + integrity sha512-u9njyyfEh43npf1M+yGKDGVPbY/JWEemg5nH05ncKPfi+kBbKBJoTdsogMu33uhytuLlv9y0O7GH7fEdwLdLQw== + dependencies: + "@types/unist" "^2.0.0" + +unist-util-stringify-position@^3.0.0: + version "3.0.3" + resolved "https://registry.yarnpkg.com/unist-util-stringify-position/-/unist-util-stringify-position-3.0.3.tgz#03ad3348210c2d930772d64b489580c13a7db39d" + integrity sha512-k5GzIBZ/QatR8N5X2y+drfpWG8IDBzdnVj6OInRNWm1oXrzydiaAT2OQiA8DPRRZyAKb9b6I2a6PxYklZD0gKg== + dependencies: + "@types/unist" "^2.0.0" + +unist-util-visit-parents@^5.0.0, unist-util-visit-parents@^5.1.1: + version "5.1.3" + resolved "https://registry.yarnpkg.com/unist-util-visit-parents/-/unist-util-visit-parents-5.1.3.tgz#b4520811b0ca34285633785045df7a8d6776cfeb" + integrity sha512-x6+y8g7wWMyQhL1iZfhIPhDAs7Xwbn9nRosDXl7qoPTSCy0yNxnKc+hWokFifWQIDGi154rdUqKvbCa4+1kLhg== + dependencies: + "@types/unist" "^2.0.0" + unist-util-is "^5.0.0" + +unist-util-visit@^4.0.0: + version "4.1.2" + resolved "https://registry.yarnpkg.com/unist-util-visit/-/unist-util-visit-4.1.2.tgz#125a42d1eb876283715a3cb5cceaa531828c72e2" + integrity sha512-MSd8OUGISqHdVvfY9TPhyK2VdUrPgxkUtWSuMHF6XAAFuL4LokseigBnZtPnJMu+FbynTkFNnFlyjxpVKujMRg== + dependencies: + "@types/unist" "^2.0.0" + unist-util-is "^5.0.0" + unist-util-visit-parents "^5.1.1" + +universalify@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.0.tgz#75a4984efedc4b08975c5aeb73f530d02df25717" + integrity sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ== + +uri-js@^4.2.2: + version "4.4.1" + resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" + integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== + dependencies: + punycode "^2.1.0" + +util-deprecate@^1.0.1, util-deprecate@~1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" + integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== + +uvu@^0.5.0: + version "0.5.6" + resolved "https://registry.yarnpkg.com/uvu/-/uvu-0.5.6.tgz#2754ca20bcb0bb59b64e9985e84d2e81058502df" + integrity sha512-+g8ENReyr8YsOc6fv/NVJs2vFdHBnBNdfE49rshrTzDWOlUx4Gq7KOS2GD8eqhy2j+Ejq29+SbKH8yjkAqXqoA== + dependencies: + dequal "^2.0.0" + diff "^5.0.0" + kleur "^4.0.3" + sade "^1.7.3" + +vfile-message@^3.0.0: + version "3.1.4" + resolved "https://registry.yarnpkg.com/vfile-message/-/vfile-message-3.1.4.tgz#15a50816ae7d7c2d1fa87090a7f9f96612b59dea" + integrity sha512-fa0Z6P8HUrQN4BZaX05SIVXic+7kE3b05PWAtPuYP9QLHsLKYR7/AlLW3NtOrpXRLeawpDLMsVkmk5DG0NXgWw== + dependencies: + "@types/unist" "^2.0.0" + unist-util-stringify-position "^3.0.0" + +vfile@^5.0.0: + version "5.3.7" + resolved "https://registry.yarnpkg.com/vfile/-/vfile-5.3.7.tgz#de0677e6683e3380fafc46544cfe603118826ab7" + integrity sha512-r7qlzkgErKjobAmyNIkkSpizsFPYiUPuJb5pNW1RB4JcYVZhs4lIbVqk8XPk033CV/1z8ss5pkax8SuhGpcG8g== + dependencies: + "@types/unist" "^2.0.0" + is-buffer "^2.0.0" + unist-util-stringify-position "^3.0.0" + vfile-message "^3.0.0" + +webidl-conversions@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" + integrity sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ== + +whatwg-url@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d" + integrity sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw== + dependencies: + tr46 "~0.0.3" + webidl-conversions "^3.0.0" + +which@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" + integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== + dependencies: + isexe "^2.0.0" + +winston@2.x: + version "2.4.7" + resolved "https://registry.yarnpkg.com/winston/-/winston-2.4.7.tgz#5791fe08ea7e90db090f1cb31ef98f32531062f1" + integrity sha512-vLB4BqzCKDnnZH9PHGoS2ycawueX4HLqENXQitvFHczhgW2vFpSOn31LZtVr1KU8YTw7DS4tM+cqyovxo8taVg== + dependencies: + async "^2.6.4" + colors "1.0.x" + cycle "1.0.x" + eyes "0.1.x" + isstream "0.1.x" + stack-trace "0.0.x" + +word-wrap@^1.2.3: + version "1.2.3" + resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" + integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== + +wrap-ansi@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" + integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + +wrappy@1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" + integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== + +ws@7.4.6: + version "7.4.6" + resolved "https://registry.yarnpkg.com/ws/-/ws-7.4.6.tgz#5654ca8ecdeee47c33a9a4bf6d28e2be2980377c" + integrity sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A== + +xxhashjs@0.2.2: + version "0.2.2" + resolved "https://registry.yarnpkg.com/xxhashjs/-/xxhashjs-0.2.2.tgz#8a6251567621a1c46a5ae204da0249c7f8caa9d8" + integrity sha512-AkTuIuVTET12tpsVIQo+ZU6f/qDmKuRUcjaqR+OIvm+aCBsZ95i7UVY5WJ9TMsSaZ0DA2WxoZ4acu0sPH+OKAw== + dependencies: + cuint "^0.2.2" + +y18n@^5.0.5: + version "5.0.8" + resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55" + integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== + +yallist@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" + integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== + +yargs-parser@^21.1.1: + version "21.1.1" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-21.1.1.tgz#9096bceebf990d21bb31fa9516e0ede294a77d35" + integrity sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw== + +yargs@17.6.2: + version "17.6.2" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.6.2.tgz#2e23f2944e976339a1ee00f18c77fedee8332541" + integrity sha512-1/9UrdHjDZc0eOU0HxOHoS78C69UD3JRMvzlJ7S79S2nTaWRA/whGCTV8o9e/N/1Va9YIV7Q4sOxD8VV4pCWOw== + dependencies: + cliui "^8.0.1" + escalade "^3.1.1" + get-caller-file "^2.0.5" + require-directory "^2.1.1" + string-width "^4.2.3" + y18n "^5.0.5" + yargs-parser "^21.1.1" + +yargs@^17.2.1: + version "17.7.2" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.7.2.tgz#991df39aca675a192b816e1e0363f9d75d2aa269" + integrity sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w== + dependencies: + cliui "^8.0.1" + escalade "^3.1.1" + get-caller-file "^2.0.5" + require-directory "^2.1.1" + string-width "^4.2.3" + y18n "^5.0.5" + yargs-parser "^21.1.1" + +yocto-queue@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" + integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== + +zwitch@^2.0.0: + version "2.0.4" + resolved "https://registry.yarnpkg.com/zwitch/-/zwitch-2.0.4.tgz#c827d4b0acb76fc3e685a4c6ec2902d51070e9d7" + integrity sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==