From b1c74ef2968570668fe8c3f715bbbb370699645f Mon Sep 17 00:00:00 2001 From: Sayand Sathish Date: Wed, 20 Mar 2024 07:50:53 +0530 Subject: [PATCH 01/34] web-app/chore: Move web-app application code into src This makes more space to locate infra inside the `web-app` folder. The paths were renamed as necessary --- web-app/{ => src}/.env.sample | 0 web-app/{ => src}/.eslintrc.cjs | 0 web-app/{ => src}/.gitignore | 0 web-app/{ => src}/README.md | 0 .../app/components/root/AutoLogin/index.tsx | 0 .../{ => src}/app/components/root/Navbar/index.tsx | 0 .../components/root/Navbar/lib/useStickyNavbar.ts | 0 web-app/{ => src}/app/components/ui/alert.tsx | 0 web-app/{ => src}/app/components/ui/button.tsx | 0 web-app/{ => src}/app/components/ui/card.tsx | 0 web-app/{ => src}/app/components/ui/dialog.tsx | 0 web-app/{ => src}/app/components/ui/slider.tsx | 0 web-app/{ => src}/app/components/ui/toast.tsx | 0 web-app/{ => src}/app/components/ui/toaster.tsx | 0 .../{ => src}/app/components/ui/underline-link.tsx | 0 web-app/{ => src}/app/components/ui/use-toast.ts | 0 .../app/contracts/FinthetixStakingContract.ts | 0 web-app/{ => src}/app/lib/assets/GithubIcon.tsx | 0 web-app/{ => src}/app/lib/assets/XIcon.tsx | 0 web-app/{ => src}/app/lib/constants.ts | 0 web-app/{ => src}/app/lib/env.ts | 0 .../{ => src}/app/lib/hooks/useRootLoaderData.tsx | 0 web-app/{ => src}/app/lib/loaders/chainInfo.ts | 0 web-app/{ => src}/app/lib/loaders/dappInfo.ts | 0 web-app/{ => src}/app/lib/types.ts | 0 web-app/{ => src}/app/lib/ui-errors.ts | 0 .../app/lib/utils/getPercentageOfTokenCount.ts | 0 web-app/{ => src}/app/lib/utils/readableERC20.ts | 0 web-app/{ => src}/app/lib/utils/shadcn.ts | 0 web-app/{ => src}/app/lib/utils/sortTxns.ts | 0 .../app/lib/utils/stringifyBigIntsInObj.ts | 0 web-app/{ => src}/app/lib/utils/tryItAsync.ts | 0 web-app/{ => src}/app/redux/Initializer/index.tsx | 0 web-app/{ => src}/app/redux/features/user/slice.ts | 0 web-app/{ => src}/app/redux/hooks.ts | 0 web-app/{ => src}/app/redux/persister.ts | 0 .../{ => src}/app/redux/services/lib/Metamask.ts | 0 web-app/{ => src}/app/redux/services/lib/utils.ts | 0 web-app/{ => src}/app/redux/services/metamask.tsx | 0 web-app/{ => src}/app/redux/store.ts | 0 web-app/{ => src}/app/root.tsx | 0 web-app/{ => src}/app/routes/_index/route.tsx | 0 .../_index/subcomponents/CreditsSection/index.tsx | 0 .../_index/subcomponents/HeroSection/index.tsx | 0 .../HowItWorksSection/assets/staking.svg | 0 .../subcomponents/HowItWorksSection/index.tsx | 0 .../subcomponents/RippleHeroBg/index.module.css | 0 .../_index/subcomponents/RippleHeroBg/index.tsx | 0 .../routes/dashboard/lib/useTimeLeftToCooldownMs.ts | 0 web-app/{ => src}/app/routes/dashboard/route.tsx | 0 .../subcomponents/CooldownBanner/index.tsx | 0 .../CooldownBanner/lib/formatTimeToCooldown.ts | 0 .../dashboard/subcomponents/RewardsCard/index.tsx | 0 .../subcomponents/SampleTokensBanner/index.tsx | 0 .../dashboard/subcomponents/StakingCard/index.tsx | 0 .../StakingCard/subcomponents/StakeBtn/index.tsx | 0 .../subcomponents/StakeBtnDialogContent/index.tsx | 0 .../StakeBtnDialogContent/lib/hooks.tsx | 0 .../subcomponents/InsufficientTokensAlert/index.tsx | 0 .../UnstakeBtn/UnstakeBtnDialogContent/index.tsx | 0 .../UnstakeBtnDialogContent/lib/hooks.tsx | 0 .../StakingCard/subcomponents/UnstakeBtn/index.tsx | 0 .../subcomponents/UserLogDataGraph/index.tsx | 0 .../UserLogDataGraph/lib/getGraphDataFromLogData.ts | 0 .../subcomponents/StakeAndRewardAmtGraphs/index.tsx | 0 .../StakeAndRewardAmtGraphs/lib/useChartData.ts | 0 .../lib/useChartOptions/index.ts | 0 .../lib/useChartOptions/lib/types.ts | 0 .../lib/useRewardAmtTickFormatter.ts | 0 .../lib/useStakedAmtTickFormatter.ts | 0 .../useChartOptions/lib/useTooltipLabelFormatter.ts | 0 .../subcomponents/EmptyChartDatasetMsg/index.tsx | 0 .../subcomponents/lib/TokenAmtSliderInput/index.tsx | 0 web-app/{ => src}/app/tailwind.css | 0 web-app/{ => src}/components.json | 0 web-app/{ => src}/package-lock.json | 0 web-app/{ => src}/package.json | 6 +++--- web-app/{ => src}/postcss.config.js | 0 web-app/{ => src}/public/favicon.ico | Bin web-app/{ => src}/remix.config.js | 0 web-app/{ => src}/remix.env.d.ts | 0 web-app/{ => src}/tailwind.config.ts | 0 web-app/{ => src}/tsconfig.json | 0 83 files changed, 3 insertions(+), 3 deletions(-) rename web-app/{ => src}/.env.sample (100%) rename web-app/{ => src}/.eslintrc.cjs (100%) rename web-app/{ => src}/.gitignore (100%) rename web-app/{ => src}/README.md (100%) rename web-app/{ => src}/app/components/root/AutoLogin/index.tsx (100%) rename web-app/{ => src}/app/components/root/Navbar/index.tsx (100%) rename web-app/{ => src}/app/components/root/Navbar/lib/useStickyNavbar.ts (100%) rename web-app/{ => src}/app/components/ui/alert.tsx (100%) rename web-app/{ => src}/app/components/ui/button.tsx (100%) rename web-app/{ => src}/app/components/ui/card.tsx (100%) rename web-app/{ => src}/app/components/ui/dialog.tsx (100%) rename web-app/{ => src}/app/components/ui/slider.tsx (100%) rename web-app/{ => src}/app/components/ui/toast.tsx (100%) rename web-app/{ => src}/app/components/ui/toaster.tsx (100%) rename web-app/{ => src}/app/components/ui/underline-link.tsx (100%) rename web-app/{ => src}/app/components/ui/use-toast.ts (100%) rename web-app/{ => src}/app/contracts/FinthetixStakingContract.ts (100%) rename web-app/{ => src}/app/lib/assets/GithubIcon.tsx (100%) rename web-app/{ => src}/app/lib/assets/XIcon.tsx (100%) rename web-app/{ => src}/app/lib/constants.ts (100%) rename web-app/{ => src}/app/lib/env.ts (100%) rename web-app/{ => src}/app/lib/hooks/useRootLoaderData.tsx (100%) rename web-app/{ => src}/app/lib/loaders/chainInfo.ts (100%) rename web-app/{ => src}/app/lib/loaders/dappInfo.ts (100%) rename web-app/{ => src}/app/lib/types.ts (100%) rename web-app/{ => src}/app/lib/ui-errors.ts (100%) rename web-app/{ => src}/app/lib/utils/getPercentageOfTokenCount.ts (100%) rename web-app/{ => src}/app/lib/utils/readableERC20.ts (100%) rename web-app/{ => src}/app/lib/utils/shadcn.ts (100%) rename web-app/{ => src}/app/lib/utils/sortTxns.ts (100%) rename web-app/{ => src}/app/lib/utils/stringifyBigIntsInObj.ts (100%) rename web-app/{ => src}/app/lib/utils/tryItAsync.ts (100%) rename web-app/{ => src}/app/redux/Initializer/index.tsx (100%) rename web-app/{ => src}/app/redux/features/user/slice.ts (100%) rename web-app/{ => src}/app/redux/hooks.ts (100%) rename web-app/{ => src}/app/redux/persister.ts (100%) rename web-app/{ => src}/app/redux/services/lib/Metamask.ts (100%) rename web-app/{ => src}/app/redux/services/lib/utils.ts (100%) rename web-app/{ => src}/app/redux/services/metamask.tsx (100%) rename web-app/{ => src}/app/redux/store.ts (100%) rename web-app/{ => src}/app/root.tsx (100%) rename web-app/{ => src}/app/routes/_index/route.tsx (100%) rename web-app/{ => src}/app/routes/_index/subcomponents/CreditsSection/index.tsx (100%) rename web-app/{ => src}/app/routes/_index/subcomponents/HeroSection/index.tsx (100%) rename web-app/{ => src}/app/routes/_index/subcomponents/HowItWorksSection/assets/staking.svg (100%) rename web-app/{ => src}/app/routes/_index/subcomponents/HowItWorksSection/index.tsx (100%) rename web-app/{ => src}/app/routes/_index/subcomponents/RippleHeroBg/index.module.css (100%) rename web-app/{ => src}/app/routes/_index/subcomponents/RippleHeroBg/index.tsx (100%) rename web-app/{ => src}/app/routes/dashboard/lib/useTimeLeftToCooldownMs.ts (100%) rename web-app/{ => src}/app/routes/dashboard/route.tsx (100%) rename web-app/{ => src}/app/routes/dashboard/subcomponents/CooldownBanner/index.tsx (100%) rename web-app/{ => src}/app/routes/dashboard/subcomponents/CooldownBanner/lib/formatTimeToCooldown.ts (100%) rename web-app/{ => src}/app/routes/dashboard/subcomponents/RewardsCard/index.tsx (100%) rename web-app/{ => src}/app/routes/dashboard/subcomponents/SampleTokensBanner/index.tsx (100%) rename web-app/{ => src}/app/routes/dashboard/subcomponents/StakingCard/index.tsx (100%) rename web-app/{ => src}/app/routes/dashboard/subcomponents/StakingCard/subcomponents/StakeBtn/index.tsx (100%) rename web-app/{ => src}/app/routes/dashboard/subcomponents/StakingCard/subcomponents/StakeBtn/subcomponents/StakeBtnDialogContent/index.tsx (100%) rename web-app/{ => src}/app/routes/dashboard/subcomponents/StakingCard/subcomponents/StakeBtn/subcomponents/StakeBtnDialogContent/lib/hooks.tsx (100%) rename web-app/{ => src}/app/routes/dashboard/subcomponents/StakingCard/subcomponents/StakeBtn/subcomponents/StakeBtnDialogContent/subcomponents/InsufficientTokensAlert/index.tsx (100%) rename web-app/{ => src}/app/routes/dashboard/subcomponents/StakingCard/subcomponents/UnstakeBtn/UnstakeBtnDialogContent/index.tsx (100%) rename web-app/{ => src}/app/routes/dashboard/subcomponents/StakingCard/subcomponents/UnstakeBtn/UnstakeBtnDialogContent/lib/hooks.tsx (100%) rename web-app/{ => src}/app/routes/dashboard/subcomponents/StakingCard/subcomponents/UnstakeBtn/index.tsx (100%) rename web-app/{ => src}/app/routes/dashboard/subcomponents/UserLogDataGraph/index.tsx (100%) rename web-app/{ => src}/app/routes/dashboard/subcomponents/UserLogDataGraph/lib/getGraphDataFromLogData.ts (100%) rename web-app/{ => src}/app/routes/dashboard/subcomponents/UserLogDataGraph/subcomponents/StakeAndRewardAmtGraphs/index.tsx (100%) rename web-app/{ => src}/app/routes/dashboard/subcomponents/UserLogDataGraph/subcomponents/StakeAndRewardAmtGraphs/lib/useChartData.ts (100%) rename web-app/{ => src}/app/routes/dashboard/subcomponents/UserLogDataGraph/subcomponents/StakeAndRewardAmtGraphs/lib/useChartOptions/index.ts (100%) rename web-app/{ => src}/app/routes/dashboard/subcomponents/UserLogDataGraph/subcomponents/StakeAndRewardAmtGraphs/lib/useChartOptions/lib/types.ts (100%) rename web-app/{ => src}/app/routes/dashboard/subcomponents/UserLogDataGraph/subcomponents/StakeAndRewardAmtGraphs/lib/useChartOptions/lib/useRewardAmtTickFormatter.ts (100%) rename web-app/{ => src}/app/routes/dashboard/subcomponents/UserLogDataGraph/subcomponents/StakeAndRewardAmtGraphs/lib/useChartOptions/lib/useStakedAmtTickFormatter.ts (100%) rename web-app/{ => src}/app/routes/dashboard/subcomponents/UserLogDataGraph/subcomponents/StakeAndRewardAmtGraphs/lib/useChartOptions/lib/useTooltipLabelFormatter.ts (100%) rename web-app/{ => src}/app/routes/dashboard/subcomponents/UserLogDataGraph/subcomponents/StakeAndRewardAmtGraphs/subcomponents/EmptyChartDatasetMsg/index.tsx (100%) rename web-app/{ => src}/app/routes/dashboard/subcomponents/lib/TokenAmtSliderInput/index.tsx (100%) rename web-app/{ => src}/app/tailwind.css (100%) rename web-app/{ => src}/components.json (100%) rename web-app/{ => src}/package-lock.json (100%) rename web-app/{ => src}/package.json (93%) rename web-app/{ => src}/postcss.config.js (100%) rename web-app/{ => src}/public/favicon.ico (100%) rename web-app/{ => src}/remix.config.js (100%) rename web-app/{ => src}/remix.env.d.ts (100%) rename web-app/{ => src}/tailwind.config.ts (100%) rename web-app/{ => src}/tsconfig.json (100%) diff --git a/web-app/.env.sample b/web-app/src/.env.sample similarity index 100% rename from web-app/.env.sample rename to web-app/src/.env.sample diff --git a/web-app/.eslintrc.cjs b/web-app/src/.eslintrc.cjs similarity index 100% rename from web-app/.eslintrc.cjs rename to web-app/src/.eslintrc.cjs diff --git a/web-app/.gitignore b/web-app/src/.gitignore similarity index 100% rename from web-app/.gitignore rename to web-app/src/.gitignore diff --git a/web-app/README.md b/web-app/src/README.md similarity index 100% rename from web-app/README.md rename to web-app/src/README.md diff --git a/web-app/app/components/root/AutoLogin/index.tsx b/web-app/src/app/components/root/AutoLogin/index.tsx similarity index 100% rename from web-app/app/components/root/AutoLogin/index.tsx rename to web-app/src/app/components/root/AutoLogin/index.tsx diff --git a/web-app/app/components/root/Navbar/index.tsx b/web-app/src/app/components/root/Navbar/index.tsx similarity index 100% rename from web-app/app/components/root/Navbar/index.tsx rename to web-app/src/app/components/root/Navbar/index.tsx diff --git a/web-app/app/components/root/Navbar/lib/useStickyNavbar.ts b/web-app/src/app/components/root/Navbar/lib/useStickyNavbar.ts similarity index 100% rename from web-app/app/components/root/Navbar/lib/useStickyNavbar.ts rename to web-app/src/app/components/root/Navbar/lib/useStickyNavbar.ts diff --git a/web-app/app/components/ui/alert.tsx b/web-app/src/app/components/ui/alert.tsx similarity index 100% rename from web-app/app/components/ui/alert.tsx rename to web-app/src/app/components/ui/alert.tsx diff --git a/web-app/app/components/ui/button.tsx b/web-app/src/app/components/ui/button.tsx similarity index 100% rename from web-app/app/components/ui/button.tsx rename to web-app/src/app/components/ui/button.tsx diff --git a/web-app/app/components/ui/card.tsx b/web-app/src/app/components/ui/card.tsx similarity index 100% rename from web-app/app/components/ui/card.tsx rename to web-app/src/app/components/ui/card.tsx diff --git a/web-app/app/components/ui/dialog.tsx b/web-app/src/app/components/ui/dialog.tsx similarity index 100% rename from web-app/app/components/ui/dialog.tsx rename to web-app/src/app/components/ui/dialog.tsx diff --git a/web-app/app/components/ui/slider.tsx b/web-app/src/app/components/ui/slider.tsx similarity index 100% rename from web-app/app/components/ui/slider.tsx rename to web-app/src/app/components/ui/slider.tsx diff --git a/web-app/app/components/ui/toast.tsx b/web-app/src/app/components/ui/toast.tsx similarity index 100% rename from web-app/app/components/ui/toast.tsx rename to web-app/src/app/components/ui/toast.tsx diff --git a/web-app/app/components/ui/toaster.tsx b/web-app/src/app/components/ui/toaster.tsx similarity index 100% rename from web-app/app/components/ui/toaster.tsx rename to web-app/src/app/components/ui/toaster.tsx diff --git a/web-app/app/components/ui/underline-link.tsx b/web-app/src/app/components/ui/underline-link.tsx similarity index 100% rename from web-app/app/components/ui/underline-link.tsx rename to web-app/src/app/components/ui/underline-link.tsx diff --git a/web-app/app/components/ui/use-toast.ts b/web-app/src/app/components/ui/use-toast.ts similarity index 100% rename from web-app/app/components/ui/use-toast.ts rename to web-app/src/app/components/ui/use-toast.ts diff --git a/web-app/app/contracts/FinthetixStakingContract.ts b/web-app/src/app/contracts/FinthetixStakingContract.ts similarity index 100% rename from web-app/app/contracts/FinthetixStakingContract.ts rename to web-app/src/app/contracts/FinthetixStakingContract.ts diff --git a/web-app/app/lib/assets/GithubIcon.tsx b/web-app/src/app/lib/assets/GithubIcon.tsx similarity index 100% rename from web-app/app/lib/assets/GithubIcon.tsx rename to web-app/src/app/lib/assets/GithubIcon.tsx diff --git a/web-app/app/lib/assets/XIcon.tsx b/web-app/src/app/lib/assets/XIcon.tsx similarity index 100% rename from web-app/app/lib/assets/XIcon.tsx rename to web-app/src/app/lib/assets/XIcon.tsx diff --git a/web-app/app/lib/constants.ts b/web-app/src/app/lib/constants.ts similarity index 100% rename from web-app/app/lib/constants.ts rename to web-app/src/app/lib/constants.ts diff --git a/web-app/app/lib/env.ts b/web-app/src/app/lib/env.ts similarity index 100% rename from web-app/app/lib/env.ts rename to web-app/src/app/lib/env.ts diff --git a/web-app/app/lib/hooks/useRootLoaderData.tsx b/web-app/src/app/lib/hooks/useRootLoaderData.tsx similarity index 100% rename from web-app/app/lib/hooks/useRootLoaderData.tsx rename to web-app/src/app/lib/hooks/useRootLoaderData.tsx diff --git a/web-app/app/lib/loaders/chainInfo.ts b/web-app/src/app/lib/loaders/chainInfo.ts similarity index 100% rename from web-app/app/lib/loaders/chainInfo.ts rename to web-app/src/app/lib/loaders/chainInfo.ts diff --git a/web-app/app/lib/loaders/dappInfo.ts b/web-app/src/app/lib/loaders/dappInfo.ts similarity index 100% rename from web-app/app/lib/loaders/dappInfo.ts rename to web-app/src/app/lib/loaders/dappInfo.ts diff --git a/web-app/app/lib/types.ts b/web-app/src/app/lib/types.ts similarity index 100% rename from web-app/app/lib/types.ts rename to web-app/src/app/lib/types.ts diff --git a/web-app/app/lib/ui-errors.ts b/web-app/src/app/lib/ui-errors.ts similarity index 100% rename from web-app/app/lib/ui-errors.ts rename to web-app/src/app/lib/ui-errors.ts diff --git a/web-app/app/lib/utils/getPercentageOfTokenCount.ts b/web-app/src/app/lib/utils/getPercentageOfTokenCount.ts similarity index 100% rename from web-app/app/lib/utils/getPercentageOfTokenCount.ts rename to web-app/src/app/lib/utils/getPercentageOfTokenCount.ts diff --git a/web-app/app/lib/utils/readableERC20.ts b/web-app/src/app/lib/utils/readableERC20.ts similarity index 100% rename from web-app/app/lib/utils/readableERC20.ts rename to web-app/src/app/lib/utils/readableERC20.ts diff --git a/web-app/app/lib/utils/shadcn.ts b/web-app/src/app/lib/utils/shadcn.ts similarity index 100% rename from web-app/app/lib/utils/shadcn.ts rename to web-app/src/app/lib/utils/shadcn.ts diff --git a/web-app/app/lib/utils/sortTxns.ts b/web-app/src/app/lib/utils/sortTxns.ts similarity index 100% rename from web-app/app/lib/utils/sortTxns.ts rename to web-app/src/app/lib/utils/sortTxns.ts diff --git a/web-app/app/lib/utils/stringifyBigIntsInObj.ts b/web-app/src/app/lib/utils/stringifyBigIntsInObj.ts similarity index 100% rename from web-app/app/lib/utils/stringifyBigIntsInObj.ts rename to web-app/src/app/lib/utils/stringifyBigIntsInObj.ts diff --git a/web-app/app/lib/utils/tryItAsync.ts b/web-app/src/app/lib/utils/tryItAsync.ts similarity index 100% rename from web-app/app/lib/utils/tryItAsync.ts rename to web-app/src/app/lib/utils/tryItAsync.ts diff --git a/web-app/app/redux/Initializer/index.tsx b/web-app/src/app/redux/Initializer/index.tsx similarity index 100% rename from web-app/app/redux/Initializer/index.tsx rename to web-app/src/app/redux/Initializer/index.tsx diff --git a/web-app/app/redux/features/user/slice.ts b/web-app/src/app/redux/features/user/slice.ts similarity index 100% rename from web-app/app/redux/features/user/slice.ts rename to web-app/src/app/redux/features/user/slice.ts diff --git a/web-app/app/redux/hooks.ts b/web-app/src/app/redux/hooks.ts similarity index 100% rename from web-app/app/redux/hooks.ts rename to web-app/src/app/redux/hooks.ts diff --git a/web-app/app/redux/persister.ts b/web-app/src/app/redux/persister.ts similarity index 100% rename from web-app/app/redux/persister.ts rename to web-app/src/app/redux/persister.ts diff --git a/web-app/app/redux/services/lib/Metamask.ts b/web-app/src/app/redux/services/lib/Metamask.ts similarity index 100% rename from web-app/app/redux/services/lib/Metamask.ts rename to web-app/src/app/redux/services/lib/Metamask.ts diff --git a/web-app/app/redux/services/lib/utils.ts b/web-app/src/app/redux/services/lib/utils.ts similarity index 100% rename from web-app/app/redux/services/lib/utils.ts rename to web-app/src/app/redux/services/lib/utils.ts diff --git a/web-app/app/redux/services/metamask.tsx b/web-app/src/app/redux/services/metamask.tsx similarity index 100% rename from web-app/app/redux/services/metamask.tsx rename to web-app/src/app/redux/services/metamask.tsx diff --git a/web-app/app/redux/store.ts b/web-app/src/app/redux/store.ts similarity index 100% rename from web-app/app/redux/store.ts rename to web-app/src/app/redux/store.ts diff --git a/web-app/app/root.tsx b/web-app/src/app/root.tsx similarity index 100% rename from web-app/app/root.tsx rename to web-app/src/app/root.tsx diff --git a/web-app/app/routes/_index/route.tsx b/web-app/src/app/routes/_index/route.tsx similarity index 100% rename from web-app/app/routes/_index/route.tsx rename to web-app/src/app/routes/_index/route.tsx diff --git a/web-app/app/routes/_index/subcomponents/CreditsSection/index.tsx b/web-app/src/app/routes/_index/subcomponents/CreditsSection/index.tsx similarity index 100% rename from web-app/app/routes/_index/subcomponents/CreditsSection/index.tsx rename to web-app/src/app/routes/_index/subcomponents/CreditsSection/index.tsx diff --git a/web-app/app/routes/_index/subcomponents/HeroSection/index.tsx b/web-app/src/app/routes/_index/subcomponents/HeroSection/index.tsx similarity index 100% rename from web-app/app/routes/_index/subcomponents/HeroSection/index.tsx rename to web-app/src/app/routes/_index/subcomponents/HeroSection/index.tsx diff --git a/web-app/app/routes/_index/subcomponents/HowItWorksSection/assets/staking.svg b/web-app/src/app/routes/_index/subcomponents/HowItWorksSection/assets/staking.svg similarity index 100% rename from web-app/app/routes/_index/subcomponents/HowItWorksSection/assets/staking.svg rename to web-app/src/app/routes/_index/subcomponents/HowItWorksSection/assets/staking.svg diff --git a/web-app/app/routes/_index/subcomponents/HowItWorksSection/index.tsx b/web-app/src/app/routes/_index/subcomponents/HowItWorksSection/index.tsx similarity index 100% rename from web-app/app/routes/_index/subcomponents/HowItWorksSection/index.tsx rename to web-app/src/app/routes/_index/subcomponents/HowItWorksSection/index.tsx diff --git a/web-app/app/routes/_index/subcomponents/RippleHeroBg/index.module.css b/web-app/src/app/routes/_index/subcomponents/RippleHeroBg/index.module.css similarity index 100% rename from web-app/app/routes/_index/subcomponents/RippleHeroBg/index.module.css rename to web-app/src/app/routes/_index/subcomponents/RippleHeroBg/index.module.css diff --git a/web-app/app/routes/_index/subcomponents/RippleHeroBg/index.tsx b/web-app/src/app/routes/_index/subcomponents/RippleHeroBg/index.tsx similarity index 100% rename from web-app/app/routes/_index/subcomponents/RippleHeroBg/index.tsx rename to web-app/src/app/routes/_index/subcomponents/RippleHeroBg/index.tsx diff --git a/web-app/app/routes/dashboard/lib/useTimeLeftToCooldownMs.ts b/web-app/src/app/routes/dashboard/lib/useTimeLeftToCooldownMs.ts similarity index 100% rename from web-app/app/routes/dashboard/lib/useTimeLeftToCooldownMs.ts rename to web-app/src/app/routes/dashboard/lib/useTimeLeftToCooldownMs.ts diff --git a/web-app/app/routes/dashboard/route.tsx b/web-app/src/app/routes/dashboard/route.tsx similarity index 100% rename from web-app/app/routes/dashboard/route.tsx rename to web-app/src/app/routes/dashboard/route.tsx diff --git a/web-app/app/routes/dashboard/subcomponents/CooldownBanner/index.tsx b/web-app/src/app/routes/dashboard/subcomponents/CooldownBanner/index.tsx similarity index 100% rename from web-app/app/routes/dashboard/subcomponents/CooldownBanner/index.tsx rename to web-app/src/app/routes/dashboard/subcomponents/CooldownBanner/index.tsx diff --git a/web-app/app/routes/dashboard/subcomponents/CooldownBanner/lib/formatTimeToCooldown.ts b/web-app/src/app/routes/dashboard/subcomponents/CooldownBanner/lib/formatTimeToCooldown.ts similarity index 100% rename from web-app/app/routes/dashboard/subcomponents/CooldownBanner/lib/formatTimeToCooldown.ts rename to web-app/src/app/routes/dashboard/subcomponents/CooldownBanner/lib/formatTimeToCooldown.ts diff --git a/web-app/app/routes/dashboard/subcomponents/RewardsCard/index.tsx b/web-app/src/app/routes/dashboard/subcomponents/RewardsCard/index.tsx similarity index 100% rename from web-app/app/routes/dashboard/subcomponents/RewardsCard/index.tsx rename to web-app/src/app/routes/dashboard/subcomponents/RewardsCard/index.tsx diff --git a/web-app/app/routes/dashboard/subcomponents/SampleTokensBanner/index.tsx b/web-app/src/app/routes/dashboard/subcomponents/SampleTokensBanner/index.tsx similarity index 100% rename from web-app/app/routes/dashboard/subcomponents/SampleTokensBanner/index.tsx rename to web-app/src/app/routes/dashboard/subcomponents/SampleTokensBanner/index.tsx diff --git a/web-app/app/routes/dashboard/subcomponents/StakingCard/index.tsx b/web-app/src/app/routes/dashboard/subcomponents/StakingCard/index.tsx similarity index 100% rename from web-app/app/routes/dashboard/subcomponents/StakingCard/index.tsx rename to web-app/src/app/routes/dashboard/subcomponents/StakingCard/index.tsx diff --git a/web-app/app/routes/dashboard/subcomponents/StakingCard/subcomponents/StakeBtn/index.tsx b/web-app/src/app/routes/dashboard/subcomponents/StakingCard/subcomponents/StakeBtn/index.tsx similarity index 100% rename from web-app/app/routes/dashboard/subcomponents/StakingCard/subcomponents/StakeBtn/index.tsx rename to web-app/src/app/routes/dashboard/subcomponents/StakingCard/subcomponents/StakeBtn/index.tsx diff --git a/web-app/app/routes/dashboard/subcomponents/StakingCard/subcomponents/StakeBtn/subcomponents/StakeBtnDialogContent/index.tsx b/web-app/src/app/routes/dashboard/subcomponents/StakingCard/subcomponents/StakeBtn/subcomponents/StakeBtnDialogContent/index.tsx similarity index 100% rename from web-app/app/routes/dashboard/subcomponents/StakingCard/subcomponents/StakeBtn/subcomponents/StakeBtnDialogContent/index.tsx rename to web-app/src/app/routes/dashboard/subcomponents/StakingCard/subcomponents/StakeBtn/subcomponents/StakeBtnDialogContent/index.tsx diff --git a/web-app/app/routes/dashboard/subcomponents/StakingCard/subcomponents/StakeBtn/subcomponents/StakeBtnDialogContent/lib/hooks.tsx b/web-app/src/app/routes/dashboard/subcomponents/StakingCard/subcomponents/StakeBtn/subcomponents/StakeBtnDialogContent/lib/hooks.tsx similarity index 100% rename from web-app/app/routes/dashboard/subcomponents/StakingCard/subcomponents/StakeBtn/subcomponents/StakeBtnDialogContent/lib/hooks.tsx rename to web-app/src/app/routes/dashboard/subcomponents/StakingCard/subcomponents/StakeBtn/subcomponents/StakeBtnDialogContent/lib/hooks.tsx diff --git a/web-app/app/routes/dashboard/subcomponents/StakingCard/subcomponents/StakeBtn/subcomponents/StakeBtnDialogContent/subcomponents/InsufficientTokensAlert/index.tsx b/web-app/src/app/routes/dashboard/subcomponents/StakingCard/subcomponents/StakeBtn/subcomponents/StakeBtnDialogContent/subcomponents/InsufficientTokensAlert/index.tsx similarity index 100% rename from web-app/app/routes/dashboard/subcomponents/StakingCard/subcomponents/StakeBtn/subcomponents/StakeBtnDialogContent/subcomponents/InsufficientTokensAlert/index.tsx rename to web-app/src/app/routes/dashboard/subcomponents/StakingCard/subcomponents/StakeBtn/subcomponents/StakeBtnDialogContent/subcomponents/InsufficientTokensAlert/index.tsx diff --git a/web-app/app/routes/dashboard/subcomponents/StakingCard/subcomponents/UnstakeBtn/UnstakeBtnDialogContent/index.tsx b/web-app/src/app/routes/dashboard/subcomponents/StakingCard/subcomponents/UnstakeBtn/UnstakeBtnDialogContent/index.tsx similarity index 100% rename from web-app/app/routes/dashboard/subcomponents/StakingCard/subcomponents/UnstakeBtn/UnstakeBtnDialogContent/index.tsx rename to web-app/src/app/routes/dashboard/subcomponents/StakingCard/subcomponents/UnstakeBtn/UnstakeBtnDialogContent/index.tsx diff --git a/web-app/app/routes/dashboard/subcomponents/StakingCard/subcomponents/UnstakeBtn/UnstakeBtnDialogContent/lib/hooks.tsx b/web-app/src/app/routes/dashboard/subcomponents/StakingCard/subcomponents/UnstakeBtn/UnstakeBtnDialogContent/lib/hooks.tsx similarity index 100% rename from web-app/app/routes/dashboard/subcomponents/StakingCard/subcomponents/UnstakeBtn/UnstakeBtnDialogContent/lib/hooks.tsx rename to web-app/src/app/routes/dashboard/subcomponents/StakingCard/subcomponents/UnstakeBtn/UnstakeBtnDialogContent/lib/hooks.tsx diff --git a/web-app/app/routes/dashboard/subcomponents/StakingCard/subcomponents/UnstakeBtn/index.tsx b/web-app/src/app/routes/dashboard/subcomponents/StakingCard/subcomponents/UnstakeBtn/index.tsx similarity index 100% rename from web-app/app/routes/dashboard/subcomponents/StakingCard/subcomponents/UnstakeBtn/index.tsx rename to web-app/src/app/routes/dashboard/subcomponents/StakingCard/subcomponents/UnstakeBtn/index.tsx diff --git a/web-app/app/routes/dashboard/subcomponents/UserLogDataGraph/index.tsx b/web-app/src/app/routes/dashboard/subcomponents/UserLogDataGraph/index.tsx similarity index 100% rename from web-app/app/routes/dashboard/subcomponents/UserLogDataGraph/index.tsx rename to web-app/src/app/routes/dashboard/subcomponents/UserLogDataGraph/index.tsx diff --git a/web-app/app/routes/dashboard/subcomponents/UserLogDataGraph/lib/getGraphDataFromLogData.ts b/web-app/src/app/routes/dashboard/subcomponents/UserLogDataGraph/lib/getGraphDataFromLogData.ts similarity index 100% rename from web-app/app/routes/dashboard/subcomponents/UserLogDataGraph/lib/getGraphDataFromLogData.ts rename to web-app/src/app/routes/dashboard/subcomponents/UserLogDataGraph/lib/getGraphDataFromLogData.ts diff --git a/web-app/app/routes/dashboard/subcomponents/UserLogDataGraph/subcomponents/StakeAndRewardAmtGraphs/index.tsx b/web-app/src/app/routes/dashboard/subcomponents/UserLogDataGraph/subcomponents/StakeAndRewardAmtGraphs/index.tsx similarity index 100% rename from web-app/app/routes/dashboard/subcomponents/UserLogDataGraph/subcomponents/StakeAndRewardAmtGraphs/index.tsx rename to web-app/src/app/routes/dashboard/subcomponents/UserLogDataGraph/subcomponents/StakeAndRewardAmtGraphs/index.tsx diff --git a/web-app/app/routes/dashboard/subcomponents/UserLogDataGraph/subcomponents/StakeAndRewardAmtGraphs/lib/useChartData.ts b/web-app/src/app/routes/dashboard/subcomponents/UserLogDataGraph/subcomponents/StakeAndRewardAmtGraphs/lib/useChartData.ts similarity index 100% rename from web-app/app/routes/dashboard/subcomponents/UserLogDataGraph/subcomponents/StakeAndRewardAmtGraphs/lib/useChartData.ts rename to web-app/src/app/routes/dashboard/subcomponents/UserLogDataGraph/subcomponents/StakeAndRewardAmtGraphs/lib/useChartData.ts diff --git a/web-app/app/routes/dashboard/subcomponents/UserLogDataGraph/subcomponents/StakeAndRewardAmtGraphs/lib/useChartOptions/index.ts b/web-app/src/app/routes/dashboard/subcomponents/UserLogDataGraph/subcomponents/StakeAndRewardAmtGraphs/lib/useChartOptions/index.ts similarity index 100% rename from web-app/app/routes/dashboard/subcomponents/UserLogDataGraph/subcomponents/StakeAndRewardAmtGraphs/lib/useChartOptions/index.ts rename to web-app/src/app/routes/dashboard/subcomponents/UserLogDataGraph/subcomponents/StakeAndRewardAmtGraphs/lib/useChartOptions/index.ts diff --git a/web-app/app/routes/dashboard/subcomponents/UserLogDataGraph/subcomponents/StakeAndRewardAmtGraphs/lib/useChartOptions/lib/types.ts b/web-app/src/app/routes/dashboard/subcomponents/UserLogDataGraph/subcomponents/StakeAndRewardAmtGraphs/lib/useChartOptions/lib/types.ts similarity index 100% rename from web-app/app/routes/dashboard/subcomponents/UserLogDataGraph/subcomponents/StakeAndRewardAmtGraphs/lib/useChartOptions/lib/types.ts rename to web-app/src/app/routes/dashboard/subcomponents/UserLogDataGraph/subcomponents/StakeAndRewardAmtGraphs/lib/useChartOptions/lib/types.ts diff --git a/web-app/app/routes/dashboard/subcomponents/UserLogDataGraph/subcomponents/StakeAndRewardAmtGraphs/lib/useChartOptions/lib/useRewardAmtTickFormatter.ts b/web-app/src/app/routes/dashboard/subcomponents/UserLogDataGraph/subcomponents/StakeAndRewardAmtGraphs/lib/useChartOptions/lib/useRewardAmtTickFormatter.ts similarity index 100% rename from web-app/app/routes/dashboard/subcomponents/UserLogDataGraph/subcomponents/StakeAndRewardAmtGraphs/lib/useChartOptions/lib/useRewardAmtTickFormatter.ts rename to web-app/src/app/routes/dashboard/subcomponents/UserLogDataGraph/subcomponents/StakeAndRewardAmtGraphs/lib/useChartOptions/lib/useRewardAmtTickFormatter.ts diff --git a/web-app/app/routes/dashboard/subcomponents/UserLogDataGraph/subcomponents/StakeAndRewardAmtGraphs/lib/useChartOptions/lib/useStakedAmtTickFormatter.ts b/web-app/src/app/routes/dashboard/subcomponents/UserLogDataGraph/subcomponents/StakeAndRewardAmtGraphs/lib/useChartOptions/lib/useStakedAmtTickFormatter.ts similarity index 100% rename from web-app/app/routes/dashboard/subcomponents/UserLogDataGraph/subcomponents/StakeAndRewardAmtGraphs/lib/useChartOptions/lib/useStakedAmtTickFormatter.ts rename to web-app/src/app/routes/dashboard/subcomponents/UserLogDataGraph/subcomponents/StakeAndRewardAmtGraphs/lib/useChartOptions/lib/useStakedAmtTickFormatter.ts diff --git a/web-app/app/routes/dashboard/subcomponents/UserLogDataGraph/subcomponents/StakeAndRewardAmtGraphs/lib/useChartOptions/lib/useTooltipLabelFormatter.ts b/web-app/src/app/routes/dashboard/subcomponents/UserLogDataGraph/subcomponents/StakeAndRewardAmtGraphs/lib/useChartOptions/lib/useTooltipLabelFormatter.ts similarity index 100% rename from web-app/app/routes/dashboard/subcomponents/UserLogDataGraph/subcomponents/StakeAndRewardAmtGraphs/lib/useChartOptions/lib/useTooltipLabelFormatter.ts rename to web-app/src/app/routes/dashboard/subcomponents/UserLogDataGraph/subcomponents/StakeAndRewardAmtGraphs/lib/useChartOptions/lib/useTooltipLabelFormatter.ts diff --git a/web-app/app/routes/dashboard/subcomponents/UserLogDataGraph/subcomponents/StakeAndRewardAmtGraphs/subcomponents/EmptyChartDatasetMsg/index.tsx b/web-app/src/app/routes/dashboard/subcomponents/UserLogDataGraph/subcomponents/StakeAndRewardAmtGraphs/subcomponents/EmptyChartDatasetMsg/index.tsx similarity index 100% rename from web-app/app/routes/dashboard/subcomponents/UserLogDataGraph/subcomponents/StakeAndRewardAmtGraphs/subcomponents/EmptyChartDatasetMsg/index.tsx rename to web-app/src/app/routes/dashboard/subcomponents/UserLogDataGraph/subcomponents/StakeAndRewardAmtGraphs/subcomponents/EmptyChartDatasetMsg/index.tsx diff --git a/web-app/app/routes/dashboard/subcomponents/lib/TokenAmtSliderInput/index.tsx b/web-app/src/app/routes/dashboard/subcomponents/lib/TokenAmtSliderInput/index.tsx similarity index 100% rename from web-app/app/routes/dashboard/subcomponents/lib/TokenAmtSliderInput/index.tsx rename to web-app/src/app/routes/dashboard/subcomponents/lib/TokenAmtSliderInput/index.tsx diff --git a/web-app/app/tailwind.css b/web-app/src/app/tailwind.css similarity index 100% rename from web-app/app/tailwind.css rename to web-app/src/app/tailwind.css diff --git a/web-app/components.json b/web-app/src/components.json similarity index 100% rename from web-app/components.json rename to web-app/src/components.json diff --git a/web-app/package-lock.json b/web-app/src/package-lock.json similarity index 100% rename from web-app/package-lock.json rename to web-app/src/package-lock.json diff --git a/web-app/package.json b/web-app/src/package.json similarity index 93% rename from web-app/package.json rename to web-app/src/package.json index 4bd03ab..c3b730f 100644 --- a/web-app/package.json +++ b/web-app/src/package.json @@ -9,8 +9,8 @@ "lint": "eslint --ignore-path .gitignore --cache --cache-location ./node_modules/.cache/eslint .", "start": "remix-serve ./build/index.js", "typecheck": "tsc", - "compile-contracts": "cd ../contracts && forge build", - "generate-abi-types": "typechain --target ethers-v6 --out-dir \"app/contracts/types\" \"../contracts/out/**/*.json\"", + "compile-contracts": "cd ../../contracts && forge build", + "generate-abi-types": "typechain --target ethers-v6 --out-dir \"app/contracts/types\" \"../../contracts/out/**/*.json\"", "postinstall": "npm run compile-contracts && npm run generate-abi-types" }, "dependencies": { @@ -60,4 +60,4 @@ "engines": { "node": ">=18.0.0" } -} +} \ No newline at end of file diff --git a/web-app/postcss.config.js b/web-app/src/postcss.config.js similarity index 100% rename from web-app/postcss.config.js rename to web-app/src/postcss.config.js diff --git a/web-app/public/favicon.ico b/web-app/src/public/favicon.ico similarity index 100% rename from web-app/public/favicon.ico rename to web-app/src/public/favicon.ico diff --git a/web-app/remix.config.js b/web-app/src/remix.config.js similarity index 100% rename from web-app/remix.config.js rename to web-app/src/remix.config.js diff --git a/web-app/remix.env.d.ts b/web-app/src/remix.env.d.ts similarity index 100% rename from web-app/remix.env.d.ts rename to web-app/src/remix.env.d.ts diff --git a/web-app/tailwind.config.ts b/web-app/src/tailwind.config.ts similarity index 100% rename from web-app/tailwind.config.ts rename to web-app/src/tailwind.config.ts diff --git a/web-app/tsconfig.json b/web-app/src/tsconfig.json similarity index 100% rename from web-app/tsconfig.json rename to web-app/src/tsconfig.json From f9eab62740a7c4f482e0279c6eda3206ccb2e283 Mon Sep 17 00:00:00 2001 From: Sayand Sathish Date: Wed, 20 Mar 2024 08:00:29 +0530 Subject: [PATCH 02/34] web-app/chore: Set up AWS CDK for IaC --- web-app/infra/.gitignore | 8 + web-app/infra/.npmignore | 6 + web-app/infra/README.md | 14 + web-app/infra/bin/infra.ts | 9 + web-app/infra/cdk.json | 67 ++++ web-app/infra/lib/infra-stack.ts | 8 + web-app/infra/package-lock.json | 656 +++++++++++++++++++++++++++++++ web-app/infra/package.json | 23 ++ web-app/infra/tsconfig.json | 32 ++ 9 files changed, 823 insertions(+) create mode 100644 web-app/infra/.gitignore create mode 100644 web-app/infra/.npmignore create mode 100644 web-app/infra/README.md create mode 100644 web-app/infra/bin/infra.ts create mode 100644 web-app/infra/cdk.json create mode 100644 web-app/infra/lib/infra-stack.ts create mode 100644 web-app/infra/package-lock.json create mode 100644 web-app/infra/package.json create mode 100644 web-app/infra/tsconfig.json diff --git a/web-app/infra/.gitignore b/web-app/infra/.gitignore new file mode 100644 index 0000000..f60797b --- /dev/null +++ b/web-app/infra/.gitignore @@ -0,0 +1,8 @@ +*.js +!jest.config.js +*.d.ts +node_modules + +# CDK asset staging directory +.cdk.staging +cdk.out diff --git a/web-app/infra/.npmignore b/web-app/infra/.npmignore new file mode 100644 index 0000000..c1d6d45 --- /dev/null +++ b/web-app/infra/.npmignore @@ -0,0 +1,6 @@ +*.ts +!*.d.ts + +# CDK asset staging directory +.cdk.staging +cdk.out diff --git a/web-app/infra/README.md b/web-app/infra/README.md new file mode 100644 index 0000000..9315fe5 --- /dev/null +++ b/web-app/infra/README.md @@ -0,0 +1,14 @@ +# Welcome to your CDK TypeScript project + +This is a blank project for CDK development with TypeScript. + +The `cdk.json` file tells the CDK Toolkit how to execute your app. + +## Useful commands + +* `npm run build` compile typescript to js +* `npm run watch` watch for changes and compile +* `npm run test` perform the jest unit tests +* `npx cdk deploy` deploy this stack to your default AWS account/region +* `npx cdk diff` compare deployed stack with current state +* `npx cdk synth` emits the synthesized CloudFormation template diff --git a/web-app/infra/bin/infra.ts b/web-app/infra/bin/infra.ts new file mode 100644 index 0000000..01a7f96 --- /dev/null +++ b/web-app/infra/bin/infra.ts @@ -0,0 +1,9 @@ +#!/usr/bin/env node +import 'source-map-support/register'; +import * as cdk from 'aws-cdk-lib'; +import { InfraStack } from '../lib/infra-stack'; + +const app = new cdk.App(); +new InfraStack(app, 'InfraStack', { + env: { account: process.env.CDK_DEFAULT_ACCOUNT, region: 'ap-south-1' }, +}); \ No newline at end of file diff --git a/web-app/infra/cdk.json b/web-app/infra/cdk.json new file mode 100644 index 0000000..f5219ca --- /dev/null +++ b/web-app/infra/cdk.json @@ -0,0 +1,67 @@ +{ + "app": "npx ts-node --prefer-ts-exts bin/infra.ts", + "watch": { + "include": [ + "**" + ], + "exclude": [ + "README.md", + "cdk*.json", + "**/*.d.ts", + "**/*.js", + "tsconfig.json", + "package*.json", + "yarn.lock", + "node_modules", + "test" + ] + }, + "context": { + "@aws-cdk/aws-lambda:recognizeLayerVersion": true, + "@aws-cdk/core:checkSecretUsage": true, + "@aws-cdk/core:target-partitions": [ + "aws", + "aws-cn" + ], + "@aws-cdk-containers/ecs-service-extensions:enableDefaultLogDriver": true, + "@aws-cdk/aws-ec2:uniqueImdsv2TemplateName": true, + "@aws-cdk/aws-ecs:arnFormatIncludesClusterName": true, + "@aws-cdk/aws-iam:minimizePolicies": true, + "@aws-cdk/core:validateSnapshotRemovalPolicy": true, + "@aws-cdk/aws-codepipeline:crossAccountKeyAliasStackSafeResourceName": true, + "@aws-cdk/aws-s3:createDefaultLoggingPolicy": true, + "@aws-cdk/aws-sns-subscriptions:restrictSqsDescryption": true, + "@aws-cdk/aws-apigateway:disableCloudWatchRole": true, + "@aws-cdk/core:enablePartitionLiterals": true, + "@aws-cdk/aws-events:eventsTargetQueueSameAccount": true, + "@aws-cdk/aws-iam:standardizedServicePrincipals": true, + "@aws-cdk/aws-ecs:disableExplicitDeploymentControllerForCircuitBreaker": true, + "@aws-cdk/aws-iam:importedRoleStackSafeDefaultPolicyName": true, + "@aws-cdk/aws-s3:serverAccessLogsUseBucketPolicy": true, + "@aws-cdk/aws-route53-patters:useCertificate": true, + "@aws-cdk/customresources:installLatestAwsSdkDefault": false, + "@aws-cdk/aws-rds:databaseProxyUniqueResourceName": true, + "@aws-cdk/aws-codedeploy:removeAlarmsFromDeploymentGroup": true, + "@aws-cdk/aws-apigateway:authorizerChangeDeploymentLogicalId": true, + "@aws-cdk/aws-ec2:launchTemplateDefaultUserData": true, + "@aws-cdk/aws-secretsmanager:useAttachedSecretResourcePolicyForSecretTargetAttachments": true, + "@aws-cdk/aws-redshift:columnId": true, + "@aws-cdk/aws-stepfunctions-tasks:enableEmrServicePolicyV2": true, + "@aws-cdk/aws-ec2:restrictDefaultSecurityGroup": true, + "@aws-cdk/aws-apigateway:requestValidatorUniqueId": true, + "@aws-cdk/aws-kms:aliasNameRef": true, + "@aws-cdk/aws-autoscaling:generateLaunchTemplateInsteadOfLaunchConfig": true, + "@aws-cdk/core:includePrefixInUniqueNameGeneration": true, + "@aws-cdk/aws-efs:denyAnonymousAccess": true, + "@aws-cdk/aws-opensearchservice:enableOpensearchMultiAzWithStandby": true, + "@aws-cdk/aws-lambda-nodejs:useLatestRuntimeVersion": true, + "@aws-cdk/aws-efs:mountTargetOrderInsensitiveLogicalId": true, + "@aws-cdk/aws-rds:auroraClusterChangeScopeOfInstanceParameterGroupWithEachParameters": true, + "@aws-cdk/aws-appsync:useArnForSourceApiAssociationIdentifier": true, + "@aws-cdk/aws-rds:preventRenderingDeprecatedCredentials": true, + "@aws-cdk/aws-codepipeline-actions:useNewDefaultBranchForCodeCommitSource": true, + "@aws-cdk/aws-cloudwatch-actions:changeLambdaPermissionLogicalIdForLambdaAction": true, + "@aws-cdk/aws-codepipeline:crossAccountKeysDefaultValueToFalse": true, + "@aws-cdk/aws-codepipeline:defaultPipelineTypeToV2": true + } +} diff --git a/web-app/infra/lib/infra-stack.ts b/web-app/infra/lib/infra-stack.ts new file mode 100644 index 0000000..0e4f2a0 --- /dev/null +++ b/web-app/infra/lib/infra-stack.ts @@ -0,0 +1,8 @@ +import * as cdk from 'aws-cdk-lib'; +import { Construct } from 'constructs'; + +export class InfraStack extends cdk.Stack { + constructor(scope: Construct, id: string, props?: cdk.StackProps) { + super(scope, id, props); + } +} diff --git a/web-app/infra/package-lock.json b/web-app/infra/package-lock.json new file mode 100644 index 0000000..e2aa25c --- /dev/null +++ b/web-app/infra/package-lock.json @@ -0,0 +1,656 @@ +{ + "name": "infra", + "version": "0.1.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "infra", + "version": "0.1.0", + "dependencies": { + "aws-cdk-lib": "2.133.0", + "constructs": "^10.0.0", + "source-map-support": "^0.5.21" + }, + "bin": { + "infra": "bin/infra.js" + }, + "devDependencies": { + "@types/node": "20.11.19", + "aws-cdk": "2.133.0", + "ts-node": "^10.9.2", + "typescript": "~5.3.3" + } + }, + "node_modules/@aws-cdk/asset-awscli-v1": { + "version": "2.2.202", + "resolved": "https://registry.npmjs.org/@aws-cdk/asset-awscli-v1/-/asset-awscli-v1-2.2.202.tgz", + "integrity": "sha512-JqlF0D4+EVugnG5dAsNZMqhu3HW7ehOXm5SDMxMbXNDMdsF0pxtQKNHRl52z1U9igsHmaFpUgSGjbhAJ+0JONg==" + }, + "node_modules/@aws-cdk/asset-kubectl-v20": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@aws-cdk/asset-kubectl-v20/-/asset-kubectl-v20-2.1.2.tgz", + "integrity": "sha512-3M2tELJOxQv0apCIiuKQ4pAbncz9GuLwnKFqxifWfe77wuMxyTRPmxssYHs42ePqzap1LT6GDcPygGs+hHstLg==" + }, + "node_modules/@aws-cdk/asset-node-proxy-agent-v6": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@aws-cdk/asset-node-proxy-agent-v6/-/asset-node-proxy-agent-v6-2.0.1.tgz", + "integrity": "sha512-DDt4SLdLOwWCjGtltH4VCST7hpOI5DzieuhGZsBpZ+AgJdSI2GCjklCXm0GCTwJG/SolkL5dtQXyUKgg9luBDg==" + }, + "node_modules/@cspotcode/source-map-support": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", + "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", + "dev": true, + "dependencies": { + "@jridgewell/trace-mapping": "0.3.9" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@cspotcode/source-map-support/node_modules/@jridgewell/trace-mapping": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", + "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", + "dev": true, + "dependencies": { + "@jridgewell/resolve-uri": "^3.0.3", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.15", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", + "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", + "dev": true + }, + "node_modules/@tsconfig/node10": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz", + "integrity": "sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==", + "dev": true + }, + "node_modules/@tsconfig/node12": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz", + "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==", + "dev": true + }, + "node_modules/@tsconfig/node14": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz", + "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==", + "dev": true + }, + "node_modules/@tsconfig/node16": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.4.tgz", + "integrity": "sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==", + "dev": true + }, + "node_modules/@types/node": { + "version": "20.11.19", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.11.19.tgz", + "integrity": "sha512-7xMnVEcZFu0DikYjWOlRq7NTPETrm7teqUT2WkQjrTIkEgUyyGdWsj/Zg8bEJt5TNklzbPD1X3fqfsHw3SpapQ==", + "dev": true, + "dependencies": { + "undici-types": "~5.26.4" + } + }, + "node_modules/acorn": { + "version": "8.11.3", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz", + "integrity": "sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-walk": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.2.tgz", + "integrity": "sha512-cjkyv4OtNCIeqhHrfS81QWXoCBPExR/J62oyEqepVw8WaQeSqpW2uhuLPh1m9eWhDuOo/jUXVTlifvesOWp/4A==", + "dev": true, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/arg": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", + "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", + "dev": true + }, + "node_modules/aws-cdk": { + "version": "2.133.0", + "resolved": "https://registry.npmjs.org/aws-cdk/-/aws-cdk-2.133.0.tgz", + "integrity": "sha512-EwH8VgQQ8ODeMwjE3p+WhbcbWNkCbvuJJl+Py9IB5znGf7GwLcEmOu4YWBsBGPVu41SXbSAf36twMBrJytCFZA==", + "dev": true, + "bin": { + "cdk": "bin/cdk" + }, + "engines": { + "node": ">= 14.15.0" + }, + "optionalDependencies": { + "fsevents": "2.3.2" + } + }, + "node_modules/aws-cdk-lib": { + "version": "2.133.0", + "resolved": "https://registry.npmjs.org/aws-cdk-lib/-/aws-cdk-lib-2.133.0.tgz", + "integrity": "sha512-5/ezv8Ir2xyz3myeXQcODwrjVRN/cDD2OpBwU/ySFBe+uNac25OoHfTXwUPwE7oLj9qetSt6/i1QvY2iIs6yiQ==", + "bundleDependencies": [ + "@balena/dockerignore", + "case", + "fs-extra", + "ignore", + "jsonschema", + "minimatch", + "punycode", + "semver", + "table", + "yaml", + "mime-types" + ], + "dependencies": { + "@aws-cdk/asset-awscli-v1": "^2.2.202", + "@aws-cdk/asset-kubectl-v20": "^2.1.2", + "@aws-cdk/asset-node-proxy-agent-v6": "^2.0.1", + "@balena/dockerignore": "^1.0.2", + "case": "1.6.3", + "fs-extra": "^11.2.0", + "ignore": "^5.3.1", + "jsonschema": "^1.4.1", + "mime-types": "^2.1.35", + "minimatch": "^3.1.2", + "punycode": "^2.3.1", + "semver": "^7.6.0", + "table": "^6.8.1", + "yaml": "1.10.2" + }, + "engines": { + "node": ">= 14.15.0" + }, + "peerDependencies": { + "constructs": "^10.0.0" + } + }, + "node_modules/aws-cdk-lib/node_modules/@balena/dockerignore": { + "version": "1.0.2", + "inBundle": true, + "license": "Apache-2.0" + }, + "node_modules/aws-cdk-lib/node_modules/ajv": { + "version": "8.12.0", + "inBundle": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/aws-cdk-lib/node_modules/ansi-regex": { + "version": "5.0.1", + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/aws-cdk-lib/node_modules/ansi-styles": { + "version": "4.3.0", + "inBundle": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/aws-cdk-lib/node_modules/astral-regex": { + "version": "2.0.0", + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/aws-cdk-lib/node_modules/balanced-match": { + "version": "1.0.2", + "inBundle": true, + "license": "MIT" + }, + "node_modules/aws-cdk-lib/node_modules/brace-expansion": { + "version": "1.1.11", + "inBundle": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/aws-cdk-lib/node_modules/case": { + "version": "1.6.3", + "inBundle": true, + "license": "(MIT OR GPL-3.0-or-later)", + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/aws-cdk-lib/node_modules/color-convert": { + "version": "2.0.1", + "inBundle": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/aws-cdk-lib/node_modules/color-name": { + "version": "1.1.4", + "inBundle": true, + "license": "MIT" + }, + "node_modules/aws-cdk-lib/node_modules/concat-map": { + "version": "0.0.1", + "inBundle": true, + "license": "MIT" + }, + "node_modules/aws-cdk-lib/node_modules/emoji-regex": { + "version": "8.0.0", + "inBundle": true, + "license": "MIT" + }, + "node_modules/aws-cdk-lib/node_modules/fast-deep-equal": { + "version": "3.1.3", + "inBundle": true, + "license": "MIT" + }, + "node_modules/aws-cdk-lib/node_modules/fs-extra": { + "version": "11.2.0", + "inBundle": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=14.14" + } + }, + "node_modules/aws-cdk-lib/node_modules/graceful-fs": { + "version": "4.2.11", + "inBundle": true, + "license": "ISC" + }, + "node_modules/aws-cdk-lib/node_modules/ignore": { + "version": "5.3.1", + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/aws-cdk-lib/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/aws-cdk-lib/node_modules/json-schema-traverse": { + "version": "1.0.0", + "inBundle": true, + "license": "MIT" + }, + "node_modules/aws-cdk-lib/node_modules/jsonfile": { + "version": "6.1.0", + "inBundle": true, + "license": "MIT", + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/aws-cdk-lib/node_modules/jsonschema": { + "version": "1.4.1", + "inBundle": true, + "license": "MIT", + "engines": { + "node": "*" + } + }, + "node_modules/aws-cdk-lib/node_modules/lodash.truncate": { + "version": "4.4.2", + "inBundle": true, + "license": "MIT" + }, + "node_modules/aws-cdk-lib/node_modules/lru-cache": { + "version": "6.0.0", + "inBundle": true, + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/aws-cdk-lib/node_modules/mime-db": { + "version": "1.52.0", + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/aws-cdk-lib/node_modules/mime-types": { + "version": "2.1.35", + "inBundle": true, + "license": "MIT", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/aws-cdk-lib/node_modules/minimatch": { + "version": "3.1.2", + "inBundle": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/aws-cdk-lib/node_modules/punycode": { + "version": "2.3.1", + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/aws-cdk-lib/node_modules/require-from-string": { + "version": "2.0.2", + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/aws-cdk-lib/node_modules/semver": { + "version": "7.6.0", + "inBundle": true, + "license": "ISC", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/aws-cdk-lib/node_modules/slice-ansi": { + "version": "4.0.0", + "inBundle": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "astral-regex": "^2.0.0", + "is-fullwidth-code-point": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/slice-ansi?sponsor=1" + } + }, + "node_modules/aws-cdk-lib/node_modules/string-width": { + "version": "4.2.3", + "inBundle": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/aws-cdk-lib/node_modules/strip-ansi": { + "version": "6.0.1", + "inBundle": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/aws-cdk-lib/node_modules/table": { + "version": "6.8.1", + "inBundle": true, + "license": "BSD-3-Clause", + "dependencies": { + "ajv": "^8.0.1", + "lodash.truncate": "^4.4.2", + "slice-ansi": "^4.0.0", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/aws-cdk-lib/node_modules/universalify": { + "version": "2.0.1", + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/aws-cdk-lib/node_modules/uri-js": { + "version": "4.4.1", + "inBundle": true, + "license": "BSD-2-Clause", + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/aws-cdk-lib/node_modules/yallist": { + "version": "4.0.0", + "inBundle": true, + "license": "ISC" + }, + "node_modules/aws-cdk-lib/node_modules/yaml": { + "version": "1.10.2", + "inBundle": true, + "license": "ISC", + "engines": { + "node": ">= 6" + } + }, + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" + }, + "node_modules/constructs": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/constructs/-/constructs-10.3.0.tgz", + "integrity": "sha512-vbK8i3rIb/xwZxSpTjz3SagHn1qq9BChLEfy5Hf6fB3/2eFbrwt2n9kHwQcS0CPTRBesreeAcsJfMq2229FnbQ==", + "engines": { + "node": ">= 16.14.0" + } + }, + "node_modules/create-require": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", + "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", + "dev": true + }, + "node_modules/diff": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", + "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", + "dev": true, + "engines": { + "node": ">=0.3.1" + } + }, + "node_modules/fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/make-error": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", + "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", + "dev": true + }, + "node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/ts-node": { + "version": "10.9.2", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.2.tgz", + "integrity": "sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==", + "dev": true, + "dependencies": { + "@cspotcode/source-map-support": "^0.8.0", + "@tsconfig/node10": "^1.0.7", + "@tsconfig/node12": "^1.0.7", + "@tsconfig/node14": "^1.0.0", + "@tsconfig/node16": "^1.0.2", + "acorn": "^8.4.1", + "acorn-walk": "^8.1.1", + "arg": "^4.1.0", + "create-require": "^1.1.0", + "diff": "^4.0.1", + "make-error": "^1.1.1", + "v8-compile-cache-lib": "^3.0.1", + "yn": "3.1.1" + }, + "bin": { + "ts-node": "dist/bin.js", + "ts-node-cwd": "dist/bin-cwd.js", + "ts-node-esm": "dist/bin-esm.js", + "ts-node-script": "dist/bin-script.js", + "ts-node-transpile-only": "dist/bin-transpile.js", + "ts-script": "dist/bin-script-deprecated.js" + }, + "peerDependencies": { + "@swc/core": ">=1.2.50", + "@swc/wasm": ">=1.2.50", + "@types/node": "*", + "typescript": ">=2.7" + }, + "peerDependenciesMeta": { + "@swc/core": { + "optional": true + }, + "@swc/wasm": { + "optional": true + } + } + }, + "node_modules/typescript": { + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.3.3.tgz", + "integrity": "sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==", + "dev": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/undici-types": { + "version": "5.26.5", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", + "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", + "dev": true + }, + "node_modules/v8-compile-cache-lib": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", + "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==", + "dev": true + }, + "node_modules/yn": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", + "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", + "dev": true, + "engines": { + "node": ">=6" + } + } + } +} diff --git a/web-app/infra/package.json b/web-app/infra/package.json new file mode 100644 index 0000000..4ad7d77 --- /dev/null +++ b/web-app/infra/package.json @@ -0,0 +1,23 @@ +{ + "name": "infra", + "version": "0.1.0", + "bin": { + "infra": "bin/infra.js" + }, + "scripts": { + "build": "tsc", + "watch": "tsc -w", + "deploy": "cdk deploy" + }, + "devDependencies": { + "@types/node": "20.11.19", + "aws-cdk": "2.133.0", + "ts-node": "^10.9.2", + "typescript": "~5.3.3" + }, + "dependencies": { + "aws-cdk-lib": "2.133.0", + "constructs": "^10.0.0", + "source-map-support": "^0.5.21" + } +} \ No newline at end of file diff --git a/web-app/infra/tsconfig.json b/web-app/infra/tsconfig.json new file mode 100644 index 0000000..db6d6e1 --- /dev/null +++ b/web-app/infra/tsconfig.json @@ -0,0 +1,32 @@ +{ + "compilerOptions": { + "target": "ES2020", + "module": "commonjs", + "lib": [ + "es2020", + "dom" + ], + "declaration": true, + "strict": true, + "noImplicitAny": true, + "strictNullChecks": true, + "noImplicitThis": true, + "alwaysStrict": true, + "noUnusedLocals": false, + "noUncheckedIndexedAccess": true, + "noUnusedParameters": false, + "noImplicitReturns": true, + "noFallthroughCasesInSwitch": false, + "inlineSourceMap": true, + "inlineSources": true, + "experimentalDecorators": true, + "strictPropertyInitialization": false, + "typeRoots": [ + "./node_modules/@types" + ] + }, + "exclude": [ + "node_modules", + "cdk.out" + ] +} \ No newline at end of file From a9b41063d41821701d7f18eceabf0c2e3c5e65b4 Mon Sep 17 00:00:00 2001 From: Sayand Sathish Date: Thu, 21 Mar 2024 06:27:43 +0530 Subject: [PATCH 03/34] web-app/ci: Add build process for lambda - We wrapped the remix app in a lambda handler and build it with esbuild. - The path to the static build assets was also modified in the remix config. Additionally redirects were setup for the favicon to the static path, via the express handler. This `/static/*` route will eventually be handled by CloudFront + S3 --- web-app/src/.gitignore | 1 + web-app/src/package-lock.json | 2487 +++++++++++++++++++++++---------- web-app/src/package.json | 11 +- web-app/src/remix.config.js | 2 +- web-app/src/server/app.ts | 38 + web-app/src/server/index.ts | 9 + 6 files changed, 1783 insertions(+), 765 deletions(-) create mode 100644 web-app/src/server/app.ts create mode 100644 web-app/src/server/index.ts diff --git a/web-app/src/.gitignore b/web-app/src/.gitignore index f424f49..eb28ebd 100644 --- a/web-app/src/.gitignore +++ b/web-app/src/.gitignore @@ -2,6 +2,7 @@ node_modules /.cache /build +dist/ /public/build .env *.dev.* diff --git a/web-app/src/package-lock.json b/web-app/src/package-lock.json index 9c99632..1b3e6c2 100644 --- a/web-app/src/package-lock.json +++ b/web-app/src/package-lock.json @@ -1,5 +1,5 @@ { - "name": "web-app", + "name": "src", "lockfileVersion": 3, "requires": true, "packages": { @@ -13,19 +13,22 @@ "@radix-ui/react-toast": "^1.1.5", "@reduxjs/toolkit": "^2.1.0", "@remix-run/css-bundle": "^2.5.1", + "@remix-run/express": "^2.5.1", "@remix-run/node": "^2.5.1", "@remix-run/react": "^2.5.1", - "@remix-run/serve": "^2.5.1", + "@types/aws-lambda": "^8.10.136", "chart.js": "^4.4.1", "class-variance-authority": "^0.7.0", "clsx": "^2.1.0", "ethers": "^6.11.1", + "express": "^4.18.3", "isbot": "^4.1.0", "lucide-react": "^0.316.0", "react": "^18.2.0", "react-chartjs-2": "^5.2.0", "react-dom": "^18.2.0", "react-redux": "^9.1.0", + "serverless-http": "^3.2.0", "tailwind-merge": "^2.2.1", "tailwindcss-animate": "^1.0.7", "zod": "^3.22.4" @@ -34,10 +37,12 @@ "@remix-run/dev": "^2.5.1", "@stylistic/eslint-plugin": "^1.5.4", "@typechain/ethers-v6": "^0.5.1", + "@types/express": "^4.17.21", "@types/react": "^18.2.20", "@types/react-dom": "^18.2.7", "@typescript-eslint/eslint-plugin": "^6.7.4", "autoprefixer": "^10.4.17", + "esbuild": "^0.20.2", "eslint": "^8.38.0", "eslint-config-prettier": "^9.0.0", "eslint-import-resolver-typescript": "^3.6.1", @@ -45,6 +50,7 @@ "eslint-plugin-jsx-a11y": "^6.7.1", "eslint-plugin-react": "^7.33.2", "eslint-plugin-react-hooks": "^4.6.0", + "rimraf": "^5.0.5", "tailwindcss": "^3.4.1", "typechain": "^8.3.2", "typescript": "^5.1.6" @@ -790,9 +796,9 @@ } }, "node_modules/@esbuild/android-arm": { - "version": "0.17.6", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.17.6.tgz", - "integrity": "sha512-bSC9YVUjADDy1gae8RrioINU6e1lCkg3VGVwm0QQ2E1CWcC4gnMce9+B6RpxuSsrsXsk1yojn7sp1fnG8erE2g==", + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.20.2.tgz", + "integrity": "sha512-t98Ra6pw2VaDhqNWO2Oph2LXbz/EJcnLmKLGBJwEwXX/JAN83Fym1rU8l0JUWK6HkIbWONCSSatf4sf2NBRx/w==", "cpu": [ "arm" ], @@ -806,9 +812,9 @@ } }, "node_modules/@esbuild/android-arm64": { - "version": "0.17.6", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.17.6.tgz", - "integrity": "sha512-YnYSCceN/dUzUr5kdtUzB+wZprCafuD89Hs0Aqv9QSdwhYQybhXTaSTcrl6X/aWThn1a/j0eEpUBGOE7269REg==", + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.20.2.tgz", + "integrity": "sha512-mRzjLacRtl/tWU0SvD8lUEwb61yP9cqQo6noDZP/O8VkwafSYwZ4yWy24kan8jE/IMERpYncRt2dw438LP3Xmg==", "cpu": [ "arm64" ], @@ -822,9 +828,9 @@ } }, "node_modules/@esbuild/android-x64": { - "version": "0.17.6", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.17.6.tgz", - "integrity": "sha512-MVcYcgSO7pfu/x34uX9u2QIZHmXAB7dEiLQC5bBl5Ryqtpj9lT2sg3gNDEsrPEmimSJW2FXIaxqSQ501YLDsZQ==", + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.20.2.tgz", + "integrity": "sha512-btzExgV+/lMGDDa194CcUQm53ncxzeBrWJcncOBxuC6ndBkKxnHdFJn86mCIgTELsooUmwUm9FkhSp5HYu00Rg==", "cpu": [ "x64" ], @@ -838,9 +844,9 @@ } }, "node_modules/@esbuild/darwin-arm64": { - "version": "0.17.6", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.17.6.tgz", - "integrity": "sha512-bsDRvlbKMQMt6Wl08nHtFz++yoZHsyTOxnjfB2Q95gato+Yi4WnRl13oC2/PJJA9yLCoRv9gqT/EYX0/zDsyMA==", + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.20.2.tgz", + "integrity": "sha512-4J6IRT+10J3aJH3l1yzEg9y3wkTDgDk7TSDFX+wKFiWjqWp/iCfLIYzGyasx9l0SAFPT1HwSCR+0w/h1ES/MjA==", "cpu": [ "arm64" ], @@ -854,9 +860,9 @@ } }, "node_modules/@esbuild/darwin-x64": { - "version": "0.17.6", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.17.6.tgz", - "integrity": "sha512-xh2A5oPrYRfMFz74QXIQTQo8uA+hYzGWJFoeTE8EvoZGHb+idyV4ATaukaUvnnxJiauhs/fPx3vYhU4wiGfosg==", + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.20.2.tgz", + "integrity": "sha512-tBcXp9KNphnNH0dfhv8KYkZhjc+H3XBkF5DKtswJblV7KlT9EI2+jeA8DgBjp908WEuYll6pF+UStUCfEpdysA==", "cpu": [ "x64" ], @@ -870,9 +876,9 @@ } }, "node_modules/@esbuild/freebsd-arm64": { - "version": "0.17.6", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.17.6.tgz", - "integrity": "sha512-EnUwjRc1inT4ccZh4pB3v1cIhohE2S4YXlt1OvI7sw/+pD+dIE4smwekZlEPIwY6PhU6oDWwITrQQm5S2/iZgg==", + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.20.2.tgz", + "integrity": "sha512-d3qI41G4SuLiCGCFGUrKsSeTXyWG6yem1KcGZVS+3FYlYhtNoNgYrWcvkOoaqMhwXSMrZRl69ArHsGJ9mYdbbw==", "cpu": [ "arm64" ], @@ -886,9 +892,9 @@ } }, "node_modules/@esbuild/freebsd-x64": { - "version": "0.17.6", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.17.6.tgz", - "integrity": "sha512-Uh3HLWGzH6FwpviUcLMKPCbZUAFzv67Wj5MTwK6jn89b576SR2IbEp+tqUHTr8DIl0iDmBAf51MVaP7pw6PY5Q==", + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.20.2.tgz", + "integrity": "sha512-d+DipyvHRuqEeM5zDivKV1KuXn9WeRX6vqSqIDgwIfPQtwMP4jaDsQsDncjTDDsExT4lR/91OLjRo8bmC1e+Cw==", "cpu": [ "x64" ], @@ -902,9 +908,9 @@ } }, "node_modules/@esbuild/linux-arm": { - "version": "0.17.6", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.17.6.tgz", - "integrity": "sha512-7YdGiurNt7lqO0Bf/U9/arrPWPqdPqcV6JCZda4LZgEn+PTQ5SMEI4MGR52Bfn3+d6bNEGcWFzlIxiQdS48YUw==", + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.20.2.tgz", + "integrity": "sha512-VhLPeR8HTMPccbuWWcEUD1Az68TqaTYyj6nfE4QByZIQEQVWBB8vup8PpR7y1QHL3CpcF6xd5WVBU/+SBEvGTg==", "cpu": [ "arm" ], @@ -918,9 +924,9 @@ } }, "node_modules/@esbuild/linux-arm64": { - "version": "0.17.6", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.17.6.tgz", - "integrity": "sha512-bUR58IFOMJX523aDVozswnlp5yry7+0cRLCXDsxnUeQYJik1DukMY+apBsLOZJblpH+K7ox7YrKrHmJoWqVR9w==", + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.20.2.tgz", + "integrity": "sha512-9pb6rBjGvTFNira2FLIWqDk/uaf42sSyLE8j1rnUpuzsODBq7FvpwHYZxQ/It/8b+QOS1RYfqgGFNLRI+qlq2A==", "cpu": [ "arm64" ], @@ -934,9 +940,9 @@ } }, "node_modules/@esbuild/linux-ia32": { - "version": "0.17.6", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.17.6.tgz", - "integrity": "sha512-ujp8uoQCM9FRcbDfkqECoARsLnLfCUhKARTP56TFPog8ie9JG83D5GVKjQ6yVrEVdMie1djH86fm98eY3quQkQ==", + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.20.2.tgz", + "integrity": "sha512-o10utieEkNPFDZFQm9CoP7Tvb33UutoJqg3qKf1PWVeeJhJw0Q347PxMvBgVVFgouYLGIhFYG0UGdBumROyiig==", "cpu": [ "ia32" ], @@ -950,9 +956,9 @@ } }, "node_modules/@esbuild/linux-loong64": { - "version": "0.17.6", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.17.6.tgz", - "integrity": "sha512-y2NX1+X/Nt+izj9bLoiaYB9YXT/LoaQFYvCkVD77G/4F+/yuVXYCWz4SE9yr5CBMbOxOfBcy/xFL4LlOeNlzYQ==", + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.20.2.tgz", + "integrity": "sha512-PR7sp6R/UC4CFVomVINKJ80pMFlfDfMQMYynX7t1tNTeivQ6XdX5r2XovMmha/VjR1YN/HgHWsVcTRIMkymrgQ==", "cpu": [ "loong64" ], @@ -966,9 +972,9 @@ } }, "node_modules/@esbuild/linux-mips64el": { - "version": "0.17.6", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.17.6.tgz", - "integrity": "sha512-09AXKB1HDOzXD+j3FdXCiL/MWmZP0Ex9eR8DLMBVcHorrWJxWmY8Nms2Nm41iRM64WVx7bA/JVHMv081iP2kUA==", + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.20.2.tgz", + "integrity": "sha512-4BlTqeutE/KnOiTG5Y6Sb/Hw6hsBOZapOVF6njAESHInhlQAghVVZL1ZpIctBOoTFbQyGW+LsVYZ8lSSB3wkjA==", "cpu": [ "mips64el" ], @@ -982,9 +988,9 @@ } }, "node_modules/@esbuild/linux-ppc64": { - "version": "0.17.6", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.17.6.tgz", - "integrity": "sha512-AmLhMzkM8JuqTIOhxnX4ubh0XWJIznEynRnZAVdA2mMKE6FAfwT2TWKTwdqMG+qEaeyDPtfNoZRpJbD4ZBv0Tg==", + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.20.2.tgz", + "integrity": "sha512-rD3KsaDprDcfajSKdn25ooz5J5/fWBylaaXkuotBDGnMnDP1Uv5DLAN/45qfnf3JDYyJv/ytGHQaziHUdyzaAg==", "cpu": [ "ppc64" ], @@ -998,9 +1004,9 @@ } }, "node_modules/@esbuild/linux-riscv64": { - "version": "0.17.6", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.17.6.tgz", - "integrity": "sha512-Y4Ri62PfavhLQhFbqucysHOmRamlTVK10zPWlqjNbj2XMea+BOs4w6ASKwQwAiqf9ZqcY9Ab7NOU4wIgpxwoSQ==", + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.20.2.tgz", + "integrity": "sha512-snwmBKacKmwTMmhLlz/3aH1Q9T8v45bKYGE3j26TsaOVtjIag4wLfWSiZykXzXuE1kbCE+zJRmwp+ZbIHinnVg==", "cpu": [ "riscv64" ], @@ -1014,9 +1020,9 @@ } }, "node_modules/@esbuild/linux-s390x": { - "version": "0.17.6", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.17.6.tgz", - "integrity": "sha512-SPUiz4fDbnNEm3JSdUW8pBJ/vkop3M1YwZAVwvdwlFLoJwKEZ9L98l3tzeyMzq27CyepDQ3Qgoba44StgbiN5Q==", + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.20.2.tgz", + "integrity": "sha512-wcWISOobRWNm3cezm5HOZcYz1sKoHLd8VL1dl309DiixxVFoFe/o8HnwuIwn6sXre88Nwj+VwZUvJf4AFxkyrQ==", "cpu": [ "s390x" ], @@ -1030,9 +1036,9 @@ } }, "node_modules/@esbuild/linux-x64": { - "version": "0.17.6", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.17.6.tgz", - "integrity": "sha512-a3yHLmOodHrzuNgdpB7peFGPx1iJ2x6m+uDvhP2CKdr2CwOaqEFMeSqYAHU7hG+RjCq8r2NFujcd/YsEsFgTGw==", + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.20.2.tgz", + "integrity": "sha512-1MdwI6OOTsfQfek8sLwgyjOXAu+wKhLEoaOLTjbijk6E2WONYpH9ZU2mNtR+lZ2B4uwr+usqGuVfFT9tMtGvGw==", "cpu": [ "x64" ], @@ -1046,9 +1052,9 @@ } }, "node_modules/@esbuild/netbsd-x64": { - "version": "0.17.6", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.17.6.tgz", - "integrity": "sha512-EanJqcU/4uZIBreTrnbnre2DXgXSa+Gjap7ifRfllpmyAU7YMvaXmljdArptTHmjrkkKm9BK6GH5D5Yo+p6y5A==", + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.20.2.tgz", + "integrity": "sha512-K8/DhBxcVQkzYc43yJXDSyjlFeHQJBiowJ0uVL6Tor3jGQfSGHNNJcWxNbOI8v5k82prYqzPuwkzHt3J1T1iZQ==", "cpu": [ "x64" ], @@ -1062,9 +1068,9 @@ } }, "node_modules/@esbuild/openbsd-x64": { - "version": "0.17.6", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.17.6.tgz", - "integrity": "sha512-xaxeSunhQRsTNGFanoOkkLtnmMn5QbA0qBhNet/XLVsc+OVkpIWPHcr3zTW2gxVU5YOHFbIHR9ODuaUdNza2Vw==", + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.20.2.tgz", + "integrity": "sha512-eMpKlV0SThJmmJgiVyN9jTPJ2VBPquf6Kt/nAoo6DgHAoN57K15ZghiHaMvqjCye/uU4X5u3YSMgVBI1h3vKrQ==", "cpu": [ "x64" ], @@ -1078,9 +1084,9 @@ } }, "node_modules/@esbuild/sunos-x64": { - "version": "0.17.6", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.17.6.tgz", - "integrity": "sha512-gnMnMPg5pfMkZvhHee21KbKdc6W3GR8/JuE0Da1kjwpK6oiFU3nqfHuVPgUX2rsOx9N2SadSQTIYV1CIjYG+xw==", + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.20.2.tgz", + "integrity": "sha512-2UyFtRC6cXLyejf/YEld4Hajo7UHILetzE1vsRcGL3earZEW77JxrFjH4Ez2qaTiEfMgAXxfAZCm1fvM/G/o8w==", "cpu": [ "x64" ], @@ -1094,9 +1100,9 @@ } }, "node_modules/@esbuild/win32-arm64": { - "version": "0.17.6", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.17.6.tgz", - "integrity": "sha512-G95n7vP1UnGJPsVdKXllAJPtqjMvFYbN20e8RK8LVLhlTiSOH1sd7+Gt7rm70xiG+I5tM58nYgwWrLs6I1jHqg==", + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.20.2.tgz", + "integrity": "sha512-GRibxoawM9ZCnDxnP3usoUDO9vUkpAxIIZ6GQI+IlVmr5kP3zUq+l17xELTHMWTWzjxa2guPNyrpq1GWmPvcGQ==", "cpu": [ "arm64" ], @@ -1110,9 +1116,9 @@ } }, "node_modules/@esbuild/win32-ia32": { - "version": "0.17.6", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.17.6.tgz", - "integrity": "sha512-96yEFzLhq5bv9jJo5JhTs1gI+1cKQ83cUpyxHuGqXVwQtY5Eq54ZEsKs8veKtiKwlrNimtckHEkj4mRh4pPjsg==", + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.20.2.tgz", + "integrity": "sha512-HfLOfn9YWmkSKRQqovpnITazdtquEW8/SoHW7pWpuEeguaZI4QnCRW6b+oZTztdBnZOS2hqJ6im/D5cPzBTTlQ==", "cpu": [ "ia32" ], @@ -1126,9 +1132,9 @@ } }, "node_modules/@esbuild/win32-x64": { - "version": "0.17.6", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.17.6.tgz", - "integrity": "sha512-n6d8MOyUrNp6G4VSpRcgjs5xj4A91svJSaiwLIDWVWEsZtpN5FA9NlBbZHDmAJc2e8e6SF4tkBD3HAvPF+7igA==", + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.20.2.tgz", + "integrity": "sha512-N49X4lJX27+l9jbLKSqZ6bKNjzQvHaT8IIFUy+YIqmXQdjYCToGWwOItDrfby14c78aDd5NHQl29xingXfCdLQ==", "cpu": [ "x64" ], @@ -2164,288 +2170,250 @@ } } }, - "node_modules/@remix-run/express": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/@remix-run/express/-/express-2.5.1.tgz", - "integrity": "sha512-ISaf2hzHxDTS1hNsOovRoSfIQC29m4ogzXvBC6xp2BuJj0K8R0yQ4RFD4+qUFEUnS2n6MyWyjFQRhOC6PhQhRw==", - "dependencies": { - "@remix-run/node": "2.5.1" - }, + "node_modules/@remix-run/dev/node_modules/@esbuild/android-arm": { + "version": "0.17.6", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.17.6.tgz", + "integrity": "sha512-bSC9YVUjADDy1gae8RrioINU6e1lCkg3VGVwm0QQ2E1CWcC4gnMce9+B6RpxuSsrsXsk1yojn7sp1fnG8erE2g==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], "engines": { - "node": ">=18.0.0" - }, - "peerDependencies": { - "express": "^4.17.1", - "typescript": "^5.1.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "node": ">=12" } }, - "node_modules/@remix-run/node": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/@remix-run/node/-/node-2.5.1.tgz", - "integrity": "sha512-UI442xzHAiokmsfrYOabMQB024+IizmRhZBGcNa42QjJWsNqogy1bNwYhzEpB6oQEB1wF3vwOKK1AD1/iYA/9A==", - "dependencies": { - "@remix-run/server-runtime": "2.5.1", - "@remix-run/web-fetch": "^4.4.2", - "@remix-run/web-file": "^3.1.0", - "@remix-run/web-stream": "^1.1.0", - "@web3-storage/multipart-parser": "^1.0.0", - "cookie-signature": "^1.1.0", - "source-map-support": "^0.5.21", - "stream-slice": "^0.1.2" - }, + "node_modules/@remix-run/dev/node_modules/@esbuild/android-arm64": { + "version": "0.17.6", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.17.6.tgz", + "integrity": "sha512-YnYSCceN/dUzUr5kdtUzB+wZprCafuD89Hs0Aqv9QSdwhYQybhXTaSTcrl6X/aWThn1a/j0eEpUBGOE7269REg==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], "engines": { - "node": ">=18.0.0" - }, - "peerDependencies": { - "typescript": "^5.1.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "node": ">=12" } }, - "node_modules/@remix-run/react": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/@remix-run/react/-/react-2.5.1.tgz", - "integrity": "sha512-MNXHLj4Iu9Iyi+3uY61JZJ1Rtx2nM/z11j9AtwQdEADkh1/t9GruhtT/8VLplToOl0qWZKItboWScKf6uRQsrw==", - "dependencies": { - "@remix-run/router": "1.14.2", - "@remix-run/server-runtime": "2.5.1", - "react-router": "6.21.3", - "react-router-dom": "6.21.3" - }, + "node_modules/@remix-run/dev/node_modules/@esbuild/android-x64": { + "version": "0.17.6", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.17.6.tgz", + "integrity": "sha512-MVcYcgSO7pfu/x34uX9u2QIZHmXAB7dEiLQC5bBl5Ryqtpj9lT2sg3gNDEsrPEmimSJW2FXIaxqSQ501YLDsZQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], "engines": { - "node": ">=18.0.0" - }, - "peerDependencies": { - "react": "^18.0.0", - "react-dom": "^18.0.0", - "typescript": "^5.1.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "node": ">=12" } }, - "node_modules/@remix-run/router": { - "version": "1.14.2", - "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.14.2.tgz", - "integrity": "sha512-ACXpdMM9hmKZww21yEqWwiLws/UPLhNKvimN8RrYSqPSvB3ov7sLvAcfvaxePeLvccTQKGdkDIhLYApZVDFuKg==", + "node_modules/@remix-run/dev/node_modules/@esbuild/darwin-arm64": { + "version": "0.17.6", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.17.6.tgz", + "integrity": "sha512-bsDRvlbKMQMt6Wl08nHtFz++yoZHsyTOxnjfB2Q95gato+Yi4WnRl13oC2/PJJA9yLCoRv9gqT/EYX0/zDsyMA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], "engines": { - "node": ">=14.0.0" + "node": ">=12" } }, - "node_modules/@remix-run/serve": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/@remix-run/serve/-/serve-2.5.1.tgz", - "integrity": "sha512-r1IWfirwkLrxADd8uFUIpLR1wMU8VeRI4ED4SpbhrKwqODLrYtv5irzjei+r/w0y0Oob8DMHnYxg03UY4T7ejg==", - "dependencies": { - "@remix-run/express": "2.5.1", - "@remix-run/node": "2.5.1", - "chokidar": "^3.5.3", - "compression": "^1.7.4", - "express": "^4.17.1", - "get-port": "5.1.1", - "morgan": "^1.10.0", - "source-map-support": "^0.5.21" - }, - "bin": { - "remix-serve": "dist/cli.js" - }, + "node_modules/@remix-run/dev/node_modules/@esbuild/darwin-x64": { + "version": "0.17.6", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.17.6.tgz", + "integrity": "sha512-xh2A5oPrYRfMFz74QXIQTQo8uA+hYzGWJFoeTE8EvoZGHb+idyV4ATaukaUvnnxJiauhs/fPx3vYhU4wiGfosg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], "engines": { - "node": ">=18.0.0" + "node": ">=12" } }, - "node_modules/@remix-run/server-runtime": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/@remix-run/server-runtime/-/server-runtime-2.5.1.tgz", - "integrity": "sha512-bP31jrVbYTJ2eP5sxZfDgT1YyXzDlzsfMxGYVzpaoLCYDJAekq1QpHLLXKGOXhmyb46O9rdhlQKfwD6WpAxr3A==", - "dependencies": { - "@remix-run/router": "1.14.2", - "@types/cookie": "^0.6.0", - "@web3-storage/multipart-parser": "^1.0.0", - "cookie": "^0.6.0", - "set-cookie-parser": "^2.4.8", - "source-map": "^0.7.3" - }, + "node_modules/@remix-run/dev/node_modules/@esbuild/freebsd-arm64": { + "version": "0.17.6", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.17.6.tgz", + "integrity": "sha512-EnUwjRc1inT4ccZh4pB3v1cIhohE2S4YXlt1OvI7sw/+pD+dIE4smwekZlEPIwY6PhU6oDWwITrQQm5S2/iZgg==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], "engines": { - "node": ">=18.0.0" - }, - "peerDependencies": { - "typescript": "^5.1.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@remix-run/web-blob": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@remix-run/web-blob/-/web-blob-3.1.0.tgz", - "integrity": "sha512-owGzFLbqPH9PlKb8KvpNJ0NO74HWE2euAn61eEiyCXX/oteoVzTVSN8mpLgDjaxBf2btj5/nUllSUgpyd6IH6g==", - "dependencies": { - "@remix-run/web-stream": "^1.1.0", - "web-encoding": "1.1.5" + "node": ">=12" } }, - "node_modules/@remix-run/web-fetch": { - "version": "4.4.2", - "resolved": "https://registry.npmjs.org/@remix-run/web-fetch/-/web-fetch-4.4.2.tgz", - "integrity": "sha512-jgKfzA713/4kAW/oZ4bC3MoLWyjModOVDjFPNseVqcJKSafgIscrYL9G50SurEYLswPuoU3HzSbO0jQCMYWHhA==", - "dependencies": { - "@remix-run/web-blob": "^3.1.0", - "@remix-run/web-file": "^3.1.0", - "@remix-run/web-form-data": "^3.1.0", - "@remix-run/web-stream": "^1.1.0", - "@web3-storage/multipart-parser": "^1.0.0", - "abort-controller": "^3.0.0", - "data-uri-to-buffer": "^3.0.1", - "mrmime": "^1.0.0" - }, + "node_modules/@remix-run/dev/node_modules/@esbuild/freebsd-x64": { + "version": "0.17.6", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.17.6.tgz", + "integrity": "sha512-Uh3HLWGzH6FwpviUcLMKPCbZUAFzv67Wj5MTwK6jn89b576SR2IbEp+tqUHTr8DIl0iDmBAf51MVaP7pw6PY5Q==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], "engines": { - "node": "^10.17 || >=12.3" - } - }, - "node_modules/@remix-run/web-file": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@remix-run/web-file/-/web-file-3.1.0.tgz", - "integrity": "sha512-dW2MNGwoiEYhlspOAXFBasmLeYshyAyhIdrlXBi06Duex5tDr3ut2LFKVj7tyHLmn8nnNwFf1BjNbkQpygC2aQ==", - "dependencies": { - "@remix-run/web-blob": "^3.1.0" - } - }, - "node_modules/@remix-run/web-form-data": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@remix-run/web-form-data/-/web-form-data-3.1.0.tgz", - "integrity": "sha512-NdeohLMdrb+pHxMQ/Geuzdp0eqPbea+Ieo8M8Jx2lGC6TBHsgHzYcBvr0LyPdPVycNRDEpWpiDdCOdCryo3f9A==", - "dependencies": { - "web-encoding": "1.1.5" - } - }, - "node_modules/@remix-run/web-stream": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@remix-run/web-stream/-/web-stream-1.1.0.tgz", - "integrity": "sha512-KRJtwrjRV5Bb+pM7zxcTJkhIqWWSy+MYsIxHK+0m5atcznsf15YwUBWHWulZerV2+vvHH1Lp1DD7pw6qKW8SgA==", - "dependencies": { - "web-streams-polyfill": "^3.1.1" + "node": ">=12" } }, - "node_modules/@rollup/rollup-android-arm-eabi": { - "version": "4.9.6", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.9.6.tgz", - "integrity": "sha512-MVNXSSYN6QXOulbHpLMKYi60ppyO13W9my1qogeiAqtjb2yR4LSmfU2+POvDkLzhjYLXz9Rf9+9a3zFHW1Lecg==", + "node_modules/@remix-run/dev/node_modules/@esbuild/linux-arm": { + "version": "0.17.6", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.17.6.tgz", + "integrity": "sha512-7YdGiurNt7lqO0Bf/U9/arrPWPqdPqcV6JCZda4LZgEn+PTQ5SMEI4MGR52Bfn3+d6bNEGcWFzlIxiQdS48YUw==", "cpu": [ "arm" ], "dev": true, "optional": true, "os": [ - "android" - ] + "linux" + ], + "engines": { + "node": ">=12" + } }, - "node_modules/@rollup/rollup-android-arm64": { - "version": "4.9.6", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.9.6.tgz", - "integrity": "sha512-T14aNLpqJ5wzKNf5jEDpv5zgyIqcpn1MlwCrUXLrwoADr2RkWA0vOWP4XxbO9aiO3dvMCQICZdKeDrFl7UMClw==", + "node_modules/@remix-run/dev/node_modules/@esbuild/linux-arm64": { + "version": "0.17.6", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.17.6.tgz", + "integrity": "sha512-bUR58IFOMJX523aDVozswnlp5yry7+0cRLCXDsxnUeQYJik1DukMY+apBsLOZJblpH+K7ox7YrKrHmJoWqVR9w==", "cpu": [ "arm64" ], "dev": true, "optional": true, "os": [ - "android" - ] + "linux" + ], + "engines": { + "node": ">=12" + } }, - "node_modules/@rollup/rollup-darwin-arm64": { - "version": "4.9.6", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.9.6.tgz", - "integrity": "sha512-CqNNAyhRkTbo8VVZ5R85X73H3R5NX9ONnKbXuHisGWC0qRbTTxnF1U4V9NafzJbgGM0sHZpdO83pLPzq8uOZFw==", + "node_modules/@remix-run/dev/node_modules/@esbuild/linux-ia32": { + "version": "0.17.6", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.17.6.tgz", + "integrity": "sha512-ujp8uoQCM9FRcbDfkqECoARsLnLfCUhKARTP56TFPog8ie9JG83D5GVKjQ6yVrEVdMie1djH86fm98eY3quQkQ==", "cpu": [ - "arm64" + "ia32" ], "dev": true, "optional": true, "os": [ - "darwin" - ] + "linux" + ], + "engines": { + "node": ">=12" + } }, - "node_modules/@rollup/rollup-darwin-x64": { - "version": "4.9.6", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.9.6.tgz", - "integrity": "sha512-zRDtdJuRvA1dc9Mp6BWYqAsU5oeLixdfUvkTHuiYOHwqYuQ4YgSmi6+/lPvSsqc/I0Omw3DdICx4Tfacdzmhog==", + "node_modules/@remix-run/dev/node_modules/@esbuild/linux-loong64": { + "version": "0.17.6", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.17.6.tgz", + "integrity": "sha512-y2NX1+X/Nt+izj9bLoiaYB9YXT/LoaQFYvCkVD77G/4F+/yuVXYCWz4SE9yr5CBMbOxOfBcy/xFL4LlOeNlzYQ==", "cpu": [ - "x64" + "loong64" ], "dev": true, "optional": true, "os": [ - "darwin" - ] + "linux" + ], + "engines": { + "node": ">=12" + } }, - "node_modules/@rollup/rollup-linux-arm-gnueabihf": { - "version": "4.9.6", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.9.6.tgz", - "integrity": "sha512-oNk8YXDDnNyG4qlNb6is1ojTOGL/tRhbbKeE/YuccItzerEZT68Z9gHrY3ROh7axDc974+zYAPxK5SH0j/G+QQ==", + "node_modules/@remix-run/dev/node_modules/@esbuild/linux-mips64el": { + "version": "0.17.6", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.17.6.tgz", + "integrity": "sha512-09AXKB1HDOzXD+j3FdXCiL/MWmZP0Ex9eR8DLMBVcHorrWJxWmY8Nms2Nm41iRM64WVx7bA/JVHMv081iP2kUA==", "cpu": [ - "arm" + "mips64el" ], "dev": true, "optional": true, "os": [ "linux" - ] + ], + "engines": { + "node": ">=12" + } }, - "node_modules/@rollup/rollup-linux-arm64-gnu": { - "version": "4.9.6", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.9.6.tgz", - "integrity": "sha512-Z3O60yxPtuCYobrtzjo0wlmvDdx2qZfeAWTyfOjEDqd08kthDKexLpV97KfAeUXPosENKd8uyJMRDfFMxcYkDQ==", + "node_modules/@remix-run/dev/node_modules/@esbuild/linux-ppc64": { + "version": "0.17.6", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.17.6.tgz", + "integrity": "sha512-AmLhMzkM8JuqTIOhxnX4ubh0XWJIznEynRnZAVdA2mMKE6FAfwT2TWKTwdqMG+qEaeyDPtfNoZRpJbD4ZBv0Tg==", "cpu": [ - "arm64" + "ppc64" ], "dev": true, "optional": true, "os": [ "linux" - ] + ], + "engines": { + "node": ">=12" + } }, - "node_modules/@rollup/rollup-linux-arm64-musl": { - "version": "4.9.6", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.9.6.tgz", - "integrity": "sha512-gpiG0qQJNdYEVad+1iAsGAbgAnZ8j07FapmnIAQgODKcOTjLEWM9sRb+MbQyVsYCnA0Im6M6QIq6ax7liws6eQ==", + "node_modules/@remix-run/dev/node_modules/@esbuild/linux-riscv64": { + "version": "0.17.6", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.17.6.tgz", + "integrity": "sha512-Y4Ri62PfavhLQhFbqucysHOmRamlTVK10zPWlqjNbj2XMea+BOs4w6ASKwQwAiqf9ZqcY9Ab7NOU4wIgpxwoSQ==", "cpu": [ - "arm64" + "riscv64" ], "dev": true, "optional": true, "os": [ "linux" - ] + ], + "engines": { + "node": ">=12" + } }, - "node_modules/@rollup/rollup-linux-riscv64-gnu": { - "version": "4.9.6", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.9.6.tgz", - "integrity": "sha512-+uCOcvVmFUYvVDr27aiyun9WgZk0tXe7ThuzoUTAukZJOwS5MrGbmSlNOhx1j80GdpqbOty05XqSl5w4dQvcOA==", + "node_modules/@remix-run/dev/node_modules/@esbuild/linux-s390x": { + "version": "0.17.6", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.17.6.tgz", + "integrity": "sha512-SPUiz4fDbnNEm3JSdUW8pBJ/vkop3M1YwZAVwvdwlFLoJwKEZ9L98l3tzeyMzq27CyepDQ3Qgoba44StgbiN5Q==", "cpu": [ - "riscv64" + "s390x" ], "dev": true, "optional": true, "os": [ "linux" - ] + ], + "engines": { + "node": ">=12" + } }, - "node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.9.6", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.9.6.tgz", - "integrity": "sha512-HUNqM32dGzfBKuaDUBqFB7tP6VMN74eLZ33Q9Y1TBqRDn+qDonkAUyKWwF9BR9unV7QUzffLnz9GrnKvMqC/fw==", + "node_modules/@remix-run/dev/node_modules/@esbuild/linux-x64": { + "version": "0.17.6", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.17.6.tgz", + "integrity": "sha512-a3yHLmOodHrzuNgdpB7peFGPx1iJ2x6m+uDvhP2CKdr2CwOaqEFMeSqYAHU7hG+RjCq8r2NFujcd/YsEsFgTGw==", "cpu": [ "x64" ], @@ -2453,309 +2421,832 @@ "optional": true, "os": [ "linux" - ] + ], + "engines": { + "node": ">=12" + } }, - "node_modules/@rollup/rollup-linux-x64-musl": { - "version": "4.9.6", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.9.6.tgz", - "integrity": "sha512-ch7M+9Tr5R4FK40FHQk8VnML0Szi2KRujUgHXd/HjuH9ifH72GUmw6lStZBo3c3GB82vHa0ZoUfjfcM7JiiMrQ==", + "node_modules/@remix-run/dev/node_modules/@esbuild/netbsd-x64": { + "version": "0.17.6", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.17.6.tgz", + "integrity": "sha512-EanJqcU/4uZIBreTrnbnre2DXgXSa+Gjap7ifRfllpmyAU7YMvaXmljdArptTHmjrkkKm9BK6GH5D5Yo+p6y5A==", "cpu": [ "x64" ], "dev": true, "optional": true, "os": [ - "linux" - ] + "netbsd" + ], + "engines": { + "node": ">=12" + } }, - "node_modules/@rollup/rollup-win32-arm64-msvc": { - "version": "4.9.6", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.9.6.tgz", - "integrity": "sha512-VD6qnR99dhmTQ1mJhIzXsRcTBvTjbfbGGwKAHcu+52cVl15AC/kplkhxzW/uT0Xl62Y/meBKDZvoJSJN+vTeGA==", + "node_modules/@remix-run/dev/node_modules/@esbuild/openbsd-x64": { + "version": "0.17.6", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.17.6.tgz", + "integrity": "sha512-xaxeSunhQRsTNGFanoOkkLtnmMn5QbA0qBhNet/XLVsc+OVkpIWPHcr3zTW2gxVU5YOHFbIHR9ODuaUdNza2Vw==", "cpu": [ - "arm64" + "x64" ], "dev": true, "optional": true, "os": [ - "win32" - ] + "openbsd" + ], + "engines": { + "node": ">=12" + } }, - "node_modules/@rollup/rollup-win32-ia32-msvc": { - "version": "4.9.6", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.9.6.tgz", - "integrity": "sha512-J9AFDq/xiRI58eR2NIDfyVmTYGyIZmRcvcAoJ48oDld/NTR8wyiPUu2X/v1navJ+N/FGg68LEbX3Ejd6l8B7MQ==", + "node_modules/@remix-run/dev/node_modules/@esbuild/sunos-x64": { + "version": "0.17.6", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.17.6.tgz", + "integrity": "sha512-gnMnMPg5pfMkZvhHee21KbKdc6W3GR8/JuE0Da1kjwpK6oiFU3nqfHuVPgUX2rsOx9N2SadSQTIYV1CIjYG+xw==", "cpu": [ - "ia32" + "x64" ], "dev": true, "optional": true, "os": [ - "win32" - ] + "sunos" + ], + "engines": { + "node": ">=12" + } }, - "node_modules/@rollup/rollup-win32-x64-msvc": { - "version": "4.9.6", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.9.6.tgz", - "integrity": "sha512-jqzNLhNDvIZOrt69Ce4UjGRpXJBzhUBzawMwnaDAwyHriki3XollsewxWzOzz+4yOFDkuJHtTsZFwMxhYJWmLQ==", + "node_modules/@remix-run/dev/node_modules/@esbuild/win32-arm64": { + "version": "0.17.6", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.17.6.tgz", + "integrity": "sha512-G95n7vP1UnGJPsVdKXllAJPtqjMvFYbN20e8RK8LVLhlTiSOH1sd7+Gt7rm70xiG+I5tM58nYgwWrLs6I1jHqg==", "cpu": [ - "x64" + "arm64" ], "dev": true, "optional": true, "os": [ "win32" - ] - }, - "node_modules/@stylistic/eslint-plugin": { - "version": "1.5.4", - "resolved": "https://registry.npmjs.org/@stylistic/eslint-plugin/-/eslint-plugin-1.5.4.tgz", - "integrity": "sha512-zWPXr+O67GC9KDAFkbL1U9UVqE6Iv69YMKhkIECCmE0GvClUJwdfsimm4XebEDondV7kfjMrTDZaYfrI5aS0Jg==", + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@remix-run/dev/node_modules/@esbuild/win32-ia32": { + "version": "0.17.6", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.17.6.tgz", + "integrity": "sha512-96yEFzLhq5bv9jJo5JhTs1gI+1cKQ83cUpyxHuGqXVwQtY5Eq54ZEsKs8veKtiKwlrNimtckHEkj4mRh4pPjsg==", + "cpu": [ + "ia32" + ], "dev": true, - "dependencies": { - "@stylistic/eslint-plugin-js": "1.5.4", - "@stylistic/eslint-plugin-jsx": "1.5.4", - "@stylistic/eslint-plugin-plus": "1.5.4", - "@stylistic/eslint-plugin-ts": "1.5.4" - }, + "optional": true, + "os": [ + "win32" + ], "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "peerDependencies": { - "eslint": ">=8.40.0" + "node": ">=12" } }, - "node_modules/@stylistic/eslint-plugin-js": { - "version": "1.5.4", - "resolved": "https://registry.npmjs.org/@stylistic/eslint-plugin-js/-/eslint-plugin-js-1.5.4.tgz", - "integrity": "sha512-3ctWb3NvJNV1MsrZN91cYp2EGInLPSoZKphXIbIRx/zjZxKwLDr9z4LMOWtqjq14li/OgqUUcMq5pj8fgbLoTw==", + "node_modules/@remix-run/dev/node_modules/@esbuild/win32-x64": { + "version": "0.17.6", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.17.6.tgz", + "integrity": "sha512-n6d8MOyUrNp6G4VSpRcgjs5xj4A91svJSaiwLIDWVWEsZtpN5FA9NlBbZHDmAJc2e8e6SF4tkBD3HAvPF+7igA==", + "cpu": [ + "x64" + ], "dev": true, - "dependencies": { - "acorn": "^8.11.3", - "escape-string-regexp": "^4.0.0", - "eslint-visitor-keys": "^3.4.3", - "espree": "^9.6.1" - }, + "optional": true, + "os": [ + "win32" + ], "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "peerDependencies": { - "eslint": ">=8.40.0" + "node": ">=12" } }, - "node_modules/@stylistic/eslint-plugin-jsx": { - "version": "1.5.4", - "resolved": "https://registry.npmjs.org/@stylistic/eslint-plugin-jsx/-/eslint-plugin-jsx-1.5.4.tgz", - "integrity": "sha512-JUfrpCkeBCqt1IZ4QsP4WgxGza4PhK4LPbc0VnCjHKygl+rgqoDAovqOuzFJ49wJ4Ix3r6OIHFuwiBGswZEVvg==", + "node_modules/@remix-run/dev/node_modules/esbuild": { + "version": "0.17.6", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.17.6.tgz", + "integrity": "sha512-TKFRp9TxrJDdRWfSsSERKEovm6v30iHnrjlcGhLBOtReE28Yp1VSBRfO3GTaOFMoxsNerx4TjrhzSuma9ha83Q==", "dev": true, - "dependencies": { - "@stylistic/eslint-plugin-js": "^1.5.4", - "estraverse": "^5.3.0" + "hasInstallScript": true, + "bin": { + "esbuild": "bin/esbuild" }, "engines": { - "node": "^16.0.0 || >=18.0.0" + "node": ">=12" }, - "peerDependencies": { - "eslint": ">=8.40.0" + "optionalDependencies": { + "@esbuild/android-arm": "0.17.6", + "@esbuild/android-arm64": "0.17.6", + "@esbuild/android-x64": "0.17.6", + "@esbuild/darwin-arm64": "0.17.6", + "@esbuild/darwin-x64": "0.17.6", + "@esbuild/freebsd-arm64": "0.17.6", + "@esbuild/freebsd-x64": "0.17.6", + "@esbuild/linux-arm": "0.17.6", + "@esbuild/linux-arm64": "0.17.6", + "@esbuild/linux-ia32": "0.17.6", + "@esbuild/linux-loong64": "0.17.6", + "@esbuild/linux-mips64el": "0.17.6", + "@esbuild/linux-ppc64": "0.17.6", + "@esbuild/linux-riscv64": "0.17.6", + "@esbuild/linux-s390x": "0.17.6", + "@esbuild/linux-x64": "0.17.6", + "@esbuild/netbsd-x64": "0.17.6", + "@esbuild/openbsd-x64": "0.17.6", + "@esbuild/sunos-x64": "0.17.6", + "@esbuild/win32-arm64": "0.17.6", + "@esbuild/win32-ia32": "0.17.6", + "@esbuild/win32-x64": "0.17.6" } }, - "node_modules/@stylistic/eslint-plugin-plus": { - "version": "1.5.4", - "resolved": "https://registry.npmjs.org/@stylistic/eslint-plugin-plus/-/eslint-plugin-plus-1.5.4.tgz", - "integrity": "sha512-dI0Cs5vYX/0uMhQDY+NK0cKQ0Pe9B6jWYxd0Ndud+mNloDaVLrsmJocK4zn+YfhGEDs1E4Nk5uAPZEumIpDuSg==", - "dev": true, + "node_modules/@remix-run/express": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@remix-run/express/-/express-2.5.1.tgz", + "integrity": "sha512-ISaf2hzHxDTS1hNsOovRoSfIQC29m4ogzXvBC6xp2BuJj0K8R0yQ4RFD4+qUFEUnS2n6MyWyjFQRhOC6PhQhRw==", "dependencies": { - "@typescript-eslint/utils": "^6.19.0" + "@remix-run/node": "2.5.1" + }, + "engines": { + "node": ">=18.0.0" }, "peerDependencies": { - "eslint": "*" + "express": "^4.17.1", + "typescript": "^5.1.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, - "node_modules/@stylistic/eslint-plugin-ts": { - "version": "1.5.4", - "resolved": "https://registry.npmjs.org/@stylistic/eslint-plugin-ts/-/eslint-plugin-ts-1.5.4.tgz", - "integrity": "sha512-NZDFVIlVNjuPvhT+0Cidm5IS3emtx338xbJTqs2xfOVRDGTpYwRHhNVEGa1rFOpYHmv0sAj6+OXbMDn7ul0K/g==", - "dev": true, + "node_modules/@remix-run/node": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@remix-run/node/-/node-2.5.1.tgz", + "integrity": "sha512-UI442xzHAiokmsfrYOabMQB024+IizmRhZBGcNa42QjJWsNqogy1bNwYhzEpB6oQEB1wF3vwOKK1AD1/iYA/9A==", "dependencies": { - "@stylistic/eslint-plugin-js": "1.5.4", - "@typescript-eslint/utils": "^6.19.0" + "@remix-run/server-runtime": "2.5.1", + "@remix-run/web-fetch": "^4.4.2", + "@remix-run/web-file": "^3.1.0", + "@remix-run/web-stream": "^1.1.0", + "@web3-storage/multipart-parser": "^1.0.0", + "cookie-signature": "^1.1.0", + "source-map-support": "^0.5.21", + "stream-slice": "^0.1.2" }, "engines": { - "node": "^16.0.0 || >=18.0.0" + "node": ">=18.0.0" }, "peerDependencies": { - "eslint": ">=8.40.0" + "typescript": "^5.1.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, - "node_modules/@typechain/ethers-v6": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/@typechain/ethers-v6/-/ethers-v6-0.5.1.tgz", - "integrity": "sha512-F+GklO8jBWlsaVV+9oHaPh5NJdd6rAKN4tklGfInX1Q7h0xPgVLP39Jl3eCulPB5qexI71ZFHwbljx4ZXNfouA==", - "dev": true, + "node_modules/@remix-run/react": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@remix-run/react/-/react-2.5.1.tgz", + "integrity": "sha512-MNXHLj4Iu9Iyi+3uY61JZJ1Rtx2nM/z11j9AtwQdEADkh1/t9GruhtT/8VLplToOl0qWZKItboWScKf6uRQsrw==", "dependencies": { - "lodash": "^4.17.15", - "ts-essentials": "^7.0.1" + "@remix-run/router": "1.14.2", + "@remix-run/server-runtime": "2.5.1", + "react-router": "6.21.3", + "react-router-dom": "6.21.3" + }, + "engines": { + "node": ">=18.0.0" }, "peerDependencies": { - "ethers": "6.x", - "typechain": "^8.3.2", - "typescript": ">=4.7.0" + "react": "^18.0.0", + "react-dom": "^18.0.0", + "typescript": "^5.1.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, - "node_modules/@types/acorn": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/@types/acorn/-/acorn-4.0.6.tgz", - "integrity": "sha512-veQTnWP+1D/xbxVrPC3zHnCZRjSrKfhbMUlEA43iMZLu7EsnTtkJklIuwrCPbOi8YkvDQAiW05VQQFvvz9oieQ==", - "dev": true, - "dependencies": { - "@types/estree": "*" + "node_modules/@remix-run/router": { + "version": "1.14.2", + "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.14.2.tgz", + "integrity": "sha512-ACXpdMM9hmKZww21yEqWwiLws/UPLhNKvimN8RrYSqPSvB3ov7sLvAcfvaxePeLvccTQKGdkDIhLYApZVDFuKg==", + "engines": { + "node": ">=14.0.0" } }, - "node_modules/@types/cookie": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.6.0.tgz", - "integrity": "sha512-4Kh9a6B2bQciAhf7FSuMRRkUWecJgJu9nPnx3yzpsfXX/c50REIqpHY4C82bXP90qrLtXtkDxTZosYO3UpOwlA==" - }, - "node_modules/@types/debug": { - "version": "4.1.12", - "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.12.tgz", - "integrity": "sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==", + "node_modules/@remix-run/serve": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@remix-run/serve/-/serve-2.5.1.tgz", + "integrity": "sha512-r1IWfirwkLrxADd8uFUIpLR1wMU8VeRI4ED4SpbhrKwqODLrYtv5irzjei+r/w0y0Oob8DMHnYxg03UY4T7ejg==", "dev": true, + "optional": true, + "peer": true, "dependencies": { - "@types/ms": "*" + "@remix-run/express": "2.5.1", + "@remix-run/node": "2.5.1", + "chokidar": "^3.5.3", + "compression": "^1.7.4", + "express": "^4.17.1", + "get-port": "5.1.1", + "morgan": "^1.10.0", + "source-map-support": "^0.5.21" + }, + "bin": { + "remix-serve": "dist/cli.js" + }, + "engines": { + "node": ">=18.0.0" } }, - "node_modules/@types/estree": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", - "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==", - "dev": true + "node_modules/@remix-run/server-runtime": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@remix-run/server-runtime/-/server-runtime-2.5.1.tgz", + "integrity": "sha512-bP31jrVbYTJ2eP5sxZfDgT1YyXzDlzsfMxGYVzpaoLCYDJAekq1QpHLLXKGOXhmyb46O9rdhlQKfwD6WpAxr3A==", + "dependencies": { + "@remix-run/router": "1.14.2", + "@types/cookie": "^0.6.0", + "@web3-storage/multipart-parser": "^1.0.0", + "cookie": "^0.6.0", + "set-cookie-parser": "^2.4.8", + "source-map": "^0.7.3" + }, + "engines": { + "node": ">=18.0.0" + }, + "peerDependencies": { + "typescript": "^5.1.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } }, - "node_modules/@types/estree-jsx": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@types/estree-jsx/-/estree-jsx-1.0.3.tgz", - "integrity": "sha512-pvQ+TKeRHeiUGRhvYwRrQ/ISnohKkSJR14fT2yqyZ4e9K5vqc7hrtY2Y1Dw0ZwAzQ6DQsxsaCUuSIIi8v0Cq6w==", - "dev": true, + "node_modules/@remix-run/web-blob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@remix-run/web-blob/-/web-blob-3.1.0.tgz", + "integrity": "sha512-owGzFLbqPH9PlKb8KvpNJ0NO74HWE2euAn61eEiyCXX/oteoVzTVSN8mpLgDjaxBf2btj5/nUllSUgpyd6IH6g==", "dependencies": { - "@types/estree": "*" + "@remix-run/web-stream": "^1.1.0", + "web-encoding": "1.1.5" } }, - "node_modules/@types/hast": { - "version": "2.3.9", - "resolved": "https://registry.npmjs.org/@types/hast/-/hast-2.3.9.tgz", - "integrity": "sha512-pTHyNlaMD/oKJmS+ZZUyFUcsZeBZpC0lmGquw98CqRVNgAdJZJeD7GoeLiT6Xbx5rU9VCjSt0RwEvDgzh4obFw==", - "dev": true, + "node_modules/@remix-run/web-fetch": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/@remix-run/web-fetch/-/web-fetch-4.4.2.tgz", + "integrity": "sha512-jgKfzA713/4kAW/oZ4bC3MoLWyjModOVDjFPNseVqcJKSafgIscrYL9G50SurEYLswPuoU3HzSbO0jQCMYWHhA==", "dependencies": { - "@types/unist": "^2" + "@remix-run/web-blob": "^3.1.0", + "@remix-run/web-file": "^3.1.0", + "@remix-run/web-form-data": "^3.1.0", + "@remix-run/web-stream": "^1.1.0", + "@web3-storage/multipart-parser": "^1.0.0", + "abort-controller": "^3.0.0", + "data-uri-to-buffer": "^3.0.1", + "mrmime": "^1.0.0" + }, + "engines": { + "node": "^10.17 || >=12.3" } }, - "node_modules/@types/json-schema": { - "version": "7.0.15", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", - "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", - "dev": true - }, - "node_modules/@types/json5": { - "version": "0.0.29", - "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", - "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", - "dev": true + "node_modules/@remix-run/web-file": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@remix-run/web-file/-/web-file-3.1.0.tgz", + "integrity": "sha512-dW2MNGwoiEYhlspOAXFBasmLeYshyAyhIdrlXBi06Duex5tDr3ut2LFKVj7tyHLmn8nnNwFf1BjNbkQpygC2aQ==", + "dependencies": { + "@remix-run/web-blob": "^3.1.0" + } }, - "node_modules/@types/mdast": { - "version": "3.0.15", - "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-3.0.15.tgz", - "integrity": "sha512-LnwD+mUEfxWMa1QpDraczIn6k0Ee3SMicuYSSzS6ZYl2gKS09EClnJYGd8Du6rfc5r/GZEk5o1mRb8TaTj03sQ==", - "dev": true, + "node_modules/@remix-run/web-form-data": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@remix-run/web-form-data/-/web-form-data-3.1.0.tgz", + "integrity": "sha512-NdeohLMdrb+pHxMQ/Geuzdp0eqPbea+Ieo8M8Jx2lGC6TBHsgHzYcBvr0LyPdPVycNRDEpWpiDdCOdCryo3f9A==", "dependencies": { - "@types/unist": "^2" + "web-encoding": "1.1.5" } }, - "node_modules/@types/mdx": { - "version": "2.0.10", - "resolved": "https://registry.npmjs.org/@types/mdx/-/mdx-2.0.10.tgz", - "integrity": "sha512-Rllzc5KHk0Al5/WANwgSPl1/CwjqCy+AZrGd78zuK+jO9aDM6ffblZ+zIjgPNAaEBmlO0RYDvLNh7wD0zKVgEg==", - "dev": true + "node_modules/@remix-run/web-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@remix-run/web-stream/-/web-stream-1.1.0.tgz", + "integrity": "sha512-KRJtwrjRV5Bb+pM7zxcTJkhIqWWSy+MYsIxHK+0m5atcznsf15YwUBWHWulZerV2+vvHH1Lp1DD7pw6qKW8SgA==", + "dependencies": { + "web-streams-polyfill": "^3.1.1" + } }, - "node_modules/@types/ms": { - "version": "0.7.34", - "resolved": "https://registry.npmjs.org/@types/ms/-/ms-0.7.34.tgz", - "integrity": "sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==", - "dev": true + "node_modules/@rollup/rollup-android-arm-eabi": { + "version": "4.9.6", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.9.6.tgz", + "integrity": "sha512-MVNXSSYN6QXOulbHpLMKYi60ppyO13W9my1qogeiAqtjb2yR4LSmfU2+POvDkLzhjYLXz9Rf9+9a3zFHW1Lecg==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ] }, - "node_modules/@types/node": { - "version": "20.11.7", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.11.7.tgz", - "integrity": "sha512-GPmeN1C3XAyV5uybAf4cMLWT9fDWcmQhZVtMFu7OR32WjrqGG+Wnk2V1d0bmtUyE/Zy1QJ9BxyiTih9z8Oks8A==", + "node_modules/@rollup/rollup-android-arm64": { + "version": "4.9.6", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.9.6.tgz", + "integrity": "sha512-T14aNLpqJ5wzKNf5jEDpv5zgyIqcpn1MlwCrUXLrwoADr2RkWA0vOWP4XxbO9aiO3dvMCQICZdKeDrFl7UMClw==", + "cpu": [ + "arm64" + ], "dev": true, - "dependencies": { - "undici-types": "~5.26.4" - } + "optional": true, + "os": [ + "android" + ] }, - "node_modules/@types/prettier": { - "version": "2.7.3", - "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.7.3.tgz", - "integrity": "sha512-+68kP9yzs4LMp7VNh8gdzMSPZFL44MLGqiHWvttYJe+6qnuVr4Ek9wSBQoveqY/r+LwjCcU29kNVkidwim+kYA==", - "dev": true + "node_modules/@rollup/rollup-darwin-arm64": { + "version": "4.9.6", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.9.6.tgz", + "integrity": "sha512-CqNNAyhRkTbo8VVZ5R85X73H3R5NX9ONnKbXuHisGWC0qRbTTxnF1U4V9NafzJbgGM0sHZpdO83pLPzq8uOZFw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ] }, - "node_modules/@types/prop-types": { - "version": "15.7.11", - "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.11.tgz", - "integrity": "sha512-ga8y9v9uyeiLdpKddhxYQkxNDrfvuPrlFb0N1qnZZByvcElJaXthF1UhvCh9TLWJBEHeNtdnbysW7Y6Uq8CVng==", - "devOptional": true + "node_modules/@rollup/rollup-darwin-x64": { + "version": "4.9.6", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.9.6.tgz", + "integrity": "sha512-zRDtdJuRvA1dc9Mp6BWYqAsU5oeLixdfUvkTHuiYOHwqYuQ4YgSmi6+/lPvSsqc/I0Omw3DdICx4Tfacdzmhog==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ] }, - "node_modules/@types/react": { - "version": "18.2.48", - "resolved": "https://registry.npmjs.org/@types/react/-/react-18.2.48.tgz", - "integrity": "sha512-qboRCl6Ie70DQQG9hhNREz81jqC1cs9EVNcjQ1AU+jH6NFfSAhVVbrrY/+nSF+Bsk4AOwm9Qa61InvMCyV+H3w==", - "devOptional": true, - "dependencies": { - "@types/prop-types": "*", - "@types/scheduler": "*", - "csstype": "^3.0.2" - } + "node_modules/@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.9.6", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.9.6.tgz", + "integrity": "sha512-oNk8YXDDnNyG4qlNb6is1ojTOGL/tRhbbKeE/YuccItzerEZT68Z9gHrY3ROh7axDc974+zYAPxK5SH0j/G+QQ==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] }, - "node_modules/@types/react-dom": { - "version": "18.2.18", - "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.2.18.tgz", - "integrity": "sha512-TJxDm6OfAX2KJWJdMEVTwWke5Sc/E/RlnPGvGfS0W7+6ocy2xhDVQVh/KvC2Uf7kACs+gDytdusDSdWfWkaNzw==", - "devOptional": true, - "dependencies": { - "@types/react": "*" - } + "node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.9.6", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.9.6.tgz", + "integrity": "sha512-Z3O60yxPtuCYobrtzjo0wlmvDdx2qZfeAWTyfOjEDqd08kthDKexLpV97KfAeUXPosENKd8uyJMRDfFMxcYkDQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] }, - "node_modules/@types/scheduler": { - "version": "0.16.8", - "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.8.tgz", - "integrity": "sha512-WZLiwShhwLRmeV6zH+GkbOFT6Z6VklCItrDioxUnv+u4Ll+8vKeFySoFyK/0ctcRpOmwAicELfmys1sDc/Rw+A==", - "devOptional": true + "node_modules/@rollup/rollup-linux-arm64-musl": { + "version": "4.9.6", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.9.6.tgz", + "integrity": "sha512-gpiG0qQJNdYEVad+1iAsGAbgAnZ8j07FapmnIAQgODKcOTjLEWM9sRb+MbQyVsYCnA0Im6M6QIq6ax7liws6eQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] }, - "node_modules/@types/semver": { - "version": "7.5.6", - "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.6.tgz", - "integrity": "sha512-dn1l8LaMea/IjDoHNd9J52uBbInB796CDffS6VdIxvqYCPSG0V0DzHp76GpaWnlhg88uYyPbXCDIowa86ybd5A==", - "dev": true + "node_modules/@rollup/rollup-linux-riscv64-gnu": { + "version": "4.9.6", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.9.6.tgz", + "integrity": "sha512-+uCOcvVmFUYvVDr27aiyun9WgZk0tXe7ThuzoUTAukZJOwS5MrGbmSlNOhx1j80GdpqbOty05XqSl5w4dQvcOA==", + "cpu": [ + "riscv64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] }, - "node_modules/@types/unist": { - "version": "2.0.10", - "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.10.tgz", - "integrity": "sha512-IfYcSBWE3hLpBg8+X2SEa8LVkJdJEkT2Ese2aaLs3ptGdVtABxndrMaxuFlQ1qdFf9Q5rDvDpxI3WwgvKFAsQA==", - "dev": true + "node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.9.6", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.9.6.tgz", + "integrity": "sha512-HUNqM32dGzfBKuaDUBqFB7tP6VMN74eLZ33Q9Y1TBqRDn+qDonkAUyKWwF9BR9unV7QUzffLnz9GrnKvMqC/fw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] }, - "node_modules/@types/use-sync-external-store": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/@types/use-sync-external-store/-/use-sync-external-store-0.0.3.tgz", - "integrity": "sha512-EwmlvuaxPNej9+T4v5AuBPJa2x2UOJVdjCtDHgcDqitUeOtjnJKJ+apYjVcAoBEMjKW1VVFGZLUb5+qqa09XFA==" + "node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.9.6", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.9.6.tgz", + "integrity": "sha512-ch7M+9Tr5R4FK40FHQk8VnML0Szi2KRujUgHXd/HjuH9ifH72GUmw6lStZBo3c3GB82vHa0ZoUfjfcM7JiiMrQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] }, - "node_modules/@typescript-eslint/eslint-plugin": { - "version": "6.19.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.19.1.tgz", - "integrity": "sha512-roQScUGFruWod9CEyoV5KlCYrubC/fvG8/1zXuT0WTcxX87GnMMmnksMwSg99lo1xiKrBzw2icsJPMAw1OtKxg==", + "node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.9.6", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.9.6.tgz", + "integrity": "sha512-VD6qnR99dhmTQ1mJhIzXsRcTBvTjbfbGGwKAHcu+52cVl15AC/kplkhxzW/uT0Xl62Y/meBKDZvoJSJN+vTeGA==", + "cpu": [ + "arm64" + ], "dev": true, - "dependencies": { - "@eslint-community/regexpp": "^4.5.1", - "@typescript-eslint/scope-manager": "6.19.1", - "@typescript-eslint/type-utils": "6.19.1", - "@typescript-eslint/utils": "6.19.1", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-ia32-msvc": { + "version": "4.9.6", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.9.6.tgz", + "integrity": "sha512-J9AFDq/xiRI58eR2NIDfyVmTYGyIZmRcvcAoJ48oDld/NTR8wyiPUu2X/v1navJ+N/FGg68LEbX3Ejd6l8B7MQ==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.9.6", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.9.6.tgz", + "integrity": "sha512-jqzNLhNDvIZOrt69Ce4UjGRpXJBzhUBzawMwnaDAwyHriki3XollsewxWzOzz+4yOFDkuJHtTsZFwMxhYJWmLQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@stylistic/eslint-plugin": { + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/@stylistic/eslint-plugin/-/eslint-plugin-1.5.4.tgz", + "integrity": "sha512-zWPXr+O67GC9KDAFkbL1U9UVqE6Iv69YMKhkIECCmE0GvClUJwdfsimm4XebEDondV7kfjMrTDZaYfrI5aS0Jg==", + "dev": true, + "dependencies": { + "@stylistic/eslint-plugin-js": "1.5.4", + "@stylistic/eslint-plugin-jsx": "1.5.4", + "@stylistic/eslint-plugin-plus": "1.5.4", + "@stylistic/eslint-plugin-ts": "1.5.4" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "peerDependencies": { + "eslint": ">=8.40.0" + } + }, + "node_modules/@stylistic/eslint-plugin-js": { + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/@stylistic/eslint-plugin-js/-/eslint-plugin-js-1.5.4.tgz", + "integrity": "sha512-3ctWb3NvJNV1MsrZN91cYp2EGInLPSoZKphXIbIRx/zjZxKwLDr9z4LMOWtqjq14li/OgqUUcMq5pj8fgbLoTw==", + "dev": true, + "dependencies": { + "acorn": "^8.11.3", + "escape-string-regexp": "^4.0.0", + "eslint-visitor-keys": "^3.4.3", + "espree": "^9.6.1" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "peerDependencies": { + "eslint": ">=8.40.0" + } + }, + "node_modules/@stylistic/eslint-plugin-jsx": { + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/@stylistic/eslint-plugin-jsx/-/eslint-plugin-jsx-1.5.4.tgz", + "integrity": "sha512-JUfrpCkeBCqt1IZ4QsP4WgxGza4PhK4LPbc0VnCjHKygl+rgqoDAovqOuzFJ49wJ4Ix3r6OIHFuwiBGswZEVvg==", + "dev": true, + "dependencies": { + "@stylistic/eslint-plugin-js": "^1.5.4", + "estraverse": "^5.3.0" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "peerDependencies": { + "eslint": ">=8.40.0" + } + }, + "node_modules/@stylistic/eslint-plugin-plus": { + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/@stylistic/eslint-plugin-plus/-/eslint-plugin-plus-1.5.4.tgz", + "integrity": "sha512-dI0Cs5vYX/0uMhQDY+NK0cKQ0Pe9B6jWYxd0Ndud+mNloDaVLrsmJocK4zn+YfhGEDs1E4Nk5uAPZEumIpDuSg==", + "dev": true, + "dependencies": { + "@typescript-eslint/utils": "^6.19.0" + }, + "peerDependencies": { + "eslint": "*" + } + }, + "node_modules/@stylistic/eslint-plugin-ts": { + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/@stylistic/eslint-plugin-ts/-/eslint-plugin-ts-1.5.4.tgz", + "integrity": "sha512-NZDFVIlVNjuPvhT+0Cidm5IS3emtx338xbJTqs2xfOVRDGTpYwRHhNVEGa1rFOpYHmv0sAj6+OXbMDn7ul0K/g==", + "dev": true, + "dependencies": { + "@stylistic/eslint-plugin-js": "1.5.4", + "@typescript-eslint/utils": "^6.19.0" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "peerDependencies": { + "eslint": ">=8.40.0" + } + }, + "node_modules/@typechain/ethers-v6": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/@typechain/ethers-v6/-/ethers-v6-0.5.1.tgz", + "integrity": "sha512-F+GklO8jBWlsaVV+9oHaPh5NJdd6rAKN4tklGfInX1Q7h0xPgVLP39Jl3eCulPB5qexI71ZFHwbljx4ZXNfouA==", + "dev": true, + "dependencies": { + "lodash": "^4.17.15", + "ts-essentials": "^7.0.1" + }, + "peerDependencies": { + "ethers": "6.x", + "typechain": "^8.3.2", + "typescript": ">=4.7.0" + } + }, + "node_modules/@types/acorn": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/@types/acorn/-/acorn-4.0.6.tgz", + "integrity": "sha512-veQTnWP+1D/xbxVrPC3zHnCZRjSrKfhbMUlEA43iMZLu7EsnTtkJklIuwrCPbOi8YkvDQAiW05VQQFvvz9oieQ==", + "dev": true, + "dependencies": { + "@types/estree": "*" + } + }, + "node_modules/@types/aws-lambda": { + "version": "8.10.136", + "resolved": "https://registry.npmjs.org/@types/aws-lambda/-/aws-lambda-8.10.136.tgz", + "integrity": "sha512-cmmgqxdVGhxYK9lZMYYXYRJk6twBo53ivtXjIUEFZxfxe4TkZTZBK3RRWrY2HjJcUIix0mdifn15yjOAat5lTA==" + }, + "node_modules/@types/body-parser": { + "version": "1.19.5", + "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.5.tgz", + "integrity": "sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==", + "dev": true, + "dependencies": { + "@types/connect": "*", + "@types/node": "*" + } + }, + "node_modules/@types/connect": { + "version": "3.4.38", + "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.38.tgz", + "integrity": "sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/cookie": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.6.0.tgz", + "integrity": "sha512-4Kh9a6B2bQciAhf7FSuMRRkUWecJgJu9nPnx3yzpsfXX/c50REIqpHY4C82bXP90qrLtXtkDxTZosYO3UpOwlA==" + }, + "node_modules/@types/debug": { + "version": "4.1.12", + "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.12.tgz", + "integrity": "sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==", + "dev": true, + "dependencies": { + "@types/ms": "*" + } + }, + "node_modules/@types/estree": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", + "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==", + "dev": true + }, + "node_modules/@types/estree-jsx": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@types/estree-jsx/-/estree-jsx-1.0.3.tgz", + "integrity": "sha512-pvQ+TKeRHeiUGRhvYwRrQ/ISnohKkSJR14fT2yqyZ4e9K5vqc7hrtY2Y1Dw0ZwAzQ6DQsxsaCUuSIIi8v0Cq6w==", + "dev": true, + "dependencies": { + "@types/estree": "*" + } + }, + "node_modules/@types/express": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.21.tgz", + "integrity": "sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ==", + "dev": true, + "dependencies": { + "@types/body-parser": "*", + "@types/express-serve-static-core": "^4.17.33", + "@types/qs": "*", + "@types/serve-static": "*" + } + }, + "node_modules/@types/express-serve-static-core": { + "version": "4.17.43", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.43.tgz", + "integrity": "sha512-oaYtiBirUOPQGSWNGPWnzyAFJ0BP3cwvN4oWZQY+zUBwpVIGsKUkpBpSztp74drYcjavs7SKFZ4DX1V2QeN8rg==", + "dev": true, + "dependencies": { + "@types/node": "*", + "@types/qs": "*", + "@types/range-parser": "*", + "@types/send": "*" + } + }, + "node_modules/@types/hast": { + "version": "2.3.9", + "resolved": "https://registry.npmjs.org/@types/hast/-/hast-2.3.9.tgz", + "integrity": "sha512-pTHyNlaMD/oKJmS+ZZUyFUcsZeBZpC0lmGquw98CqRVNgAdJZJeD7GoeLiT6Xbx5rU9VCjSt0RwEvDgzh4obFw==", + "dev": true, + "dependencies": { + "@types/unist": "^2" + } + }, + "node_modules/@types/http-errors": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.4.tgz", + "integrity": "sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA==", + "dev": true + }, + "node_modules/@types/json-schema": { + "version": "7.0.15", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", + "dev": true + }, + "node_modules/@types/json5": { + "version": "0.0.29", + "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", + "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", + "dev": true + }, + "node_modules/@types/mdast": { + "version": "3.0.15", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-3.0.15.tgz", + "integrity": "sha512-LnwD+mUEfxWMa1QpDraczIn6k0Ee3SMicuYSSzS6ZYl2gKS09EClnJYGd8Du6rfc5r/GZEk5o1mRb8TaTj03sQ==", + "dev": true, + "dependencies": { + "@types/unist": "^2" + } + }, + "node_modules/@types/mdx": { + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/@types/mdx/-/mdx-2.0.10.tgz", + "integrity": "sha512-Rllzc5KHk0Al5/WANwgSPl1/CwjqCy+AZrGd78zuK+jO9aDM6ffblZ+zIjgPNAaEBmlO0RYDvLNh7wD0zKVgEg==", + "dev": true + }, + "node_modules/@types/mime": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.5.tgz", + "integrity": "sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==", + "dev": true + }, + "node_modules/@types/ms": { + "version": "0.7.34", + "resolved": "https://registry.npmjs.org/@types/ms/-/ms-0.7.34.tgz", + "integrity": "sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==", + "dev": true + }, + "node_modules/@types/node": { + "version": "20.11.7", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.11.7.tgz", + "integrity": "sha512-GPmeN1C3XAyV5uybAf4cMLWT9fDWcmQhZVtMFu7OR32WjrqGG+Wnk2V1d0bmtUyE/Zy1QJ9BxyiTih9z8Oks8A==", + "dev": true, + "dependencies": { + "undici-types": "~5.26.4" + } + }, + "node_modules/@types/prettier": { + "version": "2.7.3", + "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.7.3.tgz", + "integrity": "sha512-+68kP9yzs4LMp7VNh8gdzMSPZFL44MLGqiHWvttYJe+6qnuVr4Ek9wSBQoveqY/r+LwjCcU29kNVkidwim+kYA==", + "dev": true + }, + "node_modules/@types/prop-types": { + "version": "15.7.11", + "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.11.tgz", + "integrity": "sha512-ga8y9v9uyeiLdpKddhxYQkxNDrfvuPrlFb0N1qnZZByvcElJaXthF1UhvCh9TLWJBEHeNtdnbysW7Y6Uq8CVng==", + "devOptional": true + }, + "node_modules/@types/qs": { + "version": "6.9.13", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.13.tgz", + "integrity": "sha512-iLR+1vTTJ3p0QaOUq6ACbY1mzKTODFDT/XedZI8BksOotFmL4ForwDfRQ/DZeuTHR7/2i4lI1D203gdfxuqTlA==", + "dev": true + }, + "node_modules/@types/range-parser": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.7.tgz", + "integrity": "sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==", + "dev": true + }, + "node_modules/@types/react": { + "version": "18.2.48", + "resolved": "https://registry.npmjs.org/@types/react/-/react-18.2.48.tgz", + "integrity": "sha512-qboRCl6Ie70DQQG9hhNREz81jqC1cs9EVNcjQ1AU+jH6NFfSAhVVbrrY/+nSF+Bsk4AOwm9Qa61InvMCyV+H3w==", + "devOptional": true, + "dependencies": { + "@types/prop-types": "*", + "@types/scheduler": "*", + "csstype": "^3.0.2" + } + }, + "node_modules/@types/react-dom": { + "version": "18.2.18", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.2.18.tgz", + "integrity": "sha512-TJxDm6OfAX2KJWJdMEVTwWke5Sc/E/RlnPGvGfS0W7+6ocy2xhDVQVh/KvC2Uf7kACs+gDytdusDSdWfWkaNzw==", + "devOptional": true, + "dependencies": { + "@types/react": "*" + } + }, + "node_modules/@types/scheduler": { + "version": "0.16.8", + "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.8.tgz", + "integrity": "sha512-WZLiwShhwLRmeV6zH+GkbOFT6Z6VklCItrDioxUnv+u4Ll+8vKeFySoFyK/0ctcRpOmwAicELfmys1sDc/Rw+A==", + "devOptional": true + }, + "node_modules/@types/semver": { + "version": "7.5.6", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.6.tgz", + "integrity": "sha512-dn1l8LaMea/IjDoHNd9J52uBbInB796CDffS6VdIxvqYCPSG0V0DzHp76GpaWnlhg88uYyPbXCDIowa86ybd5A==", + "dev": true + }, + "node_modules/@types/send": { + "version": "0.17.4", + "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.4.tgz", + "integrity": "sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==", + "dev": true, + "dependencies": { + "@types/mime": "^1", + "@types/node": "*" + } + }, + "node_modules/@types/serve-static": { + "version": "1.15.5", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.5.tgz", + "integrity": "sha512-PDRk21MnK70hja/YF8AHfC7yIsiQHn1rcXx7ijCFBX/k+XQJhQT/gw3xekXKJvx+5SXaMMS8oqQy09Mzvz2TuQ==", + "dev": true, + "dependencies": { + "@types/http-errors": "*", + "@types/mime": "*", + "@types/node": "*" + } + }, + "node_modules/@types/unist": { + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.10.tgz", + "integrity": "sha512-IfYcSBWE3hLpBg8+X2SEa8LVkJdJEkT2Ese2aaLs3ptGdVtABxndrMaxuFlQ1qdFf9Q5rDvDpxI3WwgvKFAsQA==", + "dev": true + }, + "node_modules/@types/use-sync-external-store": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/@types/use-sync-external-store/-/use-sync-external-store-0.0.3.tgz", + "integrity": "sha512-EwmlvuaxPNej9+T4v5AuBPJa2x2UOJVdjCtDHgcDqitUeOtjnJKJ+apYjVcAoBEMjKW1VVFGZLUb5+qqa09XFA==" + }, + "node_modules/@typescript-eslint/eslint-plugin": { + "version": "6.19.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.19.1.tgz", + "integrity": "sha512-roQScUGFruWod9CEyoV5KlCYrubC/fvG8/1zXuT0WTcxX87GnMMmnksMwSg99lo1xiKrBzw2icsJPMAw1OtKxg==", + "dev": true, + "dependencies": { + "@eslint-community/regexpp": "^4.5.1", + "@typescript-eslint/scope-manager": "6.19.1", + "@typescript-eslint/type-utils": "6.19.1", + "@typescript-eslint/utils": "6.19.1", "@typescript-eslint/visitor-keys": "6.19.1", "debug": "^4.3.4", "graphemer": "^1.4.0", @@ -2772,224 +3263,614 @@ "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "@typescript-eslint/parser": "^6.0.0 || ^6.0.0-alpha", + "@typescript-eslint/parser": "^6.0.0 || ^6.0.0-alpha", + "eslint": "^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/parser": { + "version": "6.19.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.19.1.tgz", + "integrity": "sha512-WEfX22ziAh6pRE9jnbkkLGp/4RhTpffr2ZK5bJ18M8mIfA8A+k97U9ZyaXCEJRlmMHh7R9MJZWXp/r73DzINVQ==", + "dev": true, + "peer": true, + "dependencies": { + "@typescript-eslint/scope-manager": "6.19.1", + "@typescript-eslint/types": "6.19.1", + "@typescript-eslint/typescript-estree": "6.19.1", + "@typescript-eslint/visitor-keys": "6.19.1", + "debug": "^4.3.4" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/scope-manager": { + "version": "6.19.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.19.1.tgz", + "integrity": "sha512-4CdXYjKf6/6aKNMSly/BP4iCSOpvMmqtDzRtqFyyAae3z5kkqEjKndR5vDHL8rSuMIIWP8u4Mw4VxLyxZW6D5w==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "6.19.1", + "@typescript-eslint/visitor-keys": "6.19.1" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/type-utils": { + "version": "6.19.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.19.1.tgz", + "integrity": "sha512-0vdyld3ecfxJuddDjACUvlAeYNrHP/pDeQk2pWBR2ESeEzQhg52DF53AbI9QCBkYE23lgkhLCZNkHn2hEXXYIg==", + "dev": true, + "dependencies": { + "@typescript-eslint/typescript-estree": "6.19.1", + "@typescript-eslint/utils": "6.19.1", + "debug": "^4.3.4", + "ts-api-utils": "^1.0.1" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/types": { + "version": "6.19.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.19.1.tgz", + "integrity": "sha512-6+bk6FEtBhvfYvpHsDgAL3uo4BfvnTnoge5LrrCj2eJN8g3IJdLTD4B/jK3Q6vo4Ql/Hoip9I8aB6fF+6RfDqg==", + "dev": true, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/typescript-estree": { + "version": "6.19.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.19.1.tgz", + "integrity": "sha512-aFdAxuhzBFRWhy+H20nYu19+Km+gFfwNO4TEqyszkMcgBDYQjmPJ61erHxuT2ESJXhlhrO7I5EFIlZ+qGR8oVA==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "6.19.1", + "@typescript-eslint/visitor-keys": "6.19.1", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "minimatch": "9.0.3", + "semver": "^7.5.4", + "ts-api-utils": "^1.0.1" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/utils": { + "version": "6.19.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.19.1.tgz", + "integrity": "sha512-JvjfEZuP5WoMqwh9SPAPDSHSg9FBHHGhjPugSRxu5jMfjvBpq5/sGTD+9M9aQ5sh6iJ8AY/Kk/oUYVEMAPwi7w==", + "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.4.0", + "@types/json-schema": "^7.0.12", + "@types/semver": "^7.5.0", + "@typescript-eslint/scope-manager": "6.19.1", + "@typescript-eslint/types": "6.19.1", + "@typescript-eslint/typescript-estree": "6.19.1", + "semver": "^7.5.4" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { "eslint": "^7.0.0 || ^8.0.0" + } + }, + "node_modules/@typescript-eslint/visitor-keys": { + "version": "6.19.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.19.1.tgz", + "integrity": "sha512-gkdtIO+xSO/SmI0W68DBg4u1KElmIUo3vXzgHyGPs6cxgB0sa3TlptRAAE0hUY1hM6FcDKEv7aIwiTGm76cXfQ==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "6.19.1", + "eslint-visitor-keys": "^3.4.1" }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@ungap/structured-clone": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", + "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==", + "dev": true + }, + "node_modules/@vanilla-extract/babel-plugin-debug-ids": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@vanilla-extract/babel-plugin-debug-ids/-/babel-plugin-debug-ids-1.0.4.tgz", + "integrity": "sha512-mevYcVMwsT6960xnXRw/Rr2K7SOEwzwVBApg/2SJ3eg2KGsHfj1rN0oQ12WdoTT3RzThq+0551bVQKPvQnjeaA==", + "dev": true, + "dependencies": { + "@babel/core": "^7.20.7" + } + }, + "node_modules/@vanilla-extract/css": { + "version": "1.14.0", + "resolved": "https://registry.npmjs.org/@vanilla-extract/css/-/css-1.14.0.tgz", + "integrity": "sha512-rYfm7JciWZ8PFzBM/HDiE2GLnKI3xJ6/vdmVJ5BSgcCZ5CxRlM9Cjqclni9lGzF3eMOijnUhCd/KV8TOzyzbMA==", + "dev": true, + "dependencies": { + "@emotion/hash": "^0.9.0", + "@vanilla-extract/private": "^1.0.3", + "chalk": "^4.1.1", + "css-what": "^6.1.0", + "cssesc": "^3.0.0", + "csstype": "^3.0.7", + "deep-object-diff": "^1.1.9", + "deepmerge": "^4.2.2", + "media-query-parser": "^2.0.2", + "modern-ahocorasick": "^1.0.0", + "outdent": "^0.8.0" + } + }, + "node_modules/@vanilla-extract/integration": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@vanilla-extract/integration/-/integration-6.3.0.tgz", + "integrity": "sha512-xp/0bdt/GOa7nLDwQ+vBOAG376MOesPhItxRGtuMvo9BLA8vrm2KcKHrKsJTuIl7tfnpuBW5raP6hXcg/oRB3w==", + "dev": true, + "dependencies": { + "@babel/core": "^7.20.7", + "@babel/plugin-syntax-typescript": "^7.20.0", + "@vanilla-extract/babel-plugin-debug-ids": "^1.0.4", + "@vanilla-extract/css": "^1.14.0", + "esbuild": "npm:esbuild@~0.17.6 || ~0.18.0 || ~0.19.0", + "eval": "0.1.8", + "find-up": "^5.0.0", + "javascript-stringify": "^2.0.1", + "lodash": "^4.17.21", + "mlly": "^1.1.0", + "outdent": "^0.8.0", + "vite": "^5.0.10", + "vite-node": "^1.1.0" + } + }, + "node_modules/@vanilla-extract/integration/node_modules/@esbuild/android-arm": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.19.12.tgz", + "integrity": "sha512-qg/Lj1mu3CdQlDEEiWrlC4eaPZ1KztwGJ9B6J+/6G+/4ewxJg7gqj8eVYWvao1bXrqGiW2rsBZFSX3q2lcW05w==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@vanilla-extract/integration/node_modules/@esbuild/android-arm64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.19.12.tgz", + "integrity": "sha512-P0UVNGIienjZv3f5zq0DP3Nt2IE/3plFzuaS96vihvD0Hd6H/q4WXUGpCxD/E8YrSXfNyRPbpTq+T8ZQioSuPA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@vanilla-extract/integration/node_modules/@esbuild/android-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.19.12.tgz", + "integrity": "sha512-3k7ZoUW6Q6YqhdhIaq/WZ7HwBpnFBlW905Fa4s4qWJyiNOgT1dOqDiVAQFwBH7gBRZr17gLrlFCRzF6jFh7Kew==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@vanilla-extract/integration/node_modules/@esbuild/darwin-arm64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.19.12.tgz", + "integrity": "sha512-B6IeSgZgtEzGC42jsI+YYu9Z3HKRxp8ZT3cqhvliEHovq8HSX2YX8lNocDn79gCKJXOSaEot9MVYky7AKjCs8g==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@vanilla-extract/integration/node_modules/@esbuild/darwin-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.19.12.tgz", + "integrity": "sha512-hKoVkKzFiToTgn+41qGhsUJXFlIjxI/jSYeZf3ugemDYZldIXIxhvwN6erJGlX4t5h417iFuheZ7l+YVn05N3A==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@vanilla-extract/integration/node_modules/@esbuild/freebsd-arm64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.19.12.tgz", + "integrity": "sha512-4aRvFIXmwAcDBw9AueDQ2YnGmz5L6obe5kmPT8Vd+/+x/JMVKCgdcRwH6APrbpNXsPz+K653Qg8HB/oXvXVukA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@vanilla-extract/integration/node_modules/@esbuild/freebsd-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.19.12.tgz", + "integrity": "sha512-EYoXZ4d8xtBoVN7CEwWY2IN4ho76xjYXqSXMNccFSx2lgqOG/1TBPW0yPx1bJZk94qu3tX0fycJeeQsKovA8gg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@vanilla-extract/integration/node_modules/@esbuild/linux-arm": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.19.12.tgz", + "integrity": "sha512-J5jPms//KhSNv+LO1S1TX1UWp1ucM6N6XuL6ITdKWElCu8wXP72l9MM0zDTzzeikVyqFE6U8YAV9/tFyj0ti+w==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@vanilla-extract/integration/node_modules/@esbuild/linux-arm64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.19.12.tgz", + "integrity": "sha512-EoTjyYyLuVPfdPLsGVVVC8a0p1BFFvtpQDB/YLEhaXyf/5bczaGeN15QkR+O4S5LeJ92Tqotve7i1jn35qwvdA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@vanilla-extract/integration/node_modules/@esbuild/linux-ia32": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.19.12.tgz", + "integrity": "sha512-Thsa42rrP1+UIGaWz47uydHSBOgTUnwBwNq59khgIwktK6x60Hivfbux9iNR0eHCHzOLjLMLfUMLCypBkZXMHA==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@vanilla-extract/integration/node_modules/@esbuild/linux-loong64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.19.12.tgz", + "integrity": "sha512-LiXdXA0s3IqRRjm6rV6XaWATScKAXjI4R4LoDlvO7+yQqFdlr1Bax62sRwkVvRIrwXxvtYEHHI4dm50jAXkuAA==", + "cpu": [ + "loong64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@vanilla-extract/integration/node_modules/@esbuild/linux-mips64el": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.19.12.tgz", + "integrity": "sha512-fEnAuj5VGTanfJ07ff0gOA6IPsvrVHLVb6Lyd1g2/ed67oU1eFzL0r9WL7ZzscD+/N6i3dWumGE1Un4f7Amf+w==", + "cpu": [ + "mips64el" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" } }, - "node_modules/@typescript-eslint/parser": { - "version": "6.19.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.19.1.tgz", - "integrity": "sha512-WEfX22ziAh6pRE9jnbkkLGp/4RhTpffr2ZK5bJ18M8mIfA8A+k97U9ZyaXCEJRlmMHh7R9MJZWXp/r73DzINVQ==", + "node_modules/@vanilla-extract/integration/node_modules/@esbuild/linux-ppc64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.19.12.tgz", + "integrity": "sha512-nYJA2/QPimDQOh1rKWedNOe3Gfc8PabU7HT3iXWtNUbRzXS9+vgB0Fjaqr//XNbd82mCxHzik2qotuI89cfixg==", + "cpu": [ + "ppc64" + ], "dev": true, - "peer": true, - "dependencies": { - "@typescript-eslint/scope-manager": "6.19.1", - "@typescript-eslint/types": "6.19.1", - "@typescript-eslint/typescript-estree": "6.19.1", - "@typescript-eslint/visitor-keys": "6.19.1", - "debug": "^4.3.4" - }, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^7.0.0 || ^8.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "node": ">=12" } }, - "node_modules/@typescript-eslint/scope-manager": { - "version": "6.19.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.19.1.tgz", - "integrity": "sha512-4CdXYjKf6/6aKNMSly/BP4iCSOpvMmqtDzRtqFyyAae3z5kkqEjKndR5vDHL8rSuMIIWP8u4Mw4VxLyxZW6D5w==", + "node_modules/@vanilla-extract/integration/node_modules/@esbuild/linux-riscv64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.19.12.tgz", + "integrity": "sha512-2MueBrlPQCw5dVJJpQdUYgeqIzDQgw3QtiAHUC4RBz9FXPrskyyU3VI1hw7C0BSKB9OduwSJ79FTCqtGMWqJHg==", + "cpu": [ + "riscv64" + ], "dev": true, - "dependencies": { - "@typescript-eslint/types": "6.19.1", - "@typescript-eslint/visitor-keys": "6.19.1" - }, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "node": ">=12" } }, - "node_modules/@typescript-eslint/type-utils": { - "version": "6.19.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.19.1.tgz", - "integrity": "sha512-0vdyld3ecfxJuddDjACUvlAeYNrHP/pDeQk2pWBR2ESeEzQhg52DF53AbI9QCBkYE23lgkhLCZNkHn2hEXXYIg==", + "node_modules/@vanilla-extract/integration/node_modules/@esbuild/linux-s390x": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.19.12.tgz", + "integrity": "sha512-+Pil1Nv3Umes4m3AZKqA2anfhJiVmNCYkPchwFJNEJN5QxmTs1uzyy4TvmDrCRNT2ApwSari7ZIgrPeUx4UZDg==", + "cpu": [ + "s390x" + ], "dev": true, - "dependencies": { - "@typescript-eslint/typescript-estree": "6.19.1", - "@typescript-eslint/utils": "6.19.1", - "debug": "^4.3.4", - "ts-api-utils": "^1.0.1" - }, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^7.0.0 || ^8.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "node": ">=12" } }, - "node_modules/@typescript-eslint/types": { - "version": "6.19.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.19.1.tgz", - "integrity": "sha512-6+bk6FEtBhvfYvpHsDgAL3uo4BfvnTnoge5LrrCj2eJN8g3IJdLTD4B/jK3Q6vo4Ql/Hoip9I8aB6fF+6RfDqg==", + "node_modules/@vanilla-extract/integration/node_modules/@esbuild/linux-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.19.12.tgz", + "integrity": "sha512-B71g1QpxfwBvNrfyJdVDexenDIt1CiDN1TIXLbhOw0KhJzE78KIFGX6OJ9MrtC0oOqMWf+0xop4qEU8JrJTwCg==", + "cpu": [ + "x64" + ], "dev": true, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "node": ">=12" } }, - "node_modules/@typescript-eslint/typescript-estree": { - "version": "6.19.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.19.1.tgz", - "integrity": "sha512-aFdAxuhzBFRWhy+H20nYu19+Km+gFfwNO4TEqyszkMcgBDYQjmPJ61erHxuT2ESJXhlhrO7I5EFIlZ+qGR8oVA==", + "node_modules/@vanilla-extract/integration/node_modules/@esbuild/netbsd-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.19.12.tgz", + "integrity": "sha512-3ltjQ7n1owJgFbuC61Oj++XhtzmymoCihNFgT84UAmJnxJfm4sYCiSLTXZtE00VWYpPMYc+ZQmB6xbSdVh0JWA==", + "cpu": [ + "x64" + ], "dev": true, - "dependencies": { - "@typescript-eslint/types": "6.19.1", - "@typescript-eslint/visitor-keys": "6.19.1", - "debug": "^4.3.4", - "globby": "^11.1.0", - "is-glob": "^4.0.3", - "minimatch": "9.0.3", - "semver": "^7.5.4", - "ts-api-utils": "^1.0.1" - }, + "optional": true, + "os": [ + "netbsd" + ], "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "node": ">=12" } }, - "node_modules/@typescript-eslint/utils": { - "version": "6.19.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.19.1.tgz", - "integrity": "sha512-JvjfEZuP5WoMqwh9SPAPDSHSg9FBHHGhjPugSRxu5jMfjvBpq5/sGTD+9M9aQ5sh6iJ8AY/Kk/oUYVEMAPwi7w==", + "node_modules/@vanilla-extract/integration/node_modules/@esbuild/openbsd-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.19.12.tgz", + "integrity": "sha512-RbrfTB9SWsr0kWmb9srfF+L933uMDdu9BIzdA7os2t0TXhCRjrQyCeOt6wVxr79CKD4c+p+YhCj31HBkYcXebw==", + "cpu": [ + "x64" + ], "dev": true, - "dependencies": { - "@eslint-community/eslint-utils": "^4.4.0", - "@types/json-schema": "^7.0.12", - "@types/semver": "^7.5.0", - "@typescript-eslint/scope-manager": "6.19.1", - "@typescript-eslint/types": "6.19.1", - "@typescript-eslint/typescript-estree": "6.19.1", - "semver": "^7.5.4" - }, + "optional": true, + "os": [ + "openbsd" + ], "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^7.0.0 || ^8.0.0" + "node": ">=12" } }, - "node_modules/@typescript-eslint/visitor-keys": { - "version": "6.19.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.19.1.tgz", - "integrity": "sha512-gkdtIO+xSO/SmI0W68DBg4u1KElmIUo3vXzgHyGPs6cxgB0sa3TlptRAAE0hUY1hM6FcDKEv7aIwiTGm76cXfQ==", + "node_modules/@vanilla-extract/integration/node_modules/@esbuild/sunos-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.19.12.tgz", + "integrity": "sha512-HKjJwRrW8uWtCQnQOz9qcU3mUZhTUQvi56Q8DPTLLB+DawoiQdjsYq+j+D3s9I8VFtDr+F9CjgXKKC4ss89IeA==", + "cpu": [ + "x64" + ], "dev": true, - "dependencies": { - "@typescript-eslint/types": "6.19.1", - "eslint-visitor-keys": "^3.4.1" - }, + "optional": true, + "os": [ + "sunos" + ], "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "node": ">=12" } }, - "node_modules/@ungap/structured-clone": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", - "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==", - "dev": true + "node_modules/@vanilla-extract/integration/node_modules/@esbuild/win32-arm64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.19.12.tgz", + "integrity": "sha512-URgtR1dJnmGvX864pn1B2YUYNzjmXkuJOIqG2HdU62MVS4EHpU2946OZoTMnRUHklGtJdJZ33QfzdjGACXhn1A==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } }, - "node_modules/@vanilla-extract/babel-plugin-debug-ids": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@vanilla-extract/babel-plugin-debug-ids/-/babel-plugin-debug-ids-1.0.4.tgz", - "integrity": "sha512-mevYcVMwsT6960xnXRw/Rr2K7SOEwzwVBApg/2SJ3eg2KGsHfj1rN0oQ12WdoTT3RzThq+0551bVQKPvQnjeaA==", + "node_modules/@vanilla-extract/integration/node_modules/@esbuild/win32-ia32": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.19.12.tgz", + "integrity": "sha512-+ZOE6pUkMOJfmxmBZElNOx72NKpIa/HFOMGzu8fqzQJ5kgf6aTGrcJaFsNiVMH4JKpMipyK+7k0n2UXN7a8YKQ==", + "cpu": [ + "ia32" + ], "dev": true, - "dependencies": { - "@babel/core": "^7.20.7" + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" } }, - "node_modules/@vanilla-extract/css": { - "version": "1.14.0", - "resolved": "https://registry.npmjs.org/@vanilla-extract/css/-/css-1.14.0.tgz", - "integrity": "sha512-rYfm7JciWZ8PFzBM/HDiE2GLnKI3xJ6/vdmVJ5BSgcCZ5CxRlM9Cjqclni9lGzF3eMOijnUhCd/KV8TOzyzbMA==", + "node_modules/@vanilla-extract/integration/node_modules/@esbuild/win32-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.19.12.tgz", + "integrity": "sha512-T1QyPSDCyMXaO3pzBkF96E8xMkiRYbUEZADd29SyPGabqxMViNoii+NcK7eWJAEoU6RZyEm5lVSIjTmcdoB9HA==", + "cpu": [ + "x64" + ], "dev": true, - "dependencies": { - "@emotion/hash": "^0.9.0", - "@vanilla-extract/private": "^1.0.3", - "chalk": "^4.1.1", - "css-what": "^6.1.0", - "cssesc": "^3.0.0", - "csstype": "^3.0.7", - "deep-object-diff": "^1.1.9", - "deepmerge": "^4.2.2", - "media-query-parser": "^2.0.2", - "modern-ahocorasick": "^1.0.0", - "outdent": "^0.8.0" + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" } }, - "node_modules/@vanilla-extract/integration": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/@vanilla-extract/integration/-/integration-6.3.0.tgz", - "integrity": "sha512-xp/0bdt/GOa7nLDwQ+vBOAG376MOesPhItxRGtuMvo9BLA8vrm2KcKHrKsJTuIl7tfnpuBW5raP6hXcg/oRB3w==", + "node_modules/@vanilla-extract/integration/node_modules/esbuild": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.19.12.tgz", + "integrity": "sha512-aARqgq8roFBj054KvQr5f1sFu0D65G+miZRCuJyJ0G13Zwx7vRar5Zhn2tkQNzIXcBrNVsv/8stehpj+GAjgbg==", "dev": true, - "dependencies": { - "@babel/core": "^7.20.7", - "@babel/plugin-syntax-typescript": "^7.20.0", - "@vanilla-extract/babel-plugin-debug-ids": "^1.0.4", - "@vanilla-extract/css": "^1.14.0", - "esbuild": "npm:esbuild@~0.17.6 || ~0.18.0 || ~0.19.0", - "eval": "0.1.8", - "find-up": "^5.0.0", - "javascript-stringify": "^2.0.1", - "lodash": "^4.17.21", - "mlly": "^1.1.0", - "outdent": "^0.8.0", - "vite": "^5.0.10", - "vite-node": "^1.1.0" + "hasInstallScript": true, + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.19.12", + "@esbuild/android-arm": "0.19.12", + "@esbuild/android-arm64": "0.19.12", + "@esbuild/android-x64": "0.19.12", + "@esbuild/darwin-arm64": "0.19.12", + "@esbuild/darwin-x64": "0.19.12", + "@esbuild/freebsd-arm64": "0.19.12", + "@esbuild/freebsd-x64": "0.19.12", + "@esbuild/linux-arm": "0.19.12", + "@esbuild/linux-arm64": "0.19.12", + "@esbuild/linux-ia32": "0.19.12", + "@esbuild/linux-loong64": "0.19.12", + "@esbuild/linux-mips64el": "0.19.12", + "@esbuild/linux-ppc64": "0.19.12", + "@esbuild/linux-riscv64": "0.19.12", + "@esbuild/linux-s390x": "0.19.12", + "@esbuild/linux-x64": "0.19.12", + "@esbuild/netbsd-x64": "0.19.12", + "@esbuild/openbsd-x64": "0.19.12", + "@esbuild/sunos-x64": "0.19.12", + "@esbuild/win32-arm64": "0.19.12", + "@esbuild/win32-ia32": "0.19.12", + "@esbuild/win32-x64": "0.19.12" } }, "node_modules/@vanilla-extract/private": { @@ -3430,6 +4311,9 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-2.0.1.tgz", "integrity": "sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg==", + "dev": true, + "optional": true, + "peer": true, "dependencies": { "safe-buffer": "5.1.2" }, @@ -3457,12 +4341,12 @@ } }, "node_modules/body-parser": { - "version": "1.20.1", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz", - "integrity": "sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==", + "version": "1.20.2", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.2.tgz", + "integrity": "sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==", "dependencies": { "bytes": "3.1.2", - "content-type": "~1.0.4", + "content-type": "~1.0.5", "debug": "2.6.9", "depd": "2.0.0", "destroy": "1.2.0", @@ -3470,7 +4354,7 @@ "iconv-lite": "0.4.24", "on-finished": "2.4.1", "qs": "6.11.0", - "raw-body": "2.5.1", + "raw-body": "2.5.2", "type-is": "~1.6.18", "unpipe": "1.0.0" }, @@ -3602,6 +4486,9 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", "integrity": "sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==", + "dev": true, + "optional": true, + "peer": true, "engines": { "node": ">= 0.8" } @@ -4035,6 +4922,9 @@ "version": "2.0.18", "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", + "dev": true, + "optional": true, + "peer": true, "dependencies": { "mime-db": ">= 1.43.0 < 2" }, @@ -4046,6 +4936,9 @@ "version": "1.7.4", "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz", "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==", + "dev": true, + "optional": true, + "peer": true, "dependencies": { "accepts": "~1.3.5", "bytes": "3.0.0", @@ -4063,6 +4956,9 @@ "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "optional": true, + "peer": true, "dependencies": { "ms": "2.0.0" } @@ -4070,7 +4966,10 @@ "node_modules/compression/node_modules/ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true, + "optional": true, + "peer": true }, "node_modules/concat-map": { "version": "0.0.1", @@ -4623,9 +5522,9 @@ } }, "node_modules/esbuild": { - "version": "0.17.6", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.17.6.tgz", - "integrity": "sha512-TKFRp9TxrJDdRWfSsSERKEovm6v30iHnrjlcGhLBOtReE28Yp1VSBRfO3GTaOFMoxsNerx4TjrhzSuma9ha83Q==", + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.20.2.tgz", + "integrity": "sha512-WdOOppmUNU+IbZ0PaDiTst80zjnrOkyJNHoKupIcVyU8Lvla3Ugx94VzkQ32Ijqd7UhHJy75gNWDMUekcrSJ6g==", "dev": true, "hasInstallScript": true, "bin": { @@ -4635,45 +5534,62 @@ "node": ">=12" }, "optionalDependencies": { - "@esbuild/android-arm": "0.17.6", - "@esbuild/android-arm64": "0.17.6", - "@esbuild/android-x64": "0.17.6", - "@esbuild/darwin-arm64": "0.17.6", - "@esbuild/darwin-x64": "0.17.6", - "@esbuild/freebsd-arm64": "0.17.6", - "@esbuild/freebsd-x64": "0.17.6", - "@esbuild/linux-arm": "0.17.6", - "@esbuild/linux-arm64": "0.17.6", - "@esbuild/linux-ia32": "0.17.6", - "@esbuild/linux-loong64": "0.17.6", - "@esbuild/linux-mips64el": "0.17.6", - "@esbuild/linux-ppc64": "0.17.6", - "@esbuild/linux-riscv64": "0.17.6", - "@esbuild/linux-s390x": "0.17.6", - "@esbuild/linux-x64": "0.17.6", - "@esbuild/netbsd-x64": "0.17.6", - "@esbuild/openbsd-x64": "0.17.6", - "@esbuild/sunos-x64": "0.17.6", - "@esbuild/win32-arm64": "0.17.6", - "@esbuild/win32-ia32": "0.17.6", - "@esbuild/win32-x64": "0.17.6" + "@esbuild/aix-ppc64": "0.20.2", + "@esbuild/android-arm": "0.20.2", + "@esbuild/android-arm64": "0.20.2", + "@esbuild/android-x64": "0.20.2", + "@esbuild/darwin-arm64": "0.20.2", + "@esbuild/darwin-x64": "0.20.2", + "@esbuild/freebsd-arm64": "0.20.2", + "@esbuild/freebsd-x64": "0.20.2", + "@esbuild/linux-arm": "0.20.2", + "@esbuild/linux-arm64": "0.20.2", + "@esbuild/linux-ia32": "0.20.2", + "@esbuild/linux-loong64": "0.20.2", + "@esbuild/linux-mips64el": "0.20.2", + "@esbuild/linux-ppc64": "0.20.2", + "@esbuild/linux-riscv64": "0.20.2", + "@esbuild/linux-s390x": "0.20.2", + "@esbuild/linux-x64": "0.20.2", + "@esbuild/netbsd-x64": "0.20.2", + "@esbuild/openbsd-x64": "0.20.2", + "@esbuild/sunos-x64": "0.20.2", + "@esbuild/win32-arm64": "0.20.2", + "@esbuild/win32-ia32": "0.20.2", + "@esbuild/win32-x64": "0.20.2" } }, "node_modules/esbuild-plugins-node-modules-polyfill": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/esbuild-plugins-node-modules-polyfill/-/esbuild-plugins-node-modules-polyfill-1.6.1.tgz", - "integrity": "sha512-6sAwI24PV8W0zxeO+i4BS5zoQypS3SzEGwIdxpzpy65riRuK8apMw8PN0aKVLCTnLr0FgNIxUMRd9BsreBrtog==", + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/esbuild-plugins-node-modules-polyfill/-/esbuild-plugins-node-modules-polyfill-1.6.3.tgz", + "integrity": "sha512-nydQGT3RijD8mBd3Hek+2gSAxndgceZU9GIjYYiqU+7CE7veN8utTmupf0frcKpwIXCXWpRofL9CY9k0yU70CA==", "dev": true, "dependencies": { "@jspm/core": "^2.0.1", - "local-pkg": "^0.4.3", + "local-pkg": "^0.5.0", "resolve.exports": "^2.0.2" }, "engines": { "node": ">=14.0.0" }, "peerDependencies": { - "esbuild": "^0.14.0 || ^0.15.0 || ^0.16.0 || ^0.17.0 || ^0.18.0 || ^0.19.0" + "esbuild": "^0.14.0 || ^0.15.0 || ^0.16.0 || ^0.17.0 || ^0.18.0 || ^0.19.0 || ^0.20.0" + } + }, + "node_modules/esbuild/node_modules/@esbuild/aix-ppc64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.20.2.tgz", + "integrity": "sha512-D+EBOJHXdNZcLJRBkhENNG8Wji2kgc9AZ9KiPr1JuZjsNtyHzrsfLRrY0tk2H2aoFu6RANO1y1iPPUCDYWkb5g==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=12" } }, "node_modules/escalade": { @@ -5442,13 +6358,13 @@ } }, "node_modules/express": { - "version": "4.18.2", - "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz", - "integrity": "sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==", + "version": "4.18.3", + "resolved": "https://registry.npmjs.org/express/-/express-4.18.3.tgz", + "integrity": "sha512-6VyCijWQ+9O7WuVMTRBTl+cjNNIzD5cY5mQ1WM8r/LEkI2u8EYpOotESNwzNlyCn3g+dmjKYI6BmNneSr/FSRw==", "dependencies": { "accepts": "~1.3.8", "array-flatten": "1.1.1", - "body-parser": "1.20.1", + "body-parser": "1.20.2", "content-disposition": "0.5.4", "content-type": "~1.0.4", "cookie": "0.5.0", @@ -5682,6 +6598,63 @@ "node": "^10.12.0 || >=12.0.0" } }, + "node_modules/flat-cache/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/flat-cache/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "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" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/flat-cache/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/flat-cache/node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/flatted": { "version": "3.2.9", "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.9.tgz", @@ -5890,6 +6863,7 @@ "version": "5.1.1", "resolved": "https://registry.npmjs.org/get-port/-/get-port-5.1.1.tgz", "integrity": "sha512-g/Q1aTSDOxFpchXC4i8ZWvxA1lnPqx/JHqcpIw0/LX9T8x/GBbi6YnlN5nhaKIFkT8oFsscUKgDJYxfwfS6QsQ==", + "dev": true, "engines": { "node": ">=8" }, @@ -7076,10 +8050,14 @@ } }, "node_modules/local-pkg": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/local-pkg/-/local-pkg-0.4.3.tgz", - "integrity": "sha512-SFppqq5p42fe2qcZQqqEOiVRXl+WCP1MdT6k7BDEW1j++sp5fIY+/fdRQitvKgB5BrBcmrs5m/L0v2FrU5MY1g==", + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/local-pkg/-/local-pkg-0.5.0.tgz", + "integrity": "sha512-ok6z3qlYyCDS4ZEU27HaU6x/xZa9Whf8jD4ptH5UZTQYZVYeb9bnZ3ojVhiJNLiXK1Hfc0GNbLXcmZ5plLDDBg==", "dev": true, + "dependencies": { + "mlly": "^1.4.2", + "pkg-types": "^1.0.3" + }, "engines": { "node": ">=14" }, @@ -8284,6 +9262,9 @@ "version": "1.10.0", "resolved": "https://registry.npmjs.org/morgan/-/morgan-1.10.0.tgz", "integrity": "sha512-AbegBVI4sh6El+1gNwvD5YIck7nSA36weD7xvIxG4in80j/UoK8AEGaWnnz8v1GxonMCltmlNs5ZKbGvl9b1XQ==", + "dev": true, + "optional": true, + "peer": true, "dependencies": { "basic-auth": "~2.0.1", "debug": "2.6.9", @@ -8299,6 +9280,9 @@ "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "optional": true, + "peer": true, "dependencies": { "ms": "2.0.0" } @@ -8306,12 +9290,18 @@ "node_modules/morgan/node_modules/ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true, + "optional": true, + "peer": true }, "node_modules/morgan/node_modules/on-finished": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", "integrity": "sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==", + "dev": true, + "optional": true, + "peer": true, "dependencies": { "ee-first": "1.1.1" }, @@ -8623,6 +9613,9 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", + "dev": true, + "optional": true, + "peer": true, "engines": { "node": ">= 0.8" } @@ -9346,9 +10339,9 @@ } }, "node_modules/raw-body": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", - "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz", + "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", "dependencies": { "bytes": "3.1.2", "http-errors": "2.0.0", @@ -9809,62 +10802,23 @@ } }, "node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-5.0.5.tgz", + "integrity": "sha512-CqDakW+hMe/Bz202FPEymy68P+G50RfMQK+Qo5YUqc9SPipvbGjCGKd0RSKEelbsfQuw3g5NZDSrlZZAJurH1A==", "dev": true, "dependencies": { - "glob": "^7.1.3" + "glob": "^10.3.7" }, "bin": { - "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/rimraf/node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/rimraf/node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dev": true, - "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" + "rimraf": "dist/esm/bin.mjs" }, "engines": { - "node": "*" + "node": ">=14" }, "funding": { "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/rimraf/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, "node_modules/rollup": { "version": "4.9.6", "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.9.6.tgz", @@ -9952,7 +10906,8 @@ "node_modules/safe-buffer": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true }, "node_modules/safe-regex-test": { "version": "1.0.2", @@ -10072,6 +11027,14 @@ "node": ">= 0.8.0" } }, + "node_modules/serverless-http": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/serverless-http/-/serverless-http-3.2.0.tgz", + "integrity": "sha512-QvSyZXljRLIGqwcJ4xsKJXwkZnAVkse1OajepxfjkBXV0BMvRS5R546Z4kCBI8IygDzkQY0foNPC/rnipaE9pQ==", + "engines": { + "node": ">=12.0" + } + }, "node_modules/set-cookie-parser": { "version": "2.6.0", "resolved": "https://registry.npmjs.org/set-cookie-parser/-/set-cookie-parser-2.6.0.tgz", diff --git a/web-app/src/package.json b/web-app/src/package.json index c3b730f..70389f8 100644 --- a/web-app/src/package.json +++ b/web-app/src/package.json @@ -4,7 +4,8 @@ "sideEffects": false, "type": "module", "scripts": { - "build": "remix build", + "prebuild": "rimraf dist", + "build": "remix build && esbuild server/index.ts --bundle --platform=node --target=node20.10 --outfile=dist/lambda.cjs", "dev": "remix dev --manual", "lint": "eslint --ignore-path .gitignore --cache --cache-location ./node_modules/.cache/eslint .", "start": "remix-serve ./build/index.js", @@ -21,19 +22,22 @@ "@radix-ui/react-toast": "^1.1.5", "@reduxjs/toolkit": "^2.1.0", "@remix-run/css-bundle": "^2.5.1", + "@remix-run/express": "^2.5.1", "@remix-run/node": "^2.5.1", "@remix-run/react": "^2.5.1", - "@remix-run/serve": "^2.5.1", + "@types/aws-lambda": "^8.10.136", "chart.js": "^4.4.1", "class-variance-authority": "^0.7.0", "clsx": "^2.1.0", "ethers": "^6.11.1", + "express": "^4.18.3", "isbot": "^4.1.0", "lucide-react": "^0.316.0", "react": "^18.2.0", "react-chartjs-2": "^5.2.0", "react-dom": "^18.2.0", "react-redux": "^9.1.0", + "serverless-http": "^3.2.0", "tailwind-merge": "^2.2.1", "tailwindcss-animate": "^1.0.7", "zod": "^3.22.4" @@ -42,10 +46,12 @@ "@remix-run/dev": "^2.5.1", "@stylistic/eslint-plugin": "^1.5.4", "@typechain/ethers-v6": "^0.5.1", + "@types/express": "^4.17.21", "@types/react": "^18.2.20", "@types/react-dom": "^18.2.7", "@typescript-eslint/eslint-plugin": "^6.7.4", "autoprefixer": "^10.4.17", + "esbuild": "^0.20.2", "eslint": "^8.38.0", "eslint-config-prettier": "^9.0.0", "eslint-import-resolver-typescript": "^3.6.1", @@ -53,6 +59,7 @@ "eslint-plugin-jsx-a11y": "^6.7.1", "eslint-plugin-react": "^7.33.2", "eslint-plugin-react-hooks": "^4.6.0", + "rimraf": "^5.0.5", "tailwindcss": "^3.4.1", "typechain": "^8.3.2", "typescript": "^5.1.6" diff --git a/web-app/src/remix.config.js b/web-app/src/remix.config.js index 812df9d..86d6544 100644 --- a/web-app/src/remix.config.js +++ b/web-app/src/remix.config.js @@ -3,6 +3,6 @@ export default { ignoredRouteFiles: ['**/.*'], // appDirectory: "app", // assetsBuildDirectory: "public/build", - // publicPath: "/build/", + publicPath: '/static/build/', // serverBuildPath: "build/index.js", }; diff --git a/web-app/src/server/app.ts b/web-app/src/server/app.ts new file mode 100644 index 0000000..dd80f2a --- /dev/null +++ b/web-app/src/server/app.ts @@ -0,0 +1,38 @@ +import { createRequestHandler } from '@remix-run/express'; +import express from 'express'; +import * as build from 'build/index'; +import { ServerBuild } from '@remix-run/node'; + +const typedBuild = build as unknown as ServerBuild; + +export default function makeApp(): express.Express { + const app = express(); + + app.get('/favicon.ico', (req, res) => { + res.redirect('/static/favicon.ico'); + }); + + // The /static/* routing is configured on Cloudfront. + // This saves us from having to use `assetStoreBaseUrl` as an env + // variable on the lambda running express + // app.use('/static/*', (req, res) => { + // const params = req.originalUrl.slice('/static/'.length); + // res.redirect(`${assetStoreBaseUrl}/${params}`) + // }); + + app.use( + '*', + createRequestHandler({ + build: typedBuild, + + // return anything you want here to be available as `context` in your + // loaders and actions. This is where you can bridge the gap between Remix + // and your server + getLoadContext(/* req, res */) { + return {}; + }, + }), + ); + + return app; +} diff --git a/web-app/src/server/index.ts b/web-app/src/server/index.ts new file mode 100644 index 0000000..ffb0155 --- /dev/null +++ b/web-app/src/server/index.ts @@ -0,0 +1,9 @@ +import { LambdaFunctionURLHandler } from 'aws-lambda'; +import ServerlessHttp from 'serverless-http'; +import makeApp from './app'; + +export const handler: LambdaFunctionURLHandler = (event, context) => { + const app = makeApp(); + const serverlessInstance = ServerlessHttp(app); + return serverlessInstance(event, context); +}; From 5eaa2410d02f8fcde0d5fee84c7bae238314f038 Mon Sep 17 00:00:00 2001 From: Sayand Sathish Date: Thu, 21 Mar 2024 06:46:14 +0530 Subject: [PATCH 04/34] web-app/ci: Setup build and deploy scripts for `infra` We make sure the building of assets in the `src` folder also happens before trying to deploy --- web-app/infra/package.json | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/web-app/infra/package.json b/web-app/infra/package.json index 4ad7d77..082665c 100644 --- a/web-app/infra/package.json +++ b/web-app/infra/package.json @@ -5,9 +5,15 @@ "infra": "bin/infra.js" }, "scripts": { + "preinstall": "cd ../src && npm ci", + "prebuild": "cd ../src && npm run build", "build": "tsc", "watch": "tsc -w", - "deploy": "cdk deploy" + "predeploy": "npm run build", + "predeploy:ci": "npm run build", + "deploy": "cdk deploy", + "deploy:ci": "cdk deploy --require-approval never", + "undeploy": "cdk destroy" }, "devDependencies": { "@types/node": "20.11.19", From fe927fef789d719c0915f706c59d2ae417c7d5cd Mon Sep 17 00:00:00 2001 From: Sayand Sathish Date: Thu, 21 Mar 2024 08:02:59 +0530 Subject: [PATCH 05/34] web-app/chore: Set up eslint for infra directory We needed to set up @typescript-eslint for parsing, as well as @stylistic for opinionated styles --- web-app/infra/.eslintrc.cjs | 23 + web-app/infra/bin/infra.ts | 2 +- web-app/infra/package-lock.json | 2596 +++++++++++++++++++++++++++---- web-app/infra/package.json | 7 +- 4 files changed, 2330 insertions(+), 298 deletions(-) create mode 100644 web-app/infra/.eslintrc.cjs diff --git a/web-app/infra/.eslintrc.cjs b/web-app/infra/.eslintrc.cjs new file mode 100644 index 0000000..27f096d --- /dev/null +++ b/web-app/infra/.eslintrc.cjs @@ -0,0 +1,23 @@ +// .eslintrc.js +/** @type {import('eslint').Linter.Config} */ +module.exports = { + root: true, + parserOptions: { + ecmaVersion: 'latest', + sourceType: 'module', + }, + plugins: [ + '@stylistic', + '@typescript-eslint', + ], + extends: [ + 'plugin:@stylistic/recommended-extends', + ], + parser: '@typescript-eslint/parser', + rules: { + '@stylistic/semi': ['error', 'always'], + '@stylistic/max-len': ['error', { code: 80, ignoreStrings: true }], + '@stylistic/array-bracket-newline': ['error', 'consistent'], + '@stylistic/array-element-newline': ['error', 'consistent'], + }, +}; diff --git a/web-app/infra/bin/infra.ts b/web-app/infra/bin/infra.ts index 01a7f96..6619a08 100644 --- a/web-app/infra/bin/infra.ts +++ b/web-app/infra/bin/infra.ts @@ -6,4 +6,4 @@ import { InfraStack } from '../lib/infra-stack'; const app = new cdk.App(); new InfraStack(app, 'InfraStack', { env: { account: process.env.CDK_DEFAULT_ACCOUNT, region: 'ap-south-1' }, -}); \ No newline at end of file +}); diff --git a/web-app/infra/package-lock.json b/web-app/infra/package-lock.json index e2aa25c..8e39f4c 100644 --- a/web-app/infra/package-lock.json +++ b/web-app/infra/package-lock.json @@ -7,6 +7,7 @@ "": { "name": "infra", "version": "0.1.0", + "hasInstallScript": true, "dependencies": { "aws-cdk-lib": "2.133.0", "constructs": "^10.0.0", @@ -16,12 +17,25 @@ "infra": "bin/infra.js" }, "devDependencies": { + "@stylistic/eslint-plugin": "^1.7.0", "@types/node": "20.11.19", + "@typescript-eslint/eslint-plugin": "^7.3.1", + "@typescript-eslint/parser": "^7.3.1", "aws-cdk": "2.133.0", + "eslint": "^8.57.0", "ts-node": "^10.9.2", "typescript": "~5.3.3" } }, + "node_modules/@aashutoshrathi/word-wrap": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz", + "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/@aws-cdk/asset-awscli-v1": { "version": "2.2.202", "resolved": "https://registry.npmjs.org/@aws-cdk/asset-awscli-v1/-/asset-awscli-v1-2.2.202.tgz", @@ -59,6 +73,139 @@ "@jridgewell/sourcemap-codec": "^1.4.10" } }, + "node_modules/@eslint-community/eslint-utils": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", + "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", + "dev": true, + "dependencies": { + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + } + }, + "node_modules/@eslint-community/regexpp": { + "version": "4.10.0", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.10.0.tgz", + "integrity": "sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==", + "dev": true, + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", + "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", + "dev": true, + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.6.0", + "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" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint/eslintrc/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/@eslint/eslintrc/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/@eslint/js": { + "version": "8.57.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.0.tgz", + "integrity": "sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/@humanwhocodes/config-array": { + "version": "0.11.14", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.14.tgz", + "integrity": "sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==", + "dev": true, + "dependencies": { + "@humanwhocodes/object-schema": "^2.0.2", + "debug": "^4.3.1", + "minimatch": "^3.0.5" + }, + "engines": { + "node": ">=10.10.0" + } + }, + "node_modules/@humanwhocodes/config-array/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/@humanwhocodes/config-array/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true, + "engines": { + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/object-schema": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.2.tgz", + "integrity": "sha512-6EwiSjwWYP7pTckG6I5eyFANjPhmPjUX9JRLUSfNPC7FX7zK9gyZAfUEaECL6ALTpGX5AjnBq3C9XmVWPitNpw==", + "dev": true + }, "node_modules/@jridgewell/resolve-uri": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", @@ -74,6 +221,127 @@ "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", "dev": true }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@stylistic/eslint-plugin": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/@stylistic/eslint-plugin/-/eslint-plugin-1.7.0.tgz", + "integrity": "sha512-ThMUjGIi/jeWYNvOdjZkoLw1EOVs0tEuKXDgWvTn8uWaEz55HuPlajKxjKLpv19C+qRDbKczJfzUODfCdME53A==", + "dev": true, + "dependencies": { + "@stylistic/eslint-plugin-js": "1.7.0", + "@stylistic/eslint-plugin-jsx": "1.7.0", + "@stylistic/eslint-plugin-plus": "1.7.0", + "@stylistic/eslint-plugin-ts": "1.7.0", + "@types/eslint": "^8.56.2" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "peerDependencies": { + "eslint": ">=8.40.0" + } + }, + "node_modules/@stylistic/eslint-plugin-js": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/@stylistic/eslint-plugin-js/-/eslint-plugin-js-1.7.0.tgz", + "integrity": "sha512-PN6On/+or63FGnhhMKSQfYcWutRlzOiYlVdLM6yN7lquoBTqUJHYnl4TA4MHwiAt46X5gRxDr1+xPZ1lOLcL+Q==", + "dev": true, + "dependencies": { + "@types/eslint": "^8.56.2", + "acorn": "^8.11.3", + "escape-string-regexp": "^4.0.0", + "eslint-visitor-keys": "^3.4.3", + "espree": "^9.6.1" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "peerDependencies": { + "eslint": ">=8.40.0" + } + }, + "node_modules/@stylistic/eslint-plugin-jsx": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/@stylistic/eslint-plugin-jsx/-/eslint-plugin-jsx-1.7.0.tgz", + "integrity": "sha512-BACdBwXakQvjYIST5N2WWhRbvhRsIxa/F59BiZol+0IH4FSmDXhie7v/yaxDIIA9CbfElzOmIA5nWNYTVXcnwQ==", + "dev": true, + "dependencies": { + "@stylistic/eslint-plugin-js": "^1.7.0", + "@types/eslint": "^8.56.2", + "estraverse": "^5.3.0", + "picomatch": "^4.0.1" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "peerDependencies": { + "eslint": ">=8.40.0" + } + }, + "node_modules/@stylistic/eslint-plugin-plus": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/@stylistic/eslint-plugin-plus/-/eslint-plugin-plus-1.7.0.tgz", + "integrity": "sha512-AabDw8sXsc70Ydx3qnbeTlRHZnIwY6UKEenBPURPhY3bfYWX+/pDpZH40HkOu94v8D0DUrocPkeeEUxl4e0JDg==", + "dev": true, + "dependencies": { + "@types/eslint": "^8.56.2", + "@typescript-eslint/utils": "^6.21.0" + }, + "peerDependencies": { + "eslint": "*" + } + }, + "node_modules/@stylistic/eslint-plugin-ts": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/@stylistic/eslint-plugin-ts/-/eslint-plugin-ts-1.7.0.tgz", + "integrity": "sha512-QsHv98mmW1xaucVYQTyLDgEpybPJ/6jPPxVBrIchntWWwj74xCWKUiw79hu+TpYj/Pbhd9rkqJYLNq3pQGYuyA==", + "dev": true, + "dependencies": { + "@stylistic/eslint-plugin-js": "1.7.0", + "@types/eslint": "^8.56.2", + "@typescript-eslint/utils": "^6.21.0" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "peerDependencies": { + "eslint": ">=8.40.0" + } + }, "node_modules/@tsconfig/node10": { "version": "1.0.9", "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz", @@ -98,6 +366,28 @@ "integrity": "sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==", "dev": true }, + "node_modules/@types/eslint": { + "version": "8.56.6", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.56.6.tgz", + "integrity": "sha512-ymwc+qb1XkjT/gfoQwxIeHZ6ixH23A+tCT2ADSA/DPVKzAjwYkTXBMCQ/f6fe4wEa85Lhp26VPeUxI7wMhAi7A==", + "dev": true, + "dependencies": { + "@types/estree": "*", + "@types/json-schema": "*" + } + }, + "node_modules/@types/estree": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", + "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==", + "dev": true + }, + "node_modules/@types/json-schema": { + "version": "7.0.15", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", + "dev": true + }, "node_modules/@types/node": { "version": "20.11.19", "resolved": "https://registry.npmjs.org/@types/node/-/node-20.11.19.tgz", @@ -107,456 +397,2032 @@ "undici-types": "~5.26.4" } }, - "node_modules/acorn": { - "version": "8.11.3", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz", - "integrity": "sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==", + "node_modules/@types/semver": { + "version": "7.5.8", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.8.tgz", + "integrity": "sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==", + "dev": true + }, + "node_modules/@typescript-eslint/eslint-plugin": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.3.1.tgz", + "integrity": "sha512-STEDMVQGww5lhCuNXVSQfbfuNII5E08QWkvAw5Qwf+bj2WT+JkG1uc+5/vXA3AOYMDHVOSpL+9rcbEUiHIm2dw==", "dev": true, - "bin": { - "acorn": "bin/acorn" + "dependencies": { + "@eslint-community/regexpp": "^4.5.1", + "@typescript-eslint/scope-manager": "7.3.1", + "@typescript-eslint/type-utils": "7.3.1", + "@typescript-eslint/utils": "7.3.1", + "@typescript-eslint/visitor-keys": "7.3.1", + "debug": "^4.3.4", + "graphemer": "^1.4.0", + "ignore": "^5.2.4", + "natural-compare": "^1.4.0", + "semver": "^7.5.4", + "ts-api-utils": "^1.0.1" }, "engines": { - "node": ">=0.4.0" + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^7.0.0", + "eslint": "^8.56.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, - "node_modules/acorn-walk": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.2.tgz", - "integrity": "sha512-cjkyv4OtNCIeqhHrfS81QWXoCBPExR/J62oyEqepVw8WaQeSqpW2uhuLPh1m9eWhDuOo/jUXVTlifvesOWp/4A==", + "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/scope-manager": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.3.1.tgz", + "integrity": "sha512-fVS6fPxldsKY2nFvyT7IP78UO1/I2huG+AYu5AMjCT9wtl6JFiDnsv4uad4jQ0GTFzcUV5HShVeN96/17bTBag==", "dev": true, + "dependencies": { + "@typescript-eslint/types": "7.3.1", + "@typescript-eslint/visitor-keys": "7.3.1" + }, "engines": { - "node": ">=0.4.0" + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/arg": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", - "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", - "dev": true + "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/types": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.3.1.tgz", + "integrity": "sha512-2tUf3uWggBDl4S4183nivWQ2HqceOZh1U4hhu4p1tPiIJoRRXrab7Y+Y0p+dozYwZVvLPRI6r5wKe9kToF9FIw==", + "dev": true, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } }, - "node_modules/aws-cdk": { - "version": "2.133.0", - "resolved": "https://registry.npmjs.org/aws-cdk/-/aws-cdk-2.133.0.tgz", - "integrity": "sha512-EwH8VgQQ8ODeMwjE3p+WhbcbWNkCbvuJJl+Py9IB5znGf7GwLcEmOu4YWBsBGPVu41SXbSAf36twMBrJytCFZA==", + "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/typescript-estree": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.3.1.tgz", + "integrity": "sha512-tLpuqM46LVkduWP7JO7yVoWshpJuJzxDOPYIVWUUZbW+4dBpgGeUdl/fQkhuV0A8eGnphYw3pp8d2EnvPOfxmQ==", "dev": true, - "bin": { - "cdk": "bin/cdk" + "dependencies": { + "@typescript-eslint/types": "7.3.1", + "@typescript-eslint/visitor-keys": "7.3.1", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "minimatch": "9.0.3", + "semver": "^7.5.4", + "ts-api-utils": "^1.0.1" }, "engines": { - "node": ">= 14.15.0" + "node": "^18.18.0 || >=20.0.0" }, - "optionalDependencies": { - "fsevents": "2.3.2" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, - "node_modules/aws-cdk-lib": { - "version": "2.133.0", - "resolved": "https://registry.npmjs.org/aws-cdk-lib/-/aws-cdk-lib-2.133.0.tgz", - "integrity": "sha512-5/ezv8Ir2xyz3myeXQcODwrjVRN/cDD2OpBwU/ySFBe+uNac25OoHfTXwUPwE7oLj9qetSt6/i1QvY2iIs6yiQ==", - "bundleDependencies": [ - "@balena/dockerignore", - "case", - "fs-extra", - "ignore", - "jsonschema", - "minimatch", - "punycode", - "semver", - "table", - "yaml", - "mime-types" - ], + "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/utils": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.3.1.tgz", + "integrity": "sha512-jIERm/6bYQ9HkynYlNZvXpzmXWZGhMbrOvq3jJzOSOlKXsVjrrolzWBjDW6/TvT5Q3WqaN4EkmcfdQwi9tDjBQ==", + "dev": true, "dependencies": { - "@aws-cdk/asset-awscli-v1": "^2.2.202", - "@aws-cdk/asset-kubectl-v20": "^2.1.2", - "@aws-cdk/asset-node-proxy-agent-v6": "^2.0.1", - "@balena/dockerignore": "^1.0.2", - "case": "1.6.3", - "fs-extra": "^11.2.0", - "ignore": "^5.3.1", - "jsonschema": "^1.4.1", - "mime-types": "^2.1.35", - "minimatch": "^3.1.2", - "punycode": "^2.3.1", - "semver": "^7.6.0", - "table": "^6.8.1", - "yaml": "1.10.2" + "@eslint-community/eslint-utils": "^4.4.0", + "@types/json-schema": "^7.0.12", + "@types/semver": "^7.5.0", + "@typescript-eslint/scope-manager": "7.3.1", + "@typescript-eslint/types": "7.3.1", + "@typescript-eslint/typescript-estree": "7.3.1", + "semver": "^7.5.4" }, "engines": { - "node": ">= 14.15.0" + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "constructs": "^10.0.0" + "eslint": "^8.56.0" } }, - "node_modules/aws-cdk-lib/node_modules/@balena/dockerignore": { - "version": "1.0.2", - "inBundle": true, - "license": "Apache-2.0" - }, - "node_modules/aws-cdk-lib/node_modules/ajv": { - "version": "8.12.0", - "inBundle": true, - "license": "MIT", + "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/visitor-keys": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.3.1.tgz", + "integrity": "sha512-9RMXwQF8knsZvfv9tdi+4D/j7dMG28X/wMJ8Jj6eOHyHWwDW4ngQJcqEczSsqIKKjFiLFr40Mnr7a5ulDD3vmw==", + "dev": true, "dependencies": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" + "@typescript-eslint/types": "7.3.1", + "eslint-visitor-keys": "^3.4.1" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" }, "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/aws-cdk-lib/node_modules/ansi-regex": { - "version": "5.0.1", - "inBundle": true, - "license": "MIT", + "node_modules/@typescript-eslint/parser": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-7.3.1.tgz", + "integrity": "sha512-Rq49+pq7viTRCH48XAbTA+wdLRrB/3sRq4Lpk0oGDm0VmnjBrAOVXH/Laalmwsv2VpekiEfVFwJYVk6/e8uvQw==", + "dev": true, + "dependencies": { + "@typescript-eslint/scope-manager": "7.3.1", + "@typescript-eslint/types": "7.3.1", + "@typescript-eslint/typescript-estree": "7.3.1", + "@typescript-eslint/visitor-keys": "7.3.1", + "debug": "^4.3.4" + }, "engines": { - "node": ">=8" - } + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.56.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/scope-manager": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.3.1.tgz", + "integrity": "sha512-fVS6fPxldsKY2nFvyT7IP78UO1/I2huG+AYu5AMjCT9wtl6JFiDnsv4uad4jQ0GTFzcUV5HShVeN96/17bTBag==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "7.3.1", + "@typescript-eslint/visitor-keys": "7.3.1" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/types": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.3.1.tgz", + "integrity": "sha512-2tUf3uWggBDl4S4183nivWQ2HqceOZh1U4hhu4p1tPiIJoRRXrab7Y+Y0p+dozYwZVvLPRI6r5wKe9kToF9FIw==", + "dev": true, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/typescript-estree": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.3.1.tgz", + "integrity": "sha512-tLpuqM46LVkduWP7JO7yVoWshpJuJzxDOPYIVWUUZbW+4dBpgGeUdl/fQkhuV0A8eGnphYw3pp8d2EnvPOfxmQ==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "7.3.1", + "@typescript-eslint/visitor-keys": "7.3.1", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "minimatch": "9.0.3", + "semver": "^7.5.4", + "ts-api-utils": "^1.0.1" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/visitor-keys": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.3.1.tgz", + "integrity": "sha512-9RMXwQF8knsZvfv9tdi+4D/j7dMG28X/wMJ8Jj6eOHyHWwDW4ngQJcqEczSsqIKKjFiLFr40Mnr7a5ulDD3vmw==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "7.3.1", + "eslint-visitor-keys": "^3.4.1" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/scope-manager": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.21.0.tgz", + "integrity": "sha512-OwLUIWZJry80O99zvqXVEioyniJMa+d2GrqpUTqi5/v5D5rOrppJVBPa0yKCblcigC0/aYAzxxqQ1B+DS2RYsg==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "6.21.0", + "@typescript-eslint/visitor-keys": "6.21.0" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/type-utils": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-7.3.1.tgz", + "integrity": "sha512-iFhaysxFsMDQlzJn+vr3OrxN8NmdQkHks4WaqD4QBnt5hsq234wcYdyQ9uquzJJIDAj5W4wQne3yEsYA6OmXGw==", + "dev": true, + "dependencies": { + "@typescript-eslint/typescript-estree": "7.3.1", + "@typescript-eslint/utils": "7.3.1", + "debug": "^4.3.4", + "ts-api-utils": "^1.0.1" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.56.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/scope-manager": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.3.1.tgz", + "integrity": "sha512-fVS6fPxldsKY2nFvyT7IP78UO1/I2huG+AYu5AMjCT9wtl6JFiDnsv4uad4jQ0GTFzcUV5HShVeN96/17bTBag==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "7.3.1", + "@typescript-eslint/visitor-keys": "7.3.1" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/types": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.3.1.tgz", + "integrity": "sha512-2tUf3uWggBDl4S4183nivWQ2HqceOZh1U4hhu4p1tPiIJoRRXrab7Y+Y0p+dozYwZVvLPRI6r5wKe9kToF9FIw==", + "dev": true, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/typescript-estree": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.3.1.tgz", + "integrity": "sha512-tLpuqM46LVkduWP7JO7yVoWshpJuJzxDOPYIVWUUZbW+4dBpgGeUdl/fQkhuV0A8eGnphYw3pp8d2EnvPOfxmQ==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "7.3.1", + "@typescript-eslint/visitor-keys": "7.3.1", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "minimatch": "9.0.3", + "semver": "^7.5.4", + "ts-api-utils": "^1.0.1" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/utils": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.3.1.tgz", + "integrity": "sha512-jIERm/6bYQ9HkynYlNZvXpzmXWZGhMbrOvq3jJzOSOlKXsVjrrolzWBjDW6/TvT5Q3WqaN4EkmcfdQwi9tDjBQ==", + "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.4.0", + "@types/json-schema": "^7.0.12", + "@types/semver": "^7.5.0", + "@typescript-eslint/scope-manager": "7.3.1", + "@typescript-eslint/types": "7.3.1", + "@typescript-eslint/typescript-estree": "7.3.1", + "semver": "^7.5.4" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.56.0" + } + }, + "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/visitor-keys": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.3.1.tgz", + "integrity": "sha512-9RMXwQF8knsZvfv9tdi+4D/j7dMG28X/wMJ8Jj6eOHyHWwDW4ngQJcqEczSsqIKKjFiLFr40Mnr7a5ulDD3vmw==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "7.3.1", + "eslint-visitor-keys": "^3.4.1" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/types": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.21.0.tgz", + "integrity": "sha512-1kFmZ1rOm5epu9NZEZm1kckCDGj5UJEf7P1kliH4LKu/RkwpsfqqGmY2OOcUs18lSlQBKLDYBOGxRVtrMN5lpg==", + "dev": true, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/typescript-estree": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.21.0.tgz", + "integrity": "sha512-6npJTkZcO+y2/kr+z0hc4HwNfrrP4kNYh57ek7yCNlrBjWQ1Y0OS7jiZTkgumrvkX5HkEKXFZkkdFNkaW2wmUQ==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "6.21.0", + "@typescript-eslint/visitor-keys": "6.21.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "minimatch": "9.0.3", + "semver": "^7.5.4", + "ts-api-utils": "^1.0.1" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/utils": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.21.0.tgz", + "integrity": "sha512-NfWVaC8HP9T8cbKQxHcsJBY5YE1O33+jpMwN45qzWWaPDZgLIbo12toGMWnmhvCpd3sIxkpDw3Wv1B3dYrbDQQ==", + "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.4.0", + "@types/json-schema": "^7.0.12", + "@types/semver": "^7.5.0", + "@typescript-eslint/scope-manager": "6.21.0", + "@typescript-eslint/types": "6.21.0", + "@typescript-eslint/typescript-estree": "6.21.0", + "semver": "^7.5.4" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^7.0.0 || ^8.0.0" + } + }, + "node_modules/@typescript-eslint/visitor-keys": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.21.0.tgz", + "integrity": "sha512-JJtkDduxLi9bivAB+cYOVMtbkqdPOhZ+ZI5LC47MIRrDV4Yn2o+ZnW10Nkmr28xRpSpdJ6Sm42Hjf2+REYXm0A==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "6.21.0", + "eslint-visitor-keys": "^3.4.1" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@ungap/structured-clone": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", + "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==", + "dev": true + }, + "node_modules/acorn": { + "version": "8.11.3", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz", + "integrity": "sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/acorn-walk": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.2.tgz", + "integrity": "sha512-cjkyv4OtNCIeqhHrfS81QWXoCBPExR/J62oyEqepVw8WaQeSqpW2uhuLPh1m9eWhDuOo/jUXVTlifvesOWp/4A==", + "dev": true, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "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" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/arg": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", + "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", + "dev": true + }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "node_modules/array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/aws-cdk": { + "version": "2.133.0", + "resolved": "https://registry.npmjs.org/aws-cdk/-/aws-cdk-2.133.0.tgz", + "integrity": "sha512-EwH8VgQQ8ODeMwjE3p+WhbcbWNkCbvuJJl+Py9IB5znGf7GwLcEmOu4YWBsBGPVu41SXbSAf36twMBrJytCFZA==", + "dev": true, + "bin": { + "cdk": "bin/cdk" + }, + "engines": { + "node": ">= 14.15.0" + }, + "optionalDependencies": { + "fsevents": "2.3.2" + } + }, + "node_modules/aws-cdk-lib": { + "version": "2.133.0", + "resolved": "https://registry.npmjs.org/aws-cdk-lib/-/aws-cdk-lib-2.133.0.tgz", + "integrity": "sha512-5/ezv8Ir2xyz3myeXQcODwrjVRN/cDD2OpBwU/ySFBe+uNac25OoHfTXwUPwE7oLj9qetSt6/i1QvY2iIs6yiQ==", + "bundleDependencies": [ + "@balena/dockerignore", + "case", + "fs-extra", + "ignore", + "jsonschema", + "minimatch", + "punycode", + "semver", + "table", + "yaml", + "mime-types" + ], + "dependencies": { + "@aws-cdk/asset-awscli-v1": "^2.2.202", + "@aws-cdk/asset-kubectl-v20": "^2.1.2", + "@aws-cdk/asset-node-proxy-agent-v6": "^2.0.1", + "@balena/dockerignore": "^1.0.2", + "case": "1.6.3", + "fs-extra": "^11.2.0", + "ignore": "^5.3.1", + "jsonschema": "^1.4.1", + "mime-types": "^2.1.35", + "minimatch": "^3.1.2", + "punycode": "^2.3.1", + "semver": "^7.6.0", + "table": "^6.8.1", + "yaml": "1.10.2" + }, + "engines": { + "node": ">= 14.15.0" + }, + "peerDependencies": { + "constructs": "^10.0.0" + } + }, + "node_modules/aws-cdk-lib/node_modules/@balena/dockerignore": { + "version": "1.0.2", + "inBundle": true, + "license": "Apache-2.0" + }, + "node_modules/aws-cdk-lib/node_modules/ajv": { + "version": "8.12.0", + "inBundle": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/aws-cdk-lib/node_modules/ansi-regex": { + "version": "5.0.1", + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/aws-cdk-lib/node_modules/ansi-styles": { + "version": "4.3.0", + "inBundle": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/aws-cdk-lib/node_modules/astral-regex": { + "version": "2.0.0", + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/aws-cdk-lib/node_modules/balanced-match": { + "version": "1.0.2", + "inBundle": true, + "license": "MIT" + }, + "node_modules/aws-cdk-lib/node_modules/brace-expansion": { + "version": "1.1.11", + "inBundle": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/aws-cdk-lib/node_modules/case": { + "version": "1.6.3", + "inBundle": true, + "license": "(MIT OR GPL-3.0-or-later)", + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/aws-cdk-lib/node_modules/color-convert": { + "version": "2.0.1", + "inBundle": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/aws-cdk-lib/node_modules/color-name": { + "version": "1.1.4", + "inBundle": true, + "license": "MIT" + }, + "node_modules/aws-cdk-lib/node_modules/concat-map": { + "version": "0.0.1", + "inBundle": true, + "license": "MIT" + }, + "node_modules/aws-cdk-lib/node_modules/emoji-regex": { + "version": "8.0.0", + "inBundle": true, + "license": "MIT" + }, + "node_modules/aws-cdk-lib/node_modules/fast-deep-equal": { + "version": "3.1.3", + "inBundle": true, + "license": "MIT" + }, + "node_modules/aws-cdk-lib/node_modules/fs-extra": { + "version": "11.2.0", + "inBundle": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=14.14" + } + }, + "node_modules/aws-cdk-lib/node_modules/graceful-fs": { + "version": "4.2.11", + "inBundle": true, + "license": "ISC" + }, + "node_modules/aws-cdk-lib/node_modules/ignore": { + "version": "5.3.1", + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/aws-cdk-lib/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/aws-cdk-lib/node_modules/json-schema-traverse": { + "version": "1.0.0", + "inBundle": true, + "license": "MIT" + }, + "node_modules/aws-cdk-lib/node_modules/jsonfile": { + "version": "6.1.0", + "inBundle": true, + "license": "MIT", + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/aws-cdk-lib/node_modules/jsonschema": { + "version": "1.4.1", + "inBundle": true, + "license": "MIT", + "engines": { + "node": "*" + } + }, + "node_modules/aws-cdk-lib/node_modules/lodash.truncate": { + "version": "4.4.2", + "inBundle": true, + "license": "MIT" + }, + "node_modules/aws-cdk-lib/node_modules/lru-cache": { + "version": "6.0.0", + "inBundle": true, + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/aws-cdk-lib/node_modules/mime-db": { + "version": "1.52.0", + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/aws-cdk-lib/node_modules/mime-types": { + "version": "2.1.35", + "inBundle": true, + "license": "MIT", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/aws-cdk-lib/node_modules/minimatch": { + "version": "3.1.2", + "inBundle": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/aws-cdk-lib/node_modules/punycode": { + "version": "2.3.1", + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/aws-cdk-lib/node_modules/require-from-string": { + "version": "2.0.2", + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/aws-cdk-lib/node_modules/semver": { + "version": "7.6.0", + "inBundle": true, + "license": "ISC", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/aws-cdk-lib/node_modules/slice-ansi": { + "version": "4.0.0", + "inBundle": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "astral-regex": "^2.0.0", + "is-fullwidth-code-point": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/slice-ansi?sponsor=1" + } + }, + "node_modules/aws-cdk-lib/node_modules/string-width": { + "version": "4.2.3", + "inBundle": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/aws-cdk-lib/node_modules/strip-ansi": { + "version": "6.0.1", + "inBundle": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/aws-cdk-lib/node_modules/table": { + "version": "6.8.1", + "inBundle": true, + "license": "BSD-3-Clause", + "dependencies": { + "ajv": "^8.0.1", + "lodash.truncate": "^4.4.2", + "slice-ansi": "^4.0.0", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/aws-cdk-lib/node_modules/universalify": { + "version": "2.0.1", + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/aws-cdk-lib/node_modules/uri-js": { + "version": "4.4.1", + "inBundle": true, + "license": "BSD-2-Clause", + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/aws-cdk-lib/node_modules/yallist": { + "version": "4.0.0", + "inBundle": true, + "license": "ISC" + }, + "node_modules/aws-cdk-lib/node_modules/yaml": { + "version": "1.10.2", + "inBundle": true, + "license": "ISC", + "engines": { + "node": ">= 6" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true + }, + "node_modules/constructs": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/constructs/-/constructs-10.3.0.tgz", + "integrity": "sha512-vbK8i3rIb/xwZxSpTjz3SagHn1qq9BChLEfy5Hf6fB3/2eFbrwt2n9kHwQcS0CPTRBesreeAcsJfMq2229FnbQ==", + "engines": { + "node": ">= 16.14.0" + } + }, + "node_modules/create-require": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", + "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", + "dev": true + }, + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true + }, + "node_modules/diff": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", + "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", + "dev": true, + "engines": { + "node": ">=0.3.1" + } + }, + "node_modules/dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "dependencies": { + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint": { + "version": "8.57.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.0.tgz", + "integrity": "sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==", + "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.6.1", + "@eslint/eslintrc": "^2.1.4", + "@eslint/js": "8.57.0", + "@humanwhocodes/config-array": "^0.11.14", + "@humanwhocodes/module-importer": "^1.0.1", + "@nodelib/fs.walk": "^1.2.8", + "@ungap/structured-clone": "^1.2.0", + "ajv": "^6.12.4", + "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.2", + "eslint-visitor-keys": "^3.4.3", + "espree": "^9.6.1", + "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", + "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.3", + "strip-ansi": "^6.0.1", + "text-table": "^0.2.0" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-scope": { + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", + "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/eslint/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/espree": { + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", + "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", + "dev": true, + "dependencies": { + "acorn": "^8.9.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.4.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/esquery": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", + "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", + "dev": true, + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "node_modules/fast-glob": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", + "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", + "dev": true, + "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" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fast-glob/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true + }, + "node_modules/fastq": { + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", + "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==", + "dev": true, + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/file-entry-cache": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "dev": true, + "dependencies": { + "flat-cache": "^3.0.4" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/flat-cache": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz", + "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==", + "dev": true, + "dependencies": { + "flatted": "^3.2.9", + "keyv": "^4.5.3", + "rimraf": "^3.0.2" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/flatted": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.1.tgz", + "integrity": "sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==", + "dev": true + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true + }, + "node_modules/fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } }, - "node_modules/aws-cdk-lib/node_modules/ansi-styles": { - "version": "4.3.0", - "inBundle": true, - "license": "MIT", + "node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, "dependencies": { - "color-convert": "^2.0.1" + "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" }, "engines": { - "node": ">=8" + "node": "*" }, "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/aws-cdk-lib/node_modules/astral-regex": { - "version": "2.0.0", - "inBundle": true, - "license": "MIT", + "node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.3" + }, "engines": { - "node": ">=8" + "node": ">=10.13.0" } }, - "node_modules/aws-cdk-lib/node_modules/balanced-match": { - "version": "1.0.2", - "inBundle": true, - "license": "MIT" - }, - "node_modules/aws-cdk-lib/node_modules/brace-expansion": { + "node_modules/glob/node_modules/brace-expansion": { "version": "1.1.11", - "inBundle": true, - "license": "MIT", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" } }, - "node_modules/aws-cdk-lib/node_modules/case": { - "version": "1.6.3", - "inBundle": true, - "license": "(MIT OR GPL-3.0-or-later)", + "node_modules/glob/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, "engines": { - "node": ">= 0.8.0" + "node": "*" } }, - "node_modules/aws-cdk-lib/node_modules/color-convert": { - "version": "2.0.1", - "inBundle": true, - "license": "MIT", + "node_modules/globals": { + "version": "13.24.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", + "dev": true, "dependencies": { - "color-name": "~1.1.4" + "type-fest": "^0.20.2" }, "engines": { - "node": ">=7.0.0" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/aws-cdk-lib/node_modules/color-name": { - "version": "1.1.4", - "inBundle": true, - "license": "MIT" + "node_modules/globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "dev": true, + "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" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, - "node_modules/aws-cdk-lib/node_modules/concat-map": { - "version": "0.0.1", - "inBundle": true, - "license": "MIT" + "node_modules/graphemer": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", + "dev": true }, - "node_modules/aws-cdk-lib/node_modules/emoji-regex": { - "version": "8.0.0", - "inBundle": true, - "license": "MIT" + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } }, - "node_modules/aws-cdk-lib/node_modules/fast-deep-equal": { - "version": "3.1.3", - "inBundle": true, - "license": "MIT" + "node_modules/ignore": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.1.tgz", + "integrity": "sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==", + "dev": true, + "engines": { + "node": ">= 4" + } }, - "node_modules/aws-cdk-lib/node_modules/fs-extra": { - "version": "11.2.0", - "inBundle": true, - "license": "MIT", + "node_modules/import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" }, "engines": { - "node": ">=14.14" + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/aws-cdk-lib/node_modules/graceful-fs": { - "version": "4.2.11", - "inBundle": true, - "license": "ISC" + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true, + "engines": { + "node": ">=0.8.19" + } }, - "node_modules/aws-cdk-lib/node_modules/ignore": { - "version": "5.3.1", - "inBundle": true, - "license": "MIT", + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "dev": true, + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, "engines": { - "node": ">= 4" + "node": ">=0.10.0" } }, - "node_modules/aws-cdk-lib/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "inBundle": true, - "license": "MIT", + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "dev": true, "engines": { "node": ">=8" } }, - "node_modules/aws-cdk-lib/node_modules/json-schema-traverse": { - "version": "1.0.0", - "inBundle": true, - "license": "MIT" + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true }, - "node_modules/aws-cdk-lib/node_modules/jsonfile": { - "version": "6.1.0", - "inBundle": true, - "license": "MIT", + "node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, "dependencies": { - "universalify": "^2.0.0" + "argparse": "^2.0.1" }, - "optionalDependencies": { - "graceful-fs": "^4.1.6" + "bin": { + "js-yaml": "bin/js-yaml.js" } }, - "node_modules/aws-cdk-lib/node_modules/jsonschema": { - "version": "1.4.1", - "inBundle": true, - "license": "MIT", - "engines": { - "node": "*" + "node_modules/json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + "dev": true + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true + }, + "node_modules/keyv": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", + "dev": true, + "dependencies": { + "json-buffer": "3.0.1" } }, - "node_modules/aws-cdk-lib/node_modules/lodash.truncate": { - "version": "4.4.2", - "inBundle": true, - "license": "MIT" + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } }, - "node_modules/aws-cdk-lib/node_modules/lru-cache": { + "node_modules/locate-path": { "version": "6.0.0", - "inBundle": true, - "license": "ISC", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, "dependencies": { - "yallist": "^4.0.0" + "p-locate": "^5.0.0" }, "engines": { "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/aws-cdk-lib/node_modules/mime-db": { - "version": "1.52.0", - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">= 0.6" - } + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true }, - "node_modules/aws-cdk-lib/node_modules/mime-types": { - "version": "2.1.35", - "inBundle": true, - "license": "MIT", + "node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, "dependencies": { - "mime-db": "1.52.0" + "yallist": "^4.0.0" }, "engines": { - "node": ">= 0.6" + "node": ">=10" } }, - "node_modules/aws-cdk-lib/node_modules/minimatch": { - "version": "3.1.2", - "inBundle": true, - "license": "ISC", + "node_modules/make-error": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", + "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", + "dev": true + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "dev": true, "dependencies": { - "brace-expansion": "^1.1.7" + "braces": "^3.0.2", + "picomatch": "^2.3.1" }, "engines": { - "node": "*" + "node": ">=8.6" } }, - "node_modules/aws-cdk-lib/node_modules/punycode": { + "node_modules/micromatch/node_modules/picomatch": { "version": "2.3.1", - "inBundle": true, - "license": "MIT", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, "engines": { - "node": ">=6" + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" } }, - "node_modules/aws-cdk-lib/node_modules/require-from-string": { - "version": "2.0.2", - "inBundle": true, - "license": "MIT", + "node_modules/minimatch": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, "engines": { - "node": ">=0.10.0" + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/aws-cdk-lib/node_modules/semver": { - "version": "7.6.0", - "inBundle": true, - "license": "ISC", + "node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" + "wrappy": "1" + } + }, + "node_modules/optionator": { + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz", + "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==", + "dev": true, + "dependencies": { + "@aashutoshrathi/word-wrap": "^1.2.3", + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0" }, "engines": { - "node": ">=10" + "node": ">= 0.8.0" } }, - "node_modules/aws-cdk-lib/node_modules/slice-ansi": { - "version": "4.0.0", - "inBundle": true, - "license": "MIT", + "node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, "dependencies": { - "ansi-styles": "^4.0.0", - "astral-regex": "^2.0.0", - "is-fullwidth-code-point": "^3.0.0" + "yocto-queue": "^0.1.0" }, "engines": { "node": ">=10" }, "funding": { - "url": "https://github.com/chalk/slice-ansi?sponsor=1" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/aws-cdk-lib/node_modules/string-width": { - "version": "4.2.3", - "inBundle": true, - "license": "MIT", + "node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" + "p-limit": "^3.0.2" }, "engines": { - "node": ">=8" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/aws-cdk-lib/node_modules/strip-ansi": { - "version": "6.0.1", - "inBundle": true, - "license": "MIT", + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, "dependencies": { - "ansi-regex": "^5.0.1" + "callsites": "^3.0.0" }, "engines": { - "node": ">=8" + "node": ">=6" } }, - "node_modules/aws-cdk-lib/node_modules/table": { - "version": "6.8.1", - "inBundle": true, - "license": "BSD-3-Clause", - "dependencies": { - "ajv": "^8.0.1", - "lodash.truncate": "^4.4.2", - "slice-ansi": "^4.0.0", - "string-width": "^4.2.3", - "strip-ansi": "^6.0.1" - }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, "engines": { - "node": ">=10.0.0" + "node": ">=8" } }, - "node_modules/aws-cdk-lib/node_modules/universalify": { - "version": "2.0.1", - "inBundle": true, - "license": "MIT", + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "dev": true, "engines": { - "node": ">= 10.0.0" + "node": ">=0.10.0" } }, - "node_modules/aws-cdk-lib/node_modules/uri-js": { - "version": "4.4.1", - "inBundle": true, - "license": "BSD-2-Clause", - "dependencies": { - "punycode": "^2.1.0" + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "engines": { + "node": ">=8" } }, - "node_modules/aws-cdk-lib/node_modules/yallist": { + "node_modules/path-type": { "version": "4.0.0", - "inBundle": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true, + "engines": { + "node": ">=8" + } }, - "node_modules/aws-cdk-lib/node_modules/yaml": { - "version": "1.10.2", - "inBundle": true, - "license": "ISC", + "node_modules/picomatch": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.1.tgz", + "integrity": "sha512-xUXwsxNjwTQ8K3GnT4pCJm+xq3RUPQbmkYJTP5aFIfNIvbcc/4MUxgBaaRSZJ6yGJZiGSyYlM6MzwTsRk8SYCg==", + "dev": true, "engines": { - "node": ">= 6" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" } }, - "node_modules/buffer-from": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" + "node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } }, - "node_modules/constructs": { - "version": "10.3.0", - "resolved": "https://registry.npmjs.org/constructs/-/constructs-10.3.0.tgz", - "integrity": "sha512-vbK8i3rIb/xwZxSpTjz3SagHn1qq9BChLEfy5Hf6fB3/2eFbrwt2n9kHwQcS0CPTRBesreeAcsJfMq2229FnbQ==", + "node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "dev": true, "engines": { - "node": ">= 16.14.0" + "node": ">=6" } }, - "node_modules/create-require": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", - "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", - "dev": true + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] }, - "node_modules/diff": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", - "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", + "node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", "dev": true, "engines": { - "node": ">=0.3.1" + "node": ">=4" } }, - "node_modules/fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", "dev": true, - "hasInstallScript": true, - "optional": true, - "os": [ - "darwin" + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } ], + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/semver": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + "node": ">=10" } }, - "node_modules/make-error": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", - "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", - "dev": true + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, + "engines": { + "node": ">=8" + } }, "node_modules/source-map": { "version": "0.6.1", @@ -575,6 +2441,72 @@ "source-map": "^0.6.0" } }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", + "dev": true + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/ts-api-utils": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.3.0.tgz", + "integrity": "sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==", + "dev": true, + "engines": { + "node": ">=16" + }, + "peerDependencies": { + "typescript": ">=4.2.0" + } + }, "node_modules/ts-node": { "version": "10.9.2", "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.2.tgz", @@ -618,6 +2550,30 @@ } } }, + "node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/typescript": { "version": "5.3.3", "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.3.3.tgz", @@ -637,12 +2593,48 @@ "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", "dev": true }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "dependencies": { + "punycode": "^2.1.0" + } + }, "node_modules/v8-compile-cache-lib": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==", "dev": true }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true + }, + "node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, "node_modules/yn": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", @@ -651,6 +2643,18 @@ "engines": { "node": ">=6" } + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } } } } diff --git a/web-app/infra/package.json b/web-app/infra/package.json index 082665c..c303cb2 100644 --- a/web-app/infra/package.json +++ b/web-app/infra/package.json @@ -13,11 +13,16 @@ "predeploy:ci": "npm run build", "deploy": "cdk deploy", "deploy:ci": "cdk deploy --require-approval never", - "undeploy": "cdk destroy" + "undeploy": "cdk destroy", + "lint": "eslint . --ext '.ts' --ignore-path .gitignore" }, "devDependencies": { + "@stylistic/eslint-plugin": "^1.7.0", "@types/node": "20.11.19", + "@typescript-eslint/eslint-plugin": "^7.3.1", + "@typescript-eslint/parser": "^7.3.1", "aws-cdk": "2.133.0", + "eslint": "^8.57.0", "ts-node": "^10.9.2", "typescript": "~5.3.3" }, From b8ab18b42235a527c301055739379d6b9d3d676a Mon Sep 17 00:00:00 2001 From: Sayand Sathish Date: Sat, 23 Mar 2024 15:26:00 +0530 Subject: [PATCH 06/34] chore: Allow infra folder to read from other folders By doing so we can import the env schemas from other projects. In order to support the same, we needed to change the build process for the infra repo. This involved getting substituting `ts-node` with `tsx`. As a side task, the build and watch scripts were removed from package.json as they are [redundant](https://github.com/aws/aws-cdk/discussions/19516#discussioncomment-2456520) --- web-app/infra/.env..sample | 5 + web-app/infra/.gitignore | 1 + web-app/infra/cdk.json | 4 +- web-app/infra/lib/utils/env.ts | 10 + web-app/infra/package-lock.json | 574 ++++++++++++++++++++++++-------- web-app/infra/package.json | 11 +- web-app/src/app/lib/env.ts | 2 +- 7 files changed, 454 insertions(+), 153 deletions(-) create mode 100644 web-app/infra/.env..sample create mode 100644 web-app/infra/lib/utils/env.ts diff --git a/web-app/infra/.env..sample b/web-app/infra/.env..sample new file mode 100644 index 0000000..c741d8f --- /dev/null +++ b/web-app/infra/.env..sample @@ -0,0 +1,5 @@ +# App env vars +STAKING_CONTRACT_ADDRESS="" +STAKING_TOKEN_ADDRESS="" +REWARD_TOKEN_ADDRESS="" +PRODUCTION_CHAIN_INFO='{"iconUrls":[],"nativeCurrency":{"name":"xANV","symbol":"xANV","decimals":18},"rpcUrls":["http://localhost:8545"],"chainId":"0x7a69","chainName":"Anvil"}' \ No newline at end of file diff --git a/web-app/infra/.gitignore b/web-app/infra/.gitignore index f60797b..39808c5 100644 --- a/web-app/infra/.gitignore +++ b/web-app/infra/.gitignore @@ -2,6 +2,7 @@ !jest.config.js *.d.ts node_modules +.env # CDK asset staging directory .cdk.staging diff --git a/web-app/infra/cdk.json b/web-app/infra/cdk.json index f5219ca..bcffc26 100644 --- a/web-app/infra/cdk.json +++ b/web-app/infra/cdk.json @@ -1,5 +1,5 @@ { - "app": "npx ts-node --prefer-ts-exts bin/infra.ts", + "app": "tsx bin/infra.ts", "watch": { "include": [ "**" @@ -64,4 +64,4 @@ "@aws-cdk/aws-codepipeline:crossAccountKeysDefaultValueToFalse": true, "@aws-cdk/aws-codepipeline:defaultPipelineTypeToV2": true } -} +} \ No newline at end of file diff --git a/web-app/infra/lib/utils/env.ts b/web-app/infra/lib/utils/env.ts new file mode 100644 index 0000000..1fa46ba --- /dev/null +++ b/web-app/infra/lib/utils/env.ts @@ -0,0 +1,10 @@ +import { envSchema as appEnvSchema } from '../../../src/app/lib/env'; +import { z } from 'zod'; + +const envSchema = z.object({ + ...appEnvSchema.shape, +}); + +const parsedEnv = envSchema.parse(process.env); + +export default parsedEnv; diff --git a/web-app/infra/package-lock.json b/web-app/infra/package-lock.json index 8e39f4c..bd2e88a 100644 --- a/web-app/infra/package-lock.json +++ b/web-app/infra/package-lock.json @@ -11,7 +11,9 @@ "dependencies": { "aws-cdk-lib": "2.133.0", "constructs": "^10.0.0", - "source-map-support": "^0.5.21" + "source-map-support": "^0.5.21", + "tsx": "^4.7.1", + "zod": "^3.22.4" }, "bin": { "infra": "bin/infra.js" @@ -23,7 +25,6 @@ "@typescript-eslint/parser": "^7.3.1", "aws-cdk": "2.133.0", "eslint": "^8.57.0", - "ts-node": "^10.9.2", "typescript": "~5.3.3" } }, @@ -51,26 +52,349 @@ "resolved": "https://registry.npmjs.org/@aws-cdk/asset-node-proxy-agent-v6/-/asset-node-proxy-agent-v6-2.0.1.tgz", "integrity": "sha512-DDt4SLdLOwWCjGtltH4VCST7hpOI5DzieuhGZsBpZ+AgJdSI2GCjklCXm0GCTwJG/SolkL5dtQXyUKgg9luBDg==" }, - "node_modules/@cspotcode/source-map-support": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", - "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", - "dev": true, - "dependencies": { - "@jridgewell/trace-mapping": "0.3.9" - }, + "node_modules/@esbuild/aix-ppc64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.19.12.tgz", + "integrity": "sha512-bmoCYyWdEL3wDQIVbcyzRyeKLgk2WtWLTWz1ZIAZF/EGbNOwSA6ew3PftJ1PqMiOOGu0OyFMzG53L0zqIpPeNA==", + "cpu": [ + "ppc64" + ], + "optional": true, + "os": [ + "aix" + ], "engines": { "node": ">=12" } }, - "node_modules/@cspotcode/source-map-support/node_modules/@jridgewell/trace-mapping": { - "version": "0.3.9", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", - "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", - "dev": true, - "dependencies": { - "@jridgewell/resolve-uri": "^3.0.3", - "@jridgewell/sourcemap-codec": "^1.4.10" + "node_modules/@esbuild/android-arm": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.19.12.tgz", + "integrity": "sha512-qg/Lj1mu3CdQlDEEiWrlC4eaPZ1KztwGJ9B6J+/6G+/4ewxJg7gqj8eVYWvao1bXrqGiW2rsBZFSX3q2lcW05w==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.19.12.tgz", + "integrity": "sha512-P0UVNGIienjZv3f5zq0DP3Nt2IE/3plFzuaS96vihvD0Hd6H/q4WXUGpCxD/E8YrSXfNyRPbpTq+T8ZQioSuPA==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.19.12.tgz", + "integrity": "sha512-3k7ZoUW6Q6YqhdhIaq/WZ7HwBpnFBlW905Fa4s4qWJyiNOgT1dOqDiVAQFwBH7gBRZr17gLrlFCRzF6jFh7Kew==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.19.12.tgz", + "integrity": "sha512-B6IeSgZgtEzGC42jsI+YYu9Z3HKRxp8ZT3cqhvliEHovq8HSX2YX8lNocDn79gCKJXOSaEot9MVYky7AKjCs8g==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.19.12.tgz", + "integrity": "sha512-hKoVkKzFiToTgn+41qGhsUJXFlIjxI/jSYeZf3ugemDYZldIXIxhvwN6erJGlX4t5h417iFuheZ7l+YVn05N3A==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.19.12.tgz", + "integrity": "sha512-4aRvFIXmwAcDBw9AueDQ2YnGmz5L6obe5kmPT8Vd+/+x/JMVKCgdcRwH6APrbpNXsPz+K653Qg8HB/oXvXVukA==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.19.12.tgz", + "integrity": "sha512-EYoXZ4d8xtBoVN7CEwWY2IN4ho76xjYXqSXMNccFSx2lgqOG/1TBPW0yPx1bJZk94qu3tX0fycJeeQsKovA8gg==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.19.12.tgz", + "integrity": "sha512-J5jPms//KhSNv+LO1S1TX1UWp1ucM6N6XuL6ITdKWElCu8wXP72l9MM0zDTzzeikVyqFE6U8YAV9/tFyj0ti+w==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.19.12.tgz", + "integrity": "sha512-EoTjyYyLuVPfdPLsGVVVC8a0p1BFFvtpQDB/YLEhaXyf/5bczaGeN15QkR+O4S5LeJ92Tqotve7i1jn35qwvdA==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.19.12.tgz", + "integrity": "sha512-Thsa42rrP1+UIGaWz47uydHSBOgTUnwBwNq59khgIwktK6x60Hivfbux9iNR0eHCHzOLjLMLfUMLCypBkZXMHA==", + "cpu": [ + "ia32" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.19.12.tgz", + "integrity": "sha512-LiXdXA0s3IqRRjm6rV6XaWATScKAXjI4R4LoDlvO7+yQqFdlr1Bax62sRwkVvRIrwXxvtYEHHI4dm50jAXkuAA==", + "cpu": [ + "loong64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.19.12.tgz", + "integrity": "sha512-fEnAuj5VGTanfJ07ff0gOA6IPsvrVHLVb6Lyd1g2/ed67oU1eFzL0r9WL7ZzscD+/N6i3dWumGE1Un4f7Amf+w==", + "cpu": [ + "mips64el" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.19.12.tgz", + "integrity": "sha512-nYJA2/QPimDQOh1rKWedNOe3Gfc8PabU7HT3iXWtNUbRzXS9+vgB0Fjaqr//XNbd82mCxHzik2qotuI89cfixg==", + "cpu": [ + "ppc64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.19.12.tgz", + "integrity": "sha512-2MueBrlPQCw5dVJJpQdUYgeqIzDQgw3QtiAHUC4RBz9FXPrskyyU3VI1hw7C0BSKB9OduwSJ79FTCqtGMWqJHg==", + "cpu": [ + "riscv64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.19.12.tgz", + "integrity": "sha512-+Pil1Nv3Umes4m3AZKqA2anfhJiVmNCYkPchwFJNEJN5QxmTs1uzyy4TvmDrCRNT2ApwSari7ZIgrPeUx4UZDg==", + "cpu": [ + "s390x" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.19.12.tgz", + "integrity": "sha512-B71g1QpxfwBvNrfyJdVDexenDIt1CiDN1TIXLbhOw0KhJzE78KIFGX6OJ9MrtC0oOqMWf+0xop4qEU8JrJTwCg==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.19.12.tgz", + "integrity": "sha512-3ltjQ7n1owJgFbuC61Oj++XhtzmymoCihNFgT84UAmJnxJfm4sYCiSLTXZtE00VWYpPMYc+ZQmB6xbSdVh0JWA==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.19.12.tgz", + "integrity": "sha512-RbrfTB9SWsr0kWmb9srfF+L933uMDdu9BIzdA7os2t0TXhCRjrQyCeOt6wVxr79CKD4c+p+YhCj31HBkYcXebw==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.19.12.tgz", + "integrity": "sha512-HKjJwRrW8uWtCQnQOz9qcU3mUZhTUQvi56Q8DPTLLB+DawoiQdjsYq+j+D3s9I8VFtDr+F9CjgXKKC4ss89IeA==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.19.12.tgz", + "integrity": "sha512-URgtR1dJnmGvX864pn1B2YUYNzjmXkuJOIqG2HdU62MVS4EHpU2946OZoTMnRUHklGtJdJZ33QfzdjGACXhn1A==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.19.12.tgz", + "integrity": "sha512-+ZOE6pUkMOJfmxmBZElNOx72NKpIa/HFOMGzu8fqzQJ5kgf6aTGrcJaFsNiVMH4JKpMipyK+7k0n2UXN7a8YKQ==", + "cpu": [ + "ia32" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.19.12.tgz", + "integrity": "sha512-T1QyPSDCyMXaO3pzBkF96E8xMkiRYbUEZADd29SyPGabqxMViNoii+NcK7eWJAEoU6RZyEm5lVSIjTmcdoB9HA==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" } }, "node_modules/@eslint-community/eslint-utils": { @@ -206,21 +530,6 @@ "integrity": "sha512-6EwiSjwWYP7pTckG6I5eyFANjPhmPjUX9JRLUSfNPC7FX7zK9gyZAfUEaECL6ALTpGX5AjnBq3C9XmVWPitNpw==", "dev": true }, - "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", - "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", - "dev": true, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.4.15", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", - "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", - "dev": true - }, "node_modules/@nodelib/fs.scandir": { "version": "2.1.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", @@ -342,30 +651,6 @@ "eslint": ">=8.40.0" } }, - "node_modules/@tsconfig/node10": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz", - "integrity": "sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==", - "dev": true - }, - "node_modules/@tsconfig/node12": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz", - "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==", - "dev": true - }, - "node_modules/@tsconfig/node14": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz", - "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==", - "dev": true - }, - "node_modules/@tsconfig/node16": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.4.tgz", - "integrity": "sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==", - "dev": true - }, "node_modules/@types/eslint": { "version": "8.56.6", "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.56.6.tgz", @@ -895,15 +1180,6 @@ "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" } }, - "node_modules/acorn-walk": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.2.tgz", - "integrity": "sha512-cjkyv4OtNCIeqhHrfS81QWXoCBPExR/J62oyEqepVw8WaQeSqpW2uhuLPh1m9eWhDuOo/jUXVTlifvesOWp/4A==", - "dev": true, - "engines": { - "node": ">=0.4.0" - } - }, "node_modules/ajv": { "version": "6.12.6", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", @@ -944,12 +1220,6 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/arg": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", - "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", - "dev": true - }, "node_modules/argparse": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", @@ -1430,12 +1700,6 @@ "node": ">= 16.14.0" } }, - "node_modules/create-require": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", - "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", - "dev": true - }, "node_modules/cross-spawn": { "version": "7.0.3", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", @@ -1473,15 +1737,6 @@ "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", "dev": true }, - "node_modules/diff": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", - "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", - "dev": true, - "engines": { - "node": ">=0.3.1" - } - }, "node_modules/dir-glob": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", @@ -1506,6 +1761,43 @@ "node": ">=6.0.0" } }, + "node_modules/esbuild": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.19.12.tgz", + "integrity": "sha512-aARqgq8roFBj054KvQr5f1sFu0D65G+miZRCuJyJ0G13Zwx7vRar5Zhn2tkQNzIXcBrNVsv/8stehpj+GAjgbg==", + "hasInstallScript": true, + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.19.12", + "@esbuild/android-arm": "0.19.12", + "@esbuild/android-arm64": "0.19.12", + "@esbuild/android-x64": "0.19.12", + "@esbuild/darwin-arm64": "0.19.12", + "@esbuild/darwin-x64": "0.19.12", + "@esbuild/freebsd-arm64": "0.19.12", + "@esbuild/freebsd-x64": "0.19.12", + "@esbuild/linux-arm": "0.19.12", + "@esbuild/linux-arm64": "0.19.12", + "@esbuild/linux-ia32": "0.19.12", + "@esbuild/linux-loong64": "0.19.12", + "@esbuild/linux-mips64el": "0.19.12", + "@esbuild/linux-ppc64": "0.19.12", + "@esbuild/linux-riscv64": "0.19.12", + "@esbuild/linux-s390x": "0.19.12", + "@esbuild/linux-x64": "0.19.12", + "@esbuild/netbsd-x64": "0.19.12", + "@esbuild/openbsd-x64": "0.19.12", + "@esbuild/sunos-x64": "0.19.12", + "@esbuild/win32-arm64": "0.19.12", + "@esbuild/win32-ia32": "0.19.12", + "@esbuild/win32-x64": "0.19.12" + } + }, "node_modules/escape-string-regexp": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", @@ -1817,6 +2109,17 @@ "node": "^8.16.0 || ^10.6.0 || >=11.0.0" } }, + "node_modules/get-tsconfig": { + "version": "4.7.3", + "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.7.3.tgz", + "integrity": "sha512-ZvkrzoUA0PQZM6fy6+/Hce561s+faD1rsNwhnO5FelNjyy7EMGJ3Rz1AQ8GYDWjhRs/7dBLOEJvhK8MiEJOAFg==", + "dependencies": { + "resolve-pkg-maps": "^1.0.0" + }, + "funding": { + "url": "https://github.com/privatenumber/get-tsconfig?sponsor=1" + } + }, "node_modules/glob": { "version": "7.2.3", "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", @@ -2101,12 +2404,6 @@ "node": ">=10" } }, - "node_modules/make-error": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", - "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", - "dev": true - }, "node_modules/merge2": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", @@ -2331,6 +2628,14 @@ "node": ">=4" } }, + "node_modules/resolve-pkg-maps": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz", + "integrity": "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==", + "funding": { + "url": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1" + } + }, "node_modules/reusify": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", @@ -2507,47 +2812,35 @@ "typescript": ">=4.2.0" } }, - "node_modules/ts-node": { - "version": "10.9.2", - "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.2.tgz", - "integrity": "sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==", - "dev": true, + "node_modules/tsx": { + "version": "4.7.1", + "resolved": "https://registry.npmjs.org/tsx/-/tsx-4.7.1.tgz", + "integrity": "sha512-8d6VuibXHtlN5E3zFkgY8u4DX7Y3Z27zvvPKVmLon/D4AjuKzarkUBTLDBgj9iTQ0hg5xM7c/mYiRVM+HETf0g==", "dependencies": { - "@cspotcode/source-map-support": "^0.8.0", - "@tsconfig/node10": "^1.0.7", - "@tsconfig/node12": "^1.0.7", - "@tsconfig/node14": "^1.0.0", - "@tsconfig/node16": "^1.0.2", - "acorn": "^8.4.1", - "acorn-walk": "^8.1.1", - "arg": "^4.1.0", - "create-require": "^1.1.0", - "diff": "^4.0.1", - "make-error": "^1.1.1", - "v8-compile-cache-lib": "^3.0.1", - "yn": "3.1.1" + "esbuild": "~0.19.10", + "get-tsconfig": "^4.7.2" }, "bin": { - "ts-node": "dist/bin.js", - "ts-node-cwd": "dist/bin-cwd.js", - "ts-node-esm": "dist/bin-esm.js", - "ts-node-script": "dist/bin-script.js", - "ts-node-transpile-only": "dist/bin-transpile.js", - "ts-script": "dist/bin-script-deprecated.js" + "tsx": "dist/cli.mjs" }, - "peerDependencies": { - "@swc/core": ">=1.2.50", - "@swc/wasm": ">=1.2.50", - "@types/node": "*", - "typescript": ">=2.7" + "engines": { + "node": ">=18.0.0" }, - "peerDependenciesMeta": { - "@swc/core": { - "optional": true - }, - "@swc/wasm": { - "optional": true - } + "optionalDependencies": { + "fsevents": "~2.3.3" + } + }, + "node_modules/tsx/node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" } }, "node_modules/type-check": { @@ -2602,12 +2895,6 @@ "punycode": "^2.1.0" } }, - "node_modules/v8-compile-cache-lib": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", - "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==", - "dev": true - }, "node_modules/which": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", @@ -2635,15 +2922,6 @@ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", "dev": true }, - "node_modules/yn": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", - "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", - "dev": true, - "engines": { - "node": ">=6" - } - }, "node_modules/yocto-queue": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", @@ -2655,6 +2933,14 @@ "funding": { "url": "https://github.com/sponsors/sindresorhus" } + }, + "node_modules/zod": { + "version": "3.22.4", + "resolved": "https://registry.npmjs.org/zod/-/zod-3.22.4.tgz", + "integrity": "sha512-iC+8Io04lddc+mVqQ9AZ7OQ2MrUKGN+oIQyq1vemgt46jwCwLfhq7/pwnBnNXXXZb8VTVLKwp9EDkx+ryxIWmg==", + "funding": { + "url": "https://github.com/sponsors/colinhacks" + } } } } diff --git a/web-app/infra/package.json b/web-app/infra/package.json index c303cb2..5d349f5 100644 --- a/web-app/infra/package.json +++ b/web-app/infra/package.json @@ -6,9 +6,7 @@ }, "scripts": { "preinstall": "cd ../src && npm ci", - "prebuild": "cd ../src && npm run build", - "build": "tsc", - "watch": "tsc -w", + "build": "cd ../src && npm run build", "predeploy": "npm run build", "predeploy:ci": "npm run build", "deploy": "cdk deploy", @@ -23,12 +21,13 @@ "@typescript-eslint/parser": "^7.3.1", "aws-cdk": "2.133.0", "eslint": "^8.57.0", - "ts-node": "^10.9.2", "typescript": "~5.3.3" }, "dependencies": { "aws-cdk-lib": "2.133.0", "constructs": "^10.0.0", - "source-map-support": "^0.5.21" + "source-map-support": "^0.5.21", + "tsx": "^4.7.1", + "zod": "^3.22.4" } -} \ No newline at end of file +} diff --git a/web-app/src/app/lib/env.ts b/web-app/src/app/lib/env.ts index 8ec2315..247ffbf 100644 --- a/web-app/src/app/lib/env.ts +++ b/web-app/src/app/lib/env.ts @@ -3,7 +3,7 @@ import { chainInfoSchema } from './loaders/chainInfo'; const ethAddressSchema = z.string().regex(/^0x([0-9]|[a-f]){40}$/i); -const envSchema = z.object({ +export const envSchema = z.object({ NODE_ENV: z.union([ z.literal('development'), z.literal('production'), z.literal('test'), ]) satisfies z.ZodType, From 7d825cc46533c79e4f264422ad5d749ac50c89c4 Mon Sep 17 00:00:00 2001 From: Sayand Sathish Date: Sun, 24 Mar 2024 08:55:28 +0530 Subject: [PATCH 07/34] contracts/ci: Add production deployment script - A `deploy-prod` script was added, which deploys with an address stored in cast wallet, and securely accessed via interactive shell. The script also verifies the contract code on etherscan - The deployment script `01_Deploy.s.sol` was modified to use the deployer address provided via forge flags, instead of reading from the env. This is safer. - _.env_ file was modified to include all the required safe variables - We deployed this code to Sepolia test net! So you will also see the logs for this deploy run, inside _contracts/broadcast/*_ --- contracts/.env.sample | 12 +- contracts/Makefile | 15 ++- .../11155111/run-1711247789.json | 74 +++++++++++ .../11155111/run-1711247803.json | 120 ++++++++++++++++++ .../11155111/run-1711247866.json | 120 ++++++++++++++++++ .../01_Deploy.s.sol/11155111/run-latest.json | 120 ++++++++++++++++++ contracts/script/01_Deploy.s.sol | 3 +- 7 files changed, 460 insertions(+), 4 deletions(-) create mode 100644 contracts/broadcast/01_Deploy.s.sol/11155111/run-1711247789.json create mode 100644 contracts/broadcast/01_Deploy.s.sol/11155111/run-1711247803.json create mode 100644 contracts/broadcast/01_Deploy.s.sol/11155111/run-1711247866.json create mode 100644 contracts/broadcast/01_Deploy.s.sol/11155111/run-latest.json diff --git a/contracts/.env.sample b/contracts/.env.sample index 415c050..9057e0c 100644 --- a/contracts/.env.sample +++ b/contracts/.env.sample @@ -1 +1,11 @@ -PRIVATE_KEY="" # deployer private key \ No newline at end of file +# The name of the account from `cast wallet` used for deployment +DEPLOYER_ACC_NAME='' + +# The chain to which you are deploying. Make sure that the etherscan and RPC_URL are looking at the same chain +CHAIN_NAME="sepolia" + +# The API key for verifying contract code on etherscan +ETHER_SCAN_API_KEY="4R9KW77TXKSQ1PV4STEWF1ZHHNZDZ2YAIG" + +# The RPC URL for broadcasting the contract deployment +RPC_URL="https://eth-sepolia.g.alchemy.com/v2/mf16xqfXJrEylHiHuhg4nPfg6H5T9n2l" diff --git a/contracts/Makefile b/contracts/Makefile index 884da89..d636e26 100644 --- a/contracts/Makefile +++ b/contracts/Makefile @@ -1,3 +1,16 @@ +include .env + DEPLOY_SCRIPT=script/01_Deploy.s.sol + +# These hardcoded private keys are from the anvil local chain deploy-dev: $(DEPLOY_SCRIPT) - forge script $(DEPLOY_SCRIPT) --rpc-url http://127.0.0.1:8545 --broadcast \ No newline at end of file + forge script $(DEPLOY_SCRIPT) --rpc-url http://127.0.0.1:8545 --broadcast \ + --sender 0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266 \ + --private-key 0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80 + +deploy-prod: $(DEPLOY_SCRIPT) + @forge script $(DEPLOY_SCRIPT) --rpc-url ${RPC_URL} --broadcast \ + --account ${DEPLOYER_ACC_NAME} \ + --sender $$(cast wallet address --account ${DEPLOYER_ACC_NAME}) \ + --verify --chain ${CHAIN_NAME} --etherscan-api-key ${ETHER_SCAN_API_KEY} + \ No newline at end of file diff --git a/contracts/broadcast/01_Deploy.s.sol/11155111/run-1711247789.json b/contracts/broadcast/01_Deploy.s.sol/11155111/run-1711247789.json new file mode 100644 index 0000000..d4c33ac --- /dev/null +++ b/contracts/broadcast/01_Deploy.s.sol/11155111/run-1711247789.json @@ -0,0 +1,74 @@ +{ + "transactions": [ + { + "hash": "0x25b612979dcca889063177822ed6b15415998c3015449974a2e3d12b43be8d01", + "transactionType": "CREATE", + "contractName": "FinthetixStakingToken", + "contractAddress": "0x1308D1d0c4642AaA253276f6641aF8f196925DB7", + "function": null, + "arguments": null, + "transaction": { + "type": "0x02", + "from": "0x2e4ada956f44298003610315e17c85e24ca89739", + "gas": "0xa8d6f", + "value": "0x0", + "data": "0x608060405234801561001057600080fd5b506040518060400160405280601581526020017f46696e7468657469785374616b696e67546f6b656e0000000000000000000000815250604051806040016040528060038152602001621194d560ea1b81525081600390816100729190610128565b50600461007f8282610128565b5050506101e7565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806100b157607f821691505b6020821081036100d157634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115610123576000816000526020600020601f850160051c810160208610156101005750805b601f850160051c820191505b8181101561011f5782815560010161010c565b5050505b505050565b81516001600160401b0381111561014157610141610087565b6101558161014f845461009d565b846100d7565b602080601f83116001811461018a57600084156101725750858301515b600019600386901b1c1916600185901b17855561011f565b600085815260208120601f198616915b828110156101b95788860151825594840194600190910190840161019a565b50858210156101d75787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6107b7806101f66000396000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c806370a082311161006657806370a082311461011857806395d89b4114610141578063a9059cbb14610149578063cea265441461015c578063dd62ed3e1461016657600080fd5b806306fdde03146100a3578063095ea7b3146100c157806318160ddd146100e457806323b872dd146100f6578063313ce56714610109575b600080fd5b6100ab61019f565b6040516100b89190610600565b60405180910390f35b6100d46100cf36600461066b565b610231565b60405190151581526020016100b8565b6002545b6040519081526020016100b8565b6100d4610104366004610695565b61024b565b604051601281526020016100b8565b6100e86101263660046106d1565b6001600160a01b031660009081526020819052604090205490565b6100ab61026f565b6100d461015736600461066b565b61027e565b61016461028c565b005b6100e86101743660046106f3565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6060600380546101ae90610726565b80601f01602080910402602001604051908101604052809291908181526020018280546101da90610726565b80156102275780601f106101fc57610100808354040283529160200191610227565b820191906000526020600020905b81548152906001019060200180831161020a57829003601f168201915b5050505050905090565b60003361023f8185856102d3565b60019150505b92915050565b6000336102598582856102e5565b610264858585610368565b506001949350505050565b6060600480546101ae90610726565b60003361023f818585610368565b61029e33674563918244f400006103c7565b6040513381527f7ccf505540043a893f416e2e7f2b62d967254fb031524e626d82fcfa70b89d609060200160405180910390a1565b6102e08383836001610401565b505050565b6001600160a01b038381166000908152600160209081526040808320938616835292905220546000198114610362578181101561035357604051637dc7a0d960e11b81526001600160a01b038416600482015260248101829052604481018390526064015b60405180910390fd5b61036284848484036000610401565b50505050565b6001600160a01b03831661039257604051634b637e8f60e11b81526000600482015260240161034a565b6001600160a01b0382166103bc5760405163ec442f0560e01b81526000600482015260240161034a565b6102e08383836104d6565b6001600160a01b0382166103f15760405163ec442f0560e01b81526000600482015260240161034a565b6103fd600083836104d6565b5050565b6001600160a01b03841661042b5760405163e602df0560e01b81526000600482015260240161034a565b6001600160a01b03831661045557604051634a1406b160e11b81526000600482015260240161034a565b6001600160a01b038085166000908152600160209081526040808320938716835292905220829055801561036257826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516104c891815260200190565b60405180910390a350505050565b6001600160a01b0383166105015780600260008282546104f69190610760565b909155506105739050565b6001600160a01b038316600090815260208190526040902054818110156105545760405163391434e360e21b81526001600160a01b0385166004820152602481018290526044810183905260640161034a565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b03821661058f576002805482900390556105ae565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516105f391815260200190565b60405180910390a3505050565b60006020808352835180602085015260005b8181101561062e57858101830151858201604001528201610612565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b038116811461066657600080fd5b919050565b6000806040838503121561067e57600080fd5b6106878361064f565b946020939093013593505050565b6000806000606084860312156106aa57600080fd5b6106b38461064f565b92506106c16020850161064f565b9150604084013590509250925092565b6000602082840312156106e357600080fd5b6106ec8261064f565b9392505050565b6000806040838503121561070657600080fd5b61070f8361064f565b915061071d6020840161064f565b90509250929050565b600181811c9082168061073a57607f821691505b60208210810361075a57634e487b7160e01b600052602260045260246000fd5b50919050565b8082018082111561024557634e487b7160e01b600052601160045260246000fdfea2646970667358221220ce785b9fa3f57c0750e52a5e3341a369bbf561d3f2f975754ada2521ca1fae4764736f6c63430008170033", + "nonce": "0x17", + "accessList": [] + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x918e90f1bffc589d58b38aa3ee58f1cad61b5f16c5eb452c012b812722078740", + "transactionType": "CREATE", + "contractName": "FinthetixStakingContract", + "contractAddress": "0x8474c21a0d8936442D852d1284af5ac922f3eCD8", + "function": null, + "arguments": [ + "0x1308D1d0c4642AaA253276f6641aF8f196925DB7" + ], + "transaction": { + "type": "0x02", + "from": "0x2e4ada956f44298003610315e17c85e24ca89739", + "gas": "0x182cf0", + "value": "0x0", + "data": "0x60c060405260405161001090610075565b604051809103906000f08015801561002c573d6000803e3d6000fd5b506001600160a01b031660a05234801561004557600080fd5b5060405161167938038061167983398101604081905261006491610082565b6001600160a01b03166080526100b2565b610b4680610b3383390190565b60006020828403121561009457600080fd5b81516001600160a01b03811681146100ab57600080fd5b9392505050565b60805160a051610a476100ec600039600081816101be0152610592015260008181610122015281816102da01526104410152610a476000f3fe608060405234801561001057600080fd5b50600436106100cf5760003560e01c8063905497de1161008c578063c7b8981c11610066578063c7b8981c146101b1578063f7c618c1146101b9578063fbdfd37b146101e0578063ffc1d187146101e957600080fd5b8063905497de1461017a5780639fa2f3cd1461018f578063a694fc3a1461019e57600080fd5b80632e17de78146100d45780633165af1e146100e957806362d45b671461010d57806372f702f31461011d57806375507aee1461015c5780638dcfba4614610165575b600080fd5b6100e76100e2366004610945565b6101f2565b005b336000908152600460205260409020545b6040519081526020015b60405180910390f35b6100fa68056bc75e2d6310000081565b6101447f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610104565b6100fa60025481565b336000908152600360205260409020546100fa565b336000908152600560205260409020546100fa565b6100fa6706f05b59d3b2000081565b6100e76101ac366004610945565b610399565b6100e76104ff565b6101447f000000000000000000000000000000000000000000000000000000000000000081565b6100fa60015481565b6100fa60005481565b3361021057604051630702b3d960e41b815260040160405180910390fd5b80806000036102395760405163038a201d60e01b81523360048201526024015b60405180910390fd5b336000908152600360205260409020548281101561027a5760405163e55c807360e01b81523360048201526024810184905260448101829052606401610230565b610282610627565b33600090815260036020526040812080548592906102a1908490610974565b92505081905550826000808282546102b99190610974565b909155505060405163a9059cbb60e01b8152336004820152602481018490527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063a9059cbb906044016020604051808303816000875af115801561032b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061034f919061098d565b50336000818152600360209081526040918290205491519182527fcddd3be660b4706b208689495b1470f67e1f53d4c62e36817301dd403e9d7bb6910160405180910390a2505050565b336103b757604051630702b3d960e41b815260040160405180910390fd5b80806000036103db5760405163038a201d60e01b8152336004820152602401610230565b6103e3610627565b33600090815260036020526040812080548492906104029084906109af565b925050819055508160008082825461041a91906109af565b90915550506040516323b872dd60e01b8152336004820152306024820152604481018390527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906323b872dd906064016020604051808303816000875af1158015610492573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104b6919061098d565b50336000818152600360209081526040918290205491519182527fcddd3be660b4706b208689495b1470f67e1f53d4c62e36817301dd403e9d7bb6910160405180910390a25050565b3361051d57604051630702b3d960e41b815260040160405180910390fd5b610525610627565b33600090815260046020526040812054908190036105585760405163c781471360e01b8152336004820152602401610230565b3360008181526004602081905260408083209290925590516340c10f1960e01b815290810191909152602481018290526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906340c10f1990604401600060405180830381600087803b1580156105d657600080fd5b505af11580156105ea573d6000803e3d6000fd5b5050604051600081523392507f60bbff26d658c4e93ffa8398e3d4018ae055a98a86be2586a865f04a3b97a351915060200160405180910390a250565b61062f610704565b6002600082825461064091906109af565b90915550506002546040519081527f4427a727232fad41b1e8eae5c814479909622b735af63ab126e4655c84d789bf9060200160405180910390a161068361077e565b33600090815260046020526040812080549091906106a29084906109af565b9091555050336000818152600460209081526040918290205491519182527f60bbff26d658c4e93ffa8398e3d4018ae055a98a86be2586a865f04a3b97a351910160405180910390a24260015560025433600090815260056020526040902055565b600080546000036107155750600090565b600068056bc75e2d631000006001544261072f9190610974565b61073991906109c2565b905060005481101561076b5760015460405163629a1e8560e01b81524260048201526024810191909152604401610230565b60005461077890826109ef565b91505090565b3360009081526003602052604081205481806107a2836706f05b59d3b20000610835565b91509150816107fb5760006107c9846706f05b59d3b2000068056bc75e2d63100000610880565b336000908152600560205260409020546002549192506107e891610974565b6107f290826109c2565b94505050505090565b3360009081526005602052604090205460025461082d91839161081e9190610974565b68056bc75e2d63100000610880565b935050505090565b6000808360000361084c5750600190506000610879565b8383028385828161085f5761085f6109d9565b0414610872576000809250925050610879565b6001925090505b9250929050565b60008383028160001985870982811083820303915050806000036108b7578382816108ad576108ad6109d9565b049250505061093e565b8084116108d75760405163227bc15360e01b815260040160405180910390fd5b6000848688096000868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150505b9392505050565b60006020828403121561095757600080fd5b5035919050565b634e487b7160e01b600052601160045260246000fd5b818103818111156109875761098761095e565b92915050565b60006020828403121561099f57600080fd5b8151801515811461093e57600080fd5b808201808211156109875761098761095e565b80820281158282048414176109875761098761095e565b634e487b7160e01b600052601260045260246000fd5b600082610a0c57634e487b7160e01b600052601260045260246000fd5b50049056fea2646970667358221220babf0510a16a509ac9fc6843b11377a8029156b048b52bcee4692b91a194950a64736f6c63430008170033608060405234801561001057600080fd5b50336040518060400160405280601481526020017f46696e746865746978526577617264546f6b656e0000000000000000000000008152506040518060400160405280600381526020016211949560ea1b815250816003908161007391906101b3565b50600461008082826101b3565b5050506001600160a01b0381166100b157604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b6100ba816100c0565b50610272565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b634e487b7160e01b600052604160045260246000fd5b600181811c9082168061013c57607f821691505b60208210810361015c57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156101ae576000816000526020600020601f850160051c8101602086101561018b5750805b601f850160051c820191505b818110156101aa57828155600101610197565b5050505b505050565b81516001600160401b038111156101cc576101cc610112565b6101e0816101da8454610128565b84610162565b602080601f83116001811461021557600084156101fd5750858301515b600019600386901b1c1916600185901b1785556101aa565b600085815260208120601f198616915b8281101561024457888601518255948401946001909101908401610225565b50858210156102625787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6108c5806102816000396000f3fe608060405234801561001057600080fd5b50600436106100cf5760003560e01c806370a082311161008c57806395d89b411161006657806395d89b41146101aa578063a9059cbb146101b2578063dd62ed3e146101c5578063f2fde38b146101fe57600080fd5b806370a082311461015e578063715018a6146101875780638da5cb5b1461018f57600080fd5b806306fdde03146100d4578063095ea7b3146100f257806318160ddd1461011557806323b872dd14610127578063313ce5671461013a57806340c10f1914610149575b600080fd5b6100dc610211565b6040516100e9919061070e565b60405180910390f35b610105610100366004610779565b6102a3565b60405190151581526020016100e9565b6002545b6040519081526020016100e9565b6101056101353660046107a3565b6102bd565b604051601281526020016100e9565b61015c610157366004610779565b6102e1565b005b61011961016c3660046107df565b6001600160a01b031660009081526020819052604090205490565b61015c6102f7565b6005546040516001600160a01b0390911681526020016100e9565b6100dc61030b565b6101056101c0366004610779565b61031a565b6101196101d3366004610801565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b61015c61020c3660046107df565b610328565b60606003805461022090610834565b80601f016020809104026020016040519081016040528092919081815260200182805461024c90610834565b80156102995780601f1061026e57610100808354040283529160200191610299565b820191906000526020600020905b81548152906001019060200180831161027c57829003601f168201915b5050505050905090565b6000336102b181858561036b565b60019150505b92915050565b6000336102cb85828561037d565b6102d68585856103fb565b506001949350505050565b6102e961045a565b6102f38282610487565b5050565b6102ff61045a565b61030960006104bd565b565b60606004805461022090610834565b6000336102b18185856103fb565b61033061045a565b6001600160a01b03811661035f57604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b610368816104bd565b50565b610378838383600161050f565b505050565b6001600160a01b0383811660009081526001602090815260408083209386168352929052205460001981146103f557818110156103e657604051637dc7a0d960e11b81526001600160a01b03841660048201526024810182905260448101839052606401610356565b6103f58484848403600061050f565b50505050565b6001600160a01b03831661042557604051634b637e8f60e11b815260006004820152602401610356565b6001600160a01b03821661044f5760405163ec442f0560e01b815260006004820152602401610356565b6103788383836105e4565b6005546001600160a01b031633146103095760405163118cdaa760e01b8152336004820152602401610356565b6001600160a01b0382166104b15760405163ec442f0560e01b815260006004820152602401610356565b6102f3600083836105e4565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b0384166105395760405163e602df0560e01b815260006004820152602401610356565b6001600160a01b03831661056357604051634a1406b160e11b815260006004820152602401610356565b6001600160a01b03808516600090815260016020908152604080832093871683529290522082905580156103f557826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516105d691815260200190565b60405180910390a350505050565b6001600160a01b03831661060f578060026000828254610604919061086e565b909155506106819050565b6001600160a01b038316600090815260208190526040902054818110156106625760405163391434e360e21b81526001600160a01b03851660048201526024810182905260448101839052606401610356565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b03821661069d576002805482900390556106bc565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161070191815260200190565b60405180910390a3505050565b60006020808352835180602085015260005b8181101561073c57858101830151858201604001528201610720565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b038116811461077457600080fd5b919050565b6000806040838503121561078c57600080fd5b6107958361075d565b946020939093013593505050565b6000806000606084860312156107b857600080fd5b6107c18461075d565b92506107cf6020850161075d565b9150604084013590509250925092565b6000602082840312156107f157600080fd5b6107fa8261075d565b9392505050565b6000806040838503121561081457600080fd5b61081d8361075d565b915061082b6020840161075d565b90509250929050565b600181811c9082168061084857607f821691505b60208210810361086857634e487b7160e01b600052602260045260246000fd5b50919050565b808201808211156102b757634e487b7160e01b600052601160045260246000fdfea26469706673582212206486d64809e8c3182e81c5a8c6e0b5988d6b150892711b3b5f6cd92861b40fe164736f6c634300081700330000000000000000000000001308d1d0c4642aaa253276f6641af8f196925db7", + "nonce": "0x18", + "accessList": [] + }, + "additionalContracts": [ + { + "transactionType": "CREATE", + "address": "0x2A29AfdF7c14Ae5b0821B9A998508abe929e5999", + "initCode": "0x608060405234801561001057600080fd5b50336040518060400160405280601481526020017f46696e746865746978526577617264546f6b656e0000000000000000000000008152506040518060400160405280600381526020016211949560ea1b815250816003908161007391906101b3565b50600461008082826101b3565b5050506001600160a01b0381166100b157604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b6100ba816100c0565b50610272565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b634e487b7160e01b600052604160045260246000fd5b600181811c9082168061013c57607f821691505b60208210810361015c57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156101ae576000816000526020600020601f850160051c8101602086101561018b5750805b601f850160051c820191505b818110156101aa57828155600101610197565b5050505b505050565b81516001600160401b038111156101cc576101cc610112565b6101e0816101da8454610128565b84610162565b602080601f83116001811461021557600084156101fd5750858301515b600019600386901b1c1916600185901b1785556101aa565b600085815260208120601f198616915b8281101561024457888601518255948401946001909101908401610225565b50858210156102625787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6108c5806102816000396000f3fe608060405234801561001057600080fd5b50600436106100cf5760003560e01c806370a082311161008c57806395d89b411161006657806395d89b41146101aa578063a9059cbb146101b2578063dd62ed3e146101c5578063f2fde38b146101fe57600080fd5b806370a082311461015e578063715018a6146101875780638da5cb5b1461018f57600080fd5b806306fdde03146100d4578063095ea7b3146100f257806318160ddd1461011557806323b872dd14610127578063313ce5671461013a57806340c10f1914610149575b600080fd5b6100dc610211565b6040516100e9919061070e565b60405180910390f35b610105610100366004610779565b6102a3565b60405190151581526020016100e9565b6002545b6040519081526020016100e9565b6101056101353660046107a3565b6102bd565b604051601281526020016100e9565b61015c610157366004610779565b6102e1565b005b61011961016c3660046107df565b6001600160a01b031660009081526020819052604090205490565b61015c6102f7565b6005546040516001600160a01b0390911681526020016100e9565b6100dc61030b565b6101056101c0366004610779565b61031a565b6101196101d3366004610801565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b61015c61020c3660046107df565b610328565b60606003805461022090610834565b80601f016020809104026020016040519081016040528092919081815260200182805461024c90610834565b80156102995780601f1061026e57610100808354040283529160200191610299565b820191906000526020600020905b81548152906001019060200180831161027c57829003601f168201915b5050505050905090565b6000336102b181858561036b565b60019150505b92915050565b6000336102cb85828561037d565b6102d68585856103fb565b506001949350505050565b6102e961045a565b6102f38282610487565b5050565b6102ff61045a565b61030960006104bd565b565b60606004805461022090610834565b6000336102b18185856103fb565b61033061045a565b6001600160a01b03811661035f57604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b610368816104bd565b50565b610378838383600161050f565b505050565b6001600160a01b0383811660009081526001602090815260408083209386168352929052205460001981146103f557818110156103e657604051637dc7a0d960e11b81526001600160a01b03841660048201526024810182905260448101839052606401610356565b6103f58484848403600061050f565b50505050565b6001600160a01b03831661042557604051634b637e8f60e11b815260006004820152602401610356565b6001600160a01b03821661044f5760405163ec442f0560e01b815260006004820152602401610356565b6103788383836105e4565b6005546001600160a01b031633146103095760405163118cdaa760e01b8152336004820152602401610356565b6001600160a01b0382166104b15760405163ec442f0560e01b815260006004820152602401610356565b6102f3600083836105e4565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b0384166105395760405163e602df0560e01b815260006004820152602401610356565b6001600160a01b03831661056357604051634a1406b160e11b815260006004820152602401610356565b6001600160a01b03808516600090815260016020908152604080832093871683529290522082905580156103f557826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516105d691815260200190565b60405180910390a350505050565b6001600160a01b03831661060f578060026000828254610604919061086e565b909155506106819050565b6001600160a01b038316600090815260208190526040902054818110156106625760405163391434e360e21b81526001600160a01b03851660048201526024810182905260448101839052606401610356565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b03821661069d576002805482900390556106bc565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161070191815260200190565b60405180910390a3505050565b60006020808352835180602085015260005b8181101561073c57858101830151858201604001528201610720565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b038116811461077457600080fd5b919050565b6000806040838503121561078c57600080fd5b6107958361075d565b946020939093013593505050565b6000806000606084860312156107b857600080fd5b6107c18461075d565b92506107cf6020850161075d565b9150604084013590509250925092565b6000602082840312156107f157600080fd5b6107fa8261075d565b9392505050565b6000806040838503121561081457600080fd5b61081d8361075d565b915061082b6020840161075d565b90509250929050565b600181811c9082168061084857607f821691505b60208210810361086857634e487b7160e01b600052602260045260246000fd5b50919050565b808201808211156102b757634e487b7160e01b600052601160045260246000fdfea26469706673582212206486d64809e8c3182e81c5a8c6e0b5988d6b150892711b3b5f6cd92861b40fe164736f6c63430008170033" + } + ], + "isFixedGasLimit": false + } + ], + "receipts": [], + "libraries": [], + "pending": [ + "0x25b612979dcca889063177822ed6b15415998c3015449974a2e3d12b43be8d01", + "0x918e90f1bffc589d58b38aa3ee58f1cad61b5f16c5eb452c012b812722078740" + ], + "returns": { + "stakingTokenAddr": { + "internal_type": "address", + "value": "0x1308D1d0c4642AaA253276f6641aF8f196925DB7" + }, + "stakingContractAddr": { + "internal_type": "address", + "value": "0x8474c21a0d8936442D852d1284af5ac922f3eCD8" + }, + "rewardTokenAddr": { + "internal_type": "address", + "value": "0x2A29AfdF7c14Ae5b0821B9A998508abe929e5999" + } + }, + "timestamp": 1711247789, + "chain": 11155111, + "multi": false, + "commit": "b8ab18b" +} \ No newline at end of file diff --git a/contracts/broadcast/01_Deploy.s.sol/11155111/run-1711247803.json b/contracts/broadcast/01_Deploy.s.sol/11155111/run-1711247803.json new file mode 100644 index 0000000..e52e485 --- /dev/null +++ b/contracts/broadcast/01_Deploy.s.sol/11155111/run-1711247803.json @@ -0,0 +1,120 @@ +{ + "transactions": [ + { + "hash": "0x25b612979dcca889063177822ed6b15415998c3015449974a2e3d12b43be8d01", + "transactionType": "CREATE", + "contractName": "FinthetixStakingToken", + "contractAddress": "0x1308D1d0c4642AaA253276f6641aF8f196925DB7", + "function": null, + "arguments": null, + "transaction": { + "type": "0x02", + "from": "0x2e4ada956f44298003610315e17c85e24ca89739", + "gas": "0xa8d6f", + "value": "0x0", + "data": "0x608060405234801561001057600080fd5b506040518060400160405280601581526020017f46696e7468657469785374616b696e67546f6b656e0000000000000000000000815250604051806040016040528060038152602001621194d560ea1b81525081600390816100729190610128565b50600461007f8282610128565b5050506101e7565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806100b157607f821691505b6020821081036100d157634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115610123576000816000526020600020601f850160051c810160208610156101005750805b601f850160051c820191505b8181101561011f5782815560010161010c565b5050505b505050565b81516001600160401b0381111561014157610141610087565b6101558161014f845461009d565b846100d7565b602080601f83116001811461018a57600084156101725750858301515b600019600386901b1c1916600185901b17855561011f565b600085815260208120601f198616915b828110156101b95788860151825594840194600190910190840161019a565b50858210156101d75787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6107b7806101f66000396000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c806370a082311161006657806370a082311461011857806395d89b4114610141578063a9059cbb14610149578063cea265441461015c578063dd62ed3e1461016657600080fd5b806306fdde03146100a3578063095ea7b3146100c157806318160ddd146100e457806323b872dd146100f6578063313ce56714610109575b600080fd5b6100ab61019f565b6040516100b89190610600565b60405180910390f35b6100d46100cf36600461066b565b610231565b60405190151581526020016100b8565b6002545b6040519081526020016100b8565b6100d4610104366004610695565b61024b565b604051601281526020016100b8565b6100e86101263660046106d1565b6001600160a01b031660009081526020819052604090205490565b6100ab61026f565b6100d461015736600461066b565b61027e565b61016461028c565b005b6100e86101743660046106f3565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6060600380546101ae90610726565b80601f01602080910402602001604051908101604052809291908181526020018280546101da90610726565b80156102275780601f106101fc57610100808354040283529160200191610227565b820191906000526020600020905b81548152906001019060200180831161020a57829003601f168201915b5050505050905090565b60003361023f8185856102d3565b60019150505b92915050565b6000336102598582856102e5565b610264858585610368565b506001949350505050565b6060600480546101ae90610726565b60003361023f818585610368565b61029e33674563918244f400006103c7565b6040513381527f7ccf505540043a893f416e2e7f2b62d967254fb031524e626d82fcfa70b89d609060200160405180910390a1565b6102e08383836001610401565b505050565b6001600160a01b038381166000908152600160209081526040808320938616835292905220546000198114610362578181101561035357604051637dc7a0d960e11b81526001600160a01b038416600482015260248101829052604481018390526064015b60405180910390fd5b61036284848484036000610401565b50505050565b6001600160a01b03831661039257604051634b637e8f60e11b81526000600482015260240161034a565b6001600160a01b0382166103bc5760405163ec442f0560e01b81526000600482015260240161034a565b6102e08383836104d6565b6001600160a01b0382166103f15760405163ec442f0560e01b81526000600482015260240161034a565b6103fd600083836104d6565b5050565b6001600160a01b03841661042b5760405163e602df0560e01b81526000600482015260240161034a565b6001600160a01b03831661045557604051634a1406b160e11b81526000600482015260240161034a565b6001600160a01b038085166000908152600160209081526040808320938716835292905220829055801561036257826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516104c891815260200190565b60405180910390a350505050565b6001600160a01b0383166105015780600260008282546104f69190610760565b909155506105739050565b6001600160a01b038316600090815260208190526040902054818110156105545760405163391434e360e21b81526001600160a01b0385166004820152602481018290526044810183905260640161034a565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b03821661058f576002805482900390556105ae565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516105f391815260200190565b60405180910390a3505050565b60006020808352835180602085015260005b8181101561062e57858101830151858201604001528201610612565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b038116811461066657600080fd5b919050565b6000806040838503121561067e57600080fd5b6106878361064f565b946020939093013593505050565b6000806000606084860312156106aa57600080fd5b6106b38461064f565b92506106c16020850161064f565b9150604084013590509250925092565b6000602082840312156106e357600080fd5b6106ec8261064f565b9392505050565b6000806040838503121561070657600080fd5b61070f8361064f565b915061071d6020840161064f565b90509250929050565b600181811c9082168061073a57607f821691505b60208210810361075a57634e487b7160e01b600052602260045260246000fd5b50919050565b8082018082111561024557634e487b7160e01b600052601160045260246000fdfea2646970667358221220ce785b9fa3f57c0750e52a5e3341a369bbf561d3f2f975754ada2521ca1fae4764736f6c63430008170033", + "nonce": "0x17", + "accessList": [] + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x918e90f1bffc589d58b38aa3ee58f1cad61b5f16c5eb452c012b812722078740", + "transactionType": "CREATE", + "contractName": "FinthetixStakingContract", + "contractAddress": "0x8474c21a0d8936442D852d1284af5ac922f3eCD8", + "function": null, + "arguments": [ + "0x1308D1d0c4642AaA253276f6641aF8f196925DB7" + ], + "transaction": { + "type": "0x02", + "from": "0x2e4ada956f44298003610315e17c85e24ca89739", + "gas": "0x182cf0", + "value": "0x0", + "data": "0x60c060405260405161001090610075565b604051809103906000f08015801561002c573d6000803e3d6000fd5b506001600160a01b031660a05234801561004557600080fd5b5060405161167938038061167983398101604081905261006491610082565b6001600160a01b03166080526100b2565b610b4680610b3383390190565b60006020828403121561009457600080fd5b81516001600160a01b03811681146100ab57600080fd5b9392505050565b60805160a051610a476100ec600039600081816101be0152610592015260008181610122015281816102da01526104410152610a476000f3fe608060405234801561001057600080fd5b50600436106100cf5760003560e01c8063905497de1161008c578063c7b8981c11610066578063c7b8981c146101b1578063f7c618c1146101b9578063fbdfd37b146101e0578063ffc1d187146101e957600080fd5b8063905497de1461017a5780639fa2f3cd1461018f578063a694fc3a1461019e57600080fd5b80632e17de78146100d45780633165af1e146100e957806362d45b671461010d57806372f702f31461011d57806375507aee1461015c5780638dcfba4614610165575b600080fd5b6100e76100e2366004610945565b6101f2565b005b336000908152600460205260409020545b6040519081526020015b60405180910390f35b6100fa68056bc75e2d6310000081565b6101447f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610104565b6100fa60025481565b336000908152600360205260409020546100fa565b336000908152600560205260409020546100fa565b6100fa6706f05b59d3b2000081565b6100e76101ac366004610945565b610399565b6100e76104ff565b6101447f000000000000000000000000000000000000000000000000000000000000000081565b6100fa60015481565b6100fa60005481565b3361021057604051630702b3d960e41b815260040160405180910390fd5b80806000036102395760405163038a201d60e01b81523360048201526024015b60405180910390fd5b336000908152600360205260409020548281101561027a5760405163e55c807360e01b81523360048201526024810184905260448101829052606401610230565b610282610627565b33600090815260036020526040812080548592906102a1908490610974565b92505081905550826000808282546102b99190610974565b909155505060405163a9059cbb60e01b8152336004820152602481018490527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063a9059cbb906044016020604051808303816000875af115801561032b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061034f919061098d565b50336000818152600360209081526040918290205491519182527fcddd3be660b4706b208689495b1470f67e1f53d4c62e36817301dd403e9d7bb6910160405180910390a2505050565b336103b757604051630702b3d960e41b815260040160405180910390fd5b80806000036103db5760405163038a201d60e01b8152336004820152602401610230565b6103e3610627565b33600090815260036020526040812080548492906104029084906109af565b925050819055508160008082825461041a91906109af565b90915550506040516323b872dd60e01b8152336004820152306024820152604481018390527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906323b872dd906064016020604051808303816000875af1158015610492573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104b6919061098d565b50336000818152600360209081526040918290205491519182527fcddd3be660b4706b208689495b1470f67e1f53d4c62e36817301dd403e9d7bb6910160405180910390a25050565b3361051d57604051630702b3d960e41b815260040160405180910390fd5b610525610627565b33600090815260046020526040812054908190036105585760405163c781471360e01b8152336004820152602401610230565b3360008181526004602081905260408083209290925590516340c10f1960e01b815290810191909152602481018290526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906340c10f1990604401600060405180830381600087803b1580156105d657600080fd5b505af11580156105ea573d6000803e3d6000fd5b5050604051600081523392507f60bbff26d658c4e93ffa8398e3d4018ae055a98a86be2586a865f04a3b97a351915060200160405180910390a250565b61062f610704565b6002600082825461064091906109af565b90915550506002546040519081527f4427a727232fad41b1e8eae5c814479909622b735af63ab126e4655c84d789bf9060200160405180910390a161068361077e565b33600090815260046020526040812080549091906106a29084906109af565b9091555050336000818152600460209081526040918290205491519182527f60bbff26d658c4e93ffa8398e3d4018ae055a98a86be2586a865f04a3b97a351910160405180910390a24260015560025433600090815260056020526040902055565b600080546000036107155750600090565b600068056bc75e2d631000006001544261072f9190610974565b61073991906109c2565b905060005481101561076b5760015460405163629a1e8560e01b81524260048201526024810191909152604401610230565b60005461077890826109ef565b91505090565b3360009081526003602052604081205481806107a2836706f05b59d3b20000610835565b91509150816107fb5760006107c9846706f05b59d3b2000068056bc75e2d63100000610880565b336000908152600560205260409020546002549192506107e891610974565b6107f290826109c2565b94505050505090565b3360009081526005602052604090205460025461082d91839161081e9190610974565b68056bc75e2d63100000610880565b935050505090565b6000808360000361084c5750600190506000610879565b8383028385828161085f5761085f6109d9565b0414610872576000809250925050610879565b6001925090505b9250929050565b60008383028160001985870982811083820303915050806000036108b7578382816108ad576108ad6109d9565b049250505061093e565b8084116108d75760405163227bc15360e01b815260040160405180910390fd5b6000848688096000868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150505b9392505050565b60006020828403121561095757600080fd5b5035919050565b634e487b7160e01b600052601160045260246000fd5b818103818111156109875761098761095e565b92915050565b60006020828403121561099f57600080fd5b8151801515811461093e57600080fd5b808201808211156109875761098761095e565b80820281158282048414176109875761098761095e565b634e487b7160e01b600052601260045260246000fd5b600082610a0c57634e487b7160e01b600052601260045260246000fd5b50049056fea2646970667358221220babf0510a16a509ac9fc6843b11377a8029156b048b52bcee4692b91a194950a64736f6c63430008170033608060405234801561001057600080fd5b50336040518060400160405280601481526020017f46696e746865746978526577617264546f6b656e0000000000000000000000008152506040518060400160405280600381526020016211949560ea1b815250816003908161007391906101b3565b50600461008082826101b3565b5050506001600160a01b0381166100b157604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b6100ba816100c0565b50610272565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b634e487b7160e01b600052604160045260246000fd5b600181811c9082168061013c57607f821691505b60208210810361015c57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156101ae576000816000526020600020601f850160051c8101602086101561018b5750805b601f850160051c820191505b818110156101aa57828155600101610197565b5050505b505050565b81516001600160401b038111156101cc576101cc610112565b6101e0816101da8454610128565b84610162565b602080601f83116001811461021557600084156101fd5750858301515b600019600386901b1c1916600185901b1785556101aa565b600085815260208120601f198616915b8281101561024457888601518255948401946001909101908401610225565b50858210156102625787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6108c5806102816000396000f3fe608060405234801561001057600080fd5b50600436106100cf5760003560e01c806370a082311161008c57806395d89b411161006657806395d89b41146101aa578063a9059cbb146101b2578063dd62ed3e146101c5578063f2fde38b146101fe57600080fd5b806370a082311461015e578063715018a6146101875780638da5cb5b1461018f57600080fd5b806306fdde03146100d4578063095ea7b3146100f257806318160ddd1461011557806323b872dd14610127578063313ce5671461013a57806340c10f1914610149575b600080fd5b6100dc610211565b6040516100e9919061070e565b60405180910390f35b610105610100366004610779565b6102a3565b60405190151581526020016100e9565b6002545b6040519081526020016100e9565b6101056101353660046107a3565b6102bd565b604051601281526020016100e9565b61015c610157366004610779565b6102e1565b005b61011961016c3660046107df565b6001600160a01b031660009081526020819052604090205490565b61015c6102f7565b6005546040516001600160a01b0390911681526020016100e9565b6100dc61030b565b6101056101c0366004610779565b61031a565b6101196101d3366004610801565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b61015c61020c3660046107df565b610328565b60606003805461022090610834565b80601f016020809104026020016040519081016040528092919081815260200182805461024c90610834565b80156102995780601f1061026e57610100808354040283529160200191610299565b820191906000526020600020905b81548152906001019060200180831161027c57829003601f168201915b5050505050905090565b6000336102b181858561036b565b60019150505b92915050565b6000336102cb85828561037d565b6102d68585856103fb565b506001949350505050565b6102e961045a565b6102f38282610487565b5050565b6102ff61045a565b61030960006104bd565b565b60606004805461022090610834565b6000336102b18185856103fb565b61033061045a565b6001600160a01b03811661035f57604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b610368816104bd565b50565b610378838383600161050f565b505050565b6001600160a01b0383811660009081526001602090815260408083209386168352929052205460001981146103f557818110156103e657604051637dc7a0d960e11b81526001600160a01b03841660048201526024810182905260448101839052606401610356565b6103f58484848403600061050f565b50505050565b6001600160a01b03831661042557604051634b637e8f60e11b815260006004820152602401610356565b6001600160a01b03821661044f5760405163ec442f0560e01b815260006004820152602401610356565b6103788383836105e4565b6005546001600160a01b031633146103095760405163118cdaa760e01b8152336004820152602401610356565b6001600160a01b0382166104b15760405163ec442f0560e01b815260006004820152602401610356565b6102f3600083836105e4565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b0384166105395760405163e602df0560e01b815260006004820152602401610356565b6001600160a01b03831661056357604051634a1406b160e11b815260006004820152602401610356565b6001600160a01b03808516600090815260016020908152604080832093871683529290522082905580156103f557826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516105d691815260200190565b60405180910390a350505050565b6001600160a01b03831661060f578060026000828254610604919061086e565b909155506106819050565b6001600160a01b038316600090815260208190526040902054818110156106625760405163391434e360e21b81526001600160a01b03851660048201526024810182905260448101839052606401610356565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b03821661069d576002805482900390556106bc565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161070191815260200190565b60405180910390a3505050565b60006020808352835180602085015260005b8181101561073c57858101830151858201604001528201610720565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b038116811461077457600080fd5b919050565b6000806040838503121561078c57600080fd5b6107958361075d565b946020939093013593505050565b6000806000606084860312156107b857600080fd5b6107c18461075d565b92506107cf6020850161075d565b9150604084013590509250925092565b6000602082840312156107f157600080fd5b6107fa8261075d565b9392505050565b6000806040838503121561081457600080fd5b61081d8361075d565b915061082b6020840161075d565b90509250929050565b600181811c9082168061084857607f821691505b60208210810361086857634e487b7160e01b600052602260045260246000fd5b50919050565b808201808211156102b757634e487b7160e01b600052601160045260246000fdfea26469706673582212206486d64809e8c3182e81c5a8c6e0b5988d6b150892711b3b5f6cd92861b40fe164736f6c634300081700330000000000000000000000001308d1d0c4642aaa253276f6641af8f196925db7", + "nonce": "0x18", + "accessList": [] + }, + "additionalContracts": [ + { + "transactionType": "CREATE", + "address": "0x2A29AfdF7c14Ae5b0821B9A998508abe929e5999", + "initCode": "0x608060405234801561001057600080fd5b50336040518060400160405280601481526020017f46696e746865746978526577617264546f6b656e0000000000000000000000008152506040518060400160405280600381526020016211949560ea1b815250816003908161007391906101b3565b50600461008082826101b3565b5050506001600160a01b0381166100b157604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b6100ba816100c0565b50610272565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b634e487b7160e01b600052604160045260246000fd5b600181811c9082168061013c57607f821691505b60208210810361015c57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156101ae576000816000526020600020601f850160051c8101602086101561018b5750805b601f850160051c820191505b818110156101aa57828155600101610197565b5050505b505050565b81516001600160401b038111156101cc576101cc610112565b6101e0816101da8454610128565b84610162565b602080601f83116001811461021557600084156101fd5750858301515b600019600386901b1c1916600185901b1785556101aa565b600085815260208120601f198616915b8281101561024457888601518255948401946001909101908401610225565b50858210156102625787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6108c5806102816000396000f3fe608060405234801561001057600080fd5b50600436106100cf5760003560e01c806370a082311161008c57806395d89b411161006657806395d89b41146101aa578063a9059cbb146101b2578063dd62ed3e146101c5578063f2fde38b146101fe57600080fd5b806370a082311461015e578063715018a6146101875780638da5cb5b1461018f57600080fd5b806306fdde03146100d4578063095ea7b3146100f257806318160ddd1461011557806323b872dd14610127578063313ce5671461013a57806340c10f1914610149575b600080fd5b6100dc610211565b6040516100e9919061070e565b60405180910390f35b610105610100366004610779565b6102a3565b60405190151581526020016100e9565b6002545b6040519081526020016100e9565b6101056101353660046107a3565b6102bd565b604051601281526020016100e9565b61015c610157366004610779565b6102e1565b005b61011961016c3660046107df565b6001600160a01b031660009081526020819052604090205490565b61015c6102f7565b6005546040516001600160a01b0390911681526020016100e9565b6100dc61030b565b6101056101c0366004610779565b61031a565b6101196101d3366004610801565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b61015c61020c3660046107df565b610328565b60606003805461022090610834565b80601f016020809104026020016040519081016040528092919081815260200182805461024c90610834565b80156102995780601f1061026e57610100808354040283529160200191610299565b820191906000526020600020905b81548152906001019060200180831161027c57829003601f168201915b5050505050905090565b6000336102b181858561036b565b60019150505b92915050565b6000336102cb85828561037d565b6102d68585856103fb565b506001949350505050565b6102e961045a565b6102f38282610487565b5050565b6102ff61045a565b61030960006104bd565b565b60606004805461022090610834565b6000336102b18185856103fb565b61033061045a565b6001600160a01b03811661035f57604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b610368816104bd565b50565b610378838383600161050f565b505050565b6001600160a01b0383811660009081526001602090815260408083209386168352929052205460001981146103f557818110156103e657604051637dc7a0d960e11b81526001600160a01b03841660048201526024810182905260448101839052606401610356565b6103f58484848403600061050f565b50505050565b6001600160a01b03831661042557604051634b637e8f60e11b815260006004820152602401610356565b6001600160a01b03821661044f5760405163ec442f0560e01b815260006004820152602401610356565b6103788383836105e4565b6005546001600160a01b031633146103095760405163118cdaa760e01b8152336004820152602401610356565b6001600160a01b0382166104b15760405163ec442f0560e01b815260006004820152602401610356565b6102f3600083836105e4565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b0384166105395760405163e602df0560e01b815260006004820152602401610356565b6001600160a01b03831661056357604051634a1406b160e11b815260006004820152602401610356565b6001600160a01b03808516600090815260016020908152604080832093871683529290522082905580156103f557826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516105d691815260200190565b60405180910390a350505050565b6001600160a01b03831661060f578060026000828254610604919061086e565b909155506106819050565b6001600160a01b038316600090815260208190526040902054818110156106625760405163391434e360e21b81526001600160a01b03851660048201526024810182905260448101839052606401610356565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b03821661069d576002805482900390556106bc565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161070191815260200190565b60405180910390a3505050565b60006020808352835180602085015260005b8181101561073c57858101830151858201604001528201610720565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b038116811461077457600080fd5b919050565b6000806040838503121561078c57600080fd5b6107958361075d565b946020939093013593505050565b6000806000606084860312156107b857600080fd5b6107c18461075d565b92506107cf6020850161075d565b9150604084013590509250925092565b6000602082840312156107f157600080fd5b6107fa8261075d565b9392505050565b6000806040838503121561081457600080fd5b61081d8361075d565b915061082b6020840161075d565b90509250929050565b600181811c9082168061084857607f821691505b60208210810361086857634e487b7160e01b600052602260045260246000fd5b50919050565b808201808211156102b757634e487b7160e01b600052601160045260246000fdfea26469706673582212206486d64809e8c3182e81c5a8c6e0b5988d6b150892711b3b5f6cd92861b40fe164736f6c63430008170033" + } + ], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "transactionHash": "0x25b612979dcca889063177822ed6b15415998c3015449974a2e3d12b43be8d01", + "transactionIndex": "0x51", + "blockHash": "0x31adcbea311e625fbab95515761f51b99157f3b93b9b699bd3982adc05afe7f0", + "blockNumber": "0x54a9ac", + "from": "0x2e4aDA956F44298003610315e17C85E24ca89739", + "to": null, + "cumulativeGasUsed": "0x224654", + "gasUsed": "0x81ea3", + "contractAddress": "0x1308D1d0c4642AaA253276f6641aF8f196925DB7", + "logs": [], + "status": "0x1", + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "effectiveGasPrice": "0xb2d8834c" + }, + { + "transactionHash": "0x918e90f1bffc589d58b38aa3ee58f1cad61b5f16c5eb452c012b812722078740", + "transactionIndex": "0x52", + "blockHash": "0x31adcbea311e625fbab95515761f51b99157f3b93b9b699bd3982adc05afe7f0", + "blockNumber": "0x54a9ac", + "from": "0x2e4aDA956F44298003610315e17C85E24ca89739", + "to": null, + "cumulativeGasUsed": "0x34e12d", + "gasUsed": "0x129ad9", + "contractAddress": "0x8474c21a0d8936442D852d1284af5ac922f3eCD8", + "logs": [ + { + "address": "0x2A29AfdF7c14Ae5b0821B9A998508abe929e5999", + "topics": [ + "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000008474c21a0d8936442d852d1284af5ac922f3ecd8" + ], + "data": "0x", + "blockHash": "0x31adcbea311e625fbab95515761f51b99157f3b93b9b699bd3982adc05afe7f0", + "blockNumber": "0x54a9ac", + "transactionHash": "0x918e90f1bffc589d58b38aa3ee58f1cad61b5f16c5eb452c012b812722078740", + "transactionIndex": "0x52", + "logIndex": "0x1", + "removed": false + } + ], + "status": "0x1", + "logsBloom": "0x00000000000400000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000040000000000000001000000000000000000000001000000000000200000000000000000000000020000000000000000000800000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004020002000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "effectiveGasPrice": "0xb2d8834c" + } + ], + "libraries": [], + "pending": [], + "returns": { + "stakingTokenAddr": { + "internal_type": "address", + "value": "0x1308D1d0c4642AaA253276f6641aF8f196925DB7" + }, + "stakingContractAddr": { + "internal_type": "address", + "value": "0x8474c21a0d8936442D852d1284af5ac922f3eCD8" + }, + "rewardTokenAddr": { + "internal_type": "address", + "value": "0x2A29AfdF7c14Ae5b0821B9A998508abe929e5999" + } + }, + "timestamp": 1711247803, + "chain": 11155111, + "multi": false, + "commit": "b8ab18b" +} \ No newline at end of file diff --git a/contracts/broadcast/01_Deploy.s.sol/11155111/run-1711247866.json b/contracts/broadcast/01_Deploy.s.sol/11155111/run-1711247866.json new file mode 100644 index 0000000..cc5c913 --- /dev/null +++ b/contracts/broadcast/01_Deploy.s.sol/11155111/run-1711247866.json @@ -0,0 +1,120 @@ +{ + "transactions": [ + { + "hash": "0x25b612979dcca889063177822ed6b15415998c3015449974a2e3d12b43be8d01", + "transactionType": "CREATE", + "contractName": "FinthetixStakingToken", + "contractAddress": "0x1308D1d0c4642AaA253276f6641aF8f196925DB7", + "function": null, + "arguments": null, + "transaction": { + "type": "0x02", + "from": "0x2e4ada956f44298003610315e17c85e24ca89739", + "gas": "0xa8d6f", + "value": "0x0", + "data": "0x608060405234801561001057600080fd5b506040518060400160405280601581526020017f46696e7468657469785374616b696e67546f6b656e0000000000000000000000815250604051806040016040528060038152602001621194d560ea1b81525081600390816100729190610128565b50600461007f8282610128565b5050506101e7565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806100b157607f821691505b6020821081036100d157634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115610123576000816000526020600020601f850160051c810160208610156101005750805b601f850160051c820191505b8181101561011f5782815560010161010c565b5050505b505050565b81516001600160401b0381111561014157610141610087565b6101558161014f845461009d565b846100d7565b602080601f83116001811461018a57600084156101725750858301515b600019600386901b1c1916600185901b17855561011f565b600085815260208120601f198616915b828110156101b95788860151825594840194600190910190840161019a565b50858210156101d75787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6107b7806101f66000396000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c806370a082311161006657806370a082311461011857806395d89b4114610141578063a9059cbb14610149578063cea265441461015c578063dd62ed3e1461016657600080fd5b806306fdde03146100a3578063095ea7b3146100c157806318160ddd146100e457806323b872dd146100f6578063313ce56714610109575b600080fd5b6100ab61019f565b6040516100b89190610600565b60405180910390f35b6100d46100cf36600461066b565b610231565b60405190151581526020016100b8565b6002545b6040519081526020016100b8565b6100d4610104366004610695565b61024b565b604051601281526020016100b8565b6100e86101263660046106d1565b6001600160a01b031660009081526020819052604090205490565b6100ab61026f565b6100d461015736600461066b565b61027e565b61016461028c565b005b6100e86101743660046106f3565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6060600380546101ae90610726565b80601f01602080910402602001604051908101604052809291908181526020018280546101da90610726565b80156102275780601f106101fc57610100808354040283529160200191610227565b820191906000526020600020905b81548152906001019060200180831161020a57829003601f168201915b5050505050905090565b60003361023f8185856102d3565b60019150505b92915050565b6000336102598582856102e5565b610264858585610368565b506001949350505050565b6060600480546101ae90610726565b60003361023f818585610368565b61029e33674563918244f400006103c7565b6040513381527f7ccf505540043a893f416e2e7f2b62d967254fb031524e626d82fcfa70b89d609060200160405180910390a1565b6102e08383836001610401565b505050565b6001600160a01b038381166000908152600160209081526040808320938616835292905220546000198114610362578181101561035357604051637dc7a0d960e11b81526001600160a01b038416600482015260248101829052604481018390526064015b60405180910390fd5b61036284848484036000610401565b50505050565b6001600160a01b03831661039257604051634b637e8f60e11b81526000600482015260240161034a565b6001600160a01b0382166103bc5760405163ec442f0560e01b81526000600482015260240161034a565b6102e08383836104d6565b6001600160a01b0382166103f15760405163ec442f0560e01b81526000600482015260240161034a565b6103fd600083836104d6565b5050565b6001600160a01b03841661042b5760405163e602df0560e01b81526000600482015260240161034a565b6001600160a01b03831661045557604051634a1406b160e11b81526000600482015260240161034a565b6001600160a01b038085166000908152600160209081526040808320938716835292905220829055801561036257826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516104c891815260200190565b60405180910390a350505050565b6001600160a01b0383166105015780600260008282546104f69190610760565b909155506105739050565b6001600160a01b038316600090815260208190526040902054818110156105545760405163391434e360e21b81526001600160a01b0385166004820152602481018290526044810183905260640161034a565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b03821661058f576002805482900390556105ae565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516105f391815260200190565b60405180910390a3505050565b60006020808352835180602085015260005b8181101561062e57858101830151858201604001528201610612565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b038116811461066657600080fd5b919050565b6000806040838503121561067e57600080fd5b6106878361064f565b946020939093013593505050565b6000806000606084860312156106aa57600080fd5b6106b38461064f565b92506106c16020850161064f565b9150604084013590509250925092565b6000602082840312156106e357600080fd5b6106ec8261064f565b9392505050565b6000806040838503121561070657600080fd5b61070f8361064f565b915061071d6020840161064f565b90509250929050565b600181811c9082168061073a57607f821691505b60208210810361075a57634e487b7160e01b600052602260045260246000fd5b50919050565b8082018082111561024557634e487b7160e01b600052601160045260246000fdfea2646970667358221220ce785b9fa3f57c0750e52a5e3341a369bbf561d3f2f975754ada2521ca1fae4764736f6c63430008170033", + "nonce": "0x17", + "accessList": [] + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x918e90f1bffc589d58b38aa3ee58f1cad61b5f16c5eb452c012b812722078740", + "transactionType": "CREATE", + "contractName": "FinthetixStakingContract", + "contractAddress": "0x8474c21a0d8936442D852d1284af5ac922f3eCD8", + "function": null, + "arguments": [ + "0x1308D1d0c4642AaA253276f6641aF8f196925DB7" + ], + "transaction": { + "type": "0x02", + "from": "0x2e4ada956f44298003610315e17c85e24ca89739", + "gas": "0x182cf0", + "value": "0x0", + "data": "0x60c060405260405161001090610075565b604051809103906000f08015801561002c573d6000803e3d6000fd5b506001600160a01b031660a05234801561004557600080fd5b5060405161167938038061167983398101604081905261006491610082565b6001600160a01b03166080526100b2565b610b4680610b3383390190565b60006020828403121561009457600080fd5b81516001600160a01b03811681146100ab57600080fd5b9392505050565b60805160a051610a476100ec600039600081816101be0152610592015260008181610122015281816102da01526104410152610a476000f3fe608060405234801561001057600080fd5b50600436106100cf5760003560e01c8063905497de1161008c578063c7b8981c11610066578063c7b8981c146101b1578063f7c618c1146101b9578063fbdfd37b146101e0578063ffc1d187146101e957600080fd5b8063905497de1461017a5780639fa2f3cd1461018f578063a694fc3a1461019e57600080fd5b80632e17de78146100d45780633165af1e146100e957806362d45b671461010d57806372f702f31461011d57806375507aee1461015c5780638dcfba4614610165575b600080fd5b6100e76100e2366004610945565b6101f2565b005b336000908152600460205260409020545b6040519081526020015b60405180910390f35b6100fa68056bc75e2d6310000081565b6101447f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610104565b6100fa60025481565b336000908152600360205260409020546100fa565b336000908152600560205260409020546100fa565b6100fa6706f05b59d3b2000081565b6100e76101ac366004610945565b610399565b6100e76104ff565b6101447f000000000000000000000000000000000000000000000000000000000000000081565b6100fa60015481565b6100fa60005481565b3361021057604051630702b3d960e41b815260040160405180910390fd5b80806000036102395760405163038a201d60e01b81523360048201526024015b60405180910390fd5b336000908152600360205260409020548281101561027a5760405163e55c807360e01b81523360048201526024810184905260448101829052606401610230565b610282610627565b33600090815260036020526040812080548592906102a1908490610974565b92505081905550826000808282546102b99190610974565b909155505060405163a9059cbb60e01b8152336004820152602481018490527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063a9059cbb906044016020604051808303816000875af115801561032b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061034f919061098d565b50336000818152600360209081526040918290205491519182527fcddd3be660b4706b208689495b1470f67e1f53d4c62e36817301dd403e9d7bb6910160405180910390a2505050565b336103b757604051630702b3d960e41b815260040160405180910390fd5b80806000036103db5760405163038a201d60e01b8152336004820152602401610230565b6103e3610627565b33600090815260036020526040812080548492906104029084906109af565b925050819055508160008082825461041a91906109af565b90915550506040516323b872dd60e01b8152336004820152306024820152604481018390527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906323b872dd906064016020604051808303816000875af1158015610492573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104b6919061098d565b50336000818152600360209081526040918290205491519182527fcddd3be660b4706b208689495b1470f67e1f53d4c62e36817301dd403e9d7bb6910160405180910390a25050565b3361051d57604051630702b3d960e41b815260040160405180910390fd5b610525610627565b33600090815260046020526040812054908190036105585760405163c781471360e01b8152336004820152602401610230565b3360008181526004602081905260408083209290925590516340c10f1960e01b815290810191909152602481018290526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906340c10f1990604401600060405180830381600087803b1580156105d657600080fd5b505af11580156105ea573d6000803e3d6000fd5b5050604051600081523392507f60bbff26d658c4e93ffa8398e3d4018ae055a98a86be2586a865f04a3b97a351915060200160405180910390a250565b61062f610704565b6002600082825461064091906109af565b90915550506002546040519081527f4427a727232fad41b1e8eae5c814479909622b735af63ab126e4655c84d789bf9060200160405180910390a161068361077e565b33600090815260046020526040812080549091906106a29084906109af565b9091555050336000818152600460209081526040918290205491519182527f60bbff26d658c4e93ffa8398e3d4018ae055a98a86be2586a865f04a3b97a351910160405180910390a24260015560025433600090815260056020526040902055565b600080546000036107155750600090565b600068056bc75e2d631000006001544261072f9190610974565b61073991906109c2565b905060005481101561076b5760015460405163629a1e8560e01b81524260048201526024810191909152604401610230565b60005461077890826109ef565b91505090565b3360009081526003602052604081205481806107a2836706f05b59d3b20000610835565b91509150816107fb5760006107c9846706f05b59d3b2000068056bc75e2d63100000610880565b336000908152600560205260409020546002549192506107e891610974565b6107f290826109c2565b94505050505090565b3360009081526005602052604090205460025461082d91839161081e9190610974565b68056bc75e2d63100000610880565b935050505090565b6000808360000361084c5750600190506000610879565b8383028385828161085f5761085f6109d9565b0414610872576000809250925050610879565b6001925090505b9250929050565b60008383028160001985870982811083820303915050806000036108b7578382816108ad576108ad6109d9565b049250505061093e565b8084116108d75760405163227bc15360e01b815260040160405180910390fd5b6000848688096000868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150505b9392505050565b60006020828403121561095757600080fd5b5035919050565b634e487b7160e01b600052601160045260246000fd5b818103818111156109875761098761095e565b92915050565b60006020828403121561099f57600080fd5b8151801515811461093e57600080fd5b808201808211156109875761098761095e565b80820281158282048414176109875761098761095e565b634e487b7160e01b600052601260045260246000fd5b600082610a0c57634e487b7160e01b600052601260045260246000fd5b50049056fea2646970667358221220babf0510a16a509ac9fc6843b11377a8029156b048b52bcee4692b91a194950a64736f6c63430008170033608060405234801561001057600080fd5b50336040518060400160405280601481526020017f46696e746865746978526577617264546f6b656e0000000000000000000000008152506040518060400160405280600381526020016211949560ea1b815250816003908161007391906101b3565b50600461008082826101b3565b5050506001600160a01b0381166100b157604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b6100ba816100c0565b50610272565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b634e487b7160e01b600052604160045260246000fd5b600181811c9082168061013c57607f821691505b60208210810361015c57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156101ae576000816000526020600020601f850160051c8101602086101561018b5750805b601f850160051c820191505b818110156101aa57828155600101610197565b5050505b505050565b81516001600160401b038111156101cc576101cc610112565b6101e0816101da8454610128565b84610162565b602080601f83116001811461021557600084156101fd5750858301515b600019600386901b1c1916600185901b1785556101aa565b600085815260208120601f198616915b8281101561024457888601518255948401946001909101908401610225565b50858210156102625787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6108c5806102816000396000f3fe608060405234801561001057600080fd5b50600436106100cf5760003560e01c806370a082311161008c57806395d89b411161006657806395d89b41146101aa578063a9059cbb146101b2578063dd62ed3e146101c5578063f2fde38b146101fe57600080fd5b806370a082311461015e578063715018a6146101875780638da5cb5b1461018f57600080fd5b806306fdde03146100d4578063095ea7b3146100f257806318160ddd1461011557806323b872dd14610127578063313ce5671461013a57806340c10f1914610149575b600080fd5b6100dc610211565b6040516100e9919061070e565b60405180910390f35b610105610100366004610779565b6102a3565b60405190151581526020016100e9565b6002545b6040519081526020016100e9565b6101056101353660046107a3565b6102bd565b604051601281526020016100e9565b61015c610157366004610779565b6102e1565b005b61011961016c3660046107df565b6001600160a01b031660009081526020819052604090205490565b61015c6102f7565b6005546040516001600160a01b0390911681526020016100e9565b6100dc61030b565b6101056101c0366004610779565b61031a565b6101196101d3366004610801565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b61015c61020c3660046107df565b610328565b60606003805461022090610834565b80601f016020809104026020016040519081016040528092919081815260200182805461024c90610834565b80156102995780601f1061026e57610100808354040283529160200191610299565b820191906000526020600020905b81548152906001019060200180831161027c57829003601f168201915b5050505050905090565b6000336102b181858561036b565b60019150505b92915050565b6000336102cb85828561037d565b6102d68585856103fb565b506001949350505050565b6102e961045a565b6102f38282610487565b5050565b6102ff61045a565b61030960006104bd565b565b60606004805461022090610834565b6000336102b18185856103fb565b61033061045a565b6001600160a01b03811661035f57604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b610368816104bd565b50565b610378838383600161050f565b505050565b6001600160a01b0383811660009081526001602090815260408083209386168352929052205460001981146103f557818110156103e657604051637dc7a0d960e11b81526001600160a01b03841660048201526024810182905260448101839052606401610356565b6103f58484848403600061050f565b50505050565b6001600160a01b03831661042557604051634b637e8f60e11b815260006004820152602401610356565b6001600160a01b03821661044f5760405163ec442f0560e01b815260006004820152602401610356565b6103788383836105e4565b6005546001600160a01b031633146103095760405163118cdaa760e01b8152336004820152602401610356565b6001600160a01b0382166104b15760405163ec442f0560e01b815260006004820152602401610356565b6102f3600083836105e4565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b0384166105395760405163e602df0560e01b815260006004820152602401610356565b6001600160a01b03831661056357604051634a1406b160e11b815260006004820152602401610356565b6001600160a01b03808516600090815260016020908152604080832093871683529290522082905580156103f557826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516105d691815260200190565b60405180910390a350505050565b6001600160a01b03831661060f578060026000828254610604919061086e565b909155506106819050565b6001600160a01b038316600090815260208190526040902054818110156106625760405163391434e360e21b81526001600160a01b03851660048201526024810182905260448101839052606401610356565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b03821661069d576002805482900390556106bc565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161070191815260200190565b60405180910390a3505050565b60006020808352835180602085015260005b8181101561073c57858101830151858201604001528201610720565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b038116811461077457600080fd5b919050565b6000806040838503121561078c57600080fd5b6107958361075d565b946020939093013593505050565b6000806000606084860312156107b857600080fd5b6107c18461075d565b92506107cf6020850161075d565b9150604084013590509250925092565b6000602082840312156107f157600080fd5b6107fa8261075d565b9392505050565b6000806040838503121561081457600080fd5b61081d8361075d565b915061082b6020840161075d565b90509250929050565b600181811c9082168061084857607f821691505b60208210810361086857634e487b7160e01b600052602260045260246000fd5b50919050565b808201808211156102b757634e487b7160e01b600052601160045260246000fdfea26469706673582212206486d64809e8c3182e81c5a8c6e0b5988d6b150892711b3b5f6cd92861b40fe164736f6c634300081700330000000000000000000000001308d1d0c4642aaa253276f6641af8f196925db7", + "nonce": "0x18", + "accessList": [] + }, + "additionalContracts": [ + { + "transactionType": "CREATE", + "address": "0x2A29AfdF7c14Ae5b0821B9A998508abe929e5999", + "initCode": "0x608060405234801561001057600080fd5b50336040518060400160405280601481526020017f46696e746865746978526577617264546f6b656e0000000000000000000000008152506040518060400160405280600381526020016211949560ea1b815250816003908161007391906101b3565b50600461008082826101b3565b5050506001600160a01b0381166100b157604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b6100ba816100c0565b50610272565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b634e487b7160e01b600052604160045260246000fd5b600181811c9082168061013c57607f821691505b60208210810361015c57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156101ae576000816000526020600020601f850160051c8101602086101561018b5750805b601f850160051c820191505b818110156101aa57828155600101610197565b5050505b505050565b81516001600160401b038111156101cc576101cc610112565b6101e0816101da8454610128565b84610162565b602080601f83116001811461021557600084156101fd5750858301515b600019600386901b1c1916600185901b1785556101aa565b600085815260208120601f198616915b8281101561024457888601518255948401946001909101908401610225565b50858210156102625787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6108c5806102816000396000f3fe608060405234801561001057600080fd5b50600436106100cf5760003560e01c806370a082311161008c57806395d89b411161006657806395d89b41146101aa578063a9059cbb146101b2578063dd62ed3e146101c5578063f2fde38b146101fe57600080fd5b806370a082311461015e578063715018a6146101875780638da5cb5b1461018f57600080fd5b806306fdde03146100d4578063095ea7b3146100f257806318160ddd1461011557806323b872dd14610127578063313ce5671461013a57806340c10f1914610149575b600080fd5b6100dc610211565b6040516100e9919061070e565b60405180910390f35b610105610100366004610779565b6102a3565b60405190151581526020016100e9565b6002545b6040519081526020016100e9565b6101056101353660046107a3565b6102bd565b604051601281526020016100e9565b61015c610157366004610779565b6102e1565b005b61011961016c3660046107df565b6001600160a01b031660009081526020819052604090205490565b61015c6102f7565b6005546040516001600160a01b0390911681526020016100e9565b6100dc61030b565b6101056101c0366004610779565b61031a565b6101196101d3366004610801565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b61015c61020c3660046107df565b610328565b60606003805461022090610834565b80601f016020809104026020016040519081016040528092919081815260200182805461024c90610834565b80156102995780601f1061026e57610100808354040283529160200191610299565b820191906000526020600020905b81548152906001019060200180831161027c57829003601f168201915b5050505050905090565b6000336102b181858561036b565b60019150505b92915050565b6000336102cb85828561037d565b6102d68585856103fb565b506001949350505050565b6102e961045a565b6102f38282610487565b5050565b6102ff61045a565b61030960006104bd565b565b60606004805461022090610834565b6000336102b18185856103fb565b61033061045a565b6001600160a01b03811661035f57604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b610368816104bd565b50565b610378838383600161050f565b505050565b6001600160a01b0383811660009081526001602090815260408083209386168352929052205460001981146103f557818110156103e657604051637dc7a0d960e11b81526001600160a01b03841660048201526024810182905260448101839052606401610356565b6103f58484848403600061050f565b50505050565b6001600160a01b03831661042557604051634b637e8f60e11b815260006004820152602401610356565b6001600160a01b03821661044f5760405163ec442f0560e01b815260006004820152602401610356565b6103788383836105e4565b6005546001600160a01b031633146103095760405163118cdaa760e01b8152336004820152602401610356565b6001600160a01b0382166104b15760405163ec442f0560e01b815260006004820152602401610356565b6102f3600083836105e4565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b0384166105395760405163e602df0560e01b815260006004820152602401610356565b6001600160a01b03831661056357604051634a1406b160e11b815260006004820152602401610356565b6001600160a01b03808516600090815260016020908152604080832093871683529290522082905580156103f557826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516105d691815260200190565b60405180910390a350505050565b6001600160a01b03831661060f578060026000828254610604919061086e565b909155506106819050565b6001600160a01b038316600090815260208190526040902054818110156106625760405163391434e360e21b81526001600160a01b03851660048201526024810182905260448101839052606401610356565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b03821661069d576002805482900390556106bc565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161070191815260200190565b60405180910390a3505050565b60006020808352835180602085015260005b8181101561073c57858101830151858201604001528201610720565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b038116811461077457600080fd5b919050565b6000806040838503121561078c57600080fd5b6107958361075d565b946020939093013593505050565b6000806000606084860312156107b857600080fd5b6107c18461075d565b92506107cf6020850161075d565b9150604084013590509250925092565b6000602082840312156107f157600080fd5b6107fa8261075d565b9392505050565b6000806040838503121561081457600080fd5b61081d8361075d565b915061082b6020840161075d565b90509250929050565b600181811c9082168061084857607f821691505b60208210810361086857634e487b7160e01b600052602260045260246000fd5b50919050565b808201808211156102b757634e487b7160e01b600052601160045260246000fdfea26469706673582212206486d64809e8c3182e81c5a8c6e0b5988d6b150892711b3b5f6cd92861b40fe164736f6c63430008170033" + } + ], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "transactionHash": "0x25b612979dcca889063177822ed6b15415998c3015449974a2e3d12b43be8d01", + "transactionIndex": "0x51", + "blockHash": "0x31adcbea311e625fbab95515761f51b99157f3b93b9b699bd3982adc05afe7f0", + "blockNumber": "0x54a9ac", + "from": "0x2e4aDA956F44298003610315e17C85E24ca89739", + "to": null, + "cumulativeGasUsed": "0x224654", + "gasUsed": "0x81ea3", + "contractAddress": "0x1308D1d0c4642AaA253276f6641aF8f196925DB7", + "logs": [], + "status": "0x1", + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "effectiveGasPrice": "0xb2d8834c" + }, + { + "transactionHash": "0x918e90f1bffc589d58b38aa3ee58f1cad61b5f16c5eb452c012b812722078740", + "transactionIndex": "0x52", + "blockHash": "0x31adcbea311e625fbab95515761f51b99157f3b93b9b699bd3982adc05afe7f0", + "blockNumber": "0x54a9ac", + "from": "0x2e4aDA956F44298003610315e17C85E24ca89739", + "to": null, + "cumulativeGasUsed": "0x34e12d", + "gasUsed": "0x129ad9", + "contractAddress": "0x8474c21a0d8936442D852d1284af5ac922f3eCD8", + "logs": [ + { + "address": "0x2A29AfdF7c14Ae5b0821B9A998508abe929e5999", + "topics": [ + "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000008474c21a0d8936442d852d1284af5ac922f3ecd8" + ], + "data": "0x", + "blockHash": "0x31adcbea311e625fbab95515761f51b99157f3b93b9b699bd3982adc05afe7f0", + "blockNumber": "0x54a9ac", + "transactionHash": "0x918e90f1bffc589d58b38aa3ee58f1cad61b5f16c5eb452c012b812722078740", + "transactionIndex": "0x52", + "logIndex": "0x1", + "removed": false + } + ], + "status": "0x1", + "logsBloom": "0x00000000000400000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000040000000000000001000000000000000000000001000000000000200000000000000000000000020000000000000000000800000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004020002000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "effectiveGasPrice": "0xb2d8834c" + } + ], + "libraries": [], + "pending": [], + "returns": { + "stakingTokenAddr": { + "internal_type": "address", + "value": "0x1308D1d0c4642AaA253276f6641aF8f196925DB7" + }, + "stakingContractAddr": { + "internal_type": "address", + "value": "0x8474c21a0d8936442D852d1284af5ac922f3eCD8" + }, + "rewardTokenAddr": { + "internal_type": "address", + "value": "0x2A29AfdF7c14Ae5b0821B9A998508abe929e5999" + } + }, + "timestamp": 1711247866, + "chain": 11155111, + "multi": false, + "commit": "b8ab18b" +} \ No newline at end of file diff --git a/contracts/broadcast/01_Deploy.s.sol/11155111/run-latest.json b/contracts/broadcast/01_Deploy.s.sol/11155111/run-latest.json new file mode 100644 index 0000000..cc5c913 --- /dev/null +++ b/contracts/broadcast/01_Deploy.s.sol/11155111/run-latest.json @@ -0,0 +1,120 @@ +{ + "transactions": [ + { + "hash": "0x25b612979dcca889063177822ed6b15415998c3015449974a2e3d12b43be8d01", + "transactionType": "CREATE", + "contractName": "FinthetixStakingToken", + "contractAddress": "0x1308D1d0c4642AaA253276f6641aF8f196925DB7", + "function": null, + "arguments": null, + "transaction": { + "type": "0x02", + "from": "0x2e4ada956f44298003610315e17c85e24ca89739", + "gas": "0xa8d6f", + "value": "0x0", + "data": "0x608060405234801561001057600080fd5b506040518060400160405280601581526020017f46696e7468657469785374616b696e67546f6b656e0000000000000000000000815250604051806040016040528060038152602001621194d560ea1b81525081600390816100729190610128565b50600461007f8282610128565b5050506101e7565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806100b157607f821691505b6020821081036100d157634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115610123576000816000526020600020601f850160051c810160208610156101005750805b601f850160051c820191505b8181101561011f5782815560010161010c565b5050505b505050565b81516001600160401b0381111561014157610141610087565b6101558161014f845461009d565b846100d7565b602080601f83116001811461018a57600084156101725750858301515b600019600386901b1c1916600185901b17855561011f565b600085815260208120601f198616915b828110156101b95788860151825594840194600190910190840161019a565b50858210156101d75787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6107b7806101f66000396000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c806370a082311161006657806370a082311461011857806395d89b4114610141578063a9059cbb14610149578063cea265441461015c578063dd62ed3e1461016657600080fd5b806306fdde03146100a3578063095ea7b3146100c157806318160ddd146100e457806323b872dd146100f6578063313ce56714610109575b600080fd5b6100ab61019f565b6040516100b89190610600565b60405180910390f35b6100d46100cf36600461066b565b610231565b60405190151581526020016100b8565b6002545b6040519081526020016100b8565b6100d4610104366004610695565b61024b565b604051601281526020016100b8565b6100e86101263660046106d1565b6001600160a01b031660009081526020819052604090205490565b6100ab61026f565b6100d461015736600461066b565b61027e565b61016461028c565b005b6100e86101743660046106f3565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6060600380546101ae90610726565b80601f01602080910402602001604051908101604052809291908181526020018280546101da90610726565b80156102275780601f106101fc57610100808354040283529160200191610227565b820191906000526020600020905b81548152906001019060200180831161020a57829003601f168201915b5050505050905090565b60003361023f8185856102d3565b60019150505b92915050565b6000336102598582856102e5565b610264858585610368565b506001949350505050565b6060600480546101ae90610726565b60003361023f818585610368565b61029e33674563918244f400006103c7565b6040513381527f7ccf505540043a893f416e2e7f2b62d967254fb031524e626d82fcfa70b89d609060200160405180910390a1565b6102e08383836001610401565b505050565b6001600160a01b038381166000908152600160209081526040808320938616835292905220546000198114610362578181101561035357604051637dc7a0d960e11b81526001600160a01b038416600482015260248101829052604481018390526064015b60405180910390fd5b61036284848484036000610401565b50505050565b6001600160a01b03831661039257604051634b637e8f60e11b81526000600482015260240161034a565b6001600160a01b0382166103bc5760405163ec442f0560e01b81526000600482015260240161034a565b6102e08383836104d6565b6001600160a01b0382166103f15760405163ec442f0560e01b81526000600482015260240161034a565b6103fd600083836104d6565b5050565b6001600160a01b03841661042b5760405163e602df0560e01b81526000600482015260240161034a565b6001600160a01b03831661045557604051634a1406b160e11b81526000600482015260240161034a565b6001600160a01b038085166000908152600160209081526040808320938716835292905220829055801561036257826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516104c891815260200190565b60405180910390a350505050565b6001600160a01b0383166105015780600260008282546104f69190610760565b909155506105739050565b6001600160a01b038316600090815260208190526040902054818110156105545760405163391434e360e21b81526001600160a01b0385166004820152602481018290526044810183905260640161034a565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b03821661058f576002805482900390556105ae565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516105f391815260200190565b60405180910390a3505050565b60006020808352835180602085015260005b8181101561062e57858101830151858201604001528201610612565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b038116811461066657600080fd5b919050565b6000806040838503121561067e57600080fd5b6106878361064f565b946020939093013593505050565b6000806000606084860312156106aa57600080fd5b6106b38461064f565b92506106c16020850161064f565b9150604084013590509250925092565b6000602082840312156106e357600080fd5b6106ec8261064f565b9392505050565b6000806040838503121561070657600080fd5b61070f8361064f565b915061071d6020840161064f565b90509250929050565b600181811c9082168061073a57607f821691505b60208210810361075a57634e487b7160e01b600052602260045260246000fd5b50919050565b8082018082111561024557634e487b7160e01b600052601160045260246000fdfea2646970667358221220ce785b9fa3f57c0750e52a5e3341a369bbf561d3f2f975754ada2521ca1fae4764736f6c63430008170033", + "nonce": "0x17", + "accessList": [] + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x918e90f1bffc589d58b38aa3ee58f1cad61b5f16c5eb452c012b812722078740", + "transactionType": "CREATE", + "contractName": "FinthetixStakingContract", + "contractAddress": "0x8474c21a0d8936442D852d1284af5ac922f3eCD8", + "function": null, + "arguments": [ + "0x1308D1d0c4642AaA253276f6641aF8f196925DB7" + ], + "transaction": { + "type": "0x02", + "from": "0x2e4ada956f44298003610315e17c85e24ca89739", + "gas": "0x182cf0", + "value": "0x0", + "data": "0x60c060405260405161001090610075565b604051809103906000f08015801561002c573d6000803e3d6000fd5b506001600160a01b031660a05234801561004557600080fd5b5060405161167938038061167983398101604081905261006491610082565b6001600160a01b03166080526100b2565b610b4680610b3383390190565b60006020828403121561009457600080fd5b81516001600160a01b03811681146100ab57600080fd5b9392505050565b60805160a051610a476100ec600039600081816101be0152610592015260008181610122015281816102da01526104410152610a476000f3fe608060405234801561001057600080fd5b50600436106100cf5760003560e01c8063905497de1161008c578063c7b8981c11610066578063c7b8981c146101b1578063f7c618c1146101b9578063fbdfd37b146101e0578063ffc1d187146101e957600080fd5b8063905497de1461017a5780639fa2f3cd1461018f578063a694fc3a1461019e57600080fd5b80632e17de78146100d45780633165af1e146100e957806362d45b671461010d57806372f702f31461011d57806375507aee1461015c5780638dcfba4614610165575b600080fd5b6100e76100e2366004610945565b6101f2565b005b336000908152600460205260409020545b6040519081526020015b60405180910390f35b6100fa68056bc75e2d6310000081565b6101447f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610104565b6100fa60025481565b336000908152600360205260409020546100fa565b336000908152600560205260409020546100fa565b6100fa6706f05b59d3b2000081565b6100e76101ac366004610945565b610399565b6100e76104ff565b6101447f000000000000000000000000000000000000000000000000000000000000000081565b6100fa60015481565b6100fa60005481565b3361021057604051630702b3d960e41b815260040160405180910390fd5b80806000036102395760405163038a201d60e01b81523360048201526024015b60405180910390fd5b336000908152600360205260409020548281101561027a5760405163e55c807360e01b81523360048201526024810184905260448101829052606401610230565b610282610627565b33600090815260036020526040812080548592906102a1908490610974565b92505081905550826000808282546102b99190610974565b909155505060405163a9059cbb60e01b8152336004820152602481018490527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063a9059cbb906044016020604051808303816000875af115801561032b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061034f919061098d565b50336000818152600360209081526040918290205491519182527fcddd3be660b4706b208689495b1470f67e1f53d4c62e36817301dd403e9d7bb6910160405180910390a2505050565b336103b757604051630702b3d960e41b815260040160405180910390fd5b80806000036103db5760405163038a201d60e01b8152336004820152602401610230565b6103e3610627565b33600090815260036020526040812080548492906104029084906109af565b925050819055508160008082825461041a91906109af565b90915550506040516323b872dd60e01b8152336004820152306024820152604481018390527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906323b872dd906064016020604051808303816000875af1158015610492573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104b6919061098d565b50336000818152600360209081526040918290205491519182527fcddd3be660b4706b208689495b1470f67e1f53d4c62e36817301dd403e9d7bb6910160405180910390a25050565b3361051d57604051630702b3d960e41b815260040160405180910390fd5b610525610627565b33600090815260046020526040812054908190036105585760405163c781471360e01b8152336004820152602401610230565b3360008181526004602081905260408083209290925590516340c10f1960e01b815290810191909152602481018290526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906340c10f1990604401600060405180830381600087803b1580156105d657600080fd5b505af11580156105ea573d6000803e3d6000fd5b5050604051600081523392507f60bbff26d658c4e93ffa8398e3d4018ae055a98a86be2586a865f04a3b97a351915060200160405180910390a250565b61062f610704565b6002600082825461064091906109af565b90915550506002546040519081527f4427a727232fad41b1e8eae5c814479909622b735af63ab126e4655c84d789bf9060200160405180910390a161068361077e565b33600090815260046020526040812080549091906106a29084906109af565b9091555050336000818152600460209081526040918290205491519182527f60bbff26d658c4e93ffa8398e3d4018ae055a98a86be2586a865f04a3b97a351910160405180910390a24260015560025433600090815260056020526040902055565b600080546000036107155750600090565b600068056bc75e2d631000006001544261072f9190610974565b61073991906109c2565b905060005481101561076b5760015460405163629a1e8560e01b81524260048201526024810191909152604401610230565b60005461077890826109ef565b91505090565b3360009081526003602052604081205481806107a2836706f05b59d3b20000610835565b91509150816107fb5760006107c9846706f05b59d3b2000068056bc75e2d63100000610880565b336000908152600560205260409020546002549192506107e891610974565b6107f290826109c2565b94505050505090565b3360009081526005602052604090205460025461082d91839161081e9190610974565b68056bc75e2d63100000610880565b935050505090565b6000808360000361084c5750600190506000610879565b8383028385828161085f5761085f6109d9565b0414610872576000809250925050610879565b6001925090505b9250929050565b60008383028160001985870982811083820303915050806000036108b7578382816108ad576108ad6109d9565b049250505061093e565b8084116108d75760405163227bc15360e01b815260040160405180910390fd5b6000848688096000868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150505b9392505050565b60006020828403121561095757600080fd5b5035919050565b634e487b7160e01b600052601160045260246000fd5b818103818111156109875761098761095e565b92915050565b60006020828403121561099f57600080fd5b8151801515811461093e57600080fd5b808201808211156109875761098761095e565b80820281158282048414176109875761098761095e565b634e487b7160e01b600052601260045260246000fd5b600082610a0c57634e487b7160e01b600052601260045260246000fd5b50049056fea2646970667358221220babf0510a16a509ac9fc6843b11377a8029156b048b52bcee4692b91a194950a64736f6c63430008170033608060405234801561001057600080fd5b50336040518060400160405280601481526020017f46696e746865746978526577617264546f6b656e0000000000000000000000008152506040518060400160405280600381526020016211949560ea1b815250816003908161007391906101b3565b50600461008082826101b3565b5050506001600160a01b0381166100b157604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b6100ba816100c0565b50610272565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b634e487b7160e01b600052604160045260246000fd5b600181811c9082168061013c57607f821691505b60208210810361015c57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156101ae576000816000526020600020601f850160051c8101602086101561018b5750805b601f850160051c820191505b818110156101aa57828155600101610197565b5050505b505050565b81516001600160401b038111156101cc576101cc610112565b6101e0816101da8454610128565b84610162565b602080601f83116001811461021557600084156101fd5750858301515b600019600386901b1c1916600185901b1785556101aa565b600085815260208120601f198616915b8281101561024457888601518255948401946001909101908401610225565b50858210156102625787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6108c5806102816000396000f3fe608060405234801561001057600080fd5b50600436106100cf5760003560e01c806370a082311161008c57806395d89b411161006657806395d89b41146101aa578063a9059cbb146101b2578063dd62ed3e146101c5578063f2fde38b146101fe57600080fd5b806370a082311461015e578063715018a6146101875780638da5cb5b1461018f57600080fd5b806306fdde03146100d4578063095ea7b3146100f257806318160ddd1461011557806323b872dd14610127578063313ce5671461013a57806340c10f1914610149575b600080fd5b6100dc610211565b6040516100e9919061070e565b60405180910390f35b610105610100366004610779565b6102a3565b60405190151581526020016100e9565b6002545b6040519081526020016100e9565b6101056101353660046107a3565b6102bd565b604051601281526020016100e9565b61015c610157366004610779565b6102e1565b005b61011961016c3660046107df565b6001600160a01b031660009081526020819052604090205490565b61015c6102f7565b6005546040516001600160a01b0390911681526020016100e9565b6100dc61030b565b6101056101c0366004610779565b61031a565b6101196101d3366004610801565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b61015c61020c3660046107df565b610328565b60606003805461022090610834565b80601f016020809104026020016040519081016040528092919081815260200182805461024c90610834565b80156102995780601f1061026e57610100808354040283529160200191610299565b820191906000526020600020905b81548152906001019060200180831161027c57829003601f168201915b5050505050905090565b6000336102b181858561036b565b60019150505b92915050565b6000336102cb85828561037d565b6102d68585856103fb565b506001949350505050565b6102e961045a565b6102f38282610487565b5050565b6102ff61045a565b61030960006104bd565b565b60606004805461022090610834565b6000336102b18185856103fb565b61033061045a565b6001600160a01b03811661035f57604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b610368816104bd565b50565b610378838383600161050f565b505050565b6001600160a01b0383811660009081526001602090815260408083209386168352929052205460001981146103f557818110156103e657604051637dc7a0d960e11b81526001600160a01b03841660048201526024810182905260448101839052606401610356565b6103f58484848403600061050f565b50505050565b6001600160a01b03831661042557604051634b637e8f60e11b815260006004820152602401610356565b6001600160a01b03821661044f5760405163ec442f0560e01b815260006004820152602401610356565b6103788383836105e4565b6005546001600160a01b031633146103095760405163118cdaa760e01b8152336004820152602401610356565b6001600160a01b0382166104b15760405163ec442f0560e01b815260006004820152602401610356565b6102f3600083836105e4565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b0384166105395760405163e602df0560e01b815260006004820152602401610356565b6001600160a01b03831661056357604051634a1406b160e11b815260006004820152602401610356565b6001600160a01b03808516600090815260016020908152604080832093871683529290522082905580156103f557826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516105d691815260200190565b60405180910390a350505050565b6001600160a01b03831661060f578060026000828254610604919061086e565b909155506106819050565b6001600160a01b038316600090815260208190526040902054818110156106625760405163391434e360e21b81526001600160a01b03851660048201526024810182905260448101839052606401610356565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b03821661069d576002805482900390556106bc565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161070191815260200190565b60405180910390a3505050565b60006020808352835180602085015260005b8181101561073c57858101830151858201604001528201610720565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b038116811461077457600080fd5b919050565b6000806040838503121561078c57600080fd5b6107958361075d565b946020939093013593505050565b6000806000606084860312156107b857600080fd5b6107c18461075d565b92506107cf6020850161075d565b9150604084013590509250925092565b6000602082840312156107f157600080fd5b6107fa8261075d565b9392505050565b6000806040838503121561081457600080fd5b61081d8361075d565b915061082b6020840161075d565b90509250929050565b600181811c9082168061084857607f821691505b60208210810361086857634e487b7160e01b600052602260045260246000fd5b50919050565b808201808211156102b757634e487b7160e01b600052601160045260246000fdfea26469706673582212206486d64809e8c3182e81c5a8c6e0b5988d6b150892711b3b5f6cd92861b40fe164736f6c634300081700330000000000000000000000001308d1d0c4642aaa253276f6641af8f196925db7", + "nonce": "0x18", + "accessList": [] + }, + "additionalContracts": [ + { + "transactionType": "CREATE", + "address": "0x2A29AfdF7c14Ae5b0821B9A998508abe929e5999", + "initCode": "0x608060405234801561001057600080fd5b50336040518060400160405280601481526020017f46696e746865746978526577617264546f6b656e0000000000000000000000008152506040518060400160405280600381526020016211949560ea1b815250816003908161007391906101b3565b50600461008082826101b3565b5050506001600160a01b0381166100b157604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b6100ba816100c0565b50610272565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b634e487b7160e01b600052604160045260246000fd5b600181811c9082168061013c57607f821691505b60208210810361015c57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156101ae576000816000526020600020601f850160051c8101602086101561018b5750805b601f850160051c820191505b818110156101aa57828155600101610197565b5050505b505050565b81516001600160401b038111156101cc576101cc610112565b6101e0816101da8454610128565b84610162565b602080601f83116001811461021557600084156101fd5750858301515b600019600386901b1c1916600185901b1785556101aa565b600085815260208120601f198616915b8281101561024457888601518255948401946001909101908401610225565b50858210156102625787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6108c5806102816000396000f3fe608060405234801561001057600080fd5b50600436106100cf5760003560e01c806370a082311161008c57806395d89b411161006657806395d89b41146101aa578063a9059cbb146101b2578063dd62ed3e146101c5578063f2fde38b146101fe57600080fd5b806370a082311461015e578063715018a6146101875780638da5cb5b1461018f57600080fd5b806306fdde03146100d4578063095ea7b3146100f257806318160ddd1461011557806323b872dd14610127578063313ce5671461013a57806340c10f1914610149575b600080fd5b6100dc610211565b6040516100e9919061070e565b60405180910390f35b610105610100366004610779565b6102a3565b60405190151581526020016100e9565b6002545b6040519081526020016100e9565b6101056101353660046107a3565b6102bd565b604051601281526020016100e9565b61015c610157366004610779565b6102e1565b005b61011961016c3660046107df565b6001600160a01b031660009081526020819052604090205490565b61015c6102f7565b6005546040516001600160a01b0390911681526020016100e9565b6100dc61030b565b6101056101c0366004610779565b61031a565b6101196101d3366004610801565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b61015c61020c3660046107df565b610328565b60606003805461022090610834565b80601f016020809104026020016040519081016040528092919081815260200182805461024c90610834565b80156102995780601f1061026e57610100808354040283529160200191610299565b820191906000526020600020905b81548152906001019060200180831161027c57829003601f168201915b5050505050905090565b6000336102b181858561036b565b60019150505b92915050565b6000336102cb85828561037d565b6102d68585856103fb565b506001949350505050565b6102e961045a565b6102f38282610487565b5050565b6102ff61045a565b61030960006104bd565b565b60606004805461022090610834565b6000336102b18185856103fb565b61033061045a565b6001600160a01b03811661035f57604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b610368816104bd565b50565b610378838383600161050f565b505050565b6001600160a01b0383811660009081526001602090815260408083209386168352929052205460001981146103f557818110156103e657604051637dc7a0d960e11b81526001600160a01b03841660048201526024810182905260448101839052606401610356565b6103f58484848403600061050f565b50505050565b6001600160a01b03831661042557604051634b637e8f60e11b815260006004820152602401610356565b6001600160a01b03821661044f5760405163ec442f0560e01b815260006004820152602401610356565b6103788383836105e4565b6005546001600160a01b031633146103095760405163118cdaa760e01b8152336004820152602401610356565b6001600160a01b0382166104b15760405163ec442f0560e01b815260006004820152602401610356565b6102f3600083836105e4565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b0384166105395760405163e602df0560e01b815260006004820152602401610356565b6001600160a01b03831661056357604051634a1406b160e11b815260006004820152602401610356565b6001600160a01b03808516600090815260016020908152604080832093871683529290522082905580156103f557826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516105d691815260200190565b60405180910390a350505050565b6001600160a01b03831661060f578060026000828254610604919061086e565b909155506106819050565b6001600160a01b038316600090815260208190526040902054818110156106625760405163391434e360e21b81526001600160a01b03851660048201526024810182905260448101839052606401610356565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b03821661069d576002805482900390556106bc565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161070191815260200190565b60405180910390a3505050565b60006020808352835180602085015260005b8181101561073c57858101830151858201604001528201610720565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b038116811461077457600080fd5b919050565b6000806040838503121561078c57600080fd5b6107958361075d565b946020939093013593505050565b6000806000606084860312156107b857600080fd5b6107c18461075d565b92506107cf6020850161075d565b9150604084013590509250925092565b6000602082840312156107f157600080fd5b6107fa8261075d565b9392505050565b6000806040838503121561081457600080fd5b61081d8361075d565b915061082b6020840161075d565b90509250929050565b600181811c9082168061084857607f821691505b60208210810361086857634e487b7160e01b600052602260045260246000fd5b50919050565b808201808211156102b757634e487b7160e01b600052601160045260246000fdfea26469706673582212206486d64809e8c3182e81c5a8c6e0b5988d6b150892711b3b5f6cd92861b40fe164736f6c63430008170033" + } + ], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "transactionHash": "0x25b612979dcca889063177822ed6b15415998c3015449974a2e3d12b43be8d01", + "transactionIndex": "0x51", + "blockHash": "0x31adcbea311e625fbab95515761f51b99157f3b93b9b699bd3982adc05afe7f0", + "blockNumber": "0x54a9ac", + "from": "0x2e4aDA956F44298003610315e17C85E24ca89739", + "to": null, + "cumulativeGasUsed": "0x224654", + "gasUsed": "0x81ea3", + "contractAddress": "0x1308D1d0c4642AaA253276f6641aF8f196925DB7", + "logs": [], + "status": "0x1", + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "effectiveGasPrice": "0xb2d8834c" + }, + { + "transactionHash": "0x918e90f1bffc589d58b38aa3ee58f1cad61b5f16c5eb452c012b812722078740", + "transactionIndex": "0x52", + "blockHash": "0x31adcbea311e625fbab95515761f51b99157f3b93b9b699bd3982adc05afe7f0", + "blockNumber": "0x54a9ac", + "from": "0x2e4aDA956F44298003610315e17C85E24ca89739", + "to": null, + "cumulativeGasUsed": "0x34e12d", + "gasUsed": "0x129ad9", + "contractAddress": "0x8474c21a0d8936442D852d1284af5ac922f3eCD8", + "logs": [ + { + "address": "0x2A29AfdF7c14Ae5b0821B9A998508abe929e5999", + "topics": [ + "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000008474c21a0d8936442d852d1284af5ac922f3ecd8" + ], + "data": "0x", + "blockHash": "0x31adcbea311e625fbab95515761f51b99157f3b93b9b699bd3982adc05afe7f0", + "blockNumber": "0x54a9ac", + "transactionHash": "0x918e90f1bffc589d58b38aa3ee58f1cad61b5f16c5eb452c012b812722078740", + "transactionIndex": "0x52", + "logIndex": "0x1", + "removed": false + } + ], + "status": "0x1", + "logsBloom": "0x00000000000400000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000040000000000000001000000000000000000000001000000000000200000000000000000000000020000000000000000000800000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004020002000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "effectiveGasPrice": "0xb2d8834c" + } + ], + "libraries": [], + "pending": [], + "returns": { + "stakingTokenAddr": { + "internal_type": "address", + "value": "0x1308D1d0c4642AaA253276f6641aF8f196925DB7" + }, + "stakingContractAddr": { + "internal_type": "address", + "value": "0x8474c21a0d8936442D852d1284af5ac922f3eCD8" + }, + "rewardTokenAddr": { + "internal_type": "address", + "value": "0x2A29AfdF7c14Ae5b0821B9A998508abe929e5999" + } + }, + "timestamp": 1711247866, + "chain": 11155111, + "multi": false, + "commit": "b8ab18b" +} \ No newline at end of file diff --git a/contracts/script/01_Deploy.s.sol b/contracts/script/01_Deploy.s.sol index 04b70cb..993ff6f 100644 --- a/contracts/script/01_Deploy.s.sol +++ b/contracts/script/01_Deploy.s.sol @@ -7,8 +7,7 @@ import {FinthetixStakingContract} from "src/FinthetixStakingContract.sol"; contract DappDeployer is Script { function run() public returns (address stakingTokenAddr, address stakingContractAddr, address rewardTokenAddr) { - uint256 deployerPrivateKey = vm.envUint("PRIVATE_KEY"); - vm.startBroadcast(deployerPrivateKey); + vm.startBroadcast(); FinthetixStakingToken stakingToken = new FinthetixStakingToken(); FinthetixStakingContract stakingContract = new FinthetixStakingContract(address(stakingToken)); vm.stopBroadcast(); From 88afb76f31c26648d7b77081ec45a3d9faeec11a Mon Sep 17 00:00:00 2001 From: Sayand Sathish Date: Sun, 24 Mar 2024 13:36:54 +0530 Subject: [PATCH 08/34] web-app/fix: Close modal when user rejects transaction When the user rejects a staking/unstaking transaction from metamask while the modal is open, it causes the user data to refresh. While the data is refreshing, the modal is empty. This is unwanted behaviour. To fix this, we close the modal automatically when user data is loading. The loading spinner is anyway shown on the card (on Staked Amount number) when user data is loading, and the Stake/Unstake buttons are disabled. --- .../StakingCard/subcomponents/StakeBtn/index.tsx | 5 ++++- .../StakingCard/subcomponents/UnstakeBtn/index.tsx | 5 ++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/web-app/src/app/routes/dashboard/subcomponents/StakingCard/subcomponents/StakeBtn/index.tsx b/web-app/src/app/routes/dashboard/subcomponents/StakingCard/subcomponents/StakeBtn/index.tsx index 458cac4..8c4ca05 100644 --- a/web-app/src/app/routes/dashboard/subcomponents/StakingCard/subcomponents/StakeBtn/index.tsx +++ b/web-app/src/app/routes/dashboard/subcomponents/StakingCard/subcomponents/StakeBtn/index.tsx @@ -14,7 +14,10 @@ export default function StakeBtn( }, []); return ( - + diff --git a/web-app/src/app/routes/dashboard/subcomponents/StakingCard/subcomponents/UnstakeBtn/index.tsx b/web-app/src/app/routes/dashboard/subcomponents/StakingCard/subcomponents/UnstakeBtn/index.tsx index 14cbe81..649d880 100644 --- a/web-app/src/app/routes/dashboard/subcomponents/StakingCard/subcomponents/UnstakeBtn/index.tsx +++ b/web-app/src/app/routes/dashboard/subcomponents/StakingCard/subcomponents/UnstakeBtn/index.tsx @@ -16,7 +16,10 @@ export default function UnstakeBtn( const isBtnDisabled = disabled || !amtCurrentlyStaked || amtCurrentlyStaked.value === '0'; return ( - + From 0834337e4cd881b894a10d145ee3d6be350602fb Mon Sep 17 00:00:00 2001 From: Sayand Sathish Date: Sun, 24 Mar 2024 14:36:47 +0530 Subject: [PATCH 09/34] web-app/refactor: Move dappInfo and chainInfo schemas into dedicated files A cyclical dependency was being created, as the zod schema for dappInfo/chainInfo is used in the `process.env` parser, but the `process.env` parser is used in the dappInfo/chainInfo getter. The problem was easily solved by moving the schema and the getter into their own dedicated files. All imports to these were also updated --- .../app/contracts/FinthetixStakingContract.ts | 2 +- web-app/src/app/lib/constants.ts | 2 +- web-app/src/app/lib/env.ts | 28 ------------------- web-app/src/app/lib/env/index.ts | 11 ++++++++ web-app/src/app/lib/env/schema.ts | 19 +++++++++++++ .../src/app/lib/loaders/chainInfo/index.ts | 10 +++++++ .../{chainInfo.ts => chainInfo/schema.ts} | 8 ------ web-app/src/app/lib/loaders/dappInfo.ts | 15 ---------- web-app/src/app/lib/loaders/dappInfo/index.ts | 11 ++++++++ .../src/app/lib/loaders/dappInfo/schema.ts | 15 ++++++++++ .../src/app/redux/services/lib/Metamask.ts | 2 +- web-app/src/app/redux/services/metamask.tsx | 4 +-- 12 files changed, 71 insertions(+), 56 deletions(-) delete mode 100644 web-app/src/app/lib/env.ts create mode 100644 web-app/src/app/lib/env/index.ts create mode 100644 web-app/src/app/lib/env/schema.ts create mode 100644 web-app/src/app/lib/loaders/chainInfo/index.ts rename web-app/src/app/lib/loaders/{chainInfo.ts => chainInfo/schema.ts} (66%) delete mode 100644 web-app/src/app/lib/loaders/dappInfo.ts create mode 100644 web-app/src/app/lib/loaders/dappInfo/index.ts create mode 100644 web-app/src/app/lib/loaders/dappInfo/schema.ts diff --git a/web-app/src/app/contracts/FinthetixStakingContract.ts b/web-app/src/app/contracts/FinthetixStakingContract.ts index 6d4a8e8..6c188fa 100644 --- a/web-app/src/app/contracts/FinthetixStakingContract.ts +++ b/web-app/src/app/contracts/FinthetixStakingContract.ts @@ -1,9 +1,9 @@ import { BrowserProvider, ContractRunner, JsonRpcProvider, JsonRpcSigner } from 'ethers'; import { TimestampInMs } from '~/lib/types'; -import { DappInfo } from '~/lib/loaders/dappInfo'; import { FinthetixRewardToken, FinthetixRewardToken__factory, FinthetixStakingContract, FinthetixStakingContract__factory, FinthetixStakingToken, FinthetixStakingToken__factory } from './types'; import { StakeBalChangedEvent, UserRewardUpdatedEvent } from './types/FinthetixStakingContract.sol/FSCEvents'; import { z } from 'zod'; +import { DappInfo } from '~/lib/loaders/dappInfo/schema'; export type FinthetixUserData = Awaited>; diff --git a/web-app/src/app/lib/constants.ts b/web-app/src/app/lib/constants.ts index 699cd47..6f733c9 100644 --- a/web-app/src/app/lib/constants.ts +++ b/web-app/src/app/lib/constants.ts @@ -1,4 +1,4 @@ -import { ChainInfo } from './loaders/chainInfo'; +import { ChainInfo } from './loaders/chainInfo/schema'; export const LOCAL_CHAIN_INFO: ChainInfo = { iconUrls: [], diff --git a/web-app/src/app/lib/env.ts b/web-app/src/app/lib/env.ts deleted file mode 100644 index 247ffbf..0000000 --- a/web-app/src/app/lib/env.ts +++ /dev/null @@ -1,28 +0,0 @@ -import { z } from 'zod'; -import { chainInfoSchema } from './loaders/chainInfo'; - -const ethAddressSchema = z.string().regex(/^0x([0-9]|[a-f]){40}$/i); - -export const envSchema = z.object({ - NODE_ENV: z.union([ - z.literal('development'), z.literal('production'), z.literal('test'), - ]) satisfies z.ZodType, - TZ: z.string().optional() satisfies z.ZodType, - - STAKING_CONTRACT_ADDRESS: ethAddressSchema, - STAKING_TOKEN_ADDRESS: ethAddressSchema, - REWARD_TOKEN_ADDRESS: ethAddressSchema, - - PRODUCTION_CHAIN_INFO: z.preprocess((val) => { - if (typeof val !== 'string') throw new Error('No JSON string set for chain info env'); - return JSON.parse(val); - }, chainInfoSchema), -}); - -const parseResult = envSchema.safeParse(process.env); -if (!parseResult.success) { - console.error(parseResult.error); - throw new Error('Env variables not parsed as expected'); -} - -export const PARSED_PROCESS_ENV = parseResult.data; diff --git a/web-app/src/app/lib/env/index.ts b/web-app/src/app/lib/env/index.ts new file mode 100644 index 0000000..f821341 --- /dev/null +++ b/web-app/src/app/lib/env/index.ts @@ -0,0 +1,11 @@ +import { envSchema } from './schema'; + +export default function getParsedEnv() { + const parseResult = envSchema.safeParse(process.env); + if (!parseResult.success) { + console.error(parseResult.error); + throw new Error('Env variables not parsed as expected'); + } + + return parseResult.data; +} diff --git a/web-app/src/app/lib/env/schema.ts b/web-app/src/app/lib/env/schema.ts new file mode 100644 index 0000000..901c956 --- /dev/null +++ b/web-app/src/app/lib/env/schema.ts @@ -0,0 +1,19 @@ +import { z } from 'zod'; +import { chainInfoSchema } from '../loaders/chainInfo/schema'; +import { dappInfoSchema } from '../loaders/dappInfo/schema'; + +export const envSchema = z.object({ + NODE_ENV: z.union([ + z.literal('development'), z.literal('production'), z.literal('test'), + ]) satisfies z.ZodType, + TZ: z.string().optional() satisfies z.ZodType, + + STAKING_CONTRACT_ADDRESS: dappInfoSchema.shape.stakingContractAddr, + STAKING_TOKEN_ADDRESS: dappInfoSchema.shape.stakingTokenAddr, + REWARD_TOKEN_ADDRESS: dappInfoSchema.shape.rewardTokenAddr, + + PRODUCTION_CHAIN_INFO: z.preprocess((val) => { + if (typeof val !== 'string') throw new Error('No JSON string set for chain info env'); + return JSON.parse(val); + }, chainInfoSchema), +}); diff --git a/web-app/src/app/lib/loaders/chainInfo/index.ts b/web-app/src/app/lib/loaders/chainInfo/index.ts new file mode 100644 index 0000000..b714104 --- /dev/null +++ b/web-app/src/app/lib/loaders/chainInfo/index.ts @@ -0,0 +1,10 @@ +import { LOCAL_CHAIN_INFO } from '~/lib/constants'; +import getParsedEnv from '../../env'; +import { ChainInfo } from './schema'; + +export function getChainInfo(): ChainInfo { + const env = getParsedEnv(); + return env.NODE_ENV === 'development' + ? LOCAL_CHAIN_INFO + : env.PRODUCTION_CHAIN_INFO; +} diff --git a/web-app/src/app/lib/loaders/chainInfo.ts b/web-app/src/app/lib/loaders/chainInfo/schema.ts similarity index 66% rename from web-app/src/app/lib/loaders/chainInfo.ts rename to web-app/src/app/lib/loaders/chainInfo/schema.ts index 94fd6ad..8cc2ab3 100644 --- a/web-app/src/app/lib/loaders/chainInfo.ts +++ b/web-app/src/app/lib/loaders/chainInfo/schema.ts @@ -1,5 +1,3 @@ -import { LOCAL_CHAIN_INFO } from '../constants'; -import { PARSED_PROCESS_ENV } from '../env'; import { z } from 'zod'; export type ChainInfo = { @@ -25,9 +23,3 @@ export const chainInfoSchema = z.object({ chainId: z.string(), chainName: z.string(), }) satisfies z.ZodType; - -export function getChainInfo(): ChainInfo { - return PARSED_PROCESS_ENV.NODE_ENV === 'development' - ? LOCAL_CHAIN_INFO - : PARSED_PROCESS_ENV.PRODUCTION_CHAIN_INFO; -} diff --git a/web-app/src/app/lib/loaders/dappInfo.ts b/web-app/src/app/lib/loaders/dappInfo.ts deleted file mode 100644 index b9c46e0..0000000 --- a/web-app/src/app/lib/loaders/dappInfo.ts +++ /dev/null @@ -1,15 +0,0 @@ -import { PARSED_PROCESS_ENV } from '../env'; - -export type DappInfo = { - stakingContractAddr: string - stakingTokenAddr: string - rewardTokenAddr: string -}; - -export function getDappInfo(): DappInfo { - return { - stakingContractAddr: PARSED_PROCESS_ENV.STAKING_CONTRACT_ADDRESS, - stakingTokenAddr: PARSED_PROCESS_ENV.STAKING_TOKEN_ADDRESS, - rewardTokenAddr: PARSED_PROCESS_ENV.REWARD_TOKEN_ADDRESS, - }; -} diff --git a/web-app/src/app/lib/loaders/dappInfo/index.ts b/web-app/src/app/lib/loaders/dappInfo/index.ts new file mode 100644 index 0000000..e01bdf2 --- /dev/null +++ b/web-app/src/app/lib/loaders/dappInfo/index.ts @@ -0,0 +1,11 @@ +import getParsedEnv from '../../env'; +import { DappInfo } from './schema'; + +export function getDappInfo(): DappInfo { + const env = getParsedEnv(); + return { + stakingContractAddr: env.STAKING_CONTRACT_ADDRESS, + stakingTokenAddr: env.STAKING_TOKEN_ADDRESS, + rewardTokenAddr: env.REWARD_TOKEN_ADDRESS, + }; +} diff --git a/web-app/src/app/lib/loaders/dappInfo/schema.ts b/web-app/src/app/lib/loaders/dappInfo/schema.ts new file mode 100644 index 0000000..828d5b7 --- /dev/null +++ b/web-app/src/app/lib/loaders/dappInfo/schema.ts @@ -0,0 +1,15 @@ +import { z } from 'zod'; + +export type DappInfo = { + stakingContractAddr: string + stakingTokenAddr: string + rewardTokenAddr: string +}; + +const ethAddressSchema = z.string().regex(/^0x([0-9]|[a-f]){40}$/i); + +export const dappInfoSchema = z.object({ + stakingContractAddr: ethAddressSchema, + stakingTokenAddr: ethAddressSchema, + rewardTokenAddr: ethAddressSchema, +}) satisfies z.ZodType; diff --git a/web-app/src/app/redux/services/lib/Metamask.ts b/web-app/src/app/redux/services/lib/Metamask.ts index a7afbc7..9b98f74 100644 --- a/web-app/src/app/redux/services/lib/Metamask.ts +++ b/web-app/src/app/redux/services/lib/Metamask.ts @@ -1,5 +1,5 @@ import { BrowserProvider } from 'ethers'; -import { ChainInfo } from '~/lib/loaders/chainInfo'; +import { ChainInfo } from '~/lib/loaders/chainInfo/schema'; import { ActiveAddress } from '~/redux/features/user/slice'; enum MetamaskHandlerErrors { diff --git a/web-app/src/app/redux/services/metamask.tsx b/web-app/src/app/redux/services/metamask.tsx index 867bc69..aeaa395 100644 --- a/web-app/src/app/redux/services/metamask.tsx +++ b/web-app/src/app/redux/services/metamask.tsx @@ -1,7 +1,7 @@ import { createApi, fakeBaseQuery } from '@reduxjs/toolkit/query/react'; import MetamaskHandler from '~/redux/services/lib/Metamask'; -import { DappInfo } from '~/lib/loaders/dappInfo'; -import { ChainInfo } from '~/lib/loaders/chainInfo'; +import { DappInfo } from '~/lib/loaders/dappInfo/schema'; +import { ChainInfo } from '~/lib/loaders/chainInfo/schema'; import stringifyBigIntsInObj, { WithStringifiedBigints } from '~/lib/utils/stringifyBigIntsInObj'; import { setIsUserLoading, type ActiveAddress, setActiveAddress } from '../features/user/slice'; import { toast } from '~/components/ui/use-toast'; From d43e4d4114d187d2273ff30868a4299af0fcfb10 Mon Sep 17 00:00:00 2001 From: Sayand Sathish Date: Sun, 24 Mar 2024 14:39:55 +0530 Subject: [PATCH 10/34] web-app/chore: Add browser env Now we can access browser env variables from anywhere on the client, using `getBrowserEnv`. This eliminates the need to pass the data from loader all the way through several layers of abstraction. We can directly read the env data which has been obtained from the root loader, using `getBrowserEnv`. A dedicated component `BrowserEnv` is used to set this up --- .../app/components/root/BrowserEnv/index.tsx | 49 +++++++++++++++++++ web-app/src/app/root.tsx | 2 + 2 files changed, 51 insertions(+) create mode 100644 web-app/src/app/components/root/BrowserEnv/index.tsx diff --git a/web-app/src/app/components/root/BrowserEnv/index.tsx b/web-app/src/app/components/root/BrowserEnv/index.tsx new file mode 100644 index 0000000..bb1c48b --- /dev/null +++ b/web-app/src/app/components/root/BrowserEnv/index.tsx @@ -0,0 +1,49 @@ +import { z } from 'zod'; +import useRootLoaderData from '~/lib/hooks/useRootLoaderData'; +import { ChainInfo, chainInfoSchema } from '~/lib/loaders/chainInfo/schema'; +import { DappInfo, dappInfoSchema } from '~/lib/loaders/dappInfo/schema'; + +type EnvVars = { + chainInfo: ChainInfo + dappInfo: DappInfo +}; + +const envVarsSchema = z.object({ + chainInfo: chainInfoSchema, + dappInfo: dappInfoSchema, +}) satisfies z.ZodType; + +const ENV_VAR_KEY_ON_WINDOW_OBJ = 'ENV'; + +export default function BrowserEnv() { + const { chainInfo, dappInfo } = useRootLoaderData(); + + const envVars: EnvVars = { + chainInfo, dappInfo, + }; + + return ( +