From 4f52bc620ea5f704a22ef47819a8f2b5e9ee9b9b Mon Sep 17 00:00:00 2001 From: MarcoandreDev Date: Thu, 11 Sep 2025 15:00:37 -0300 Subject: [PATCH 1/4] Marco atualizacao --- .commitlintrc.json | 3 + .dockerignore | 6 + .editorconfig | 13 + .env.example | 2 + .github/workflows/development-ci.yml | 55 + .github/workflows/production-ci.yml | 55 + .github/workflows/storybook-docs.yml | 54 + .gitignore | 39 + .husky/commit-msg | 1 + .husky/pre-commit | 1 + .husky/pre-push | 2 + .npmrc | 1 + .nvmrc | 1 + .prettierignore | 5 + .prettierrc | 7 + .storybook/decorators/index.ts | 1 + .../decorators/withRouter.decorator.tsx | 9 + .storybook/main.js | 23 + .storybook/preview-head.html | 15 + .storybook/preview.js | 28 + .vscode/settings.json | 8 + Dockerfile | 30 + Jenkinsfile | 16 + components.json | 17 + default-custom.conf | 45 + docker-compose.yml | 29 + eslint.config.mjs | 138 + index.html | 19 + package-lock.json | 13551 ++++++++++++++++ package.json | 119 + pnpm-lock.yaml | 9731 +++++++++++ postcss.config.js | 6 + public/mockServiceWorker.js | 285 + readme.md | 112 + scripts/seed/data/animal-childbirths.mjs | 23 + scripts/seed/data/animal-deaths.mjs | 15 + scripts/seed/data/animal-diseases.mjs | 15 + .../seed/data/animal-heifer-calf-stages.mjs | 42 + .../seed/data/animal-pregnancy-diagnoses.mjs | 15 + scripts/seed/data/animals.mjs | 15 + scripts/seed/data/breeds.mjs | 14 + scripts/seed/data/forages.mjs | 39 + scripts/seed/data/improvements.mjs | 33 + scripts/seed/data/index.mjs | 13 + scripts/seed/data/machines.mjs | 33 + scripts/seed/data/properties.mjs | 17 + scripts/seed/data/users.mjs | 14 + scripts/seed/data/vegetables.mjs | 14 + scripts/seed/index.mjs | 23 + src/App.tsx | 14 + src/app/assets/imgs/index.ts | 3 + src/app/assets/imgs/logo-idr-just-brand.png | Bin 0 -> 3493 bytes src/app/assets/imgs/logo-idr.png | Bin 0 -> 30306 bytes src/app/assets/imgs/logo-parana.png | Bin 0 -> 10348 bytes .../animal-childbirths-use-cases/index.ts | 5 + ...emote-create-animal-childbirth-use-case.ts | 45 + ...emote-delete-animal-childbirth-use-case.ts | 46 + .../remote-get-animal-childbirth-use-case.ts | 62 + .../remote-get-animal-childbirths-use-case.ts | 92 + ...emote-update-animal-childbirth-use-case.ts | 45 + .../animal-deaths-use-cases/index.ts | 5 + .../remote-create-animal-death-use-case.ts | 45 + .../remote-delete-animal-death-use-case.ts | 46 + .../remote-get-animal-death-use-case.ts | 55 + .../remote-get-animal-deaths-use-case.ts | 79 + .../remote-update-animal-death-use-case.ts | 45 + .../animal-diseases-use-cases/index.ts | 5 + .../remote-create-animal-disease-use-case.ts | 45 + .../remote-delete-animal-disease-use-case.ts | 46 + .../remote-get-animal-disease-use-case.ts | 55 + .../remote-get-animal-diseases-use-case.ts | 81 + .../remote-update-animal-disease-use-case.ts | 45 + .../index.ts | 6 + ...reate-animal-heifer-calf-stage-use-case.ts | 45 + ...elete-animal-heifer-calf-stage-use-case.ts | 46 + ...fer-calf-stage-additional-data-use-case.ts | 78 + ...e-get-animal-heifer-calf-stage-use-case.ts | 81 + ...-get-animal-heifer-calf-stages-use-case.ts | 85 + ...pdate-animal-heifer-calf-stage-use-case.ts | 45 + .../index.ts | 5 + ...ate-animal-pregnancy-diagnosis-use-case.ts | 45 + ...ete-animal-pregnancy-diagnosis-use-case.ts | 46 + ...get-animal-pregnancy-diagnoses-use-case.ts | 81 + ...get-animal-pregnancy-diagnosis-use-case.ts | 57 + ...ate-animal-pregnancy-diagnosis-use-case.ts | 45 + .../modules/animals/data/use-cases/index.ts | 5 + .../remote-create-animal-use-case.ts | 37 + .../remote-delete-animal-use-case.ts | 39 + .../use-cases/remote-get-animal-use-case.ts | 47 + .../use-cases/remote-get-animals-use-case.ts | 68 + .../remote-update-animal-use-case.ts | 38 + .../domain/models/animal-childbirths-model.ts | 31 + .../domain/models/animal-deaths-model.ts | 22 + .../domain/models/animal-diseases-model.ts | 22 + .../models/animal-heifer-calf-stages-model.ts | 120 + .../animal-pregnancy-diagnoses-model.ts | 21 + .../animals/domain/models/animals-model.ts | 19 + .../create-animal-childbirth-use-case.ts | 11 + .../delete-animal-childbirth-use-case.ts | 10 + .../get-animal-childbirth-use-case.ts | 11 + .../get-animal-childbirths-use-case.ts | 11 + .../animal-childbirths-use-cases/index.ts | 5 + .../update-animal-childbirth-use-case.ts | 12 + .../create-animal-death-use-case.ts | 11 + .../delete-animal-death-use-case.ts | 10 + .../get-animal-death-use-case.ts | 11 + .../get-animal-deaths-use-case.ts | 14 + .../animal-deaths-use-cases/index.ts | 5 + .../update-animal-death-use-case.ts | 12 + .../create-animal-disease-use-case.ts | 11 + .../delete-animal-disease-use-case.ts | 10 + .../get-animal-disease-use-case.ts | 11 + .../get-animal-diseases-use-case.ts | 14 + .../animal-diseases-use-cases/index.ts | 5 + .../update-animal-disease-use-case.ts | 12 + ...reate-animal-heifer-calf-stage-use-case.ts | 11 + ...elete-animal-heifer-calf-stage-use-case.ts | 10 + ...fer-calf-stage-additional-data-use-case.ts | 10 + .../get-animal-heifer-calf-stage-use-case.ts | 11 + .../get-animal-heifer-calf-stages-use-case.ts | 14 + .../index.ts | 6 + ...pdate-animal-heifer-calf-stage-use-case.ts | 12 + ...ate-animal-pregnancy-diagnosis-use-case.ts | 11 + ...ete-animal-pregnancy-diagnosis-use-case.ts | 10 + ...get-animal-pregnancy-diagnoses-use-case.ts | 14 + ...get-animal-pregnancy-diagnosis-use-case.ts | 11 + .../index.ts | 5 + ...ate-animal-pregnancy-diagnosis-use-case.ts | 12 + .../use-cases/create-animal-use-case.ts | 7 + .../use-cases/delete-animal-use-case.ts | 9 + .../domain/use-cases/get-animal-use-case.ts | 10 + .../domain/use-cases/get-animals-use-case.ts | 11 + .../modules/animals/domain/use-cases/index.ts | 5 + .../use-cases/update-animal-use-case.ts | 10 + .../animal-childbirths-use-cases/index.ts | 5 + ...eate-animal-childbirth-use-case-factory.ts | 12 + ...lete-animal-childbirth-use-case-factory.ts | 12 + ...-get-animal-childbirth-use-case-factory.ts | 19 + ...get-animal-childbirths-use-case-factory.ts | 21 + ...date-animal-childbirth-use-case-factory.ts | 12 + .../animal-deaths-use-cases/index.ts | 5 + ...te-create-animal-death-use-case-factory.ts | 12 + ...te-delete-animal-death-use-case-factory.ts | 12 + ...emote-get-animal-death-use-case-factory.ts | 16 + ...mote-get-animal-deaths-use-case-factory.ts | 21 + ...te-update-animal-death-use-case-factory.ts | 12 + .../animal-diseases-use-cases/index.ts | 5 + ...-create-animal-disease-use-case-factory.ts | 12 + ...-delete-animal-disease-use-case-factory.ts | 12 + ...ote-get-animal-disease-use-case-factory.ts | 19 + ...te-get-animal-diseases-use-case-factory.ts | 21 + ...-update-animal-disease-use-case-factory.ts | 12 + .../index.ts | 5 + ...imal-heifer-calf-stage-use-case-factory.ts | 12 + ...imal-heifer-calf-stage-use-case-factory.ts | 12 + ...-stage-additional-data-use-case-factory.ts | 19 + ...imal-heifer-calf-stage-use-case-factory.ts | 19 + ...mal-heifer-calf-stages-use-case-factory.ts | 21 + ...imal-heifer-calf-stage-use-case-factory.ts | 12 + .../index.ts | 5 + ...al-pregnancy-diagnosis-use-case-factory.ts | 11 + ...al-pregnancy-diagnosis-use-case-factory.ts | 11 + ...al-pregnancy-diagnoses-use-case-factory.ts | 20 + ...al-pregnancy-diagnosis-use-case-factory.ts | 18 + ...al-pregnancy-diagnosis-use-case-factory.ts | 11 + .../animals/main/factories/use-cases/index.ts | 5 + .../remote-create-animal-use-case-factory.ts | 12 + .../remote-delete-animal-use-case-factory.ts | 12 + .../remote-get-animal-use-case-factory.ts | 16 + .../remote-get-animals-use-case-factory.ts | 21 + .../remote-update-animal-use-case-factory.ts | 12 + .../create-animal-childbirth-handler.ts | 19 + .../delete-animal-childbirth-handler.ts | 18 + .../get-animal-childbirth-handler.ts | 51 + .../get-animal-childbirths-handler.ts | 72 + .../animal-childbirths-handlers/index.ts | 5 + .../update-animal-childbirth-handler.ts | 17 + .../create-animal-death-handler.ts | 19 + .../delete-animal-death-handler.ts | 18 + .../get-animal-death-handler.ts | 44 + .../get-animal-deaths-handler.ts | 66 + .../handlers/animal-deaths-handlers/index.ts | 5 + .../update-animal-death-handler.ts | 17 + .../create-animal-disease-handler.ts | 19 + .../delete-animal-disease-handler.ts | 18 + .../get-animal-disease-handler.ts | 44 + .../get-animal-diseases-handler.ts | 69 + .../animal-diseases-handlers/index.ts | 5 + .../update-animal-disease-handler.ts | 17 + ...create-animal-heifer-calf-stage-handler.ts | 19 + ...delete-animal-heifer-calf-stage-handler.ts | 19 + ...ifer-calf-stage-additional-data-handler.ts | 151 + .../get-animal-heifer-calf-stage-handler.ts | 171 + .../get-animal-heifer-calf-stages-handler.ts | 73 + .../index.ts | 6 + ...update-animal-heifer-calf-stage-handler.ts | 18 + ...eate-animal-pregnancy-diagnosis-handler.ts | 20 + ...lete-animal-pregnancy-diagnosis-handler.ts | 19 + .../get-animal-pregnancy-diagnoses-handler.ts | 75 + .../get-animal-pregnancy-diagnosis-handler.ts | 52 + .../index.ts | 5 + ...date-animal-pregnancy-diagnosis-handler.ts | 18 + .../mocks/handlers/create-animal-handler.ts | 19 + .../mocks/handlers/delete-animal-handler.ts | 18 + .../mocks/handlers/get-animal-handler.ts | 48 + .../mocks/handlers/get-animals-handler.ts | 63 + .../modules/animals/mocks/handlers/index.ts | 5 + .../mocks/handlers/update-animal-handler.ts | 17 + .../animal-childbirth-data-table.hook.tsx | 109 + .../animal-childbirth-data-table.tsx | 36 + .../animal-childbirth-data-table/index.ts | 1 + .../animal-childbirth-delete-dialog.tsx | 87 + .../animal-childbirth-delete-dialog/index.ts | 1 + .../animal-data-table.hook.tsx | 90 + .../animal-data-table/animal-data-table.tsx | 36 + .../components/animal-data-table/index.ts | 1 + .../animal-death-data-table.hook.tsx | 99 + .../animal-death-data-table.tsx | 29 + .../animal-death-data-table/index.ts | 1 + .../animal-death-delete-dialog.tsx | 92 + .../animal-death-delete-dialog/index.ts | 1 + .../animal-delete-dialog.tsx | 81 + .../components/animal-delete-dialog/index.ts | 1 + .../animal-disease-data-table.hook.tsx | 101 + .../animal-disease-data-table.tsx | 29 + .../animal-disease-data-table/index.ts | 1 + .../animal-disease-delete-dialog.tsx | 92 + .../animal-disease-delete-dialog/index.ts | 1 + ...imal-heifer-calf-stage-data-table.hook.tsx | 116 + .../animal-heifer-calf-stage-data-table.tsx | 36 + .../index.ts | 1 + ...animal-heifer-calf-stage-delete-dialog.tsx | 97 + .../index.ts | 1 + ...al-pregnancy-diagnosis-data-table.hook.tsx | 121 + .../animal-pregnancy-diagnosis-data-table.tsx | 37 + .../index.ts | 1 + ...imal-pregnancy-diagnosis-delete-dialog.tsx | 98 + .../index.ts | 1 + .../contexts/animal-childbirth-context.tsx | 150 + .../presentation/contexts/animal-context.tsx | 127 + .../contexts/animal-death-context.tsx | 142 + .../contexts/animal-disease-context.tsx | 145 + .../animal-heifer-calf-stage-context.tsx | 154 + .../animal-pregnancy-diagnosis-context.tsx | 156 + .../animal-childbirth-form-inputs.tsx | 164 + .../animal-childbirth-form.tsx | 18 + .../animal-childbirth-initial-data.ts | 12 + .../create-animal-childbirth-form.tsx | 120 + .../edit-animal-childbirth-form.tsx | 144 + .../forms/animal-childbirth-form/index.ts | 1 + .../animal-death-form-inputs.tsx | 55 + .../animal-death-form/animal-death-form.tsx | 16 + .../animal-death-initial-data.ts | 6 + .../create-animal-death-form.tsx | 119 + .../edit-animal-death-form.tsx | 143 + .../forms/animal-death-form/index.ts | 1 + .../animal-disease-form-inputs.tsx | 55 + .../animal-disease-form.tsx | 16 + .../animal-disease-initial-data.ts | 6 + .../create-animal-disease-form.tsx | 119 + .../edit-animal-disease-form.tsx | 143 + .../forms/animal-disease-form/index.ts | 1 + .../forms/animal-form/animal-form-inputs.tsx | 80 + .../forms/animal-form/animal-form.tsx | 16 + .../animal-form/animal-initial-form-data.ts | 9 + .../forms/animal-form/create-animal-form.tsx | 108 + .../forms/animal-form/edit-animal-form.tsx | 138 + .../presentation/forms/animal-form/index.ts | 1 + .../animal-heifer-calf-stage-form-inputs.tsx | 671 + .../animal-heifer-calf-stage-form.tsx | 18 + .../animal-heifer-calf-stage-initial-data.ts | 49 + .../create-animal-heifer-calf-stage-form.tsx | 145 + .../edit-animal-heifer-calf-stage-form.tsx | 164 + .../animal-heifer-calf-stage-form/index.ts | 1 + ...animal-pregnancy-diagnosis-form-inputs.tsx | 60 + .../animal-pregnancy-diagnosis-form.tsx | 18 + ...animal-pregnancy-diagnosis-initial-data.ts | 7 + ...create-animal-pregnancy-diagnosis-form.tsx | 125 + .../edit-animal-pregnancy-diagnosis-form.tsx | 149 + .../animal-pregnancy-diagnosis-form/index.ts | 1 + .../hooks/animal-childbirth-context.hook.ts | 15 + .../presentation/hooks/animal-context.hook.ts | 13 + .../hooks/animal-death-context.hook.ts | 15 + .../hooks/animal-disease-context.hook.ts | 15 + .../animal-heifer-calf-stage-context.hook.ts | 15 + ...animal-pregnancy-diagnosis-context.hook.ts | 15 + .../queries/animal-childbirth-query.hook.ts | 42 + .../queries/animal-childbirths-query.hook.ts | 62 + .../hooks/queries/animal-death-query.hook.ts | 42 + .../hooks/queries/animal-deaths-query.hook.ts | 61 + .../queries/animal-disease-query.hook.ts | 43 + .../queries/animal-diseases-query.hook.ts | 61 + ...r-calf-stage-additional-data-query.hook.ts | 52 + .../animal-heifer-calf-stage-query.hook.ts | 48 + .../animal-heifer-calf-stages-query.hook.ts | 62 + .../animal-pregnancy-diagnoses-query.hook.ts | 66 + .../animal-pregnancy-diagnosis-query.hook.ts | 50 + .../hooks/queries/animal-query.hook.ts | 40 + .../hooks/queries/animals-query.hook.ts | 49 + .../screens/animal-childbirths-screen.tsx | 72 + .../screens/animal-deaths-screen.tsx | 69 + .../screens/animal-diseases-screen.tsx | 69 + .../animal-heifer-calf-stages-screen.tsx | 76 + .../animal-pregnancy-diagnoses-screen.tsx | 73 + .../presentation/screens/animals-screen.tsx | 167 + .../types/animal-childbirth-types.ts | 5 + .../presentation/types/animal-death-types.ts | 5 + .../types/animal-disease-types.ts | 5 + .../types/animal-heifer-calf-stage-types.ts | 5 + .../types/animal-pregnancy-diagnosis-types.ts | 6 + .../presentation/types/animal-types.ts | 5 + .../animal-childbirth-form-schema.ts | 21 + .../validations/animal-death-form-schema.ts | 14 + .../validations/animal-disease-form-schema.ts | 14 + .../validations/animal-form-schema.ts | 14 + .../animal-heifer-calf-stage-form-schema.ts | 60 + .../animal-pregnancy-diagnosis-form-schema.ts | 18 + src/app/modules/auth/data/use-cases/index.ts | 2 + .../use-cases/remote-create-user-use-case.ts | 35 + .../data/use-cases/remote-login-use-case.ts | 37 + .../modules/auth/domain/models/auth-model.ts | 7 + .../domain/use-cases/create-user-use-case.ts | 4 + .../modules/auth/domain/use-cases/index.ts | 2 + .../auth/domain/use-cases/login-use-case.ts | 9 + .../auth/main/factories/use-cases/index.ts | 2 + .../remote-create-user-use-case-factory.ts | 9 + .../remote-login-use-case-factory.ts | 16 + src/app/modules/auth/mocks/handlers/index.ts | 1 + .../auth/mocks/handlers/login-handler.ts | 38 + .../presentation/forms/login-form/index.ts | 1 + .../forms/login-form/login-form.hook.ts | 63 + .../forms/login-form/login-form.tsx | 101 + .../presentation/forms/sign-up-form/index.ts | 1 + .../sign-up-form/sign-up-form-inputs.hook.tsx | 362 + .../forms/sign-up-form/sign-up-form.hook.ts | 83 + .../forms/sign-up-form/sign-up-form.tsx | 43 + .../presentation/screens/login-screen.tsx | 33 + .../presentation/screens/sign-up-screen.tsx | 35 + .../validations/login-form-schema.ts | 11 + .../validations/sign-up-form-schema.ts | 61 + .../modules/forages/data/use-cases/index.ts | 5 + .../remote-create-forage-use-case.ts | 37 + .../remote-delete-forage-use-case.ts | 41 + .../use-cases/remote-get-forage-use-case.ts | 55 + .../use-cases/remote-get-forages-use-case.ts | 118 + .../remote-update-forage-use-case.ts | 40 + .../forages/domain/models/forages-model.ts | 49 + .../use-cases/create-forage-use-case.ts | 7 + .../use-cases/delete-forage-use-case.ts | 9 + .../domain/use-cases/get-forage-use-case.ts | 10 + .../domain/use-cases/get-forages-use-case.ts | 11 + .../modules/forages/domain/use-cases/index.ts | 5 + .../use-cases/update-forage-use-case.ts | 11 + .../forages/main/factories/use-cases/index.ts | 5 + .../remote-create-forage-use-case-factory.ts | 12 + .../remote-delete-forage-use-case-factory.ts | 12 + .../remote-get-forage-use-case-factory.ts | 16 + .../remote-get-forages-use-case-factory.ts | 21 + .../remote-update-forage-use-case-factory.ts | 12 + .../mocks/handlers/create-forage-handler.ts | 19 + .../mocks/handlers/delete-forage-handler.ts | 18 + .../mocks/handlers/get-forage-handler.ts | 58 + .../mocks/handlers/get-forages-handler.ts | 63 + .../modules/forages/mocks/handlers/index.ts | 5 + .../mocks/handlers/update-forage-handler.ts | 17 + .../forage-data-table.hook.tsx | 173 + .../forage-data-table/forage-data-table.tsx | 51 + .../components/forage-data-table/index.ts | 1 + .../forage-delete-dialog.tsx | 83 + .../components/forage-delete-dialog/index.ts | 1 + .../forage-observation-dialog.tsx | 28 + .../forage-observation-dialog/index.ts | 1 + .../presentation/contexts/forage-context.tsx | 125 + .../forms/forage-form/create-forage-form.tsx | 108 + .../forms/forage-form/edit-forage-form.tsx | 140 + .../forms/forage-form/forage-form-inputs.tsx | 225 + .../forms/forage-form/forage-form.tsx | 14 + .../forage-form/forage-initial-form-data.ts | 15 + .../presentation/forms/forage-form/index.ts | 1 + .../presentation/hooks/forage-context.hook.ts | 13 + .../hooks/queries/forage-query.hook.ts | 39 + .../hooks/queries/forages-query.hook.ts | 49 + .../presentation/screens/forages-screen.tsx | 59 + src/app/modules/forages/presentation/types.ts | 5 + .../validations/forage-form-schema.ts | 28 + .../improvements/data/use-cases/index.ts | 5 + .../remote-create-improvement-use-case.ts | 42 + .../remote-delete-improvement-use-case.ts | 43 + .../remote-get-improvement-use-case.ts | 57 + .../remote-get-improvements-use-case.ts | 86 + .../remote-update-improvement-use-case.ts | 42 + .../domain/models/improvements-model.ts | 41 + .../use-cases/create-improvement-use-case.ts | 7 + .../use-cases/delete-improvement-use-case.ts | 9 + .../use-cases/get-improvement-use-case.ts | 10 + .../use-cases/get-improvements-use-case.ts | 11 + .../improvements/domain/use-cases/index.ts | 5 + .../use-cases/update-improvement-use-case.ts | 10 + .../main/factories/use-cases/index.ts | 5 + ...ote-create-improvement-use-case-factory.ts | 12 + ...ote-delete-improvement-use-case-factory.ts | 12 + ...remote-get-improvement-use-case-factory.ts | 16 + ...emote-get-improvements-use-case-factory.ts | 21 + ...ote-update-improvement-use-case-factory.ts | 12 + .../handlers/create-improvement-handler.ts | 19 + .../handlers/delete-improvement-handler.ts | 18 + .../mocks/handlers/get-improvement-handler.ts | 42 + .../handlers/get-improvements-handler.ts | 65 + .../improvements/mocks/handlers/index.ts | 5 + .../handlers/update-improvement-handler.ts | 17 + .../improvement-data-table.hook.tsx | 108 + .../improvement-data-table.tsx | 29 + .../improvement-data-table/index.ts | 1 + .../improvement-delete-dialog.tsx | 83 + .../improvement-delete-dialog/index.ts | 1 + .../contexts/improvement-context.tsx | 136 + .../create-improvement-form.tsx | 111 + .../edit-improvement-form.tsx | 145 + .../improvement-form-inputs.tsx | 214 + .../improvement-form/improvement-form.tsx | 14 + .../improvement-initial-form-data.ts | 11 + .../forms/improvement-form/index.ts | 1 + .../hooks/improvement-context.hook.ts | 15 + .../hooks/queries/improvement-query.hook.ts | 39 + .../hooks/queries/improvements-query.hook.ts | 53 + .../screens/improvements-screen.tsx | 62 + .../improvements/presentation/types.ts | 5 + .../validation/improvement-form-schema.ts | 24 + .../modules/machines/data/use-cases/index.ts | 5 + .../remote-create-machine-use-case.ts | 40 + .../remote-delete-machine-use-case.ts | 41 + .../use-cases/remote-get-machine-use-case.ts | 52 + .../use-cases/remote-get-machines-use-case.ts | 82 + .../remote-update-machine-use-case.ts | 38 + .../machines/domain/models/machines-model.ts | 41 + .../use-cases/create-machine-use-case.ts | 7 + .../use-cases/delete-machine-use-case.ts | 9 + .../domain/use-cases/get-machine-use-case.ts | 10 + .../domain/use-cases/get-machines-use-case.ts | 11 + .../machines/domain/use-cases/index.ts | 5 + .../use-cases/update-machine-use-case.ts | 10 + .../main/factories/use-cases/index.ts | 5 + .../remote-create-machine-use-case-factory.ts | 12 + .../remote-delete-machine-use-case-factory.ts | 12 + .../remote-get-machine-use-case-factory.ts | 16 + .../remote-get-machines-use-case-factory.ts | 21 + .../remote-update-machine-use-case-factory.ts | 12 + .../mocks/handlers/create-machine-handler.ts | 19 + .../mocks/handlers/delete-machine-handler.ts | 18 + .../mocks/handlers/get-machine-handler.ts | 42 + .../mocks/handlers/get-machines-handler.ts | 63 + .../modules/machines/mocks/handlers/index.ts | 5 + .../mocks/handlers/update-machine-handler.ts | 17 + .../components/machine-data-table/index.ts | 1 + .../machine-data-table.hook.tsx | 108 + .../machine-data-table/machine-data-table.tsx | 29 + .../components/machine-delete-dialog/index.ts | 1 + .../machine-delete-dialog.tsx | 81 + .../presentation/contexts/machine-context.tsx | 123 + .../machine-form/create-machine-form.tsx | 106 + .../forms/machine-form/edit-machine-form.tsx | 147 + .../presentation/forms/machine-form/index.ts | 1 + .../machine-form/machine-form-inputs.tsx | 214 + .../forms/machine-form/machine-form.tsx | 16 + .../machine-form/machine-initial-form-data.ts | 11 + .../hooks/machine-context.hook.ts | 13 + .../hooks/queries/machine-query.hook.ts | 39 + .../hooks/queries/machines-query.hook.ts | 49 + .../presentation/screens/machines-screen.tsx | 59 + .../modules/machines/presentation/types.ts | 5 + .../validation/machine-form-schema.ts | 24 + .../properties/data/use-cases/index.ts | 5 + .../remote-create-property-use-case.ts | 35 + .../remote-delete-property-use-case.ts | 36 + .../remote-get-properties-use-case.ts | 74 + .../use-cases/remote-get-property-use-case.ts | 52 + .../remote-update-property-use-case.ts | 35 + .../domain/models/properties-model.ts | 73 + .../use-cases/create-property-use-case.ts | 4 + .../use-cases/delete-property-use-case.ts | 3 + .../use-cases/get-properties-use-case.ts | 11 + .../domain/use-cases/get-property-use-case.ts | 4 + .../properties/domain/use-cases/index.ts | 5 + .../use-cases/update-property-use-case.ts | 8 + .../main/factories/use-cases/index.ts | 5 + ...remote-create-property-use-case-factory.ts | 9 + ...remote-delete-property-use-case-factory.ts | 9 + .../remote-get-properties-use-case-factory.ts | 21 + .../remote-get-property-use-case-factory.ts | 16 + ...remote-update-property-use-case-factory.ts | 9 + .../mocks/handlers/create-property-handler.ts | 19 + .../mocks/handlers/delete-property-handler.ts | 18 + .../mocks/handlers/get-properties-handler.ts | 67 + .../mocks/handlers/get-property-handler.ts | 80 + .../properties/mocks/handlers/index.ts | 5 + .../mocks/handlers/update-property-handler.ts | 17 + .../components/property-data-table/index.ts | 1 + .../property-data-table.hook.tsx | 96 + .../property-data-table.tsx | 72 + .../property-delete-dialog/index.ts | 1 + .../property-delete-dialog.tsx | 71 + .../contexts/property-context.tsx | 99 + .../property-form/create-property-form.tsx | 153 + .../property-form/edit-property-form.tsx | 178 + .../presentation/forms/property-form/index.ts | 1 + .../forms/property-form/property-form.tsx | 16 + .../property-initial-form-data.ts | 30 + .../tabs/property-form-collaborators-tab.tsx | 85 + .../tabs/property-form-general-tab.tsx | 245 + .../tabs/property-form-localization-tab.tsx | 154 + .../tabs/property-form-total-area-tab.tsx | 85 + .../hooks/property-context.hook.ts | 15 + .../hooks/queries/properties-query.hook.ts | 41 + .../hooks/queries/property-query.hook.ts | 29 + .../screens/properties-screen.tsx | 55 + .../presentation/screens/property-screen.tsx | 135 + .../modules/properties/presentation/types.ts | 5 + .../validations/property-form-schema.ts | 77 + src/app/pages/forages-page.tsx | 7 + src/app/pages/login-page.tsx | 7 + src/app/pages/properties-page.tsx | 7 + src/app/pages/property-page.tsx | 7 + src/app/pages/sign-up-page.tsx | 7 + src/assets/imgs/logo-utfpr.png | Bin 0 -> 35072 bytes src/core/data/protocols/http/http-client.ts | 58 + src/core/data/protocols/http/index.ts | 1 + .../data/use-cases/breeds-use-cases/index.ts | 1 + .../remote-get-all-breeds-use-case.ts | 61 + .../data/use-cases/cep-use-cases/index.ts | 1 + .../cep-use-cases/remote-get-cep-use-case.ts | 25 + .../data/use-cases/users-use-cases/index.ts | 2 + .../remote-get-all-users-use-case.ts | 61 + .../users-use-cases/remote-get-me-use-case.ts | 44 + .../use-cases/vegetables-use-cases/index.ts | 1 + .../remote-get-all-vegetables-use-case.ts | 64 + src/core/domain/errors/access-denied-error.ts | 6 + src/core/domain/errors/bad-request-error.ts | 6 + src/core/domain/errors/email-in-use-error.ts | 6 + src/core/domain/errors/forbidden-error.ts | 6 + src/core/domain/errors/index.ts | 7 + .../errors/invalid-credentials-error.ts | 6 + src/core/domain/errors/not-found-error.ts | 6 + src/core/domain/errors/unexpected-error.ts | 6 + src/core/domain/models/breeds-model.ts | 9 + src/core/domain/models/cep-model.ts | 7 + src/core/domain/models/users-model.ts | 24 + src/core/domain/models/vegetables-model.ts | 9 + src/core/domain/types/file-type.ts | 9 + src/core/domain/types/filter-type.ts | 23 + src/core/domain/types/index.ts | 12 + src/core/domain/types/list-params-type.ts | 9 + src/core/domain/types/list-response-type.ts | 28 + .../domain/types/map-api-properties-type.ts | 7 + src/core/domain/types/merge-union-type.ts | 8 + src/core/domain/types/nested-keyof-types.ts | 5 + src/core/domain/types/option-types.ts | 4 + src/core/domain/types/request-type.ts | 3 + src/core/domain/types/sort-type.ts | 11 + src/core/domain/types/with-id-type.ts | 1 + src/core/domain/types/with-required-type.ts | 1 + .../get-all-breeds-use-case.ts | 11 + .../use-cases/breeds-use-cases/index.ts | 1 + .../cep-use-cases/get-cep-use-case.ts | 4 + .../domain/use-cases/cep-use-cases/index.ts | 1 + .../users-use-cases/get-all-users-use-case.ts | 11 + .../users-use-cases/get-me-use-case.ts | 4 + .../domain/use-cases/users-use-cases/index.ts | 2 + .../get-all-vegetables-use-case.ts | 11 + .../use-cases/vegetables-use-cases/index.ts | 1 + src/core/env/env.ts | 8 + src/core/env/index.ts | 1 + src/core/infra/cache/index.ts | 1 + src/core/infra/cache/local-storage-adapter.ts | 26 + .../http/api-http-client/api-http-client.ts | 127 + src/core/infra/http/api-http-client/index.ts | 1 + .../interceptors/auth-interceptor.ts | 19 + src/core/infra/http/brasil-api-http-client.ts | 50 + src/core/infra/http/index.ts | 3 + src/core/infra/http/ui-avatars-http-client.ts | 10 + .../factories/http/api-http-client-factory.ts | 9 + .../http/brasil-api-http-client-factory.ts | 8 + src/core/main/factories/http/index.ts | 2 + .../use-cases/breeds-use-cases/index.ts | 1 + .../remote-get-all-breeds-use-case-factory.ts | 20 + .../use-cases/cep-use-cases/index.ts | 1 + .../remote-get-cep-use-case-factory.ts | 12 + .../use-cases/users-use-cases/index.ts | 2 + .../remote-get-all-users-use-case-factory.ts | 20 + .../remote-get-me-use-case-factory.ts | 15 + .../use-cases/vegetables-use-cases/index.ts | 1 + ...ote-get-all-vegetables-use-case-factory.ts | 20 + src/core/main/proxies/index.ts | 1 + .../main/proxies/private-router-proxy.tsx | 18 + src/core/main/routes/generate-route-path.ts | 54 + src/core/main/routes/index.tsx | 64 + src/core/main/routes/menu.ts | 42 + src/core/main/routes/paths.ts | 10 + src/core/main/routes/routes.ts | 42 + src/core/main/routes/types.ts | 17 + src/core/masker/index.ts | 2 + src/core/masker/masker.ts | 52 + src/core/masker/masks/cep-mask.ts | 6 + src/core/masker/masks/cpf-mask.ts | 6 + src/core/masker/masks/float-mask.ts | 14 + src/core/masker/masks/index.ts | 7 + src/core/masker/masks/money-mask.ts | 7 + src/core/masker/masks/only-numbers-mask.ts | 3 + src/core/masker/masks/percent-mask.ts | 7 + src/core/masker/masks/phone-mask.ts | 6 + src/core/mocks/browser.ts | 154 + .../breeds-handlers/get-all-breeds-handler.ts | 66 + .../mocks/handlers/breeds-handlers/index.ts | 1 + .../users-handlers/get-all-users-handler.ts | 66 + .../handlers/users-handlers/get-me-handler.ts | 22 + .../mocks/handlers/users-handlers/index.ts | 2 + .../get-all-vegetables-handler.ts | 69 + .../handlers/vegetables-handlers/index.ts | 1 + src/core/mocks/lib/index.ts | 37 + src/core/mocks/middleware/index.ts | 2 + src/core/mocks/middleware/with-auth.ts | 27 + src/core/mocks/middleware/with-delay.ts | 11 + src/core/mocks/types/mock-params-type.ts | 8 + src/core/mocks/types/mock-response-type.ts | 7 + src/core/mocks/utils/date.ts | 20 + src/core/mocks/utils/filter-data.ts | 68 + src/core/mocks/utils/get-nested-value.ts | 8 + src/core/mocks/utils/index.ts | 4 + src/core/mocks/utils/normalize-filters.ts | 13 + src/core/mocks/utils/paginate-data.ts | 11 + src/core/mocks/utils/sort-data.ts | 46 + .../components/ui/alert-dialog/action.tsx | 24 + .../components/ui/alert-dialog/cancel.tsx | 28 + .../components/ui/alert-dialog/content.tsx | 33 + .../ui/alert-dialog/description.tsx | 22 + .../components/ui/alert-dialog/footer.tsx | 18 + .../components/ui/alert-dialog/header.tsx | 18 + .../ui/alert-dialog/index.stories.tsx | 32 + .../components/ui/alert-dialog/index.ts | 24 + .../components/ui/alert-dialog/overlay.tsx | 25 + .../components/ui/alert-dialog/title.tsx | 22 + .../components/ui/avatar/fallback.tsx | 25 + .../components/ui/avatar/image.tsx | 22 + .../components/ui/avatar/index.stories.tsx | 33 + .../components/ui/avatar/index.ts | 9 + .../components/ui/avatar/root.tsx | 25 + .../components/ui/breadcrumb/ellipsis.tsx | 21 + .../ui/breadcrumb/index.stories.tsx | 27 + .../components/ui/breadcrumb/index.ts | 17 + .../components/ui/breadcrumb/item.tsx | 15 + .../components/ui/breadcrumb/link.tsx | 27 + .../components/ui/breadcrumb/list.tsx | 19 + .../components/ui/breadcrumb/page.tsx | 19 + .../components/ui/breadcrumb/root.tsx | 14 + .../components/ui/breadcrumb/separator.tsx | 24 + .../components/ui/button/button.tsx | 28 + .../components/ui/button/index.stories.tsx | 14 + .../components/ui/button/index.ts | 2 + .../components/ui/button/variants.ts | 31 + .../components/ui/calendar/calendar.tsx | 69 + .../components/ui/calendar/index.stories.tsx | 11 + .../components/ui/calendar/index.ts | 1 + .../components/ui/card/content.tsx | 12 + .../components/ui/card/description.tsx | 16 + .../components/ui/card/footer.tsx | 12 + .../components/ui/card/header.tsx | 16 + .../components/ui/card/index.stories.tsx | 24 + .../presentation/components/ui/card/index.ts | 15 + .../presentation/components/ui/card/root.tsx | 19 + .../presentation/components/ui/card/title.tsx | 21 + .../components/ui/combobox/combobox.tsx | 112 + .../components/ui/combobox/index.stories.tsx | 36 + .../components/ui/combobox/index.ts | 1 + .../components/ui/command/dialog.tsx | 19 + .../components/ui/command/empty.tsx | 20 + .../components/ui/command/group.tsx | 25 + .../components/ui/command/index.stories.tsx | 83 + .../components/ui/command/index.ts | 23 + .../components/ui/command/input.tsx | 30 + .../components/ui/command/item.tsx | 25 + .../components/ui/command/list.tsx | 22 + .../components/ui/command/loading.tsx | 16 + .../components/ui/command/root.tsx | 25 + .../components/ui/command/separator.tsx | 22 + .../components/ui/command/shortcut.tsx | 20 + .../components/ui/data-table/data-table.tsx | 309 + .../ui/data-table/index.stories.tsx | 94 + .../components/ui/data-table/index.ts | 1 + .../components/ui/date-picker/date-picker.tsx | 78 + .../ui/date-picker/index.stories.tsx | 11 + .../components/ui/date-picker/index.ts | 1 + .../components/ui/dialog/content.tsx | 41 + .../components/ui/dialog/description.tsx | 22 + .../components/ui/dialog/footer.tsx | 20 + .../components/ui/dialog/header.tsx | 20 + .../components/ui/dialog/index.stories.tsx | 50 + .../components/ui/dialog/index.ts | 21 + .../components/ui/dialog/overlay.tsx | 25 + .../components/ui/dialog/title.tsx | 25 + .../components/ui/dropdown/checkbox-item.tsx | 33 + .../components/ui/dropdown/content.tsx | 27 + .../components/ui/dropdown/index.stories.tsx | 90 + .../components/ui/dropdown/index.ts | 36 + .../components/ui/dropdown/item.tsx | 24 + .../components/ui/dropdown/label.tsx | 24 + .../components/ui/dropdown/radio-item.tsx | 32 + .../components/ui/dropdown/separator.tsx | 18 + .../components/ui/dropdown/shortcut.tsx | 17 + .../components/ui/dropdown/sub-content.tsx | 21 + .../components/ui/dropdown/sub-trigger.tsx | 28 + .../components/ui/dropzone/dropzone.tsx | 142 + .../components/ui/dropzone/index.stories.tsx | 19 + .../components/ui/dropzone/index.ts | 1 + .../ui/form/contexts/form-field.context.ts | 22 + .../ui/form/contexts/form-item.context.ts | 13 + .../components/ui/form/contexts/index.ts | 2 + .../components/ui/form/control.tsx | 28 + .../components/ui/form/description.tsx | 23 + .../presentation/components/ui/form/field.tsx | 25 + .../ui/form/hooks/form-field.hook.ts | 26 + .../components/ui/form/hooks/index.ts | 1 + .../components/ui/form/index.stories.tsx | 59 + .../presentation/components/ui/form/index.ts | 18 + .../presentation/components/ui/form/item.tsx | 26 + .../presentation/components/ui/form/label.tsx | 27 + .../components/ui/form/message.tsx | 30 + .../components/ui/header/header.tsx | 47 + .../components/ui/header/index.stories.tsx | 20 + .../components/ui/header/index.ts | 1 + src/core/presentation/components/ui/index.ts | 29 + .../components/ui/input/index.stories.tsx | 16 + .../presentation/components/ui/input/index.ts | 1 + .../components/ui/input/input.hook.ts | 43 + .../components/ui/input/input.tsx | 104 + .../components/ui/label/index.stories.tsx | 15 + .../presentation/components/ui/label/index.ts | 1 + .../components/ui/label/label.tsx | 27 + .../components/ui/loading/index.stories.tsx | 14 + .../components/ui/loading/index.ts | 1 + .../components/ui/loading/loading.tsx | 51 + .../components/ui/pagination/content.tsx | 15 + .../components/ui/pagination/ellipsis.tsx | 22 + .../ui/pagination/index.stories.tsx | 28 + .../components/ui/pagination/index.ts | 17 + .../components/ui/pagination/item.tsx | 32 + .../components/ui/pagination/link.tsx | 36 + .../components/ui/pagination/next.tsx | 27 + .../components/ui/pagination/previous.tsx | 31 + .../components/ui/pagination/root.tsx | 16 + .../components/ui/popover/content.tsx | 29 + .../components/ui/popover/index.stories.tsx | 57 + .../components/ui/popover/index.ts | 9 + .../components/ui/scroll-area/index.ts | 7 + .../components/ui/scroll-area/root.tsx | 34 + .../components/ui/scroll-area/scroll-bar.tsx | 35 + .../components/ui/select/content.tsx | 49 + .../components/ui/select/index.stories.tsx | 22 + .../components/ui/select/index.ts | 22 + .../components/ui/select/item.tsx | 38 + .../components/ui/select/label.tsx | 22 + .../ui/select/scroll-down-button.tsx | 28 + .../components/ui/select/scroll-up-button.tsx | 28 + .../components/ui/select/separator.tsx | 22 + .../components/ui/select/trigger.tsx | 48 + .../components/ui/sheet/content.tsx | 56 + .../components/ui/sheet/description.tsx | 18 + .../components/ui/sheet/footer.tsx | 20 + .../components/ui/sheet/header.tsx | 20 + .../components/ui/sheet/index.stories.tsx | 76 + .../presentation/components/ui/sheet/index.ts | 21 + .../components/ui/sheet/overlay.tsx | 21 + .../components/ui/sheet/title.tsx | 18 + .../components/ui/sidebar/index.stories.tsx | 57 + .../components/ui/sidebar/index.ts | 9 + .../components/ui/sidebar/item.tsx | 36 + .../components/ui/sidebar/list.tsx | 15 + .../components/ui/sidebar/root.tsx | 15 + .../presentation/components/ui/table/body.tsx | 16 + .../components/ui/table/caption.tsx | 16 + .../presentation/components/ui/table/cell.tsx | 16 + .../components/ui/table/footer.tsx | 19 + .../presentation/components/ui/table/head.tsx | 19 + .../components/ui/table/header.tsx | 12 + .../components/ui/table/index.stories.tsx | 31 + .../presentation/components/ui/table/index.ts | 19 + .../presentation/components/ui/table/root.tsx | 18 + .../presentation/components/ui/table/row.tsx | 19 + .../components/ui/tabs/content.tsx | 21 + .../components/ui/tabs/index.stories.tsx | 22 + .../presentation/components/ui/tabs/index.ts | 12 + .../presentation/components/ui/tabs/list.tsx | 21 + .../components/ui/tabs/trigger.tsx | 21 + .../components/ui/textarea/index.stories.tsx | 87 + .../components/ui/textarea/index.ts | 1 + .../components/ui/textarea/textarea.tsx | 34 + .../components/ui/tooltip/content.tsx | 22 + .../components/ui/tooltip/index.stories.tsx | 20 + .../components/ui/tooltip/index.ts | 10 + .../components/ui/wave/index.stories.tsx | 12 + .../presentation/components/ui/wave/index.ts | 1 + .../presentation/components/ui/wave/wave.tsx | 51 + .../components/utils/compose/compose.tsx | 24 + .../components/utils/compose/index.ts | 1 + .../components/utils/grouper/grouper.tsx | 32 + .../utils/grouper/index.stories.tsx | 19 + .../components/utils/grouper/index.ts | 1 + .../presentation/components/utils/index.ts | 2 + src/core/presentation/containers/index.ts | 1 + .../containers/logged-container/index.ts | 1 + .../logged-container/logged-container.tsx | 85 + .../contexts/auth-context/auth.context.tsx | 93 + .../contexts/auth-context/index.ts | 1 + .../contexts/create-custom-context.tsx | 40 + src/core/presentation/contexts/index.ts | 2 + src/core/presentation/hooks/auth.hook.ts | 13 + src/core/presentation/hooks/debounce.hook.ts | 18 + src/core/presentation/hooks/hook-form.hook.ts | 56 + .../presentation/hooks/idr-navigation.hook.ts | 15 + src/core/presentation/hooks/index.ts | 8 + .../hooks/queries/all-breeds-query.hook.ts | 48 + .../hooks/queries/all-users-query.hook.ts | 45 + .../queries/all-vegetables-query.hook.ts | 48 + .../hooks/queries/cep-query.hook.ts | 55 + src/core/presentation/hooks/queries/index.ts | 4 + src/core/presentation/hooks/timeout.hook.ts | 42 + .../presentation/hooks/window-resize.hook.ts | 25 + src/core/styles/globals.css | 164 + src/core/utils/axios/catch-error.ts | 15 + src/core/utils/axios/index.ts | 1 + src/core/utils/index.ts | 5 + src/core/utils/object/flatten-object.ts | 29 + src/core/utils/object/index.ts | 1 + src/core/utils/object/to-option.ts | 15 + src/core/utils/string/get-initials.ts | 8 + src/core/utils/string/index.ts | 2 + .../utils/string/mime-type-to-extensions.ts | 21 + src/core/utils/tailwind/index.ts | 23 + src/core/utils/time/freeze.ts | 5 + src/core/utils/time/index.ts | 1 + .../validation/schemas/file-type-schema.ts | 15 + src/core/validation/schemas/index.ts | 2 + src/core/validation/schemas/option-schema.ts | 6 + .../validation/validators/cpf-validation.ts | 40 + .../validation/validators/email-validation.ts | 5 + src/core/validation/validators/index.ts | 7 + .../validation/validators/money-validation.ts | 6 + .../validators/password-validation.ts | 13 + .../validators/percent-validation.ts | 6 + .../validation/validators/phone-validation.ts | 7 + .../validation/validators/year-validation.ts | 5 + src/main.tsx | 50 + src/vite-env.d.ts | 7 + tailwind.config.js | 103 + tsconfig.app.json | 35 + tsconfig.json | 7 + tsconfig.node.json | 22 + vite.config.ts | 15 + 856 files changed, 51998 insertions(+) create mode 100644 .commitlintrc.json create mode 100644 .dockerignore create mode 100644 .editorconfig create mode 100644 .env.example create mode 100644 .github/workflows/development-ci.yml create mode 100644 .github/workflows/production-ci.yml create mode 100644 .github/workflows/storybook-docs.yml create mode 100644 .gitignore create mode 100644 .husky/commit-msg create mode 100644 .husky/pre-commit create mode 100644 .husky/pre-push create mode 100644 .npmrc create mode 100644 .nvmrc create mode 100644 .prettierignore create mode 100644 .prettierrc create mode 100644 .storybook/decorators/index.ts create mode 100644 .storybook/decorators/withRouter.decorator.tsx create mode 100644 .storybook/main.js create mode 100644 .storybook/preview-head.html create mode 100644 .storybook/preview.js create mode 100644 .vscode/settings.json create mode 100644 Dockerfile create mode 100644 Jenkinsfile create mode 100644 components.json create mode 100644 default-custom.conf create mode 100644 docker-compose.yml create mode 100644 eslint.config.mjs create mode 100644 index.html create mode 100644 package-lock.json create mode 100644 package.json create mode 100644 pnpm-lock.yaml create mode 100644 postcss.config.js create mode 100644 public/mockServiceWorker.js create mode 100644 readme.md create mode 100644 scripts/seed/data/animal-childbirths.mjs create mode 100644 scripts/seed/data/animal-deaths.mjs create mode 100644 scripts/seed/data/animal-diseases.mjs create mode 100644 scripts/seed/data/animal-heifer-calf-stages.mjs create mode 100644 scripts/seed/data/animal-pregnancy-diagnoses.mjs create mode 100644 scripts/seed/data/animals.mjs create mode 100644 scripts/seed/data/breeds.mjs create mode 100644 scripts/seed/data/forages.mjs create mode 100644 scripts/seed/data/improvements.mjs create mode 100644 scripts/seed/data/index.mjs create mode 100644 scripts/seed/data/machines.mjs create mode 100644 scripts/seed/data/properties.mjs create mode 100644 scripts/seed/data/users.mjs create mode 100644 scripts/seed/data/vegetables.mjs create mode 100644 scripts/seed/index.mjs create mode 100644 src/App.tsx create mode 100644 src/app/assets/imgs/index.ts create mode 100644 src/app/assets/imgs/logo-idr-just-brand.png create mode 100644 src/app/assets/imgs/logo-idr.png create mode 100644 src/app/assets/imgs/logo-parana.png create mode 100644 src/app/modules/animals/data/use-cases/animal-childbirths-use-cases/index.ts create mode 100644 src/app/modules/animals/data/use-cases/animal-childbirths-use-cases/remote-create-animal-childbirth-use-case.ts create mode 100644 src/app/modules/animals/data/use-cases/animal-childbirths-use-cases/remote-delete-animal-childbirth-use-case.ts create mode 100644 src/app/modules/animals/data/use-cases/animal-childbirths-use-cases/remote-get-animal-childbirth-use-case.ts create mode 100644 src/app/modules/animals/data/use-cases/animal-childbirths-use-cases/remote-get-animal-childbirths-use-case.ts create mode 100644 src/app/modules/animals/data/use-cases/animal-childbirths-use-cases/remote-update-animal-childbirth-use-case.ts create mode 100644 src/app/modules/animals/data/use-cases/animal-deaths-use-cases/index.ts create mode 100644 src/app/modules/animals/data/use-cases/animal-deaths-use-cases/remote-create-animal-death-use-case.ts create mode 100644 src/app/modules/animals/data/use-cases/animal-deaths-use-cases/remote-delete-animal-death-use-case.ts create mode 100644 src/app/modules/animals/data/use-cases/animal-deaths-use-cases/remote-get-animal-death-use-case.ts create mode 100644 src/app/modules/animals/data/use-cases/animal-deaths-use-cases/remote-get-animal-deaths-use-case.ts create mode 100644 src/app/modules/animals/data/use-cases/animal-deaths-use-cases/remote-update-animal-death-use-case.ts create mode 100644 src/app/modules/animals/data/use-cases/animal-diseases-use-cases/index.ts create mode 100644 src/app/modules/animals/data/use-cases/animal-diseases-use-cases/remote-create-animal-disease-use-case.ts create mode 100644 src/app/modules/animals/data/use-cases/animal-diseases-use-cases/remote-delete-animal-disease-use-case.ts create mode 100644 src/app/modules/animals/data/use-cases/animal-diseases-use-cases/remote-get-animal-disease-use-case.ts create mode 100644 src/app/modules/animals/data/use-cases/animal-diseases-use-cases/remote-get-animal-diseases-use-case.ts create mode 100644 src/app/modules/animals/data/use-cases/animal-diseases-use-cases/remote-update-animal-disease-use-case.ts create mode 100644 src/app/modules/animals/data/use-cases/animal-heifer-calf-stages-use-cases/index.ts create mode 100644 src/app/modules/animals/data/use-cases/animal-heifer-calf-stages-use-cases/remote-create-animal-heifer-calf-stage-use-case.ts create mode 100644 src/app/modules/animals/data/use-cases/animal-heifer-calf-stages-use-cases/remote-delete-animal-heifer-calf-stage-use-case.ts create mode 100644 src/app/modules/animals/data/use-cases/animal-heifer-calf-stages-use-cases/remote-get-animal-heifer-calf-stage-additional-data-use-case.ts create mode 100644 src/app/modules/animals/data/use-cases/animal-heifer-calf-stages-use-cases/remote-get-animal-heifer-calf-stage-use-case.ts create mode 100644 src/app/modules/animals/data/use-cases/animal-heifer-calf-stages-use-cases/remote-get-animal-heifer-calf-stages-use-case.ts create mode 100644 src/app/modules/animals/data/use-cases/animal-heifer-calf-stages-use-cases/remote-update-animal-heifer-calf-stage-use-case.ts create mode 100644 src/app/modules/animals/data/use-cases/animal-pregnancy-diagnoses-use-cases/index.ts create mode 100644 src/app/modules/animals/data/use-cases/animal-pregnancy-diagnoses-use-cases/remote-create-animal-pregnancy-diagnosis-use-case.ts create mode 100644 src/app/modules/animals/data/use-cases/animal-pregnancy-diagnoses-use-cases/remote-delete-animal-pregnancy-diagnosis-use-case.ts create mode 100644 src/app/modules/animals/data/use-cases/animal-pregnancy-diagnoses-use-cases/remote-get-animal-pregnancy-diagnoses-use-case.ts create mode 100644 src/app/modules/animals/data/use-cases/animal-pregnancy-diagnoses-use-cases/remote-get-animal-pregnancy-diagnosis-use-case.ts create mode 100644 src/app/modules/animals/data/use-cases/animal-pregnancy-diagnoses-use-cases/remote-update-animal-pregnancy-diagnosis-use-case.ts create mode 100644 src/app/modules/animals/data/use-cases/index.ts create mode 100644 src/app/modules/animals/data/use-cases/remote-create-animal-use-case.ts create mode 100644 src/app/modules/animals/data/use-cases/remote-delete-animal-use-case.ts create mode 100644 src/app/modules/animals/data/use-cases/remote-get-animal-use-case.ts create mode 100644 src/app/modules/animals/data/use-cases/remote-get-animals-use-case.ts create mode 100644 src/app/modules/animals/data/use-cases/remote-update-animal-use-case.ts create mode 100644 src/app/modules/animals/domain/models/animal-childbirths-model.ts create mode 100644 src/app/modules/animals/domain/models/animal-deaths-model.ts create mode 100644 src/app/modules/animals/domain/models/animal-diseases-model.ts create mode 100644 src/app/modules/animals/domain/models/animal-heifer-calf-stages-model.ts create mode 100644 src/app/modules/animals/domain/models/animal-pregnancy-diagnoses-model.ts create mode 100644 src/app/modules/animals/domain/models/animals-model.ts create mode 100644 src/app/modules/animals/domain/use-cases/animal-childbirths-use-cases/create-animal-childbirth-use-case.ts create mode 100644 src/app/modules/animals/domain/use-cases/animal-childbirths-use-cases/delete-animal-childbirth-use-case.ts create mode 100644 src/app/modules/animals/domain/use-cases/animal-childbirths-use-cases/get-animal-childbirth-use-case.ts create mode 100644 src/app/modules/animals/domain/use-cases/animal-childbirths-use-cases/get-animal-childbirths-use-case.ts create mode 100644 src/app/modules/animals/domain/use-cases/animal-childbirths-use-cases/index.ts create mode 100644 src/app/modules/animals/domain/use-cases/animal-childbirths-use-cases/update-animal-childbirth-use-case.ts create mode 100644 src/app/modules/animals/domain/use-cases/animal-deaths-use-cases/create-animal-death-use-case.ts create mode 100644 src/app/modules/animals/domain/use-cases/animal-deaths-use-cases/delete-animal-death-use-case.ts create mode 100644 src/app/modules/animals/domain/use-cases/animal-deaths-use-cases/get-animal-death-use-case.ts create mode 100644 src/app/modules/animals/domain/use-cases/animal-deaths-use-cases/get-animal-deaths-use-case.ts create mode 100644 src/app/modules/animals/domain/use-cases/animal-deaths-use-cases/index.ts create mode 100644 src/app/modules/animals/domain/use-cases/animal-deaths-use-cases/update-animal-death-use-case.ts create mode 100644 src/app/modules/animals/domain/use-cases/animal-diseases-use-cases/create-animal-disease-use-case.ts create mode 100644 src/app/modules/animals/domain/use-cases/animal-diseases-use-cases/delete-animal-disease-use-case.ts create mode 100644 src/app/modules/animals/domain/use-cases/animal-diseases-use-cases/get-animal-disease-use-case.ts create mode 100644 src/app/modules/animals/domain/use-cases/animal-diseases-use-cases/get-animal-diseases-use-case.ts create mode 100644 src/app/modules/animals/domain/use-cases/animal-diseases-use-cases/index.ts create mode 100644 src/app/modules/animals/domain/use-cases/animal-diseases-use-cases/update-animal-disease-use-case.ts create mode 100644 src/app/modules/animals/domain/use-cases/animal-heifer-calf-stages-use-cases/create-animal-heifer-calf-stage-use-case.ts create mode 100644 src/app/modules/animals/domain/use-cases/animal-heifer-calf-stages-use-cases/delete-animal-heifer-calf-stage-use-case.ts create mode 100644 src/app/modules/animals/domain/use-cases/animal-heifer-calf-stages-use-cases/get-animal-heifer-calf-stage-additional-data-use-case.ts create mode 100644 src/app/modules/animals/domain/use-cases/animal-heifer-calf-stages-use-cases/get-animal-heifer-calf-stage-use-case.ts create mode 100644 src/app/modules/animals/domain/use-cases/animal-heifer-calf-stages-use-cases/get-animal-heifer-calf-stages-use-case.ts create mode 100644 src/app/modules/animals/domain/use-cases/animal-heifer-calf-stages-use-cases/index.ts create mode 100644 src/app/modules/animals/domain/use-cases/animal-heifer-calf-stages-use-cases/update-animal-heifer-calf-stage-use-case.ts create mode 100644 src/app/modules/animals/domain/use-cases/animal-pregnancy-diagnoses-use-cases/create-animal-pregnancy-diagnosis-use-case.ts create mode 100644 src/app/modules/animals/domain/use-cases/animal-pregnancy-diagnoses-use-cases/delete-animal-pregnancy-diagnosis-use-case.ts create mode 100644 src/app/modules/animals/domain/use-cases/animal-pregnancy-diagnoses-use-cases/get-animal-pregnancy-diagnoses-use-case.ts create mode 100644 src/app/modules/animals/domain/use-cases/animal-pregnancy-diagnoses-use-cases/get-animal-pregnancy-diagnosis-use-case.ts create mode 100644 src/app/modules/animals/domain/use-cases/animal-pregnancy-diagnoses-use-cases/index.ts create mode 100644 src/app/modules/animals/domain/use-cases/animal-pregnancy-diagnoses-use-cases/update-animal-pregnancy-diagnosis-use-case.ts create mode 100644 src/app/modules/animals/domain/use-cases/create-animal-use-case.ts create mode 100644 src/app/modules/animals/domain/use-cases/delete-animal-use-case.ts create mode 100644 src/app/modules/animals/domain/use-cases/get-animal-use-case.ts create mode 100644 src/app/modules/animals/domain/use-cases/get-animals-use-case.ts create mode 100644 src/app/modules/animals/domain/use-cases/index.ts create mode 100644 src/app/modules/animals/domain/use-cases/update-animal-use-case.ts create mode 100644 src/app/modules/animals/main/factories/use-cases/animal-childbirths-use-cases/index.ts create mode 100644 src/app/modules/animals/main/factories/use-cases/animal-childbirths-use-cases/remote-create-animal-childbirth-use-case-factory.ts create mode 100644 src/app/modules/animals/main/factories/use-cases/animal-childbirths-use-cases/remote-delete-animal-childbirth-use-case-factory.ts create mode 100644 src/app/modules/animals/main/factories/use-cases/animal-childbirths-use-cases/remote-get-animal-childbirth-use-case-factory.ts create mode 100644 src/app/modules/animals/main/factories/use-cases/animal-childbirths-use-cases/remote-get-animal-childbirths-use-case-factory.ts create mode 100644 src/app/modules/animals/main/factories/use-cases/animal-childbirths-use-cases/remote-update-animal-childbirth-use-case-factory.ts create mode 100644 src/app/modules/animals/main/factories/use-cases/animal-deaths-use-cases/index.ts create mode 100644 src/app/modules/animals/main/factories/use-cases/animal-deaths-use-cases/remote-create-animal-death-use-case-factory.ts create mode 100644 src/app/modules/animals/main/factories/use-cases/animal-deaths-use-cases/remote-delete-animal-death-use-case-factory.ts create mode 100644 src/app/modules/animals/main/factories/use-cases/animal-deaths-use-cases/remote-get-animal-death-use-case-factory.ts create mode 100644 src/app/modules/animals/main/factories/use-cases/animal-deaths-use-cases/remote-get-animal-deaths-use-case-factory.ts create mode 100644 src/app/modules/animals/main/factories/use-cases/animal-deaths-use-cases/remote-update-animal-death-use-case-factory.ts create mode 100644 src/app/modules/animals/main/factories/use-cases/animal-diseases-use-cases/index.ts create mode 100644 src/app/modules/animals/main/factories/use-cases/animal-diseases-use-cases/remote-create-animal-disease-use-case-factory.ts create mode 100644 src/app/modules/animals/main/factories/use-cases/animal-diseases-use-cases/remote-delete-animal-disease-use-case-factory.ts create mode 100644 src/app/modules/animals/main/factories/use-cases/animal-diseases-use-cases/remote-get-animal-disease-use-case-factory.ts create mode 100644 src/app/modules/animals/main/factories/use-cases/animal-diseases-use-cases/remote-get-animal-diseases-use-case-factory.ts create mode 100644 src/app/modules/animals/main/factories/use-cases/animal-diseases-use-cases/remote-update-animal-disease-use-case-factory.ts create mode 100644 src/app/modules/animals/main/factories/use-cases/animal-heifer-calf-stages-use-cases/index.ts create mode 100644 src/app/modules/animals/main/factories/use-cases/animal-heifer-calf-stages-use-cases/remote-create-animal-heifer-calf-stage-use-case-factory.ts create mode 100644 src/app/modules/animals/main/factories/use-cases/animal-heifer-calf-stages-use-cases/remote-delete-animal-heifer-calf-stage-use-case-factory.ts create mode 100644 src/app/modules/animals/main/factories/use-cases/animal-heifer-calf-stages-use-cases/remote-get-animal-heifer-calf-stage-additional-data-use-case-factory.ts create mode 100644 src/app/modules/animals/main/factories/use-cases/animal-heifer-calf-stages-use-cases/remote-get-animal-heifer-calf-stage-use-case-factory.ts create mode 100644 src/app/modules/animals/main/factories/use-cases/animal-heifer-calf-stages-use-cases/remote-get-animal-heifer-calf-stages-use-case-factory.ts create mode 100644 src/app/modules/animals/main/factories/use-cases/animal-heifer-calf-stages-use-cases/remote-update-animal-heifer-calf-stage-use-case-factory.ts create mode 100644 src/app/modules/animals/main/factories/use-cases/animal-pregnancy-diagnoses-use-cases/index.ts create mode 100644 src/app/modules/animals/main/factories/use-cases/animal-pregnancy-diagnoses-use-cases/remote-create-animal-pregnancy-diagnosis-use-case-factory.ts create mode 100644 src/app/modules/animals/main/factories/use-cases/animal-pregnancy-diagnoses-use-cases/remote-delete-animal-pregnancy-diagnosis-use-case-factory.ts create mode 100644 src/app/modules/animals/main/factories/use-cases/animal-pregnancy-diagnoses-use-cases/remote-get-animal-pregnancy-diagnoses-use-case-factory.ts create mode 100644 src/app/modules/animals/main/factories/use-cases/animal-pregnancy-diagnoses-use-cases/remote-get-animal-pregnancy-diagnosis-use-case-factory.ts create mode 100644 src/app/modules/animals/main/factories/use-cases/animal-pregnancy-diagnoses-use-cases/remote-update-animal-pregnancy-diagnosis-use-case-factory.ts create mode 100644 src/app/modules/animals/main/factories/use-cases/index.ts create mode 100644 src/app/modules/animals/main/factories/use-cases/remote-create-animal-use-case-factory.ts create mode 100644 src/app/modules/animals/main/factories/use-cases/remote-delete-animal-use-case-factory.ts create mode 100644 src/app/modules/animals/main/factories/use-cases/remote-get-animal-use-case-factory.ts create mode 100644 src/app/modules/animals/main/factories/use-cases/remote-get-animals-use-case-factory.ts create mode 100644 src/app/modules/animals/main/factories/use-cases/remote-update-animal-use-case-factory.ts create mode 100644 src/app/modules/animals/mocks/handlers/animal-childbirths-handlers/create-animal-childbirth-handler.ts create mode 100644 src/app/modules/animals/mocks/handlers/animal-childbirths-handlers/delete-animal-childbirth-handler.ts create mode 100644 src/app/modules/animals/mocks/handlers/animal-childbirths-handlers/get-animal-childbirth-handler.ts create mode 100644 src/app/modules/animals/mocks/handlers/animal-childbirths-handlers/get-animal-childbirths-handler.ts create mode 100644 src/app/modules/animals/mocks/handlers/animal-childbirths-handlers/index.ts create mode 100644 src/app/modules/animals/mocks/handlers/animal-childbirths-handlers/update-animal-childbirth-handler.ts create mode 100644 src/app/modules/animals/mocks/handlers/animal-deaths-handlers/create-animal-death-handler.ts create mode 100644 src/app/modules/animals/mocks/handlers/animal-deaths-handlers/delete-animal-death-handler.ts create mode 100644 src/app/modules/animals/mocks/handlers/animal-deaths-handlers/get-animal-death-handler.ts create mode 100644 src/app/modules/animals/mocks/handlers/animal-deaths-handlers/get-animal-deaths-handler.ts create mode 100644 src/app/modules/animals/mocks/handlers/animal-deaths-handlers/index.ts create mode 100644 src/app/modules/animals/mocks/handlers/animal-deaths-handlers/update-animal-death-handler.ts create mode 100644 src/app/modules/animals/mocks/handlers/animal-diseases-handlers/create-animal-disease-handler.ts create mode 100644 src/app/modules/animals/mocks/handlers/animal-diseases-handlers/delete-animal-disease-handler.ts create mode 100644 src/app/modules/animals/mocks/handlers/animal-diseases-handlers/get-animal-disease-handler.ts create mode 100644 src/app/modules/animals/mocks/handlers/animal-diseases-handlers/get-animal-diseases-handler.ts create mode 100644 src/app/modules/animals/mocks/handlers/animal-diseases-handlers/index.ts create mode 100644 src/app/modules/animals/mocks/handlers/animal-diseases-handlers/update-animal-disease-handler.ts create mode 100644 src/app/modules/animals/mocks/handlers/animal-heifer-calf-stages-handlers/create-animal-heifer-calf-stage-handler.ts create mode 100644 src/app/modules/animals/mocks/handlers/animal-heifer-calf-stages-handlers/delete-animal-heifer-calf-stage-handler.ts create mode 100644 src/app/modules/animals/mocks/handlers/animal-heifer-calf-stages-handlers/get-animal-heifer-calf-stage-additional-data-handler.ts create mode 100644 src/app/modules/animals/mocks/handlers/animal-heifer-calf-stages-handlers/get-animal-heifer-calf-stage-handler.ts create mode 100644 src/app/modules/animals/mocks/handlers/animal-heifer-calf-stages-handlers/get-animal-heifer-calf-stages-handler.ts create mode 100644 src/app/modules/animals/mocks/handlers/animal-heifer-calf-stages-handlers/index.ts create mode 100644 src/app/modules/animals/mocks/handlers/animal-heifer-calf-stages-handlers/update-animal-heifer-calf-stage-handler.ts create mode 100644 src/app/modules/animals/mocks/handlers/animal-pregnancy-diagnoses-handlers/create-animal-pregnancy-diagnosis-handler.ts create mode 100644 src/app/modules/animals/mocks/handlers/animal-pregnancy-diagnoses-handlers/delete-animal-pregnancy-diagnosis-handler.ts create mode 100644 src/app/modules/animals/mocks/handlers/animal-pregnancy-diagnoses-handlers/get-animal-pregnancy-diagnoses-handler.ts create mode 100644 src/app/modules/animals/mocks/handlers/animal-pregnancy-diagnoses-handlers/get-animal-pregnancy-diagnosis-handler.ts create mode 100644 src/app/modules/animals/mocks/handlers/animal-pregnancy-diagnoses-handlers/index.ts create mode 100644 src/app/modules/animals/mocks/handlers/animal-pregnancy-diagnoses-handlers/update-animal-pregnancy-diagnosis-handler.ts create mode 100644 src/app/modules/animals/mocks/handlers/create-animal-handler.ts create mode 100644 src/app/modules/animals/mocks/handlers/delete-animal-handler.ts create mode 100644 src/app/modules/animals/mocks/handlers/get-animal-handler.ts create mode 100644 src/app/modules/animals/mocks/handlers/get-animals-handler.ts create mode 100644 src/app/modules/animals/mocks/handlers/index.ts create mode 100644 src/app/modules/animals/mocks/handlers/update-animal-handler.ts create mode 100644 src/app/modules/animals/presentation/components/animal-childbirth-data-table/animal-childbirth-data-table.hook.tsx create mode 100644 src/app/modules/animals/presentation/components/animal-childbirth-data-table/animal-childbirth-data-table.tsx create mode 100644 src/app/modules/animals/presentation/components/animal-childbirth-data-table/index.ts create mode 100644 src/app/modules/animals/presentation/components/animal-childbirth-delete-dialog/animal-childbirth-delete-dialog.tsx create mode 100644 src/app/modules/animals/presentation/components/animal-childbirth-delete-dialog/index.ts create mode 100644 src/app/modules/animals/presentation/components/animal-data-table/animal-data-table.hook.tsx create mode 100644 src/app/modules/animals/presentation/components/animal-data-table/animal-data-table.tsx create mode 100644 src/app/modules/animals/presentation/components/animal-data-table/index.ts create mode 100644 src/app/modules/animals/presentation/components/animal-death-data-table/animal-death-data-table.hook.tsx create mode 100644 src/app/modules/animals/presentation/components/animal-death-data-table/animal-death-data-table.tsx create mode 100644 src/app/modules/animals/presentation/components/animal-death-data-table/index.ts create mode 100644 src/app/modules/animals/presentation/components/animal-death-delete-dialog/animal-death-delete-dialog.tsx create mode 100644 src/app/modules/animals/presentation/components/animal-death-delete-dialog/index.ts create mode 100644 src/app/modules/animals/presentation/components/animal-delete-dialog/animal-delete-dialog.tsx create mode 100644 src/app/modules/animals/presentation/components/animal-delete-dialog/index.ts create mode 100644 src/app/modules/animals/presentation/components/animal-disease-data-table/animal-disease-data-table.hook.tsx create mode 100644 src/app/modules/animals/presentation/components/animal-disease-data-table/animal-disease-data-table.tsx create mode 100644 src/app/modules/animals/presentation/components/animal-disease-data-table/index.ts create mode 100644 src/app/modules/animals/presentation/components/animal-disease-delete-dialog/animal-disease-delete-dialog.tsx create mode 100644 src/app/modules/animals/presentation/components/animal-disease-delete-dialog/index.ts create mode 100644 src/app/modules/animals/presentation/components/animal-heifer-calf-stage-data-table/animal-heifer-calf-stage-data-table.hook.tsx create mode 100644 src/app/modules/animals/presentation/components/animal-heifer-calf-stage-data-table/animal-heifer-calf-stage-data-table.tsx create mode 100644 src/app/modules/animals/presentation/components/animal-heifer-calf-stage-data-table/index.ts create mode 100644 src/app/modules/animals/presentation/components/animal-heifer-calf-stage-delete-dialog/animal-heifer-calf-stage-delete-dialog.tsx create mode 100644 src/app/modules/animals/presentation/components/animal-heifer-calf-stage-delete-dialog/index.ts create mode 100644 src/app/modules/animals/presentation/components/animal-pregnancy-diagnosis-data-table/animal-pregnancy-diagnosis-data-table.hook.tsx create mode 100644 src/app/modules/animals/presentation/components/animal-pregnancy-diagnosis-data-table/animal-pregnancy-diagnosis-data-table.tsx create mode 100644 src/app/modules/animals/presentation/components/animal-pregnancy-diagnosis-data-table/index.ts create mode 100644 src/app/modules/animals/presentation/components/animal-pregnancy-diagnosis-delete-dialog/animal-pregnancy-diagnosis-delete-dialog.tsx create mode 100644 src/app/modules/animals/presentation/components/animal-pregnancy-diagnosis-delete-dialog/index.ts create mode 100644 src/app/modules/animals/presentation/contexts/animal-childbirth-context.tsx create mode 100644 src/app/modules/animals/presentation/contexts/animal-context.tsx create mode 100644 src/app/modules/animals/presentation/contexts/animal-death-context.tsx create mode 100644 src/app/modules/animals/presentation/contexts/animal-disease-context.tsx create mode 100644 src/app/modules/animals/presentation/contexts/animal-heifer-calf-stage-context.tsx create mode 100644 src/app/modules/animals/presentation/contexts/animal-pregnancy-diagnosis-context.tsx create mode 100644 src/app/modules/animals/presentation/forms/animal-childbirth-form/animal-childbirth-form-inputs.tsx create mode 100644 src/app/modules/animals/presentation/forms/animal-childbirth-form/animal-childbirth-form.tsx create mode 100644 src/app/modules/animals/presentation/forms/animal-childbirth-form/animal-childbirth-initial-data.ts create mode 100644 src/app/modules/animals/presentation/forms/animal-childbirth-form/create-animal-childbirth-form.tsx create mode 100644 src/app/modules/animals/presentation/forms/animal-childbirth-form/edit-animal-childbirth-form.tsx create mode 100644 src/app/modules/animals/presentation/forms/animal-childbirth-form/index.ts create mode 100644 src/app/modules/animals/presentation/forms/animal-death-form/animal-death-form-inputs.tsx create mode 100644 src/app/modules/animals/presentation/forms/animal-death-form/animal-death-form.tsx create mode 100644 src/app/modules/animals/presentation/forms/animal-death-form/animal-death-initial-data.ts create mode 100644 src/app/modules/animals/presentation/forms/animal-death-form/create-animal-death-form.tsx create mode 100644 src/app/modules/animals/presentation/forms/animal-death-form/edit-animal-death-form.tsx create mode 100644 src/app/modules/animals/presentation/forms/animal-death-form/index.ts create mode 100644 src/app/modules/animals/presentation/forms/animal-disease-form/animal-disease-form-inputs.tsx create mode 100644 src/app/modules/animals/presentation/forms/animal-disease-form/animal-disease-form.tsx create mode 100644 src/app/modules/animals/presentation/forms/animal-disease-form/animal-disease-initial-data.ts create mode 100644 src/app/modules/animals/presentation/forms/animal-disease-form/create-animal-disease-form.tsx create mode 100644 src/app/modules/animals/presentation/forms/animal-disease-form/edit-animal-disease-form.tsx create mode 100644 src/app/modules/animals/presentation/forms/animal-disease-form/index.ts create mode 100644 src/app/modules/animals/presentation/forms/animal-form/animal-form-inputs.tsx create mode 100644 src/app/modules/animals/presentation/forms/animal-form/animal-form.tsx create mode 100644 src/app/modules/animals/presentation/forms/animal-form/animal-initial-form-data.ts create mode 100644 src/app/modules/animals/presentation/forms/animal-form/create-animal-form.tsx create mode 100644 src/app/modules/animals/presentation/forms/animal-form/edit-animal-form.tsx create mode 100644 src/app/modules/animals/presentation/forms/animal-form/index.ts create mode 100644 src/app/modules/animals/presentation/forms/animal-heifer-calf-stage-form/animal-heifer-calf-stage-form-inputs.tsx create mode 100644 src/app/modules/animals/presentation/forms/animal-heifer-calf-stage-form/animal-heifer-calf-stage-form.tsx create mode 100644 src/app/modules/animals/presentation/forms/animal-heifer-calf-stage-form/animal-heifer-calf-stage-initial-data.ts create mode 100644 src/app/modules/animals/presentation/forms/animal-heifer-calf-stage-form/create-animal-heifer-calf-stage-form.tsx create mode 100644 src/app/modules/animals/presentation/forms/animal-heifer-calf-stage-form/edit-animal-heifer-calf-stage-form.tsx create mode 100644 src/app/modules/animals/presentation/forms/animal-heifer-calf-stage-form/index.ts create mode 100644 src/app/modules/animals/presentation/forms/animal-pregnancy-diagnosis-form/animal-pregnancy-diagnosis-form-inputs.tsx create mode 100644 src/app/modules/animals/presentation/forms/animal-pregnancy-diagnosis-form/animal-pregnancy-diagnosis-form.tsx create mode 100644 src/app/modules/animals/presentation/forms/animal-pregnancy-diagnosis-form/animal-pregnancy-diagnosis-initial-data.ts create mode 100644 src/app/modules/animals/presentation/forms/animal-pregnancy-diagnosis-form/create-animal-pregnancy-diagnosis-form.tsx create mode 100644 src/app/modules/animals/presentation/forms/animal-pregnancy-diagnosis-form/edit-animal-pregnancy-diagnosis-form.tsx create mode 100644 src/app/modules/animals/presentation/forms/animal-pregnancy-diagnosis-form/index.ts create mode 100644 src/app/modules/animals/presentation/hooks/animal-childbirth-context.hook.ts create mode 100644 src/app/modules/animals/presentation/hooks/animal-context.hook.ts create mode 100644 src/app/modules/animals/presentation/hooks/animal-death-context.hook.ts create mode 100644 src/app/modules/animals/presentation/hooks/animal-disease-context.hook.ts create mode 100644 src/app/modules/animals/presentation/hooks/animal-heifer-calf-stage-context.hook.ts create mode 100644 src/app/modules/animals/presentation/hooks/animal-pregnancy-diagnosis-context.hook.ts create mode 100644 src/app/modules/animals/presentation/hooks/queries/animal-childbirth-query.hook.ts create mode 100644 src/app/modules/animals/presentation/hooks/queries/animal-childbirths-query.hook.ts create mode 100644 src/app/modules/animals/presentation/hooks/queries/animal-death-query.hook.ts create mode 100644 src/app/modules/animals/presentation/hooks/queries/animal-deaths-query.hook.ts create mode 100644 src/app/modules/animals/presentation/hooks/queries/animal-disease-query.hook.ts create mode 100644 src/app/modules/animals/presentation/hooks/queries/animal-diseases-query.hook.ts create mode 100644 src/app/modules/animals/presentation/hooks/queries/animal-heifer-calf-stage-additional-data-query.hook.ts create mode 100644 src/app/modules/animals/presentation/hooks/queries/animal-heifer-calf-stage-query.hook.ts create mode 100644 src/app/modules/animals/presentation/hooks/queries/animal-heifer-calf-stages-query.hook.ts create mode 100644 src/app/modules/animals/presentation/hooks/queries/animal-pregnancy-diagnoses-query.hook.ts create mode 100644 src/app/modules/animals/presentation/hooks/queries/animal-pregnancy-diagnosis-query.hook.ts create mode 100644 src/app/modules/animals/presentation/hooks/queries/animal-query.hook.ts create mode 100644 src/app/modules/animals/presentation/hooks/queries/animals-query.hook.ts create mode 100644 src/app/modules/animals/presentation/screens/animal-childbirths-screen.tsx create mode 100644 src/app/modules/animals/presentation/screens/animal-deaths-screen.tsx create mode 100644 src/app/modules/animals/presentation/screens/animal-diseases-screen.tsx create mode 100644 src/app/modules/animals/presentation/screens/animal-heifer-calf-stages-screen.tsx create mode 100644 src/app/modules/animals/presentation/screens/animal-pregnancy-diagnoses-screen.tsx create mode 100644 src/app/modules/animals/presentation/screens/animals-screen.tsx create mode 100644 src/app/modules/animals/presentation/types/animal-childbirth-types.ts create mode 100644 src/app/modules/animals/presentation/types/animal-death-types.ts create mode 100644 src/app/modules/animals/presentation/types/animal-disease-types.ts create mode 100644 src/app/modules/animals/presentation/types/animal-heifer-calf-stage-types.ts create mode 100644 src/app/modules/animals/presentation/types/animal-pregnancy-diagnosis-types.ts create mode 100644 src/app/modules/animals/presentation/types/animal-types.ts create mode 100644 src/app/modules/animals/presentation/validations/animal-childbirth-form-schema.ts create mode 100644 src/app/modules/animals/presentation/validations/animal-death-form-schema.ts create mode 100644 src/app/modules/animals/presentation/validations/animal-disease-form-schema.ts create mode 100644 src/app/modules/animals/presentation/validations/animal-form-schema.ts create mode 100644 src/app/modules/animals/presentation/validations/animal-heifer-calf-stage-form-schema.ts create mode 100644 src/app/modules/animals/presentation/validations/animal-pregnancy-diagnosis-form-schema.ts create mode 100644 src/app/modules/auth/data/use-cases/index.ts create mode 100644 src/app/modules/auth/data/use-cases/remote-create-user-use-case.ts create mode 100644 src/app/modules/auth/data/use-cases/remote-login-use-case.ts create mode 100644 src/app/modules/auth/domain/models/auth-model.ts create mode 100644 src/app/modules/auth/domain/use-cases/create-user-use-case.ts create mode 100644 src/app/modules/auth/domain/use-cases/index.ts create mode 100644 src/app/modules/auth/domain/use-cases/login-use-case.ts create mode 100644 src/app/modules/auth/main/factories/use-cases/index.ts create mode 100644 src/app/modules/auth/main/factories/use-cases/remote-create-user-use-case-factory.ts create mode 100644 src/app/modules/auth/main/factories/use-cases/remote-login-use-case-factory.ts create mode 100644 src/app/modules/auth/mocks/handlers/index.ts create mode 100644 src/app/modules/auth/mocks/handlers/login-handler.ts create mode 100644 src/app/modules/auth/presentation/forms/login-form/index.ts create mode 100644 src/app/modules/auth/presentation/forms/login-form/login-form.hook.ts create mode 100644 src/app/modules/auth/presentation/forms/login-form/login-form.tsx create mode 100644 src/app/modules/auth/presentation/forms/sign-up-form/index.ts create mode 100644 src/app/modules/auth/presentation/forms/sign-up-form/sign-up-form-inputs.hook.tsx create mode 100644 src/app/modules/auth/presentation/forms/sign-up-form/sign-up-form.hook.ts create mode 100644 src/app/modules/auth/presentation/forms/sign-up-form/sign-up-form.tsx create mode 100644 src/app/modules/auth/presentation/screens/login-screen.tsx create mode 100644 src/app/modules/auth/presentation/screens/sign-up-screen.tsx create mode 100644 src/app/modules/auth/presentation/validations/login-form-schema.ts create mode 100644 src/app/modules/auth/presentation/validations/sign-up-form-schema.ts create mode 100644 src/app/modules/forages/data/use-cases/index.ts create mode 100644 src/app/modules/forages/data/use-cases/remote-create-forage-use-case.ts create mode 100644 src/app/modules/forages/data/use-cases/remote-delete-forage-use-case.ts create mode 100644 src/app/modules/forages/data/use-cases/remote-get-forage-use-case.ts create mode 100644 src/app/modules/forages/data/use-cases/remote-get-forages-use-case.ts create mode 100644 src/app/modules/forages/data/use-cases/remote-update-forage-use-case.ts create mode 100644 src/app/modules/forages/domain/models/forages-model.ts create mode 100644 src/app/modules/forages/domain/use-cases/create-forage-use-case.ts create mode 100644 src/app/modules/forages/domain/use-cases/delete-forage-use-case.ts create mode 100644 src/app/modules/forages/domain/use-cases/get-forage-use-case.ts create mode 100644 src/app/modules/forages/domain/use-cases/get-forages-use-case.ts create mode 100644 src/app/modules/forages/domain/use-cases/index.ts create mode 100644 src/app/modules/forages/domain/use-cases/update-forage-use-case.ts create mode 100644 src/app/modules/forages/main/factories/use-cases/index.ts create mode 100644 src/app/modules/forages/main/factories/use-cases/remote-create-forage-use-case-factory.ts create mode 100644 src/app/modules/forages/main/factories/use-cases/remote-delete-forage-use-case-factory.ts create mode 100644 src/app/modules/forages/main/factories/use-cases/remote-get-forage-use-case-factory.ts create mode 100644 src/app/modules/forages/main/factories/use-cases/remote-get-forages-use-case-factory.ts create mode 100644 src/app/modules/forages/main/factories/use-cases/remote-update-forage-use-case-factory.ts create mode 100644 src/app/modules/forages/mocks/handlers/create-forage-handler.ts create mode 100644 src/app/modules/forages/mocks/handlers/delete-forage-handler.ts create mode 100644 src/app/modules/forages/mocks/handlers/get-forage-handler.ts create mode 100644 src/app/modules/forages/mocks/handlers/get-forages-handler.ts create mode 100644 src/app/modules/forages/mocks/handlers/index.ts create mode 100644 src/app/modules/forages/mocks/handlers/update-forage-handler.ts create mode 100644 src/app/modules/forages/presentation/components/forage-data-table/forage-data-table.hook.tsx create mode 100644 src/app/modules/forages/presentation/components/forage-data-table/forage-data-table.tsx create mode 100644 src/app/modules/forages/presentation/components/forage-data-table/index.ts create mode 100644 src/app/modules/forages/presentation/components/forage-delete-dialog/forage-delete-dialog.tsx create mode 100644 src/app/modules/forages/presentation/components/forage-delete-dialog/index.ts create mode 100644 src/app/modules/forages/presentation/components/forage-observation-dialog/forage-observation-dialog.tsx create mode 100644 src/app/modules/forages/presentation/components/forage-observation-dialog/index.ts create mode 100644 src/app/modules/forages/presentation/contexts/forage-context.tsx create mode 100644 src/app/modules/forages/presentation/forms/forage-form/create-forage-form.tsx create mode 100644 src/app/modules/forages/presentation/forms/forage-form/edit-forage-form.tsx create mode 100644 src/app/modules/forages/presentation/forms/forage-form/forage-form-inputs.tsx create mode 100644 src/app/modules/forages/presentation/forms/forage-form/forage-form.tsx create mode 100644 src/app/modules/forages/presentation/forms/forage-form/forage-initial-form-data.ts create mode 100644 src/app/modules/forages/presentation/forms/forage-form/index.ts create mode 100644 src/app/modules/forages/presentation/hooks/forage-context.hook.ts create mode 100644 src/app/modules/forages/presentation/hooks/queries/forage-query.hook.ts create mode 100644 src/app/modules/forages/presentation/hooks/queries/forages-query.hook.ts create mode 100644 src/app/modules/forages/presentation/screens/forages-screen.tsx create mode 100644 src/app/modules/forages/presentation/types.ts create mode 100644 src/app/modules/forages/presentation/validations/forage-form-schema.ts create mode 100644 src/app/modules/improvements/data/use-cases/index.ts create mode 100644 src/app/modules/improvements/data/use-cases/remote-create-improvement-use-case.ts create mode 100644 src/app/modules/improvements/data/use-cases/remote-delete-improvement-use-case.ts create mode 100644 src/app/modules/improvements/data/use-cases/remote-get-improvement-use-case.ts create mode 100644 src/app/modules/improvements/data/use-cases/remote-get-improvements-use-case.ts create mode 100644 src/app/modules/improvements/data/use-cases/remote-update-improvement-use-case.ts create mode 100644 src/app/modules/improvements/domain/models/improvements-model.ts create mode 100644 src/app/modules/improvements/domain/use-cases/create-improvement-use-case.ts create mode 100644 src/app/modules/improvements/domain/use-cases/delete-improvement-use-case.ts create mode 100644 src/app/modules/improvements/domain/use-cases/get-improvement-use-case.ts create mode 100644 src/app/modules/improvements/domain/use-cases/get-improvements-use-case.ts create mode 100644 src/app/modules/improvements/domain/use-cases/index.ts create mode 100644 src/app/modules/improvements/domain/use-cases/update-improvement-use-case.ts create mode 100644 src/app/modules/improvements/main/factories/use-cases/index.ts create mode 100644 src/app/modules/improvements/main/factories/use-cases/remote-create-improvement-use-case-factory.ts create mode 100644 src/app/modules/improvements/main/factories/use-cases/remote-delete-improvement-use-case-factory.ts create mode 100644 src/app/modules/improvements/main/factories/use-cases/remote-get-improvement-use-case-factory.ts create mode 100644 src/app/modules/improvements/main/factories/use-cases/remote-get-improvements-use-case-factory.ts create mode 100644 src/app/modules/improvements/main/factories/use-cases/remote-update-improvement-use-case-factory.ts create mode 100644 src/app/modules/improvements/mocks/handlers/create-improvement-handler.ts create mode 100644 src/app/modules/improvements/mocks/handlers/delete-improvement-handler.ts create mode 100644 src/app/modules/improvements/mocks/handlers/get-improvement-handler.ts create mode 100644 src/app/modules/improvements/mocks/handlers/get-improvements-handler.ts create mode 100644 src/app/modules/improvements/mocks/handlers/index.ts create mode 100644 src/app/modules/improvements/mocks/handlers/update-improvement-handler.ts create mode 100644 src/app/modules/improvements/presentation/components/improvement-data-table/improvement-data-table.hook.tsx create mode 100644 src/app/modules/improvements/presentation/components/improvement-data-table/improvement-data-table.tsx create mode 100644 src/app/modules/improvements/presentation/components/improvement-data-table/index.ts create mode 100644 src/app/modules/improvements/presentation/components/improvement-delete-dialog/improvement-delete-dialog.tsx create mode 100644 src/app/modules/improvements/presentation/components/improvement-delete-dialog/index.ts create mode 100644 src/app/modules/improvements/presentation/contexts/improvement-context.tsx create mode 100644 src/app/modules/improvements/presentation/forms/improvement-form/create-improvement-form.tsx create mode 100644 src/app/modules/improvements/presentation/forms/improvement-form/edit-improvement-form.tsx create mode 100644 src/app/modules/improvements/presentation/forms/improvement-form/improvement-form-inputs.tsx create mode 100644 src/app/modules/improvements/presentation/forms/improvement-form/improvement-form.tsx create mode 100644 src/app/modules/improvements/presentation/forms/improvement-form/improvement-initial-form-data.ts create mode 100644 src/app/modules/improvements/presentation/forms/improvement-form/index.ts create mode 100644 src/app/modules/improvements/presentation/hooks/improvement-context.hook.ts create mode 100644 src/app/modules/improvements/presentation/hooks/queries/improvement-query.hook.ts create mode 100644 src/app/modules/improvements/presentation/hooks/queries/improvements-query.hook.ts create mode 100644 src/app/modules/improvements/presentation/screens/improvements-screen.tsx create mode 100644 src/app/modules/improvements/presentation/types.ts create mode 100644 src/app/modules/improvements/presentation/validation/improvement-form-schema.ts create mode 100644 src/app/modules/machines/data/use-cases/index.ts create mode 100644 src/app/modules/machines/data/use-cases/remote-create-machine-use-case.ts create mode 100644 src/app/modules/machines/data/use-cases/remote-delete-machine-use-case.ts create mode 100644 src/app/modules/machines/data/use-cases/remote-get-machine-use-case.ts create mode 100644 src/app/modules/machines/data/use-cases/remote-get-machines-use-case.ts create mode 100644 src/app/modules/machines/data/use-cases/remote-update-machine-use-case.ts create mode 100644 src/app/modules/machines/domain/models/machines-model.ts create mode 100644 src/app/modules/machines/domain/use-cases/create-machine-use-case.ts create mode 100644 src/app/modules/machines/domain/use-cases/delete-machine-use-case.ts create mode 100644 src/app/modules/machines/domain/use-cases/get-machine-use-case.ts create mode 100644 src/app/modules/machines/domain/use-cases/get-machines-use-case.ts create mode 100644 src/app/modules/machines/domain/use-cases/index.ts create mode 100644 src/app/modules/machines/domain/use-cases/update-machine-use-case.ts create mode 100644 src/app/modules/machines/main/factories/use-cases/index.ts create mode 100644 src/app/modules/machines/main/factories/use-cases/remote-create-machine-use-case-factory.ts create mode 100644 src/app/modules/machines/main/factories/use-cases/remote-delete-machine-use-case-factory.ts create mode 100644 src/app/modules/machines/main/factories/use-cases/remote-get-machine-use-case-factory.ts create mode 100644 src/app/modules/machines/main/factories/use-cases/remote-get-machines-use-case-factory.ts create mode 100644 src/app/modules/machines/main/factories/use-cases/remote-update-machine-use-case-factory.ts create mode 100644 src/app/modules/machines/mocks/handlers/create-machine-handler.ts create mode 100644 src/app/modules/machines/mocks/handlers/delete-machine-handler.ts create mode 100644 src/app/modules/machines/mocks/handlers/get-machine-handler.ts create mode 100644 src/app/modules/machines/mocks/handlers/get-machines-handler.ts create mode 100644 src/app/modules/machines/mocks/handlers/index.ts create mode 100644 src/app/modules/machines/mocks/handlers/update-machine-handler.ts create mode 100644 src/app/modules/machines/presentation/components/machine-data-table/index.ts create mode 100644 src/app/modules/machines/presentation/components/machine-data-table/machine-data-table.hook.tsx create mode 100644 src/app/modules/machines/presentation/components/machine-data-table/machine-data-table.tsx create mode 100644 src/app/modules/machines/presentation/components/machine-delete-dialog/index.ts create mode 100644 src/app/modules/machines/presentation/components/machine-delete-dialog/machine-delete-dialog.tsx create mode 100644 src/app/modules/machines/presentation/contexts/machine-context.tsx create mode 100644 src/app/modules/machines/presentation/forms/machine-form/create-machine-form.tsx create mode 100644 src/app/modules/machines/presentation/forms/machine-form/edit-machine-form.tsx create mode 100644 src/app/modules/machines/presentation/forms/machine-form/index.ts create mode 100644 src/app/modules/machines/presentation/forms/machine-form/machine-form-inputs.tsx create mode 100644 src/app/modules/machines/presentation/forms/machine-form/machine-form.tsx create mode 100644 src/app/modules/machines/presentation/forms/machine-form/machine-initial-form-data.ts create mode 100644 src/app/modules/machines/presentation/hooks/machine-context.hook.ts create mode 100644 src/app/modules/machines/presentation/hooks/queries/machine-query.hook.ts create mode 100644 src/app/modules/machines/presentation/hooks/queries/machines-query.hook.ts create mode 100644 src/app/modules/machines/presentation/screens/machines-screen.tsx create mode 100644 src/app/modules/machines/presentation/types.ts create mode 100644 src/app/modules/machines/presentation/validation/machine-form-schema.ts create mode 100644 src/app/modules/properties/data/use-cases/index.ts create mode 100644 src/app/modules/properties/data/use-cases/remote-create-property-use-case.ts create mode 100644 src/app/modules/properties/data/use-cases/remote-delete-property-use-case.ts create mode 100644 src/app/modules/properties/data/use-cases/remote-get-properties-use-case.ts create mode 100644 src/app/modules/properties/data/use-cases/remote-get-property-use-case.ts create mode 100644 src/app/modules/properties/data/use-cases/remote-update-property-use-case.ts create mode 100644 src/app/modules/properties/domain/models/properties-model.ts create mode 100644 src/app/modules/properties/domain/use-cases/create-property-use-case.ts create mode 100644 src/app/modules/properties/domain/use-cases/delete-property-use-case.ts create mode 100644 src/app/modules/properties/domain/use-cases/get-properties-use-case.ts create mode 100644 src/app/modules/properties/domain/use-cases/get-property-use-case.ts create mode 100644 src/app/modules/properties/domain/use-cases/index.ts create mode 100644 src/app/modules/properties/domain/use-cases/update-property-use-case.ts create mode 100644 src/app/modules/properties/main/factories/use-cases/index.ts create mode 100644 src/app/modules/properties/main/factories/use-cases/remote-create-property-use-case-factory.ts create mode 100644 src/app/modules/properties/main/factories/use-cases/remote-delete-property-use-case-factory.ts create mode 100644 src/app/modules/properties/main/factories/use-cases/remote-get-properties-use-case-factory.ts create mode 100644 src/app/modules/properties/main/factories/use-cases/remote-get-property-use-case-factory.ts create mode 100644 src/app/modules/properties/main/factories/use-cases/remote-update-property-use-case-factory.ts create mode 100644 src/app/modules/properties/mocks/handlers/create-property-handler.ts create mode 100644 src/app/modules/properties/mocks/handlers/delete-property-handler.ts create mode 100644 src/app/modules/properties/mocks/handlers/get-properties-handler.ts create mode 100644 src/app/modules/properties/mocks/handlers/get-property-handler.ts create mode 100644 src/app/modules/properties/mocks/handlers/index.ts create mode 100644 src/app/modules/properties/mocks/handlers/update-property-handler.ts create mode 100644 src/app/modules/properties/presentation/components/property-data-table/index.ts create mode 100644 src/app/modules/properties/presentation/components/property-data-table/property-data-table.hook.tsx create mode 100644 src/app/modules/properties/presentation/components/property-data-table/property-data-table.tsx create mode 100644 src/app/modules/properties/presentation/components/property-delete-dialog/index.ts create mode 100644 src/app/modules/properties/presentation/components/property-delete-dialog/property-delete-dialog.tsx create mode 100644 src/app/modules/properties/presentation/contexts/property-context.tsx create mode 100644 src/app/modules/properties/presentation/forms/property-form/create-property-form.tsx create mode 100644 src/app/modules/properties/presentation/forms/property-form/edit-property-form.tsx create mode 100644 src/app/modules/properties/presentation/forms/property-form/index.ts create mode 100644 src/app/modules/properties/presentation/forms/property-form/property-form.tsx create mode 100644 src/app/modules/properties/presentation/forms/property-form/property-initial-form-data.ts create mode 100644 src/app/modules/properties/presentation/forms/property-form/tabs/property-form-collaborators-tab.tsx create mode 100644 src/app/modules/properties/presentation/forms/property-form/tabs/property-form-general-tab.tsx create mode 100644 src/app/modules/properties/presentation/forms/property-form/tabs/property-form-localization-tab.tsx create mode 100644 src/app/modules/properties/presentation/forms/property-form/tabs/property-form-total-area-tab.tsx create mode 100644 src/app/modules/properties/presentation/hooks/property-context.hook.ts create mode 100644 src/app/modules/properties/presentation/hooks/queries/properties-query.hook.ts create mode 100644 src/app/modules/properties/presentation/hooks/queries/property-query.hook.ts create mode 100644 src/app/modules/properties/presentation/screens/properties-screen.tsx create mode 100644 src/app/modules/properties/presentation/screens/property-screen.tsx create mode 100644 src/app/modules/properties/presentation/types.ts create mode 100644 src/app/modules/properties/presentation/validations/property-form-schema.ts create mode 100644 src/app/pages/forages-page.tsx create mode 100644 src/app/pages/login-page.tsx create mode 100644 src/app/pages/properties-page.tsx create mode 100644 src/app/pages/property-page.tsx create mode 100644 src/app/pages/sign-up-page.tsx create mode 100644 src/assets/imgs/logo-utfpr.png create mode 100644 src/core/data/protocols/http/http-client.ts create mode 100644 src/core/data/protocols/http/index.ts create mode 100644 src/core/data/use-cases/breeds-use-cases/index.ts create mode 100644 src/core/data/use-cases/breeds-use-cases/remote-get-all-breeds-use-case.ts create mode 100644 src/core/data/use-cases/cep-use-cases/index.ts create mode 100644 src/core/data/use-cases/cep-use-cases/remote-get-cep-use-case.ts create mode 100644 src/core/data/use-cases/users-use-cases/index.ts create mode 100644 src/core/data/use-cases/users-use-cases/remote-get-all-users-use-case.ts create mode 100644 src/core/data/use-cases/users-use-cases/remote-get-me-use-case.ts create mode 100644 src/core/data/use-cases/vegetables-use-cases/index.ts create mode 100644 src/core/data/use-cases/vegetables-use-cases/remote-get-all-vegetables-use-case.ts create mode 100644 src/core/domain/errors/access-denied-error.ts create mode 100644 src/core/domain/errors/bad-request-error.ts create mode 100644 src/core/domain/errors/email-in-use-error.ts create mode 100644 src/core/domain/errors/forbidden-error.ts create mode 100644 src/core/domain/errors/index.ts create mode 100644 src/core/domain/errors/invalid-credentials-error.ts create mode 100644 src/core/domain/errors/not-found-error.ts create mode 100644 src/core/domain/errors/unexpected-error.ts create mode 100644 src/core/domain/models/breeds-model.ts create mode 100644 src/core/domain/models/cep-model.ts create mode 100644 src/core/domain/models/users-model.ts create mode 100644 src/core/domain/models/vegetables-model.ts create mode 100644 src/core/domain/types/file-type.ts create mode 100644 src/core/domain/types/filter-type.ts create mode 100644 src/core/domain/types/index.ts create mode 100644 src/core/domain/types/list-params-type.ts create mode 100644 src/core/domain/types/list-response-type.ts create mode 100644 src/core/domain/types/map-api-properties-type.ts create mode 100644 src/core/domain/types/merge-union-type.ts create mode 100644 src/core/domain/types/nested-keyof-types.ts create mode 100644 src/core/domain/types/option-types.ts create mode 100644 src/core/domain/types/request-type.ts create mode 100644 src/core/domain/types/sort-type.ts create mode 100644 src/core/domain/types/with-id-type.ts create mode 100644 src/core/domain/types/with-required-type.ts create mode 100644 src/core/domain/use-cases/breeds-use-cases/get-all-breeds-use-case.ts create mode 100644 src/core/domain/use-cases/breeds-use-cases/index.ts create mode 100644 src/core/domain/use-cases/cep-use-cases/get-cep-use-case.ts create mode 100644 src/core/domain/use-cases/cep-use-cases/index.ts create mode 100644 src/core/domain/use-cases/users-use-cases/get-all-users-use-case.ts create mode 100644 src/core/domain/use-cases/users-use-cases/get-me-use-case.ts create mode 100644 src/core/domain/use-cases/users-use-cases/index.ts create mode 100644 src/core/domain/use-cases/vegetables-use-cases/get-all-vegetables-use-case.ts create mode 100644 src/core/domain/use-cases/vegetables-use-cases/index.ts create mode 100644 src/core/env/env.ts create mode 100644 src/core/env/index.ts create mode 100644 src/core/infra/cache/index.ts create mode 100644 src/core/infra/cache/local-storage-adapter.ts create mode 100644 src/core/infra/http/api-http-client/api-http-client.ts create mode 100644 src/core/infra/http/api-http-client/index.ts create mode 100644 src/core/infra/http/api-http-client/interceptors/auth-interceptor.ts create mode 100644 src/core/infra/http/brasil-api-http-client.ts create mode 100644 src/core/infra/http/index.ts create mode 100644 src/core/infra/http/ui-avatars-http-client.ts create mode 100644 src/core/main/factories/http/api-http-client-factory.ts create mode 100644 src/core/main/factories/http/brasil-api-http-client-factory.ts create mode 100644 src/core/main/factories/http/index.ts create mode 100644 src/core/main/factories/use-cases/breeds-use-cases/index.ts create mode 100644 src/core/main/factories/use-cases/breeds-use-cases/remote-get-all-breeds-use-case-factory.ts create mode 100644 src/core/main/factories/use-cases/cep-use-cases/index.ts create mode 100644 src/core/main/factories/use-cases/cep-use-cases/remote-get-cep-use-case-factory.ts create mode 100644 src/core/main/factories/use-cases/users-use-cases/index.ts create mode 100644 src/core/main/factories/use-cases/users-use-cases/remote-get-all-users-use-case-factory.ts create mode 100644 src/core/main/factories/use-cases/users-use-cases/remote-get-me-use-case-factory.ts create mode 100644 src/core/main/factories/use-cases/vegetables-use-cases/index.ts create mode 100644 src/core/main/factories/use-cases/vegetables-use-cases/remote-get-all-vegetables-use-case-factory.ts create mode 100644 src/core/main/proxies/index.ts create mode 100644 src/core/main/proxies/private-router-proxy.tsx create mode 100644 src/core/main/routes/generate-route-path.ts create mode 100644 src/core/main/routes/index.tsx create mode 100644 src/core/main/routes/menu.ts create mode 100644 src/core/main/routes/paths.ts create mode 100644 src/core/main/routes/routes.ts create mode 100644 src/core/main/routes/types.ts create mode 100644 src/core/masker/index.ts create mode 100644 src/core/masker/masker.ts create mode 100644 src/core/masker/masks/cep-mask.ts create mode 100644 src/core/masker/masks/cpf-mask.ts create mode 100644 src/core/masker/masks/float-mask.ts create mode 100644 src/core/masker/masks/index.ts create mode 100644 src/core/masker/masks/money-mask.ts create mode 100644 src/core/masker/masks/only-numbers-mask.ts create mode 100644 src/core/masker/masks/percent-mask.ts create mode 100644 src/core/masker/masks/phone-mask.ts create mode 100644 src/core/mocks/browser.ts create mode 100644 src/core/mocks/handlers/breeds-handlers/get-all-breeds-handler.ts create mode 100644 src/core/mocks/handlers/breeds-handlers/index.ts create mode 100644 src/core/mocks/handlers/users-handlers/get-all-users-handler.ts create mode 100644 src/core/mocks/handlers/users-handlers/get-me-handler.ts create mode 100644 src/core/mocks/handlers/users-handlers/index.ts create mode 100644 src/core/mocks/handlers/vegetables-handlers/get-all-vegetables-handler.ts create mode 100644 src/core/mocks/handlers/vegetables-handlers/index.ts create mode 100644 src/core/mocks/lib/index.ts create mode 100644 src/core/mocks/middleware/index.ts create mode 100644 src/core/mocks/middleware/with-auth.ts create mode 100644 src/core/mocks/middleware/with-delay.ts create mode 100644 src/core/mocks/types/mock-params-type.ts create mode 100644 src/core/mocks/types/mock-response-type.ts create mode 100644 src/core/mocks/utils/date.ts create mode 100644 src/core/mocks/utils/filter-data.ts create mode 100644 src/core/mocks/utils/get-nested-value.ts create mode 100644 src/core/mocks/utils/index.ts create mode 100644 src/core/mocks/utils/normalize-filters.ts create mode 100644 src/core/mocks/utils/paginate-data.ts create mode 100644 src/core/mocks/utils/sort-data.ts create mode 100644 src/core/presentation/components/ui/alert-dialog/action.tsx create mode 100644 src/core/presentation/components/ui/alert-dialog/cancel.tsx create mode 100644 src/core/presentation/components/ui/alert-dialog/content.tsx create mode 100644 src/core/presentation/components/ui/alert-dialog/description.tsx create mode 100644 src/core/presentation/components/ui/alert-dialog/footer.tsx create mode 100644 src/core/presentation/components/ui/alert-dialog/header.tsx create mode 100644 src/core/presentation/components/ui/alert-dialog/index.stories.tsx create mode 100644 src/core/presentation/components/ui/alert-dialog/index.ts create mode 100644 src/core/presentation/components/ui/alert-dialog/overlay.tsx create mode 100644 src/core/presentation/components/ui/alert-dialog/title.tsx create mode 100644 src/core/presentation/components/ui/avatar/fallback.tsx create mode 100644 src/core/presentation/components/ui/avatar/image.tsx create mode 100644 src/core/presentation/components/ui/avatar/index.stories.tsx create mode 100644 src/core/presentation/components/ui/avatar/index.ts create mode 100644 src/core/presentation/components/ui/avatar/root.tsx create mode 100644 src/core/presentation/components/ui/breadcrumb/ellipsis.tsx create mode 100644 src/core/presentation/components/ui/breadcrumb/index.stories.tsx create mode 100644 src/core/presentation/components/ui/breadcrumb/index.ts create mode 100644 src/core/presentation/components/ui/breadcrumb/item.tsx create mode 100644 src/core/presentation/components/ui/breadcrumb/link.tsx create mode 100644 src/core/presentation/components/ui/breadcrumb/list.tsx create mode 100644 src/core/presentation/components/ui/breadcrumb/page.tsx create mode 100644 src/core/presentation/components/ui/breadcrumb/root.tsx create mode 100644 src/core/presentation/components/ui/breadcrumb/separator.tsx create mode 100644 src/core/presentation/components/ui/button/button.tsx create mode 100644 src/core/presentation/components/ui/button/index.stories.tsx create mode 100644 src/core/presentation/components/ui/button/index.ts create mode 100644 src/core/presentation/components/ui/button/variants.ts create mode 100644 src/core/presentation/components/ui/calendar/calendar.tsx create mode 100644 src/core/presentation/components/ui/calendar/index.stories.tsx create mode 100644 src/core/presentation/components/ui/calendar/index.ts create mode 100644 src/core/presentation/components/ui/card/content.tsx create mode 100644 src/core/presentation/components/ui/card/description.tsx create mode 100644 src/core/presentation/components/ui/card/footer.tsx create mode 100644 src/core/presentation/components/ui/card/header.tsx create mode 100644 src/core/presentation/components/ui/card/index.stories.tsx create mode 100644 src/core/presentation/components/ui/card/index.ts create mode 100644 src/core/presentation/components/ui/card/root.tsx create mode 100644 src/core/presentation/components/ui/card/title.tsx create mode 100644 src/core/presentation/components/ui/combobox/combobox.tsx create mode 100644 src/core/presentation/components/ui/combobox/index.stories.tsx create mode 100644 src/core/presentation/components/ui/combobox/index.ts create mode 100644 src/core/presentation/components/ui/command/dialog.tsx create mode 100644 src/core/presentation/components/ui/command/empty.tsx create mode 100644 src/core/presentation/components/ui/command/group.tsx create mode 100644 src/core/presentation/components/ui/command/index.stories.tsx create mode 100644 src/core/presentation/components/ui/command/index.ts create mode 100644 src/core/presentation/components/ui/command/input.tsx create mode 100644 src/core/presentation/components/ui/command/item.tsx create mode 100644 src/core/presentation/components/ui/command/list.tsx create mode 100644 src/core/presentation/components/ui/command/loading.tsx create mode 100644 src/core/presentation/components/ui/command/root.tsx create mode 100644 src/core/presentation/components/ui/command/separator.tsx create mode 100644 src/core/presentation/components/ui/command/shortcut.tsx create mode 100644 src/core/presentation/components/ui/data-table/data-table.tsx create mode 100644 src/core/presentation/components/ui/data-table/index.stories.tsx create mode 100644 src/core/presentation/components/ui/data-table/index.ts create mode 100644 src/core/presentation/components/ui/date-picker/date-picker.tsx create mode 100644 src/core/presentation/components/ui/date-picker/index.stories.tsx create mode 100644 src/core/presentation/components/ui/date-picker/index.ts create mode 100644 src/core/presentation/components/ui/dialog/content.tsx create mode 100644 src/core/presentation/components/ui/dialog/description.tsx create mode 100644 src/core/presentation/components/ui/dialog/footer.tsx create mode 100644 src/core/presentation/components/ui/dialog/header.tsx create mode 100644 src/core/presentation/components/ui/dialog/index.stories.tsx create mode 100644 src/core/presentation/components/ui/dialog/index.ts create mode 100644 src/core/presentation/components/ui/dialog/overlay.tsx create mode 100644 src/core/presentation/components/ui/dialog/title.tsx create mode 100644 src/core/presentation/components/ui/dropdown/checkbox-item.tsx create mode 100644 src/core/presentation/components/ui/dropdown/content.tsx create mode 100644 src/core/presentation/components/ui/dropdown/index.stories.tsx create mode 100644 src/core/presentation/components/ui/dropdown/index.ts create mode 100644 src/core/presentation/components/ui/dropdown/item.tsx create mode 100644 src/core/presentation/components/ui/dropdown/label.tsx create mode 100644 src/core/presentation/components/ui/dropdown/radio-item.tsx create mode 100644 src/core/presentation/components/ui/dropdown/separator.tsx create mode 100644 src/core/presentation/components/ui/dropdown/shortcut.tsx create mode 100644 src/core/presentation/components/ui/dropdown/sub-content.tsx create mode 100644 src/core/presentation/components/ui/dropdown/sub-trigger.tsx create mode 100644 src/core/presentation/components/ui/dropzone/dropzone.tsx create mode 100644 src/core/presentation/components/ui/dropzone/index.stories.tsx create mode 100644 src/core/presentation/components/ui/dropzone/index.ts create mode 100644 src/core/presentation/components/ui/form/contexts/form-field.context.ts create mode 100644 src/core/presentation/components/ui/form/contexts/form-item.context.ts create mode 100644 src/core/presentation/components/ui/form/contexts/index.ts create mode 100644 src/core/presentation/components/ui/form/control.tsx create mode 100644 src/core/presentation/components/ui/form/description.tsx create mode 100644 src/core/presentation/components/ui/form/field.tsx create mode 100644 src/core/presentation/components/ui/form/hooks/form-field.hook.ts create mode 100644 src/core/presentation/components/ui/form/hooks/index.ts create mode 100644 src/core/presentation/components/ui/form/index.stories.tsx create mode 100644 src/core/presentation/components/ui/form/index.ts create mode 100644 src/core/presentation/components/ui/form/item.tsx create mode 100644 src/core/presentation/components/ui/form/label.tsx create mode 100644 src/core/presentation/components/ui/form/message.tsx create mode 100644 src/core/presentation/components/ui/header/header.tsx create mode 100644 src/core/presentation/components/ui/header/index.stories.tsx create mode 100644 src/core/presentation/components/ui/header/index.ts create mode 100644 src/core/presentation/components/ui/index.ts create mode 100644 src/core/presentation/components/ui/input/index.stories.tsx create mode 100644 src/core/presentation/components/ui/input/index.ts create mode 100644 src/core/presentation/components/ui/input/input.hook.ts create mode 100644 src/core/presentation/components/ui/input/input.tsx create mode 100644 src/core/presentation/components/ui/label/index.stories.tsx create mode 100644 src/core/presentation/components/ui/label/index.ts create mode 100644 src/core/presentation/components/ui/label/label.tsx create mode 100644 src/core/presentation/components/ui/loading/index.stories.tsx create mode 100644 src/core/presentation/components/ui/loading/index.ts create mode 100644 src/core/presentation/components/ui/loading/loading.tsx create mode 100644 src/core/presentation/components/ui/pagination/content.tsx create mode 100644 src/core/presentation/components/ui/pagination/ellipsis.tsx create mode 100644 src/core/presentation/components/ui/pagination/index.stories.tsx create mode 100644 src/core/presentation/components/ui/pagination/index.ts create mode 100644 src/core/presentation/components/ui/pagination/item.tsx create mode 100644 src/core/presentation/components/ui/pagination/link.tsx create mode 100644 src/core/presentation/components/ui/pagination/next.tsx create mode 100644 src/core/presentation/components/ui/pagination/previous.tsx create mode 100644 src/core/presentation/components/ui/pagination/root.tsx create mode 100644 src/core/presentation/components/ui/popover/content.tsx create mode 100644 src/core/presentation/components/ui/popover/index.stories.tsx create mode 100644 src/core/presentation/components/ui/popover/index.ts create mode 100644 src/core/presentation/components/ui/scroll-area/index.ts create mode 100644 src/core/presentation/components/ui/scroll-area/root.tsx create mode 100644 src/core/presentation/components/ui/scroll-area/scroll-bar.tsx create mode 100644 src/core/presentation/components/ui/select/content.tsx create mode 100644 src/core/presentation/components/ui/select/index.stories.tsx create mode 100644 src/core/presentation/components/ui/select/index.ts create mode 100644 src/core/presentation/components/ui/select/item.tsx create mode 100644 src/core/presentation/components/ui/select/label.tsx create mode 100644 src/core/presentation/components/ui/select/scroll-down-button.tsx create mode 100644 src/core/presentation/components/ui/select/scroll-up-button.tsx create mode 100644 src/core/presentation/components/ui/select/separator.tsx create mode 100644 src/core/presentation/components/ui/select/trigger.tsx create mode 100644 src/core/presentation/components/ui/sheet/content.tsx create mode 100644 src/core/presentation/components/ui/sheet/description.tsx create mode 100644 src/core/presentation/components/ui/sheet/footer.tsx create mode 100644 src/core/presentation/components/ui/sheet/header.tsx create mode 100644 src/core/presentation/components/ui/sheet/index.stories.tsx create mode 100644 src/core/presentation/components/ui/sheet/index.ts create mode 100644 src/core/presentation/components/ui/sheet/overlay.tsx create mode 100644 src/core/presentation/components/ui/sheet/title.tsx create mode 100644 src/core/presentation/components/ui/sidebar/index.stories.tsx create mode 100644 src/core/presentation/components/ui/sidebar/index.ts create mode 100644 src/core/presentation/components/ui/sidebar/item.tsx create mode 100644 src/core/presentation/components/ui/sidebar/list.tsx create mode 100644 src/core/presentation/components/ui/sidebar/root.tsx create mode 100644 src/core/presentation/components/ui/table/body.tsx create mode 100644 src/core/presentation/components/ui/table/caption.tsx create mode 100644 src/core/presentation/components/ui/table/cell.tsx create mode 100644 src/core/presentation/components/ui/table/footer.tsx create mode 100644 src/core/presentation/components/ui/table/head.tsx create mode 100644 src/core/presentation/components/ui/table/header.tsx create mode 100644 src/core/presentation/components/ui/table/index.stories.tsx create mode 100644 src/core/presentation/components/ui/table/index.ts create mode 100644 src/core/presentation/components/ui/table/root.tsx create mode 100644 src/core/presentation/components/ui/table/row.tsx create mode 100644 src/core/presentation/components/ui/tabs/content.tsx create mode 100644 src/core/presentation/components/ui/tabs/index.stories.tsx create mode 100644 src/core/presentation/components/ui/tabs/index.ts create mode 100644 src/core/presentation/components/ui/tabs/list.tsx create mode 100644 src/core/presentation/components/ui/tabs/trigger.tsx create mode 100644 src/core/presentation/components/ui/textarea/index.stories.tsx create mode 100644 src/core/presentation/components/ui/textarea/index.ts create mode 100644 src/core/presentation/components/ui/textarea/textarea.tsx create mode 100644 src/core/presentation/components/ui/tooltip/content.tsx create mode 100644 src/core/presentation/components/ui/tooltip/index.stories.tsx create mode 100644 src/core/presentation/components/ui/tooltip/index.ts create mode 100644 src/core/presentation/components/ui/wave/index.stories.tsx create mode 100644 src/core/presentation/components/ui/wave/index.ts create mode 100644 src/core/presentation/components/ui/wave/wave.tsx create mode 100644 src/core/presentation/components/utils/compose/compose.tsx create mode 100644 src/core/presentation/components/utils/compose/index.ts create mode 100644 src/core/presentation/components/utils/grouper/grouper.tsx create mode 100644 src/core/presentation/components/utils/grouper/index.stories.tsx create mode 100644 src/core/presentation/components/utils/grouper/index.ts create mode 100644 src/core/presentation/components/utils/index.ts create mode 100644 src/core/presentation/containers/index.ts create mode 100644 src/core/presentation/containers/logged-container/index.ts create mode 100644 src/core/presentation/containers/logged-container/logged-container.tsx create mode 100644 src/core/presentation/contexts/auth-context/auth.context.tsx create mode 100644 src/core/presentation/contexts/auth-context/index.ts create mode 100644 src/core/presentation/contexts/create-custom-context.tsx create mode 100644 src/core/presentation/contexts/index.ts create mode 100644 src/core/presentation/hooks/auth.hook.ts create mode 100644 src/core/presentation/hooks/debounce.hook.ts create mode 100644 src/core/presentation/hooks/hook-form.hook.ts create mode 100644 src/core/presentation/hooks/idr-navigation.hook.ts create mode 100644 src/core/presentation/hooks/index.ts create mode 100644 src/core/presentation/hooks/queries/all-breeds-query.hook.ts create mode 100644 src/core/presentation/hooks/queries/all-users-query.hook.ts create mode 100644 src/core/presentation/hooks/queries/all-vegetables-query.hook.ts create mode 100644 src/core/presentation/hooks/queries/cep-query.hook.ts create mode 100644 src/core/presentation/hooks/queries/index.ts create mode 100644 src/core/presentation/hooks/timeout.hook.ts create mode 100644 src/core/presentation/hooks/window-resize.hook.ts create mode 100644 src/core/styles/globals.css create mode 100644 src/core/utils/axios/catch-error.ts create mode 100644 src/core/utils/axios/index.ts create mode 100644 src/core/utils/index.ts create mode 100644 src/core/utils/object/flatten-object.ts create mode 100644 src/core/utils/object/index.ts create mode 100644 src/core/utils/object/to-option.ts create mode 100644 src/core/utils/string/get-initials.ts create mode 100644 src/core/utils/string/index.ts create mode 100644 src/core/utils/string/mime-type-to-extensions.ts create mode 100644 src/core/utils/tailwind/index.ts create mode 100644 src/core/utils/time/freeze.ts create mode 100644 src/core/utils/time/index.ts create mode 100644 src/core/validation/schemas/file-type-schema.ts create mode 100644 src/core/validation/schemas/index.ts create mode 100644 src/core/validation/schemas/option-schema.ts create mode 100644 src/core/validation/validators/cpf-validation.ts create mode 100644 src/core/validation/validators/email-validation.ts create mode 100644 src/core/validation/validators/index.ts create mode 100644 src/core/validation/validators/money-validation.ts create mode 100644 src/core/validation/validators/password-validation.ts create mode 100644 src/core/validation/validators/percent-validation.ts create mode 100644 src/core/validation/validators/phone-validation.ts create mode 100644 src/core/validation/validators/year-validation.ts create mode 100644 src/main.tsx create mode 100644 src/vite-env.d.ts create mode 100644 tailwind.config.js create mode 100644 tsconfig.app.json create mode 100644 tsconfig.json create mode 100644 tsconfig.node.json create mode 100644 vite.config.ts diff --git a/.commitlintrc.json b/.commitlintrc.json new file mode 100644 index 00000000..c30e5a97 --- /dev/null +++ b/.commitlintrc.json @@ -0,0 +1,3 @@ +{ + "extends": ["@commitlint/config-conventional"] +} diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 00000000..17f81e94 --- /dev/null +++ b/.dockerignore @@ -0,0 +1,6 @@ +node_modules +.pnpm +dist +.git +.dockerignore +Dockerfile diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 00000000..f7a165c7 --- /dev/null +++ b/.editorconfig @@ -0,0 +1,13 @@ +# Editor configuration, see http://editorconfig.org +root = true + +[*] +charset = utf-8 +indent_style = space +indent_size = 2 +trim_trailing_whitespace = true +end_of_line = lf + +[*.md] +max_line_length = off +trim_trailing_whitespace = false \ No newline at end of file diff --git a/.env.example b/.env.example new file mode 100644 index 00000000..fac440f0 --- /dev/null +++ b/.env.example @@ -0,0 +1,2 @@ +VITE_API_BASE_URL= +VITE_API_MOCKED= \ No newline at end of file diff --git a/.github/workflows/development-ci.yml b/.github/workflows/development-ci.yml new file mode 100644 index 00000000..351b838b --- /dev/null +++ b/.github/workflows/development-ci.yml @@ -0,0 +1,55 @@ +name: Development Build + +on: + pull_request: + branches: + - develop + +jobs: + setup: + runs-on: ubuntu-latest + timeout-minutes: 20 + + steps: + - name: Checkout repository + uses: actions/checkout@v3 + with: + fetch-depth: 0 + + - name: Setup Node + uses: actions/setup-node@v3 + with: + node-version: 20 + + - uses: pnpm/action-setup@v2 + name: Install pnpm + id: pnpm-install + with: + version: 9 + run_install: false + + - name: Get pnpm store directory + id: pnpm-cache + shell: bash + run: | + echo "STORE_PATH=$(pnpm store path)" >> $GITHUB_OUTPUT + + - uses: actions/cache@v3 + name: Setup pnpm cache + with: + path: ${{ steps.pnpm-cache.outputs.STORE_PATH }} + key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }} + restore-keys: | + ${{ runner.os }}-pnpm-store- + + - name: Install dependencies + run: pnpm install + + - name: Generate seed + run: pnpm seed:mock + + - name: Run Linters + run: pnpm lint:ci && pnpm format:ci + + - name: Check if build fails + run: pnpm build diff --git a/.github/workflows/production-ci.yml b/.github/workflows/production-ci.yml new file mode 100644 index 00000000..0917cf19 --- /dev/null +++ b/.github/workflows/production-ci.yml @@ -0,0 +1,55 @@ +name: Production Build + +on: + pull_request: + branches: + - main + +jobs: + setup: + runs-on: ubuntu-latest + timeout-minutes: 20 + + steps: + - name: Checkout repository + uses: actions/checkout@v3 + with: + fetch-depth: 0 + + - name: Setup Node + uses: actions/setup-node@v3 + with: + node-version: 20 + + - uses: pnpm/action-setup@v2 + name: Install pnpm + id: pnpm-install + with: + version: 9 + run_install: false + + - name: Get pnpm store directory + id: pnpm-cache + shell: bash + run: | + echo "STORE_PATH=$(pnpm store path)" >> $GITHUB_OUTPUT + + - uses: actions/cache@v3 + name: Setup pnpm cache + with: + path: ${{ steps.pnpm-cache.outputs.STORE_PATH }} + key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }} + restore-keys: | + ${{ runner.os }}-pnpm-store- + + - name: Install dependencies + run: pnpm install + + - name: Generate seed + run: pnpm seed:mock + + - name: Run Linters + run: pnpm lint:ci && pnpm format:ci + + - name: Check if build fails + run: pnpm build diff --git a/.github/workflows/storybook-docs.yml b/.github/workflows/storybook-docs.yml new file mode 100644 index 00000000..6e19ee30 --- /dev/null +++ b/.github/workflows/storybook-docs.yml @@ -0,0 +1,54 @@ +name: Build and Deploy +on: + pull_request: + branches: + - develop + paths: + - 'src/presentation/components/**' +jobs: + build-and-deploy: + runs-on: ubuntu-latest + timeout-minutes: 20 + + steps: + - name: Checkout + uses: actions/checkout@v3 + + - name: Install Node.js + uses: actions/setup-node@v3 + with: + node-version: 20 + + - name: Install pnpm + uses: pnpm/action-setup@v2 + id: pnpm-install + with: + version: 9 + run_install: false + + - name: Get pnpm store directory + id: pnpm-cache + shell: bash + run: | + echo "STORE_PATH=$(pnpm store path)" >> $GITHUB_OUTPUT + + - uses: actions/cache@v3 + name: Setup pnpm cache + with: + path: ${{ steps.pnpm-cache.outputs.STORE_PATH }} + key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }} + restore-keys: | + ${{ runner.os }}-pnpm-store- + + - name: Install and Build 🔧 + run: | # Install npm packages and build the Storybook files + pnpm install + pnpm storybook:build + - name: Deploy 🚀 + uses: JamesIves/github-pages-deploy-action@3.6.2 + with: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + BRANCH: main # The branch the action should deploy to. + FOLDER: docs-build # The folder that the build-storybook script generates files. + CLEAN: true # Automatically remove deleted files from the deploy branch + TARGET_FOLDER: storybook-docs # The folder that we serve our Storybook files from diff --git a/.gitignore b/.gitignore new file mode 100644 index 00000000..e744412b --- /dev/null +++ b/.gitignore @@ -0,0 +1,39 @@ +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* +lerna-debug.log* + +node_modules +dist +dist-ssr +*.local + +# Editor directories and files +!.vscode/extensions.json +.idea +.DS_Store +*.suo +*.ntvs* +*.njsproj +*.sln +*.sw? + +# Enviroment +.env + +# Build +tsconfig.tsbuildinfo +storybook-docs +docs-build + +# Cache +.eslintcache + +# Mocked Database +database + +daily.mdx diff --git a/.husky/commit-msg b/.husky/commit-msg new file mode 100644 index 00000000..cfe75101 --- /dev/null +++ b/.husky/commit-msg @@ -0,0 +1 @@ +pnpm commitlint --edit $1 diff --git a/.husky/pre-commit b/.husky/pre-commit new file mode 100644 index 00000000..f9241eeb --- /dev/null +++ b/.husky/pre-commit @@ -0,0 +1 @@ +pnpm lint:staged diff --git a/.husky/pre-push b/.husky/pre-push new file mode 100644 index 00000000..41864f47 --- /dev/null +++ b/.husky/pre-push @@ -0,0 +1,2 @@ +pnpm type:check +pnpm build diff --git a/.npmrc b/.npmrc new file mode 100644 index 00000000..f87a0443 --- /dev/null +++ b/.npmrc @@ -0,0 +1 @@ +auto-install-peers=true \ No newline at end of file diff --git a/.nvmrc b/.nvmrc new file mode 100644 index 00000000..1a2f5bd2 --- /dev/null +++ b/.nvmrc @@ -0,0 +1 @@ +lts/* \ No newline at end of file diff --git a/.prettierignore b/.prettierignore new file mode 100644 index 00000000..18a8df8a --- /dev/null +++ b/.prettierignore @@ -0,0 +1,5 @@ +pnpm-lock.yaml +node_modules +docs +dist +public/mockServiceWorker.js diff --git a/.prettierrc b/.prettierrc new file mode 100644 index 00000000..1a1ef7b0 --- /dev/null +++ b/.prettierrc @@ -0,0 +1,7 @@ +{ + "semi": false, + "singleQuote": true, + "endOfLine": "auto", + "trailingComma": "es5", + "tabWidth": 2 +} diff --git a/.storybook/decorators/index.ts b/.storybook/decorators/index.ts new file mode 100644 index 00000000..6dbd436b --- /dev/null +++ b/.storybook/decorators/index.ts @@ -0,0 +1 @@ +export * from './withRouter.decorator' diff --git a/.storybook/decorators/withRouter.decorator.tsx b/.storybook/decorators/withRouter.decorator.tsx new file mode 100644 index 00000000..31f70911 --- /dev/null +++ b/.storybook/decorators/withRouter.decorator.tsx @@ -0,0 +1,9 @@ +import React from 'react' + +import { MemoryRouter } from 'react-router-dom' + +export const withRouter = (Story) => ( + + + +) diff --git a/.storybook/main.js b/.storybook/main.js new file mode 100644 index 00000000..3756ee04 --- /dev/null +++ b/.storybook/main.js @@ -0,0 +1,23 @@ +module.exports = { + stories: [ + '../**/*.stories.mdx', + '../**/*.stories.@(js|jsx|ts|tsx)', + '../**/stories.@(js|jsx|ts|tsx)', + ], + addons: [ + '@storybook/addon-links', + '@storybook/addon-essentials', + '@storybook/addon-interactions', + '@storybook/addon-themes', + ], + framework: { + name: '@storybook/react-vite', + options: {}, + }, + features: { + storyStoreV7: true, + }, + docs: { + autodocs: true, + }, +} diff --git a/.storybook/preview-head.html b/.storybook/preview-head.html new file mode 100644 index 00000000..874819fb --- /dev/null +++ b/.storybook/preview-head.html @@ -0,0 +1,15 @@ + + + + + + + diff --git a/.storybook/preview.js b/.storybook/preview.js new file mode 100644 index 00000000..33b0946e --- /dev/null +++ b/.storybook/preview.js @@ -0,0 +1,28 @@ +import { withThemeByClassName } from '@storybook/addon-themes' + +import '../src/styles/globals.css' +import { withRouter } from './decorators' + +export const parameters = { + backgrounds: { + default: 'transparent', + }, + actions: { argTypesRegex: '^on[A-Z].*' }, + controls: { + matchers: { + color: /(background|color)$/i, + date: /Date$/, + }, + }, +} + +export const decorators = [ + withRouter, + withThemeByClassName({ + themes: { + light: 'light', + dark: 'dark', + }, + defaultTheme: 'light', + }), +] diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 00000000..78e3c65d --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,8 @@ +{ + "tailwindCSS.experimental.classRegex": [ + "clsx\\(`([^`]*)`\\)", + "clsx`([^`]*)`", + "cva\\(`([^`]*)`\\)", + "cva`([^`]*)`" + ] +} diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 00000000..273a5911 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,30 @@ +FROM node:22.18-alpine AS build-step + +WORKDIR /app + +# Copiar apenas os manifests +COPY package.json pnpm-lock.yaml ./ + +# Instalar dependências +RUN npm install -g pnpm \ + && pnpm install --frozen-lockfile + +# Copiar código +COPY . . + +ARG VITE_API_BASE_URL +ENV VITE_API_BASE_URL=${VITE_API_BASE_URL} +ARG VITE_API_MOCKED +ENV VITE_API_MOCKED=${VITE_API_MOCKED} + +# Seed mock +RUN pnpm seed:mock + +# Gerar build +RUN pnpm build + +FROM nginx:stable-alpine +COPY --from=build-step /app/dist /usr/share/nginx/html +COPY default-custom.conf /etc/nginx/conf.d/default.conf +EXPOSE 8200 +CMD ["nginx", "-g", "daemon off;"] \ No newline at end of file diff --git a/Jenkinsfile b/Jenkinsfile new file mode 100644 index 00000000..4a405f7c --- /dev/null +++ b/Jenkinsfile @@ -0,0 +1,16 @@ +pipeline { + agent any + + environment { + VITE_API_BASE_URL="https://idr-api.app.pb.utfpr.edu.br/" + VITE_API_MOCKED="false" + } + + stages { + stage('Docker Compose Up') { + steps { + sh 'docker compose up -d --build' + } + } + } +} \ No newline at end of file diff --git a/components.json b/components.json new file mode 100644 index 00000000..978b6f11 --- /dev/null +++ b/components.json @@ -0,0 +1,17 @@ +{ + "$schema": "https://ui.shadcn.com/schema.json", + "style": "default", + "rsc": false, + "tsx": true, + "tailwind": { + "config": "tailwind.config.js", + "css": "src/index.css", + "baseColor": "slate", + "cssVariables": true, + "prefix": "" + }, + "aliases": { + "components": "src/core/presentation/components", + "utils": "src/core/main/utils" + } +} diff --git a/default-custom.conf b/default-custom.conf new file mode 100644 index 00000000..2b3731af --- /dev/null +++ b/default-custom.conf @@ -0,0 +1,45 @@ +server { + listen 80; + listen [::]:80; + server_name localhost; + + #access_log /var/log/nginx/host.access.log main; + + location / { + root /usr/share/nginx/html; + index index.html index.htm; + try_files $uri /index.html; + } + + #error_page 404 /404.html; + + # redirect server error pages to the static page /50x.html + # + error_page 500 502 503 504 /50x.html; + location = /50x.html { + root /usr/share/nginx/html; + } + + # proxy the PHP scripts to Apache listening on 127.0.0.1:80 + # + #location ~ \.php$ { + # proxy_pass http://127.0.0.1; + #} + + # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000 + # + #location ~ \.php$ { + # root html; + # fastcgi_pass 127.0.0.1:9000; + # fastcgi_index index.php; + # fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name; + # include fastcgi_params; + #} + + # deny access to .htaccess files, if Apache's document root + # concurs with nginx's one + # + #location ~ /\.ht { + # deny all; + #} +} \ No newline at end of file diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 00000000..256642d8 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,29 @@ +networks: + web: + name: web + driver: bridge + external: true + attachable: true + +services: + idr-app: + build: + context: . + dockerfile: Dockerfile + args: + VITE_API_BASE_URL: ${VITE_API_BASE_URL} + VITE_API_MOCKED: ${VITE_API_MOCKED} + container_name: idr-app + environment: + - VITE_API_BASE_URL=${VITE_API_BASE_URL} + - VITE_API_MOCKED=${VITE_API_MOCKED} + restart: unless-stopped + labels: + - 'traefik.enable=true' + - 'traefik.http.routers.idr-app.rule=Host(`idr.app.pb.utfpr.edu.br`)' + - 'traefik.http.routers.idr-app.entrypoints=websecure' + - 'traefik.http.routers.idr-app.tls.certresolver=letsencrypt' + ports: + - '8200:80' + networks: + - web diff --git a/eslint.config.mjs b/eslint.config.mjs new file mode 100644 index 00000000..81ee716e --- /dev/null +++ b/eslint.config.mjs @@ -0,0 +1,138 @@ +import path from 'node:path' +import { fileURLToPath } from 'node:url' + +import { FlatCompat } from '@eslint/eslintrc' +import js from '@eslint/js' +import tsParser from '@typescript-eslint/parser' +import eslintPluginPrettierRecommended from 'eslint-plugin-prettier/recommended' +import reactRefresh from 'eslint-plugin-react-refresh' +import globals from 'globals' +import tseslint from 'typescript-eslint' + +const filename = fileURLToPath(import.meta.url) +const dirname = path.dirname(filename) +const compat = new FlatCompat({ + baseDirectory: dirname, + recommendedConfig: js.configs.recommended, + allConfig: js.configs.all, +}) + +export default [ + { + ignores: ['**/node_modules', '**/docs', '**/dist'], + }, + ...compat.extends( + 'airbnb', + 'plugin:react-hooks/recommended', + 'plugin:storybook/recommended', + 'plugin:jsx-a11y/recommended', + 'plugin:import/recommended', + 'plugin:import/typescript' + ), + ...tseslint.configs.recommended, + { + plugins: { + 'react-refresh': reactRefresh, + }, + languageOptions: { + globals: { + ...globals.browser, + }, + parser: tsParser, + ecmaVersion: 2021, + sourceType: 'module', + }, + settings: { + 'import/resolver': { + typescript: { + alwaysTryTypes: true, + project: './tsconfig.app.json', + }, + }, + }, + rules: { + 'no-empty': ['error', { allowEmptyCatch: true }], + 'no-undef': 'off', + 'no-shadow': 'off', + 'no-restricted-syntax': 'off', + 'no-useless-constructor': 'off', + 'no-continue': 'off', + 'no-empty-function': [ + 'error', + { allow: ['constructors', 'methods', 'asyncMethods'] }, + ], + semi: ['off', 'never'], + 'comma-dangle': ['error', 'only-multiline'], + '@typescript-eslint/semi': ['off'], + 'no-console': ['warn', { allow: ['info', 'warn', 'error'] }], + 'react-refresh/only-export-components': [ + 'warn', + { + allowConstantExport: true, + }, + ], + 'import/no-extraneous-dependencies': 'off', + 'import/extensions': [ + 'error', + 'ignorePackages', + { + ts: 'never', + tsx: 'never', + js: 'never', + jsx: 'never', + }, + ], + 'import/order': [ + 'error', + { + groups: [ + 'builtin', + 'external', + 'internal', + 'parent', + 'sibling', + 'index', + 'type', + 'object', + ], + pathGroups: [ + { pattern: 'react', group: 'external', position: 'before' }, + { pattern: '@database/**', group: 'internal', position: 'after' }, + ], + pathGroupsExcludedImportTypes: ['react'], + alphabetize: { order: 'asc', caseInsensitive: true }, + 'newlines-between': 'always', + }, + ], + 'import/prefer-default-export': 'off', + 'import/no-unresolved': 'off', + '@typescript-eslint/no-unused-vars': 'error', + '@typescript-eslint/no-shadow': 'off', + '@typescript-eslint/naming-convention': [ + 'error', + { + selector: 'interface', + format: ['PascalCase'], + custom: { regex: '^I[A-Z]', match: true }, + }, + ], + 'react/jsx-filename-extension': ['error', { extensions: ['.tsx'] }], + 'react/react-in-jsx-scope': 'off', + 'react/jsx-props-no-spreading': 'off', + 'react/jsx-no-bind': 'off', + 'react/prop-types': 'off', + 'react/require-default-props': 'off', + 'react/function-component-definition': 'off', + 'react/no-unstable-nested-components': ['error', { allowAsProps: true }], + 'class-methods-use-this': 'off', + }, + }, + { + files: ['**/*.stories.@(ts|tsx|js|jsx|mjs|cjs)'], + rules: { + 'storybook/hierarchy-separator': 'error', + 'import/no-extraneous-dependencies': 'off', + }, + }, + eslintPluginPrettierRecommended, +] diff --git a/index.html b/index.html new file mode 100644 index 00000000..efb7f086 --- /dev/null +++ b/index.html @@ -0,0 +1,19 @@ + + + + + + + + + + IDR - Sistema + + +
+ + + diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 00000000..3f6f2442 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,13551 @@ +{ + "name": "idr-web", + "version": "0.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "idr-web", + "version": "0.0.0", + "dependencies": { + "@hookform/resolvers": "^3.9.0", + "@radix-ui/react-alert-dialog": "^1.1.2", + "@radix-ui/react-avatar": "^1.1.1", + "@radix-ui/react-dialog": "^1.1.2", + "@radix-ui/react-dropdown-menu": "^2.1.2", + "@radix-ui/react-label": "^2.1.0", + "@radix-ui/react-popover": "^1.1.2", + "@radix-ui/react-scroll-area": "^1.2.6", + "@radix-ui/react-select": "^2.1.2", + "@radix-ui/react-slot": "^1.1.0", + "@radix-ui/react-tabs": "^1.1.1", + "@radix-ui/react-tooltip": "^1.1.3", + "@tanstack/react-query": "^5.59.15", + "@tanstack/react-table": "^8.20.5", + "axios": "^1.7.7", + "class-variance-authority": "^0.7.0", + "clsx": "^2.1.1", + "cmdk": "^1.0.0", + "date-fns": "^4.1.0", + "lucide-react": "^0.453.0", + "react": "^18.3.1", + "react-day-picker": "8.10.1", + "react-dom": "^18.3.1", + "react-hook-form": "^7.53.0", + "react-hot-toast": "^2.4.1", + "react-router-dom": "^6.27.0", + "tailwind-merge": "^2.5.4", + "validator": "^13.12.0", + "zod": "^3.23.8" + }, + "devDependencies": { + "@commitlint/config-conventional": "^19.5.0", + "@eslint/compat": "^1.2.1", + "@eslint/eslintrc": "^3.1.0", + "@eslint/js": "^9.13.0", + "@faker-js/faker": "^9.0.3", + "@storybook/addon-actions": "^8.3.6", + "@storybook/addon-essentials": "^8.3.6", + "@storybook/addon-interactions": "^8.3.6", + "@storybook/addon-links": "^8.3.6", + "@storybook/addon-themes": "^8.3.6", + "@storybook/preview-web": "^7.6.17", + "@storybook/react": "^8.3.6", + "@storybook/react-vite": "^8.3.6", + "@tanstack/eslint-plugin-query": "^5.59.7", + "@tanstack/react-query-devtools": "^5.59.15", + "@types/react": "^18.3.11", + "@types/react-dom": "^18.3.1", + "@types/validator": "^13.12.2", + "@typescript-eslint/eslint-plugin": "^8.10.0", + "@typescript-eslint/parser": "^8.10.0", + "@vitejs/plugin-react": "^4.3.2", + "autoprefixer": "^10.4.20", + "commitlint": "^19.5.0", + "eslint": "^9.13.0", + "eslint-config-airbnb": "^19.0.4", + "eslint-config-prettier": "^9.1.0", + "eslint-import-resolver-typescript": "^3.6.3", + "eslint-plugin-import": "^2.31.0", + "eslint-plugin-jsx-a11y": "^6.10.0", + "eslint-plugin-prettier": "^5.2.1", + "eslint-plugin-react-hooks": "^5.0.0", + "eslint-plugin-react-refresh": "^0.4.13", + "eslint-plugin-storybook": "^0.9.0", + "globals": "^15.11.0", + "husky": "^9.1.6", + "lint-staged": "^15.2.10", + "msw": "^2.4.11", + "postcss": "^8.4.47", + "prettier": "^3.3.3", + "storybook": "^8.3.6", + "tailwindcss": "^3.4.14", + "tailwindcss-animate": "^1.0.7", + "typescript": "^5.6.3", + "typescript-eslint": "^8.12.2", + "vite": "^5.4.9" + }, + "engines": { + "node": ">=20.0.0", + "npm": ">=10.8.2" + } + }, + "node_modules/@adobe/css-tools": { + "version": "4.4.4", + "resolved": "https://registry.npmjs.org/@adobe/css-tools/-/css-tools-4.4.4.tgz", + "integrity": "sha512-Elp+iwUx5rN5+Y8xLt5/GRoG20WGoDCQ/1Fb+1LiGtvwbDavuSk0jhD/eZdckHAuzcDzccnkv+rEjyWfRx18gg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@alloc/quick-lru": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@alloc/quick-lru/-/quick-lru-5.2.0.tgz", + "integrity": "sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.27.1.tgz", + "integrity": "sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-validator-identifier": "^7.27.1", + "js-tokens": "^4.0.0", + "picocolors": "^1.1.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/compat-data": { + "version": "7.28.4", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.28.4.tgz", + "integrity": "sha512-YsmSKC29MJwf0gF8Rjjrg5LQCmyh+j/nD8/eP7f+BeoQTKYqs9RoWbjGOdy0+1Ekr68RJZMUOPVQaQisnIo4Rw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core": { + "version": "7.28.4", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.28.4.tgz", + "integrity": "sha512-2BCOP7TN8M+gVDj7/ht3hsaO/B/n5oDbiAyyvnRlNOs+u1o+JWNYTQrmpuNp1/Wq2gcFrI01JAW+paEKDMx/CA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.27.1", + "@babel/generator": "^7.28.3", + "@babel/helper-compilation-targets": "^7.27.2", + "@babel/helper-module-transforms": "^7.28.3", + "@babel/helpers": "^7.28.4", + "@babel/parser": "^7.28.4", + "@babel/template": "^7.27.2", + "@babel/traverse": "^7.28.4", + "@babel/types": "^7.28.4", + "@jridgewell/remapping": "^2.3.5", + "convert-source-map": "^2.0.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.3", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@babel/core/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/generator": { + "version": "7.28.3", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.28.3.tgz", + "integrity": "sha512-3lSpxGgvnmZznmBkCRnVREPUFJv2wrv9iAoFDvADJc0ypmdOxdUtcLeBgBJ6zE0PMeTKnxeQzyk0xTBq4Ep7zw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.28.3", + "@babel/types": "^7.28.2", + "@jridgewell/gen-mapping": "^0.3.12", + "@jridgewell/trace-mapping": "^0.3.28", + "jsesc": "^3.0.2" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "version": "7.27.2", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.27.2.tgz", + "integrity": "sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/compat-data": "^7.27.2", + "@babel/helper-validator-option": "^7.27.1", + "browserslist": "^4.24.0", + "lru-cache": "^5.1.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/helper-globals": { + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.28.0.tgz", + "integrity": "sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.27.1.tgz", + "integrity": "sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/traverse": "^7.27.1", + "@babel/types": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms": { + "version": "7.28.3", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.28.3.tgz", + "integrity": "sha512-gytXUbs8k2sXS9PnQptz5o0QnpLL51SwASIORY6XaBKF88nsOT0Zw9szLqlSGQDP/4TljBAD5y98p2U1fqkdsw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-module-imports": "^7.27.1", + "@babel/helper-validator-identifier": "^7.27.1", + "@babel/traverse": "^7.28.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-plugin-utils": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.27.1.tgz", + "integrity": "sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz", + "integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.27.1.tgz", + "integrity": "sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-option": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.27.1.tgz", + "integrity": "sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers": { + "version": "7.28.4", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.28.4.tgz", + "integrity": "sha512-HFN59MmQXGHVyYadKLVumYsA9dBFun/ldYxipEjzA4196jpLZd8UjEEBLkbEkvfYreDqJhZxYAWFPtrfhNpj4w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/template": "^7.27.2", + "@babel/types": "^7.28.4" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.28.4", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.28.4.tgz", + "integrity": "sha512-yZbBqeM6TkpP9du/I2pUZnJsRMGGvOuIrhjzC1AwHwW+6he4mni6Bp/m8ijn0iOuZuPI2BfkCoSRunpyjnrQKg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.28.4" + }, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx-self": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.27.1.tgz", + "integrity": "sha512-6UzkCs+ejGdZ5mFFC/OCUrv028ab2fp1znZmCZjAOBKiBK2jXD1O+BPSfX8X2qjJ75fZBMSnQn3Rq2mrBJK2mw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx-source": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.27.1.tgz", + "integrity": "sha512-zbwoTsBruTeKB9hSq73ha66iFeJHuaFkUbwvqElnygoNbj/jHRsSeokowZFN3CZ64IvEqcmmkVe89OPXc7ldAw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/runtime": { + "version": "7.28.4", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.28.4.tgz", + "integrity": "sha512-Q/N6JNWvIvPnLDvjlE1OUBLPQHH6l3CltCEsHIujp45zQUSSh8K+gHnaEX45yAT1nyngnINhvWtzN+Nb9D8RAQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/template": { + "version": "7.27.2", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.27.2.tgz", + "integrity": "sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.27.1", + "@babel/parser": "^7.27.2", + "@babel/types": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.28.4", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.28.4.tgz", + "integrity": "sha512-YEzuboP2qvQavAcjgQNVgsvHIDv6ZpwXvcvjmyySP2DIMuByS/6ioU5G9pYrWHM6T2YDfc7xga9iNzYOs12CFQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.27.1", + "@babel/generator": "^7.28.3", + "@babel/helper-globals": "^7.28.0", + "@babel/parser": "^7.28.4", + "@babel/template": "^7.27.2", + "@babel/types": "^7.28.4", + "debug": "^4.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/types": { + "version": "7.28.4", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.28.4.tgz", + "integrity": "sha512-bkFqkLhh3pMBUQQkpVgWDWq/lqzc2678eUyDlTBhRqhCHFguYYGM0Efga7tYk4TogG/3x0EEl66/OQ+WGbWB/Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-string-parser": "^7.27.1", + "@babel/helper-validator-identifier": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@bundled-es-modules/cookie": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@bundled-es-modules/cookie/-/cookie-2.0.1.tgz", + "integrity": "sha512-8o+5fRPLNbjbdGRRmJj3h6Hh1AQJf2dk3qQ/5ZFb+PXkRNiSoMGGUKlsgLfrxneb72axVJyIYji64E2+nNfYyw==", + "dev": true, + "license": "ISC", + "dependencies": { + "cookie": "^0.7.2" + } + }, + "node_modules/@bundled-es-modules/statuses": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@bundled-es-modules/statuses/-/statuses-1.0.1.tgz", + "integrity": "sha512-yn7BklA5acgcBr+7w064fGV+SGIFySjCKpqjcWgBAIfrAkY+4GQTJJHQMeT3V/sgz23VTEVV8TtOmkvJAhFVfg==", + "dev": true, + "license": "ISC", + "dependencies": { + "statuses": "^2.0.1" + } + }, + "node_modules/@commitlint/cli": { + "version": "19.8.1", + "resolved": "https://registry.npmjs.org/@commitlint/cli/-/cli-19.8.1.tgz", + "integrity": "sha512-LXUdNIkspyxrlV6VDHWBmCZRtkEVRpBKxi2Gtw3J54cGWhLCTouVD/Q6ZSaSvd2YaDObWK8mDjrz3TIKtaQMAA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@commitlint/format": "^19.8.1", + "@commitlint/lint": "^19.8.1", + "@commitlint/load": "^19.8.1", + "@commitlint/read": "^19.8.1", + "@commitlint/types": "^19.8.1", + "tinyexec": "^1.0.0", + "yargs": "^17.0.0" + }, + "bin": { + "commitlint": "cli.js" + }, + "engines": { + "node": ">=v18" + } + }, + "node_modules/@commitlint/config-conventional": { + "version": "19.8.1", + "resolved": "https://registry.npmjs.org/@commitlint/config-conventional/-/config-conventional-19.8.1.tgz", + "integrity": "sha512-/AZHJL6F6B/G959CsMAzrPKKZjeEiAVifRyEwXxcT6qtqbPwGw+iQxmNS+Bu+i09OCtdNRW6pNpBvgPrtMr9EQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@commitlint/types": "^19.8.1", + "conventional-changelog-conventionalcommits": "^7.0.2" + }, + "engines": { + "node": ">=v18" + } + }, + "node_modules/@commitlint/config-validator": { + "version": "19.8.1", + "resolved": "https://registry.npmjs.org/@commitlint/config-validator/-/config-validator-19.8.1.tgz", + "integrity": "sha512-0jvJ4u+eqGPBIzzSdqKNX1rvdbSU1lPNYlfQQRIFnBgLy26BtC0cFnr7c/AyuzExMxWsMOte6MkTi9I3SQ3iGQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@commitlint/types": "^19.8.1", + "ajv": "^8.11.0" + }, + "engines": { + "node": ">=v18" + } + }, + "node_modules/@commitlint/config-validator/node_modules/ajv": { + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", + "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/@commitlint/config-validator/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true, + "license": "MIT" + }, + "node_modules/@commitlint/ensure": { + "version": "19.8.1", + "resolved": "https://registry.npmjs.org/@commitlint/ensure/-/ensure-19.8.1.tgz", + "integrity": "sha512-mXDnlJdvDzSObafjYrOSvZBwkD01cqB4gbnnFuVyNpGUM5ijwU/r/6uqUmBXAAOKRfyEjpkGVZxaDsCVnHAgyw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@commitlint/types": "^19.8.1", + "lodash.camelcase": "^4.3.0", + "lodash.kebabcase": "^4.1.1", + "lodash.snakecase": "^4.1.1", + "lodash.startcase": "^4.4.0", + "lodash.upperfirst": "^4.3.1" + }, + "engines": { + "node": ">=v18" + } + }, + "node_modules/@commitlint/execute-rule": { + "version": "19.8.1", + "resolved": "https://registry.npmjs.org/@commitlint/execute-rule/-/execute-rule-19.8.1.tgz", + "integrity": "sha512-YfJyIqIKWI64Mgvn/sE7FXvVMQER/Cd+s3hZke6cI1xgNT/f6ZAz5heND0QtffH+KbcqAwXDEE1/5niYayYaQA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=v18" + } + }, + "node_modules/@commitlint/format": { + "version": "19.8.1", + "resolved": "https://registry.npmjs.org/@commitlint/format/-/format-19.8.1.tgz", + "integrity": "sha512-kSJj34Rp10ItP+Eh9oCItiuN/HwGQMXBnIRk69jdOwEW9llW9FlyqcWYbHPSGofmjsqeoxa38UaEA5tsbm2JWw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@commitlint/types": "^19.8.1", + "chalk": "^5.3.0" + }, + "engines": { + "node": ">=v18" + } + }, + "node_modules/@commitlint/is-ignored": { + "version": "19.8.1", + "resolved": "https://registry.npmjs.org/@commitlint/is-ignored/-/is-ignored-19.8.1.tgz", + "integrity": "sha512-AceOhEhekBUQ5dzrVhDDsbMaY5LqtN8s1mqSnT2Kz1ERvVZkNihrs3Sfk1Je/rxRNbXYFzKZSHaPsEJJDJV8dg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@commitlint/types": "^19.8.1", + "semver": "^7.6.0" + }, + "engines": { + "node": ">=v18" + } + }, + "node_modules/@commitlint/lint": { + "version": "19.8.1", + "resolved": "https://registry.npmjs.org/@commitlint/lint/-/lint-19.8.1.tgz", + "integrity": "sha512-52PFbsl+1EvMuokZXLRlOsdcLHf10isTPlWwoY1FQIidTsTvjKXVXYb7AvtpWkDzRO2ZsqIgPK7bI98x8LRUEw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@commitlint/is-ignored": "^19.8.1", + "@commitlint/parse": "^19.8.1", + "@commitlint/rules": "^19.8.1", + "@commitlint/types": "^19.8.1" + }, + "engines": { + "node": ">=v18" + } + }, + "node_modules/@commitlint/load": { + "version": "19.8.1", + "resolved": "https://registry.npmjs.org/@commitlint/load/-/load-19.8.1.tgz", + "integrity": "sha512-9V99EKG3u7z+FEoe4ikgq7YGRCSukAcvmKQuTtUyiYPnOd9a2/H9Ak1J9nJA1HChRQp9OA/sIKPugGS+FK/k1A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@commitlint/config-validator": "^19.8.1", + "@commitlint/execute-rule": "^19.8.1", + "@commitlint/resolve-extends": "^19.8.1", + "@commitlint/types": "^19.8.1", + "chalk": "^5.3.0", + "cosmiconfig": "^9.0.0", + "cosmiconfig-typescript-loader": "^6.1.0", + "lodash.isplainobject": "^4.0.6", + "lodash.merge": "^4.6.2", + "lodash.uniq": "^4.5.0" + }, + "engines": { + "node": ">=v18" + } + }, + "node_modules/@commitlint/message": { + "version": "19.8.1", + "resolved": "https://registry.npmjs.org/@commitlint/message/-/message-19.8.1.tgz", + "integrity": "sha512-+PMLQvjRXiU+Ae0Wc+p99EoGEutzSXFVwQfa3jRNUZLNW5odZAyseb92OSBTKCu+9gGZiJASt76Cj3dLTtcTdg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=v18" + } + }, + "node_modules/@commitlint/parse": { + "version": "19.8.1", + "resolved": "https://registry.npmjs.org/@commitlint/parse/-/parse-19.8.1.tgz", + "integrity": "sha512-mmAHYcMBmAgJDKWdkjIGq50X4yB0pSGpxyOODwYmoexxxiUCy5JJT99t1+PEMK7KtsCtzuWYIAXYAiKR+k+/Jw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@commitlint/types": "^19.8.1", + "conventional-changelog-angular": "^7.0.0", + "conventional-commits-parser": "^5.0.0" + }, + "engines": { + "node": ">=v18" + } + }, + "node_modules/@commitlint/read": { + "version": "19.8.1", + "resolved": "https://registry.npmjs.org/@commitlint/read/-/read-19.8.1.tgz", + "integrity": "sha512-03Jbjb1MqluaVXKHKRuGhcKWtSgh3Jizqy2lJCRbRrnWpcM06MYm8th59Xcns8EqBYvo0Xqb+2DoZFlga97uXQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@commitlint/top-level": "^19.8.1", + "@commitlint/types": "^19.8.1", + "git-raw-commits": "^4.0.0", + "minimist": "^1.2.8", + "tinyexec": "^1.0.0" + }, + "engines": { + "node": ">=v18" + } + }, + "node_modules/@commitlint/resolve-extends": { + "version": "19.8.1", + "resolved": "https://registry.npmjs.org/@commitlint/resolve-extends/-/resolve-extends-19.8.1.tgz", + "integrity": "sha512-GM0mAhFk49I+T/5UCYns5ayGStkTt4XFFrjjf0L4S26xoMTSkdCf9ZRO8en1kuopC4isDFuEm7ZOm/WRVeElVg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@commitlint/config-validator": "^19.8.1", + "@commitlint/types": "^19.8.1", + "global-directory": "^4.0.1", + "import-meta-resolve": "^4.0.0", + "lodash.mergewith": "^4.6.2", + "resolve-from": "^5.0.0" + }, + "engines": { + "node": ">=v18" + } + }, + "node_modules/@commitlint/rules": { + "version": "19.8.1", + "resolved": "https://registry.npmjs.org/@commitlint/rules/-/rules-19.8.1.tgz", + "integrity": "sha512-Hnlhd9DyvGiGwjfjfToMi1dsnw1EXKGJNLTcsuGORHz6SS9swRgkBsou33MQ2n51/boIDrbsg4tIBbRpEWK2kw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@commitlint/ensure": "^19.8.1", + "@commitlint/message": "^19.8.1", + "@commitlint/to-lines": "^19.8.1", + "@commitlint/types": "^19.8.1" + }, + "engines": { + "node": ">=v18" + } + }, + "node_modules/@commitlint/to-lines": { + "version": "19.8.1", + "resolved": "https://registry.npmjs.org/@commitlint/to-lines/-/to-lines-19.8.1.tgz", + "integrity": "sha512-98Mm5inzbWTKuZQr2aW4SReY6WUukdWXuZhrqf1QdKPZBCCsXuG87c+iP0bwtD6DBnmVVQjgp4whoHRVixyPBg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=v18" + } + }, + "node_modules/@commitlint/top-level": { + "version": "19.8.1", + "resolved": "https://registry.npmjs.org/@commitlint/top-level/-/top-level-19.8.1.tgz", + "integrity": "sha512-Ph8IN1IOHPSDhURCSXBz44+CIu+60duFwRsg6HqaISFHQHbmBtxVw4ZrFNIYUzEP7WwrNPxa2/5qJ//NK1FGcw==", + "dev": true, + "license": "MIT", + "dependencies": { + "find-up": "^7.0.0" + }, + "engines": { + "node": ">=v18" + } + }, + "node_modules/@commitlint/top-level/node_modules/find-up": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-7.0.0.tgz", + "integrity": "sha512-YyZM99iHrqLKjmt4LJDj58KI+fYyufRLBSYcqycxf//KpBk9FoewoGX0450m9nB44qrZnovzC2oeP5hUibxc/g==", + "dev": true, + "license": "MIT", + "dependencies": { + "locate-path": "^7.2.0", + "path-exists": "^5.0.0", + "unicorn-magic": "^0.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@commitlint/top-level/node_modules/locate-path": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-7.2.0.tgz", + "integrity": "sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-locate": "^6.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@commitlint/top-level/node_modules/p-limit": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-4.0.0.tgz", + "integrity": "sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "yocto-queue": "^1.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@commitlint/top-level/node_modules/p-locate": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-6.0.0.tgz", + "integrity": "sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-limit": "^4.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@commitlint/top-level/node_modules/path-exists": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-5.0.0.tgz", + "integrity": "sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + } + }, + "node_modules/@commitlint/top-level/node_modules/yocto-queue": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.2.1.tgz", + "integrity": "sha512-AyeEbWOu/TAXdxlV9wmGcR0+yh2j3vYPGOECcIj2S7MkrLyC7ne+oye2BKTItt0ii2PHk4cDy+95+LshzbXnGg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@commitlint/types": { + "version": "19.8.1", + "resolved": "https://registry.npmjs.org/@commitlint/types/-/types-19.8.1.tgz", + "integrity": "sha512-/yCrWGCoA1SVKOks25EGadP9Pnj0oAIHGpl2wH2M2Y46dPM2ueb8wyCVOD7O3WCTkaJ0IkKvzhl1JY7+uCT2Dw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/conventional-commits-parser": "^5.0.0", + "chalk": "^5.3.0" + }, + "engines": { + "node": ">=v18" + } + }, + "node_modules/@emnapi/core": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.5.0.tgz", + "integrity": "sha512-sbP8GzB1WDzacS8fgNPpHlp6C9VZe+SJP3F90W9rLemaQj2PzIuTEl1qDOYQf58YIpyjViI24y9aPWCjEzY2cg==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "@emnapi/wasi-threads": "1.1.0", + "tslib": "^2.4.0" + } + }, + "node_modules/@emnapi/runtime": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.5.0.tgz", + "integrity": "sha512-97/BJ3iXHww3djw6hYIfErCZFee7qCtrneuLa20UXFCOTCfBM2cvQHjWJ2EG0s0MtdNwInarqCTz35i4wWXHsQ==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@emnapi/wasi-threads": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@emnapi/wasi-threads/-/wasi-threads-1.1.0.tgz", + "integrity": "sha512-WI0DdZ8xFSbgMjR1sFsKABJ/C5OnRrjT06JXbZKexJGrDuPTzZdDYfFlsgcCXCyf+suG5QU2e/y1Wo2V/OapLQ==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@esbuild/aix-ppc64": { + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.9.tgz", + "integrity": "sha512-OaGtL73Jck6pBKjNIe24BnFE6agGl+6KxDtTfHhy1HmhthfKouEcOhqpSL64K4/0WCtbKFLOdzD/44cJ4k9opA==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.9.tgz", + "integrity": "sha512-5WNI1DaMtxQ7t7B6xa572XMXpHAaI/9Hnhk8lcxF4zVN4xstUgTlvuGDorBguKEnZO70qwEcLpfifMLoxiPqHQ==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.9.tgz", + "integrity": "sha512-IDrddSmpSv51ftWslJMvl3Q2ZT98fUSL2/rlUXuVqRXHCs5EUF1/f+jbjF5+NG9UffUDMCiTyh8iec7u8RlTLg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.9.tgz", + "integrity": "sha512-I853iMZ1hWZdNllhVZKm34f4wErd4lMyeV7BLzEExGEIZYsOzqDWDf+y082izYUE8gtJnYHdeDpN/6tUdwvfiw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.9.tgz", + "integrity": "sha512-XIpIDMAjOELi/9PB30vEbVMs3GV1v2zkkPnuyRRURbhqjyzIINwj+nbQATh4H9GxUgH1kFsEyQMxwiLFKUS6Rg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.9.tgz", + "integrity": "sha512-jhHfBzjYTA1IQu8VyrjCX4ApJDnH+ez+IYVEoJHeqJm9VhG9Dh2BYaJritkYK3vMaXrf7Ogr/0MQ8/MeIefsPQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.9.tgz", + "integrity": "sha512-z93DmbnY6fX9+KdD4Ue/H6sYs+bhFQJNCPZsi4XWJoYblUqT06MQUdBCpcSfuiN72AbqeBFu5LVQTjfXDE2A6Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.9.tgz", + "integrity": "sha512-mrKX6H/vOyo5v71YfXWJxLVxgy1kyt1MQaD8wZJgJfG4gq4DpQGpgTB74e5yBeQdyMTbgxp0YtNj7NuHN0PoZg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.9.tgz", + "integrity": "sha512-HBU2Xv78SMgaydBmdor38lg8YDnFKSARg1Q6AT0/y2ezUAKiZvc211RDFHlEZRFNRVhcMamiToo7bDx3VEOYQw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.9.tgz", + "integrity": "sha512-BlB7bIcLT3G26urh5Dmse7fiLmLXnRlopw4s8DalgZ8ef79Jj4aUcYbk90g8iCa2467HX8SAIidbL7gsqXHdRw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.9.tgz", + "integrity": "sha512-e7S3MOJPZGp2QW6AK6+Ly81rC7oOSerQ+P8L0ta4FhVi+/j/v2yZzx5CqqDaWjtPFfYz21Vi1S0auHrap3Ma3A==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.9.tgz", + "integrity": "sha512-Sbe10Bnn0oUAB2AalYztvGcK+o6YFFA/9829PhOCUS9vkJElXGdphz0A3DbMdP8gmKkqPmPcMJmJOrI3VYB1JQ==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.9.tgz", + "integrity": "sha512-YcM5br0mVyZw2jcQeLIkhWtKPeVfAerES5PvOzaDxVtIyZ2NUBZKNLjC5z3/fUlDgT6w89VsxP2qzNipOaaDyA==", + "cpu": [ + "mips64el" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.9.tgz", + "integrity": "sha512-++0HQvasdo20JytyDpFvQtNrEsAgNG2CY1CLMwGXfFTKGBGQT3bOeLSYE2l1fYdvML5KUuwn9Z8L1EWe2tzs1w==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.9.tgz", + "integrity": "sha512-uNIBa279Y3fkjV+2cUjx36xkx7eSjb8IvnL01eXUKXez/CBHNRw5ekCGMPM0BcmqBxBcdgUWuUXmVWwm4CH9kg==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.9.tgz", + "integrity": "sha512-Mfiphvp3MjC/lctb+7D287Xw1DGzqJPb/J2aHHcHxflUo+8tmN/6d4k6I2yFR7BVo5/g7x2Monq4+Yew0EHRIA==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.9.tgz", + "integrity": "sha512-iSwByxzRe48YVkmpbgoxVzn76BXjlYFXC7NvLYq+b+kDjyyk30J0JY47DIn8z1MO3K0oSl9fZoRmZPQI4Hklzg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-arm64": { + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.9.tgz", + "integrity": "sha512-9jNJl6FqaUG+COdQMjSCGW4QiMHH88xWbvZ+kRVblZsWrkXlABuGdFJ1E9L7HK+T0Yqd4akKNa/lO0+jDxQD4Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.9.tgz", + "integrity": "sha512-RLLdkflmqRG8KanPGOU7Rpg829ZHu8nFy5Pqdi9U01VYtG9Y0zOG6Vr2z4/S+/3zIyOxiK6cCeYNWOFR9QP87g==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-arm64": { + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.9.tgz", + "integrity": "sha512-YaFBlPGeDasft5IIM+CQAhJAqS3St3nJzDEgsgFixcfZeyGPCd6eJBWzke5piZuZ7CtL656eOSYKk4Ls2C0FRQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.9.tgz", + "integrity": "sha512-1MkgTCuvMGWuqVtAvkpkXFmtL8XhWy+j4jaSO2wxfJtilVCi0ZE37b8uOdMItIHz4I6z1bWWtEX4CJwcKYLcuA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openharmony-arm64": { + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.25.9.tgz", + "integrity": "sha512-4Xd0xNiMVXKh6Fa7HEJQbrpP3m3DDn43jKxMjxLLRjWnRsfxjORYJlXPO4JNcXtOyfajXorRKY9NkOpTHptErg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.9.tgz", + "integrity": "sha512-WjH4s6hzo00nNezhp3wFIAfmGZ8U7KtrJNlFMRKxiI9mxEK1scOMAaa9i4crUtu+tBr+0IN6JCuAcSBJZfnphw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.9.tgz", + "integrity": "sha512-mGFrVJHmZiRqmP8xFOc6b84/7xa5y5YvR1x8djzXpJBSv/UsNK6aqec+6JDjConTgvvQefdGhFDAs2DLAds6gQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.9.tgz", + "integrity": "sha512-b33gLVU2k11nVx1OhX3C8QQP6UHQK4ZtN56oFWvVXvz2VkDoe6fbG8TOgHFxEvqeqohmRnIHe5A1+HADk4OQww==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.9.tgz", + "integrity": "sha512-PPOl1mi6lpLNQxnGoyAfschAodRFYXJ+9fs6WHXz7CSWKbOqiMZsubC+BQsVKuul+3vKLuwTHsS2c2y9EoKwxQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@eslint-community/eslint-utils": { + "version": "4.9.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.9.0.tgz", + "integrity": "sha512-ayVFHdtZ+hsq1t2Dy24wCmGXGe4q9Gu3smhLYALJrr473ZH27MsnSL+LKUlimp4BWJqMDMLmPpx/Q9R3OAlL4g==", + "dev": true, + "license": "MIT", + "dependencies": { + "eslint-visitor-keys": "^3.4.3" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + } + }, + "node_modules/@eslint-community/regexpp": { + "version": "4.12.1", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.1.tgz", + "integrity": "sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, + "node_modules/@eslint/compat": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@eslint/compat/-/compat-1.3.2.tgz", + "integrity": "sha512-jRNwzTbd6p2Rw4sZ1CgWRS8YMtqG15YyZf7zvb6gY2rB2u6n+2Z+ELW0GtL0fQgyl0pr4Y/BzBfng/BdsereRA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "peerDependencies": { + "eslint": "^8.40 || 9" + }, + "peerDependenciesMeta": { + "eslint": { + "optional": true + } + } + }, + "node_modules/@eslint/config-array": { + "version": "0.21.0", + "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.21.0.tgz", + "integrity": "sha512-ENIdc4iLu0d93HeYirvKmrzshzofPw6VkZRKQGe9Nv46ZnWUzcF1xV01dcvEg/1wXUR61OmmlSfyeyO7EvjLxQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@eslint/object-schema": "^2.1.6", + "debug": "^4.3.1", + "minimatch": "^3.1.2" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/config-helpers": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.3.1.tgz", + "integrity": "sha512-xR93k9WhrDYpXHORXpxVL5oHj3Era7wo6k/Wd8/IsQNnZUTzkGS29lyn3nAT05v6ltUuTFVCCYDEGfy2Or/sPA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/core": { + "version": "0.15.2", + "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.15.2.tgz", + "integrity": "sha512-78Md3/Rrxh83gCxoUc0EiciuOHsIITzLy53m3d9UyiW8y9Dj2D29FeETqyKA+BRK76tnTp6RXWb3pCay8Oyomg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@types/json-schema": "^7.0.15" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.3.1.tgz", + "integrity": "sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^10.0.1", + "globals": "^14.0.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": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint/eslintrc/node_modules/globals": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz", + "integrity": "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@eslint/js": { + "version": "9.35.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.35.0.tgz", + "integrity": "sha512-30iXE9whjlILfWobBkNerJo+TXYsgVM5ERQwMcMKCHckHflCmf7wXDAHlARoWnh0s1U72WqlbeyE7iAcCzuCPw==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://eslint.org/donate" + } + }, + "node_modules/@eslint/object-schema": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.6.tgz", + "integrity": "sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/plugin-kit": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.3.5.tgz", + "integrity": "sha512-Z5kJ+wU3oA7MMIqVR9tyZRtjYPr4OC004Q4Rw7pgOKUOKkJfZ3O24nz3WYfGRpMDNmcOi3TwQOmgm7B7Tpii0w==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@eslint/core": "^0.15.2", + "levn": "^0.4.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@faker-js/faker": { + "version": "9.9.0", + "resolved": "https://registry.npmjs.org/@faker-js/faker/-/faker-9.9.0.tgz", + "integrity": "sha512-OEl393iCOoo/z8bMezRlJu+GlRGlsKbUAN7jKB6LhnKoqKve5DXRpalbItIIcwnCjs1k/FOPjFzcA6Qn+H+YbA==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/fakerjs" + } + ], + "license": "MIT", + "engines": { + "node": ">=18.0.0", + "npm": ">=9.0.0" + } + }, + "node_modules/@floating-ui/core": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.7.3.tgz", + "integrity": "sha512-sGnvb5dmrJaKEZ+LDIpguvdX3bDlEllmv4/ClQ9awcmCZrlx5jQyyMWFM5kBI+EyNOCDDiKk8il0zeuX3Zlg/w==", + "license": "MIT", + "dependencies": { + "@floating-ui/utils": "^0.2.10" + } + }, + "node_modules/@floating-ui/dom": { + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.7.4.tgz", + "integrity": "sha512-OOchDgh4F2CchOX94cRVqhvy7b3AFb+/rQXyswmzmGakRfkMgoWVjfnLWkRirfLEfuD4ysVW16eXzwt3jHIzKA==", + "license": "MIT", + "dependencies": { + "@floating-ui/core": "^1.7.3", + "@floating-ui/utils": "^0.2.10" + } + }, + "node_modules/@floating-ui/react-dom": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/@floating-ui/react-dom/-/react-dom-2.1.6.tgz", + "integrity": "sha512-4JX6rEatQEvlmgU80wZyq9RT96HZJa88q8hp0pBd+LrczeDI4o6uA2M+uvxngVHo4Ihr8uibXxH6+70zhAFrVw==", + "license": "MIT", + "dependencies": { + "@floating-ui/dom": "^1.7.4" + }, + "peerDependencies": { + "react": ">=16.8.0", + "react-dom": ">=16.8.0" + } + }, + "node_modules/@floating-ui/utils": { + "version": "0.2.10", + "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.2.10.tgz", + "integrity": "sha512-aGTxbpbg8/b5JfU1HXSrbH3wXZuLPJcNEcZQFMxLs3oSzgtVu6nFPkbbGGUvBcUjKV2YyB9Wxxabo+HEH9tcRQ==", + "license": "MIT" + }, + "node_modules/@hookform/resolvers": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/@hookform/resolvers/-/resolvers-3.10.0.tgz", + "integrity": "sha512-79Dv+3mDF7i+2ajj7SkypSKHhl1cbln1OGavqrsF7p6mbUv11xpqpacPsGDCTRvCSjEEIez2ef1NveSVL3b0Ag==", + "license": "MIT", + "peerDependencies": { + "react-hook-form": "^7.0.0" + } + }, + "node_modules/@humanfs/core": { + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.1.tgz", + "integrity": "sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18.18.0" + } + }, + "node_modules/@humanfs/node": { + "version": "0.16.7", + "resolved": "https://registry.npmjs.org/@humanfs/node/-/node-0.16.7.tgz", + "integrity": "sha512-/zUx+yOsIrG4Y43Eh2peDeKCxlRt/gET6aHfaKpuq267qXdYDFViVHfMaLyygZOnl0kGWxFIgsBy8QFuTLUXEQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@humanfs/core": "^0.19.1", + "@humanwhocodes/retry": "^0.4.0" + }, + "engines": { + "node": ">=18.18.0" + } + }, + "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, + "license": "Apache-2.0", + "engines": { + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/retry": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.3.tgz", + "integrity": "sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18.18" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@inquirer/confirm": { + "version": "5.1.16", + "resolved": "https://registry.npmjs.org/@inquirer/confirm/-/confirm-5.1.16.tgz", + "integrity": "sha512-j1a5VstaK5KQy8Mu8cHmuQvN1Zc62TbLhjJxwHvKPPKEoowSF6h/0UdOpA9DNdWZ+9Inq73+puRq1df6OJ8Sag==", + "dev": true, + "license": "MIT", + "dependencies": { + "@inquirer/core": "^10.2.0", + "@inquirer/type": "^3.0.8" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@inquirer/core": { + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/@inquirer/core/-/core-10.2.0.tgz", + "integrity": "sha512-NyDSjPqhSvpZEMZrLCYUquWNl+XC/moEcVFqS55IEYIYsY0a1cUCevSqk7ctOlnm/RaSBU5psFryNlxcmGrjaA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@inquirer/figures": "^1.0.13", + "@inquirer/type": "^3.0.8", + "ansi-escapes": "^4.3.2", + "cli-width": "^4.1.0", + "mute-stream": "^2.0.0", + "signal-exit": "^4.1.0", + "wrap-ansi": "^6.2.0", + "yoctocolors-cjs": "^2.1.2" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@inquirer/core/node_modules/ansi-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "type-fest": "^0.21.3" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@inquirer/core/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, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@inquirer/core/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true, + "license": "MIT" + }, + "node_modules/@inquirer/core/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/@inquirer/core/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": 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/@inquirer/core/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, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@inquirer/core/node_modules/type-fest": { + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "dev": true, + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@inquirer/core/node_modules/wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@inquirer/figures": { + "version": "1.0.13", + "resolved": "https://registry.npmjs.org/@inquirer/figures/-/figures-1.0.13.tgz", + "integrity": "sha512-lGPVU3yO9ZNqA7vTYz26jny41lE7yoQansmqdMLBEfqaGsmdg7V3W9mK9Pvb5IL4EVZ9GnSDGMO/cJXud5dMaw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + } + }, + "node_modules/@inquirer/type": { + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/@inquirer/type/-/type-3.0.8.tgz", + "integrity": "sha512-lg9Whz8onIHRthWaN1Q9EGLa/0LFJjyM8mEUbL1eTi6yMGvBf8gvyDLtxSXztQsxMvhxxNpJYrwa1YHdq+w4Jw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@isaacs/cliui": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", + "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", + "dev": true, + "license": "ISC", + "dependencies": { + "string-width": "^5.1.2", + "string-width-cjs": "npm:string-width@^4.2.0", + "strip-ansi": "^7.0.1", + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + "wrap-ansi": "^8.1.0", + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@joshwooding/vite-plugin-react-docgen-typescript": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/@joshwooding/vite-plugin-react-docgen-typescript/-/vite-plugin-react-docgen-typescript-0.5.0.tgz", + "integrity": "sha512-qYDdL7fPwLRI+bJNurVcis+tNgJmvWjH4YTBGXTA8xMuxFrnAz6E5o35iyzyKbq5J5Lr8mJGfrR5GXl+WGwhgQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "glob": "^10.0.0", + "magic-string": "^0.27.0", + "react-docgen-typescript": "^2.2.2" + }, + "peerDependencies": { + "typescript": ">= 4.3.x", + "vite": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@joshwooding/vite-plugin-react-docgen-typescript/node_modules/magic-string": { + "version": "0.27.0", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.27.0.tgz", + "integrity": "sha512-8UnnX2PeRAPZuN12svgR9j7M1uWMovg/CEnIwIG0LFkXSJJe4PdfUGiTGl8V9bsBHFUtfVINcSyYxd7q+kx9fA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.4.13" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.13", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", + "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.0", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, + "node_modules/@jridgewell/remapping": { + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/remapping/-/remapping-2.3.5.tgz", + "integrity": "sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, + "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, + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", + "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==", + "dev": true, + "license": "MIT" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.30", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.30.tgz", + "integrity": "sha512-GQ7Nw5G2lTu/BtHTKfXhKHok2WGetd4XYcVKGx00SjAk8GMwgJM3zr6zORiPGuOE+/vkc90KtTosSSvaCjKb2Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@mdx-js/react": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@mdx-js/react/-/react-3.1.1.tgz", + "integrity": "sha512-f++rKLQgUVYDAtECQ6fn/is15GkEH9+nZPM3MS0RcxVqoTfawHvDlSCH7JbMhAM6uJ32v3eXLvLmLvjGu7PTQw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/mdx": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + }, + "peerDependencies": { + "@types/react": ">=16", + "react": ">=16" + } + }, + "node_modules/@mswjs/interceptors": { + "version": "0.39.6", + "resolved": "https://registry.npmjs.org/@mswjs/interceptors/-/interceptors-0.39.6.tgz", + "integrity": "sha512-bndDP83naYYkfayr/qhBHMhk0YGwS1iv6vaEGcr0SQbO0IZtbOPqjKjds/WcG+bJA+1T5vCx6kprKOzn5Bg+Vw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@open-draft/deferred-promise": "^2.2.0", + "@open-draft/logger": "^0.3.0", + "@open-draft/until": "^2.0.0", + "is-node-process": "^1.2.0", + "outvariant": "^1.4.3", + "strict-event-emitter": "^0.5.1" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@napi-rs/wasm-runtime": { + "version": "0.2.12", + "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-0.2.12.tgz", + "integrity": "sha512-ZVWUcfwY4E/yPitQJl481FjFo3K22D6qF0DuFH6Y/nbnE11GY5uguDxZMGXPQ8WQ0128MXQD7TnfHyK4oWoIJQ==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "@emnapi/core": "^1.4.3", + "@emnapi/runtime": "^1.4.3", + "@tybys/wasm-util": "^0.10.0" + } + }, + "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, + "license": "MIT", + "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, + "license": "MIT", + "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, + "license": "MIT", + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nolyfill/is-core-module": { + "version": "1.0.39", + "resolved": "https://registry.npmjs.org/@nolyfill/is-core-module/-/is-core-module-1.0.39.tgz", + "integrity": "sha512-nn5ozdjYQpUCZlWGuxcJY/KpxkWQs4DcbMCmKojjyrYDEAGy4Ce19NN4v5MduafTwJlbKc99UA8YhSVqq9yPZA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12.4.0" + } + }, + "node_modules/@open-draft/deferred-promise": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@open-draft/deferred-promise/-/deferred-promise-2.2.0.tgz", + "integrity": "sha512-CecwLWx3rhxVQF6V4bAgPS5t+So2sTbPgAzafKkVizyi7tlwpcFpdFqq+wqF2OwNBmqFuu6tOyouTuxgpMfzmA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@open-draft/logger": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@open-draft/logger/-/logger-0.3.0.tgz", + "integrity": "sha512-X2g45fzhxH238HKO4xbSr7+wBS8Fvw6ixhTDuvLd5mqh6bJJCFAPwU9mPDxbcrRtfxv4u5IHCEH77BmxvXmmxQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-node-process": "^1.2.0", + "outvariant": "^1.4.0" + } + }, + "node_modules/@open-draft/until": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@open-draft/until/-/until-2.1.0.tgz", + "integrity": "sha512-U69T3ItWHvLwGg5eJ0n3I62nWuE6ilHlmz7zM0npLBRvPRd7e6NYmg54vvRtP5mZG7kZqZCFVdsTWo7BPtBujg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@pkgjs/parseargs": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", + "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", + "dev": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">=14" + } + }, + "node_modules/@pkgr/core": { + "version": "0.2.9", + "resolved": "https://registry.npmjs.org/@pkgr/core/-/core-0.2.9.tgz", + "integrity": "sha512-QNqXyfVS2wm9hweSYD2O7F0G06uurj9kZ96TRQE5Y9hU7+tgdZwIkbAKc5Ocy1HxEY2kuDQa6cQ1WRs/O5LFKA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.20.0 || ^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/pkgr" + } + }, + "node_modules/@radix-ui/number": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/number/-/number-1.1.1.tgz", + "integrity": "sha512-MkKCwxlXTgz6CFoJx3pCwn07GKp36+aZyu/u2Ln2VrA5DcdyCZkASEDBTd8x5whTQQL5CiYf4prXKLcgQdv29g==", + "license": "MIT" + }, + "node_modules/@radix-ui/primitive": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@radix-ui/primitive/-/primitive-1.1.3.tgz", + "integrity": "sha512-JTF99U/6XIjCBo0wqkU5sK10glYe27MRRsfwoiq5zzOEZLHU3A3KCMa5X/azekYRCJ0HlwI0crAXS/5dEHTzDg==", + "license": "MIT" + }, + "node_modules/@radix-ui/react-alert-dialog": { + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/@radix-ui/react-alert-dialog/-/react-alert-dialog-1.1.15.tgz", + "integrity": "sha512-oTVLkEw5GpdRe29BqJ0LSDFWI3qu0vR1M0mUkOQWDIUnY/QIkLpgDMWuKxP94c2NAC2LGcgVhG1ImF3jkZ5wXw==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-dialog": "1.1.15", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-slot": "1.2.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-arrow": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/@radix-ui/react-arrow/-/react-arrow-1.1.7.tgz", + "integrity": "sha512-F+M1tLhO+mlQaOWspE8Wstg+z6PwxwRd8oQ8IXceWz92kfAmalTRf0EjrouQeo7QssEPfCn05B4Ihs1K9WQ/7w==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-primitive": "2.1.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-avatar": { + "version": "1.1.10", + "resolved": "https://registry.npmjs.org/@radix-ui/react-avatar/-/react-avatar-1.1.10.tgz", + "integrity": "sha512-V8piFfWapM5OmNCXTzVQY+E1rDa53zY+MQ4Y7356v4fFz6vqCyUtIz2rUD44ZEdwg78/jKmMJHj07+C/Z/rcog==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-callback-ref": "1.1.1", + "@radix-ui/react-use-is-hydrated": "0.1.0", + "@radix-ui/react-use-layout-effect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-collection": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/@radix-ui/react-collection/-/react-collection-1.1.7.tgz", + "integrity": "sha512-Fh9rGN0MoI4ZFUNyfFVNU4y9LUz93u9/0K+yLgA2bwRojxM8JU1DyvvMBabnZPBgMWREAJvU2jjVzq+LrFUglw==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-slot": "1.2.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-compose-refs": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-compose-refs/-/react-compose-refs-1.1.2.tgz", + "integrity": "sha512-z4eqJvfiNnFMHIIvXP3CY57y2WJs5g2v3X0zm9mEJkrkNv4rDxu+sg9Jh8EkXyeqBkB7SOcboo9dMVqhyrACIg==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-context": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-context/-/react-context-1.1.2.tgz", + "integrity": "sha512-jCi/QKUM2r1Ju5a3J64TH2A5SpKAgh0LpknyqdQ4m6DCV0xJ2HG1xARRwNGPQfi1SLdLWZ1OJz6F4OMBBNiGJA==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-dialog": { + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/@radix-ui/react-dialog/-/react-dialog-1.1.15.tgz", + "integrity": "sha512-TCglVRtzlffRNxRMEyR36DGBLJpeusFcgMVD9PZEzAKnUs1lKCgX5u9BmC2Yg+LL9MgZDugFFs1Vl+Jp4t/PGw==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-dismissable-layer": "1.1.11", + "@radix-ui/react-focus-guards": "1.1.3", + "@radix-ui/react-focus-scope": "1.1.7", + "@radix-ui/react-id": "1.1.1", + "@radix-ui/react-portal": "1.1.9", + "@radix-ui/react-presence": "1.1.5", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-slot": "1.2.3", + "@radix-ui/react-use-controllable-state": "1.2.2", + "aria-hidden": "^1.2.4", + "react-remove-scroll": "^2.6.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-direction": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-direction/-/react-direction-1.1.1.tgz", + "integrity": "sha512-1UEWRX6jnOA2y4H5WczZ44gOOjTEmlqv1uNW4GAJEO5+bauCBhv8snY65Iw5/VOS/ghKN9gr2KjnLKxrsvoMVw==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-dismissable-layer": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/@radix-ui/react-dismissable-layer/-/react-dismissable-layer-1.1.11.tgz", + "integrity": "sha512-Nqcp+t5cTB8BinFkZgXiMJniQH0PsUt2k51FUhbdfeKvc4ACcG2uQniY/8+h1Yv6Kza4Q7lD7PQV0z0oicE0Mg==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-callback-ref": "1.1.1", + "@radix-ui/react-use-escape-keydown": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-dropdown-menu": { + "version": "2.1.16", + "resolved": "https://registry.npmjs.org/@radix-ui/react-dropdown-menu/-/react-dropdown-menu-2.1.16.tgz", + "integrity": "sha512-1PLGQEynI/3OX/ftV54COn+3Sud/Mn8vALg2rWnBLnRaGtJDduNW/22XjlGgPdpcIbiQxjKtb7BkcjP00nqfJw==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-id": "1.1.1", + "@radix-ui/react-menu": "2.1.16", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-controllable-state": "1.2.2" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-focus-guards": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-guards/-/react-focus-guards-1.1.3.tgz", + "integrity": "sha512-0rFg/Rj2Q62NCm62jZw0QX7a3sz6QCQU0LpZdNrJX8byRGaGVTqbrW9jAoIAHyMQqsNpeZ81YgSizOt5WXq0Pw==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-focus-scope": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-scope/-/react-focus-scope-1.1.7.tgz", + "integrity": "sha512-t2ODlkXBQyn7jkl6TNaw/MtVEVvIGelJDCG41Okq/KwUsJBwQ4XVZsHAVUkK4mBv3ewiAS3PGuUWuY2BoK4ZUw==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-callback-ref": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-id": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-id/-/react-id-1.1.1.tgz", + "integrity": "sha512-kGkGegYIdQsOb4XjsfM97rXsiHaBwco+hFI66oO4s9LU+PLAC5oJ7khdOVFxkhsmlbpUqDAvXw11CluXP+jkHg==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-use-layout-effect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-label": { + "version": "2.1.7", + "resolved": "https://registry.npmjs.org/@radix-ui/react-label/-/react-label-2.1.7.tgz", + "integrity": "sha512-YT1GqPSL8kJn20djelMX7/cTRp/Y9w5IZHvfxQTVHrOqa2yMl7i/UfMqKRU5V7mEyKTrUVgJXhNQPVCG8PBLoQ==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-primitive": "2.1.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-menu": { + "version": "2.1.16", + "resolved": "https://registry.npmjs.org/@radix-ui/react-menu/-/react-menu-2.1.16.tgz", + "integrity": "sha512-72F2T+PLlphrqLcAotYPp0uJMr5SjP5SL01wfEspJbru5Zs5vQaSHb4VB3ZMJPimgHHCHG7gMOeOB9H3Hdmtxg==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-collection": "1.1.7", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-direction": "1.1.1", + "@radix-ui/react-dismissable-layer": "1.1.11", + "@radix-ui/react-focus-guards": "1.1.3", + "@radix-ui/react-focus-scope": "1.1.7", + "@radix-ui/react-id": "1.1.1", + "@radix-ui/react-popper": "1.2.8", + "@radix-ui/react-portal": "1.1.9", + "@radix-ui/react-presence": "1.1.5", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-roving-focus": "1.1.11", + "@radix-ui/react-slot": "1.2.3", + "@radix-ui/react-use-callback-ref": "1.1.1", + "aria-hidden": "^1.2.4", + "react-remove-scroll": "^2.6.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-popover": { + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/@radix-ui/react-popover/-/react-popover-1.1.15.tgz", + "integrity": "sha512-kr0X2+6Yy/vJzLYJUPCZEc8SfQcf+1COFoAqauJm74umQhta9M7lNJHP7QQS3vkvcGLQUbWpMzwrXYwrYztHKA==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-dismissable-layer": "1.1.11", + "@radix-ui/react-focus-guards": "1.1.3", + "@radix-ui/react-focus-scope": "1.1.7", + "@radix-ui/react-id": "1.1.1", + "@radix-ui/react-popper": "1.2.8", + "@radix-ui/react-portal": "1.1.9", + "@radix-ui/react-presence": "1.1.5", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-slot": "1.2.3", + "@radix-ui/react-use-controllable-state": "1.2.2", + "aria-hidden": "^1.2.4", + "react-remove-scroll": "^2.6.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-popper": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@radix-ui/react-popper/-/react-popper-1.2.8.tgz", + "integrity": "sha512-0NJQ4LFFUuWkE7Oxf0htBKS6zLkkjBH+hM1uk7Ng705ReR8m/uelduy1DBo0PyBXPKVnBA6YBlU94MBGXrSBCw==", + "license": "MIT", + "dependencies": { + "@floating-ui/react-dom": "^2.0.0", + "@radix-ui/react-arrow": "1.1.7", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-callback-ref": "1.1.1", + "@radix-ui/react-use-layout-effect": "1.1.1", + "@radix-ui/react-use-rect": "1.1.1", + "@radix-ui/react-use-size": "1.1.1", + "@radix-ui/rect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-portal": { + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/@radix-ui/react-portal/-/react-portal-1.1.9.tgz", + "integrity": "sha512-bpIxvq03if6UNwXZ+HTK71JLh4APvnXntDc6XOX8UVq4XQOVl7lwok0AvIl+b8zgCw3fSaVTZMpAPPagXbKmHQ==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-layout-effect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-presence": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/@radix-ui/react-presence/-/react-presence-1.1.5.tgz", + "integrity": "sha512-/jfEwNDdQVBCNvjkGit4h6pMOzq8bHkopq458dPt2lMjx+eBQUohZNG9A7DtO/O5ukSbxuaNGXMjHicgwy6rQQ==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-use-layout-effect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-primitive": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-2.1.3.tgz", + "integrity": "sha512-m9gTwRkhy2lvCPe6QJp4d3G1TYEUHn/FzJUtq9MjH46an1wJU+GdoGC5VLof8RX8Ft/DlpshApkhswDLZzHIcQ==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-slot": "1.2.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-roving-focus": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/@radix-ui/react-roving-focus/-/react-roving-focus-1.1.11.tgz", + "integrity": "sha512-7A6S9jSgm/S+7MdtNDSb+IU859vQqJ/QAtcYQcfFC6W8RS4IxIZDldLR0xqCFZ6DCyrQLjLPsxtTNch5jVA4lA==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-collection": "1.1.7", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-direction": "1.1.1", + "@radix-ui/react-id": "1.1.1", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-callback-ref": "1.1.1", + "@radix-ui/react-use-controllable-state": "1.2.2" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-scroll-area": { + "version": "1.2.10", + "resolved": "https://registry.npmjs.org/@radix-ui/react-scroll-area/-/react-scroll-area-1.2.10.tgz", + "integrity": "sha512-tAXIa1g3sM5CGpVT0uIbUx/U3Gs5N8T52IICuCtObaos1S8fzsrPXG5WObkQN3S6NVl6wKgPhAIiBGbWnvc97A==", + "license": "MIT", + "dependencies": { + "@radix-ui/number": "1.1.1", + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-direction": "1.1.1", + "@radix-ui/react-presence": "1.1.5", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-callback-ref": "1.1.1", + "@radix-ui/react-use-layout-effect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-select": { + "version": "2.2.6", + "resolved": "https://registry.npmjs.org/@radix-ui/react-select/-/react-select-2.2.6.tgz", + "integrity": "sha512-I30RydO+bnn2PQztvo25tswPH+wFBjehVGtmagkU78yMdwTwVf12wnAOF+AeP8S2N8xD+5UPbGhkUfPyvT+mwQ==", + "license": "MIT", + "dependencies": { + "@radix-ui/number": "1.1.1", + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-collection": "1.1.7", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-direction": "1.1.1", + "@radix-ui/react-dismissable-layer": "1.1.11", + "@radix-ui/react-focus-guards": "1.1.3", + "@radix-ui/react-focus-scope": "1.1.7", + "@radix-ui/react-id": "1.1.1", + "@radix-ui/react-popper": "1.2.8", + "@radix-ui/react-portal": "1.1.9", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-slot": "1.2.3", + "@radix-ui/react-use-callback-ref": "1.1.1", + "@radix-ui/react-use-controllable-state": "1.2.2", + "@radix-ui/react-use-layout-effect": "1.1.1", + "@radix-ui/react-use-previous": "1.1.1", + "@radix-ui/react-visually-hidden": "1.2.3", + "aria-hidden": "^1.2.4", + "react-remove-scroll": "^2.6.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-slot": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.2.3.tgz", + "integrity": "sha512-aeNmHnBxbi2St0au6VBVC7JXFlhLlOnvIIlePNniyUNAClzmtAUEY8/pBiK3iHjufOlwA+c20/8jngo7xcrg8A==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.2" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-tabs": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/@radix-ui/react-tabs/-/react-tabs-1.1.13.tgz", + "integrity": "sha512-7xdcatg7/U+7+Udyoj2zodtI9H/IIopqo+YOIcZOq1nJwXWBZ9p8xiu5llXlekDbZkca79a/fozEYQXIA4sW6A==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-direction": "1.1.1", + "@radix-ui/react-id": "1.1.1", + "@radix-ui/react-presence": "1.1.5", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-roving-focus": "1.1.11", + "@radix-ui/react-use-controllable-state": "1.2.2" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-tooltip": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@radix-ui/react-tooltip/-/react-tooltip-1.2.8.tgz", + "integrity": "sha512-tY7sVt1yL9ozIxvmbtN5qtmH2krXcBCfjEiCgKGLqunJHvgvZG2Pcl2oQ3kbcZARb1BGEHdkLzcYGO8ynVlieg==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-dismissable-layer": "1.1.11", + "@radix-ui/react-id": "1.1.1", + "@radix-ui/react-popper": "1.2.8", + "@radix-ui/react-portal": "1.1.9", + "@radix-ui/react-presence": "1.1.5", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-slot": "1.2.3", + "@radix-ui/react-use-controllable-state": "1.2.2", + "@radix-ui/react-visually-hidden": "1.2.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-callback-ref": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-callback-ref/-/react-use-callback-ref-1.1.1.tgz", + "integrity": "sha512-FkBMwD+qbGQeMu1cOHnuGB6x4yzPjho8ap5WtbEJ26umhgqVXbhekKUQO+hZEL1vU92a3wHwdp0HAcqAUF5iDg==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-controllable-state": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-controllable-state/-/react-use-controllable-state-1.2.2.tgz", + "integrity": "sha512-BjasUjixPFdS+NKkypcyyN5Pmg83Olst0+c6vGov0diwTEo6mgdqVR6hxcEgFuh4QrAs7Rc+9KuGJ9TVCj0Zzg==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-use-effect-event": "0.0.2", + "@radix-ui/react-use-layout-effect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-effect-event": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-effect-event/-/react-use-effect-event-0.0.2.tgz", + "integrity": "sha512-Qp8WbZOBe+blgpuUT+lw2xheLP8q0oatc9UpmiemEICxGvFLYmHm9QowVZGHtJlGbS6A6yJ3iViad/2cVjnOiA==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-use-layout-effect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-escape-keydown": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-escape-keydown/-/react-use-escape-keydown-1.1.1.tgz", + "integrity": "sha512-Il0+boE7w/XebUHyBjroE+DbByORGR9KKmITzbR7MyQ4akpORYP/ZmbhAr0DG7RmmBqoOnZdy2QlvajJ2QA59g==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-use-callback-ref": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-is-hydrated": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-is-hydrated/-/react-use-is-hydrated-0.1.0.tgz", + "integrity": "sha512-U+UORVEq+cTnRIaostJv9AGdV3G6Y+zbVd+12e18jQ5A3c0xL03IhnHuiU4UV69wolOQp5GfR58NW/EgdQhwOA==", + "license": "MIT", + "dependencies": { + "use-sync-external-store": "^1.5.0" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-layout-effect": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-layout-effect/-/react-use-layout-effect-1.1.1.tgz", + "integrity": "sha512-RbJRS4UWQFkzHTTwVymMTUv8EqYhOp8dOOviLj2ugtTiXRaRQS7GLGxZTLL1jWhMeoSCf5zmcZkqTl9IiYfXcQ==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-previous": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-previous/-/react-use-previous-1.1.1.tgz", + "integrity": "sha512-2dHfToCj/pzca2Ck724OZ5L0EVrr3eHRNsG/b3xQJLA2hZpVCS99bLAX+hm1IHXDEnzU6by5z/5MIY794/a8NQ==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-rect": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-rect/-/react-use-rect-1.1.1.tgz", + "integrity": "sha512-QTYuDesS0VtuHNNvMh+CjlKJ4LJickCMUAqjlE3+j8w+RlRpwyX3apEQKGFzbZGdo7XNG1tXa+bQqIE7HIXT2w==", + "license": "MIT", + "dependencies": { + "@radix-ui/rect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-size": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-size/-/react-use-size-1.1.1.tgz", + "integrity": "sha512-ewrXRDTAqAXlkl6t/fkXWNAhFX9I+CkKlw6zjEwk86RSPKwZr3xpBRso655aqYafwtnbpHLj6toFzmd6xdVptQ==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-use-layout-effect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-visually-hidden": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-visually-hidden/-/react-visually-hidden-1.2.3.tgz", + "integrity": "sha512-pzJq12tEaaIhqjbzpCuv/OypJY/BPavOofm+dbab+MHLajy277+1lLm6JFcGgF5eskJ6mquGirhXY2GD/8u8Ug==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-primitive": "2.1.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/rect": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/rect/-/rect-1.1.1.tgz", + "integrity": "sha512-HPwpGIzkl28mWyZqG52jiqDJ12waP11Pa1lGoiyUkIEuMLBP0oeK/C89esbXrxsky5we7dfd8U58nm0SgAWpVw==", + "license": "MIT" + }, + "node_modules/@remix-run/router": { + "version": "1.23.0", + "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.23.0.tgz", + "integrity": "sha512-O3rHJzAQKamUz1fvE0Qaw0xSFqsA/yafi2iqeE0pvdFtCO1viYx8QL6f3Ln/aCCTLxs68SLf0KPM9eSeM8yBnA==", + "license": "MIT", + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@rolldown/pluginutils": { + "version": "1.0.0-beta.27", + "resolved": "https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.0-beta.27.tgz", + "integrity": "sha512-+d0F4MKMCbeVUJwG96uQ4SgAznZNSq93I3V+9NHA4OpvqG8mRCpGdKmK8l/dl02h2CCDHwW2FqilnTyDcAnqjA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@rollup/pluginutils": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.3.0.tgz", + "integrity": "sha512-5EdhGZtnu3V88ces7s53hhfK5KSASnJZv8Lulpc04cWO3REESroJXg73DFsOmgbU2BhwV0E20bu2IDZb3VKW4Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "estree-walker": "^2.0.2", + "picomatch": "^4.0.2" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } + } + }, + "node_modules/@rollup/rollup-android-arm-eabi": { + "version": "4.50.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.50.1.tgz", + "integrity": "sha512-HJXwzoZN4eYTdD8bVV22DN8gsPCAj3V20NHKOs8ezfXanGpmVPR7kalUHd+Y31IJp9stdB87VKPFbsGY3H/2ag==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-android-arm64": { + "version": "4.50.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.50.1.tgz", + "integrity": "sha512-PZlsJVcjHfcH53mOImyt3bc97Ep3FJDXRpk9sMdGX0qgLmY0EIWxCag6EigerGhLVuL8lDVYNnSo8qnTElO4xw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-darwin-arm64": { + "version": "4.50.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.50.1.tgz", + "integrity": "sha512-xc6i2AuWh++oGi4ylOFPmzJOEeAa2lJeGUGb4MudOtgfyyjr4UPNK+eEWTPLvmPJIY/pgw6ssFIox23SyrkkJw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-darwin-x64": { + "version": "4.50.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.50.1.tgz", + "integrity": "sha512-2ofU89lEpDYhdLAbRdeyz/kX3Y2lpYc6ShRnDjY35bZhd2ipuDMDi6ZTQ9NIag94K28nFMofdnKeHR7BT0CATw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-freebsd-arm64": { + "version": "4.50.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.50.1.tgz", + "integrity": "sha512-wOsE6H2u6PxsHY/BeFHA4VGQN3KUJFZp7QJBmDYI983fgxq5Th8FDkVuERb2l9vDMs1D5XhOrhBrnqcEY6l8ZA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-freebsd-x64": { + "version": "4.50.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.50.1.tgz", + "integrity": "sha512-A/xeqaHTlKbQggxCqispFAcNjycpUEHP52mwMQZUNqDUJFFYtPHCXS1VAG29uMlDzIVr+i00tSFWFLivMcoIBQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.50.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.50.1.tgz", + "integrity": "sha512-54v4okehwl5TaSIkpp97rAHGp7t3ghinRd/vyC1iXqXMfjYUTm7TfYmCzXDoHUPTTf36L8pr0E7YsD3CfB3ZDg==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm-musleabihf": { + "version": "4.50.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.50.1.tgz", + "integrity": "sha512-p/LaFyajPN/0PUHjv8TNyxLiA7RwmDoVY3flXHPSzqrGcIp/c2FjwPPP5++u87DGHtw+5kSH5bCJz0mvXngYxw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.50.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.50.1.tgz", + "integrity": "sha512-2AbMhFFkTo6Ptna1zO7kAXXDLi7H9fGTbVaIq2AAYO7yzcAsuTNWPHhb2aTA6GPiP+JXh85Y8CiS54iZoj4opw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-musl": { + "version": "4.50.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.50.1.tgz", + "integrity": "sha512-Cgef+5aZwuvesQNw9eX7g19FfKX5/pQRIyhoXLCiBOrWopjo7ycfB292TX9MDcDijiuIJlx1IzJz3IoCPfqs9w==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-loongarch64-gnu": { + "version": "4.50.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.50.1.tgz", + "integrity": "sha512-RPhTwWMzpYYrHrJAS7CmpdtHNKtt2Ueo+BlLBjfZEhYBhK00OsEqM08/7f+eohiF6poe0YRDDd8nAvwtE/Y62Q==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-ppc64-gnu": { + "version": "4.50.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.50.1.tgz", + "integrity": "sha512-eSGMVQw9iekut62O7eBdbiccRguuDgiPMsw++BVUg+1K7WjZXHOg/YOT9SWMzPZA+w98G+Fa1VqJgHZOHHnY0Q==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-gnu": { + "version": "4.50.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.50.1.tgz", + "integrity": "sha512-S208ojx8a4ciIPrLgazF6AgdcNJzQE4+S9rsmOmDJkusvctii+ZvEuIC4v/xFqzbuP8yDjn73oBlNDgF6YGSXQ==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-musl": { + "version": "4.50.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.50.1.tgz", + "integrity": "sha512-3Ag8Ls1ggqkGUvSZWYcdgFwriy2lWo+0QlYgEFra/5JGtAd6C5Hw59oojx1DeqcA2Wds2ayRgvJ4qxVTzCHgzg==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-s390x-gnu": { + "version": "4.50.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.50.1.tgz", + "integrity": "sha512-t9YrKfaxCYe7l7ldFERE1BRg/4TATxIg+YieHQ966jwvo7ddHJxPj9cNFWLAzhkVsbBvNA4qTbPVNsZKBO4NSg==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.50.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.50.1.tgz", + "integrity": "sha512-MCgtFB2+SVNuQmmjHf+wfI4CMxy3Tk8XjA5Z//A0AKD7QXUYFMQcns91K6dEHBvZPCnhJSyDWLApk40Iq/H3tA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.50.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.50.1.tgz", + "integrity": "sha512-nEvqG+0jeRmqaUMuwzlfMKwcIVffy/9KGbAGyoa26iu6eSngAYQ512bMXuqqPrlTyfqdlB9FVINs93j534UJrg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-openharmony-arm64": { + "version": "4.50.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.50.1.tgz", + "integrity": "sha512-RDsLm+phmT3MJd9SNxA9MNuEAO/J2fhW8GXk62G/B4G7sLVumNFbRwDL6v5NrESb48k+QMqdGbHgEtfU0LCpbA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ] + }, + "node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.50.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.50.1.tgz", + "integrity": "sha512-hpZB/TImk2FlAFAIsoElM3tLzq57uxnGYwplg6WDyAxbYczSi8O2eQ+H2Lx74504rwKtZ3N2g4bCUkiamzS6TQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-ia32-msvc": { + "version": "4.50.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.50.1.tgz", + "integrity": "sha512-SXjv8JlbzKM0fTJidX4eVsH+Wmnp0/WcD8gJxIZyR6Gay5Qcsmdbi9zVtnbkGPG8v2vMR1AD06lGWy5FLMcG7A==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.50.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.50.1.tgz", + "integrity": "sha512-StxAO/8ts62KZVRAm4JZYq9+NqNsV7RvimNK+YM7ry//zebEH6meuugqW/P5OFUCjyQgui+9fUxT6d5NShvMvA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rtsao/scc": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@rtsao/scc/-/scc-1.1.0.tgz", + "integrity": "sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==", + "dev": true, + "license": "MIT" + }, + "node_modules/@storybook/addon-actions": { + "version": "8.6.14", + "resolved": "https://registry.npmjs.org/@storybook/addon-actions/-/addon-actions-8.6.14.tgz", + "integrity": "sha512-mDQxylxGGCQSK7tJPkD144J8jWh9IU9ziJMHfB84PKpI/V5ZgqMDnpr2bssTrUaGDqU5e1/z8KcRF+Melhs9pQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@storybook/global": "^5.0.0", + "@types/uuid": "^9.0.1", + "dequal": "^2.0.2", + "polished": "^4.2.2", + "uuid": "^9.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + }, + "peerDependencies": { + "storybook": "^8.6.14" + } + }, + "node_modules/@storybook/addon-backgrounds": { + "version": "8.6.14", + "resolved": "https://registry.npmjs.org/@storybook/addon-backgrounds/-/addon-backgrounds-8.6.14.tgz", + "integrity": "sha512-l9xS8qWe5n4tvMwth09QxH2PmJbCctEvBAc1tjjRasAfrd69f7/uFK4WhwJAstzBTNgTc8VXI4w8ZR97i1sFbg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@storybook/global": "^5.0.0", + "memoizerific": "^1.11.3", + "ts-dedent": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + }, + "peerDependencies": { + "storybook": "^8.6.14" + } + }, + "node_modules/@storybook/addon-controls": { + "version": "8.6.14", + "resolved": "https://registry.npmjs.org/@storybook/addon-controls/-/addon-controls-8.6.14.tgz", + "integrity": "sha512-IiQpkNJdiRyA4Mq9mzjZlvQugL/aE7hNgVxBBGPiIZG6wb6Ht9hNnBYpap5ZXXFKV9p2qVI0FZK445ONmAa+Cw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@storybook/global": "^5.0.0", + "dequal": "^2.0.2", + "ts-dedent": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + }, + "peerDependencies": { + "storybook": "^8.6.14" + } + }, + "node_modules/@storybook/addon-docs": { + "version": "8.6.14", + "resolved": "https://registry.npmjs.org/@storybook/addon-docs/-/addon-docs-8.6.14.tgz", + "integrity": "sha512-Obpd0OhAF99JyU5pp5ci17YmpcQtMNgqW2pTXV8jAiiipWpwO++hNDeQmLmlSXB399XjtRDOcDVkoc7rc6JzdQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@mdx-js/react": "^3.0.0", + "@storybook/blocks": "8.6.14", + "@storybook/csf-plugin": "8.6.14", + "@storybook/react-dom-shim": "8.6.14", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", + "ts-dedent": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + }, + "peerDependencies": { + "storybook": "^8.6.14" + } + }, + "node_modules/@storybook/addon-essentials": { + "version": "8.6.14", + "resolved": "https://registry.npmjs.org/@storybook/addon-essentials/-/addon-essentials-8.6.14.tgz", + "integrity": "sha512-5ZZSHNaW9mXMOFkoPyc3QkoNGdJHETZydI62/OASR0lmPlJ1065TNigEo5dJddmZNn0/3bkE8eKMAzLnO5eIdA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@storybook/addon-actions": "8.6.14", + "@storybook/addon-backgrounds": "8.6.14", + "@storybook/addon-controls": "8.6.14", + "@storybook/addon-docs": "8.6.14", + "@storybook/addon-highlight": "8.6.14", + "@storybook/addon-measure": "8.6.14", + "@storybook/addon-outline": "8.6.14", + "@storybook/addon-toolbars": "8.6.14", + "@storybook/addon-viewport": "8.6.14", + "ts-dedent": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + }, + "peerDependencies": { + "storybook": "^8.6.14" + } + }, + "node_modules/@storybook/addon-highlight": { + "version": "8.6.14", + "resolved": "https://registry.npmjs.org/@storybook/addon-highlight/-/addon-highlight-8.6.14.tgz", + "integrity": "sha512-4H19OJlapkofiE9tM6K/vsepf4ir9jMm9T+zw5L85blJZxhKZIbJ6FO0TCG9PDc4iPt3L6+aq5B0X29s9zicNQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@storybook/global": "^5.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + }, + "peerDependencies": { + "storybook": "^8.6.14" + } + }, + "node_modules/@storybook/addon-interactions": { + "version": "8.6.14", + "resolved": "https://registry.npmjs.org/@storybook/addon-interactions/-/addon-interactions-8.6.14.tgz", + "integrity": "sha512-8VmElhm2XOjh22l/dO4UmXxNOolGhNiSpBcls2pqWSraVh4a670EyYBZsHpkXqfNHo2YgKyZN3C91+9zfH79qQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@storybook/global": "^5.0.0", + "@storybook/instrumenter": "8.6.14", + "@storybook/test": "8.6.14", + "polished": "^4.2.2", + "ts-dedent": "^2.2.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + }, + "peerDependencies": { + "storybook": "^8.6.14" + } + }, + "node_modules/@storybook/addon-links": { + "version": "8.6.14", + "resolved": "https://registry.npmjs.org/@storybook/addon-links/-/addon-links-8.6.14.tgz", + "integrity": "sha512-DRlXHIyZzOruAZkxmXfVgTF+4d6K27pFcH4cUsm3KT1AXuZbr23lb5iZHpUZoG6lmU85Sru4xCEgewSTXBIe1w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@storybook/global": "^5.0.0", + "ts-dedent": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta", + "storybook": "^8.6.14" + }, + "peerDependenciesMeta": { + "react": { + "optional": true + } + } + }, + "node_modules/@storybook/addon-measure": { + "version": "8.6.14", + "resolved": "https://registry.npmjs.org/@storybook/addon-measure/-/addon-measure-8.6.14.tgz", + "integrity": "sha512-1Tlyb72NX8aAqm6I6OICsUuGOP6hgnXcuFlXucyhKomPa6j3Eu2vKu561t/f0oGtAK2nO93Z70kVaEh5X+vaGw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@storybook/global": "^5.0.0", + "tiny-invariant": "^1.3.1" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + }, + "peerDependencies": { + "storybook": "^8.6.14" + } + }, + "node_modules/@storybook/addon-outline": { + "version": "8.6.14", + "resolved": "https://registry.npmjs.org/@storybook/addon-outline/-/addon-outline-8.6.14.tgz", + "integrity": "sha512-CW857JvN6OxGWElqjlzJO2S69DHf+xO3WsEfT5mT3ZtIjmsvRDukdWfDU9bIYUFyA2lFvYjncBGjbK+I91XR7w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@storybook/global": "^5.0.0", + "ts-dedent": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + }, + "peerDependencies": { + "storybook": "^8.6.14" + } + }, + "node_modules/@storybook/addon-themes": { + "version": "8.6.14", + "resolved": "https://registry.npmjs.org/@storybook/addon-themes/-/addon-themes-8.6.14.tgz", + "integrity": "sha512-/HJCgskA3OFGectuoLEBQ3JX1nQhE7lnpSv5gH13CWyyaMEk/mP8JYF1uO25YQqwGuSgL2gaEox+aK7UmglAmQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ts-dedent": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + }, + "peerDependencies": { + "storybook": "^8.6.14" + } + }, + "node_modules/@storybook/addon-toolbars": { + "version": "8.6.14", + "resolved": "https://registry.npmjs.org/@storybook/addon-toolbars/-/addon-toolbars-8.6.14.tgz", + "integrity": "sha512-W/wEXT8h3VyZTVfWK/84BAcjAxTdtRiAkT2KAN0nbSHxxB5KEM1MjKpKu2upyzzMa3EywITqbfy4dP6lpkVTwQ==", + "dev": true, + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + }, + "peerDependencies": { + "storybook": "^8.6.14" + } + }, + "node_modules/@storybook/addon-viewport": { + "version": "8.6.14", + "resolved": "https://registry.npmjs.org/@storybook/addon-viewport/-/addon-viewport-8.6.14.tgz", + "integrity": "sha512-gNzVQbMqRC+/4uQTPI2ZrWuRHGquTMZpdgB9DrD88VTEjNudP+J6r8myLfr2VvGksBbUMHkGHMXHuIhrBEnXYA==", + "dev": true, + "license": "MIT", + "dependencies": { + "memoizerific": "^1.11.3" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + }, + "peerDependencies": { + "storybook": "^8.6.14" + } + }, + "node_modules/@storybook/blocks": { + "version": "8.6.14", + "resolved": "https://registry.npmjs.org/@storybook/blocks/-/blocks-8.6.14.tgz", + "integrity": "sha512-rBMHAfA39AGHgkrDze4RmsnQTMw1ND5fGWobr9pDcJdnDKWQWNRD7Nrlxj0gFlN3n4D9lEZhWGdFrCbku7FVAQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@storybook/icons": "^1.2.12", + "ts-dedent": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", + "storybook": "^8.6.14" + }, + "peerDependenciesMeta": { + "react": { + "optional": true + }, + "react-dom": { + "optional": true + } + } + }, + "node_modules/@storybook/builder-vite": { + "version": "8.6.14", + "resolved": "https://registry.npmjs.org/@storybook/builder-vite/-/builder-vite-8.6.14.tgz", + "integrity": "sha512-ajWYhy32ksBWxwWHrjwZzyC0Ii5ZTeu5lsqA95Q/EQBB0P5qWlHWGM3AVyv82Mz/ND03ebGy123uVwgf6olnYQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@storybook/csf-plugin": "8.6.14", + "browser-assert": "^1.2.1", + "ts-dedent": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + }, + "peerDependencies": { + "storybook": "^8.6.14", + "vite": "^4.0.0 || ^5.0.0 || ^6.0.0" + } + }, + "node_modules/@storybook/channels": { + "version": "7.6.17", + "resolved": "https://registry.npmjs.org/@storybook/channels/-/channels-7.6.17.tgz", + "integrity": "sha512-GFG40pzaSxk1hUr/J/TMqW5AFDDPUSu+HkeE/oqSWJbOodBOLJzHN6CReJS6y1DjYSZLNFt1jftPWZZInG/XUA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@storybook/client-logger": "7.6.17", + "@storybook/core-events": "7.6.17", + "@storybook/global": "^5.0.0", + "qs": "^6.10.0", + "telejson": "^7.2.0", + "tiny-invariant": "^1.3.1" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + } + }, + "node_modules/@storybook/client-logger": { + "version": "7.6.17", + "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-7.6.17.tgz", + "integrity": "sha512-6WBYqixAXNAXlSaBWwgljWpAu10tPRBJrcFvx2gPUne58EeMM20Gi/iHYBz2kMCY+JLAgeIH7ZxInqwO8vDwiQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@storybook/global": "^5.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + } + }, + "node_modules/@storybook/components": { + "version": "8.6.14", + "resolved": "https://registry.npmjs.org/@storybook/components/-/components-8.6.14.tgz", + "integrity": "sha512-HNR2mC5I4Z5ek8kTrVZlIY/B8gJGs5b3XdZPBPBopTIN6U/YHXiDyOjY3JlaS4fSG1fVhp/Qp1TpMn1w/9m1pw==", + "dev": true, + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + }, + "peerDependencies": { + "storybook": "^8.2.0 || ^8.3.0-0 || ^8.4.0-0 || ^8.5.0-0 || ^8.6.0-0" + } + }, + "node_modules/@storybook/core": { + "version": "8.6.14", + "resolved": "https://registry.npmjs.org/@storybook/core/-/core-8.6.14.tgz", + "integrity": "sha512-1P/w4FSNRqP8j3JQBOi3yGt8PVOgSRbP66Ok520T78eJBeqx9ukCfl912PQZ7SPbW3TIunBwLXMZOjZwBB/JmA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@storybook/theming": "8.6.14", + "better-opn": "^3.0.2", + "browser-assert": "^1.2.1", + "esbuild": "^0.18.0 || ^0.19.0 || ^0.20.0 || ^0.21.0 || ^0.22.0 || ^0.23.0 || ^0.24.0 || ^0.25.0", + "esbuild-register": "^3.5.0", + "jsdoc-type-pratt-parser": "^4.0.0", + "process": "^0.11.10", + "recast": "^0.23.5", + "semver": "^7.6.2", + "util": "^0.12.5", + "ws": "^8.2.3" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + }, + "peerDependencies": { + "prettier": "^2 || ^3" + }, + "peerDependenciesMeta": { + "prettier": { + "optional": true + } + } + }, + "node_modules/@storybook/core-events": { + "version": "7.6.17", + "resolved": "https://registry.npmjs.org/@storybook/core-events/-/core-events-7.6.17.tgz", + "integrity": "sha512-AriWMCm/k1cxlv10f+jZ1wavThTRpLaN3kY019kHWbYT9XgaSuLU67G7GPr3cGnJ6HuA6uhbzu8qtqVCd6OfXA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ts-dedent": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + } + }, + "node_modules/@storybook/csf": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/@storybook/csf/-/csf-0.1.13.tgz", + "integrity": "sha512-7xOOwCLGB3ebM87eemep89MYRFTko+D8qE7EdAAq74lgdqRR5cOUtYWJLjO2dLtP94nqoOdHJo6MdLLKzg412Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "type-fest": "^2.19.0" + } + }, + "node_modules/@storybook/csf-plugin": { + "version": "8.6.14", + "resolved": "https://registry.npmjs.org/@storybook/csf-plugin/-/csf-plugin-8.6.14.tgz", + "integrity": "sha512-dErtc9teAuN+eelN8FojzFE635xlq9cNGGGEu0WEmMUQ4iJ8pingvBO1N8X3scz4Ry7KnxX++NNf3J3gpxS8qQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "unplugin": "^1.3.1" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + }, + "peerDependencies": { + "storybook": "^8.6.14" + } + }, + "node_modules/@storybook/global": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@storybook/global/-/global-5.0.0.tgz", + "integrity": "sha512-FcOqPAXACP0I3oJ/ws6/rrPT9WGhu915Cg8D02a9YxLo0DE9zI+a9A5gRGvmQ09fiWPukqI8ZAEoQEdWUKMQdQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@storybook/icons": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@storybook/icons/-/icons-1.4.0.tgz", + "integrity": "sha512-Td73IeJxOyalzvjQL+JXx72jlIYHgs+REaHiREOqfpo3A2AYYG71AUbcv+lg7mEDIweKVCxsMQ0UKo634c8XeA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta" + } + }, + "node_modules/@storybook/instrumenter": { + "version": "8.6.14", + "resolved": "https://registry.npmjs.org/@storybook/instrumenter/-/instrumenter-8.6.14.tgz", + "integrity": "sha512-iG4MlWCcz1L7Yu8AwgsnfVAmMbvyRSk700Mfy2g4c8y5O+Cv1ejshE1LBBsCwHgkuqU0H4R0qu4g23+6UnUemQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@storybook/global": "^5.0.0", + "@vitest/utils": "^2.1.1" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + }, + "peerDependencies": { + "storybook": "^8.6.14" + } + }, + "node_modules/@storybook/manager-api": { + "version": "8.6.14", + "resolved": "https://registry.npmjs.org/@storybook/manager-api/-/manager-api-8.6.14.tgz", + "integrity": "sha512-ez0Zihuy17udLbfHZQXkGqwtep0mSGgHcNzGN7iZrMP1m+VmNo+7aGCJJdvXi7+iU3yq8weXSQFWg5DqWgLS7g==", + "dev": true, + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + }, + "peerDependencies": { + "storybook": "^8.2.0 || ^8.3.0-0 || ^8.4.0-0 || ^8.5.0-0 || ^8.6.0-0" + } + }, + "node_modules/@storybook/preview-api": { + "version": "7.6.17", + "resolved": "https://registry.npmjs.org/@storybook/preview-api/-/preview-api-7.6.17.tgz", + "integrity": "sha512-wLfDdI9RWo1f2zzFe54yRhg+2YWyxLZvqdZnSQ45mTs4/7xXV5Wfbv3QNTtcdw8tT3U5KRTrN1mTfTCiRJc0Kw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@storybook/channels": "7.6.17", + "@storybook/client-logger": "7.6.17", + "@storybook/core-events": "7.6.17", + "@storybook/csf": "^0.1.2", + "@storybook/global": "^5.0.0", + "@storybook/types": "7.6.17", + "@types/qs": "^6.9.5", + "dequal": "^2.0.2", + "lodash": "^4.17.21", + "memoizerific": "^1.11.3", + "qs": "^6.10.0", + "synchronous-promise": "^2.0.15", + "ts-dedent": "^2.0.0", + "util-deprecate": "^1.0.2" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + } + }, + "node_modules/@storybook/preview-web": { + "version": "7.6.17", + "resolved": "https://registry.npmjs.org/@storybook/preview-web/-/preview-web-7.6.17.tgz", + "integrity": "sha512-LxyxBF4hKTmXci5eYSOQbtv3B7bvmhd38FMG7ExpA9zP8aAjccPdgDdE3PIuVLIGcEfE2RXFYMfo/AY91beyuw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@storybook/client-logger": "7.6.17", + "@storybook/preview-api": "7.6.17" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + } + }, + "node_modules/@storybook/react": { + "version": "8.6.14", + "resolved": "https://registry.npmjs.org/@storybook/react/-/react-8.6.14.tgz", + "integrity": "sha512-BOepx5bBFwl/CPI+F+LnmMmsG1wQYmrX/UQXgUbHQUU9Tj7E2ndTnNbpIuSLc8IrM03ru+DfwSg1Co3cxWtT+g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@storybook/components": "8.6.14", + "@storybook/global": "^5.0.0", + "@storybook/manager-api": "8.6.14", + "@storybook/preview-api": "8.6.14", + "@storybook/react-dom-shim": "8.6.14", + "@storybook/theming": "8.6.14" + }, + "engines": { + "node": ">=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + }, + "peerDependencies": { + "@storybook/test": "8.6.14", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta", + "storybook": "^8.6.14", + "typescript": ">= 4.2.x" + }, + "peerDependenciesMeta": { + "@storybook/test": { + "optional": true + }, + "typescript": { + "optional": true + } + } + }, + "node_modules/@storybook/react-dom-shim": { + "version": "8.6.14", + "resolved": "https://registry.npmjs.org/@storybook/react-dom-shim/-/react-dom-shim-8.6.14.tgz", + "integrity": "sha512-0hixr3dOy3f3M+HBofp3jtMQMS+sqzjKNgl7Arfuj3fvjmyXOks/yGjDImySR4imPtEllvPZfhiQNlejheaInw==", + "dev": true, + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta", + "storybook": "^8.6.14" + } + }, + "node_modules/@storybook/react-vite": { + "version": "8.6.14", + "resolved": "https://registry.npmjs.org/@storybook/react-vite/-/react-vite-8.6.14.tgz", + "integrity": "sha512-FZU0xMPxa4/TO87FgcWwappOxLBHZV5HSRK5K+2bJD7rFJAoNorbHvB4Q1zvIAk7eCMjkr2GPCPHx9PRB9vJFg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@joshwooding/vite-plugin-react-docgen-typescript": "0.5.0", + "@rollup/pluginutils": "^5.0.2", + "@storybook/builder-vite": "8.6.14", + "@storybook/react": "8.6.14", + "find-up": "^5.0.0", + "magic-string": "^0.30.0", + "react-docgen": "^7.0.0", + "resolve": "^1.22.8", + "tsconfig-paths": "^4.2.0" + }, + "engines": { + "node": ">=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + }, + "peerDependencies": { + "@storybook/test": "8.6.14", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta", + "storybook": "^8.6.14", + "vite": "^4.0.0 || ^5.0.0 || ^6.0.0" + }, + "peerDependenciesMeta": { + "@storybook/test": { + "optional": true + } + } + }, + "node_modules/@storybook/react/node_modules/@storybook/preview-api": { + "version": "8.6.14", + "resolved": "https://registry.npmjs.org/@storybook/preview-api/-/preview-api-8.6.14.tgz", + "integrity": "sha512-2GhcCd4dNMrnD7eooEfvbfL4I83qAqEyO0CO7JQAmIO6Rxb9BsOLLI/GD5HkvQB73ArTJ+PT50rfaO820IExOQ==", + "dev": true, + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + }, + "peerDependencies": { + "storybook": "^8.2.0 || ^8.3.0-0 || ^8.4.0-0 || ^8.5.0-0 || ^8.6.0-0" + } + }, + "node_modules/@storybook/test": { + "version": "8.6.14", + "resolved": "https://registry.npmjs.org/@storybook/test/-/test-8.6.14.tgz", + "integrity": "sha512-GkPNBbbZmz+XRdrhMtkxPotCLOQ1BaGNp/gFZYdGDk2KmUWBKmvc5JxxOhtoXM2703IzNFlQHSSNnhrDZYuLlw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@storybook/global": "^5.0.0", + "@storybook/instrumenter": "8.6.14", + "@testing-library/dom": "10.4.0", + "@testing-library/jest-dom": "6.5.0", + "@testing-library/user-event": "14.5.2", + "@vitest/expect": "2.0.5", + "@vitest/spy": "2.0.5" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + }, + "peerDependencies": { + "storybook": "^8.6.14" + } + }, + "node_modules/@storybook/theming": { + "version": "8.6.14", + "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-8.6.14.tgz", + "integrity": "sha512-r4y+LsiB37V5hzpQo+BM10PaCsp7YlZ0YcZzQP1OCkPlYXmUAFy2VvDKaFRpD8IeNPKug2u4iFm/laDEbs03dg==", + "dev": true, + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + }, + "peerDependencies": { + "storybook": "^8.2.0 || ^8.3.0-0 || ^8.4.0-0 || ^8.5.0-0 || ^8.6.0-0" + } + }, + "node_modules/@storybook/types": { + "version": "7.6.17", + "resolved": "https://registry.npmjs.org/@storybook/types/-/types-7.6.17.tgz", + "integrity": "sha512-GRY0xEJQ0PrL7DY2qCNUdIfUOE0Gsue6N+GBJw9ku1IUDFLJRDOF+4Dx2BvYcVCPI5XPqdWKlEyZdMdKjiQN7Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@storybook/channels": "7.6.17", + "@types/babel__core": "^7.0.0", + "@types/express": "^4.7.0", + "file-system-cache": "2.3.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + } + }, + "node_modules/@tanstack/eslint-plugin-query": { + "version": "5.86.0", + "resolved": "https://registry.npmjs.org/@tanstack/eslint-plugin-query/-/eslint-plugin-query-5.86.0.tgz", + "integrity": "sha512-tmXdnx/fF3yY5G5jpzrJQbASY3PNzsKF0gq9IsZVqz3LJ4sExgdUFGQ305nao0wTMBOclyrSC13v/VQ3yOXu/Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/utils": "^8.37.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/tannerlinsley" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0" + } + }, + "node_modules/@tanstack/query-core": { + "version": "5.87.1", + "resolved": "https://registry.npmjs.org/@tanstack/query-core/-/query-core-5.87.1.tgz", + "integrity": "sha512-HOFHVvhOCprrWvtccSzc7+RNqpnLlZ5R6lTmngb8aq7b4rc2/jDT0w+vLdQ4lD9bNtQ+/A4GsFXy030Gk4ollA==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/tannerlinsley" + } + }, + "node_modules/@tanstack/query-devtools": { + "version": "5.87.3", + "resolved": "https://registry.npmjs.org/@tanstack/query-devtools/-/query-devtools-5.87.3.tgz", + "integrity": "sha512-LkzxzSr2HS1ALHTgDmJH5eGAVsSQiuwz//VhFW5OqNk0OQ+Fsqba0Tsf+NzWRtXYvpgUqwQr4b2zdFZwxHcGvg==", + "dev": true, + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/tannerlinsley" + } + }, + "node_modules/@tanstack/react-query": { + "version": "5.87.1", + "resolved": "https://registry.npmjs.org/@tanstack/react-query/-/react-query-5.87.1.tgz", + "integrity": "sha512-YKauf8jfMowgAqcxj96AHs+Ux3m3bWT1oSVKamaRPXSnW2HqSznnTCEkAVqctF1e/W9R/mPcyzzINIgpOH94qg==", + "license": "MIT", + "dependencies": { + "@tanstack/query-core": "5.87.1" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/tannerlinsley" + }, + "peerDependencies": { + "react": "^18 || ^19" + } + }, + "node_modules/@tanstack/react-query-devtools": { + "version": "5.87.3", + "resolved": "https://registry.npmjs.org/@tanstack/react-query-devtools/-/react-query-devtools-5.87.3.tgz", + "integrity": "sha512-uV7m4/m58jU4OaLEyiPLRoXnL5H5E598lhFLSXIcK83on+ZXW7aIfiu5kwRwe1qFa4X4thH8wKaxz1lt6jNmAA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@tanstack/query-devtools": "5.87.3" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/tannerlinsley" + }, + "peerDependencies": { + "@tanstack/react-query": "^5.87.1", + "react": "^18 || ^19" + } + }, + "node_modules/@tanstack/react-table": { + "version": "8.21.3", + "resolved": "https://registry.npmjs.org/@tanstack/react-table/-/react-table-8.21.3.tgz", + "integrity": "sha512-5nNMTSETP4ykGegmVkhjcS8tTLW6Vl4axfEGQN3v0zdHYbK4UfoqfPChclTrJ4EoK9QynqAu9oUf8VEmrpZ5Ww==", + "license": "MIT", + "dependencies": { + "@tanstack/table-core": "8.21.3" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/tannerlinsley" + }, + "peerDependencies": { + "react": ">=16.8", + "react-dom": ">=16.8" + } + }, + "node_modules/@tanstack/table-core": { + "version": "8.21.3", + "resolved": "https://registry.npmjs.org/@tanstack/table-core/-/table-core-8.21.3.tgz", + "integrity": "sha512-ldZXEhOBb8Is7xLs01fR3YEc3DERiz5silj8tnGkFZytt1abEvl/GhUmCE0PMLaMPTa3Jk4HbKmRlHmu+gCftg==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/tannerlinsley" + } + }, + "node_modules/@testing-library/dom": { + "version": "10.4.0", + "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-10.4.0.tgz", + "integrity": "sha512-pemlzrSESWbdAloYml3bAJMEfNh1Z7EduzqPKprCH5S341frlpYnUEW0H72dLxa6IsYr+mPno20GiSm+h9dEdQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.10.4", + "@babel/runtime": "^7.12.5", + "@types/aria-query": "^5.0.1", + "aria-query": "5.3.0", + "chalk": "^4.1.0", + "dom-accessibility-api": "^0.5.9", + "lz-string": "^1.5.0", + "pretty-format": "^27.0.2" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@testing-library/dom/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, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@testing-library/dom/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, + "license": "MIT", + "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/@testing-library/jest-dom": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/@testing-library/jest-dom/-/jest-dom-6.5.0.tgz", + "integrity": "sha512-xGGHpBXYSHUUr6XsKBfs85TWlYKpTc37cSBBVrXcib2MkHLboWlkClhWF37JKlDb9KEq3dHs+f2xR7XJEWGBxA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@adobe/css-tools": "^4.4.0", + "aria-query": "^5.0.0", + "chalk": "^3.0.0", + "css.escape": "^1.5.1", + "dom-accessibility-api": "^0.6.3", + "lodash": "^4.17.21", + "redent": "^3.0.0" + }, + "engines": { + "node": ">=14", + "npm": ">=6", + "yarn": ">=1" + } + }, + "node_modules/@testing-library/jest-dom/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, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@testing-library/jest-dom/node_modules/chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@testing-library/jest-dom/node_modules/dom-accessibility-api": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/dom-accessibility-api/-/dom-accessibility-api-0.6.3.tgz", + "integrity": "sha512-7ZgogeTnjuHbo+ct10G9Ffp0mif17idi0IyWNVA/wcwcm7NPOD/WEHVP3n7n3MhXqxoIYm8d6MuZohYWIZ4T3w==", + "dev": true, + "license": "MIT" + }, + "node_modules/@testing-library/user-event": { + "version": "14.5.2", + "resolved": "https://registry.npmjs.org/@testing-library/user-event/-/user-event-14.5.2.tgz", + "integrity": "sha512-YAh82Wh4TIrxYLmfGcixwD18oIjyC1pFQC2Y01F2lzV2HTMiYrI0nze0FD0ocB//CKS/7jIUgae+adPqxK5yCQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12", + "npm": ">=6" + }, + "peerDependencies": { + "@testing-library/dom": ">=7.21.4" + } + }, + "node_modules/@tybys/wasm-util": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/@tybys/wasm-util/-/wasm-util-0.10.0.tgz", + "integrity": "sha512-VyyPYFlOMNylG45GoAe0xDoLwWuowvf92F9kySqzYh8vmYm7D2u4iUJKa1tOUpS70Ku13ASrOkS4ScXFsTaCNQ==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@types/aria-query": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/@types/aria-query/-/aria-query-5.0.4.tgz", + "integrity": "sha512-rfT93uj5s0PRL7EzccGMs3brplhcrghnDoV26NqKhCAS1hVo+WdNsPvE/yb6ilfr5hi2MEk6d5EWJTKdxg8jVw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/babel__core": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", + "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7", + "@types/babel__generator": "*", + "@types/babel__template": "*", + "@types/babel__traverse": "*" + } + }, + "node_modules/@types/babel__generator": { + "version": "7.27.0", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.27.0.tgz", + "integrity": "sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__template": { + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz", + "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__traverse": { + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.28.0.tgz", + "integrity": "sha512-8PvcXf70gTDZBgt9ptxJ8elBeBjcLOAcOtoO/mPJjtji1+CdGbHgm77om1GrsPxsiE+uXIpNSK64UYaIwQXd4Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.28.2" + } + }, + "node_modules/@types/body-parser": { + "version": "1.19.6", + "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.6.tgz", + "integrity": "sha512-HLFeCYgz89uk22N5Qg3dvGvsv46B8GLvKKo1zKG4NybA8U2DiEO3w9lqGg29t/tfLRJpJ6iQxnVw4OnB7MoM9g==", + "dev": true, + "license": "MIT", + "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, + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/conventional-commits-parser": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/@types/conventional-commits-parser/-/conventional-commits-parser-5.0.1.tgz", + "integrity": "sha512-7uz5EHdzz2TqoMfV7ee61Egf5y6NkcO4FB/1iCCQnbeiI1F3xzv3vK5dBCXUCLQgGYS+mUeigK1iKQzvED+QnQ==", + "dev": true, + "license": "MIT", + "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==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/doctrine": { + "version": "0.0.9", + "resolved": "https://registry.npmjs.org/@types/doctrine/-/doctrine-0.0.9.tgz", + "integrity": "sha512-eOIHzCUSH7SMfonMG1LsC2f8vxBFtho6NGBznK41R84YzPuvSBzrhEps33IsQiOW9+VL6NQ9DbjQJznk/S4uRA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/estree": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz", + "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/express": { + "version": "4.17.23", + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.23.tgz", + "integrity": "sha512-Crp6WY9aTYP3qPi2wGDo9iUe/rceX01UMhnF1jmwDcKCFM6cx7YhGP/Mpr3y9AASpfHixIG0E6azCcL5OcDHsQ==", + "dev": true, + "license": "MIT", + "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.19.6", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.19.6.tgz", + "integrity": "sha512-N4LZ2xG7DatVqhCZzOGb1Yi5lMbXSZcmdLDe9EzSndPV2HpWYWzRbaerl2n27irrm94EPpprqa8KpskPT085+A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*", + "@types/qs": "*", + "@types/range-parser": "*", + "@types/send": "*" + } + }, + "node_modules/@types/http-errors": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.5.tgz", + "integrity": "sha512-r8Tayk8HJnX0FztbZN7oVqGccWgw98T/0neJphO91KkmOzug1KkofZURD4UaD5uH8AqcFLfdPErnBod0u71/qg==", + "dev": true, + "license": "MIT" + }, + "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, + "license": "MIT" + }, + "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, + "license": "MIT" + }, + "node_modules/@types/mdx": { + "version": "2.0.13", + "resolved": "https://registry.npmjs.org/@types/mdx/-/mdx-2.0.13.tgz", + "integrity": "sha512-+OWZQfAYyio6YkJb3HLxDrvnx6SWWDbC0zVPfBRzUk0/nqoDyf6dNxQi3eArPe8rJ473nobTMQ/8Zk+LxJ+Yuw==", + "dev": true, + "license": "MIT" + }, + "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, + "license": "MIT" + }, + "node_modules/@types/node": { + "version": "24.3.1", + "resolved": "https://registry.npmjs.org/@types/node/-/node-24.3.1.tgz", + "integrity": "sha512-3vXmQDXy+woz+gnrTvuvNrPzekOi+Ds0ReMxw0LzBiK3a+1k0kQn9f2NWk+lgD4rJehFUmYy2gMhJ2ZI+7YP9g==", + "dev": true, + "license": "MIT", + "dependencies": { + "undici-types": "~7.10.0" + } + }, + "node_modules/@types/prop-types": { + "version": "15.7.15", + "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.15.tgz", + "integrity": "sha512-F6bEyamV9jKGAFBEmlQnesRPGOQqS2+Uwi0Em15xenOxHaf2hv6L8YCVn3rPdPJOiJfPiCnLIRyvwVaqMY3MIw==", + "devOptional": true, + "license": "MIT" + }, + "node_modules/@types/qs": { + "version": "6.14.0", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.14.0.tgz", + "integrity": "sha512-eOunJqu0K1923aExK6y8p6fsihYEn/BYuQ4g0CxAAgFc4b/ZLN4CrsRZ55srTdqoiLzU2B2evC+apEIxprEzkQ==", + "dev": true, + "license": "MIT" + }, + "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, + "license": "MIT" + }, + "node_modules/@types/react": { + "version": "18.3.24", + "resolved": "https://registry.npmjs.org/@types/react/-/react-18.3.24.tgz", + "integrity": "sha512-0dLEBsA1kI3OezMBF8nSsb7Nk19ZnsyE1LLhB8r27KbgU5H4pvuqZLdtE+aUkJVoXgTVuA+iLIwmZ0TuK4tx6A==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "@types/prop-types": "*", + "csstype": "^3.0.2" + } + }, + "node_modules/@types/react-dom": { + "version": "18.3.7", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.3.7.tgz", + "integrity": "sha512-MEe3UeoENYVFXzoXEWsvcpg6ZvlrFNlOQ7EOsvhI3CfAXwzPfO8Qwuxd40nepsYKqyyVQnTdEfv68q91yLcKrQ==", + "devOptional": true, + "license": "MIT", + "peerDependencies": { + "@types/react": "^18.0.0" + } + }, + "node_modules/@types/resolve": { + "version": "1.20.6", + "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.20.6.tgz", + "integrity": "sha512-A4STmOXPhMUtHH+S6ymgE2GiBSMqf4oTvcQZMcHzokuTLVYzXTB8ttjcgxOVaAp2lGwEdzZ0J+cRbbeevQj1UQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/semver": { + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.7.1.tgz", + "integrity": "sha512-FmgJfu+MOcQ370SD0ev7EI8TlCAfKYU+B4m5T3yXc1CiRN94g/SZPtsCkk506aUDtlMnFZvasDwHHUcZUEaYuA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/send": { + "version": "0.17.5", + "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.5.tgz", + "integrity": "sha512-z6F2D3cOStZvuk2SaP6YrwkNO65iTZcwA2ZkSABegdkAh/lf+Aa/YQndZVfmEXT5vgAp6zv06VQ3ejSVjAny4w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/mime": "^1", + "@types/node": "*" + } + }, + "node_modules/@types/serve-static": { + "version": "1.15.8", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.8.tgz", + "integrity": "sha512-roei0UY3LhpOJvjbIP6ZZFngyLKl5dskOtDhxY5THRSpO+ZI+nzJ+m5yUMzGrp89YRa7lvknKkMYjqQFGwA7Sg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/http-errors": "*", + "@types/node": "*", + "@types/send": "*" + } + }, + "node_modules/@types/statuses": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@types/statuses/-/statuses-2.0.6.tgz", + "integrity": "sha512-xMAgYwceFhRA2zY+XbEA7mxYbA093wdiW8Vu6gZPGWy9cmOyU9XesH1tNcEWsKFd5Vzrqx5T3D38PWx1FIIXkA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/uuid": { + "version": "9.0.8", + "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-9.0.8.tgz", + "integrity": "sha512-jg+97EGIcY9AGHJJRaaPVgetKDsrTgbRjQ5Msgjh/DQKEFl0DtyRr/VCOyD1T2R1MNeWPK/u7JoGhlDZnKBAfA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/validator": { + "version": "13.15.3", + "resolved": "https://registry.npmjs.org/@types/validator/-/validator-13.15.3.tgz", + "integrity": "sha512-7bcUmDyS6PN3EuD9SlGGOxM77F8WLVsrwkxyWxKnxzmXoequ6c7741QBrANq6htVRGOITJ7z72mTP6Z4XyuG+Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/@typescript-eslint/eslint-plugin": { + "version": "8.43.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.43.0.tgz", + "integrity": "sha512-8tg+gt7ENL7KewsKMKDHXR1vm8tt9eMxjJBYINf6swonlWgkYn5NwyIgXpbbDxTNU5DgpDFfj95prcTq2clIQQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/regexpp": "^4.10.0", + "@typescript-eslint/scope-manager": "8.43.0", + "@typescript-eslint/type-utils": "8.43.0", + "@typescript-eslint/utils": "8.43.0", + "@typescript-eslint/visitor-keys": "8.43.0", + "graphemer": "^1.4.0", + "ignore": "^7.0.0", + "natural-compare": "^1.4.0", + "ts-api-utils": "^2.1.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^8.43.0", + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <6.0.0" + } + }, + "node_modules/@typescript-eslint/eslint-plugin/node_modules/ignore": { + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.5.tgz", + "integrity": "sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/@typescript-eslint/parser": { + "version": "8.43.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.43.0.tgz", + "integrity": "sha512-B7RIQiTsCBBmY+yW4+ILd6mF5h1FUwJsVvpqkrgpszYifetQ2Ke+Z4u6aZh0CblkUGIdR59iYVyXqqZGkZ3aBw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/scope-manager": "8.43.0", + "@typescript-eslint/types": "8.43.0", + "@typescript-eslint/typescript-estree": "8.43.0", + "@typescript-eslint/visitor-keys": "8.43.0", + "debug": "^4.3.4" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <6.0.0" + } + }, + "node_modules/@typescript-eslint/project-service": { + "version": "8.43.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.43.0.tgz", + "integrity": "sha512-htB/+D/BIGoNTQYffZw4uM4NzzuolCoaA/BusuSIcC8YjmBYQioew5VUZAYdAETPjeed0hqCaW7EHg+Robq8uw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/tsconfig-utils": "^8.43.0", + "@typescript-eslint/types": "^8.43.0", + "debug": "^4.3.4" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "typescript": ">=4.8.4 <6.0.0" + } + }, + "node_modules/@typescript-eslint/scope-manager": { + "version": "8.43.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.43.0.tgz", + "integrity": "sha512-daSWlQ87ZhsjrbMLvpuuMAt3y4ba57AuvadcR7f3nl8eS3BjRc8L9VLxFLk92RL5xdXOg6IQ+qKjjqNEimGuAg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "8.43.0", + "@typescript-eslint/visitor-keys": "8.43.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/tsconfig-utils": { + "version": "8.43.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.43.0.tgz", + "integrity": "sha512-ALC2prjZcj2YqqL5X/bwWQmHA2em6/94GcbB/KKu5SX3EBDOsqztmmX1kMkvAJHzxk7TazKzJfFiEIagNV3qEA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "typescript": ">=4.8.4 <6.0.0" + } + }, + "node_modules/@typescript-eslint/type-utils": { + "version": "8.43.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.43.0.tgz", + "integrity": "sha512-qaH1uLBpBuBBuRf8c1mLJ6swOfzCXryhKND04Igr4pckzSEW9JX5Aw9AgW00kwfjWJF0kk0ps9ExKTfvXfw4Qg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "8.43.0", + "@typescript-eslint/typescript-estree": "8.43.0", + "@typescript-eslint/utils": "8.43.0", + "debug": "^4.3.4", + "ts-api-utils": "^2.1.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <6.0.0" + } + }, + "node_modules/@typescript-eslint/types": { + "version": "8.43.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.43.0.tgz", + "integrity": "sha512-vQ2FZaxJpydjSZJKiSW/LJsabFFvV7KgLC5DiLhkBcykhQj8iK9BOaDmQt74nnKdLvceM5xmhaTF+pLekrxEkw==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/typescript-estree": { + "version": "8.43.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.43.0.tgz", + "integrity": "sha512-7Vv6zlAhPb+cvEpP06WXXy/ZByph9iL6BQRBDj4kmBsW98AqEeQHlj/13X+sZOrKSo9/rNKH4Ul4f6EICREFdw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/project-service": "8.43.0", + "@typescript-eslint/tsconfig-utils": "8.43.0", + "@typescript-eslint/types": "8.43.0", + "@typescript-eslint/visitor-keys": "8.43.0", + "debug": "^4.3.4", + "fast-glob": "^3.3.2", + "is-glob": "^4.0.3", + "minimatch": "^9.0.4", + "semver": "^7.6.0", + "ts-api-utils": "^2.1.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "typescript": ">=4.8.4 <6.0.0" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/brace-expansion": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@typescript-eslint/utils": { + "version": "8.43.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.43.0.tgz", + "integrity": "sha512-S1/tEmkUeeswxd0GGcnwuVQPFWo8NzZTOMxCvw8BX7OMxnNae+i8Tm7REQen/SwUIPoPqfKn7EaZ+YLpiB3k9g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.7.0", + "@typescript-eslint/scope-manager": "8.43.0", + "@typescript-eslint/types": "8.43.0", + "@typescript-eslint/typescript-estree": "8.43.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <6.0.0" + } + }, + "node_modules/@typescript-eslint/visitor-keys": { + "version": "8.43.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.43.0.tgz", + "integrity": "sha512-T+S1KqRD4sg/bHfLwrpF/K3gQLBM1n7Rp7OjjikjTEssI2YJzQpi5WXoynOaQ93ERIuq3O8RBTOUYDKszUCEHw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "8.43.0", + "eslint-visitor-keys": "^4.2.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/visitor-keys/node_modules/eslint-visitor-keys": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz", + "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@unrs/resolver-binding-android-arm-eabi": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-android-arm-eabi/-/resolver-binding-android-arm-eabi-1.11.1.tgz", + "integrity": "sha512-ppLRUgHVaGRWUx0R0Ut06Mjo9gBaBkg3v/8AxusGLhsIotbBLuRk51rAzqLC8gq6NyyAojEXglNjzf6R948DNw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@unrs/resolver-binding-android-arm64": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-android-arm64/-/resolver-binding-android-arm64-1.11.1.tgz", + "integrity": "sha512-lCxkVtb4wp1v+EoN+HjIG9cIIzPkX5OtM03pQYkG+U5O/wL53LC4QbIeazgiKqluGeVEeBlZahHalCaBvU1a2g==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@unrs/resolver-binding-darwin-arm64": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-darwin-arm64/-/resolver-binding-darwin-arm64-1.11.1.tgz", + "integrity": "sha512-gPVA1UjRu1Y/IsB/dQEsp2V1pm44Of6+LWvbLc9SDk1c2KhhDRDBUkQCYVWe6f26uJb3fOK8saWMgtX8IrMk3g==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@unrs/resolver-binding-darwin-x64": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-darwin-x64/-/resolver-binding-darwin-x64-1.11.1.tgz", + "integrity": "sha512-cFzP7rWKd3lZaCsDze07QX1SC24lO8mPty9vdP+YVa3MGdVgPmFc59317b2ioXtgCMKGiCLxJ4HQs62oz6GfRQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@unrs/resolver-binding-freebsd-x64": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-freebsd-x64/-/resolver-binding-freebsd-x64-1.11.1.tgz", + "integrity": "sha512-fqtGgak3zX4DCB6PFpsH5+Kmt/8CIi4Bry4rb1ho6Av2QHTREM+47y282Uqiu3ZRF5IQioJQ5qWRV6jduA+iGw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@unrs/resolver-binding-linux-arm-gnueabihf": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm-gnueabihf/-/resolver-binding-linux-arm-gnueabihf-1.11.1.tgz", + "integrity": "sha512-u92mvlcYtp9MRKmP+ZvMmtPN34+/3lMHlyMj7wXJDeXxuM0Vgzz0+PPJNsro1m3IZPYChIkn944wW8TYgGKFHw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-arm-musleabihf": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm-musleabihf/-/resolver-binding-linux-arm-musleabihf-1.11.1.tgz", + "integrity": "sha512-cINaoY2z7LVCrfHkIcmvj7osTOtm6VVT16b5oQdS4beibX2SYBwgYLmqhBjA1t51CarSaBuX5YNsWLjsqfW5Cw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-arm64-gnu": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm64-gnu/-/resolver-binding-linux-arm64-gnu-1.11.1.tgz", + "integrity": "sha512-34gw7PjDGB9JgePJEmhEqBhWvCiiWCuXsL9hYphDF7crW7UgI05gyBAi6MF58uGcMOiOqSJ2ybEeCvHcq0BCmQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-arm64-musl": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm64-musl/-/resolver-binding-linux-arm64-musl-1.11.1.tgz", + "integrity": "sha512-RyMIx6Uf53hhOtJDIamSbTskA99sPHS96wxVE/bJtePJJtpdKGXO1wY90oRdXuYOGOTuqjT8ACccMc4K6QmT3w==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-ppc64-gnu": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-ppc64-gnu/-/resolver-binding-linux-ppc64-gnu-1.11.1.tgz", + "integrity": "sha512-D8Vae74A4/a+mZH0FbOkFJL9DSK2R6TFPC9M+jCWYia/q2einCubX10pecpDiTmkJVUH+y8K3BZClycD8nCShA==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-riscv64-gnu": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-riscv64-gnu/-/resolver-binding-linux-riscv64-gnu-1.11.1.tgz", + "integrity": "sha512-frxL4OrzOWVVsOc96+V3aqTIQl1O2TjgExV4EKgRY09AJ9leZpEg8Ak9phadbuX0BA4k8U5qtvMSQQGGmaJqcQ==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-riscv64-musl": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-riscv64-musl/-/resolver-binding-linux-riscv64-musl-1.11.1.tgz", + "integrity": "sha512-mJ5vuDaIZ+l/acv01sHoXfpnyrNKOk/3aDoEdLO/Xtn9HuZlDD6jKxHlkN8ZhWyLJsRBxfv9GYM2utQ1SChKew==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-s390x-gnu": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-s390x-gnu/-/resolver-binding-linux-s390x-gnu-1.11.1.tgz", + "integrity": "sha512-kELo8ebBVtb9sA7rMe1Cph4QHreByhaZ2QEADd9NzIQsYNQpt9UkM9iqr2lhGr5afh885d/cB5QeTXSbZHTYPg==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-x64-gnu": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-x64-gnu/-/resolver-binding-linux-x64-gnu-1.11.1.tgz", + "integrity": "sha512-C3ZAHugKgovV5YvAMsxhq0gtXuwESUKc5MhEtjBpLoHPLYM+iuwSj3lflFwK3DPm68660rZ7G8BMcwSro7hD5w==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-x64-musl": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-x64-musl/-/resolver-binding-linux-x64-musl-1.11.1.tgz", + "integrity": "sha512-rV0YSoyhK2nZ4vEswT/QwqzqQXw5I6CjoaYMOX0TqBlWhojUf8P94mvI7nuJTeaCkkds3QE4+zS8Ko+GdXuZtA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-wasm32-wasi": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-wasm32-wasi/-/resolver-binding-wasm32-wasi-1.11.1.tgz", + "integrity": "sha512-5u4RkfxJm+Ng7IWgkzi3qrFOvLvQYnPBmjmZQ8+szTK/b31fQCnleNl1GgEt7nIsZRIf5PLhPwT0WM+q45x/UQ==", + "cpu": [ + "wasm32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "@napi-rs/wasm-runtime": "^0.2.11" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@unrs/resolver-binding-win32-arm64-msvc": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-arm64-msvc/-/resolver-binding-win32-arm64-msvc-1.11.1.tgz", + "integrity": "sha512-nRcz5Il4ln0kMhfL8S3hLkxI85BXs3o8EYoattsJNdsX4YUU89iOkVn7g0VHSRxFuVMdM4Q1jEpIId1Ihim/Uw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@unrs/resolver-binding-win32-ia32-msvc": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-ia32-msvc/-/resolver-binding-win32-ia32-msvc-1.11.1.tgz", + "integrity": "sha512-DCEI6t5i1NmAZp6pFonpD5m7i6aFrpofcp4LA2i8IIq60Jyo28hamKBxNrZcyOwVOZkgsRp9O2sXWBWP8MnvIQ==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@unrs/resolver-binding-win32-x64-msvc": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-x64-msvc/-/resolver-binding-win32-x64-msvc-1.11.1.tgz", + "integrity": "sha512-lrW200hZdbfRtztbygyaq/6jP6AKE8qQN2KvPcJ+x7wiD038YtnYtZ82IMNJ69GJibV7bwL3y9FgK+5w/pYt6g==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@vitejs/plugin-react": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-4.7.0.tgz", + "integrity": "sha512-gUu9hwfWvvEDBBmgtAowQCojwZmJ5mcLn3aufeCsitijs3+f2NsrPtlAWIR6OPiqljl96GVCUbLe0HyqIpVaoA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/core": "^7.28.0", + "@babel/plugin-transform-react-jsx-self": "^7.27.1", + "@babel/plugin-transform-react-jsx-source": "^7.27.1", + "@rolldown/pluginutils": "1.0.0-beta.27", + "@types/babel__core": "^7.20.5", + "react-refresh": "^0.17.0" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "peerDependencies": { + "vite": "^4.2.0 || ^5.0.0 || ^6.0.0 || ^7.0.0" + } + }, + "node_modules/@vitest/expect": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-2.0.5.tgz", + "integrity": "sha512-yHZtwuP7JZivj65Gxoi8upUN2OzHTi3zVfjwdpu2WrvCZPLwsJ2Ey5ILIPccoW23dd/zQBlJ4/dhi7DWNyXCpA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vitest/spy": "2.0.5", + "@vitest/utils": "2.0.5", + "chai": "^5.1.1", + "tinyrainbow": "^1.2.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/expect/node_modules/@vitest/pretty-format": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-2.0.5.tgz", + "integrity": "sha512-h8k+1oWHfwTkyTkb9egzwNMfJAEx4veaPSnMeKbVSjp4euqGSbQlm5+6VHwTr7u4FJslVVsUG5nopCaAYdOmSQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "tinyrainbow": "^1.2.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/expect/node_modules/@vitest/utils": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-2.0.5.tgz", + "integrity": "sha512-d8HKbqIcya+GR67mkZbrzhS5kKhtp8dQLcmRZLGTscGVg7yImT82cIrhtn2L8+VujWcy6KZweApgNmPsTAO/UQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vitest/pretty-format": "2.0.5", + "estree-walker": "^3.0.3", + "loupe": "^3.1.1", + "tinyrainbow": "^1.2.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/expect/node_modules/estree-walker": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", + "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0" + } + }, + "node_modules/@vitest/pretty-format": { + "version": "2.1.9", + "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-2.1.9.tgz", + "integrity": "sha512-KhRIdGV2U9HOUzxfiHmY8IFHTdqtOhIzCpd8WRdJiE7D/HUcZVD0EgQCVjm+Q9gkUXWgBvMmTtZgIG48wq7sOQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "tinyrainbow": "^1.2.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/spy": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-2.0.5.tgz", + "integrity": "sha512-c/jdthAhvJdpfVuaexSrnawxZz6pywlTPe84LUB2m/4t3rl2fTo9NFGBG4oWgaD+FTgDDV8hJ/nibT7IfH3JfA==", + "dev": true, + "license": "MIT", + "dependencies": { + "tinyspy": "^3.0.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/utils": { + "version": "2.1.9", + "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-2.1.9.tgz", + "integrity": "sha512-v0psaMSkNJ3A2NMrUEHFRzJtDPFn+/VWZ5WxImB21T9fjucJRmS7xCS3ppEnARb9y11OAzaD+P2Ps+b+BGX5iQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vitest/pretty-format": "2.1.9", + "loupe": "^3.1.2", + "tinyrainbow": "^1.2.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/acorn": { + "version": "8.15.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz", + "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", + "dev": true, + "license": "MIT", + "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, + "license": "MIT", + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.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, + "license": "MIT", + "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-escapes": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-7.0.0.tgz", + "integrity": "sha512-GdYO7a61mR0fOlAsvC9/rIHf7L96sBc6dEWzeOu+KAea5bZyQRPIpojrVoI4AXGJS/ycu/fBTdLrUkA4ODrvjw==", + "dev": true, + "license": "MIT", + "dependencies": { + "environment": "^1.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "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, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/any-promise": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", + "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==", + "dev": true, + "license": "MIT" + }, + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dev": true, + "license": "ISC", + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/anymatch/node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/arg": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz", + "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==", + "dev": true, + "license": "MIT" + }, + "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, + "license": "Python-2.0" + }, + "node_modules/aria-hidden": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/aria-hidden/-/aria-hidden-1.2.6.tgz", + "integrity": "sha512-ik3ZgC9dY/lYVVM++OISsaYDeg1tb0VtP5uL3ouh1koGOaUMDPpbFIei4JkFimWUFPn90sbMNMXQAIVOlnYKJA==", + "license": "MIT", + "dependencies": { + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/aria-query": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.0.tgz", + "integrity": "sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "dequal": "^2.0.3" + } + }, + "node_modules/array-buffer-byte-length": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.2.tgz", + "integrity": "sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "is-array-buffer": "^3.0.5" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array-ify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-ify/-/array-ify-1.0.0.tgz", + "integrity": "sha512-c5AMf34bKdvPhQ7tBGhqkgKNUzMr4WUs+WDtC2ZUGOUncbxKMTvqxYctiseW3+L4bA8ec+GcZ6/A/FW4m8ukng==", + "dev": true, + "license": "MIT" + }, + "node_modules/array-includes": { + "version": "3.1.9", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.9.tgz", + "integrity": "sha512-FmeCCAenzH0KH381SPT5FZmiA/TmpndpcaShhfgEN9eCVjnFBqq3l1xrI42y8+PPLI6hypzou4GXw00WHmPBLQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", + "define-properties": "^1.2.1", + "es-abstract": "^1.24.0", + "es-object-atoms": "^1.1.1", + "get-intrinsic": "^1.3.0", + "is-string": "^1.1.1", + "math-intrinsics": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/array.prototype.findlast": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/array.prototype.findlast/-/array.prototype.findlast-1.2.5.tgz", + "integrity": "sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "es-shim-unscopables": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.findlastindex": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.6.tgz", + "integrity": "sha512-F/TKATkzseUExPlfvmwQKGITM3DGTK+vkAsCZoDc5daVygbJBnjEUCbgkAvVFsgfXfX4YIqZ/27G3k3tdXrTxQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.9", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "es-shim-unscopables": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.flat": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.3.tgz", + "integrity": "sha512-rwG/ja1neyLqCuGZ5YYrznA62D4mZXg0i1cIskIUKSiqF3Cje9/wXAls9B9s1Wa2fomMsIv8czB8jZcPmxCXFg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.5", + "es-shim-unscopables": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.flatmap": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.3.tgz", + "integrity": "sha512-Y7Wt51eKJSyi80hFrJCePGGNo5ktJCslFuboqJsbf57CCPcm5zztluPlc4/aD8sWsKvlwatezpV4U1efk8kpjg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.5", + "es-shim-unscopables": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.tosorted": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.4.tgz", + "integrity": "sha512-p6Fx8B7b7ZhL/gmUsAy0D15WhvDccw3mnGNbZpi3pmeJdxtWsj2jEaI4Y6oo3XiHfzuSgPwKc04MYt6KgvC/wA==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.3", + "es-errors": "^1.3.0", + "es-shim-unscopables": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/arraybuffer.prototype.slice": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.4.tgz", + "integrity": "sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "array-buffer-byte-length": "^1.0.1", + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.5", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6", + "is-array-buffer": "^3.0.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/assertion-error": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-2.0.1.tgz", + "integrity": "sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + } + }, + "node_modules/ast-types": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.16.1.tgz", + "integrity": "sha512-6t10qk83GOG8p0vKmaCr8eiilZwO171AvbROMtvvNiwrTly62t+7XkA8RdIIVbpMhCASAsxgAzdRSwh6nw/5Dg==", + "dev": true, + "license": "MIT", + "dependencies": { + "tslib": "^2.0.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/ast-types-flow": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.8.tgz", + "integrity": "sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/async-function": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/async-function/-/async-function-1.0.0.tgz", + "integrity": "sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", + "license": "MIT" + }, + "node_modules/autoprefixer": { + "version": "10.4.21", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.21.tgz", + "integrity": "sha512-O+A6LWV5LDHSJD3LjHYoNi4VLsj/Whi7k6zG12xTYaU4cQ8oxQGckXNX8cRHK5yOZ/ppVHe0ZBXGzSV9jXdVbQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/autoprefixer" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "browserslist": "^4.24.4", + "caniuse-lite": "^1.0.30001702", + "fraction.js": "^4.3.7", + "normalize-range": "^0.1.2", + "picocolors": "^1.1.1", + "postcss-value-parser": "^4.2.0" + }, + "bin": { + "autoprefixer": "bin/autoprefixer" + }, + "engines": { + "node": "^10 || ^12 || >=14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/available-typed-arrays": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", + "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "possible-typed-array-names": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/axe-core": { + "version": "4.10.3", + "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.10.3.tgz", + "integrity": "sha512-Xm7bpRXnDSX2YE2YFfBk2FnF0ep6tmG7xPh8iHee8MIcrgq762Nkce856dYtJYLkuIoYZvGfTs/PbZhideTcEg==", + "dev": true, + "license": "MPL-2.0", + "engines": { + "node": ">=4" + } + }, + "node_modules/axios": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.11.0.tgz", + "integrity": "sha512-1Lx3WLFQWm3ooKDYZD1eXmoGO9fxYQjrycfHFC8P0sCfQVXyROp0p9PFWBehewBOdCwHc+f/b8I0fMto5eSfwA==", + "license": "MIT", + "dependencies": { + "follow-redirects": "^1.15.6", + "form-data": "^4.0.4", + "proxy-from-env": "^1.1.0" + } + }, + "node_modules/axobject-query": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-4.1.0.tgz", + "integrity": "sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">= 0.4" + } + }, + "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, + "license": "MIT" + }, + "node_modules/better-opn": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/better-opn/-/better-opn-3.0.2.tgz", + "integrity": "sha512-aVNobHnJqLiUelTaHat9DZ1qM2w0C0Eym4LPI/3JxOnSokGVdsl1T1kN7TFvsEAD8G47A6VKQ0TVHqbBnYMJlQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "open": "^8.0.4" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/binary-extensions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", + "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/brace-expansion": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "dev": true, + "license": "MIT", + "dependencies": { + "fill-range": "^7.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/browser-assert": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/browser-assert/-/browser-assert-1.2.1.tgz", + "integrity": "sha512-nfulgvOR6S4gt9UKCeGJOuSGBPGiFT6oQ/2UBnvTY/5aQ1PnksW72fhZkM30DzoRRv2WpwZf1vHHEr3mtuXIWQ==", + "dev": true + }, + "node_modules/browserslist": { + "version": "4.25.4", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.25.4.tgz", + "integrity": "sha512-4jYpcjabC606xJ3kw2QwGEZKX0Aw7sgQdZCvIK9dhVSPh76BKo+C+btT1RRofH7B+8iNpEbgGNVWiLki5q93yg==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "caniuse-lite": "^1.0.30001737", + "electron-to-chromium": "^1.5.211", + "node-releases": "^2.0.19", + "update-browserslist-db": "^1.1.3" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/call-bind": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.8.tgz", + "integrity": "sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.0", + "es-define-property": "^1.0.0", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/call-bind-apply-helpers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", + "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/call-bound": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", + "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "get-intrinsic": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/camelcase-css": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz", + "integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 6" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001741", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001741.tgz", + "integrity": "sha512-QGUGitqsc8ARjLdgAfxETDhRbJ0REsP6O3I96TAth/mVjh2cYzN2u+3AzPP3aVSm2FehEItaJw1xd+IGBXWeSw==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "CC-BY-4.0" + }, + "node_modules/chai": { + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/chai/-/chai-5.3.3.tgz", + "integrity": "sha512-4zNhdJD/iOjSH0A05ea+Ke6MU5mmpQcbQsSOkgdaUMJ9zTlDTD/GYlwohmIE2u0gaxHYiVHEn1Fw9mZ/ktJWgw==", + "dev": true, + "license": "MIT", + "dependencies": { + "assertion-error": "^2.0.1", + "check-error": "^2.1.1", + "deep-eql": "^5.0.1", + "loupe": "^3.1.0", + "pathval": "^2.0.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/chalk": { + "version": "5.6.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.6.2.tgz", + "integrity": "sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.17.0 || ^14.13 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/check-error": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/check-error/-/check-error-2.1.1.tgz", + "integrity": "sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 16" + } + }, + "node_modules/chokidar": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", + "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", + "dev": true, + "license": "MIT", + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/chokidar/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, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/class-variance-authority": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/class-variance-authority/-/class-variance-authority-0.7.1.tgz", + "integrity": "sha512-Ka+9Trutv7G8M6WT6SeiRWz792K5qEqIGEGzXKhAE6xOWAY6pPH8U+9IY3oCMv6kqTmLsv7Xh/2w2RigkePMsg==", + "license": "Apache-2.0", + "dependencies": { + "clsx": "^2.1.1" + }, + "funding": { + "url": "https://polar.sh/cva" + } + }, + "node_modules/cli-cursor": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-5.0.0.tgz", + "integrity": "sha512-aCj4O5wKyszjMmDT4tZj93kxyydN/K5zPWSCe6/0AV/AA1pqe5ZBIw0a2ZfPQV7lL5/yb5HsUreJ6UFAF1tEQw==", + "dev": true, + "license": "MIT", + "dependencies": { + "restore-cursor": "^5.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cli-truncate": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-4.0.0.tgz", + "integrity": "sha512-nPdaFdQ0h/GEigbPClz11D0v/ZJEwxmeVZGeMo3Z5StPtUTkA9o1lD6QwoirYiSDzbcwn2XcjwmCp68W1IS4TA==", + "dev": true, + "license": "MIT", + "dependencies": { + "slice-ansi": "^5.0.0", + "string-width": "^7.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cli-truncate/node_modules/emoji-regex": { + "version": "10.5.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.5.0.tgz", + "integrity": "sha512-lb49vf1Xzfx080OKA0o6l8DQQpV+6Vg95zyCJX9VB/BqKYlhG7N4wgROUUHRA+ZPUefLnteQOad7z1kT2bV7bg==", + "dev": true, + "license": "MIT" + }, + "node_modules/cli-truncate/node_modules/string-width": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz", + "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^10.3.0", + "get-east-asian-width": "^1.0.0", + "strip-ansi": "^7.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cli-width": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-4.1.0.tgz", + "integrity": "sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">= 12" + } + }, + "node_modules/cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/cliui/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, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/cliui/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true, + "license": "MIT" + }, + "node_modules/cliui/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/cliui/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": 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/cliui/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, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cliui/node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/clsx": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz", + "integrity": "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/cmdk": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/cmdk/-/cmdk-1.1.1.tgz", + "integrity": "sha512-Vsv7kFaXm+ptHDMZ7izaRsP70GgrW9NBNGswt9OZaVBLlE0SNpDq8eu/VGXyF9r7M0azK3Wy7OlYXsuyYLFzHg==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-compose-refs": "^1.1.1", + "@radix-ui/react-dialog": "^1.1.6", + "@radix-ui/react-id": "^1.1.0", + "@radix-ui/react-primitive": "^2.0.2" + }, + "peerDependencies": { + "react": "^18 || ^19 || ^19.0.0-rc", + "react-dom": "^18 || ^19 || ^19.0.0-rc" + } + }, + "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, + "license": "MIT", + "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, + "license": "MIT" + }, + "node_modules/colorette": { + "version": "2.0.20", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", + "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", + "dev": true, + "license": "MIT" + }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "license": "MIT", + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/commander": { + "version": "13.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-13.1.0.tgz", + "integrity": "sha512-/rFeCpNJQbhSZjGVwO9RFV3xPqbnERS8MmIQzCtD/zl6gpJuV/bMLuN92oG3F7d8oDEHHRrujSXNUr8fpjntKw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + } + }, + "node_modules/commitlint": { + "version": "19.8.1", + "resolved": "https://registry.npmjs.org/commitlint/-/commitlint-19.8.1.tgz", + "integrity": "sha512-j7jojdmHrVOZ16gnjK2nbQuzdwA9TpxS9iNb9Q9QS3ytgt3JZVIGmsNbCuhmnsJWGspotlQ34yH8n1HvIKImiQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@commitlint/cli": "^19.8.1", + "@commitlint/types": "^19.8.1" + }, + "bin": { + "commitlint": "cli.js" + }, + "engines": { + "node": ">=v18" + } + }, + "node_modules/compare-func": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/compare-func/-/compare-func-2.0.0.tgz", + "integrity": "sha512-zHig5N+tPWARooBnb0Zx1MFcdfpyJrfTJ3Y5L+IFvUm8rM74hHz66z0gw0x4tijh5CorKkKUCnW82R2vmpeCRA==", + "dev": true, + "license": "MIT", + "dependencies": { + "array-ify": "^1.0.0", + "dot-prop": "^5.1.0" + } + }, + "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, + "license": "MIT" + }, + "node_modules/confusing-browser-globals": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/confusing-browser-globals/-/confusing-browser-globals-1.0.11.tgz", + "integrity": "sha512-JsPKdmh8ZkmnHxDk55FZ1TqVLvEQTvoByJZRN9jzI0UjxK/QgAmsphz7PGtqgPieQZ/CQcHWXCR7ATDNhGe+YA==", + "dev": true, + "license": "MIT" + }, + "node_modules/conventional-changelog-angular": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/conventional-changelog-angular/-/conventional-changelog-angular-7.0.0.tgz", + "integrity": "sha512-ROjNchA9LgfNMTTFSIWPzebCwOGFdgkEq45EnvvrmSLvCtAw0HSmrCs7/ty+wAeYUZyNay0YMUNYFTRL72PkBQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "compare-func": "^2.0.0" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/conventional-changelog-conventionalcommits": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/conventional-changelog-conventionalcommits/-/conventional-changelog-conventionalcommits-7.0.2.tgz", + "integrity": "sha512-NKXYmMR/Hr1DevQegFB4MwfM5Vv0m4UIxKZTTYuD98lpTknaZlSRrDOG4X7wIXpGkfsYxZTghUN+Qq+T0YQI7w==", + "dev": true, + "license": "ISC", + "dependencies": { + "compare-func": "^2.0.0" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/conventional-commits-parser": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/conventional-commits-parser/-/conventional-commits-parser-5.0.0.tgz", + "integrity": "sha512-ZPMl0ZJbw74iS9LuX9YIAiW8pfM5p3yh2o/NbXHbkFuZzY5jvdi5jFycEOkmBW5H5I7nA+D6f3UcsCLP2vvSEA==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-text-path": "^2.0.0", + "JSONStream": "^1.3.5", + "meow": "^12.0.1", + "split2": "^4.0.0" + }, + "bin": { + "conventional-commits-parser": "cli.mjs" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "dev": true, + "license": "MIT" + }, + "node_modules/cookie": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.2.tgz", + "integrity": "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cosmiconfig": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-9.0.0.tgz", + "integrity": "sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==", + "dev": true, + "license": "MIT", + "dependencies": { + "env-paths": "^2.2.1", + "import-fresh": "^3.3.0", + "js-yaml": "^4.1.0", + "parse-json": "^5.2.0" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/d-fischer" + }, + "peerDependencies": { + "typescript": ">=4.9.5" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/cosmiconfig-typescript-loader": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/cosmiconfig-typescript-loader/-/cosmiconfig-typescript-loader-6.1.0.tgz", + "integrity": "sha512-tJ1w35ZRUiM5FeTzT7DtYWAFFv37ZLqSRkGi2oeCK1gPhvaWjkAtfXvLmvE1pRfxxp9aQo6ba/Pvg1dKj05D4g==", + "dev": true, + "license": "MIT", + "dependencies": { + "jiti": "^2.4.1" + }, + "engines": { + "node": ">=v18" + }, + "peerDependencies": { + "@types/node": "*", + "cosmiconfig": ">=9", + "typescript": ">=5" + } + }, + "node_modules/cross-spawn": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", + "dev": true, + "license": "MIT", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/css.escape": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/css.escape/-/css.escape-1.5.1.tgz", + "integrity": "sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg==", + "dev": true, + "license": "MIT" + }, + "node_modules/cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "dev": true, + "license": "MIT", + "bin": { + "cssesc": "bin/cssesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/csstype": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", + "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==", + "license": "MIT" + }, + "node_modules/damerau-levenshtein": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz", + "integrity": "sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==", + "dev": true, + "license": "BSD-2-Clause" + }, + "node_modules/dargs": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/dargs/-/dargs-8.1.0.tgz", + "integrity": "sha512-wAV9QHOsNbwnWdNW2FYvE1P56wtgSbM+3SZcdGiWQILwVjACCXDCI3Ai8QlCjMDB8YK5zySiXZYBiwGmNY3lnw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/data-view-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.2.tgz", + "integrity": "sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/data-view-byte-length": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.2.tgz", + "integrity": "sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/inspect-js" + } + }, + "node_modules/data-view-byte-offset": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.1.tgz", + "integrity": "sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/date-fns": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-4.1.0.tgz", + "integrity": "sha512-Ukq0owbQXxa/U3EGtsdVBkR1w7KOQ5gIBqdH2hkvknzZPYvBxb/aa6E8L7tmjFtkwZBu3UXBbjIgPo/Ez4xaNg==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/kossnocorp" + } + }, + "node_modules/debug": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.1.tgz", + "integrity": "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/deep-eql": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-5.0.2.tgz", + "integrity": "sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "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, + "license": "MIT" + }, + "node_modules/define-data-property": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/define-lazy-prop": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", + "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/define-properties": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", + "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-data-property": "^1.0.1", + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "license": "MIT", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/dequal": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", + "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/detect-node-es": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/detect-node-es/-/detect-node-es-1.1.0.tgz", + "integrity": "sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==", + "license": "MIT" + }, + "node_modules/didyoumean": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz", + "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==", + "dev": true, + "license": "Apache-2.0" + }, + "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, + "license": "MIT", + "dependencies": { + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/dlv": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz", + "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==", + "dev": true, + "license": "MIT" + }, + "node_modules/doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/dom-accessibility-api": { + "version": "0.5.16", + "resolved": "https://registry.npmjs.org/dom-accessibility-api/-/dom-accessibility-api-0.5.16.tgz", + "integrity": "sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg==", + "dev": true, + "license": "MIT" + }, + "node_modules/dot-prop": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz", + "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-obj": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/dunder-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", + "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.1", + "es-errors": "^1.3.0", + "gopd": "^1.2.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", + "dev": true, + "license": "MIT" + }, + "node_modules/electron-to-chromium": { + "version": "1.5.215", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.215.tgz", + "integrity": "sha512-TIvGp57UpeNetj/wV/xpFNpWGb0b/ROw372lHPx5Aafx02gjTBtWnEEcaSX3W2dLM3OSdGGyHX/cHl01JQsLaQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "dev": true, + "license": "MIT" + }, + "node_modules/env-paths": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", + "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/environment": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/environment/-/environment-1.1.0.tgz", + "integrity": "sha512-xUtoPkMggbz0MPyPiIWr1Kp4aeWJjDZ6SMvURhimjdZgsRuDplF5/s9hcgGhyXMhs+6vpnuoiZ2kFiu3FMnS8Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-arrayish": "^0.2.1" + } + }, + "node_modules/es-abstract": { + "version": "1.24.0", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.24.0.tgz", + "integrity": "sha512-WSzPgsdLtTcQwm4CROfS5ju2Wa1QQcVeT37jFjYzdFz1r9ahadC8B8/a4qxJxM+09F18iumCdRmlr96ZYkQvEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "array-buffer-byte-length": "^1.0.2", + "arraybuffer.prototype.slice": "^1.0.4", + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", + "data-view-buffer": "^1.0.2", + "data-view-byte-length": "^1.0.2", + "data-view-byte-offset": "^1.0.1", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "es-set-tostringtag": "^2.1.0", + "es-to-primitive": "^1.3.0", + "function.prototype.name": "^1.1.8", + "get-intrinsic": "^1.3.0", + "get-proto": "^1.0.1", + "get-symbol-description": "^1.1.0", + "globalthis": "^1.0.4", + "gopd": "^1.2.0", + "has-property-descriptors": "^1.0.2", + "has-proto": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "internal-slot": "^1.1.0", + "is-array-buffer": "^3.0.5", + "is-callable": "^1.2.7", + "is-data-view": "^1.0.2", + "is-negative-zero": "^2.0.3", + "is-regex": "^1.2.1", + "is-set": "^2.0.3", + "is-shared-array-buffer": "^1.0.4", + "is-string": "^1.1.1", + "is-typed-array": "^1.1.15", + "is-weakref": "^1.1.1", + "math-intrinsics": "^1.1.0", + "object-inspect": "^1.13.4", + "object-keys": "^1.1.1", + "object.assign": "^4.1.7", + "own-keys": "^1.0.1", + "regexp.prototype.flags": "^1.5.4", + "safe-array-concat": "^1.1.3", + "safe-push-apply": "^1.0.0", + "safe-regex-test": "^1.1.0", + "set-proto": "^1.0.0", + "stop-iteration-iterator": "^1.1.0", + "string.prototype.trim": "^1.2.10", + "string.prototype.trimend": "^1.0.9", + "string.prototype.trimstart": "^1.0.8", + "typed-array-buffer": "^1.0.3", + "typed-array-byte-length": "^1.0.3", + "typed-array-byte-offset": "^1.0.4", + "typed-array-length": "^1.0.7", + "unbox-primitive": "^1.1.0", + "which-typed-array": "^1.1.19" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es-define-property": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", + "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-iterator-helpers": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.2.1.tgz", + "integrity": "sha512-uDn+FE1yrDzyC0pCo961B2IHbdM8y/ACZsKD4dG6WqrjV53BADjwa7D+1aom2rsNVfLyDgU/eigvlJGJ08OQ4w==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.6", + "es-errors": "^1.3.0", + "es-set-tostringtag": "^2.0.3", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.6", + "globalthis": "^1.0.4", + "gopd": "^1.2.0", + "has-property-descriptors": "^1.0.2", + "has-proto": "^1.2.0", + "has-symbols": "^1.1.0", + "internal-slot": "^1.1.0", + "iterator.prototype": "^1.1.4", + "safe-array-concat": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-object-atoms": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", + "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-set-tostringtag": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", + "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-shim-unscopables": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.1.0.tgz", + "integrity": "sha512-d9T8ucsEhh8Bi1woXCf+TIKDIROLG5WCkxg8geBCbvk22kzwC5G2OnXVMO6FUsvQlgUUXQ2itephWDLqDzbeCw==", + "dev": true, + "license": "MIT", + "dependencies": { + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-to-primitive": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.3.0.tgz", + "integrity": "sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-callable": "^1.2.7", + "is-date-object": "^1.0.5", + "is-symbol": "^1.0.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/esbuild": { + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.9.tgz", + "integrity": "sha512-CRbODhYyQx3qp7ZEwzxOk4JBqmD/seJrzPa/cGjY1VtIn5E09Oi9/dB4JwctnfZ8Q8iT7rioVv5k/FNT/uf54g==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=18" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.25.9", + "@esbuild/android-arm": "0.25.9", + "@esbuild/android-arm64": "0.25.9", + "@esbuild/android-x64": "0.25.9", + "@esbuild/darwin-arm64": "0.25.9", + "@esbuild/darwin-x64": "0.25.9", + "@esbuild/freebsd-arm64": "0.25.9", + "@esbuild/freebsd-x64": "0.25.9", + "@esbuild/linux-arm": "0.25.9", + "@esbuild/linux-arm64": "0.25.9", + "@esbuild/linux-ia32": "0.25.9", + "@esbuild/linux-loong64": "0.25.9", + "@esbuild/linux-mips64el": "0.25.9", + "@esbuild/linux-ppc64": "0.25.9", + "@esbuild/linux-riscv64": "0.25.9", + "@esbuild/linux-s390x": "0.25.9", + "@esbuild/linux-x64": "0.25.9", + "@esbuild/netbsd-arm64": "0.25.9", + "@esbuild/netbsd-x64": "0.25.9", + "@esbuild/openbsd-arm64": "0.25.9", + "@esbuild/openbsd-x64": "0.25.9", + "@esbuild/openharmony-arm64": "0.25.9", + "@esbuild/sunos-x64": "0.25.9", + "@esbuild/win32-arm64": "0.25.9", + "@esbuild/win32-ia32": "0.25.9", + "@esbuild/win32-x64": "0.25.9" + } + }, + "node_modules/esbuild-register": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/esbuild-register/-/esbuild-register-3.6.0.tgz", + "integrity": "sha512-H2/S7Pm8a9CL1uhp9OvjwrBh5Pvx0H8qVOxNu8Wed9Y7qv56MPtq+GGM8RJpq6glYJn9Wspr8uw7l55uyinNeg==", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "^4.3.4" + }, + "peerDependencies": { + "esbuild": ">=0.12 <1" + } + }, + "node_modules/escalade": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "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, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint": { + "version": "9.35.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.35.0.tgz", + "integrity": "sha512-QePbBFMJFjgmlE+cXAlbHZbHpdFVS2E/6vzCy7aKlebddvl1vadiC4JFV5u/wqTkNUwEV8WrQi257jf5f06hrg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.8.0", + "@eslint-community/regexpp": "^4.12.1", + "@eslint/config-array": "^0.21.0", + "@eslint/config-helpers": "^0.3.1", + "@eslint/core": "^0.15.2", + "@eslint/eslintrc": "^3.3.1", + "@eslint/js": "9.35.0", + "@eslint/plugin-kit": "^0.3.5", + "@humanfs/node": "^0.16.6", + "@humanwhocodes/module-importer": "^1.0.1", + "@humanwhocodes/retry": "^0.4.2", + "@types/estree": "^1.0.6", + "@types/json-schema": "^7.0.15", + "ajv": "^6.12.4", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.6", + "debug": "^4.3.2", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^8.4.0", + "eslint-visitor-keys": "^4.2.1", + "espree": "^10.4.0", + "esquery": "^1.5.0", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^8.0.0", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "ignore": "^5.2.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.3" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://eslint.org/donate" + }, + "peerDependencies": { + "jiti": "*" + }, + "peerDependenciesMeta": { + "jiti": { + "optional": true + } + } + }, + "node_modules/eslint-config-airbnb": { + "version": "19.0.4", + "resolved": "https://registry.npmjs.org/eslint-config-airbnb/-/eslint-config-airbnb-19.0.4.tgz", + "integrity": "sha512-T75QYQVQX57jiNgpF9r1KegMICE94VYwoFQyMGhrvc+lB8YF2E/M/PYDaQe1AJcWaEgqLE+ErXV1Og/+6Vyzew==", + "dev": true, + "license": "MIT", + "dependencies": { + "eslint-config-airbnb-base": "^15.0.0", + "object.assign": "^4.1.2", + "object.entries": "^1.1.5" + }, + "engines": { + "node": "^10.12.0 || ^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "eslint": "^7.32.0 || ^8.2.0", + "eslint-plugin-import": "^2.25.3", + "eslint-plugin-jsx-a11y": "^6.5.1", + "eslint-plugin-react": "^7.28.0", + "eslint-plugin-react-hooks": "^4.3.0" + } + }, + "node_modules/eslint-config-airbnb/node_modules/eslint-config-airbnb-base": { + "version": "15.0.0", + "resolved": "https://registry.npmjs.org/eslint-config-airbnb-base/-/eslint-config-airbnb-base-15.0.0.tgz", + "integrity": "sha512-xaX3z4ZZIcFLvh2oUNvcX5oEofXda7giYmuplVxoOg5A7EXJMrUyqRgR+mhDhPK8LZ4PttFOBvCYDbX3sUoUig==", + "dev": true, + "license": "MIT", + "dependencies": { + "confusing-browser-globals": "^1.0.10", + "object.assign": "^4.1.2", + "object.entries": "^1.1.5", + "semver": "^6.3.0" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + }, + "peerDependencies": { + "eslint": "^7.32.0 || ^8.2.0", + "eslint-plugin-import": "^2.25.2" + } + }, + "node_modules/eslint-config-airbnb/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/eslint-config-prettier": { + "version": "9.1.2", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-9.1.2.tgz", + "integrity": "sha512-iI1f+D2ViGn+uvv5HuHVUamg8ll4tN+JRHGc6IJi4TP9Kl976C57fzPXgseXNs8v0iA8aSJpHsTWjDb9QJamGQ==", + "dev": true, + "license": "MIT", + "bin": { + "eslint-config-prettier": "bin/cli.js" + }, + "peerDependencies": { + "eslint": ">=7.0.0" + } + }, + "node_modules/eslint-import-resolver-node": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz", + "integrity": "sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "^3.2.7", + "is-core-module": "^2.13.0", + "resolve": "^1.22.4" + } + }, + "node_modules/eslint-import-resolver-node/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-import-resolver-typescript": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-3.10.1.tgz", + "integrity": "sha512-A1rHYb06zjMGAxdLSkN2fXPBwuSaQ0iO5M/hdyS0Ajj1VBaRp0sPD3dn1FhME3c/JluGFbwSxyCfqdSbtQLAHQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "@nolyfill/is-core-module": "1.0.39", + "debug": "^4.4.0", + "get-tsconfig": "^4.10.0", + "is-bun-module": "^2.0.0", + "stable-hash": "^0.0.5", + "tinyglobby": "^0.2.13", + "unrs-resolver": "^1.6.2" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint-import-resolver-typescript" + }, + "peerDependencies": { + "eslint": "*", + "eslint-plugin-import": "*", + "eslint-plugin-import-x": "*" + }, + "peerDependenciesMeta": { + "eslint-plugin-import": { + "optional": true + }, + "eslint-plugin-import-x": { + "optional": true + } + } + }, + "node_modules/eslint-module-utils": { + "version": "2.12.1", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.12.1.tgz", + "integrity": "sha512-L8jSWTze7K2mTg0vos/RuLRS5soomksDPoJLXIslC7c8Wmut3bx7CPpJijDcBZtxQ5lrbUdM+s0OlNbz0DCDNw==", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "^3.2.7" + }, + "engines": { + "node": ">=4" + }, + "peerDependenciesMeta": { + "eslint": { + "optional": true + } + } + }, + "node_modules/eslint-module-utils/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-plugin-import": { + "version": "2.32.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.32.0.tgz", + "integrity": "sha512-whOE1HFo/qJDyX4SnXzP4N6zOWn79WhnCUY/iDR0mPfQZO8wcYE4JClzI2oZrhBnnMUCBCHZhO6VQyoBU95mZA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@rtsao/scc": "^1.1.0", + "array-includes": "^3.1.9", + "array.prototype.findlastindex": "^1.2.6", + "array.prototype.flat": "^1.3.3", + "array.prototype.flatmap": "^1.3.3", + "debug": "^3.2.7", + "doctrine": "^2.1.0", + "eslint-import-resolver-node": "^0.3.9", + "eslint-module-utils": "^2.12.1", + "hasown": "^2.0.2", + "is-core-module": "^2.16.1", + "is-glob": "^4.0.3", + "minimatch": "^3.1.2", + "object.fromentries": "^2.0.8", + "object.groupby": "^1.0.3", + "object.values": "^1.2.1", + "semver": "^6.3.1", + "string.prototype.trimend": "^1.0.9", + "tsconfig-paths": "^3.15.0" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 || ^9" + } + }, + "node_modules/eslint-plugin-import/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-plugin-import/node_modules/json5": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", + "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", + "dev": true, + "license": "MIT", + "dependencies": { + "minimist": "^1.2.0" + }, + "bin": { + "json5": "lib/cli.js" + } + }, + "node_modules/eslint-plugin-import/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/eslint-plugin-import/node_modules/tsconfig-paths": { + "version": "3.15.0", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz", + "integrity": "sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/json5": "^0.0.29", + "json5": "^1.0.2", + "minimist": "^1.2.6", + "strip-bom": "^3.0.0" + } + }, + "node_modules/eslint-plugin-jsx-a11y": { + "version": "6.10.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.10.2.tgz", + "integrity": "sha512-scB3nz4WmG75pV8+3eRUQOHZlNSUhFNq37xnpgRkCCELU3XMvXAxLk1eqWWyE22Ki4Q01Fnsw9BA3cJHDPgn2Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "aria-query": "^5.3.2", + "array-includes": "^3.1.8", + "array.prototype.flatmap": "^1.3.2", + "ast-types-flow": "^0.0.8", + "axe-core": "^4.10.0", + "axobject-query": "^4.1.0", + "damerau-levenshtein": "^1.0.8", + "emoji-regex": "^9.2.2", + "hasown": "^2.0.2", + "jsx-ast-utils": "^3.3.5", + "language-tags": "^1.0.9", + "minimatch": "^3.1.2", + "object.fromentries": "^2.0.8", + "safe-regex-test": "^1.0.3", + "string.prototype.includes": "^2.0.1" + }, + "engines": { + "node": ">=4.0" + }, + "peerDependencies": { + "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9" + } + }, + "node_modules/eslint-plugin-jsx-a11y/node_modules/aria-query": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.2.tgz", + "integrity": "sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/eslint-plugin-prettier": { + "version": "5.5.4", + "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.5.4.tgz", + "integrity": "sha512-swNtI95SToIz05YINMA6Ox5R057IMAmWZ26GqPxusAp1TZzj+IdY9tXNWWD3vkF/wEqydCONcwjTFpxybBqZsg==", + "dev": true, + "license": "MIT", + "dependencies": { + "prettier-linter-helpers": "^1.0.0", + "synckit": "^0.11.7" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint-plugin-prettier" + }, + "peerDependencies": { + "@types/eslint": ">=8.0.0", + "eslint": ">=8.0.0", + "eslint-config-prettier": ">= 7.0.0 <10.0.0 || >=10.1.0", + "prettier": ">=3.0.0" + }, + "peerDependenciesMeta": { + "@types/eslint": { + "optional": true + }, + "eslint-config-prettier": { + "optional": true + } + } + }, + "node_modules/eslint-plugin-react": { + "version": "7.37.5", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.37.5.tgz", + "integrity": "sha512-Qteup0SqU15kdocexFNAJMvCJEfa2xUKNV4CC1xsVMrIIqEy3SQ/rqyxCWNzfrd3/ldy6HMlD2e0JDVpDg2qIA==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "array-includes": "^3.1.8", + "array.prototype.findlast": "^1.2.5", + "array.prototype.flatmap": "^1.3.3", + "array.prototype.tosorted": "^1.1.4", + "doctrine": "^2.1.0", + "es-iterator-helpers": "^1.2.1", + "estraverse": "^5.3.0", + "hasown": "^2.0.2", + "jsx-ast-utils": "^2.4.1 || ^3.0.0", + "minimatch": "^3.1.2", + "object.entries": "^1.1.9", + "object.fromentries": "^2.0.8", + "object.values": "^1.2.1", + "prop-types": "^15.8.1", + "resolve": "^2.0.0-next.5", + "semver": "^6.3.1", + "string.prototype.matchall": "^4.0.12", + "string.prototype.repeat": "^1.0.0" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7" + } + }, + "node_modules/eslint-plugin-react-hooks": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-5.2.0.tgz", + "integrity": "sha512-+f15FfK64YQwZdJNELETdn5ibXEUQmW1DZL6KXhNnc2heoy/sg9VJJeT7n8TlMWouzWqSWavFkIhHyIbIAEapg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0" + } + }, + "node_modules/eslint-plugin-react-refresh": { + "version": "0.4.20", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-refresh/-/eslint-plugin-react-refresh-0.4.20.tgz", + "integrity": "sha512-XpbHQ2q5gUF8BGOX4dHe+71qoirYMhApEPZ7sfhF/dNnOF1UXnCMGZf79SFTBO7Bz5YEIT4TMieSlJBWhP9WBA==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "eslint": ">=8.40" + } + }, + "node_modules/eslint-plugin-react/node_modules/resolve": { + "version": "2.0.0-next.5", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.5.tgz", + "integrity": "sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/eslint-plugin-react/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "license": "ISC", + "peer": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/eslint-plugin-storybook": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-storybook/-/eslint-plugin-storybook-0.9.0.tgz", + "integrity": "sha512-qOT/2vQBo0VqrG/BhZv8IdSsKQiyzJw+2Wqq+WFCiblI/PfxLSrGkF/buiXF+HumwfsCyBdaC94UhqhmYFmAvA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@storybook/csf": "^0.0.1", + "@typescript-eslint/utils": "^5.62.0", + "requireindex": "^1.2.0", + "ts-dedent": "^2.2.0" + }, + "engines": { + "node": ">= 18" + }, + "peerDependencies": { + "eslint": ">=6" + } + }, + "node_modules/eslint-plugin-storybook/node_modules/@storybook/csf": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/@storybook/csf/-/csf-0.0.1.tgz", + "integrity": "sha512-USTLkZze5gkel8MYCujSRBVIrUQ3YPBrLOx7GNk/0wttvVtlzWXAq9eLbQ4p/NicGxP+3T7KPEMVV//g+yubpw==", + "dev": true, + "license": "MIT", + "dependencies": { + "lodash": "^4.17.15" + } + }, + "node_modules/eslint-plugin-storybook/node_modules/@typescript-eslint/scope-manager": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz", + "integrity": "sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/visitor-keys": "5.62.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/eslint-plugin-storybook/node_modules/@typescript-eslint/types": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.62.0.tgz", + "integrity": "sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/eslint-plugin-storybook/node_modules/@typescript-eslint/typescript-estree": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz", + "integrity": "sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/visitor-keys": "5.62.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "semver": "^7.3.7", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/eslint-plugin-storybook/node_modules/@typescript-eslint/utils": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.62.0.tgz", + "integrity": "sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@types/json-schema": "^7.0.9", + "@types/semver": "^7.3.12", + "@typescript-eslint/scope-manager": "5.62.0", + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/typescript-estree": "5.62.0", + "eslint-scope": "^5.1.1", + "semver": "^7.3.7" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/eslint-plugin-storybook/node_modules/@typescript-eslint/visitor-keys": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz", + "integrity": "sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "5.62.0", + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/eslint-plugin-storybook/node_modules/eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/eslint-plugin-storybook/node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/eslint-scope": { + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.4.0.tgz", + "integrity": "sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.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, + "license": "Apache-2.0", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint/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, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/eslint/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, + "license": "MIT", + "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/eslint/node_modules/eslint-visitor-keys": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz", + "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/espree": { + "version": "10.4.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-10.4.0.tgz", + "integrity": "sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "acorn": "^8.15.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^4.2.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/espree/node_modules/eslint-visitor-keys": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz", + "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true, + "license": "BSD-2-Clause", + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/esquery": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz", + "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==", + "dev": true, + "license": "BSD-3-Clause", + "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, + "license": "BSD-2-Clause", + "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, + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", + "dev": true, + "license": "MIT" + }, + "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, + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/eventemitter3": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.1.tgz", + "integrity": "sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==", + "dev": true, + "license": "MIT" + }, + "node_modules/execa": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-8.0.1.tgz", + "integrity": "sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==", + "dev": true, + "license": "MIT", + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^8.0.1", + "human-signals": "^5.0.0", + "is-stream": "^3.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^5.1.0", + "onetime": "^6.0.0", + "signal-exit": "^4.1.0", + "strip-final-newline": "^3.0.0" + }, + "engines": { + "node": ">=16.17" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "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, + "license": "MIT" + }, + "node_modules/fast-diff": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.3.0.tgz", + "integrity": "sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/fast-glob": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz", + "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==", + "dev": true, + "license": "MIT", + "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.8" + }, + "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, + "license": "ISC", + "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, + "license": "MIT" + }, + "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, + "license": "MIT" + }, + "node_modules/fast-uri": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.0.tgz", + "integrity": "sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "BSD-3-Clause" + }, + "node_modules/fastq": { + "version": "1.19.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.19.1.tgz", + "integrity": "sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/fdir": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", + "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } + } + }, + "node_modules/file-entry-cache": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz", + "integrity": "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "flat-cache": "^4.0.0" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/file-system-cache": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/file-system-cache/-/file-system-cache-2.3.0.tgz", + "integrity": "sha512-l4DMNdsIPsVnKrgEXbJwDJsA5mB8rGwHYERMgqQx/xAUtChPJMre1bXBzDEqqVbWv9AIbFezXMxeEkZDSrXUOQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "fs-extra": "11.1.1", + "ramda": "0.29.0" + } + }, + "node_modules/fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "dev": true, + "license": "MIT", + "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, + "license": "MIT", + "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": "4.0.1", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz", + "integrity": "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==", + "dev": true, + "license": "MIT", + "dependencies": { + "flatted": "^3.2.9", + "keyv": "^4.5.4" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/flatted": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.3.tgz", + "integrity": "sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==", + "dev": true, + "license": "ISC" + }, + "node_modules/follow-redirects": { + "version": "1.15.11", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.11.tgz", + "integrity": "sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "license": "MIT", + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/for-each": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.5.tgz", + "integrity": "sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-callable": "^1.2.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/foreground-child": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.1.tgz", + "integrity": "sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==", + "dev": true, + "license": "ISC", + "dependencies": { + "cross-spawn": "^7.0.6", + "signal-exit": "^4.0.1" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/form-data": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.4.tgz", + "integrity": "sha512-KrGhL9Q4zjj0kiUt5OO4Mr/A/jlI2jDYs5eHBpYHPcBEVSiipAvn2Ko2HnPe20rmcuuvMHNdZFp+4IlGTMF0Ow==", + "license": "MIT", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "es-set-tostringtag": "^2.1.0", + "hasown": "^2.0.2", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/fraction.js": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.3.7.tgz", + "integrity": "sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==", + "dev": true, + "license": "MIT", + "engines": { + "node": "*" + }, + "funding": { + "type": "patreon", + "url": "https://github.com/sponsors/rawify" + } + }, + "node_modules/fs-extra": { + "version": "11.1.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.1.1.tgz", + "integrity": "sha512-MGIE4HOvQCeUCzmlHs0vXpih4ysz4wg9qiSAu6cd42lVwPbTM1TjV7RusoyQqMmk/95gdQZX72u+YW+c3eEpFQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=14.14" + } + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/function.prototype.name": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.8.tgz", + "integrity": "sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "functions-have-names": "^1.2.3", + "hasown": "^2.0.2", + "is-callable": "^1.2.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/functions-have-names": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true, + "license": "ISC", + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/get-east-asian-width": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/get-east-asian-width/-/get-east-asian-width-1.3.1.tgz", + "integrity": "sha512-R1QfovbPsKmosqTnPoRFiJ7CF9MLRgb53ChvMZm+r4p76/+8yKDy17qLL2PKInORy2RkZZekuK0efYgmzTkXyQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/get-intrinsic": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", + "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "function-bind": "^1.1.2", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "math-intrinsics": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-nonce": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-nonce/-/get-nonce-1.0.1.tgz", + "integrity": "sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/get-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", + "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/get-stream": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-8.0.1.tgz", + "integrity": "sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/get-symbol-description": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.1.0.tgz", + "integrity": "sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-tsconfig": { + "version": "4.10.1", + "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.10.1.tgz", + "integrity": "sha512-auHyJ4AgMz7vgS8Hp3N6HXSmlMdUyhSUrfBF16w153rxtLIEOE+HGqaBppczZvnHLqQJfiHotCYpNhl0lUROFQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "resolve-pkg-maps": "^1.0.0" + }, + "funding": { + "url": "https://github.com/privatenumber/get-tsconfig?sponsor=1" + } + }, + "node_modules/git-raw-commits": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/git-raw-commits/-/git-raw-commits-4.0.0.tgz", + "integrity": "sha512-ICsMM1Wk8xSGMowkOmPrzo2Fgmfo4bMHLNX6ytHjajRJUqvHOw/TFapQ+QG75c3X/tTDDhOSRPGC52dDbNM8FQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "dargs": "^8.0.0", + "meow": "^12.0.1", + "split2": "^4.0.0" + }, + "bin": { + "git-raw-commits": "cli.mjs" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/glob": { + "version": "10.4.5", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", + "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", + "dev": true, + "license": "ISC", + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "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, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/glob/node_modules/brace-expansion": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/glob/node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/global-directory": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/global-directory/-/global-directory-4.0.1.tgz", + "integrity": "sha512-wHTUcDUoZ1H5/0iVqEudYW4/kAlN5cZ3j/bXn0Dpbizl9iaUVeWSHqiOjsgk6OW2bkLclbBjzewBz6weQ1zA2Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "ini": "4.1.1" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/globals": { + "version": "15.15.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-15.15.0.tgz", + "integrity": "sha512-7ACyT3wmyp3I61S4fG682L0VA2RGD9otkqGJIwNUMF1SWUombIIk+af1unuDYgMm082aHYwD+mzJvv9Iu8dsgg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/globalthis": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz", + "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-properties": "^1.2.1", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "dev": true, + "license": "MIT", + "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/goober": { + "version": "2.1.16", + "resolved": "https://registry.npmjs.org/goober/-/goober-2.1.16.tgz", + "integrity": "sha512-erjk19y1U33+XAMe1VTvIONHYoSqE4iS7BYUZfHaqeohLmnC0FdxEh7rQU+6MZ4OajItzjZFSRtVANrQwNq6/g==", + "license": "MIT", + "peerDependencies": { + "csstype": "^3.0.10" + } + }, + "node_modules/gopd": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", + "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/graphemer": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", + "dev": true, + "license": "MIT" + }, + "node_modules/graphql": { + "version": "16.11.0", + "resolved": "https://registry.npmjs.org/graphql/-/graphql-16.11.0.tgz", + "integrity": "sha512-mS1lbMsxgQj6hge1XZ6p7GPhbrtFwUFYi3wRzXAC/FmYnyXMTvvI3td3rjmQ2u8ewXueaSvRPWaEcgVVOT9Jnw==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.22.0 || ^14.16.0 || ^16.0.0 || >=17.0.0" + } + }, + "node_modules/has-bigints": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.1.0.tgz", + "integrity": "sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/has-property-descriptors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-define-property": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-proto": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.2.0.tgz", + "integrity": "sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", + "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-tostringtag": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", + "license": "MIT", + "dependencies": { + "has-symbols": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/headers-polyfill": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/headers-polyfill/-/headers-polyfill-4.0.3.tgz", + "integrity": "sha512-IScLbePpkvO846sIwOtOTDjutRMWdXdJmXdMvk6gCBHxFO8d+QKOQedyZSxFTTFYRSmlgSTDtXqqq4pcenBXLQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/human-signals": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-5.0.0.tgz", + "integrity": "sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=16.17.0" + } + }, + "node_modules/husky": { + "version": "9.1.7", + "resolved": "https://registry.npmjs.org/husky/-/husky-9.1.7.tgz", + "integrity": "sha512-5gs5ytaNjBrh5Ow3zrvdUUY+0VxIuWVL4i9irt6friV+BqdCfmV11CQTWMiBYWHbXhco+J1kHfTOUkePhCDvMA==", + "dev": true, + "license": "MIT", + "bin": { + "husky": "bin.js" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/typicode" + } + }, + "node_modules/ignore": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/import-fresh": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz", + "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/import-fresh/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, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/import-meta-resolve": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/import-meta-resolve/-/import-meta-resolve-4.2.0.tgz", + "integrity": "sha512-Iqv2fzaTQN28s/FwZAoFq0ZSs/7hMAHJVX+w8PZl3cY19Pxk6jFFalxQoIfW2826i/fDLXv8IiEZRIT0lDuWcg==", + "dev": true, + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "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, + "license": "ISC" + }, + "node_modules/ini": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ini/-/ini-4.1.1.tgz", + "integrity": "sha512-QQnnxNyfvmHFIsj7gkPcYymR8Jdw/o7mp5ZFihxn6h8Ci6fh3Dx4E1gPjpQEpIuPo9XVNY/ZUwh4BPMjGyL01g==", + "dev": true, + "license": "ISC", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/internal-slot": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.1.0.tgz", + "integrity": "sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "hasown": "^2.0.2", + "side-channel": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/is-arguments": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.2.0.tgz", + "integrity": "sha512-7bVbi0huj/wrIAOzb8U1aszg9kdi3KN/CyU19CTI7tAoZYEZoL9yCDXpbXN+uPsuWnP02cyug1gleqq+TU+YCA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-array-buffer": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.5.tgz", + "integrity": "sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "get-intrinsic": "^1.2.6" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", + "dev": true, + "license": "MIT" + }, + "node_modules/is-async-function": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.1.1.tgz", + "integrity": "sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "async-function": "^1.0.0", + "call-bound": "^1.0.3", + "get-proto": "^1.0.1", + "has-tostringtag": "^1.0.2", + "safe-regex-test": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-bigint": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.1.0.tgz", + "integrity": "sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-bigints": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "license": "MIT", + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-boolean-object": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.2.2.tgz", + "integrity": "sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-bun-module": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-bun-module/-/is-bun-module-2.0.0.tgz", + "integrity": "sha512-gNCGbnnnnFAUGKeZ9PdbyeGYJqewpmc2aKHUEMO5nQPWU9lOmv7jcmQIv+qHD8fXW6W7qfuCwX4rY9LNRjXrkQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "semver": "^7.7.1" + } + }, + "node_modules/is-callable": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-core-module": { + "version": "2.16.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz", + "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==", + "dev": true, + "license": "MIT", + "dependencies": { + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-data-view": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.2.tgz", + "integrity": "sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "get-intrinsic": "^1.2.6", + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-date-object": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.1.0.tgz", + "integrity": "sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-docker": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", + "dev": true, + "license": "MIT", + "bin": { + "is-docker": "cli.js" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "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, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-finalizationregistry": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.1.1.tgz", + "integrity": "sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-4.0.0.tgz", + "integrity": "sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-generator-function": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.1.0.tgz", + "integrity": "sha512-nPUB5km40q9e8UfN/Zc24eLlzdSf9OfKByBw9CIdw4H1giPMeA0OIJvbchsCu4npfI2QcMVBsGEBHKZ7wLTWmQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "get-proto": "^1.0.0", + "has-tostringtag": "^1.0.2", + "safe-regex-test": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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, + "license": "MIT", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-map": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz", + "integrity": "sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-negative-zero": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz", + "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-node-process": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/is-node-process/-/is-node-process-1.2.0.tgz", + "integrity": "sha512-Vg4o6/fqPxIjtxgUH5QLJhwZ7gW5diGCVlXpuUfELC62CuxM1iHcRe51f2W1FDy04Ai4KJkagKjx3XaqyfRKXw==", + "dev": true, + "license": "MIT" + }, + "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, + "license": "MIT", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-number-object": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.1.1.tgz", + "integrity": "sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-obj": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", + "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-regex": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.2.1.tgz", + "integrity": "sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "gopd": "^1.2.0", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-set": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.3.tgz", + "integrity": "sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-shared-array-buffer": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.4.tgz", + "integrity": "sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", + "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-string": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.1.1.tgz", + "integrity": "sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-symbol": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.1.1.tgz", + "integrity": "sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "has-symbols": "^1.1.0", + "safe-regex-test": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-text-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-text-path/-/is-text-path-2.0.0.tgz", + "integrity": "sha512-+oDTluR6WEjdXEJMnC2z6A4FRwFoYuvShVVEGsS7ewc0UTi2QtAKMDJuL4BDEVt+5T7MjFo12RP8ghOM75oKJw==", + "dev": true, + "license": "MIT", + "dependencies": { + "text-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-typed-array": { + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.15.tgz", + "integrity": "sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "which-typed-array": "^1.1.16" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakmap": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.2.tgz", + "integrity": "sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakref": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.1.1.tgz", + "integrity": "sha512-6i9mGWSlqzNMEqpCp93KwRS1uUOodk2OJ6b+sq7ZPDSy2WuI5NFIxp/254TytR8ftefexkWn5xNiHUNpPOfSew==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakset": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.4.tgz", + "integrity": "sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "get-intrinsic": "^1.2.6" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-wsl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-docker": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": 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, + "license": "ISC" + }, + "node_modules/iterator.prototype": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/iterator.prototype/-/iterator.prototype-1.1.5.tgz", + "integrity": "sha512-H0dkQoCa3b2VEeKQBOxFph+JAbcrQdE7KC0UkqwpLmv2EC4P41QXP+rqo9wYodACiG5/WM5s9oDApTU8utwj9g==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "define-data-property": "^1.1.4", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.6", + "get-proto": "^1.0.0", + "has-symbols": "^1.1.0", + "set-function-name": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/jackspeak": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", + "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" + } + }, + "node_modules/jiti": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/jiti/-/jiti-2.5.1.tgz", + "integrity": "sha512-twQoecYPiVA5K/h6SxtORw/Bs3ar+mLUtoPSc7iMXzQzK8d7eJ/R09wmTwAjiamETn1cXYPGfNnu7DMoHgu12w==", + "dev": true, + "license": "MIT", + "bin": { + "jiti": "lib/jiti-cli.mjs" + } + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "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, + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/jsdoc-type-pratt-parser": { + "version": "4.8.0", + "resolved": "https://registry.npmjs.org/jsdoc-type-pratt-parser/-/jsdoc-type-pratt-parser-4.8.0.tgz", + "integrity": "sha512-iZ8Bdb84lWRuGHamRXFyML07r21pcwBrLkHEuHgEY5UbCouBwv7ECknDRKzsQIXMiqpPymqtIf8TC/shYKB5rw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/jsesc": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", + "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", + "dev": true, + "license": "MIT", + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=6" + } + }, + "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, + "license": "MIT" + }, + "node_modules/json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "dev": true, + "license": "MIT" + }, + "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, + "license": "MIT" + }, + "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, + "license": "MIT" + }, + "node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "dev": true, + "license": "MIT", + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/jsonfile": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.2.0.tgz", + "integrity": "sha512-FGuPw30AdOIUTRMC2OMRtQV+jkVj2cfPqSeWXv1NEAJ1qZ5zb1X6z1mFhbfOB/iy3ssJCD+3KuZ8r8C3uVFlAg==", + "dev": true, + "license": "MIT", + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/jsonparse": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz", + "integrity": "sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==", + "dev": true, + "engines": [ + "node >= 0.2.0" + ], + "license": "MIT" + }, + "node_modules/JSONStream": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.5.tgz", + "integrity": "sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==", + "dev": true, + "license": "(MIT OR Apache-2.0)", + "dependencies": { + "jsonparse": "^1.2.0", + "through": ">=2.2.7 <3" + }, + "bin": { + "JSONStream": "bin.js" + }, + "engines": { + "node": "*" + } + }, + "node_modules/jsx-ast-utils": { + "version": "3.3.5", + "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz", + "integrity": "sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "array-includes": "^3.1.6", + "array.prototype.flat": "^1.3.1", + "object.assign": "^4.1.4", + "object.values": "^1.1.6" + }, + "engines": { + "node": ">=4.0" + } + }, + "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, + "license": "MIT", + "dependencies": { + "json-buffer": "3.0.1" + } + }, + "node_modules/language-subtag-registry": { + "version": "0.3.23", + "resolved": "https://registry.npmjs.org/language-subtag-registry/-/language-subtag-registry-0.3.23.tgz", + "integrity": "sha512-0K65Lea881pHotoGEa5gDlMxt3pctLi2RplBb7Ezh4rRdLEOtgi7n4EwK9lamnUCkKBqaeKRVebTq6BAxSkpXQ==", + "dev": true, + "license": "CC0-1.0" + }, + "node_modules/language-tags": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/language-tags/-/language-tags-1.0.9.tgz", + "integrity": "sha512-MbjN408fEndfiQXbFQ1vnd+1NoLDsnQW41410oQBXiyXDMYH5z505juWa4KUE1LqxRC7DgOgZDbKLxHIwm27hA==", + "dev": true, + "license": "MIT", + "dependencies": { + "language-subtag-registry": "^0.3.20" + }, + "engines": { + "node": ">=0.10" + } + }, + "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, + "license": "MIT", + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/lilconfig": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.3.tgz", + "integrity": "sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/antonk52" + } + }, + "node_modules/lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "dev": true, + "license": "MIT" + }, + "node_modules/lint-staged": { + "version": "15.5.2", + "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-15.5.2.tgz", + "integrity": "sha512-YUSOLq9VeRNAo/CTaVmhGDKG+LBtA8KF1X4K5+ykMSwWST1vDxJRB2kv2COgLb1fvpCo+A/y9A0G0znNVmdx4w==", + "dev": true, + "license": "MIT", + "dependencies": { + "chalk": "^5.4.1", + "commander": "^13.1.0", + "debug": "^4.4.0", + "execa": "^8.0.1", + "lilconfig": "^3.1.3", + "listr2": "^8.2.5", + "micromatch": "^4.0.8", + "pidtree": "^0.6.0", + "string-argv": "^0.3.2", + "yaml": "^2.7.0" + }, + "bin": { + "lint-staged": "bin/lint-staged.js" + }, + "engines": { + "node": ">=18.12.0" + }, + "funding": { + "url": "https://opencollective.com/lint-staged" + } + }, + "node_modules/listr2": { + "version": "8.3.3", + "resolved": "https://registry.npmjs.org/listr2/-/listr2-8.3.3.tgz", + "integrity": "sha512-LWzX2KsqcB1wqQ4AHgYb4RsDXauQiqhjLk+6hjbaeHG4zpjjVAB6wC/gz6X0l+Du1cN3pUB5ZlrvTbhGSNnUQQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "cli-truncate": "^4.0.0", + "colorette": "^2.0.20", + "eventemitter3": "^5.0.1", + "log-update": "^6.1.0", + "rfdc": "^1.4.1", + "wrap-ansi": "^9.0.0" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/listr2/node_modules/ansi-styles": { + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.3.tgz", + "integrity": "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/listr2/node_modules/emoji-regex": { + "version": "10.5.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.5.0.tgz", + "integrity": "sha512-lb49vf1Xzfx080OKA0o6l8DQQpV+6Vg95zyCJX9VB/BqKYlhG7N4wgROUUHRA+ZPUefLnteQOad7z1kT2bV7bg==", + "dev": true, + "license": "MIT" + }, + "node_modules/listr2/node_modules/string-width": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz", + "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^10.3.0", + "get-east-asian-width": "^1.0.0", + "strip-ansi": "^7.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/listr2/node_modules/wrap-ansi": { + "version": "9.0.2", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-9.0.2.tgz", + "integrity": "sha512-42AtmgqjV+X1VpdOfyTGOYRi0/zsoLqtXQckTmqTeybT+BDIbM/Guxo7x3pE2vtpr1ok6xRqM9OpBe+Jyoqyww==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^6.2.1", + "string-width": "^7.0.0", + "strip-ansi": "^7.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.camelcase": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", + "integrity": "sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.isplainobject": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", + "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.kebabcase": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.kebabcase/-/lodash.kebabcase-4.1.1.tgz", + "integrity": "sha512-N8XRTIMMqqDgSy4VLKPnJ/+hpGZN+PHQiJnSenYqPaVV/NCqEogTnAdZLQiGKhxX+JCs8waWq2t1XHWKOmlY8g==", + "dev": true, + "license": "MIT" + }, + "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, + "license": "MIT" + }, + "node_modules/lodash.mergewith": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.mergewith/-/lodash.mergewith-4.6.2.tgz", + "integrity": "sha512-GK3g5RPZWTRSeLSpgP8Xhra+pnjBC56q9FZYe1d5RN3TJ35dbkGy3YqBSMbyCrlbi+CM9Z3Jk5yTL7RCsqboyQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.snakecase": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.snakecase/-/lodash.snakecase-4.1.1.tgz", + "integrity": "sha512-QZ1d4xoBHYUeuouhEq3lk3Uq7ldgyFXGBhg04+oRLnIz8o9T65Eh+8YdroUwn846zchkA9yDsDl5CVVaV2nqYw==", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.startcase": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.startcase/-/lodash.startcase-4.4.0.tgz", + "integrity": "sha512-+WKqsK294HMSc2jEbNgpHpd0JfIBhp7rEV4aqXWqFr6AlXov+SlcgB1Fv01y2kGe3Gc8nMW7VA0SrGuSkRfIEg==", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.uniq": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", + "integrity": "sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.upperfirst": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/lodash.upperfirst/-/lodash.upperfirst-4.3.1.tgz", + "integrity": "sha512-sReKOYJIJf74dhJONhU4e0/shzi1trVbSWDOhKYE5XV2O+H7Sb2Dihwuc7xWxVl+DgFPyTqIN3zMfT9cq5iWDg==", + "dev": true, + "license": "MIT" + }, + "node_modules/log-update": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/log-update/-/log-update-6.1.0.tgz", + "integrity": "sha512-9ie8ItPR6tjY5uYJh8K/Zrv/RMZ5VOlOWvtZdEHYSTFKZfIBPQa9tOAEeAWhd+AnIneLJ22w5fjOYtoutpWq5w==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-escapes": "^7.0.0", + "cli-cursor": "^5.0.0", + "slice-ansi": "^7.1.0", + "strip-ansi": "^7.1.0", + "wrap-ansi": "^9.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/log-update/node_modules/ansi-styles": { + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.3.tgz", + "integrity": "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/log-update/node_modules/emoji-regex": { + "version": "10.5.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.5.0.tgz", + "integrity": "sha512-lb49vf1Xzfx080OKA0o6l8DQQpV+6Vg95zyCJX9VB/BqKYlhG7N4wgROUUHRA+ZPUefLnteQOad7z1kT2bV7bg==", + "dev": true, + "license": "MIT" + }, + "node_modules/log-update/node_modules/is-fullwidth-code-point": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-5.1.0.tgz", + "integrity": "sha512-5XHYaSyiqADb4RnZ1Bdad6cPp8Toise4TzEjcOYDHZkTCbKgiUl7WTUCpNWHuxmDt91wnsZBc9xinNzopv3JMQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "get-east-asian-width": "^1.3.1" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/log-update/node_modules/slice-ansi": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-7.1.2.tgz", + "integrity": "sha512-iOBWFgUX7caIZiuutICxVgX1SdxwAVFFKwt1EvMYYec/NWO5meOJ6K5uQxhrYBdQJne4KxiqZc+KptFOWFSI9w==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^6.2.1", + "is-fullwidth-code-point": "^5.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/chalk/slice-ansi?sponsor=1" + } + }, + "node_modules/log-update/node_modules/string-width": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz", + "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^10.3.0", + "get-east-asian-width": "^1.0.0", + "strip-ansi": "^7.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/log-update/node_modules/wrap-ansi": { + "version": "9.0.2", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-9.0.2.tgz", + "integrity": "sha512-42AtmgqjV+X1VpdOfyTGOYRi0/zsoLqtXQckTmqTeybT+BDIbM/Guxo7x3pE2vtpr1ok6xRqM9OpBe+Jyoqyww==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^6.2.1", + "string-width": "^7.0.0", + "strip-ansi": "^7.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "license": "MIT", + "dependencies": { + "js-tokens": "^3.0.0 || ^4.0.0" + }, + "bin": { + "loose-envify": "cli.js" + } + }, + "node_modules/loupe": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/loupe/-/loupe-3.2.1.tgz", + "integrity": "sha512-CdzqowRJCeLU72bHvWqwRBBlLcMEtIvGrlvef74kMnV2AolS9Y8xUv1I0U/MNAWMhBlKIoyuEgoJ0t/bbwHbLQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "license": "ISC", + "dependencies": { + "yallist": "^3.0.2" + } + }, + "node_modules/lucide-react": { + "version": "0.453.0", + "resolved": "https://registry.npmjs.org/lucide-react/-/lucide-react-0.453.0.tgz", + "integrity": "sha512-kL+RGZCcJi9BvJtzg2kshO192Ddy9hv3ij+cPrVPWSRzgCWCVazoQJxOjAwgK53NomL07HB7GPHW120FimjNhQ==", + "license": "ISC", + "peerDependencies": { + "react": "^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0-rc" + } + }, + "node_modules/lz-string": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/lz-string/-/lz-string-1.5.0.tgz", + "integrity": "sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==", + "dev": true, + "license": "MIT", + "bin": { + "lz-string": "bin/bin.js" + } + }, + "node_modules/magic-string": { + "version": "0.30.19", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.19.tgz", + "integrity": "sha512-2N21sPY9Ws53PZvsEpVtNuSW+ScYbQdp4b9qUaL+9QkHUrGFKo56Lg9Emg5s9V/qrtNBmiR01sYhUOwu3H+VOw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.5" + } + }, + "node_modules/map-or-similar": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/map-or-similar/-/map-or-similar-1.5.0.tgz", + "integrity": "sha512-0aF7ZmVon1igznGI4VS30yugpduQW3y3GkcgGJOp7d8x8QrizhigUxjI/m2UojsXXto+jLAH3KSz+xOJTiORjg==", + "dev": true, + "license": "MIT" + }, + "node_modules/math-intrinsics": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", + "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/memoizerific": { + "version": "1.11.3", + "resolved": "https://registry.npmjs.org/memoizerific/-/memoizerific-1.11.3.tgz", + "integrity": "sha512-/EuHYwAPdLtXwAwSZkh/Gutery6pD2KYd44oQLhAvQp/50mpyduZh8Q7PYHXTCJ+wuXxt7oij2LXyIJOOYFPog==", + "dev": true, + "license": "MIT", + "dependencies": { + "map-or-similar": "^1.5.0" + } + }, + "node_modules/meow": { + "version": "12.1.1", + "resolved": "https://registry.npmjs.org/meow/-/meow-12.1.1.tgz", + "integrity": "sha512-BhXM0Au22RwUneMPwSCnyhTOizdWoIEPU9sp0Aqa1PnDMR5Wv2FGXYDjuzJEIX+Eo2Rb8xuYe5jrnm5QowQFkw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=16.10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true, + "license": "MIT" + }, + "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, + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/micromatch": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", + "dev": true, + "license": "MIT", + "dependencies": { + "braces": "^3.0.3", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/micromatch/node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "license": "MIT", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mimic-fn": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz", + "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/mimic-function": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/mimic-function/-/mimic-function-5.0.1.tgz", + "integrity": "sha512-VP79XUPxV2CigYP3jWwAUFSku2aKqBH7uTAapFWCBqutsbmDo96KY5o8uh6U+/YSIn5OxJnXp73beVkpqMIGhA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/min-indent": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", + "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "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, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/minipass": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true, + "license": "MIT" + }, + "node_modules/msw": { + "version": "2.11.1", + "resolved": "https://registry.npmjs.org/msw/-/msw-2.11.1.tgz", + "integrity": "sha512-dGSRx0AJmQVQfpGXTsAAq4JFdwdhOBdJ6sJS/jnN0ac3s0NZB6daacHF1z5Pefx+IejmvuiLWw260RlyQOf3sQ==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "dependencies": { + "@bundled-es-modules/cookie": "^2.0.1", + "@bundled-es-modules/statuses": "^1.0.1", + "@inquirer/confirm": "^5.0.0", + "@mswjs/interceptors": "^0.39.1", + "@open-draft/deferred-promise": "^2.2.0", + "@open-draft/until": "^2.1.0", + "@types/cookie": "^0.6.0", + "@types/statuses": "^2.0.4", + "graphql": "^16.8.1", + "headers-polyfill": "^4.0.2", + "is-node-process": "^1.2.0", + "outvariant": "^1.4.3", + "path-to-regexp": "^6.3.0", + "picocolors": "^1.1.1", + "strict-event-emitter": "^0.5.1", + "tough-cookie": "^6.0.0", + "type-fest": "^4.26.1", + "yargs": "^17.7.2" + }, + "bin": { + "msw": "cli/index.js" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/mswjs" + }, + "peerDependencies": { + "typescript": ">= 4.8.x" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/msw/node_modules/type-fest": { + "version": "4.41.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.41.0.tgz", + "integrity": "sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==", + "dev": true, + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/mute-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-2.0.0.tgz", + "integrity": "sha512-WWdIxpyjEn+FhQJQQv9aQAYlHoNVdzIzUySNV1gHUPDSdZJ3yZn7pAAbQcV7B56Mvu881q9FZV+0Vx2xC44VWA==", + "dev": true, + "license": "ISC", + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/mz": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", + "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "any-promise": "^1.0.0", + "object-assign": "^4.0.1", + "thenify-all": "^1.0.0" + } + }, + "node_modules/nanoid": { + "version": "3.3.11", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz", + "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/napi-postinstall": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/napi-postinstall/-/napi-postinstall-0.3.3.tgz", + "integrity": "sha512-uTp172LLXSxuSYHv/kou+f6KW3SMppU9ivthaVTXian9sOt3XM/zHYHpRZiLgQoxeWfYUnslNWQHF1+G71xcow==", + "dev": true, + "license": "MIT", + "bin": { + "napi-postinstall": "lib/cli.js" + }, + "engines": { + "node": "^12.20.0 || ^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/napi-postinstall" + } + }, + "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, + "license": "MIT" + }, + "node_modules/node-releases": { + "version": "2.0.20", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.20.tgz", + "integrity": "sha512-7gK6zSXEH6neM212JgfYFXe+GmZQM+fia5SsusuBIUgnPheLFBmIPhtFoAQRj8/7wASYQnbDlHPVwY0BefoFgA==", + "dev": true, + "license": "MIT" + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/normalize-range": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", + "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/npm-run-path": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.3.0.tgz", + "integrity": "sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "path-key": "^4.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/npm-run-path/node_modules/path-key": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", + "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-hash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz", + "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 6" + } + }, + "node_modules/object-inspect": { + "version": "1.13.4", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz", + "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.assign": { + "version": "4.1.7", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.7.tgz", + "integrity": "sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0", + "has-symbols": "^1.1.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.entries": { + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.9.tgz", + "integrity": "sha512-8u/hfXFRBD1O0hPUjioLhoWFHRmt6tKA4/vZPyckBr18l1KE9uHrFaFaUi8MDRTpi4uak2goyPTSNJLXX2k2Hw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.fromentries": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.8.tgz", + "integrity": "sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.groupby": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/object.groupby/-/object.groupby-1.0.3.tgz", + "integrity": "sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.values": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.2.1.tgz", + "integrity": "sha512-gXah6aZrcUxjWg2zR2MwouP2eHlCBzdV4pygudehaKXSGW4v2AsRQUK+lwwXhii6KFZcunEnmSUoYp5CXibxtA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/onetime": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz", + "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "mimic-fn": "^4.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/open": { + "version": "8.4.2", + "resolved": "https://registry.npmjs.org/open/-/open-8.4.2.tgz", + "integrity": "sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-lazy-prop": "^2.0.0", + "is-docker": "^2.1.1", + "is-wsl": "^2.2.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/optionator": { + "version": "0.9.4", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", + "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", + "dev": true, + "license": "MIT", + "dependencies": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.5" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/outvariant": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/outvariant/-/outvariant-1.4.3.tgz", + "integrity": "sha512-+Sl2UErvtsoajRDKCE5/dBz4DIvHXQQnAxtQTF04OJxY0+DyZXSo5P5Bb7XYWOh81syohlYL24hbDwxedPUJCA==", + "dev": true, + "license": "MIT" + }, + "node_modules/own-keys": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/own-keys/-/own-keys-1.0.1.tgz", + "integrity": "sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==", + "dev": true, + "license": "MIT", + "dependencies": { + "get-intrinsic": "^1.2.6", + "object-keys": "^1.1.1", + "safe-push-apply": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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, + "license": "MIT", + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "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, + "license": "MIT", + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/package-json-from-dist": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz", + "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==", + "dev": true, + "license": "BlueOak-1.0.0" + }, + "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, + "license": "MIT", + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "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, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "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, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true, + "license": "MIT" + }, + "node_modules/path-scurry": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", + "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "lru-cache": "^10.2.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + }, + "engines": { + "node": ">=16 || 14 >=14.18" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/path-scurry/node_modules/lru-cache": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/path-to-regexp": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-6.3.0.tgz", + "integrity": "sha512-Yhpw4T9C6hPpgPeA28us07OJeqZ5EzQTkbfwuhsUg0c237RomFoETJgmp2sa3F/41gfLE6G5cqcYwznmeEeOlQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/pathval": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pathval/-/pathval-2.0.1.tgz", + "integrity": "sha512-//nshmD55c46FuFw26xV/xFAaB5HF9Xdap7HJBBnrKdAd6/GxDBaNA1870O79+9ueg61cZLSVc+OaFlfmObYVQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 14.16" + } + }, + "node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "dev": true, + "license": "ISC" + }, + "node_modules/picomatch": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", + "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pidtree": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/pidtree/-/pidtree-0.6.0.tgz", + "integrity": "sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g==", + "dev": true, + "license": "MIT", + "bin": { + "pidtree": "bin/pidtree.js" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/pirates": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.7.tgz", + "integrity": "sha512-TfySrs/5nm8fQJDcBDuUng3VOUKsd7S+zqvbOTiGXHfxX4wK31ard+hoNuvkicM/2YFzlpDgABOevKSsB4G/FA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 6" + } + }, + "node_modules/polished": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/polished/-/polished-4.3.1.tgz", + "integrity": "sha512-OBatVyC/N7SCW/FaDHrSd+vn0o5cS855TOmYi4OkdWUMSJCET/xip//ch8xGUvtr3i44X9LVyWwQlRMTN3pwSA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.17.8" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/possible-typed-array-names": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.1.0.tgz", + "integrity": "sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/postcss": { + "version": "8.5.6", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.6.tgz", + "integrity": "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "nanoid": "^3.3.11", + "picocolors": "^1.1.1", + "source-map-js": "^1.2.1" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/postcss-import": { + "version": "15.1.0", + "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-15.1.0.tgz", + "integrity": "sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==", + "dev": true, + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.0.0", + "read-cache": "^1.0.0", + "resolve": "^1.1.7" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "postcss": "^8.0.0" + } + }, + "node_modules/postcss-js": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-4.0.1.tgz", + "integrity": "sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==", + "dev": true, + "license": "MIT", + "dependencies": { + "camelcase-css": "^2.0.1" + }, + "engines": { + "node": "^12 || ^14 || >= 16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + "peerDependencies": { + "postcss": "^8.4.21" + } + }, + "node_modules/postcss-load-config": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-4.0.2.tgz", + "integrity": "sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "lilconfig": "^3.0.0", + "yaml": "^2.3.4" + }, + "engines": { + "node": ">= 14" + }, + "peerDependencies": { + "postcss": ">=8.0.9", + "ts-node": ">=9.0.0" + }, + "peerDependenciesMeta": { + "postcss": { + "optional": true + }, + "ts-node": { + "optional": true + } + } + }, + "node_modules/postcss-nested": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-6.2.0.tgz", + "integrity": "sha512-HQbt28KulC5AJzG+cZtj9kvKB93CFCdLvog1WFLf1D+xmMvPGlBstkpTEZfK5+AN9hfJocyBFCNiqyS48bpgzQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "postcss-selector-parser": "^6.1.1" + }, + "engines": { + "node": ">=12.0" + }, + "peerDependencies": { + "postcss": "^8.2.14" + } + }, + "node_modules/postcss-selector-parser": { + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz", + "integrity": "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==", + "dev": true, + "license": "MIT", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-value-parser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", + "dev": true, + "license": "MIT" + }, + "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, + "license": "MIT", + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/prettier": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.6.2.tgz", + "integrity": "sha512-I7AIg5boAr5R0FFtJ6rCfD+LFsWHp81dolrFD8S79U9tb8Az2nGrJncnMSnys+bpQJfRUzqs9hnA81OAA3hCuQ==", + "dev": true, + "license": "MIT", + "bin": { + "prettier": "bin/prettier.cjs" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" + } + }, + "node_modules/prettier-linter-helpers": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz", + "integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-diff": "^1.1.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/pretty-format": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", + "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1", + "ansi-styles": "^5.0.0", + "react-is": "^17.0.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6.0" + } + }, + "node_modules/prop-types": { + "version": "15.8.1", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", + "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.13.1" + } + }, + "node_modules/prop-types/node_modules/react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", + "license": "MIT" + }, + "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, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/qs": { + "version": "6.14.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.14.0.tgz", + "integrity": "sha512-YWWTjgABSKcvs/nWBi9PycY/JiPJqOD4JA6o9Sej2AtvSGarXxKC3OQSk4pAarbdQlKAh5D4FCQkJNkW+GAn3w==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "side-channel": "^1.1.0" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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" + } + ], + "license": "MIT" + }, + "node_modules/ramda": { + "version": "0.29.0", + "resolved": "https://registry.npmjs.org/ramda/-/ramda-0.29.0.tgz", + "integrity": "sha512-BBea6L67bYLtdbOqfp8f58fPMqEwx0doL+pAi8TZyp2YWz8R9G8z9x75CZI8W+ftqhFHCpEX2cRnUUXK130iKA==", + "dev": true, + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/ramda" + } + }, + "node_modules/react": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react/-/react-18.3.1.tgz", + "integrity": "sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==", + "license": "MIT", + "dependencies": { + "loose-envify": "^1.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-day-picker": { + "version": "8.10.1", + "resolved": "https://registry.npmjs.org/react-day-picker/-/react-day-picker-8.10.1.tgz", + "integrity": "sha512-TMx7fNbhLk15eqcMt+7Z7S2KF7mfTId/XJDjKE8f+IUcFn0l08/kI4FiYTL/0yuOLmEcbR4Fwe3GJf/NiiMnPA==", + "license": "MIT", + "funding": { + "type": "individual", + "url": "https://github.com/sponsors/gpbl" + }, + "peerDependencies": { + "date-fns": "^2.28.0 || ^3.0.0", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + } + }, + "node_modules/react-docgen": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/react-docgen/-/react-docgen-7.1.1.tgz", + "integrity": "sha512-hlSJDQ2synMPKFZOsKo9Hi8WWZTC7POR8EmWvTSjow+VDgKzkmjQvFm2fk0tmRw+f0vTOIYKlarR0iL4996pdg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/core": "^7.18.9", + "@babel/traverse": "^7.18.9", + "@babel/types": "^7.18.9", + "@types/babel__core": "^7.18.0", + "@types/babel__traverse": "^7.18.0", + "@types/doctrine": "^0.0.9", + "@types/resolve": "^1.20.2", + "doctrine": "^3.0.0", + "resolve": "^1.22.1", + "strip-indent": "^4.0.0" + }, + "engines": { + "node": ">=16.14.0" + } + }, + "node_modules/react-docgen-typescript": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/react-docgen-typescript/-/react-docgen-typescript-2.4.0.tgz", + "integrity": "sha512-ZtAp5XTO5HRzQctjPU0ybY0RRCQO19X/8fxn3w7y2VVTUbGHDKULPTL4ky3vB05euSgG5NpALhEhDPvQ56wvXg==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "typescript": ">= 4.3.x" + } + }, + "node_modules/react-docgen/node_modules/doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/react-dom": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.3.1.tgz", + "integrity": "sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==", + "license": "MIT", + "dependencies": { + "loose-envify": "^1.1.0", + "scheduler": "^0.23.2" + }, + "peerDependencies": { + "react": "^18.3.1" + } + }, + "node_modules/react-hook-form": { + "version": "7.62.0", + "resolved": "https://registry.npmjs.org/react-hook-form/-/react-hook-form-7.62.0.tgz", + "integrity": "sha512-7KWFejc98xqG/F4bAxpL41NB3o1nnvQO1RWZT3TqRZYL8RryQETGfEdVnJN2fy1crCiBLLjkRBVK05j24FxJGA==", + "license": "MIT", + "engines": { + "node": ">=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/react-hook-form" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17 || ^18 || ^19" + } + }, + "node_modules/react-hot-toast": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/react-hot-toast/-/react-hot-toast-2.6.0.tgz", + "integrity": "sha512-bH+2EBMZ4sdyou/DPrfgIouFpcRLCJ+HoCA32UoAYHn6T3Ur5yfcDCeSr5mwldl6pFOsiocmrXMuoCJ1vV8bWg==", + "license": "MIT", + "dependencies": { + "csstype": "^3.1.3", + "goober": "^2.1.16" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "react": ">=16", + "react-dom": ">=16" + } + }, + "node_modules/react-is": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", + "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", + "dev": true, + "license": "MIT" + }, + "node_modules/react-refresh": { + "version": "0.17.0", + "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.17.0.tgz", + "integrity": "sha512-z6F7K9bV85EfseRCp2bzrpyQ0Gkw1uLoCel9XBVWPg/TjRj94SkJzUTGfOa4bs7iJvBWtQG0Wq7wnI0syw3EBQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-remove-scroll": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/react-remove-scroll/-/react-remove-scroll-2.7.1.tgz", + "integrity": "sha512-HpMh8+oahmIdOuS5aFKKY6Pyog+FNaZV/XyJOq7b4YFwsFHe5yYfdbIalI4k3vU2nSDql7YskmUseHsRrJqIPA==", + "license": "MIT", + "dependencies": { + "react-remove-scroll-bar": "^2.3.7", + "react-style-singleton": "^2.2.3", + "tslib": "^2.1.0", + "use-callback-ref": "^1.3.3", + "use-sidecar": "^1.1.3" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/react-remove-scroll-bar": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/react-remove-scroll-bar/-/react-remove-scroll-bar-2.3.8.tgz", + "integrity": "sha512-9r+yi9+mgU33AKcj6IbT9oRCO78WriSj6t/cF8DWBZJ9aOGPOTEDvdUDz1FwKim7QXWwmHqtdHnRJfhAxEG46Q==", + "license": "MIT", + "dependencies": { + "react-style-singleton": "^2.2.2", + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/react-router": { + "version": "6.30.1", + "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.30.1.tgz", + "integrity": "sha512-X1m21aEmxGXqENEPG3T6u0Th7g0aS4ZmoNynhbs+Cn+q+QGTLt+d5IQ2bHAXKzKcxGJjxACpVbnYQSCRcfxHlQ==", + "license": "MIT", + "dependencies": { + "@remix-run/router": "1.23.0" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "react": ">=16.8" + } + }, + "node_modules/react-router-dom": { + "version": "6.30.1", + "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.30.1.tgz", + "integrity": "sha512-llKsgOkZdbPU1Eg3zK8lCn+sjD9wMRZZPuzmdWWX5SUs8OFkN5HnFVC0u5KMeMaC9aoancFI/KoLuKPqN+hxHw==", + "license": "MIT", + "dependencies": { + "@remix-run/router": "1.23.0", + "react-router": "6.30.1" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "react": ">=16.8", + "react-dom": ">=16.8" + } + }, + "node_modules/react-style-singleton": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/react-style-singleton/-/react-style-singleton-2.2.3.tgz", + "integrity": "sha512-b6jSvxvVnyptAiLjbkWLE/lOnR4lfTtDAl+eUC7RZy+QQWc6wRzIV2CE6xBuMmDxc2qIihtDCZD5NPOFl7fRBQ==", + "license": "MIT", + "dependencies": { + "get-nonce": "^1.0.0", + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/read-cache": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", + "integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==", + "dev": true, + "license": "MIT", + "dependencies": { + "pify": "^2.3.0" + } + }, + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "license": "MIT", + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/readdirp/node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/recast": { + "version": "0.23.11", + "resolved": "https://registry.npmjs.org/recast/-/recast-0.23.11.tgz", + "integrity": "sha512-YTUo+Flmw4ZXiWfQKGcwwc11KnoRAYgzAE2E7mXKCjSviTKShtxBsN6YUUBB2gtaBzKzeKunxhUwNHQuRryhWA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ast-types": "^0.16.1", + "esprima": "~4.0.0", + "source-map": "~0.6.1", + "tiny-invariant": "^1.3.3", + "tslib": "^2.0.1" + }, + "engines": { + "node": ">= 4" + } + }, + "node_modules/redent": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz", + "integrity": "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==", + "dev": true, + "license": "MIT", + "dependencies": { + "indent-string": "^4.0.0", + "strip-indent": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/redent/node_modules/strip-indent": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", + "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "min-indent": "^1.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/reflect.getprototypeof": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.10.tgz", + "integrity": "sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.9", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.7", + "get-proto": "^1.0.1", + "which-builtin-type": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/regexp.prototype.flags": { + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.4.tgz", + "integrity": "sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-errors": "^1.3.0", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "set-function-name": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/requireindex": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/requireindex/-/requireindex-1.2.0.tgz", + "integrity": "sha512-L9jEkOi3ASd9PYit2cwRfyppc9NoABujTP8/5gFcbERmo5jUoAKovIC3fsF17pkTnGsrByysqX+Kxd2OTNI1ww==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.5" + } + }, + "node_modules/resolve": { + "version": "1.22.10", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.10.tgz", + "integrity": "sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-core-module": "^2.16.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "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==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1" + } + }, + "node_modules/restore-cursor": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-5.1.0.tgz", + "integrity": "sha512-oMA2dcrw6u0YfxJQXm342bFKX/E4sG9rbTzO9ptUcR/e8A33cHuvStiYOwH7fszkZlZ1z/ta9AAoPk2F4qIOHA==", + "dev": true, + "license": "MIT", + "dependencies": { + "onetime": "^7.0.0", + "signal-exit": "^4.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/restore-cursor/node_modules/onetime": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-7.0.0.tgz", + "integrity": "sha512-VXJjc87FScF88uafS3JllDgvAm+c/Slfz06lorj2uAY34rlUu0Nt+v8wreiImcrgAjjIHp1rXpTDlLOGw29WwQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "mimic-function": "^5.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/reusify": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz", + "integrity": "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==", + "dev": true, + "license": "MIT", + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rfdc": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.4.1.tgz", + "integrity": "sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==", + "dev": true, + "license": "MIT" + }, + "node_modules/rollup": { + "version": "4.50.1", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.50.1.tgz", + "integrity": "sha512-78E9voJHwnXQMiQdiqswVLZwJIzdBKJ1GdI5Zx6XwoFKUIk09/sSrr+05QFzvYb8q6Y9pPV45zzDuYa3907TZA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "1.0.8" + }, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=18.0.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "@rollup/rollup-android-arm-eabi": "4.50.1", + "@rollup/rollup-android-arm64": "4.50.1", + "@rollup/rollup-darwin-arm64": "4.50.1", + "@rollup/rollup-darwin-x64": "4.50.1", + "@rollup/rollup-freebsd-arm64": "4.50.1", + "@rollup/rollup-freebsd-x64": "4.50.1", + "@rollup/rollup-linux-arm-gnueabihf": "4.50.1", + "@rollup/rollup-linux-arm-musleabihf": "4.50.1", + "@rollup/rollup-linux-arm64-gnu": "4.50.1", + "@rollup/rollup-linux-arm64-musl": "4.50.1", + "@rollup/rollup-linux-loongarch64-gnu": "4.50.1", + "@rollup/rollup-linux-ppc64-gnu": "4.50.1", + "@rollup/rollup-linux-riscv64-gnu": "4.50.1", + "@rollup/rollup-linux-riscv64-musl": "4.50.1", + "@rollup/rollup-linux-s390x-gnu": "4.50.1", + "@rollup/rollup-linux-x64-gnu": "4.50.1", + "@rollup/rollup-linux-x64-musl": "4.50.1", + "@rollup/rollup-openharmony-arm64": "4.50.1", + "@rollup/rollup-win32-arm64-msvc": "4.50.1", + "@rollup/rollup-win32-ia32-msvc": "4.50.1", + "@rollup/rollup-win32-x64-msvc": "4.50.1", + "fsevents": "~2.3.2" + } + }, + "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" + } + ], + "license": "MIT", + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/safe-array-concat": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.3.tgz", + "integrity": "sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.2", + "get-intrinsic": "^1.2.6", + "has-symbols": "^1.1.0", + "isarray": "^2.0.5" + }, + "engines": { + "node": ">=0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safe-push-apply": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/safe-push-apply/-/safe-push-apply-1.0.0.tgz", + "integrity": "sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "isarray": "^2.0.5" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safe-regex-test": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.1.0.tgz", + "integrity": "sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "is-regex": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/scheduler": { + "version": "0.23.2", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.2.tgz", + "integrity": "sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==", + "license": "MIT", + "dependencies": { + "loose-envify": "^1.1.0" + } + }, + "node_modules/semver": { + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", + "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/set-function-length": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", + "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/set-function-name": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz", + "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "functions-have-names": "^1.2.3", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/set-proto": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/set-proto/-/set-proto-1.0.0.tgz", + "integrity": "sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw==", + "dev": true, + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "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, + "license": "MIT", + "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, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/side-channel": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", + "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3", + "side-channel-list": "^1.0.0", + "side-channel-map": "^1.0.1", + "side-channel-weakmap": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-list": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz", + "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-map": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz", + "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-weakmap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", + "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3", + "side-channel-map": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/slice-ansi": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-5.0.0.tgz", + "integrity": "sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^6.0.0", + "is-fullwidth-code-point": "^4.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/slice-ansi?sponsor=1" + } + }, + "node_modules/slice-ansi/node_modules/ansi-styles": { + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.3.tgz", + "integrity": "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "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==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-js": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/split2": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/split2/-/split2-4.2.0.tgz", + "integrity": "sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">= 10.x" + } + }, + "node_modules/stable-hash": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/stable-hash/-/stable-hash-0.0.5.tgz", + "integrity": "sha512-+L3ccpzibovGXFK+Ap/f8LOS0ahMrHTf3xu7mMLSpEGU0EO9ucaysSylKo9eRDFNhWve/y275iPmIZ4z39a9iA==", + "dev": true, + "license": "MIT" + }, + "node_modules/statuses": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.2.tgz", + "integrity": "sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/stop-iteration-iterator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/stop-iteration-iterator/-/stop-iteration-iterator-1.1.0.tgz", + "integrity": "sha512-eLoXW/DHyl62zxY4SCaIgnRhuMr6ri4juEYARS8E6sCEqzKpOiE521Ucofdx+KnDZl5xmvGYaaKCk5FEOxJCoQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "internal-slot": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/storybook": { + "version": "8.6.14", + "resolved": "https://registry.npmjs.org/storybook/-/storybook-8.6.14.tgz", + "integrity": "sha512-sVKbCj/OTx67jhmauhxc2dcr1P+yOgz/x3h0krwjyMgdc5Oubvxyg4NYDZmzAw+ym36g/lzH8N0Ccp4dwtdfxw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@storybook/core": "8.6.14" + }, + "bin": { + "getstorybook": "bin/index.cjs", + "sb": "bin/index.cjs", + "storybook": "bin/index.cjs" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + }, + "peerDependencies": { + "prettier": "^2 || ^3" + }, + "peerDependenciesMeta": { + "prettier": { + "optional": true + } + } + }, + "node_modules/strict-event-emitter": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/strict-event-emitter/-/strict-event-emitter-0.5.1.tgz", + "integrity": "sha512-vMgjE/GGEPEFnhFub6pa4FmJBRBVOLpIII2hvCZ8Kzb7K0hlHo7mQv6xYrBvCL2LtAIBwFUK8wvuJgTVSQ5MFQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/string-argv": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/string-argv/-/string-argv-0.3.2.tgz", + "integrity": "sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.6.19" + } + }, + "node_modules/string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "dev": true, + "license": "MIT", + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/string-width-cjs": { + "name": "string-width", + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": 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/string-width-cjs/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true, + "license": "MIT" + }, + "node_modules/string-width-cjs/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width-cjs/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, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/string.prototype.includes": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/string.prototype.includes/-/string.prototype.includes-2.0.1.tgz", + "integrity": "sha512-o7+c9bW6zpAdJHTtujeePODAhkuicdAryFsfVKwA+wGw89wJ4GTY484WTucM9hLtDEOpOvI+aHnzqnC5lHp4Rg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.3" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/string.prototype.matchall": { + "version": "4.0.12", + "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.12.tgz", + "integrity": "sha512-6CC9uyBL+/48dYizRf7H7VAYCMCNTBeM78x/VTUe9bFEaxBepPJDa1Ow99LqI/1yF7kuy7Q3cQsYMrcjGUcskA==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.6", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.6", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "internal-slot": "^1.1.0", + "regexp.prototype.flags": "^1.5.3", + "set-function-name": "^2.0.2", + "side-channel": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.repeat": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/string.prototype.repeat/-/string.prototype.repeat-1.0.0.tgz", + "integrity": "sha512-0u/TldDbKD8bFCQ/4f5+mNRrXwZ8hg2w7ZR8wa16e8z9XpePWl3eGEcUD0OXpEH/VJH/2G3gjUtR3ZOiBe2S/w==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5" + } + }, + "node_modules/string.prototype.trim": { + "version": "1.2.10", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.10.tgz", + "integrity": "sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.2", + "define-data-property": "^1.1.4", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.5", + "es-object-atoms": "^1.0.0", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimend": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.9.tgz", + "integrity": "sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.2", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimstart": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz", + "integrity": "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/strip-ansi": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.2.tgz", + "integrity": "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/strip-ansi-cjs": { + "name": "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, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi/node_modules/ansi-regex": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz", + "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/strip-final-newline": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz", + "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/strip-indent": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-4.0.0.tgz", + "integrity": "sha512-mnVSV2l+Zv6BLpSD/8V87CW/y9EmmbYzGCIavsnsI6/nwn26DwffM/yztm30Z/I2DY9wdS3vXVCMnHDgZaVNoA==", + "dev": true, + "license": "MIT", + "dependencies": { + "min-indent": "^1.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "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, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/sucrase": { + "version": "3.35.0", + "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.35.0.tgz", + "integrity": "sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.2", + "commander": "^4.0.0", + "glob": "^10.3.10", + "lines-and-columns": "^1.1.6", + "mz": "^2.7.0", + "pirates": "^4.0.1", + "ts-interface-checker": "^0.1.9" + }, + "bin": { + "sucrase": "bin/sucrase", + "sucrase-node": "bin/sucrase-node" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/sucrase/node_modules/commander": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", + "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 6" + } + }, + "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, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/synchronous-promise": { + "version": "2.0.17", + "resolved": "https://registry.npmjs.org/synchronous-promise/-/synchronous-promise-2.0.17.tgz", + "integrity": "sha512-AsS729u2RHUfEra9xJrE39peJcc2stq2+poBXX8bcM08Y6g9j/i/PUzwNQqkaJde7Ntg1TO7bSREbR5sdosQ+g==", + "dev": true, + "license": "BSD-3-Clause" + }, + "node_modules/synckit": { + "version": "0.11.11", + "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.11.11.tgz", + "integrity": "sha512-MeQTA1r0litLUf0Rp/iisCaL8761lKAZHaimlbGK4j0HysC4PLfqygQj9srcs0m2RdtDYnF8UuYyKpbjHYp7Jw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@pkgr/core": "^0.2.9" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/synckit" + } + }, + "node_modules/tailwind-merge": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/tailwind-merge/-/tailwind-merge-2.6.0.tgz", + "integrity": "sha512-P+Vu1qXfzediirmHOC3xKGAYeZtPcV9g76X+xg2FD4tYgR71ewMA35Y3sCz3zhiN/dwefRpJX0yBcgwi1fXNQA==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/dcastil" + } + }, + "node_modules/tailwindcss": { + "version": "3.4.17", + "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.17.tgz", + "integrity": "sha512-w33E2aCvSDP0tW9RZuNXadXlkHXqFzSkQew/aIa2i/Sj8fThxwovwlXHSPXTbAHwEIhBFXAedUhP2tueAKP8Og==", + "dev": true, + "license": "MIT", + "dependencies": { + "@alloc/quick-lru": "^5.2.0", + "arg": "^5.0.2", + "chokidar": "^3.6.0", + "didyoumean": "^1.2.2", + "dlv": "^1.1.3", + "fast-glob": "^3.3.2", + "glob-parent": "^6.0.2", + "is-glob": "^4.0.3", + "jiti": "^1.21.6", + "lilconfig": "^3.1.3", + "micromatch": "^4.0.8", + "normalize-path": "^3.0.0", + "object-hash": "^3.0.0", + "picocolors": "^1.1.1", + "postcss": "^8.4.47", + "postcss-import": "^15.1.0", + "postcss-js": "^4.0.1", + "postcss-load-config": "^4.0.2", + "postcss-nested": "^6.2.0", + "postcss-selector-parser": "^6.1.2", + "resolve": "^1.22.8", + "sucrase": "^3.35.0" + }, + "bin": { + "tailwind": "lib/cli.js", + "tailwindcss": "lib/cli.js" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/tailwindcss-animate": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/tailwindcss-animate/-/tailwindcss-animate-1.0.7.tgz", + "integrity": "sha512-bl6mpH3T7I3UFxuvDEXLxy/VuFxBk5bbzplh7tXI68mwMokNYd1t9qPBHlnyTwfa4JGC4zP516I1hYYtQ/vspA==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "tailwindcss": ">=3.0.0 || insiders" + } + }, + "node_modules/tailwindcss/node_modules/jiti": { + "version": "1.21.7", + "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.7.tgz", + "integrity": "sha512-/imKNG4EbWNrVjoNC/1H5/9GFy+tqjGBHCaSsN+P2RnPqjsLmv6UD3Ej+Kj8nBWaRAwyk7kK5ZUc+OEatnTR3A==", + "dev": true, + "license": "MIT", + "bin": { + "jiti": "bin/jiti.js" + } + }, + "node_modules/telejson": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/telejson/-/telejson-7.2.0.tgz", + "integrity": "sha512-1QTEcJkJEhc8OnStBx/ILRu5J2p0GjvWsBx56bmZRqnrkdBMUe+nX92jxV+p3dB4CP6PZCdJMQJwCggkNBMzkQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "memoizerific": "^1.11.3" + } + }, + "node_modules/text-extensions": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/text-extensions/-/text-extensions-2.4.0.tgz", + "integrity": "sha512-te/NtwBwfiNRLf9Ijqx3T0nlqZiQ2XrrtBvu+cLL8ZRrGkO0NHTug8MYFKyoSrv/sHTaSKfilUkizV6XhxMJ3g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/thenify": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz", + "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==", + "dev": true, + "license": "MIT", + "dependencies": { + "any-promise": "^1.0.0" + } + }, + "node_modules/thenify-all": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz", + "integrity": "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==", + "dev": true, + "license": "MIT", + "dependencies": { + "thenify": ">= 3.1.0 < 4" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", + "dev": true, + "license": "MIT" + }, + "node_modules/tiny-invariant": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.3.3.tgz", + "integrity": "sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg==", + "dev": true, + "license": "MIT" + }, + "node_modules/tinyexec": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-1.0.1.tgz", + "integrity": "sha512-5uC6DDlmeqiOwCPmK9jMSdOuZTh8bU39Ys6yidB+UTt5hfZUPGAypSgFRiEp+jbi9qH40BLDvy85jIU88wKSqw==", + "dev": true, + "license": "MIT" + }, + "node_modules/tinyglobby": { + "version": "0.2.15", + "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.15.tgz", + "integrity": "sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "fdir": "^6.5.0", + "picomatch": "^4.0.3" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/SuperchupuDev" + } + }, + "node_modules/tinyrainbow": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/tinyrainbow/-/tinyrainbow-1.2.0.tgz", + "integrity": "sha512-weEDEq7Z5eTHPDh4xjX789+fHfF+P8boiFB+0vbWzpbnbsEr/GRaohi/uMKxg8RZMXnl1ItAi/IUHWMsjDV7kQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/tinyspy": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/tinyspy/-/tinyspy-3.0.2.tgz", + "integrity": "sha512-n1cw8k1k0x4pgA2+9XrOkFydTerNcJ1zWCO5Nn9scWHTD+5tp8dghT2x1uduQePZTZgd3Tupf+x9BxJjeJi77Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/tldts": { + "version": "7.0.13", + "resolved": "https://registry.npmjs.org/tldts/-/tldts-7.0.13.tgz", + "integrity": "sha512-z/SgnxiICGb7Gli0z7ci9BZdjy1tQORUbdmzEUA7NbIJKWhdONn78Ji8gV0PAGfHPyEd+I+W2rMzhLjWkv2Olg==", + "dev": true, + "license": "MIT", + "dependencies": { + "tldts-core": "^7.0.13" + }, + "bin": { + "tldts": "bin/cli.js" + } + }, + "node_modules/tldts-core": { + "version": "7.0.13", + "resolved": "https://registry.npmjs.org/tldts-core/-/tldts-core-7.0.13.tgz", + "integrity": "sha512-Td0LeWLgXJGsikI4mO82fRexgPCEyTcwWiXJERF/GBHX3Dm+HQq/wx4HnYowCbiwQ8d+ENLZc+ktbZw8H+0oEA==", + "dev": true, + "license": "MIT" + }, + "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, + "license": "MIT", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/tough-cookie": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-6.0.0.tgz", + "integrity": "sha512-kXuRi1mtaKMrsLUxz3sQYvVl37B0Ns6MzfrtV5DvJceE9bPyspOqk9xxv7XbZWcfLWbFmm997vl83qUWVJA64w==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "tldts": "^7.0.5" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/ts-api-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.1.0.tgz", + "integrity": "sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18.12" + }, + "peerDependencies": { + "typescript": ">=4.8.4" + } + }, + "node_modules/ts-dedent": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/ts-dedent/-/ts-dedent-2.2.0.tgz", + "integrity": "sha512-q5W7tVM71e2xjHZTlgfTDoPF/SmqKG5hddq9SzR49CH2hayqRKJtQ4mtRlSxKaJlR/+9rEM+mnBHf7I2/BQcpQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.10" + } + }, + "node_modules/ts-interface-checker": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz", + "integrity": "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/tsconfig-paths": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-4.2.0.tgz", + "integrity": "sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg==", + "dev": true, + "license": "MIT", + "dependencies": { + "json5": "^2.2.2", + "minimist": "^1.2.6", + "strip-bom": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "license": "0BSD" + }, + "node_modules/tsutils": { + "version": "3.21.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", + "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", + "dev": true, + "license": "MIT", + "dependencies": { + "tslib": "^1.8.1" + }, + "engines": { + "node": ">= 6" + }, + "peerDependencies": { + "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta" + } + }, + "node_modules/tsutils/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true, + "license": "0BSD" + }, + "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, + "license": "MIT", + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/type-fest": { + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz", + "integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==", + "dev": true, + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=12.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/typed-array-buffer": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.3.tgz", + "integrity": "sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "is-typed-array": "^1.1.14" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/typed-array-byte-length": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.3.tgz", + "integrity": "sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "for-each": "^0.3.3", + "gopd": "^1.2.0", + "has-proto": "^1.2.0", + "is-typed-array": "^1.1.14" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-byte-offset": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.4.tgz", + "integrity": "sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.8", + "for-each": "^0.3.3", + "gopd": "^1.2.0", + "has-proto": "^1.2.0", + "is-typed-array": "^1.1.15", + "reflect.getprototypeof": "^1.0.9" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-length": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.7.tgz", + "integrity": "sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "is-typed-array": "^1.1.13", + "possible-typed-array-names": "^1.0.0", + "reflect.getprototypeof": "^1.0.6" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typescript": { + "version": "5.9.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.2.tgz", + "integrity": "sha512-CWBzXQrc/qOkhidw1OzBTQuYRbfyxDXJMVJ1XNwUHGROVmuaeiEm3OslpZ1RV96d7SKKjZKrSJu3+t/xlw3R9A==", + "dev": true, + "license": "Apache-2.0", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/typescript-eslint": { + "version": "8.43.0", + "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.43.0.tgz", + "integrity": "sha512-FyRGJKUGvcFekRRcBKFBlAhnp4Ng8rhe8tuvvkR9OiU0gfd4vyvTRQHEckO6VDlH57jbeUQem2IpqPq9kLJH+w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/eslint-plugin": "8.43.0", + "@typescript-eslint/parser": "8.43.0", + "@typescript-eslint/typescript-estree": "8.43.0", + "@typescript-eslint/utils": "8.43.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <6.0.0" + } + }, + "node_modules/unbox-primitive": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.1.0.tgz", + "integrity": "sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "has-bigints": "^1.0.2", + "has-symbols": "^1.1.0", + "which-boxed-primitive": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/undici-types": { + "version": "7.10.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.10.0.tgz", + "integrity": "sha512-t5Fy/nfn+14LuOc2KNYg75vZqClpAiqscVvMygNnlsHBFpSXdJaYtXMcdNLpl/Qvc3P2cB3s6lOV51nqsFq4ag==", + "dev": true, + "license": "MIT" + }, + "node_modules/unicorn-magic": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/unicorn-magic/-/unicorn-magic-0.1.0.tgz", + "integrity": "sha512-lRfVq8fE8gz6QMBuDM6a+LO3IAzTi05H6gCVaUpir2E1Rwpo4ZUog45KpNXKC/Mn3Yb9UDuHumeFTo9iV/D9FQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/unplugin": { + "version": "1.16.1", + "resolved": "https://registry.npmjs.org/unplugin/-/unplugin-1.16.1.tgz", + "integrity": "sha512-4/u/j4FrCKdi17jaxuJA0jClGxB1AvU2hw/IuayPc4ay1XGaJs/rbb4v5WKwAjNifjmXK9PIFyuPiaK8azyR9w==", + "dev": true, + "license": "MIT", + "dependencies": { + "acorn": "^8.14.0", + "webpack-virtual-modules": "^0.6.2" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/unrs-resolver": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/unrs-resolver/-/unrs-resolver-1.11.1.tgz", + "integrity": "sha512-bSjt9pjaEBnNiGgc9rUiHGKv5l4/TGzDmYw3RhnkJGtLhbnnA/5qJj7x3dNDCRx/PJxu774LlH8lCOlB4hEfKg==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "dependencies": { + "napi-postinstall": "^0.3.0" + }, + "funding": { + "url": "https://opencollective.com/unrs-resolver" + }, + "optionalDependencies": { + "@unrs/resolver-binding-android-arm-eabi": "1.11.1", + "@unrs/resolver-binding-android-arm64": "1.11.1", + "@unrs/resolver-binding-darwin-arm64": "1.11.1", + "@unrs/resolver-binding-darwin-x64": "1.11.1", + "@unrs/resolver-binding-freebsd-x64": "1.11.1", + "@unrs/resolver-binding-linux-arm-gnueabihf": "1.11.1", + "@unrs/resolver-binding-linux-arm-musleabihf": "1.11.1", + "@unrs/resolver-binding-linux-arm64-gnu": "1.11.1", + "@unrs/resolver-binding-linux-arm64-musl": "1.11.1", + "@unrs/resolver-binding-linux-ppc64-gnu": "1.11.1", + "@unrs/resolver-binding-linux-riscv64-gnu": "1.11.1", + "@unrs/resolver-binding-linux-riscv64-musl": "1.11.1", + "@unrs/resolver-binding-linux-s390x-gnu": "1.11.1", + "@unrs/resolver-binding-linux-x64-gnu": "1.11.1", + "@unrs/resolver-binding-linux-x64-musl": "1.11.1", + "@unrs/resolver-binding-wasm32-wasi": "1.11.1", + "@unrs/resolver-binding-win32-arm64-msvc": "1.11.1", + "@unrs/resolver-binding-win32-ia32-msvc": "1.11.1", + "@unrs/resolver-binding-win32-x64-msvc": "1.11.1" + } + }, + "node_modules/update-browserslist-db": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.3.tgz", + "integrity": "sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "escalade": "^3.2.0", + "picocolors": "^1.1.1" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "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, + "license": "BSD-2-Clause", + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/use-callback-ref": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/use-callback-ref/-/use-callback-ref-1.3.3.tgz", + "integrity": "sha512-jQL3lRnocaFtu3V00JToYz/4QkNWswxijDaCVNZRiRTO3HQDLsdu1ZtmIUvV4yPp+rvWm5j0y0TG/S61cuijTg==", + "license": "MIT", + "dependencies": { + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/use-sidecar": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/use-sidecar/-/use-sidecar-1.1.3.tgz", + "integrity": "sha512-Fedw0aZvkhynoPYlA5WXrMCAMm+nSWdZt6lzJQ7Ok8S6Q+VsHmHpRWndVRJ8Be0ZbkfPc5LRYH+5XrzXcEeLRQ==", + "license": "MIT", + "dependencies": { + "detect-node-es": "^1.1.0", + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/use-sync-external-store": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.5.0.tgz", + "integrity": "sha512-Rb46I4cGGVBmjamjphe8L/UnvJD+uPPtTkNvX5mZgqdbavhI4EbgIWJiIHXJ8bc/i9EQGPRh4DwEURJ552Do0A==", + "license": "MIT", + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/util": { + "version": "0.12.5", + "resolved": "https://registry.npmjs.org/util/-/util-0.12.5.tgz", + "integrity": "sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==", + "dev": true, + "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "is-arguments": "^1.0.4", + "is-generator-function": "^1.0.7", + "is-typed-array": "^1.1.3", + "which-typed-array": "^1.1.2" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "dev": true, + "license": "MIT" + }, + "node_modules/uuid": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", + "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", + "dev": true, + "funding": [ + "https://github.com/sponsors/broofa", + "https://github.com/sponsors/ctavan" + ], + "license": "MIT", + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/validator": { + "version": "13.15.15", + "resolved": "https://registry.npmjs.org/validator/-/validator-13.15.15.tgz", + "integrity": "sha512-BgWVbCI72aIQy937xbawcs+hrVaN/CZ2UwutgaJ36hGqRrLNM+f5LUT/YPRbo8IV/ASeFzXszezV+y2+rq3l8A==", + "license": "MIT", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/vite": { + "version": "5.4.20", + "resolved": "https://registry.npmjs.org/vite/-/vite-5.4.20.tgz", + "integrity": "sha512-j3lYzGC3P+B5Yfy/pfKNgVEg4+UtcIJcVRt2cDjIOmhLourAqPqf8P7acgxeiSgUB7E3p2P8/3gNIgDLpwzs4g==", + "dev": true, + "license": "MIT", + "dependencies": { + "esbuild": "^0.21.3", + "postcss": "^8.4.43", + "rollup": "^4.20.0" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^18.0.0 || >=20.0.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + }, + "peerDependencies": { + "@types/node": "^18.0.0 || >=20.0.0", + "less": "*", + "lightningcss": "^1.21.0", + "sass": "*", + "sass-embedded": "*", + "stylus": "*", + "sugarss": "*", + "terser": "^5.4.0" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "less": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "sass": { + "optional": true + }, + "sass-embedded": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + } + } + }, + "node_modules/vite/node_modules/@esbuild/aix-ppc64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz", + "integrity": "sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/android-arm": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.21.5.tgz", + "integrity": "sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/android-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.21.5.tgz", + "integrity": "sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/android-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.21.5.tgz", + "integrity": "sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/darwin-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.21.5.tgz", + "integrity": "sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/darwin-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.21.5.tgz", + "integrity": "sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/freebsd-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.21.5.tgz", + "integrity": "sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/freebsd-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.21.5.tgz", + "integrity": "sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/linux-arm": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.21.5.tgz", + "integrity": "sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/linux-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.21.5.tgz", + "integrity": "sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/linux-ia32": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.21.5.tgz", + "integrity": "sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/linux-loong64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.21.5.tgz", + "integrity": "sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/linux-mips64el": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.21.5.tgz", + "integrity": "sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==", + "cpu": [ + "mips64el" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/linux-ppc64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.21.5.tgz", + "integrity": "sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/linux-riscv64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.21.5.tgz", + "integrity": "sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/linux-s390x": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.21.5.tgz", + "integrity": "sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/linux-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.21.5.tgz", + "integrity": "sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/netbsd-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.21.5.tgz", + "integrity": "sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/openbsd-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.21.5.tgz", + "integrity": "sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/sunos-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.21.5.tgz", + "integrity": "sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/win32-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.21.5.tgz", + "integrity": "sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/win32-ia32": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.21.5.tgz", + "integrity": "sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/win32-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.21.5.tgz", + "integrity": "sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/esbuild": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.21.5.tgz", + "integrity": "sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.21.5", + "@esbuild/android-arm": "0.21.5", + "@esbuild/android-arm64": "0.21.5", + "@esbuild/android-x64": "0.21.5", + "@esbuild/darwin-arm64": "0.21.5", + "@esbuild/darwin-x64": "0.21.5", + "@esbuild/freebsd-arm64": "0.21.5", + "@esbuild/freebsd-x64": "0.21.5", + "@esbuild/linux-arm": "0.21.5", + "@esbuild/linux-arm64": "0.21.5", + "@esbuild/linux-ia32": "0.21.5", + "@esbuild/linux-loong64": "0.21.5", + "@esbuild/linux-mips64el": "0.21.5", + "@esbuild/linux-ppc64": "0.21.5", + "@esbuild/linux-riscv64": "0.21.5", + "@esbuild/linux-s390x": "0.21.5", + "@esbuild/linux-x64": "0.21.5", + "@esbuild/netbsd-x64": "0.21.5", + "@esbuild/openbsd-x64": "0.21.5", + "@esbuild/sunos-x64": "0.21.5", + "@esbuild/win32-arm64": "0.21.5", + "@esbuild/win32-ia32": "0.21.5", + "@esbuild/win32-x64": "0.21.5" + } + }, + "node_modules/webpack-virtual-modules": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/webpack-virtual-modules/-/webpack-virtual-modules-0.6.2.tgz", + "integrity": "sha512-66/V2i5hQanC51vBQKPH4aI8NMAcBW59FVBs+rC7eGHupMyfn34q7rZIE+ETlJ+XTevqfUhVVBgSUNSW2flEUQ==", + "dev": true, + "license": "MIT" + }, + "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, + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/which-boxed-primitive": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.1.1.tgz", + "integrity": "sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-bigint": "^1.1.0", + "is-boolean-object": "^1.2.1", + "is-number-object": "^1.1.1", + "is-string": "^1.1.1", + "is-symbol": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-builtin-type": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.2.1.tgz", + "integrity": "sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "function.prototype.name": "^1.1.6", + "has-tostringtag": "^1.0.2", + "is-async-function": "^2.0.0", + "is-date-object": "^1.1.0", + "is-finalizationregistry": "^1.1.0", + "is-generator-function": "^1.0.10", + "is-regex": "^1.2.1", + "is-weakref": "^1.0.2", + "isarray": "^2.0.5", + "which-boxed-primitive": "^1.1.0", + "which-collection": "^1.0.2", + "which-typed-array": "^1.1.16" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-collection": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.2.tgz", + "integrity": "sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-map": "^2.0.3", + "is-set": "^2.0.3", + "is-weakmap": "^2.0.2", + "is-weakset": "^2.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-typed-array": { + "version": "1.1.19", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.19.tgz", + "integrity": "sha512-rEvr90Bck4WZt9HHFC4DJMsjvu7x+r6bImz0/BrbWb7A2djJ8hnZMrWnHo9F8ssv0OMErasDhftrfROTyqSDrw==", + "dev": true, + "license": "MIT", + "dependencies": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", + "for-each": "^0.3.5", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/word-wrap": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/wrap-ansi": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs": { + "name": "wrap-ansi", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs/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, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true, + "license": "MIT" + }, + "node_modules/wrap-ansi-cjs/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": 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/wrap-ansi-cjs/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, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi/node_modules/ansi-styles": { + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.3.tgz", + "integrity": "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/ws": { + "version": "8.18.3", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.3.tgz", + "integrity": "sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=10" + } + }, + "node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true, + "license": "ISC" + }, + "node_modules/yaml": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.8.1.tgz", + "integrity": "sha512-lcYcMxX2PO9XMGvAJkJ3OsNMw+/7FKes7/hgerGUYWIoWu5j/+YQqcZr5JnPZWzOsEBgMbSbiSTn/dv/69Mkpw==", + "dev": true, + "license": "ISC", + "bin": { + "yaml": "bin.mjs" + }, + "engines": { + "node": ">= 14.6" + } + }, + "node_modules/yargs": { + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "dev": true, + "license": "MIT", + "dependencies": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/yargs/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true, + "license": "MIT" + }, + "node_modules/yargs/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/yargs/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": 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/yargs/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, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "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, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/yoctocolors-cjs": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/yoctocolors-cjs/-/yoctocolors-cjs-2.1.3.tgz", + "integrity": "sha512-U/PBtDf35ff0D8X8D0jfdzHYEPFxAI7jJlxZXwCSez5M3190m+QobIfh+sWDWSHMCWWJN2AWamkegn6vr6YBTw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/zod": { + "version": "3.25.76", + "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.76.tgz", + "integrity": "sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/colinhacks" + } + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 00000000..fea0d626 --- /dev/null +++ b/package.json @@ -0,0 +1,119 @@ +{ + "name": "idr-web", + "private": true, + "version": "0.0.0", + "scripts": { + "dev": "vite", + "build": "tsc && vite build", + "preview": "vite preview", + "prepare": "husky install", + "format": "prettier . --cache", + "format:ci": "prettier . --check", + "format:fix": "pnpm format --write", + "format:check": "pnpm format --check", + "lint": "eslint \"src/**/*.{ts,tsx}\" --cache --max-warnings 0", + "lint:ci": "eslint \"src/**/*.{ts,tsx}\" --max-warnings 0", + "lint:fix": "pnpm lint --fix", + "lint:check": "pnpm lint", + "lint:strict": "eslint src --ext .ts,.tsx --max-warnings 0 --cache false", + "type:check": "tsc --noEmit --project tsconfig.app.json", + "lint:staged": "lint-staged", + "storybook:dev": "storybook dev -p 6006", + "storybook:build": "storybook build -o docs-build", + "seed:mock": "node ./scripts/seed/index.mjs" + }, + "dependencies": { + "@hookform/resolvers": "^3.9.0", + "@radix-ui/react-alert-dialog": "^1.1.2", + "@radix-ui/react-avatar": "^1.1.1", + "@radix-ui/react-dialog": "^1.1.2", + "@radix-ui/react-dropdown-menu": "^2.1.2", + "@radix-ui/react-label": "^2.1.0", + "@radix-ui/react-popover": "^1.1.2", + "@radix-ui/react-scroll-area": "^1.2.6", + "@radix-ui/react-select": "^2.1.2", + "@radix-ui/react-slot": "^1.1.0", + "@radix-ui/react-tabs": "^1.1.1", + "@radix-ui/react-tooltip": "^1.1.3", + "@tanstack/react-query": "^5.59.15", + "@tanstack/react-table": "^8.20.5", + "axios": "^1.7.7", + "class-variance-authority": "^0.7.0", + "clsx": "^2.1.1", + "cmdk": "^1.0.0", + "date-fns": "^4.1.0", + "lucide-react": "^0.453.0", + "react": "^18.3.1", + "react-day-picker": "8.10.1", + "react-dom": "^18.3.1", + "react-hook-form": "^7.53.0", + "react-hot-toast": "^2.4.1", + "react-router-dom": "^6.27.0", + "tailwind-merge": "^2.5.4", + "validator": "^13.12.0", + "zod": "^3.23.8" + }, + "devDependencies": { + "@commitlint/config-conventional": "^19.5.0", + "@eslint/compat": "^1.2.1", + "@eslint/eslintrc": "^3.1.0", + "@eslint/js": "^9.13.0", + "@faker-js/faker": "^9.0.3", + "@storybook/addon-actions": "^8.3.6", + "@storybook/addon-essentials": "^8.3.6", + "@storybook/addon-interactions": "^8.3.6", + "@storybook/addon-links": "^8.3.6", + "@storybook/addon-themes": "^8.3.6", + "@storybook/preview-web": "^7.6.17", + "@storybook/react": "^8.3.6", + "@storybook/react-vite": "^8.3.6", + "@tanstack/eslint-plugin-query": "^5.59.7", + "@tanstack/react-query-devtools": "^5.59.15", + "@types/react": "^18.3.11", + "@types/react-dom": "^18.3.1", + "@types/validator": "^13.12.2", + "@typescript-eslint/eslint-plugin": "^8.10.0", + "@typescript-eslint/parser": "^8.10.0", + "@vitejs/plugin-react": "^4.3.2", + "autoprefixer": "^10.4.20", + "commitlint": "^19.5.0", + "eslint": "^9.13.0", + "eslint-config-airbnb": "^19.0.4", + "eslint-config-prettier": "^9.1.0", + "eslint-import-resolver-typescript": "^3.6.3", + "eslint-plugin-import": "^2.31.0", + "eslint-plugin-jsx-a11y": "^6.10.0", + "eslint-plugin-prettier": "^5.2.1", + "eslint-plugin-react-hooks": "^5.0.0", + "eslint-plugin-react-refresh": "^0.4.13", + "eslint-plugin-storybook": "^0.9.0", + "globals": "^15.11.0", + "husky": "^9.1.6", + "lint-staged": "^15.2.10", + "msw": "^2.4.11", + "postcss": "^8.4.47", + "prettier": "^3.3.3", + "storybook": "^8.3.6", + "tailwindcss": "^3.4.14", + "tailwindcss-animate": "^1.0.7", + "typescript": "^5.6.3", + "typescript-eslint": "^8.12.2", + "vite": "^5.4.9" + }, + "lint-staged": { + "*.{ts,tsx}": [ + "pnpm lint:check" + ], + "*.{json,js,jsx,ts,tsx,htm,html,md}": "pnpm format:check" + }, + "packageManager": "pnpm@9.4.0", + "engines": { + "node": ">=20.0.0", + "npm": ">=10.8.2" + }, + "msw": { + "workerDirectory": [ + "public" + ] + } +} diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml new file mode 100644 index 00000000..792499e9 --- /dev/null +++ b/pnpm-lock.yaml @@ -0,0 +1,9731 @@ +lockfileVersion: '9.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +importers: + + .: + dependencies: + '@hookform/resolvers': + specifier: ^3.9.0 + version: 3.9.0(react-hook-form@7.53.0(react@18.3.1)) + '@radix-ui/react-alert-dialog': + specifier: ^1.1.2 + version: 1.1.2(@types/react-dom@18.3.1)(@types/react@18.3.11)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-avatar': + specifier: ^1.1.1 + version: 1.1.1(@types/react-dom@18.3.1)(@types/react@18.3.11)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-dialog': + specifier: ^1.1.2 + version: 1.1.2(@types/react-dom@18.3.1)(@types/react@18.3.11)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-dropdown-menu': + specifier: ^2.1.2 + version: 2.1.2(@types/react-dom@18.3.1)(@types/react@18.3.11)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-label': + specifier: ^2.1.0 + version: 2.1.0(@types/react-dom@18.3.1)(@types/react@18.3.11)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-popover': + specifier: ^1.1.2 + version: 1.1.2(@types/react-dom@18.3.1)(@types/react@18.3.11)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-scroll-area': + specifier: ^1.2.6 + version: 1.2.6(@types/react-dom@18.3.1)(@types/react@18.3.11)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-select': + specifier: ^2.1.2 + version: 2.1.2(@types/react-dom@18.3.1)(@types/react@18.3.11)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-slot': + specifier: ^1.1.0 + version: 1.1.0(@types/react@18.3.11)(react@18.3.1) + '@radix-ui/react-tabs': + specifier: ^1.1.1 + version: 1.1.1(@types/react-dom@18.3.1)(@types/react@18.3.11)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-tooltip': + specifier: ^1.1.3 + version: 1.1.3(@types/react-dom@18.3.1)(@types/react@18.3.11)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@tanstack/react-query': + specifier: ^5.59.15 + version: 5.59.15(react@18.3.1) + '@tanstack/react-table': + specifier: ^8.20.5 + version: 8.20.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + axios: + specifier: ^1.7.7 + version: 1.7.7 + class-variance-authority: + specifier: ^0.7.0 + version: 0.7.0 + clsx: + specifier: ^2.1.1 + version: 2.1.1 + cmdk: + specifier: ^1.0.0 + version: 1.0.0(@types/react-dom@18.3.1)(@types/react@18.3.11)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + date-fns: + specifier: ^4.1.0 + version: 4.1.0 + lucide-react: + specifier: ^0.453.0 + version: 0.453.0(react@18.3.1) + react: + specifier: ^18.3.1 + version: 18.3.1 + react-day-picker: + specifier: 8.10.1 + version: 8.10.1(date-fns@4.1.0)(react@18.3.1) + react-dom: + specifier: ^18.3.1 + version: 18.3.1(react@18.3.1) + react-hook-form: + specifier: ^7.53.0 + version: 7.53.0(react@18.3.1) + react-hot-toast: + specifier: ^2.4.1 + version: 2.4.1(csstype@3.1.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react-router-dom: + specifier: ^6.27.0 + version: 6.27.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + tailwind-merge: + specifier: ^2.5.4 + version: 2.5.4 + validator: + specifier: ^13.12.0 + version: 13.12.0 + zod: + specifier: ^3.23.8 + version: 3.23.8 + devDependencies: + '@commitlint/config-conventional': + specifier: ^19.5.0 + version: 19.5.0 + '@eslint/compat': + specifier: ^1.2.1 + version: 1.2.1(eslint@9.13.0(jiti@1.21.6)) + '@eslint/eslintrc': + specifier: ^3.1.0 + version: 3.1.0 + '@eslint/js': + specifier: ^9.13.0 + version: 9.13.0 + '@faker-js/faker': + specifier: ^9.0.3 + version: 9.0.3 + '@storybook/addon-actions': + specifier: ^8.3.6 + version: 8.3.6(storybook@8.3.6) + '@storybook/addon-essentials': + specifier: ^8.3.6 + version: 8.3.6(storybook@8.3.6) + '@storybook/addon-interactions': + specifier: ^8.3.6 + version: 8.3.6(storybook@8.3.6) + '@storybook/addon-links': + specifier: ^8.3.6 + version: 8.3.6(react@18.3.1)(storybook@8.3.6) + '@storybook/addon-themes': + specifier: ^8.3.6 + version: 8.3.6(storybook@8.3.6) + '@storybook/preview-web': + specifier: ^7.6.17 + version: 7.6.17 + '@storybook/react': + specifier: ^8.3.6 + version: 8.3.6(@storybook/test@8.3.6(storybook@8.3.6))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.3.6)(typescript@5.6.3) + '@storybook/react-vite': + specifier: ^8.3.6 + version: 8.3.6(@storybook/test@8.3.6(storybook@8.3.6))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(rollup@4.24.0)(storybook@8.3.6)(typescript@5.6.3)(vite@5.4.9(@types/node@22.7.6)) + '@tanstack/eslint-plugin-query': + specifier: ^5.59.7 + version: 5.59.7(eslint@9.13.0(jiti@1.21.6))(typescript@5.6.3) + '@tanstack/react-query-devtools': + specifier: ^5.59.15 + version: 5.59.15(@tanstack/react-query@5.59.15(react@18.3.1))(react@18.3.1) + '@types/react': + specifier: ^18.3.11 + version: 18.3.11 + '@types/react-dom': + specifier: ^18.3.1 + version: 18.3.1 + '@types/validator': + specifier: ^13.12.2 + version: 13.12.2 + '@typescript-eslint/eslint-plugin': + specifier: ^8.10.0 + version: 8.10.0(@typescript-eslint/parser@8.10.0(eslint@9.13.0(jiti@1.21.6))(typescript@5.6.3))(eslint@9.13.0(jiti@1.21.6))(typescript@5.6.3) + '@typescript-eslint/parser': + specifier: ^8.10.0 + version: 8.10.0(eslint@9.13.0(jiti@1.21.6))(typescript@5.6.3) + '@vitejs/plugin-react': + specifier: ^4.3.2 + version: 4.3.2(vite@5.4.9(@types/node@22.7.6)) + autoprefixer: + specifier: ^10.4.20 + version: 10.4.20(postcss@8.4.47) + commitlint: + specifier: ^19.5.0 + version: 19.5.0(@types/node@22.7.6)(typescript@5.6.3) + eslint: + specifier: ^9.13.0 + version: 9.13.0(jiti@1.21.6) + eslint-config-airbnb: + specifier: ^19.0.4 + version: 19.0.4(eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.10.0(eslint@9.13.0(jiti@1.21.6))(typescript@5.6.3))(eslint-import-resolver-typescript@3.6.3)(eslint@9.13.0(jiti@1.21.6)))(eslint-plugin-jsx-a11y@6.10.0(eslint@9.13.0(jiti@1.21.6)))(eslint-plugin-react-hooks@5.0.0(eslint@9.13.0(jiti@1.21.6)))(eslint-plugin-react@7.37.1(eslint@9.13.0(jiti@1.21.6)))(eslint@9.13.0(jiti@1.21.6)) + eslint-config-prettier: + specifier: ^9.1.0 + version: 9.1.0(eslint@9.13.0(jiti@1.21.6)) + eslint-import-resolver-typescript: + specifier: ^3.6.3 + version: 3.6.3(@typescript-eslint/parser@8.10.0(eslint@9.13.0(jiti@1.21.6))(typescript@5.6.3))(eslint-plugin-import@2.31.0)(eslint@9.13.0(jiti@1.21.6)) + eslint-plugin-import: + specifier: ^2.31.0 + version: 2.31.0(@typescript-eslint/parser@8.10.0(eslint@9.13.0(jiti@1.21.6))(typescript@5.6.3))(eslint-import-resolver-typescript@3.6.3)(eslint@9.13.0(jiti@1.21.6)) + eslint-plugin-jsx-a11y: + specifier: ^6.10.0 + version: 6.10.0(eslint@9.13.0(jiti@1.21.6)) + eslint-plugin-prettier: + specifier: ^5.2.1 + version: 5.2.1(eslint-config-prettier@9.1.0(eslint@9.13.0(jiti@1.21.6)))(eslint@9.13.0(jiti@1.21.6))(prettier@3.3.3) + eslint-plugin-react-hooks: + specifier: ^5.0.0 + version: 5.0.0(eslint@9.13.0(jiti@1.21.6)) + eslint-plugin-react-refresh: + specifier: ^0.4.13 + version: 0.4.13(eslint@9.13.0(jiti@1.21.6)) + eslint-plugin-storybook: + specifier: ^0.9.0 + version: 0.9.0(eslint@9.13.0(jiti@1.21.6))(typescript@5.6.3) + globals: + specifier: ^15.11.0 + version: 15.11.0 + husky: + specifier: ^9.1.6 + version: 9.1.6 + lint-staged: + specifier: ^15.2.10 + version: 15.2.10 + msw: + specifier: ^2.4.11 + version: 2.4.11(typescript@5.6.3) + postcss: + specifier: ^8.4.47 + version: 8.4.47 + prettier: + specifier: ^3.3.3 + version: 3.3.3 + storybook: + specifier: ^8.3.6 + version: 8.3.6 + tailwindcss: + specifier: ^3.4.14 + version: 3.4.14 + tailwindcss-animate: + specifier: ^1.0.7 + version: 1.0.7(tailwindcss@3.4.14) + typescript: + specifier: ^5.6.3 + version: 5.6.3 + typescript-eslint: + specifier: ^8.12.2 + version: 8.12.2(eslint@9.13.0(jiti@1.21.6))(typescript@5.6.3) + vite: + specifier: ^5.4.9 + version: 5.4.9(@types/node@22.7.6) + +packages: + + '@adobe/css-tools@4.4.0': + resolution: {integrity: sha512-Ff9+ksdQQB3rMncgqDK78uLznstjyfIf2Arnh22pW8kBpLs6rpKDwgnZT46hin5Hl1WzazzK64DOrhSwYpS7bQ==} + + '@alloc/quick-lru@5.2.0': + resolution: {integrity: sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==} + engines: {node: '>=10'} + + '@ampproject/remapping@2.3.0': + resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} + engines: {node: '>=6.0.0'} + + '@babel/code-frame@7.25.7': + resolution: {integrity: sha512-0xZJFNE5XMpENsgfHYTw8FbX4kv53mFLn2i3XPoq69LyhYSCBJtitaHx9QnsVTrsogI4Z3+HtEfZ2/GFPOtf5g==} + engines: {node: '>=6.9.0'} + + '@babel/compat-data@7.25.8': + resolution: {integrity: sha512-ZsysZyXY4Tlx+Q53XdnOFmqwfB9QDTHYxaZYajWRoBLuLEAwI2UIbtxOjWh/cFaa9IKUlcB+DDuoskLuKu56JA==} + engines: {node: '>=6.9.0'} + + '@babel/core@7.25.8': + resolution: {integrity: sha512-Oixnb+DzmRT30qu9d3tJSQkxuygWm32DFykT4bRoORPa9hZ/L4KhVB/XiRm6KG+roIEM7DBQlmg27kw2HZkdZg==} + engines: {node: '>=6.9.0'} + + '@babel/generator@7.25.7': + resolution: {integrity: sha512-5Dqpl5fyV9pIAD62yK9P7fcA768uVPUyrQmqpqstHWgMma4feF1x/oFysBCVZLY5wJ2GkMUCdsNDnGZrPoR6rA==} + engines: {node: '>=6.9.0'} + + '@babel/helper-compilation-targets@7.25.7': + resolution: {integrity: sha512-DniTEax0sv6isaw6qSQSfV4gVRNtw2rte8HHM45t9ZR0xILaufBRNkpMifCRiAPyvL4ACD6v0gfCwCmtOQaV4A==} + engines: {node: '>=6.9.0'} + + '@babel/helper-module-imports@7.25.7': + resolution: {integrity: sha512-o0xCgpNmRohmnoWKQ0Ij8IdddjyBFE4T2kagL/x6M3+4zUgc+4qTOUBoNe4XxDskt1HPKO007ZPiMgLDq2s7Kw==} + engines: {node: '>=6.9.0'} + + '@babel/helper-module-transforms@7.25.7': + resolution: {integrity: sha512-k/6f8dKG3yDz/qCwSM+RKovjMix563SLxQFo0UhRNo239SP6n9u5/eLtKD6EAjwta2JHJ49CsD8pms2HdNiMMQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/helper-plugin-utils@7.25.7': + resolution: {integrity: sha512-eaPZai0PiqCi09pPs3pAFfl/zYgGaE6IdXtYvmf0qlcDTd3WCtO7JWCcRd64e0EQrcYgiHibEZnOGsSY4QSgaw==} + engines: {node: '>=6.9.0'} + + '@babel/helper-simple-access@7.25.7': + resolution: {integrity: sha512-FPGAkJmyoChQeM+ruBGIDyrT2tKfZJO8NcxdC+CWNJi7N8/rZpSxK7yvBJ5O/nF1gfu5KzN7VKG3YVSLFfRSxQ==} + engines: {node: '>=6.9.0'} + + '@babel/helper-string-parser@7.25.7': + resolution: {integrity: sha512-CbkjYdsJNHFk8uqpEkpCvRs3YRp9tY6FmFY7wLMSYuGYkrdUi7r2lc4/wqsvlHoMznX3WJ9IP8giGPq68T/Y6g==} + engines: {node: '>=6.9.0'} + + '@babel/helper-validator-identifier@7.25.7': + resolution: {integrity: sha512-AM6TzwYqGChO45oiuPqwL2t20/HdMC1rTPAesnBCgPCSF1x3oN9MVUwQV2iyz4xqWrctwK5RNC8LV22kaQCNYg==} + engines: {node: '>=6.9.0'} + + '@babel/helper-validator-option@7.25.7': + resolution: {integrity: sha512-ytbPLsm+GjArDYXJ8Ydr1c/KJuutjF2besPNbIZnZ6MKUxi/uTA22t2ymmA4WFjZFpjiAMO0xuuJPqK2nvDVfQ==} + engines: {node: '>=6.9.0'} + + '@babel/helpers@7.25.7': + resolution: {integrity: sha512-Sv6pASx7Esm38KQpF/U/OXLwPPrdGHNKoeblRxgZRLXnAtnkEe4ptJPDtAZM7fBLadbc1Q07kQpSiGQ0Jg6tRA==} + engines: {node: '>=6.9.0'} + + '@babel/highlight@7.25.7': + resolution: {integrity: sha512-iYyACpW3iW8Fw+ZybQK+drQre+ns/tKpXbNESfrhNnPLIklLbXr7MYJ6gPEd0iETGLOK+SxMjVvKb/ffmk+FEw==} + engines: {node: '>=6.9.0'} + + '@babel/parser@7.25.8': + resolution: {integrity: sha512-HcttkxzdPucv3nNFmfOOMfFf64KgdJVqm1KaCm25dPGMLElo9nsLvXeJECQg8UzPuBGLyTSA0ZzqCtDSzKTEoQ==} + engines: {node: '>=6.0.0'} + hasBin: true + + '@babel/plugin-transform-react-jsx-self@7.25.7': + resolution: {integrity: sha512-JD9MUnLbPL0WdVK8AWC7F7tTG2OS6u/AKKnsK+NdRhUiVdnzyR1S3kKQCaRLOiaULvUiqK6Z4JQE635VgtCFeg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-react-jsx-source@7.25.7': + resolution: {integrity: sha512-S/JXG/KrbIY06iyJPKfxr0qRxnhNOdkNXYBl/rmwgDd72cQLH9tEGkDm/yJPGvcSIUoikzfjMios9i+xT/uv9w==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/runtime@7.25.7': + resolution: {integrity: sha512-FjoyLe754PMiYsFaN5C94ttGiOmBNYTf6pLr4xXHAT5uctHb092PBszndLDR5XA/jghQvn4n7JMHl7dmTgbm9w==} + engines: {node: '>=6.9.0'} + + '@babel/template@7.25.7': + resolution: {integrity: sha512-wRwtAgI3bAS+JGU2upWNL9lSlDcRCqD05BZ1n3X2ONLH1WilFP6O1otQjeMK/1g0pvYcXC7b/qVUB1keofjtZA==} + engines: {node: '>=6.9.0'} + + '@babel/traverse@7.25.7': + resolution: {integrity: sha512-jatJPT1Zjqvh/1FyJs6qAHL+Dzb7sTb+xr7Q+gM1b+1oBsMsQQ4FkVKb6dFlJvLlVssqkRzV05Jzervt9yhnzg==} + engines: {node: '>=6.9.0'} + + '@babel/types@7.25.8': + resolution: {integrity: sha512-JWtuCu8VQsMladxVz/P4HzHUGCAwpuqacmowgXFs5XjxIgKuNjnLokQzuVjlTvIzODaDmpjT3oxcC48vyk9EWg==} + engines: {node: '>=6.9.0'} + + '@base2/pretty-print-object@1.0.1': + resolution: {integrity: sha512-4iri8i1AqYHJE2DstZYkyEprg6Pq6sKx3xn5FpySk9sNhH7qN2LLlHJCfDTZRILNwQNPD7mATWM0TBui7uC1pA==} + + '@bundled-es-modules/cookie@2.0.0': + resolution: {integrity: sha512-Or6YHg/kamKHpxULAdSqhGqnWFneIXu1NKvvfBBzKGwpVsYuFIQ5aBPHDnnoR3ghW1nvSkALd+EF9iMtY7Vjxw==} + + '@bundled-es-modules/statuses@1.0.1': + resolution: {integrity: sha512-yn7BklA5acgcBr+7w064fGV+SGIFySjCKpqjcWgBAIfrAkY+4GQTJJHQMeT3V/sgz23VTEVV8TtOmkvJAhFVfg==} + + '@bundled-es-modules/tough-cookie@0.1.6': + resolution: {integrity: sha512-dvMHbL464C0zI+Yqxbz6kZ5TOEp7GLW+pry/RWndAR8MJQAXZ2rPmIs8tziTZjeIyhSNZgZbCePtfSbdWqStJw==} + + '@commitlint/cli@19.5.0': + resolution: {integrity: sha512-gaGqSliGwB86MDmAAKAtV9SV1SHdmN8pnGq4EJU4+hLisQ7IFfx4jvU4s+pk6tl0+9bv6yT+CaZkufOinkSJIQ==} + engines: {node: '>=v18'} + hasBin: true + + '@commitlint/config-conventional@19.5.0': + resolution: {integrity: sha512-OBhdtJyHNPryZKg0fFpZNOBM1ZDbntMvqMuSmpfyP86XSfwzGw4CaoYRG4RutUPg0BTK07VMRIkNJT6wi2zthg==} + engines: {node: '>=v18'} + + '@commitlint/config-validator@19.5.0': + resolution: {integrity: sha512-CHtj92H5rdhKt17RmgALhfQt95VayrUo2tSqY9g2w+laAXyk7K/Ef6uPm9tn5qSIwSmrLjKaXK9eiNuxmQrDBw==} + engines: {node: '>=v18'} + + '@commitlint/ensure@19.5.0': + resolution: {integrity: sha512-Kv0pYZeMrdg48bHFEU5KKcccRfKmISSm9MvgIgkpI6m+ohFTB55qZlBW6eYqh/XDfRuIO0x4zSmvBjmOwWTwkg==} + engines: {node: '>=v18'} + + '@commitlint/execute-rule@19.5.0': + resolution: {integrity: sha512-aqyGgytXhl2ejlk+/rfgtwpPexYyri4t8/n4ku6rRJoRhGZpLFMqrZ+YaubeGysCP6oz4mMA34YSTaSOKEeNrg==} + engines: {node: '>=v18'} + + '@commitlint/format@19.5.0': + resolution: {integrity: sha512-yNy088miE52stCI3dhG/vvxFo9e4jFkU1Mj3xECfzp/bIS/JUay4491huAlVcffOoMK1cd296q0W92NlER6r3A==} + engines: {node: '>=v18'} + + '@commitlint/is-ignored@19.5.0': + resolution: {integrity: sha512-0XQ7Llsf9iL/ANtwyZ6G0NGp5Y3EQ8eDQSxv/SRcfJ0awlBY4tHFAvwWbw66FVUaWICH7iE5en+FD9TQsokZ5w==} + engines: {node: '>=v18'} + + '@commitlint/lint@19.5.0': + resolution: {integrity: sha512-cAAQwJcRtiBxQWO0eprrAbOurtJz8U6MgYqLz+p9kLElirzSCc0vGMcyCaA1O7AqBuxo11l1XsY3FhOFowLAAg==} + engines: {node: '>=v18'} + + '@commitlint/load@19.5.0': + resolution: {integrity: sha512-INOUhkL/qaKqwcTUvCE8iIUf5XHsEPCLY9looJ/ipzi7jtGhgmtH7OOFiNvwYgH7mA8osUWOUDV8t4E2HAi4xA==} + engines: {node: '>=v18'} + + '@commitlint/message@19.5.0': + resolution: {integrity: sha512-R7AM4YnbxN1Joj1tMfCyBryOC5aNJBdxadTZkuqtWi3Xj0kMdutq16XQwuoGbIzL2Pk62TALV1fZDCv36+JhTQ==} + engines: {node: '>=v18'} + + '@commitlint/parse@19.5.0': + resolution: {integrity: sha512-cZ/IxfAlfWYhAQV0TwcbdR1Oc0/r0Ik1GEessDJ3Lbuma/MRO8FRQX76eurcXtmhJC//rj52ZSZuXUg0oIX0Fw==} + engines: {node: '>=v18'} + + '@commitlint/read@19.5.0': + resolution: {integrity: sha512-TjS3HLPsLsxFPQj6jou8/CZFAmOP2y+6V4PGYt3ihbQKTY1Jnv0QG28WRKl/d1ha6zLODPZqsxLEov52dhR9BQ==} + engines: {node: '>=v18'} + + '@commitlint/resolve-extends@19.5.0': + resolution: {integrity: sha512-CU/GscZhCUsJwcKTJS9Ndh3AKGZTNFIOoQB2n8CmFnizE0VnEuJoum+COW+C1lNABEeqk6ssfc1Kkalm4bDklA==} + engines: {node: '>=v18'} + + '@commitlint/rules@19.5.0': + resolution: {integrity: sha512-hDW5TPyf/h1/EufSHEKSp6Hs+YVsDMHazfJ2azIk9tHPXS6UqSz1dIRs1gpqS3eMXgtkT7JH6TW4IShdqOwhAw==} + engines: {node: '>=v18'} + + '@commitlint/to-lines@19.5.0': + resolution: {integrity: sha512-R772oj3NHPkodOSRZ9bBVNq224DOxQtNef5Pl8l2M8ZnkkzQfeSTr4uxawV2Sd3ui05dUVzvLNnzenDBO1KBeQ==} + engines: {node: '>=v18'} + + '@commitlint/top-level@19.5.0': + resolution: {integrity: sha512-IP1YLmGAk0yWrImPRRc578I3dDUI5A2UBJx9FbSOjxe9sTlzFiwVJ+zeMLgAtHMtGZsC8LUnzmW1qRemkFU4ng==} + engines: {node: '>=v18'} + + '@commitlint/types@19.5.0': + resolution: {integrity: sha512-DSHae2obMSMkAtTBSOulg5X7/z+rGLxcXQIkg3OmWvY6wifojge5uVMydfhUvs7yQj+V7jNmRZ2Xzl8GJyqRgg==} + engines: {node: '>=v18'} + + '@esbuild/aix-ppc64@0.21.5': + resolution: {integrity: sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [aix] + + '@esbuild/aix-ppc64@0.23.1': + resolution: {integrity: sha512-6VhYk1diRqrhBAqpJEdjASR/+WVRtfjpqKuNw11cLiaWpAT/Uu+nokB+UJnevzy/P9C/ty6AOe0dwueMrGh/iQ==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [aix] + + '@esbuild/android-arm64@0.21.5': + resolution: {integrity: sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==} + engines: {node: '>=12'} + cpu: [arm64] + os: [android] + + '@esbuild/android-arm64@0.23.1': + resolution: {integrity: sha512-xw50ipykXcLstLeWH7WRdQuysJqejuAGPd30vd1i5zSyKK3WE+ijzHmLKxdiCMtH1pHz78rOg0BKSYOSB/2Khw==} + engines: {node: '>=18'} + cpu: [arm64] + os: [android] + + '@esbuild/android-arm@0.21.5': + resolution: {integrity: sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==} + engines: {node: '>=12'} + cpu: [arm] + os: [android] + + '@esbuild/android-arm@0.23.1': + resolution: {integrity: sha512-uz6/tEy2IFm9RYOyvKl88zdzZfwEfKZmnX9Cj1BHjeSGNuGLuMD1kR8y5bteYmwqKm1tj8m4cb/aKEorr6fHWQ==} + engines: {node: '>=18'} + cpu: [arm] + os: [android] + + '@esbuild/android-x64@0.21.5': + resolution: {integrity: sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==} + engines: {node: '>=12'} + cpu: [x64] + os: [android] + + '@esbuild/android-x64@0.23.1': + resolution: {integrity: sha512-nlN9B69St9BwUoB+jkyU090bru8L0NA3yFvAd7k8dNsVH8bi9a8cUAUSEcEEgTp2z3dbEDGJGfP6VUnkQnlReg==} + engines: {node: '>=18'} + cpu: [x64] + os: [android] + + '@esbuild/darwin-arm64@0.21.5': + resolution: {integrity: sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==} + engines: {node: '>=12'} + cpu: [arm64] + os: [darwin] + + '@esbuild/darwin-arm64@0.23.1': + resolution: {integrity: sha512-YsS2e3Wtgnw7Wq53XXBLcV6JhRsEq8hkfg91ESVadIrzr9wO6jJDMZnCQbHm1Guc5t/CdDiFSSfWP58FNuvT3Q==} + engines: {node: '>=18'} + cpu: [arm64] + os: [darwin] + + '@esbuild/darwin-x64@0.21.5': + resolution: {integrity: sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==} + engines: {node: '>=12'} + cpu: [x64] + os: [darwin] + + '@esbuild/darwin-x64@0.23.1': + resolution: {integrity: sha512-aClqdgTDVPSEGgoCS8QDG37Gu8yc9lTHNAQlsztQ6ENetKEO//b8y31MMu2ZaPbn4kVsIABzVLXYLhCGekGDqw==} + engines: {node: '>=18'} + cpu: [x64] + os: [darwin] + + '@esbuild/freebsd-arm64@0.21.5': + resolution: {integrity: sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==} + engines: {node: '>=12'} + cpu: [arm64] + os: [freebsd] + + '@esbuild/freebsd-arm64@0.23.1': + resolution: {integrity: sha512-h1k6yS8/pN/NHlMl5+v4XPfikhJulk4G+tKGFIOwURBSFzE8bixw1ebjluLOjfwtLqY0kewfjLSrO6tN2MgIhA==} + engines: {node: '>=18'} + cpu: [arm64] + os: [freebsd] + + '@esbuild/freebsd-x64@0.21.5': + resolution: {integrity: sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [freebsd] + + '@esbuild/freebsd-x64@0.23.1': + resolution: {integrity: sha512-lK1eJeyk1ZX8UklqFd/3A60UuZ/6UVfGT2LuGo3Wp4/z7eRTRYY+0xOu2kpClP+vMTi9wKOfXi2vjUpO1Ro76g==} + engines: {node: '>=18'} + cpu: [x64] + os: [freebsd] + + '@esbuild/linux-arm64@0.21.5': + resolution: {integrity: sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==} + engines: {node: '>=12'} + cpu: [arm64] + os: [linux] + + '@esbuild/linux-arm64@0.23.1': + resolution: {integrity: sha512-/93bf2yxencYDnItMYV/v116zff6UyTjo4EtEQjUBeGiVpMmffDNUyD9UN2zV+V3LRV3/on4xdZ26NKzn6754g==} + engines: {node: '>=18'} + cpu: [arm64] + os: [linux] + + '@esbuild/linux-arm@0.21.5': + resolution: {integrity: sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==} + engines: {node: '>=12'} + cpu: [arm] + os: [linux] + + '@esbuild/linux-arm@0.23.1': + resolution: {integrity: sha512-CXXkzgn+dXAPs3WBwE+Kvnrf4WECwBdfjfeYHpMeVxWE0EceB6vhWGShs6wi0IYEqMSIzdOF1XjQ/Mkm5d7ZdQ==} + engines: {node: '>=18'} + cpu: [arm] + os: [linux] + + '@esbuild/linux-ia32@0.21.5': + resolution: {integrity: sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==} + engines: {node: '>=12'} + cpu: [ia32] + os: [linux] + + '@esbuild/linux-ia32@0.23.1': + resolution: {integrity: sha512-VTN4EuOHwXEkXzX5nTvVY4s7E/Krz7COC8xkftbbKRYAl96vPiUssGkeMELQMOnLOJ8k3BY1+ZY52tttZnHcXQ==} + engines: {node: '>=18'} + cpu: [ia32] + os: [linux] + + '@esbuild/linux-loong64@0.21.5': + resolution: {integrity: sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==} + engines: {node: '>=12'} + cpu: [loong64] + os: [linux] + + '@esbuild/linux-loong64@0.23.1': + resolution: {integrity: sha512-Vx09LzEoBa5zDnieH8LSMRToj7ir/Jeq0Gu6qJ/1GcBq9GkfoEAoXvLiW1U9J1qE/Y/Oyaq33w5p2ZWrNNHNEw==} + engines: {node: '>=18'} + cpu: [loong64] + os: [linux] + + '@esbuild/linux-mips64el@0.21.5': + resolution: {integrity: sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==} + engines: {node: '>=12'} + cpu: [mips64el] + os: [linux] + + '@esbuild/linux-mips64el@0.23.1': + resolution: {integrity: sha512-nrFzzMQ7W4WRLNUOU5dlWAqa6yVeI0P78WKGUo7lg2HShq/yx+UYkeNSE0SSfSure0SqgnsxPvmAUu/vu0E+3Q==} + engines: {node: '>=18'} + cpu: [mips64el] + os: [linux] + + '@esbuild/linux-ppc64@0.21.5': + resolution: {integrity: sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [linux] + + '@esbuild/linux-ppc64@0.23.1': + resolution: {integrity: sha512-dKN8fgVqd0vUIjxuJI6P/9SSSe/mB9rvA98CSH2sJnlZ/OCZWO1DJvxj8jvKTfYUdGfcq2dDxoKaC6bHuTlgcw==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [linux] + + '@esbuild/linux-riscv64@0.21.5': + resolution: {integrity: sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==} + engines: {node: '>=12'} + cpu: [riscv64] + os: [linux] + + '@esbuild/linux-riscv64@0.23.1': + resolution: {integrity: sha512-5AV4Pzp80fhHL83JM6LoA6pTQVWgB1HovMBsLQ9OZWLDqVY8MVobBXNSmAJi//Csh6tcY7e7Lny2Hg1tElMjIA==} + engines: {node: '>=18'} + cpu: [riscv64] + os: [linux] + + '@esbuild/linux-s390x@0.21.5': + resolution: {integrity: sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==} + engines: {node: '>=12'} + cpu: [s390x] + os: [linux] + + '@esbuild/linux-s390x@0.23.1': + resolution: {integrity: sha512-9ygs73tuFCe6f6m/Tb+9LtYxWR4c9yg7zjt2cYkjDbDpV/xVn+68cQxMXCjUpYwEkze2RcU/rMnfIXNRFmSoDw==} + engines: {node: '>=18'} + cpu: [s390x] + os: [linux] + + '@esbuild/linux-x64@0.21.5': + resolution: {integrity: sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [linux] + + '@esbuild/linux-x64@0.23.1': + resolution: {integrity: sha512-EV6+ovTsEXCPAp58g2dD68LxoP/wK5pRvgy0J/HxPGB009omFPv3Yet0HiaqvrIrgPTBuC6wCH1LTOY91EO5hQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [linux] + + '@esbuild/netbsd-x64@0.21.5': + resolution: {integrity: sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==} + engines: {node: '>=12'} + cpu: [x64] + os: [netbsd] + + '@esbuild/netbsd-x64@0.23.1': + resolution: {integrity: sha512-aevEkCNu7KlPRpYLjwmdcuNz6bDFiE7Z8XC4CPqExjTvrHugh28QzUXVOZtiYghciKUacNktqxdpymplil1beA==} + engines: {node: '>=18'} + cpu: [x64] + os: [netbsd] + + '@esbuild/openbsd-arm64@0.23.1': + resolution: {integrity: sha512-3x37szhLexNA4bXhLrCC/LImN/YtWis6WXr1VESlfVtVeoFJBRINPJ3f0a/6LV8zpikqoUg4hyXw0sFBt5Cr+Q==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openbsd] + + '@esbuild/openbsd-x64@0.21.5': + resolution: {integrity: sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==} + engines: {node: '>=12'} + cpu: [x64] + os: [openbsd] + + '@esbuild/openbsd-x64@0.23.1': + resolution: {integrity: sha512-aY2gMmKmPhxfU+0EdnN+XNtGbjfQgwZj43k8G3fyrDM/UdZww6xrWxmDkuz2eCZchqVeABjV5BpildOrUbBTqA==} + engines: {node: '>=18'} + cpu: [x64] + os: [openbsd] + + '@esbuild/sunos-x64@0.21.5': + resolution: {integrity: sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==} + engines: {node: '>=12'} + cpu: [x64] + os: [sunos] + + '@esbuild/sunos-x64@0.23.1': + resolution: {integrity: sha512-RBRT2gqEl0IKQABT4XTj78tpk9v7ehp+mazn2HbUeZl1YMdaGAQqhapjGTCe7uw7y0frDi4gS0uHzhvpFuI1sA==} + engines: {node: '>=18'} + cpu: [x64] + os: [sunos] + + '@esbuild/win32-arm64@0.21.5': + resolution: {integrity: sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==} + engines: {node: '>=12'} + cpu: [arm64] + os: [win32] + + '@esbuild/win32-arm64@0.23.1': + resolution: {integrity: sha512-4O+gPR5rEBe2FpKOVyiJ7wNDPA8nGzDuJ6gN4okSA1gEOYZ67N8JPk58tkWtdtPeLz7lBnY6I5L3jdsr3S+A6A==} + engines: {node: '>=18'} + cpu: [arm64] + os: [win32] + + '@esbuild/win32-ia32@0.21.5': + resolution: {integrity: sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==} + engines: {node: '>=12'} + cpu: [ia32] + os: [win32] + + '@esbuild/win32-ia32@0.23.1': + resolution: {integrity: sha512-BcaL0Vn6QwCwre3Y717nVHZbAa4UBEigzFm6VdsVdT/MbZ38xoj1X9HPkZhbmaBGUD1W8vxAfffbDe8bA6AKnQ==} + engines: {node: '>=18'} + cpu: [ia32] + os: [win32] + + '@esbuild/win32-x64@0.21.5': + resolution: {integrity: sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==} + engines: {node: '>=12'} + cpu: [x64] + os: [win32] + + '@esbuild/win32-x64@0.23.1': + resolution: {integrity: sha512-BHpFFeslkWrXWyUPnbKm+xYYVYruCinGcftSBaa8zoF9hZO4BcSCFUvHVTtzpIY6YzUnYtuEhZ+C9iEXjxnasg==} + engines: {node: '>=18'} + cpu: [x64] + os: [win32] + + '@eslint-community/eslint-utils@4.4.0': + resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 + + '@eslint-community/regexpp@4.11.1': + resolution: {integrity: sha512-m4DVN9ZqskZoLU5GlWZadwDnYo3vAEydiUayB9widCl9ffWx2IvPnp6n3on5rJmziJSw9Bv+Z3ChDVdMwXCY8Q==} + engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} + + '@eslint/compat@1.2.1': + resolution: {integrity: sha512-JbHG2TWuCeNzh87fXo+/46Z1LEo9DBA9T188d0fZgGxAD+cNyS6sx9fdiyxjGPBMyQVRlCutTByZ6a5+YMkF7g==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^9.10.0 + peerDependenciesMeta: + eslint: + optional: true + + '@eslint/config-array@0.18.0': + resolution: {integrity: sha512-fTxvnS1sRMu3+JjXwJG0j/i4RT9u4qJ+lqS/yCGap4lH4zZGzQ7tu+xZqQmcMZq5OBZDL4QRxQzRjkWcGt8IVw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/core@0.7.0': + resolution: {integrity: sha512-xp5Jirz5DyPYlPiKat8jaq0EmYvDXKKpzTbxXMpT9eqlRJkRKIz9AGMdlvYjih+im+QlhWrpvVjl8IPC/lHlUw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/eslintrc@3.1.0': + resolution: {integrity: sha512-4Bfj15dVJdoy3RfZmmo86RK1Fwzn6SstsvK9JS+BaVKqC6QQQQyXekNaC+g+LKNgkQ+2VhGAzm6hO40AhMR3zQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/js@9.13.0': + resolution: {integrity: sha512-IFLyoY4d72Z5y/6o/BazFBezupzI/taV8sGumxTAVw3lXG9A6md1Dc34T9s1FoD/an9pJH8RHbAxsaEbBed9lA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/object-schema@2.1.4': + resolution: {integrity: sha512-BsWiH1yFGjXXS2yvrf5LyuoSIIbPrGUWob917o+BTKuZ7qJdxX8aJLRxs1fS9n6r7vESrq1OUqb68dANcFXuQQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/plugin-kit@0.2.1': + resolution: {integrity: sha512-HFZ4Mp26nbWk9d/BpvP0YNL6W4UoZF0VFcTw/aPPA8RpOxeFQgK+ClABGgAUXs9Y/RGX/l1vOmrqz1MQt9MNuw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@faker-js/faker@9.0.3': + resolution: {integrity: sha512-lWrrK4QNlFSU+13PL9jMbMKLJYXDFu3tQfayBsMXX7KL/GiQeqfB1CzHkqD5UHBUtPAuPo6XwGbMFNdVMZObRA==} + engines: {node: '>=18.0.0', npm: '>=9.0.0'} + + '@floating-ui/core@1.6.8': + resolution: {integrity: sha512-7XJ9cPU+yI2QeLS+FCSlqNFZJq8arvswefkZrYI1yQBbftw6FyrZOxYSh+9S7z7TpeWlRt9zJ5IhM1WIL334jA==} + + '@floating-ui/dom@1.6.11': + resolution: {integrity: sha512-qkMCxSR24v2vGkhYDo/UzxfJN3D4syqSjyuTFz6C7XcpU1pASPRieNI0Kj5VP3/503mOfYiGY891ugBX1GlABQ==} + + '@floating-ui/react-dom@2.1.2': + resolution: {integrity: sha512-06okr5cgPzMNBy+Ycse2A6udMi4bqwW/zgBF/rwjcNqWkyr82Mcg8b0vjX8OJpZFy/FKjJmw6wV7t44kK6kW7A==} + peerDependencies: + react: '>=16.8.0' + react-dom: '>=16.8.0' + + '@floating-ui/utils@0.2.8': + resolution: {integrity: sha512-kym7SodPp8/wloecOpcmSnWJsK7M0E5Wg8UcFA+uO4B9s5d0ywXOEro/8HM9x0rW+TljRzul/14UYz3TleT3ig==} + + '@hookform/resolvers@3.9.0': + resolution: {integrity: sha512-bU0Gr4EepJ/EQsH/IwEzYLsT/PEj5C0ynLQ4m+GSHS+xKH4TfSelhluTgOaoc4kA5s7eCsQbM4wvZLzELmWzUg==} + peerDependencies: + react-hook-form: ^7.0.0 + + '@humanfs/core@0.19.0': + resolution: {integrity: sha512-2cbWIHbZVEweE853g8jymffCA+NCMiuqeECeBBLm8dg2oFdjuGJhgN4UAbI+6v0CKbbhvtXA4qV8YR5Ji86nmw==} + engines: {node: '>=18.18.0'} + + '@humanfs/node@0.16.5': + resolution: {integrity: sha512-KSPA4umqSG4LHYRodq31VDwKAvaTF4xmVlzM8Aeh4PlU1JQ3IG0wiA8C25d3RQ9nJyM3mBHyI53K06VVL/oFFg==} + engines: {node: '>=18.18.0'} + + '@humanwhocodes/module-importer@1.0.1': + resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} + engines: {node: '>=12.22'} + + '@humanwhocodes/retry@0.3.1': + resolution: {integrity: sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==} + engines: {node: '>=18.18'} + + '@inquirer/confirm@3.2.0': + resolution: {integrity: sha512-oOIwPs0Dvq5220Z8lGL/6LHRTEr9TgLHmiI99Rj1PJ1p1czTys+olrgBqZk4E2qC0YTzeHprxSQmoHioVdJ7Lw==} + engines: {node: '>=18'} + + '@inquirer/core@9.2.1': + resolution: {integrity: sha512-F2VBt7W/mwqEU4bL0RnHNZmC/OxzNx9cOYxHqnXX3MP6ruYvZUZAW9imgN9+h/uBT/oP8Gh888J2OZSbjSeWcg==} + engines: {node: '>=18'} + + '@inquirer/figures@1.0.7': + resolution: {integrity: sha512-m+Trk77mp54Zma6xLkLuY+mvanPxlE4A7yNKs2HBiyZ4UkVs28Mv5c/pgWrHeInx+USHeX/WEPzjrWrcJiQgjw==} + engines: {node: '>=18'} + + '@inquirer/type@1.5.5': + resolution: {integrity: sha512-MzICLu4yS7V8AA61sANROZ9vT1H3ooca5dSmI1FjZkzq7o/koMsRfQSzRtFo+F3Ao4Sf1C0bpLKejpKB/+j6MA==} + engines: {node: '>=18'} + + '@inquirer/type@2.0.0': + resolution: {integrity: sha512-XvJRx+2KR3YXyYtPUUy+qd9i7p+GO9Ko6VIIpWlBrpWwXDv8WLFeHTxz35CfQFUiBMLXlGHhGzys7lqit9gWag==} + engines: {node: '>=18'} + + '@isaacs/cliui@8.0.2': + resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} + engines: {node: '>=12'} + + '@joshwooding/vite-plugin-react-docgen-typescript@0.3.0': + resolution: {integrity: sha512-2D6y7fNvFmsLmRt6UCOFJPvFoPMJGT0Uh1Wg0RaigUp7kdQPs6yYn8Dmx6GZkOH/NW0yMTwRz/p0SRMMRo50vA==} + peerDependencies: + typescript: '>= 4.3.x' + vite: ^3.0.0 || ^4.0.0 || ^5.0.0 + peerDependenciesMeta: + typescript: + optional: true + + '@jridgewell/gen-mapping@0.3.5': + resolution: {integrity: sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==} + engines: {node: '>=6.0.0'} + + '@jridgewell/resolve-uri@3.1.2': + resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} + engines: {node: '>=6.0.0'} + + '@jridgewell/set-array@1.2.1': + resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==} + engines: {node: '>=6.0.0'} + + '@jridgewell/sourcemap-codec@1.5.0': + resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==} + + '@jridgewell/trace-mapping@0.3.25': + resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} + + '@mdx-js/react@3.1.0': + resolution: {integrity: sha512-QjHtSaoameoalGnKDT3FoIl4+9RwyTmo9ZJGBdLOks/YOiWHoRDI3PUwEzOE7kEmGcV3AFcp9K6dYu9rEuKLAQ==} + peerDependencies: + '@types/react': '>=16' + react: '>=16' + + '@mswjs/interceptors@0.35.9': + resolution: {integrity: sha512-SSnyl/4ni/2ViHKkiZb8eajA/eN1DNFaHjhGiLUdZvDz6PKF4COSf/17xqSz64nOo2Ia29SA6B2KNCsyCbVmaQ==} + engines: {node: '>=18'} + + '@nodelib/fs.scandir@2.1.5': + resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} + engines: {node: '>= 8'} + + '@nodelib/fs.stat@2.0.5': + resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} + engines: {node: '>= 8'} + + '@nodelib/fs.walk@1.2.8': + resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} + engines: {node: '>= 8'} + + '@nolyfill/is-core-module@1.0.39': + resolution: {integrity: sha512-nn5ozdjYQpUCZlWGuxcJY/KpxkWQs4DcbMCmKojjyrYDEAGy4Ce19NN4v5MduafTwJlbKc99UA8YhSVqq9yPZA==} + engines: {node: '>=12.4.0'} + + '@open-draft/deferred-promise@2.2.0': + resolution: {integrity: sha512-CecwLWx3rhxVQF6V4bAgPS5t+So2sTbPgAzafKkVizyi7tlwpcFpdFqq+wqF2OwNBmqFuu6tOyouTuxgpMfzmA==} + + '@open-draft/logger@0.3.0': + resolution: {integrity: sha512-X2g45fzhxH238HKO4xbSr7+wBS8Fvw6ixhTDuvLd5mqh6bJJCFAPwU9mPDxbcrRtfxv4u5IHCEH77BmxvXmmxQ==} + + '@open-draft/until@2.1.0': + resolution: {integrity: sha512-U69T3ItWHvLwGg5eJ0n3I62nWuE6ilHlmz7zM0npLBRvPRd7e6NYmg54vvRtP5mZG7kZqZCFVdsTWo7BPtBujg==} + + '@pkgjs/parseargs@0.11.0': + resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} + engines: {node: '>=14'} + + '@pkgr/core@0.1.1': + resolution: {integrity: sha512-cq8o4cWH0ibXh9VGi5P20Tu9XF/0fFXl9EUinr9QfTM7a7p0oTA4iJRCQWppXR1Pg8dSM0UCItCkPwsk9qWWYA==} + engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} + + '@radix-ui/number@1.1.0': + resolution: {integrity: sha512-V3gRzhVNU1ldS5XhAPTom1fOIo4ccrjjJgmE+LI2h/WaFpHmx0MQApT+KZHnx8abG6Avtfcz4WoEciMnpFT3HQ==} + + '@radix-ui/number@1.1.1': + resolution: {integrity: sha512-MkKCwxlXTgz6CFoJx3pCwn07GKp36+aZyu/u2Ln2VrA5DcdyCZkASEDBTd8x5whTQQL5CiYf4prXKLcgQdv29g==} + + '@radix-ui/primitive@1.0.1': + resolution: {integrity: sha512-yQ8oGX2GVsEYMWGxcovu1uGWPCxV5BFfeeYxqPmuAzUyLT9qmaMXSAhXpb0WrspIeqYzdJpkh2vHModJPgRIaw==} + + '@radix-ui/primitive@1.1.0': + resolution: {integrity: sha512-4Z8dn6Upk0qk4P74xBhZ6Hd/w0mPEzOOLxy4xiPXOXqjF7jZS0VAKk7/x/H6FyY2zCkYJqePf1G5KmkmNJ4RBA==} + + '@radix-ui/primitive@1.1.2': + resolution: {integrity: sha512-XnbHrrprsNqZKQhStrSwgRUQzoCI1glLzdw79xiZPoofhGICeZRSQ3dIxAKH1gb3OHfNf4d6f+vAv3kil2eggA==} + + '@radix-ui/react-alert-dialog@1.1.2': + resolution: {integrity: sha512-eGSlLzPhKO+TErxkiGcCZGuvbVMnLA1MTnyBksGOeGRGkxHiiJUujsjmNTdWTm4iHVSRaUao9/4Ur671auMghQ==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-arrow@1.1.0': + resolution: {integrity: sha512-FmlW1rCg7hBpEBwFbjHwCW6AmWLQM6g/v0Sn8XbP9NvmSZ2San1FpQeyPtufzOMSIx7Y4dzjlHoifhp+7NkZhw==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-avatar@1.1.1': + resolution: {integrity: sha512-eoOtThOmxeoizxpX6RiEsQZ2wj5r4+zoeqAwO0cBaFQGjJwIH3dIX0OCxNrCyrrdxG+vBweMETh3VziQG7c1kw==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-collection@1.1.0': + resolution: {integrity: sha512-GZsZslMJEyo1VKm5L1ZJY8tGDxZNPAoUeQUIbKeJfoi7Q4kmig5AsgLMYYuyYbfjd8fBmFORAIwYAkXMnXZgZw==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-compose-refs@1.0.1': + resolution: {integrity: sha512-fDSBgd44FKHa1FRMU59qBMPFcl2PZE+2nmqunj+BWFyYYjnhIDWL2ItDs3rrbJDQOtzt5nIebLCQc4QRfz6LJw==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-compose-refs@1.1.0': + resolution: {integrity: sha512-b4inOtiaOnYf9KWyO3jAeeCG6FeyfY6ldiEPanbUjWd+xIk5wZeHa8yVwmrJ2vderhu/BQvzCrJI0lHd+wIiqw==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-compose-refs@1.1.2': + resolution: {integrity: sha512-z4eqJvfiNnFMHIIvXP3CY57y2WJs5g2v3X0zm9mEJkrkNv4rDxu+sg9Jh8EkXyeqBkB7SOcboo9dMVqhyrACIg==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-context@1.0.1': + resolution: {integrity: sha512-ebbrdFoYTcuZ0v4wG5tedGnp9tzcV8awzsxYph7gXUyvnNLuTIcCk1q17JEbnVhXAKG9oX3KtchwiMIAYp9NLg==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-context@1.1.0': + resolution: {integrity: sha512-OKrckBy+sMEgYM/sMmqmErVn0kZqrHPJze+Ql3DzYsDDp0hl0L62nx/2122/Bvps1qz645jlcu2tD9lrRSdf8A==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-context@1.1.1': + resolution: {integrity: sha512-UASk9zi+crv9WteK/NU4PLvOoL3OuE6BWVKNF6hPRBtYBDXQ2u5iu3O59zUlJiTVvkyuycnqrztsHVJwcK9K+Q==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-context@1.1.2': + resolution: {integrity: sha512-jCi/QKUM2r1Ju5a3J64TH2A5SpKAgh0LpknyqdQ4m6DCV0xJ2HG1xARRwNGPQfi1SLdLWZ1OJz6F4OMBBNiGJA==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-dialog@1.0.5': + resolution: {integrity: sha512-GjWJX/AUpB703eEBanuBnIWdIXg6NvJFCXcNlSZk4xdszCdhrJgBoUd1cGk67vFO+WdA2pfI/plOpqz/5GUP6Q==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-dialog@1.1.2': + resolution: {integrity: sha512-Yj4dZtqa2o+kG61fzB0H2qUvmwBA2oyQroGLyNtBj1beo1khoQ3q1a2AO8rrQYjd8256CO9+N8L9tvsS+bnIyA==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-direction@1.1.0': + resolution: {integrity: sha512-BUuBvgThEiAXh2DWu93XsT+a3aWrGqolGlqqw5VU1kG7p/ZH2cuDlM1sRLNnY3QcBS69UIz2mcKhMxDsdewhjg==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-direction@1.1.1': + resolution: {integrity: sha512-1UEWRX6jnOA2y4H5WczZ44gOOjTEmlqv1uNW4GAJEO5+bauCBhv8snY65Iw5/VOS/ghKN9gr2KjnLKxrsvoMVw==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-dismissable-layer@1.0.5': + resolution: {integrity: sha512-aJeDjQhywg9LBu2t/At58hCvr7pEm0o2Ke1x33B+MhjNmmZ17sy4KImo0KPLgsnc/zN7GPdce8Cnn0SWvwZO7g==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-dismissable-layer@1.1.1': + resolution: {integrity: sha512-QSxg29lfr/xcev6kSz7MAlmDnzbP1eI/Dwn3Tp1ip0KT5CUELsxkekFEMVBEoykI3oV39hKT4TKZzBNMbcTZYQ==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-dropdown-menu@2.1.2': + resolution: {integrity: sha512-GVZMR+eqK8/Kes0a36Qrv+i20bAPXSn8rCBTHx30w+3ECnR5o3xixAlqcVaYvLeyKUsm0aqyhWfmUcqufM8nYA==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-focus-guards@1.0.1': + resolution: {integrity: sha512-Rect2dWbQ8waGzhMavsIbmSVCgYxkXLxxR3ZvCX79JOglzdEy4JXMb98lq4hPxUbLr77nP0UOGf4rcMU+s1pUA==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-focus-guards@1.1.1': + resolution: {integrity: sha512-pSIwfrT1a6sIoDASCSpFwOasEwKTZWDw/iBdtnqKO7v6FeOzYJ7U53cPzYFVR3geGGXgVHaH+CdngrrAzqUGxg==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-focus-scope@1.0.4': + resolution: {integrity: sha512-sL04Mgvf+FmyvZeYfNu1EPAaaxD+aw7cYeIB9L9Fvq8+urhltTRaEo5ysKOpHuKPclsZcSUMKlN05x4u+CINpA==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-focus-scope@1.1.0': + resolution: {integrity: sha512-200UD8zylvEyL8Bx+z76RJnASR2gRMuxlgFCPAe/Q/679a/r0eK3MBVYMb7vZODZcffZBdob1EGnky78xmVvcA==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-id@1.0.1': + resolution: {integrity: sha512-tI7sT/kqYp8p96yGWY1OAnLHrqDgzHefRBKQ2YAkBS5ja7QLcZ9Z/uY7bEjPUatf8RomoXM8/1sMj1IJaE5UzQ==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-id@1.1.0': + resolution: {integrity: sha512-EJUrI8yYh7WOjNOqpoJaf1jlFIH2LvtgAl+YcFqNCa+4hj64ZXmPkAKOFs/ukjz3byN6bdb/AVUqHkI8/uWWMA==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-label@2.1.0': + resolution: {integrity: sha512-peLblDlFw/ngk3UWq0VnYaOLy6agTZZ+MUO/WhVfm14vJGML+xH4FAl2XQGLqdefjNb7ApRg6Yn7U42ZhmYXdw==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-menu@2.1.2': + resolution: {integrity: sha512-lZ0R4qR2Al6fZ4yCCZzu/ReTFrylHFxIqy7OezIpWF4bL0o9biKo0pFIvkaew3TyZ9Fy5gYVrR5zCGZBVbO1zg==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-popover@1.1.2': + resolution: {integrity: sha512-u2HRUyWW+lOiA2g0Le0tMmT55FGOEWHwPFt1EPfbLly7uXQExFo5duNKqG2DzmFXIdqOeNd+TpE8baHWJCyP9w==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-popper@1.2.0': + resolution: {integrity: sha512-ZnRMshKF43aBxVWPWvbj21+7TQCvhuULWJ4gNIKYpRlQt5xGRhLx66tMp8pya2UkGHTSlhpXwmjqltDYHhw7Vg==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-portal@1.0.4': + resolution: {integrity: sha512-Qki+C/EuGUVCQTOTD5vzJzJuMUlewbzuKyUy+/iHM2uwGiru9gZeBJtHAPKAEkB5KWGi9mP/CHKcY0wt1aW45Q==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-portal@1.1.2': + resolution: {integrity: sha512-WeDYLGPxJb/5EGBoedyJbT0MpoULmwnIPMJMSldkuiMsBAv7N1cRdsTWZWht9vpPOiN3qyiGAtbK2is47/uMFg==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-presence@1.0.1': + resolution: {integrity: sha512-UXLW4UAbIY5ZjcvzjfRFo5gxva8QirC9hF7wRE4U5gz+TP0DbRk+//qyuAQ1McDxBt1xNMBTaciFGvEmJvAZCg==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-presence@1.1.1': + resolution: {integrity: sha512-IeFXVi4YS1K0wVZzXNrbaaUvIJ3qdY+/Ih4eHFhWA9SwGR9UDX7Ck8abvL57C4cv3wwMvUE0OG69Qc3NCcTe/A==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-presence@1.1.4': + resolution: {integrity: sha512-ueDqRbdc4/bkaQT3GIpLQssRlFgWaL/U2z/S31qRwwLWoxHLgry3SIfCwhxeQNbirEUXFa+lq3RL3oBYXtcmIA==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-primitive@1.0.3': + resolution: {integrity: sha512-yi58uVyoAcK/Nq1inRY56ZSjKypBNKTa/1mcL8qdl6oJeEaDbOldlzrGn7P6Q3Id5d+SYNGc5AJgc4vGhjs5+g==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-primitive@2.0.0': + resolution: {integrity: sha512-ZSpFm0/uHa8zTvKBDjLFWLo8dkr4MBsiDLz0g3gMUwqgLHz9rTaRRGYDgvZPtBJgYCBKXkS9fzmoySgr8CO6Cw==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-primitive@2.1.0': + resolution: {integrity: sha512-/J/FhLdK0zVcILOwt5g+dH4KnkonCtkVJsa2G6JmvbbtZfBEI1gMsO3QMjseL4F/SwfAMt1Vc/0XKYKq+xJ1sw==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-roving-focus@1.1.0': + resolution: {integrity: sha512-EA6AMGeq9AEeQDeSH0aZgG198qkfHSbvWTf1HvoDmOB5bBG/qTxjYMWUKMnYiV6J/iP/J8MEFSuB2zRU2n7ODA==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-scroll-area@1.2.6': + resolution: {integrity: sha512-lj8OMlpPERXrQIHlEQdlXHJoRT52AMpBrgyPYylOhXYq5e/glsEdtOc/kCQlsTdtgN5U0iDbrrolDadvektJGQ==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-select@2.1.2': + resolution: {integrity: sha512-rZJtWmorC7dFRi0owDmoijm6nSJH1tVw64QGiNIZ9PNLyBDtG+iAq+XGsya052At4BfarzY/Dhv9wrrUr6IMZA==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-slot@1.0.2': + resolution: {integrity: sha512-YeTpuq4deV+6DusvVUW4ivBgnkHwECUu0BiN43L5UCDFgdhsRUWAghhTF5MbvNTPzmiFOx90asDSUjWuCNapwg==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-slot@1.1.0': + resolution: {integrity: sha512-FUCf5XMfmW4dtYl69pdS4DbxKy8nj4M7SafBgPllysxmdachynNflAdp/gCsnYWNDnge6tI9onzMp5ARYc1KNw==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-slot@1.2.0': + resolution: {integrity: sha512-ujc+V6r0HNDviYqIK3rW4ffgYiZ8g5DEHrGJVk4x7kTlLXRDILnKX9vAUYeIsLOoDpDJ0ujpqMkjH4w2ofuo6w==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-tabs@1.1.1': + resolution: {integrity: sha512-3GBUDmP2DvzmtYLMsHmpA1GtR46ZDZ+OreXM/N+kkQJOPIgytFWWTfDQmBQKBvaFS0Vno0FktdbVzN28KGrMdw==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-tooltip@1.1.3': + resolution: {integrity: sha512-Z4w1FIS0BqVFI2c1jZvb/uDVJijJjJ2ZMuPV81oVgTZ7g3BZxobplnMVvXtFWgtozdvYJ+MFWtwkM5S2HnAong==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-use-callback-ref@1.0.1': + resolution: {integrity: sha512-D94LjX4Sp0xJFVaoQOd3OO9k7tpBYNOXdVhkltUbGv2Qb9OXdrg/CpsjlZv7ia14Sylv398LswWBVVu5nqKzAQ==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-use-callback-ref@1.1.0': + resolution: {integrity: sha512-CasTfvsy+frcFkbXtSJ2Zu9JHpN8TYKxkgJGWbjiZhFivxaeW7rMeZt7QELGVLaYVfFMsKHjb7Ak0nMEe+2Vfw==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-use-callback-ref@1.1.1': + resolution: {integrity: sha512-FkBMwD+qbGQeMu1cOHnuGB6x4yzPjho8ap5WtbEJ26umhgqVXbhekKUQO+hZEL1vU92a3wHwdp0HAcqAUF5iDg==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-use-controllable-state@1.0.1': + resolution: {integrity: sha512-Svl5GY5FQeN758fWKrjM6Qb7asvXeiZltlT4U2gVfl8Gx5UAv2sMR0LWo8yhsIZh2oQ0eFdZ59aoOOMV7b47VA==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-use-controllable-state@1.1.0': + resolution: {integrity: sha512-MtfMVJiSr2NjzS0Aa90NPTnvTSg6C/JLCV7ma0W6+OMV78vd8OyRpID+Ng9LxzsPbLeuBnWBA1Nq30AtBIDChw==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-use-escape-keydown@1.0.3': + resolution: {integrity: sha512-vyL82j40hcFicA+M4Ex7hVkB9vHgSse1ZWomAqV2Je3RleKGO5iM8KMOEtfoSB0PnIelMd2lATjTGMYqN5ylTg==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-use-escape-keydown@1.1.0': + resolution: {integrity: sha512-L7vwWlR1kTTQ3oh7g1O0CBF3YCyyTj8NmhLR+phShpyA50HCfBFKVJTpshm9PzLiKmehsrQzTYTpX9HvmC9rhw==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-use-layout-effect@1.0.1': + resolution: {integrity: sha512-v/5RegiJWYdoCvMnITBkNNx6bCj20fiaJnWtRkU18yITptraXjffz5Qbn05uOiQnOvi+dbkznkoaMltz1GnszQ==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-use-layout-effect@1.1.0': + resolution: {integrity: sha512-+FPE0rOdziWSrH9athwI1R0HDVbWlEhd+FR+aSDk4uWGmSJ9Z54sdZVDQPZAinJhJXwfT+qnj969mCsT2gfm5w==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-use-layout-effect@1.1.1': + resolution: {integrity: sha512-RbJRS4UWQFkzHTTwVymMTUv8EqYhOp8dOOviLj2ugtTiXRaRQS7GLGxZTLL1jWhMeoSCf5zmcZkqTl9IiYfXcQ==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-use-previous@1.1.0': + resolution: {integrity: sha512-Z/e78qg2YFnnXcW88A4JmTtm4ADckLno6F7OXotmkQfeuCVaKuYzqAATPhVzl3delXE7CxIV8shofPn3jPc5Og==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-use-rect@1.1.0': + resolution: {integrity: sha512-0Fmkebhr6PiseyZlYAOtLS+nb7jLmpqTrJyv61Pe68MKYW6OWdRE2kI70TaYY27u7H0lajqM3hSMMLFq18Z7nQ==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-use-size@1.1.0': + resolution: {integrity: sha512-XW3/vWuIXHa+2Uwcc2ABSfcCledmXhhQPlGbfcRXbiUQI5Icjcg19BGCZVKKInYbvUCut/ufbbLLPFC5cbb1hw==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-visually-hidden@1.1.0': + resolution: {integrity: sha512-N8MDZqtgCgG5S3aV60INAB475osJousYpZ4cTJ2cFbMpdHS5Y6loLTH8LPtkj2QN0x93J30HT/M3qJXM0+lyeQ==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/rect@1.1.0': + resolution: {integrity: sha512-A9+lCBZoaMJlVKcRBz2YByCG+Cp2t6nAnMnNba+XiWxnj6r4JUFqfsgwocMBZU9LPtdxC6wB56ySYpc7LQIoJg==} + + '@remix-run/router@1.20.0': + resolution: {integrity: sha512-mUnk8rPJBI9loFDZ+YzPGdeniYK+FTmRD1TMCz7ev2SNIozyKKpnGgsxO34u6Z4z/t0ITuu7voi/AshfsGsgFg==} + engines: {node: '>=14.0.0'} + + '@rollup/pluginutils@5.1.2': + resolution: {integrity: sha512-/FIdS3PyZ39bjZlwqFnWqCOVnW7o963LtKMwQOD0NhQqw22gSr2YY1afu3FxRip4ZCZNsD5jq6Aaz6QV3D/Njw==} + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 + peerDependenciesMeta: + rollup: + optional: true + + '@rollup/rollup-android-arm-eabi@4.24.0': + resolution: {integrity: sha512-Q6HJd7Y6xdB48x8ZNVDOqsbh2uByBhgK8PiQgPhwkIw/HC/YX5Ghq2mQY5sRMZWHb3VsFkWooUVOZHKr7DmDIA==} + cpu: [arm] + os: [android] + + '@rollup/rollup-android-arm64@4.24.0': + resolution: {integrity: sha512-ijLnS1qFId8xhKjT81uBHuuJp2lU4x2yxa4ctFPtG+MqEE6+C5f/+X/bStmxapgmwLwiL3ih122xv8kVARNAZA==} + cpu: [arm64] + os: [android] + + '@rollup/rollup-darwin-arm64@4.24.0': + resolution: {integrity: sha512-bIv+X9xeSs1XCk6DVvkO+S/z8/2AMt/2lMqdQbMrmVpgFvXlmde9mLcbQpztXm1tajC3raFDqegsH18HQPMYtA==} + cpu: [arm64] + os: [darwin] + + '@rollup/rollup-darwin-x64@4.24.0': + resolution: {integrity: sha512-X6/nOwoFN7RT2svEQWUsW/5C/fYMBe4fnLK9DQk4SX4mgVBiTA9h64kjUYPvGQ0F/9xwJ5U5UfTbl6BEjaQdBQ==} + cpu: [x64] + os: [darwin] + + '@rollup/rollup-linux-arm-gnueabihf@4.24.0': + resolution: {integrity: sha512-0KXvIJQMOImLCVCz9uvvdPgfyWo93aHHp8ui3FrtOP57svqrF/roSSR5pjqL2hcMp0ljeGlU4q9o/rQaAQ3AYA==} + cpu: [arm] + os: [linux] + + '@rollup/rollup-linux-arm-musleabihf@4.24.0': + resolution: {integrity: sha512-it2BW6kKFVh8xk/BnHfakEeoLPv8STIISekpoF+nBgWM4d55CZKc7T4Dx1pEbTnYm/xEKMgy1MNtYuoA8RFIWw==} + cpu: [arm] + os: [linux] + + '@rollup/rollup-linux-arm64-gnu@4.24.0': + resolution: {integrity: sha512-i0xTLXjqap2eRfulFVlSnM5dEbTVque/3Pi4g2y7cxrs7+a9De42z4XxKLYJ7+OhE3IgxvfQM7vQc43bwTgPwA==} + cpu: [arm64] + os: [linux] + + '@rollup/rollup-linux-arm64-musl@4.24.0': + resolution: {integrity: sha512-9E6MKUJhDuDh604Qco5yP/3qn3y7SLXYuiC0Rpr89aMScS2UAmK1wHP2b7KAa1nSjWJc/f/Lc0Wl1L47qjiyQw==} + cpu: [arm64] + os: [linux] + + '@rollup/rollup-linux-powerpc64le-gnu@4.24.0': + resolution: {integrity: sha512-2XFFPJ2XMEiF5Zi2EBf4h73oR1V/lycirxZxHZNc93SqDN/IWhYYSYj8I9381ikUFXZrz2v7r2tOVk2NBwxrWw==} + cpu: [ppc64] + os: [linux] + + '@rollup/rollup-linux-riscv64-gnu@4.24.0': + resolution: {integrity: sha512-M3Dg4hlwuntUCdzU7KjYqbbd+BLq3JMAOhCKdBE3TcMGMZbKkDdJ5ivNdehOssMCIokNHFOsv7DO4rlEOfyKpg==} + cpu: [riscv64] + os: [linux] + + '@rollup/rollup-linux-s390x-gnu@4.24.0': + resolution: {integrity: sha512-mjBaoo4ocxJppTorZVKWFpy1bfFj9FeCMJqzlMQGjpNPY9JwQi7OuS1axzNIk0nMX6jSgy6ZURDZ2w0QW6D56g==} + cpu: [s390x] + os: [linux] + + '@rollup/rollup-linux-x64-gnu@4.24.0': + resolution: {integrity: sha512-ZXFk7M72R0YYFN5q13niV0B7G8/5dcQ9JDp8keJSfr3GoZeXEoMHP/HlvqROA3OMbMdfr19IjCeNAnPUG93b6A==} + cpu: [x64] + os: [linux] + + '@rollup/rollup-linux-x64-musl@4.24.0': + resolution: {integrity: sha512-w1i+L7kAXZNdYl+vFvzSZy8Y1arS7vMgIy8wusXJzRrPyof5LAb02KGr1PD2EkRcl73kHulIID0M501lN+vobQ==} + cpu: [x64] + os: [linux] + + '@rollup/rollup-win32-arm64-msvc@4.24.0': + resolution: {integrity: sha512-VXBrnPWgBpVDCVY6XF3LEW0pOU51KbaHhccHw6AS6vBWIC60eqsH19DAeeObl+g8nKAz04QFdl/Cefta0xQtUQ==} + cpu: [arm64] + os: [win32] + + '@rollup/rollup-win32-ia32-msvc@4.24.0': + resolution: {integrity: sha512-xrNcGDU0OxVcPTH/8n/ShH4UevZxKIO6HJFK0e15XItZP2UcaiLFd5kiX7hJnqCbSztUF8Qot+JWBC/QXRPYWQ==} + cpu: [ia32] + os: [win32] + + '@rollup/rollup-win32-x64-msvc@4.24.0': + resolution: {integrity: sha512-fbMkAF7fufku0N2dE5TBXcNlg0pt0cJue4xBRE2Qc5Vqikxr4VCgKj/ht6SMdFcOacVA9rqF70APJ8RN/4vMJw==} + cpu: [x64] + os: [win32] + + '@rtsao/scc@1.1.0': + resolution: {integrity: sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==} + + '@storybook/addon-actions@8.3.6': + resolution: {integrity: sha512-nOqgl0WoZK2KwjaABaXMoIgrIHOQl9inOzJvqQau0HOtsvnXGXYfJXYnpjZenoZDoZXKbUDl0U2haDFx2a2fJw==} + peerDependencies: + storybook: ^8.3.6 + + '@storybook/addon-backgrounds@8.3.6': + resolution: {integrity: sha512-yBn+a8i5OJzJaX6Bx5MAkfei7c2nvq+RRmvuyvxw11rtDGR6Nz4OBBe56reWxo868wVUggpRTPJCMVe5tDYgVg==} + peerDependencies: + storybook: ^8.3.6 + + '@storybook/addon-controls@8.3.6': + resolution: {integrity: sha512-9IMLHgtWPuFoRCt3hDsIk1FbkK5SlCMDW1DDwtTBIeWYYZLvptS42+vGVTeQ8v5SejmVzZkzuUdzu3p4sb3IcA==} + peerDependencies: + storybook: ^8.3.6 + + '@storybook/addon-docs@8.3.6': + resolution: {integrity: sha512-31Rk1TOhDIzGM2wNCUIB1xKuWtArW0D2Puua9warEXlQ3FtvwmxnPrwbIzw6ufYZDWPwl9phDYTcRh8WqZIoGg==} + peerDependencies: + storybook: ^8.3.6 + + '@storybook/addon-essentials@8.3.6': + resolution: {integrity: sha512-MQPFvThlGU7wlda1xhBPQCmDh90cSSZ31OsVs1uC5kJh0aLbY2gYXPurq1G54kzrYo8SMfBxsXrCplz8Ir6UTg==} + peerDependencies: + storybook: ^8.3.6 + + '@storybook/addon-highlight@8.3.6': + resolution: {integrity: sha512-A7uU+1OPVXGpkklEUJjSl2VEEDLCSNvmffUJlvW1GjajsNFIHOW2CSD+KnfFlQyPxyVbnWAYLqUP4XJxoqrvDw==} + peerDependencies: + storybook: ^8.3.6 + + '@storybook/addon-interactions@8.3.6': + resolution: {integrity: sha512-Y0YUJj0oE1+6DFkaTPXM/8+dwTSoy0ltj2Sn2KOTJYzxKQYXBp8TlUv0QOQiGH7o/GKXIWek/VlTuvG/JEeiWw==} + peerDependencies: + storybook: ^8.3.6 + + '@storybook/addon-links@8.3.6': + resolution: {integrity: sha512-EGEH/kEjndEldbqyiJ8XSASkxqwzL/lgA/+6mHpa6Ljxhk1s5IMGcdA1ymJYJ2BpNdkUxRj/uxAa38eGcQiJ/g==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta + storybook: ^8.3.6 + peerDependenciesMeta: + react: + optional: true + + '@storybook/addon-measure@8.3.6': + resolution: {integrity: sha512-VHWeGgYjhzhwb2WAqYW/qyEPqg5pwKR/XqFfd+3tEirUs/64olL1l3lzLwZ8Cm07cJ81T8Z4myywb9kObZfQlw==} + peerDependencies: + storybook: ^8.3.6 + + '@storybook/addon-outline@8.3.6': + resolution: {integrity: sha512-+VXpM8SIHX2cn30qLlMvER9/6iioFRSn2sAfLniqy4RrcQmcMP+qgE7ZzbzExt7cneJh3VFsYqBS/HElu14Vgg==} + peerDependencies: + storybook: ^8.3.6 + + '@storybook/addon-themes@8.3.6': + resolution: {integrity: sha512-NX6zVWs0JVUg0xICL2v1zlb6eTAQYlE/vd6ATA4bNUNL5sabWGEd1w2ArQaHC9nTnfV60JuRQ8o3SvD7Gg0xMg==} + peerDependencies: + storybook: ^8.3.6 + + '@storybook/addon-toolbars@8.3.6': + resolution: {integrity: sha512-FJH+lRoZXENfpMR/G09ZqB0TmL/k6bv07GN1ysoVs420tKRgjfz6uXaZz5COrhcdISr5mTNmG+mw9x7xXTfX3Q==} + peerDependencies: + storybook: ^8.3.6 + + '@storybook/addon-viewport@8.3.6': + resolution: {integrity: sha512-bL51v837W1cng/+0pypkoLsWKWmvux96zLOzqLCpcWAQ4OSMhW3foIWpCiFwMG/KY+GanoOocTx6i7j5hLtuTA==} + peerDependencies: + storybook: ^8.3.6 + + '@storybook/blocks@8.3.6': + resolution: {integrity: sha512-Oc5jU6EzfsENjrd91KcKyEKBh60RT+8uyLi1RIrymC2C/mzZMTEoNIrbnQt0eIqbjlHxn6y9JMJxHu4NJ4EmZg==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta + storybook: ^8.3.6 + peerDependenciesMeta: + react: + optional: true + react-dom: + optional: true + + '@storybook/builder-vite@8.3.6': + resolution: {integrity: sha512-AF4+oFe1mvIHrLvaYsv8B0YSlXQtSlKTKwrXnUbcAbeGRwMmFKA1t3VyAcXV0yB9MtZ8YJsA/uKRkgGEaN7wJQ==} + peerDependencies: + '@preact/preset-vite': '*' + storybook: ^8.3.6 + typescript: '>= 4.3.x' + vite: ^4.0.0 || ^5.0.0 + vite-plugin-glimmerx: '*' + peerDependenciesMeta: + '@preact/preset-vite': + optional: true + typescript: + optional: true + vite-plugin-glimmerx: + optional: true + + '@storybook/channels@7.6.17': + resolution: {integrity: sha512-GFG40pzaSxk1hUr/J/TMqW5AFDDPUSu+HkeE/oqSWJbOodBOLJzHN6CReJS6y1DjYSZLNFt1jftPWZZInG/XUA==} + + '@storybook/client-logger@7.6.17': + resolution: {integrity: sha512-6WBYqixAXNAXlSaBWwgljWpAu10tPRBJrcFvx2gPUne58EeMM20Gi/iHYBz2kMCY+JLAgeIH7ZxInqwO8vDwiQ==} + + '@storybook/components@8.3.6': + resolution: {integrity: sha512-TXuoGZY7X3iixF45lXkYOFk8k2q9OHcqHyHyem1gATLLQXgyOvDgzm+VB7uKBNzssRQPEE+La70nfG8bq/viRw==} + peerDependencies: + storybook: ^8.3.6 + + '@storybook/core-events@7.6.17': + resolution: {integrity: sha512-AriWMCm/k1cxlv10f+jZ1wavThTRpLaN3kY019kHWbYT9XgaSuLU67G7GPr3cGnJ6HuA6uhbzu8qtqVCd6OfXA==} + + '@storybook/core@8.3.6': + resolution: {integrity: sha512-frwfgf0EJ7QL29DWZ5bla/g0eOOWqJGd14t+VUBlpP920zB6sdDfo7+p9JoCjD9u08lGeFDqbPNKayUk+0qDag==} + + '@storybook/csf-plugin@8.3.6': + resolution: {integrity: sha512-TJyJPFejO6Gyr3+bXqE/+LomQbivvfHEbee/GwtlRj0XF4KQlqnvuEdEdcK25JbD0NXT8AbyncEUmjoxE7ojQw==} + peerDependencies: + storybook: ^8.3.6 + + '@storybook/csf@0.0.1': + resolution: {integrity: sha512-USTLkZze5gkel8MYCujSRBVIrUQ3YPBrLOx7GNk/0wttvVtlzWXAq9eLbQ4p/NicGxP+3T7KPEMVV//g+yubpw==} + + '@storybook/csf@0.1.11': + resolution: {integrity: sha512-dHYFQH3mA+EtnCkHXzicbLgsvzYjcDJ1JWsogbItZogkPHgSJM/Wr71uMkcvw8v9mmCyP4NpXJuu6bPoVsOnzg==} + + '@storybook/global@5.0.0': + resolution: {integrity: sha512-FcOqPAXACP0I3oJ/ws6/rrPT9WGhu915Cg8D02a9YxLo0DE9zI+a9A5gRGvmQ09fiWPukqI8ZAEoQEdWUKMQdQ==} + + '@storybook/icons@1.2.12': + resolution: {integrity: sha512-UxgyK5W3/UV4VrI3dl6ajGfHM4aOqMAkFLWe2KibeQudLf6NJpDrDMSHwZj+3iKC4jFU7dkKbbtH2h/al4sW3Q==} + engines: {node: '>=14.0.0'} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 + + '@storybook/instrumenter@8.3.6': + resolution: {integrity: sha512-0RowbKwoB/s7rtymlnKNiyWN1Z3ZK5mwgzVjlRmzxDL8hrdi5KDjTNExuJTRR3ZaBP2RR0/I3m/n0p9JhHAZvg==} + peerDependencies: + storybook: ^8.3.6 + + '@storybook/manager-api@8.3.6': + resolution: {integrity: sha512-Xt5VFZcL+G/9uzaHjzWFhxRNrP+4rPhSRKEvCZorAbC9+Hv+ZDs1JSZS5wMb4WKpXBZ0rwDVOLwngqbVtfRHuQ==} + peerDependencies: + storybook: ^8.3.6 + + '@storybook/preview-api@7.6.17': + resolution: {integrity: sha512-wLfDdI9RWo1f2zzFe54yRhg+2YWyxLZvqdZnSQ45mTs4/7xXV5Wfbv3QNTtcdw8tT3U5KRTrN1mTfTCiRJc0Kw==} + + '@storybook/preview-api@8.3.6': + resolution: {integrity: sha512-/Wxvb7wbI2O2iH63arRQQyyojA630vibdshkFjuC/u1nYdptEV1jkxa0OYmbZbKCn4/ze6uH4hfsKOpDPV9SWg==} + peerDependencies: + storybook: ^8.3.6 + + '@storybook/preview-web@7.6.17': + resolution: {integrity: sha512-LxyxBF4hKTmXci5eYSOQbtv3B7bvmhd38FMG7ExpA9zP8aAjccPdgDdE3PIuVLIGcEfE2RXFYMfo/AY91beyuw==} + + '@storybook/react-dom-shim@8.3.6': + resolution: {integrity: sha512-9BO6VXIdli4GHSfiP/Z0gwAf7oQig3D/yWK2U1+91UWDV8nIAgnNBAi76U4ORC6MiK5MdkDfIikIxnLLeLnahA==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta + storybook: ^8.3.6 + + '@storybook/react-vite@8.3.6': + resolution: {integrity: sha512-KXi4ZT4X7DsB4OOIWeR1XMH/Oz6Rp4TlWBNx/TgSEDGYEkPooqZK/O0S+G+VIsrRGQUf/57YqO73mP6kNluxTA==} + engines: {node: '>=18.0.0'} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta + storybook: ^8.3.6 + vite: ^4.0.0 || ^5.0.0 + + '@storybook/react@8.3.6': + resolution: {integrity: sha512-s3COryqIOYK7urgZaCPb77zlxGjPKr6dIsYmblQJcsFY2ZlG2x0Ysm8b5oRgD8Pv71hCJ0PKYA4RzDgBVYJS9A==} + engines: {node: '>=18.0.0'} + peerDependencies: + '@storybook/test': 8.3.6 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta + storybook: ^8.3.6 + typescript: '>= 4.2.x' + peerDependenciesMeta: + '@storybook/test': + optional: true + typescript: + optional: true + + '@storybook/test@8.3.6': + resolution: {integrity: sha512-WIc8LzK9jaEw+e3OiweEM2j3cppPzsWod59swuf6gDBf176EQLIyjtVc+Kh3qO4NNkcL+lwmqaLPjOxlBLaDbg==} + peerDependencies: + storybook: ^8.3.6 + + '@storybook/theming@8.3.6': + resolution: {integrity: sha512-LQjUk6GXRW9ELkoBKuqzQKFUW+ajfGPfVELcfs3/VQX61VhthJ4olov4bGPc04wsmmFMgN/qODxT485IwOHfPQ==} + peerDependencies: + storybook: ^8.3.6 + + '@storybook/types@7.6.17': + resolution: {integrity: sha512-GRY0xEJQ0PrL7DY2qCNUdIfUOE0Gsue6N+GBJw9ku1IUDFLJRDOF+4Dx2BvYcVCPI5XPqdWKlEyZdMdKjiQN7Q==} + + '@tanstack/eslint-plugin-query@5.59.7': + resolution: {integrity: sha512-txQGX5yC+4gmbR81EXaum2tOxeDQkRCWnaLmaP/pSrbIVCUkbMbrxxsaoOgN+fBqqqGo9V3LoCVL6ez1tRUF7Q==} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + + '@tanstack/query-core@5.59.13': + resolution: {integrity: sha512-Oou0bBu/P8+oYjXsJQ11j+gcpLAMpqW42UlokQYEz4dE7+hOtVO9rVuolJKgEccqzvyFzqX4/zZWY+R/v1wVsQ==} + + '@tanstack/query-devtools@5.58.0': + resolution: {integrity: sha512-iFdQEFXaYYxqgrv63ots+65FGI+tNp5ZS5PdMU1DWisxk3fez5HG3FyVlbUva+RdYS5hSLbxZ9aw3yEs97GNTw==} + + '@tanstack/react-query-devtools@5.59.15': + resolution: {integrity: sha512-rX28KTivkA2XEn3Fj9ckDtnTPY8giWYgssySSAperpVol4+th+NCij/MhLylfB+Mfg2JfCxOcwnM/fwzS8iSog==} + peerDependencies: + '@tanstack/react-query': ^5.59.15 + react: ^18 || ^19 + + '@tanstack/react-query@5.59.15': + resolution: {integrity: sha512-QbVlAkTI78wB4Mqgf2RDmgC0AOiJqer2c5k9STOOSXGv1S6ZkY37r/6UpE8DbQ2Du0ohsdoXgFNEyv+4eDoPEw==} + peerDependencies: + react: ^18 || ^19 + + '@tanstack/react-table@8.20.5': + resolution: {integrity: sha512-WEHopKw3znbUZ61s9i0+i9g8drmDo6asTWbrQh8Us63DAk/M0FkmIqERew6P71HI75ksZ2Pxyuf4vvKh9rAkiA==} + engines: {node: '>=12'} + peerDependencies: + react: '>=16.8' + react-dom: '>=16.8' + + '@tanstack/table-core@8.20.5': + resolution: {integrity: sha512-P9dF7XbibHph2PFRz8gfBKEXEY/HJPOhym8CHmjF8y3q5mWpKx9xtZapXQUWCgkqvsK0R46Azuz+VaxD4Xl+Tg==} + engines: {node: '>=12'} + + '@testing-library/dom@10.4.0': + resolution: {integrity: sha512-pemlzrSESWbdAloYml3bAJMEfNh1Z7EduzqPKprCH5S341frlpYnUEW0H72dLxa6IsYr+mPno20GiSm+h9dEdQ==} + engines: {node: '>=18'} + + '@testing-library/jest-dom@6.5.0': + resolution: {integrity: sha512-xGGHpBXYSHUUr6XsKBfs85TWlYKpTc37cSBBVrXcib2MkHLboWlkClhWF37JKlDb9KEq3dHs+f2xR7XJEWGBxA==} + engines: {node: '>=14', npm: '>=6', yarn: '>=1'} + + '@testing-library/user-event@14.5.2': + resolution: {integrity: sha512-YAh82Wh4TIrxYLmfGcixwD18oIjyC1pFQC2Y01F2lzV2HTMiYrI0nze0FD0ocB//CKS/7jIUgae+adPqxK5yCQ==} + engines: {node: '>=12', npm: '>=6'} + peerDependencies: + '@testing-library/dom': '>=7.21.4' + + '@types/aria-query@5.0.4': + resolution: {integrity: sha512-rfT93uj5s0PRL7EzccGMs3brplhcrghnDoV26NqKhCAS1hVo+WdNsPvE/yb6ilfr5hi2MEk6d5EWJTKdxg8jVw==} + + '@types/babel__core@7.20.5': + resolution: {integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==} + + '@types/babel__generator@7.6.8': + resolution: {integrity: sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==} + + '@types/babel__template@7.4.4': + resolution: {integrity: sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==} + + '@types/babel__traverse@7.20.6': + resolution: {integrity: sha512-r1bzfrm0tomOI8g1SzvCaQHo6Lcv6zu0EA+W2kHrt8dyrHQxGzBBL4kdkzIS+jBMV+EYcMAEAqXqYaLJq5rOZg==} + + '@types/body-parser@1.19.5': + resolution: {integrity: sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==} + + '@types/connect@3.4.38': + resolution: {integrity: sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==} + + '@types/conventional-commits-parser@5.0.0': + resolution: {integrity: sha512-loB369iXNmAZglwWATL+WRe+CRMmmBPtpolYzIebFaX4YA3x+BEfLqhUAV9WanycKI3TG1IMr5bMJDajDKLlUQ==} + + '@types/cookie@0.6.0': + resolution: {integrity: sha512-4Kh9a6B2bQciAhf7FSuMRRkUWecJgJu9nPnx3yzpsfXX/c50REIqpHY4C82bXP90qrLtXtkDxTZosYO3UpOwlA==} + + '@types/doctrine@0.0.9': + resolution: {integrity: sha512-eOIHzCUSH7SMfonMG1LsC2f8vxBFtho6NGBznK41R84YzPuvSBzrhEps33IsQiOW9+VL6NQ9DbjQJznk/S4uRA==} + + '@types/escodegen@0.0.6': + resolution: {integrity: sha512-AjwI4MvWx3HAOaZqYsjKWyEObT9lcVV0Y0V8nXo6cXzN8ZiMxVhf6F3d/UNvXVGKrEzL/Dluc5p+y9GkzlTWig==} + + '@types/estree@0.0.51': + resolution: {integrity: sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ==} + + '@types/estree@1.0.6': + resolution: {integrity: sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==} + + '@types/express-serve-static-core@4.19.6': + resolution: {integrity: sha512-N4LZ2xG7DatVqhCZzOGb1Yi5lMbXSZcmdLDe9EzSndPV2HpWYWzRbaerl2n27irrm94EPpprqa8KpskPT085+A==} + + '@types/express@4.17.21': + resolution: {integrity: sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ==} + + '@types/find-cache-dir@3.2.1': + resolution: {integrity: sha512-frsJrz2t/CeGifcu/6uRo4b+SzAwT4NYCVPu1GN8IB9XTzrpPkGuV0tmh9mN+/L0PklAlsC3u5Fxt0ju00LXIw==} + + '@types/glob@7.2.0': + resolution: {integrity: sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==} + + '@types/hast@3.0.4': + resolution: {integrity: sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==} + + '@types/http-errors@2.0.4': + resolution: {integrity: sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA==} + + '@types/json-schema@7.0.15': + resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} + + '@types/json5@0.0.29': + resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} + + '@types/lodash@4.17.11': + resolution: {integrity: sha512-jzqWo/uQP/iqeGGTjhgFp2yaCrCYTauASQcpdzESNCkHjSprBJVcZP9KG9aQ0q+xcsXiKd/iuw/4dLjS3Odc7Q==} + + '@types/mdx@2.0.13': + resolution: {integrity: sha512-+OWZQfAYyio6YkJb3HLxDrvnx6SWWDbC0zVPfBRzUk0/nqoDyf6dNxQi3eArPe8rJ473nobTMQ/8Zk+LxJ+Yuw==} + + '@types/mime@1.3.5': + resolution: {integrity: sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==} + + '@types/minimatch@5.1.2': + resolution: {integrity: sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==} + + '@types/mute-stream@0.0.4': + resolution: {integrity: sha512-CPM9nzrCPPJHQNA9keH9CVkVI+WR5kMa+7XEs5jcGQ0VoAGnLv242w8lIVgwAEfmE4oufJRaTc9PNLQl0ioAow==} + + '@types/node@22.7.6': + resolution: {integrity: sha512-/d7Rnj0/ExXDMcioS78/kf1lMzYk4BZV8MZGTBKzTGZ6/406ukkbYlIsZmMPhcR5KlkunDHQLrtAVmSq7r+mSw==} + + '@types/prop-types@15.7.13': + resolution: {integrity: sha512-hCZTSvwbzWGvhqxp/RqVqwU999pBf2vp7hzIjiYOsl8wqOmUxkQ6ddw1cV3l8811+kdUFus/q4d1Y3E3SyEifA==} + + '@types/qs@6.9.16': + resolution: {integrity: sha512-7i+zxXdPD0T4cKDuxCUXJ4wHcsJLwENa6Z3dCu8cfCK743OGy5Nu1RmAGqDPsoTDINVEcdXKRvR/zre+P2Ku1A==} + + '@types/range-parser@1.2.7': + resolution: {integrity: sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==} + + '@types/react-dom@18.3.1': + resolution: {integrity: sha512-qW1Mfv8taImTthu4KoXgDfLuk4bydU6Q/TkADnDWWHwi4NX4BR+LWfTp2sVmTqRrsHvyDDTelgelxJ+SsejKKQ==} + + '@types/react@18.3.11': + resolution: {integrity: sha512-r6QZ069rFTjrEYgFdOck1gK7FLVsgJE7tTz0pQBczlBNUhBNk0MQH4UbnFSwjpQLMkLzgqvBBa+qGpLje16eTQ==} + + '@types/resolve@1.20.6': + resolution: {integrity: sha512-A4STmOXPhMUtHH+S6ymgE2GiBSMqf4oTvcQZMcHzokuTLVYzXTB8ttjcgxOVaAp2lGwEdzZ0J+cRbbeevQj1UQ==} + + '@types/semver@7.5.8': + resolution: {integrity: sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==} + + '@types/send@0.17.4': + resolution: {integrity: sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==} + + '@types/serve-static@1.15.7': + resolution: {integrity: sha512-W8Ym+h8nhuRwaKPaDw34QUkwsGi6Rc4yYqvKFo5rm2FUEhCFbzVWrxXUxuKK8TASjWsysJY0nsmNCGhCOIsrOw==} + + '@types/statuses@2.0.5': + resolution: {integrity: sha512-jmIUGWrAiwu3dZpxntxieC+1n/5c3mjrImkmOSQ2NC5uP6cYO4aAZDdSmRcI5C1oiTmqlZGHC+/NmJrKogbP5A==} + + '@types/tough-cookie@4.0.5': + resolution: {integrity: sha512-/Ad8+nIOV7Rl++6f1BdKxFSMgmoqEoYbHRpPcx3JEfv8VRsQe9Z4mCXeJBzxs7mbHY/XOZZuXlRNfhpVPbs6ZA==} + + '@types/unist@3.0.3': + resolution: {integrity: sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==} + + '@types/uuid@9.0.8': + resolution: {integrity: sha512-jg+97EGIcY9AGHJJRaaPVgetKDsrTgbRjQ5Msgjh/DQKEFl0DtyRr/VCOyD1T2R1MNeWPK/u7JoGhlDZnKBAfA==} + + '@types/validator@13.12.2': + resolution: {integrity: sha512-6SlHBzUW8Jhf3liqrGGXyTJSIFe4nqlJ5A5KaMZ2l/vbM3Wh3KSybots/wfWVzNLK4D1NZluDlSQIbIEPx6oyA==} + + '@types/wrap-ansi@3.0.0': + resolution: {integrity: sha512-ltIpx+kM7g/MLRZfkbL7EsCEjfzCcScLpkg37eXEtx5kmrAKBkTJwd1GIAjDSL8wTpM6Hzn5YO4pSb91BEwu1g==} + + '@typescript-eslint/eslint-plugin@8.10.0': + resolution: {integrity: sha512-phuB3hoP7FFKbRXxjl+DRlQDuJqhpOnm5MmtROXyWi3uS/Xg2ZXqiQfcG2BJHiN4QKyzdOJi3NEn/qTnjUlkmQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + '@typescript-eslint/parser': ^8.0.0 || ^8.0.0-alpha.0 + eslint: ^8.57.0 || ^9.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + + '@typescript-eslint/eslint-plugin@8.12.2': + resolution: {integrity: sha512-gQxbxM8mcxBwaEmWdtLCIGLfixBMHhQjBqR8sVWNTPpcj45WlYL2IObS/DNMLH1DBP0n8qz+aiiLTGfopPEebw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + '@typescript-eslint/parser': ^8.0.0 || ^8.0.0-alpha.0 + eslint: ^8.57.0 || ^9.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + + '@typescript-eslint/parser@8.10.0': + resolution: {integrity: sha512-E24l90SxuJhytWJ0pTQydFT46Nk0Z+bsLKo/L8rtQSL93rQ6byd1V/QbDpHUTdLPOMsBCcYXZweADNCfOCmOAg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + + '@typescript-eslint/parser@8.12.2': + resolution: {integrity: sha512-MrvlXNfGPLH3Z+r7Tk+Z5moZAc0dzdVjTgUgwsdGweH7lydysQsnSww3nAmsq8blFuRD5VRlAr9YdEFw3e6PBw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + + '@typescript-eslint/scope-manager@5.62.0': + resolution: {integrity: sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + '@typescript-eslint/scope-manager@8.10.0': + resolution: {integrity: sha512-AgCaEjhfql9MDKjMUxWvH7HjLeBqMCBfIaBbzzIcBbQPZE7CPh1m6FF+L75NUMJFMLYhCywJXIDEMa3//1A0dw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@typescript-eslint/scope-manager@8.12.2': + resolution: {integrity: sha512-gPLpLtrj9aMHOvxJkSbDBmbRuYdtiEbnvO25bCMza3DhMjTQw0u7Y1M+YR5JPbMsXXnSPuCf5hfq0nEkQDL/JQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@typescript-eslint/type-utils@8.10.0': + resolution: {integrity: sha512-PCpUOpyQSpxBn230yIcK+LeCQaXuxrgCm2Zk1S+PTIRJsEfU6nJ0TtwyH8pIwPK/vJoA+7TZtzyAJSGBz+s/dg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + + '@typescript-eslint/type-utils@8.12.2': + resolution: {integrity: sha512-bwuU4TAogPI+1q/IJSKuD4shBLc/d2vGcRT588q+jzayQyjVK2X6v/fbR4InY2U2sgf8MEvVCqEWUzYzgBNcGQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + + '@typescript-eslint/types@5.62.0': + resolution: {integrity: sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + '@typescript-eslint/types@8.10.0': + resolution: {integrity: sha512-k/E48uzsfJCRRbGLapdZgrX52csmWJ2rcowwPvOZ8lwPUv3xW6CcFeJAXgx4uJm+Ge4+a4tFOkdYvSpxhRhg1w==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@typescript-eslint/types@8.12.2': + resolution: {integrity: sha512-VwDwMF1SZ7wPBUZwmMdnDJ6sIFk4K4s+ALKLP6aIQsISkPv8jhiw65sAK6SuWODN/ix+m+HgbYDkH+zLjrzvOA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@typescript-eslint/typescript-estree@5.62.0': + resolution: {integrity: sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + + '@typescript-eslint/typescript-estree@8.10.0': + resolution: {integrity: sha512-3OE0nlcOHaMvQ8Xu5gAfME3/tWVDpb/HxtpUZ1WeOAksZ/h/gwrBzCklaGzwZT97/lBbbxJ16dMA98JMEngW4w==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + + '@typescript-eslint/typescript-estree@8.12.2': + resolution: {integrity: sha512-mME5MDwGe30Pq9zKPvyduyU86PH7aixwqYR2grTglAdB+AN8xXQ1vFGpYaUSJ5o5P/5znsSBeNcs5g5/2aQwow==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + + '@typescript-eslint/utils@5.62.0': + resolution: {integrity: sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + + '@typescript-eslint/utils@8.10.0': + resolution: {integrity: sha512-Oq4uZ7JFr9d1ZunE/QKy5egcDRXT/FrS2z/nlxzPua2VHFtmMvFNDvpq1m/hq0ra+T52aUezfcjGRIB7vNJF9w==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + + '@typescript-eslint/utils@8.12.2': + resolution: {integrity: sha512-UTTuDIX3fkfAz6iSVa5rTuSfWIYZ6ATtEocQ/umkRSyC9O919lbZ8dcH7mysshrCdrAM03skJOEYaBugxN+M6A==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + + '@typescript-eslint/visitor-keys@5.62.0': + resolution: {integrity: sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + '@typescript-eslint/visitor-keys@8.10.0': + resolution: {integrity: sha512-k8nekgqwr7FadWk548Lfph6V3r9OVqjzAIVskE7orMZR23cGJjAOVazsZSJW+ElyjfTM4wx/1g88Mi70DDtG9A==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@typescript-eslint/visitor-keys@8.12.2': + resolution: {integrity: sha512-PChz8UaKQAVNHghsHcPyx1OMHoFRUEA7rJSK/mDhdq85bk+PLsUHUBqTQTFt18VJZbmxBovM65fezlheQRsSDA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@ungap/structured-clone@1.2.0': + resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==} + + '@vitejs/plugin-react@4.3.2': + resolution: {integrity: sha512-hieu+o05v4glEBucTcKMK3dlES0OeJlD9YVOAPraVMOInBCwzumaIFiUjr4bHK7NPgnAHgiskUoceKercrN8vg==} + engines: {node: ^14.18.0 || >=16.0.0} + peerDependencies: + vite: ^4.2.0 || ^5.0.0 + + '@vitest/expect@2.0.5': + resolution: {integrity: sha512-yHZtwuP7JZivj65Gxoi8upUN2OzHTi3zVfjwdpu2WrvCZPLwsJ2Ey5ILIPccoW23dd/zQBlJ4/dhi7DWNyXCpA==} + + '@vitest/pretty-format@2.0.5': + resolution: {integrity: sha512-h8k+1oWHfwTkyTkb9egzwNMfJAEx4veaPSnMeKbVSjp4euqGSbQlm5+6VHwTr7u4FJslVVsUG5nopCaAYdOmSQ==} + + '@vitest/pretty-format@2.1.3': + resolution: {integrity: sha512-XH1XdtoLZCpqV59KRbPrIhFCOO0hErxrQCMcvnQete3Vibb9UeIOX02uFPfVn3Z9ZXsq78etlfyhnkmIZSzIwQ==} + + '@vitest/spy@2.0.5': + resolution: {integrity: sha512-c/jdthAhvJdpfVuaexSrnawxZz6pywlTPe84LUB2m/4t3rl2fTo9NFGBG4oWgaD+FTgDDV8hJ/nibT7IfH3JfA==} + + '@vitest/utils@2.0.5': + resolution: {integrity: sha512-d8HKbqIcya+GR67mkZbrzhS5kKhtp8dQLcmRZLGTscGVg7yImT82cIrhtn2L8+VujWcy6KZweApgNmPsTAO/UQ==} + + '@vitest/utils@2.1.3': + resolution: {integrity: sha512-xpiVfDSg1RrYT0tX6czgerkpcKFmFOF/gCr30+Mve5V2kewCy4Prn1/NDMSRwaSmT7PRaOF83wu+bEtsY1wrvA==} + + JSONStream@1.3.5: + resolution: {integrity: sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==} + hasBin: true + + accepts@1.3.8: + resolution: {integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==} + engines: {node: '>= 0.6'} + + acorn-jsx@5.3.2: + resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} + peerDependencies: + acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 + + acorn-walk@7.2.0: + resolution: {integrity: sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==} + engines: {node: '>=0.4.0'} + + acorn@7.4.1: + resolution: {integrity: sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==} + engines: {node: '>=0.4.0'} + hasBin: true + + acorn@8.13.0: + resolution: {integrity: sha512-8zSiw54Oxrdym50NlZ9sUusyO1Z1ZchgRLWRaK6c86XJFClyCgFKetdowBg5bKxyp/u+CDBJG4Mpp0m3HLZl9w==} + engines: {node: '>=0.4.0'} + hasBin: true + + ajv@6.12.6: + resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} + + ajv@8.17.1: + resolution: {integrity: sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==} + + ansi-escapes@4.3.2: + resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==} + engines: {node: '>=8'} + + ansi-escapes@7.0.0: + resolution: {integrity: sha512-GdYO7a61mR0fOlAsvC9/rIHf7L96sBc6dEWzeOu+KAea5bZyQRPIpojrVoI4AXGJS/ycu/fBTdLrUkA4ODrvjw==} + engines: {node: '>=18'} + + ansi-regex@5.0.1: + resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} + engines: {node: '>=8'} + + ansi-regex@6.1.0: + resolution: {integrity: sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==} + engines: {node: '>=12'} + + ansi-styles@3.2.1: + resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} + engines: {node: '>=4'} + + ansi-styles@4.3.0: + resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} + engines: {node: '>=8'} + + ansi-styles@5.2.0: + resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==} + engines: {node: '>=10'} + + ansi-styles@6.2.1: + resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} + engines: {node: '>=12'} + + any-promise@1.3.0: + resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} + + anymatch@3.1.3: + resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} + engines: {node: '>= 8'} + + arg@5.0.2: + resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==} + + argparse@2.0.1: + resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} + + aria-hidden@1.2.4: + resolution: {integrity: sha512-y+CcFFwelSXpLZk/7fMB2mUbGtX9lKycf1MWJ7CaTIERyitVlyQx6C+sxcROU2BAJ24OiZyK+8wj2i8AlBoS3A==} + engines: {node: '>=10'} + + aria-query@5.1.3: + resolution: {integrity: sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ==} + + aria-query@5.3.0: + resolution: {integrity: sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==} + + aria-query@5.3.2: + resolution: {integrity: sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==} + engines: {node: '>= 0.4'} + + array-buffer-byte-length@1.0.1: + resolution: {integrity: sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==} + engines: {node: '>= 0.4'} + + array-flatten@1.1.1: + resolution: {integrity: sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==} + + array-ify@1.0.0: + resolution: {integrity: sha512-c5AMf34bKdvPhQ7tBGhqkgKNUzMr4WUs+WDtC2ZUGOUncbxKMTvqxYctiseW3+L4bA8ec+GcZ6/A/FW4m8ukng==} + + array-includes@3.1.8: + resolution: {integrity: sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==} + engines: {node: '>= 0.4'} + + array-union@2.1.0: + resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} + engines: {node: '>=8'} + + array.prototype.findlast@1.2.5: + resolution: {integrity: sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ==} + engines: {node: '>= 0.4'} + + array.prototype.findlastindex@1.2.5: + resolution: {integrity: sha512-zfETvRFA8o7EiNn++N5f/kaCw221hrpGsDmcpndVupkPzEc1Wuf3VgC0qby1BbHs7f5DVYjgtEU2LLh5bqeGfQ==} + engines: {node: '>= 0.4'} + + array.prototype.flat@1.3.2: + resolution: {integrity: sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==} + engines: {node: '>= 0.4'} + + array.prototype.flatmap@1.3.2: + resolution: {integrity: sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==} + engines: {node: '>= 0.4'} + + array.prototype.tosorted@1.1.4: + resolution: {integrity: sha512-p6Fx8B7b7ZhL/gmUsAy0D15WhvDccw3mnGNbZpi3pmeJdxtWsj2jEaI4Y6oo3XiHfzuSgPwKc04MYt6KgvC/wA==} + engines: {node: '>= 0.4'} + + arraybuffer.prototype.slice@1.0.3: + resolution: {integrity: sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==} + engines: {node: '>= 0.4'} + + assertion-error@2.0.1: + resolution: {integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==} + engines: {node: '>=12'} + + ast-types-flow@0.0.8: + resolution: {integrity: sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ==} + + ast-types@0.16.1: + resolution: {integrity: sha512-6t10qk83GOG8p0vKmaCr8eiilZwO171AvbROMtvvNiwrTly62t+7XkA8RdIIVbpMhCASAsxgAzdRSwh6nw/5Dg==} + engines: {node: '>=4'} + + asynckit@0.4.0: + resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} + + autoprefixer@10.4.20: + resolution: {integrity: sha512-XY25y5xSv/wEoqzDyXXME4AFfkZI0P23z6Fs3YgymDnKJkCGOnkL0iTxCa85UTqaSgfcqyf3UA6+c7wUvx/16g==} + engines: {node: ^10 || ^12 || >=14} + hasBin: true + peerDependencies: + postcss: ^8.1.0 + + available-typed-arrays@1.0.7: + resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==} + engines: {node: '>= 0.4'} + + axe-core@4.10.1: + resolution: {integrity: sha512-qPC9o+kD8Tir0lzNGLeghbOrWMr3ZJpaRlCIb6Uobt/7N4FiEDvqUMnxzCHRHmg8vOg14kr5gVNyScRmbMaJ9g==} + engines: {node: '>=4'} + + axios@1.7.7: + resolution: {integrity: sha512-S4kL7XrjgBmvdGut0sN3yJxqYzrDOnivkBiN0OFs6hLiUam3UPvswUo0kqGyhqUZGEOytHyumEdXsAkgCOUf3Q==} + + axobject-query@4.1.0: + resolution: {integrity: sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==} + engines: {node: '>= 0.4'} + + balanced-match@1.0.2: + resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + + better-opn@3.0.2: + resolution: {integrity: sha512-aVNobHnJqLiUelTaHat9DZ1qM2w0C0Eym4LPI/3JxOnSokGVdsl1T1kN7TFvsEAD8G47A6VKQ0TVHqbBnYMJlQ==} + engines: {node: '>=12.0.0'} + + binary-extensions@2.3.0: + resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} + engines: {node: '>=8'} + + body-parser@1.20.3: + resolution: {integrity: sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==} + engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} + + brace-expansion@1.1.11: + resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} + + brace-expansion@2.0.1: + resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} + + braces@3.0.3: + resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} + engines: {node: '>=8'} + + browser-assert@1.2.1: + resolution: {integrity: sha512-nfulgvOR6S4gt9UKCeGJOuSGBPGiFT6oQ/2UBnvTY/5aQ1PnksW72fhZkM30DzoRRv2WpwZf1vHHEr3mtuXIWQ==} + + browserslist@4.24.0: + resolution: {integrity: sha512-Rmb62sR1Zpjql25eSanFGEhAxcFwfA1K0GuQcLoaJBAcENegrQut3hYdhXFF1obQfiDyqIW/cLM5HSJ/9k884A==} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + hasBin: true + + bytes@3.1.2: + resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==} + engines: {node: '>= 0.8'} + + call-bind@1.0.7: + resolution: {integrity: sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==} + engines: {node: '>= 0.4'} + + callsites@3.1.0: + resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} + engines: {node: '>=6'} + + camelcase-css@2.0.1: + resolution: {integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==} + engines: {node: '>= 6'} + + caniuse-lite@1.0.30001669: + resolution: {integrity: sha512-DlWzFDJqstqtIVx1zeSpIMLjunf5SmwOw0N2Ck/QSQdS8PLS4+9HrLaYei4w8BIAL7IB/UEDu889d8vhCTPA0w==} + + chai@5.1.1: + resolution: {integrity: sha512-pT1ZgP8rPNqUgieVaEY+ryQr6Q4HXNg8Ei9UnLUrjN4IA7dvQC5JB+/kxVcPNDHyBcc/26CXPkbNzq3qwrOEKA==} + engines: {node: '>=12'} + + chalk@2.4.2: + resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} + engines: {node: '>=4'} + + chalk@3.0.0: + resolution: {integrity: sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==} + engines: {node: '>=8'} + + chalk@4.1.2: + resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} + engines: {node: '>=10'} + + chalk@5.3.0: + resolution: {integrity: sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==} + engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} + + check-error@2.1.1: + resolution: {integrity: sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==} + engines: {node: '>= 16'} + + chokidar@3.6.0: + resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} + engines: {node: '>= 8.10.0'} + + class-variance-authority@0.7.0: + resolution: {integrity: sha512-jFI8IQw4hczaL4ALINxqLEXQbWcNjoSkloa4IaufXCJr6QawJyw7tuRysRsrE8w2p/4gGaxKIt/hX3qz/IbD1A==} + + cli-cursor@5.0.0: + resolution: {integrity: sha512-aCj4O5wKyszjMmDT4tZj93kxyydN/K5zPWSCe6/0AV/AA1pqe5ZBIw0a2ZfPQV7lL5/yb5HsUreJ6UFAF1tEQw==} + engines: {node: '>=18'} + + cli-truncate@4.0.0: + resolution: {integrity: sha512-nPdaFdQ0h/GEigbPClz11D0v/ZJEwxmeVZGeMo3Z5StPtUTkA9o1lD6QwoirYiSDzbcwn2XcjwmCp68W1IS4TA==} + engines: {node: '>=18'} + + cli-width@4.1.0: + resolution: {integrity: sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ==} + engines: {node: '>= 12'} + + cliui@8.0.1: + resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} + engines: {node: '>=12'} + + clsx@2.0.0: + resolution: {integrity: sha512-rQ1+kcj+ttHG0MKVGBUXwayCCF1oh39BF5COIpRzuCEv8Mwjv0XucrI2ExNTOn9IlLifGClWQcU9BrZORvtw6Q==} + engines: {node: '>=6'} + + clsx@2.1.1: + resolution: {integrity: sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==} + engines: {node: '>=6'} + + cmdk@1.0.0: + resolution: {integrity: sha512-gDzVf0a09TvoJ5jnuPvygTB77+XdOSwEmJ88L6XPFPlv7T3RxbP9jgenfylrAMD0+Le1aO0nVjQUzl2g+vjz5Q==} + peerDependencies: + react: ^18.0.0 + react-dom: ^18.0.0 + + color-convert@1.9.3: + resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} + + color-convert@2.0.1: + resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} + engines: {node: '>=7.0.0'} + + color-name@1.1.3: + resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} + + color-name@1.1.4: + resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + + colorette@2.0.20: + resolution: {integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==} + + combined-stream@1.0.8: + resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} + engines: {node: '>= 0.8'} + + commander@12.1.0: + resolution: {integrity: sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==} + engines: {node: '>=18'} + + commander@4.1.1: + resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} + engines: {node: '>= 6'} + + commitlint@19.5.0: + resolution: {integrity: sha512-lCtwxgFulvMnCgBc8MVPlVMf+PNOqQSBhHpEnjV2JjEQEAhxjVDtC7IeuEtR+hHpGvHt6CwlLtm3uZNyEby5dQ==} + engines: {node: '>=v18'} + hasBin: true + + commondir@1.0.1: + resolution: {integrity: sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==} + + compare-func@2.0.0: + resolution: {integrity: sha512-zHig5N+tPWARooBnb0Zx1MFcdfpyJrfTJ3Y5L+IFvUm8rM74hHz66z0gw0x4tijh5CorKkKUCnW82R2vmpeCRA==} + + concat-map@0.0.1: + resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} + + confusing-browser-globals@1.0.11: + resolution: {integrity: sha512-JsPKdmh8ZkmnHxDk55FZ1TqVLvEQTvoByJZRN9jzI0UjxK/QgAmsphz7PGtqgPieQZ/CQcHWXCR7ATDNhGe+YA==} + + content-disposition@0.5.4: + resolution: {integrity: sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==} + engines: {node: '>= 0.6'} + + content-type@1.0.5: + resolution: {integrity: sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==} + engines: {node: '>= 0.6'} + + conventional-changelog-angular@7.0.0: + resolution: {integrity: sha512-ROjNchA9LgfNMTTFSIWPzebCwOGFdgkEq45EnvvrmSLvCtAw0HSmrCs7/ty+wAeYUZyNay0YMUNYFTRL72PkBQ==} + engines: {node: '>=16'} + + conventional-changelog-conventionalcommits@7.0.2: + resolution: {integrity: sha512-NKXYmMR/Hr1DevQegFB4MwfM5Vv0m4UIxKZTTYuD98lpTknaZlSRrDOG4X7wIXpGkfsYxZTghUN+Qq+T0YQI7w==} + engines: {node: '>=16'} + + conventional-commits-parser@5.0.0: + resolution: {integrity: sha512-ZPMl0ZJbw74iS9LuX9YIAiW8pfM5p3yh2o/NbXHbkFuZzY5jvdi5jFycEOkmBW5H5I7nA+D6f3UcsCLP2vvSEA==} + engines: {node: '>=16'} + hasBin: true + + convert-source-map@2.0.0: + resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} + + cookie-signature@1.0.6: + resolution: {integrity: sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==} + + cookie@0.5.0: + resolution: {integrity: sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==} + engines: {node: '>= 0.6'} + + cookie@0.7.1: + resolution: {integrity: sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w==} + engines: {node: '>= 0.6'} + + cosmiconfig-typescript-loader@5.0.0: + resolution: {integrity: sha512-+8cK7jRAReYkMwMiG+bxhcNKiHJDM6bR9FD/nGBXOWdMLuYawjF5cGrtLilJ+LGd3ZjCXnJjR5DkfWPoIVlqJA==} + engines: {node: '>=v16'} + peerDependencies: + '@types/node': '*' + cosmiconfig: '>=8.2' + typescript: '>=4' + + cosmiconfig@9.0.0: + resolution: {integrity: sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==} + engines: {node: '>=14'} + peerDependencies: + typescript: '>=4.9.5' + peerDependenciesMeta: + typescript: + optional: true + + cross-spawn@7.0.3: + resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} + engines: {node: '>= 8'} + + css.escape@1.5.1: + resolution: {integrity: sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg==} + + cssesc@3.0.0: + resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} + engines: {node: '>=4'} + hasBin: true + + csstype@3.1.3: + resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} + + damerau-levenshtein@1.0.8: + resolution: {integrity: sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==} + + dargs@8.1.0: + resolution: {integrity: sha512-wAV9QHOsNbwnWdNW2FYvE1P56wtgSbM+3SZcdGiWQILwVjACCXDCI3Ai8QlCjMDB8YK5zySiXZYBiwGmNY3lnw==} + engines: {node: '>=12'} + + data-view-buffer@1.0.1: + resolution: {integrity: sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==} + engines: {node: '>= 0.4'} + + data-view-byte-length@1.0.1: + resolution: {integrity: sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==} + engines: {node: '>= 0.4'} + + data-view-byte-offset@1.0.0: + resolution: {integrity: sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==} + engines: {node: '>= 0.4'} + + date-fns@4.1.0: + resolution: {integrity: sha512-Ukq0owbQXxa/U3EGtsdVBkR1w7KOQ5gIBqdH2hkvknzZPYvBxb/aa6E8L7tmjFtkwZBu3UXBbjIgPo/Ez4xaNg==} + + debug@2.6.9: + resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + + debug@3.2.7: + resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + + debug@4.3.7: + resolution: {integrity: sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + + deep-eql@5.0.2: + resolution: {integrity: sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==} + engines: {node: '>=6'} + + deep-equal@2.2.3: + resolution: {integrity: sha512-ZIwpnevOurS8bpT4192sqAowWM76JDKSHYzMLty3BZGSswgq6pBaH3DhCSW5xVAZICZyKdOBPjwww5wfgT/6PA==} + engines: {node: '>= 0.4'} + + deep-is@0.1.4: + resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} + + define-data-property@1.1.4: + resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==} + engines: {node: '>= 0.4'} + + define-lazy-prop@2.0.0: + resolution: {integrity: sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==} + engines: {node: '>=8'} + + define-properties@1.2.1: + resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} + engines: {node: '>= 0.4'} + + delayed-stream@1.0.0: + resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} + engines: {node: '>=0.4.0'} + + depd@2.0.0: + resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==} + engines: {node: '>= 0.8'} + + dequal@2.0.3: + resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} + engines: {node: '>=6'} + + destroy@1.2.0: + resolution: {integrity: sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==} + engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} + + detect-node-es@1.1.0: + resolution: {integrity: sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==} + + didyoumean@1.2.2: + resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==} + + dir-glob@3.0.1: + resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} + engines: {node: '>=8'} + + dlv@1.1.3: + resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==} + + doctrine@2.1.0: + resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==} + engines: {node: '>=0.10.0'} + + doctrine@3.0.0: + resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} + engines: {node: '>=6.0.0'} + + dom-accessibility-api@0.5.16: + resolution: {integrity: sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg==} + + dom-accessibility-api@0.6.3: + resolution: {integrity: sha512-7ZgogeTnjuHbo+ct10G9Ffp0mif17idi0IyWNVA/wcwcm7NPOD/WEHVP3n7n3MhXqxoIYm8d6MuZohYWIZ4T3w==} + + dot-prop@5.3.0: + resolution: {integrity: sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==} + engines: {node: '>=8'} + + eastasianwidth@0.2.0: + resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} + + ee-first@1.1.1: + resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} + + electron-to-chromium@1.5.41: + resolution: {integrity: sha512-dfdv/2xNjX0P8Vzme4cfzHqnPm5xsZXwsolTYr0eyW18IUmNyG08vL+fttvinTfhKfIKdRoqkDIC9e9iWQCNYQ==} + + emoji-regex@10.4.0: + resolution: {integrity: sha512-EC+0oUMY1Rqm4O6LLrgjtYDvcVYTy7chDnM4Q7030tP4Kwj3u/pR6gP9ygnp2CJMK5Gq+9Q2oqmrFJAz01DXjw==} + + emoji-regex@8.0.0: + resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} + + emoji-regex@9.2.2: + resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} + + encodeurl@1.0.2: + resolution: {integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==} + engines: {node: '>= 0.8'} + + encodeurl@2.0.0: + resolution: {integrity: sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==} + engines: {node: '>= 0.8'} + + enhanced-resolve@5.17.1: + resolution: {integrity: sha512-LMHl3dXhTcfv8gM4kEzIUeTQ+7fpdA0l2tUf34BddXPkz2A5xJ5L/Pchd5BL6rdccM9QGvu0sWZzK1Z1t4wwyg==} + engines: {node: '>=10.13.0'} + + env-paths@2.2.1: + resolution: {integrity: sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==} + engines: {node: '>=6'} + + environment@1.1.0: + resolution: {integrity: sha512-xUtoPkMggbz0MPyPiIWr1Kp4aeWJjDZ6SMvURhimjdZgsRuDplF5/s9hcgGhyXMhs+6vpnuoiZ2kFiu3FMnS8Q==} + engines: {node: '>=18'} + + error-ex@1.3.2: + resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} + + es-abstract@1.23.3: + resolution: {integrity: sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A==} + engines: {node: '>= 0.4'} + + es-define-property@1.0.0: + resolution: {integrity: sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==} + engines: {node: '>= 0.4'} + + es-errors@1.3.0: + resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} + engines: {node: '>= 0.4'} + + es-get-iterator@1.1.3: + resolution: {integrity: sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw==} + + es-iterator-helpers@1.1.0: + resolution: {integrity: sha512-/SurEfycdyssORP/E+bj4sEu1CWw4EmLDsHynHwSXQ7utgbrMRWW195pTrCjFgFCddf/UkYm3oqKPRq5i8bJbw==} + engines: {node: '>= 0.4'} + + es-module-lexer@1.5.4: + resolution: {integrity: sha512-MVNK56NiMrOwitFB7cqDwq0CQutbw+0BvLshJSse0MUNU+y1FC3bUS/AQg7oUng+/wKrrki7JfmwtVHkVfPLlw==} + + es-object-atoms@1.0.0: + resolution: {integrity: sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==} + engines: {node: '>= 0.4'} + + es-set-tostringtag@2.0.3: + resolution: {integrity: sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==} + engines: {node: '>= 0.4'} + + es-shim-unscopables@1.0.2: + resolution: {integrity: sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==} + + es-to-primitive@1.2.1: + resolution: {integrity: sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==} + engines: {node: '>= 0.4'} + + esbuild-register@3.6.0: + resolution: {integrity: sha512-H2/S7Pm8a9CL1uhp9OvjwrBh5Pvx0H8qVOxNu8Wed9Y7qv56MPtq+GGM8RJpq6glYJn9Wspr8uw7l55uyinNeg==} + peerDependencies: + esbuild: '>=0.12 <1' + + esbuild@0.21.5: + resolution: {integrity: sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==} + engines: {node: '>=12'} + hasBin: true + + esbuild@0.23.1: + resolution: {integrity: sha512-VVNz/9Sa0bs5SELtn3f7qhJCDPCF5oMEl5cO9/SSinpE9hbPVvxbd572HH5AKiP7WD8INO53GgfDDhRjkylHEg==} + engines: {node: '>=18'} + hasBin: true + + escalade@3.2.0: + resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} + engines: {node: '>=6'} + + escape-html@1.0.3: + resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==} + + escape-string-regexp@1.0.5: + resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} + engines: {node: '>=0.8.0'} + + escape-string-regexp@4.0.0: + resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} + engines: {node: '>=10'} + + escodegen@2.1.0: + resolution: {integrity: sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==} + engines: {node: '>=6.0'} + hasBin: true + + eslint-config-airbnb-base@15.0.0: + resolution: {integrity: sha512-xaX3z4ZZIcFLvh2oUNvcX5oEofXda7giYmuplVxoOg5A7EXJMrUyqRgR+mhDhPK8LZ4PttFOBvCYDbX3sUoUig==} + engines: {node: ^10.12.0 || >=12.0.0} + peerDependencies: + eslint: ^7.32.0 || ^8.2.0 + eslint-plugin-import: ^2.25.2 + + eslint-config-airbnb@19.0.4: + resolution: {integrity: sha512-T75QYQVQX57jiNgpF9r1KegMICE94VYwoFQyMGhrvc+lB8YF2E/M/PYDaQe1AJcWaEgqLE+ErXV1Og/+6Vyzew==} + engines: {node: ^10.12.0 || ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^7.32.0 || ^8.2.0 + eslint-plugin-import: ^2.25.3 + eslint-plugin-jsx-a11y: ^6.5.1 + eslint-plugin-react: ^7.28.0 + eslint-plugin-react-hooks: ^4.3.0 + + eslint-config-prettier@9.1.0: + resolution: {integrity: sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw==} + hasBin: true + peerDependencies: + eslint: '>=7.0.0' + + eslint-import-resolver-node@0.3.9: + resolution: {integrity: sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==} + + eslint-import-resolver-typescript@3.6.3: + resolution: {integrity: sha512-ud9aw4szY9cCT1EWWdGv1L1XR6hh2PaRWif0j2QjQ0pgTY/69iw+W0Z4qZv5wHahOl8isEr+k/JnyAqNQkLkIA==} + engines: {node: ^14.18.0 || >=16.0.0} + peerDependencies: + eslint: '*' + eslint-plugin-import: '*' + eslint-plugin-import-x: '*' + peerDependenciesMeta: + eslint-plugin-import: + optional: true + eslint-plugin-import-x: + optional: true + + eslint-module-utils@2.12.0: + resolution: {integrity: sha512-wALZ0HFoytlyh/1+4wuZ9FJCD/leWHQzzrxJ8+rebyReSLk7LApMyd3WJaLVoN+D5+WIdJyDK1c6JnE65V4Zyg==} + engines: {node: '>=4'} + peerDependencies: + '@typescript-eslint/parser': '*' + eslint: '*' + eslint-import-resolver-node: '*' + eslint-import-resolver-typescript: '*' + eslint-import-resolver-webpack: '*' + peerDependenciesMeta: + '@typescript-eslint/parser': + optional: true + eslint: + optional: true + eslint-import-resolver-node: + optional: true + eslint-import-resolver-typescript: + optional: true + eslint-import-resolver-webpack: + optional: true + + eslint-plugin-import@2.31.0: + resolution: {integrity: sha512-ixmkI62Rbc2/w8Vfxyh1jQRTdRTF52VxwRVHl/ykPAmqG+Nb7/kNn+byLP0LxPgI7zWA16Jt82SybJInmMia3A==} + engines: {node: '>=4'} + peerDependencies: + '@typescript-eslint/parser': '*' + eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 || ^9 + peerDependenciesMeta: + '@typescript-eslint/parser': + optional: true + + eslint-plugin-jsx-a11y@6.10.0: + resolution: {integrity: sha512-ySOHvXX8eSN6zz8Bywacm7CvGNhUtdjvqfQDVe6020TUK34Cywkw7m0KsCCk1Qtm9G1FayfTN1/7mMYnYO2Bhg==} + engines: {node: '>=4.0'} + peerDependencies: + eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9 + + eslint-plugin-prettier@5.2.1: + resolution: {integrity: sha512-gH3iR3g4JfF+yYPaJYkN7jEl9QbweL/YfkoRlNnuIEHEz1vHVlCmWOS+eGGiRuzHQXdJFCOTxRgvju9b8VUmrw==} + engines: {node: ^14.18.0 || >=16.0.0} + peerDependencies: + '@types/eslint': '>=8.0.0' + eslint: '>=8.0.0' + eslint-config-prettier: '*' + prettier: '>=3.0.0' + peerDependenciesMeta: + '@types/eslint': + optional: true + eslint-config-prettier: + optional: true + + eslint-plugin-react-hooks@5.0.0: + resolution: {integrity: sha512-hIOwI+5hYGpJEc4uPRmz2ulCjAGD/N13Lukkh8cLV0i2IRk/bdZDYjgLVHj+U9Z704kLIdIO6iueGvxNur0sgw==} + engines: {node: '>=10'} + peerDependencies: + eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0 + + eslint-plugin-react-refresh@0.4.13: + resolution: {integrity: sha512-f1EppwrpJRWmqDTyvAyomFVDYRtrS7iTEqv3nokETnMiMzs2SSTmKRTACce4O2p4jYyowiSMvpdwC/RLcMFhuQ==} + peerDependencies: + eslint: '>=7' + + eslint-plugin-react@7.37.1: + resolution: {integrity: sha512-xwTnwDqzbDRA8uJ7BMxPs/EXRB3i8ZfnOIp8BsxEQkT0nHPp+WWceqGgo6rKb9ctNi8GJLDT4Go5HAWELa/WMg==} + engines: {node: '>=4'} + peerDependencies: + eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7 + + eslint-plugin-storybook@0.9.0: + resolution: {integrity: sha512-qOT/2vQBo0VqrG/BhZv8IdSsKQiyzJw+2Wqq+WFCiblI/PfxLSrGkF/buiXF+HumwfsCyBdaC94UhqhmYFmAvA==} + engines: {node: '>= 18'} + peerDependencies: + eslint: '>=6' + + eslint-scope@5.1.1: + resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==} + engines: {node: '>=8.0.0'} + + eslint-scope@8.1.0: + resolution: {integrity: sha512-14dSvlhaVhKKsa9Fx1l8A17s7ah7Ef7wCakJ10LYk6+GYmP9yDti2oq2SEwcyndt6knfcZyhyxwY3i9yL78EQw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + eslint-visitor-keys@3.4.3: + resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + eslint-visitor-keys@4.1.0: + resolution: {integrity: sha512-Q7lok0mqMUSf5a/AdAZkA5a/gHcO6snwQClVNNvFKCAVlxXucdU8pKydU5ZVZjBx5xr37vGbFFWtLQYreLzrZg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + eslint@9.13.0: + resolution: {integrity: sha512-EYZK6SX6zjFHST/HRytOdA/zE72Cq/bfw45LSyuwrdvcclb/gqV8RRQxywOBEWO2+WDpva6UZa4CcDeJKzUCFA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + hasBin: true + peerDependencies: + jiti: '*' + peerDependenciesMeta: + jiti: + optional: true + + espree@10.2.0: + resolution: {integrity: sha512-upbkBJbckcCNBDBDXEbuhjbP68n+scUd3k/U2EkyM9nw+I/jPiL4cLF/Al06CF96wRltFda16sxDFrxsI1v0/g==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + esprima@4.0.1: + resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} + engines: {node: '>=4'} + hasBin: true + + esquery@1.6.0: + resolution: {integrity: sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==} + engines: {node: '>=0.10'} + + esrecurse@4.3.0: + resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} + engines: {node: '>=4.0'} + + estraverse@4.3.0: + resolution: {integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==} + engines: {node: '>=4.0'} + + estraverse@5.3.0: + resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} + engines: {node: '>=4.0'} + + estree-walker@2.0.2: + resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} + + estree-walker@3.0.3: + resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} + + esutils@2.0.3: + resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} + engines: {node: '>=0.10.0'} + + etag@1.8.1: + resolution: {integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==} + engines: {node: '>= 0.6'} + + eventemitter3@5.0.1: + resolution: {integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==} + + execa@8.0.1: + resolution: {integrity: sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==} + engines: {node: '>=16.17'} + + express@4.21.1: + resolution: {integrity: sha512-YSFlK1Ee0/GC8QaO91tHcDxJiE/X4FbpAyQWkxAvG6AXCuR65YzK8ua6D9hvi/TzUfZMpc+BwuM1IPw8fmQBiQ==} + engines: {node: '>= 0.10.0'} + + fast-deep-equal@3.1.3: + resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} + + fast-diff@1.3.0: + resolution: {integrity: sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==} + + fast-glob@3.3.2: + resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==} + engines: {node: '>=8.6.0'} + + fast-json-stable-stringify@2.1.0: + resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} + + fast-levenshtein@2.0.6: + resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} + + fast-uri@3.0.3: + resolution: {integrity: sha512-aLrHthzCjH5He4Z2H9YZ+v6Ujb9ocRuW6ZzkJQOrTxleEijANq4v1TsaPaVG1PZcuurEzrLcWRyYBYXD5cEiaw==} + + fastq@1.17.1: + resolution: {integrity: sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==} + + file-entry-cache@8.0.0: + resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==} + engines: {node: '>=16.0.0'} + + file-system-cache@2.3.0: + resolution: {integrity: sha512-l4DMNdsIPsVnKrgEXbJwDJsA5mB8rGwHYERMgqQx/xAUtChPJMre1bXBzDEqqVbWv9AIbFezXMxeEkZDSrXUOQ==} + + fill-range@7.1.1: + resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} + engines: {node: '>=8'} + + finalhandler@1.3.1: + resolution: {integrity: sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==} + engines: {node: '>= 0.8'} + + find-cache-dir@3.3.2: + resolution: {integrity: sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==} + engines: {node: '>=8'} + + find-up@4.1.0: + resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} + engines: {node: '>=8'} + + find-up@5.0.0: + resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} + engines: {node: '>=10'} + + find-up@7.0.0: + resolution: {integrity: sha512-YyZM99iHrqLKjmt4LJDj58KI+fYyufRLBSYcqycxf//KpBk9FoewoGX0450m9nB44qrZnovzC2oeP5hUibxc/g==} + engines: {node: '>=18'} + + flat-cache@4.0.1: + resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==} + engines: {node: '>=16'} + + flatted@3.3.1: + resolution: {integrity: sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==} + + follow-redirects@1.15.9: + resolution: {integrity: sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==} + engines: {node: '>=4.0'} + peerDependencies: + debug: '*' + peerDependenciesMeta: + debug: + optional: true + + for-each@0.3.3: + resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==} + + foreground-child@3.3.0: + resolution: {integrity: sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==} + engines: {node: '>=14'} + + form-data@4.0.1: + resolution: {integrity: sha512-tzN8e4TX8+kkxGPK8D5u0FNmjPUjw3lwC9lSLxxoB/+GtsJG91CO8bSWy73APlgAZzZbXEYZJuxjkHH2w+Ezhw==} + engines: {node: '>= 6'} + + forwarded@0.2.0: + resolution: {integrity: sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==} + engines: {node: '>= 0.6'} + + fraction.js@4.3.7: + resolution: {integrity: sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==} + + fresh@0.5.2: + resolution: {integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==} + engines: {node: '>= 0.6'} + + fs-extra@11.1.1: + resolution: {integrity: sha512-MGIE4HOvQCeUCzmlHs0vXpih4ysz4wg9qiSAu6cd42lVwPbTM1TjV7RusoyQqMmk/95gdQZX72u+YW+c3eEpFQ==} + engines: {node: '>=14.14'} + + fs-extra@11.2.0: + resolution: {integrity: sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==} + engines: {node: '>=14.14'} + + fs.realpath@1.0.0: + resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} + + fsevents@2.3.3: + resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + + function-bind@1.1.2: + resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} + + function.prototype.name@1.1.6: + resolution: {integrity: sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==} + engines: {node: '>= 0.4'} + + functions-have-names@1.2.3: + resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} + + gensync@1.0.0-beta.2: + resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} + engines: {node: '>=6.9.0'} + + get-caller-file@2.0.5: + resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} + engines: {node: 6.* || 8.* || >= 10.*} + + get-east-asian-width@1.3.0: + resolution: {integrity: sha512-vpeMIQKxczTD/0s2CdEWHcb0eeJe6TFjxb+J5xgX7hScxqrGuyjmv4c1D4A/gelKfyox0gJJwIHF+fLjeaM8kQ==} + engines: {node: '>=18'} + + get-intrinsic@1.2.4: + resolution: {integrity: sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==} + engines: {node: '>= 0.4'} + + get-nonce@1.0.1: + resolution: {integrity: sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==} + engines: {node: '>=6'} + + get-stream@8.0.1: + resolution: {integrity: sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==} + engines: {node: '>=16'} + + get-symbol-description@1.0.2: + resolution: {integrity: sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==} + engines: {node: '>= 0.4'} + + get-tsconfig@4.8.1: + resolution: {integrity: sha512-k9PN+cFBmaLWtVz29SkUoqU5O0slLuHJXt/2P+tMVFT+phsSGXGkp9t3rQIqdz0e+06EHNGs3oM6ZX1s2zHxRg==} + + git-raw-commits@4.0.0: + resolution: {integrity: sha512-ICsMM1Wk8xSGMowkOmPrzo2Fgmfo4bMHLNX6ytHjajRJUqvHOw/TFapQ+QG75c3X/tTDDhOSRPGC52dDbNM8FQ==} + engines: {node: '>=16'} + hasBin: true + + github-slugger@2.0.0: + resolution: {integrity: sha512-IaOQ9puYtjrkq7Y0Ygl9KDZnrf/aiUJYUpVf89y8kyaxbRG7Y1SrX/jaumrv81vc61+kiMempujsM3Yw7w5qcw==} + + glob-parent@5.1.2: + resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} + engines: {node: '>= 6'} + + glob-parent@6.0.2: + resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} + engines: {node: '>=10.13.0'} + + glob-promise@4.2.2: + resolution: {integrity: sha512-xcUzJ8NWN5bktoTIX7eOclO1Npxd/dyVqUJxlLIDasT4C7KZyqlPIwkdJ0Ypiy3p2ZKahTjK4M9uC3sNSfNMzw==} + engines: {node: '>=12'} + peerDependencies: + glob: ^7.1.6 + + glob@10.4.5: + resolution: {integrity: sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==} + hasBin: true + + glob@7.2.3: + resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} + deprecated: Glob versions prior to v9 are no longer supported + + global-directory@4.0.1: + resolution: {integrity: sha512-wHTUcDUoZ1H5/0iVqEudYW4/kAlN5cZ3j/bXn0Dpbizl9iaUVeWSHqiOjsgk6OW2bkLclbBjzewBz6weQ1zA2Q==} + engines: {node: '>=18'} + + globals@11.12.0: + resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} + engines: {node: '>=4'} + + globals@14.0.0: + resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==} + engines: {node: '>=18'} + + globals@15.11.0: + resolution: {integrity: sha512-yeyNSjdbyVaWurlwCpcA6XNBrHTMIeDdj0/hnvX/OLJ9ekOXYbLsLinH/MucQyGvNnXhidTdNhTtJaffL2sMfw==} + engines: {node: '>=18'} + + globalthis@1.0.4: + resolution: {integrity: sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==} + engines: {node: '>= 0.4'} + + globby@11.1.0: + resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} + engines: {node: '>=10'} + + goober@2.1.16: + resolution: {integrity: sha512-erjk19y1U33+XAMe1VTvIONHYoSqE4iS7BYUZfHaqeohLmnC0FdxEh7rQU+6MZ4OajItzjZFSRtVANrQwNq6/g==} + peerDependencies: + csstype: ^3.0.10 + + gopd@1.0.1: + resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==} + + graceful-fs@4.2.11: + resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} + + graphemer@1.4.0: + resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} + + graphql@16.9.0: + resolution: {integrity: sha512-GGTKBX4SD7Wdb8mqeDLni2oaRGYQWjWHGKPQ24ZMnUtKfcsVoiv4uX8+LJr1K6U5VW2Lu1BwJnj7uiori0YtRw==} + engines: {node: ^12.22.0 || ^14.16.0 || ^16.0.0 || >=17.0.0} + + has-bigints@1.0.2: + resolution: {integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==} + + has-flag@3.0.0: + resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} + engines: {node: '>=4'} + + has-flag@4.0.0: + resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} + engines: {node: '>=8'} + + has-property-descriptors@1.0.2: + resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==} + + has-proto@1.0.3: + resolution: {integrity: sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==} + engines: {node: '>= 0.4'} + + has-symbols@1.0.3: + resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} + engines: {node: '>= 0.4'} + + has-tostringtag@1.0.2: + resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==} + engines: {node: '>= 0.4'} + + hasown@2.0.2: + resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} + engines: {node: '>= 0.4'} + + hast-util-heading-rank@3.0.0: + resolution: {integrity: sha512-EJKb8oMUXVHcWZTDepnr+WNbfnXKFNf9duMesmr4S8SXTJBJ9M4Yok08pu9vxdJwdlGRhVumk9mEhkEvKGifwA==} + + hast-util-is-element@3.0.0: + resolution: {integrity: sha512-Val9mnv2IWpLbNPqc/pUem+a7Ipj2aHacCwgNfTiK0vJKl0LF+4Ba4+v1oPHFpf3bLYmreq0/l3Gud9S5OH42g==} + + hast-util-to-string@3.0.1: + resolution: {integrity: sha512-XelQVTDWvqcl3axRfI0xSeoVKzyIFPwsAGSLIsKdJKQMXDYJS4WYrBNF/8J7RdhIcFI2BOHgAifggsvsxp/3+A==} + + headers-polyfill@4.0.3: + resolution: {integrity: sha512-IScLbePpkvO846sIwOtOTDjutRMWdXdJmXdMvk6gCBHxFO8d+QKOQedyZSxFTTFYRSmlgSTDtXqqq4pcenBXLQ==} + + html-tags@3.3.1: + resolution: {integrity: sha512-ztqyC3kLto0e9WbNp0aeP+M3kTt+nbaIveGmUxAtZa+8iFgKLUOD4YKM5j+f3QD89bra7UeumolZHKuOXnTmeQ==} + engines: {node: '>=8'} + + http-errors@2.0.0: + resolution: {integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==} + engines: {node: '>= 0.8'} + + human-signals@5.0.0: + resolution: {integrity: sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==} + engines: {node: '>=16.17.0'} + + husky@9.1.6: + resolution: {integrity: sha512-sqbjZKK7kf44hfdE94EoX8MZNk0n7HeW37O4YrVGCF4wzgQjp+akPAkfUK5LZ6KuR/6sqeAVuXHji+RzQgOn5A==} + engines: {node: '>=18'} + hasBin: true + + iconv-lite@0.4.24: + resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} + engines: {node: '>=0.10.0'} + + ignore@5.3.2: + resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} + engines: {node: '>= 4'} + + import-fresh@3.3.0: + resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} + engines: {node: '>=6'} + + import-meta-resolve@4.1.0: + resolution: {integrity: sha512-I6fiaX09Xivtk+THaMfAwnA3MVA5Big1WHF1Dfx9hFuvNIWpXnorlkzhcQf6ehrqQiiZECRt1poOAkPmer3ruw==} + + imurmurhash@0.1.4: + resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} + engines: {node: '>=0.8.19'} + + indent-string@4.0.0: + resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==} + engines: {node: '>=8'} + + inflight@1.0.6: + resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} + deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful. + + inherits@2.0.4: + resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + + ini@4.1.1: + resolution: {integrity: sha512-QQnnxNyfvmHFIsj7gkPcYymR8Jdw/o7mp5ZFihxn6h8Ci6fh3Dx4E1gPjpQEpIuPo9XVNY/ZUwh4BPMjGyL01g==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + + internal-slot@1.0.7: + resolution: {integrity: sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==} + engines: {node: '>= 0.4'} + + invariant@2.2.4: + resolution: {integrity: sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==} + + ipaddr.js@1.9.1: + resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==} + engines: {node: '>= 0.10'} + + is-absolute-url@4.0.1: + resolution: {integrity: sha512-/51/TKE88Lmm7Gc4/8btclNXWS+g50wXhYJq8HWIBAGUBnoAdRu1aXeh364t/O7wXDAcTJDP8PNuNKWUDWie+A==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + is-arguments@1.1.1: + resolution: {integrity: sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==} + engines: {node: '>= 0.4'} + + is-array-buffer@3.0.4: + resolution: {integrity: sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==} + engines: {node: '>= 0.4'} + + is-arrayish@0.2.1: + resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} + + is-async-function@2.0.0: + resolution: {integrity: sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA==} + engines: {node: '>= 0.4'} + + is-bigint@1.0.4: + resolution: {integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==} + + is-binary-path@2.1.0: + resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} + engines: {node: '>=8'} + + is-boolean-object@1.1.2: + resolution: {integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==} + engines: {node: '>= 0.4'} + + is-bun-module@1.2.1: + resolution: {integrity: sha512-AmidtEM6D6NmUiLOvvU7+IePxjEjOzra2h0pSrsfSAcXwl/83zLLXDByafUJy9k/rKK0pvXMLdwKwGHlX2Ke6Q==} + + is-callable@1.2.7: + resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} + engines: {node: '>= 0.4'} + + is-core-module@2.15.1: + resolution: {integrity: sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ==} + engines: {node: '>= 0.4'} + + is-data-view@1.0.1: + resolution: {integrity: sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==} + engines: {node: '>= 0.4'} + + is-date-object@1.0.5: + resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==} + engines: {node: '>= 0.4'} + + is-docker@2.2.1: + resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==} + engines: {node: '>=8'} + hasBin: true + + is-extglob@2.1.1: + resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} + engines: {node: '>=0.10.0'} + + is-finalizationregistry@1.0.2: + resolution: {integrity: sha512-0by5vtUJs8iFQb5TYUHHPudOR+qXYIMKtiUzvLIZITZUjknFmziyBJuLhVRc+Ds0dREFlskDNJKYIdIzu/9pfw==} + + is-fullwidth-code-point@3.0.0: + resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} + engines: {node: '>=8'} + + is-fullwidth-code-point@4.0.0: + resolution: {integrity: sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==} + engines: {node: '>=12'} + + is-fullwidth-code-point@5.0.0: + resolution: {integrity: sha512-OVa3u9kkBbw7b8Xw5F9P+D/T9X+Z4+JruYVNapTjPYZYUznQ5YfWeFkOj606XYYW8yugTfC8Pj0hYqvi4ryAhA==} + engines: {node: '>=18'} + + is-generator-function@1.0.10: + resolution: {integrity: sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==} + engines: {node: '>= 0.4'} + + is-glob@4.0.3: + resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} + engines: {node: '>=0.10.0'} + + is-map@2.0.3: + resolution: {integrity: sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==} + engines: {node: '>= 0.4'} + + is-negative-zero@2.0.3: + resolution: {integrity: sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==} + engines: {node: '>= 0.4'} + + is-node-process@1.2.0: + resolution: {integrity: sha512-Vg4o6/fqPxIjtxgUH5QLJhwZ7gW5diGCVlXpuUfELC62CuxM1iHcRe51f2W1FDy04Ai4KJkagKjx3XaqyfRKXw==} + + is-number-object@1.0.7: + resolution: {integrity: sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==} + engines: {node: '>= 0.4'} + + is-number@7.0.0: + resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} + engines: {node: '>=0.12.0'} + + is-obj@2.0.0: + resolution: {integrity: sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==} + engines: {node: '>=8'} + + is-plain-object@5.0.0: + resolution: {integrity: sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==} + engines: {node: '>=0.10.0'} + + is-regex@1.1.4: + resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==} + engines: {node: '>= 0.4'} + + is-set@2.0.3: + resolution: {integrity: sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==} + engines: {node: '>= 0.4'} + + is-shared-array-buffer@1.0.3: + resolution: {integrity: sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==} + engines: {node: '>= 0.4'} + + is-stream@3.0.0: + resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + is-string@1.0.7: + resolution: {integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==} + engines: {node: '>= 0.4'} + + is-symbol@1.0.4: + resolution: {integrity: sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==} + engines: {node: '>= 0.4'} + + is-text-path@2.0.0: + resolution: {integrity: sha512-+oDTluR6WEjdXEJMnC2z6A4FRwFoYuvShVVEGsS7ewc0UTi2QtAKMDJuL4BDEVt+5T7MjFo12RP8ghOM75oKJw==} + engines: {node: '>=8'} + + is-typed-array@1.1.13: + resolution: {integrity: sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==} + engines: {node: '>= 0.4'} + + is-weakmap@2.0.2: + resolution: {integrity: sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==} + engines: {node: '>= 0.4'} + + is-weakref@1.0.2: + resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==} + + is-weakset@2.0.3: + resolution: {integrity: sha512-LvIm3/KWzS9oRFHugab7d+M/GcBXuXX5xZkzPmN+NxihdQlZUQ4dWuSV1xR/sq6upL1TJEDrfBgRepHFdBtSNQ==} + engines: {node: '>= 0.4'} + + is-wsl@2.2.0: + resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==} + engines: {node: '>=8'} + + isarray@2.0.5: + resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==} + + isexe@2.0.0: + resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + + iterator.prototype@1.1.3: + resolution: {integrity: sha512-FW5iMbeQ6rBGm/oKgzq2aW4KvAGpxPzYES8N4g4xNXUKpL1mclMvOe+76AcLDTvD+Ze+sOpVhgdAQEKF4L9iGQ==} + engines: {node: '>= 0.4'} + + jackspeak@3.4.3: + resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==} + + jiti@1.21.6: + resolution: {integrity: sha512-2yTgeWTWzMWkHu6Jp9NKgePDaYHbntiwvYuuJLbbN9vl7DC9DvXKOB2BC3ZZ92D3cvV/aflH0osDfwpHepQ53w==} + hasBin: true + + js-tokens@4.0.0: + resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} + + js-yaml@4.1.0: + resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} + hasBin: true + + jsdoc-type-pratt-parser@4.1.0: + resolution: {integrity: sha512-Hicd6JK5Njt2QB6XYFS7ok9e37O8AYk3jTcppG4YVQnYjOemymvTcmc7OWsmq/Qqj5TdRFO5/x/tIPmBeRtGHg==} + engines: {node: '>=12.0.0'} + + jsesc@3.0.2: + resolution: {integrity: sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==} + engines: {node: '>=6'} + hasBin: true + + json-buffer@3.0.1: + resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} + + json-parse-even-better-errors@2.3.1: + resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} + + json-schema-traverse@0.4.1: + resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} + + json-schema-traverse@1.0.0: + resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} + + json-stable-stringify-without-jsonify@1.0.1: + resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} + + json5@1.0.2: + resolution: {integrity: sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==} + hasBin: true + + json5@2.2.3: + resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} + engines: {node: '>=6'} + hasBin: true + + jsonfile@6.1.0: + resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==} + + jsonparse@1.3.1: + resolution: {integrity: sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==} + engines: {'0': node >= 0.2.0} + + jsx-ast-utils@3.3.5: + resolution: {integrity: sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==} + engines: {node: '>=4.0'} + + keyv@4.5.4: + resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} + + language-subtag-registry@0.3.23: + resolution: {integrity: sha512-0K65Lea881pHotoGEa5gDlMxt3pctLi2RplBb7Ezh4rRdLEOtgi7n4EwK9lamnUCkKBqaeKRVebTq6BAxSkpXQ==} + + language-tags@1.0.9: + resolution: {integrity: sha512-MbjN408fEndfiQXbFQ1vnd+1NoLDsnQW41410oQBXiyXDMYH5z505juWa4KUE1LqxRC7DgOgZDbKLxHIwm27hA==} + engines: {node: '>=0.10'} + + levn@0.4.1: + resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} + engines: {node: '>= 0.8.0'} + + lilconfig@2.1.0: + resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==} + engines: {node: '>=10'} + + lilconfig@3.1.2: + resolution: {integrity: sha512-eop+wDAvpItUys0FWkHIKeC9ybYrTGbU41U5K7+bttZZeohvnY7M9dZ5kB21GNWiFT2q1OoPTvncPCgSOVO5ow==} + engines: {node: '>=14'} + + lines-and-columns@1.2.4: + resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} + + lint-staged@15.2.10: + resolution: {integrity: sha512-5dY5t743e1byO19P9I4b3x8HJwalIznL5E1FWYnU6OWw33KxNBSLAc6Cy7F2PsFEO8FKnLwjwm5hx7aMF0jzZg==} + engines: {node: '>=18.12.0'} + hasBin: true + + listr2@8.2.5: + resolution: {integrity: sha512-iyAZCeyD+c1gPyE9qpFu8af0Y+MRtmKOncdGoA2S5EY8iFq99dmmvkNnHiWo+pj0s7yH7l3KPIgee77tKpXPWQ==} + engines: {node: '>=18.0.0'} + + locate-path@5.0.0: + resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} + engines: {node: '>=8'} + + locate-path@6.0.0: + resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} + engines: {node: '>=10'} + + locate-path@7.2.0: + resolution: {integrity: sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + lodash.camelcase@4.3.0: + resolution: {integrity: sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==} + + lodash.isplainobject@4.0.6: + resolution: {integrity: sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==} + + lodash.kebabcase@4.1.1: + resolution: {integrity: sha512-N8XRTIMMqqDgSy4VLKPnJ/+hpGZN+PHQiJnSenYqPaVV/NCqEogTnAdZLQiGKhxX+JCs8waWq2t1XHWKOmlY8g==} + + lodash.merge@4.6.2: + resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} + + lodash.mergewith@4.6.2: + resolution: {integrity: sha512-GK3g5RPZWTRSeLSpgP8Xhra+pnjBC56q9FZYe1d5RN3TJ35dbkGy3YqBSMbyCrlbi+CM9Z3Jk5yTL7RCsqboyQ==} + + lodash.snakecase@4.1.1: + resolution: {integrity: sha512-QZ1d4xoBHYUeuouhEq3lk3Uq7ldgyFXGBhg04+oRLnIz8o9T65Eh+8YdroUwn846zchkA9yDsDl5CVVaV2nqYw==} + + lodash.startcase@4.4.0: + resolution: {integrity: sha512-+WKqsK294HMSc2jEbNgpHpd0JfIBhp7rEV4aqXWqFr6AlXov+SlcgB1Fv01y2kGe3Gc8nMW7VA0SrGuSkRfIEg==} + + lodash.uniq@4.5.0: + resolution: {integrity: sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==} + + lodash.upperfirst@4.3.1: + resolution: {integrity: sha512-sReKOYJIJf74dhJONhU4e0/shzi1trVbSWDOhKYE5XV2O+H7Sb2Dihwuc7xWxVl+DgFPyTqIN3zMfT9cq5iWDg==} + + lodash@4.17.21: + resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} + + log-update@6.1.0: + resolution: {integrity: sha512-9ie8ItPR6tjY5uYJh8K/Zrv/RMZ5VOlOWvtZdEHYSTFKZfIBPQa9tOAEeAWhd+AnIneLJ22w5fjOYtoutpWq5w==} + engines: {node: '>=18'} + + loose-envify@1.4.0: + resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} + hasBin: true + + loupe@3.1.2: + resolution: {integrity: sha512-23I4pFZHmAemUnz8WZXbYRSKYj801VDaNv9ETuMh7IrMc7VuVVSo+Z9iLE3ni30+U48iDWfi30d3twAXBYmnCg==} + + lru-cache@10.4.3: + resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} + + lru-cache@5.1.1: + resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} + + lucide-react@0.453.0: + resolution: {integrity: sha512-kL+RGZCcJi9BvJtzg2kshO192Ddy9hv3ij+cPrVPWSRzgCWCVazoQJxOjAwgK53NomL07HB7GPHW120FimjNhQ==} + peerDependencies: + react: ^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0-rc + + lz-string@1.5.0: + resolution: {integrity: sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==} + hasBin: true + + magic-string@0.27.0: + resolution: {integrity: sha512-8UnnX2PeRAPZuN12svgR9j7M1uWMovg/CEnIwIG0LFkXSJJe4PdfUGiTGl8V9bsBHFUtfVINcSyYxd7q+kx9fA==} + engines: {node: '>=12'} + + magic-string@0.30.12: + resolution: {integrity: sha512-Ea8I3sQMVXr8JhN4z+H/d8zwo+tYDgHE9+5G4Wnrwhs0gaK9fXTKx0Tw5Xwsd/bCPTTZNRAdpyzvoeORe9LYpw==} + + make-dir@3.1.0: + resolution: {integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==} + engines: {node: '>=8'} + + map-or-similar@1.5.0: + resolution: {integrity: sha512-0aF7ZmVon1igznGI4VS30yugpduQW3y3GkcgGJOp7d8x8QrizhigUxjI/m2UojsXXto+jLAH3KSz+xOJTiORjg==} + + markdown-to-jsx@7.5.0: + resolution: {integrity: sha512-RrBNcMHiFPcz/iqIj0n3wclzHXjwS7mzjBNWecKKVhNTIxQepIix6Il/wZCn2Cg5Y1ow2Qi84+eJrryFRWBEWw==} + engines: {node: '>= 10'} + peerDependencies: + react: '>= 0.14.0' + + media-typer@0.3.0: + resolution: {integrity: sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==} + engines: {node: '>= 0.6'} + + memoizerific@1.11.3: + resolution: {integrity: sha512-/EuHYwAPdLtXwAwSZkh/Gutery6pD2KYd44oQLhAvQp/50mpyduZh8Q7PYHXTCJ+wuXxt7oij2LXyIJOOYFPog==} + + meow@12.1.1: + resolution: {integrity: sha512-BhXM0Au22RwUneMPwSCnyhTOizdWoIEPU9sp0Aqa1PnDMR5Wv2FGXYDjuzJEIX+Eo2Rb8xuYe5jrnm5QowQFkw==} + engines: {node: '>=16.10'} + + merge-descriptors@1.0.3: + resolution: {integrity: sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==} + + merge-stream@2.0.0: + resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} + + merge2@1.4.1: + resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} + engines: {node: '>= 8'} + + methods@1.1.2: + resolution: {integrity: sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==} + engines: {node: '>= 0.6'} + + micromatch@4.0.8: + resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} + engines: {node: '>=8.6'} + + mime-db@1.52.0: + resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} + engines: {node: '>= 0.6'} + + mime-types@2.1.35: + resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} + engines: {node: '>= 0.6'} + + mime@1.6.0: + resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==} + engines: {node: '>=4'} + hasBin: true + + mimic-fn@4.0.0: + resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==} + engines: {node: '>=12'} + + mimic-function@5.0.1: + resolution: {integrity: sha512-VP79XUPxV2CigYP3jWwAUFSku2aKqBH7uTAapFWCBqutsbmDo96KY5o8uh6U+/YSIn5OxJnXp73beVkpqMIGhA==} + engines: {node: '>=18'} + + min-indent@1.0.1: + resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==} + engines: {node: '>=4'} + + minimatch@3.1.2: + resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} + + minimatch@9.0.5: + resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} + engines: {node: '>=16 || 14 >=14.17'} + + minimist@1.2.8: + resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} + + minipass@7.1.2: + resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==} + engines: {node: '>=16 || 14 >=14.17'} + + ms@2.0.0: + resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} + + ms@2.1.3: + resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} + + msw@2.4.11: + resolution: {integrity: sha512-TVEw9NOPTc6ufOQLJ53234S9NBRxQbu7xFMxs+OCP43JQcNEIOKiZHxEm2nDzYIrwccoIhUxUf8wr99SukD76A==} + engines: {node: '>=18'} + hasBin: true + peerDependencies: + typescript: '>= 4.8.x' + peerDependenciesMeta: + typescript: + optional: true + + mute-stream@1.0.0: + resolution: {integrity: sha512-avsJQhyd+680gKXyG/sQc0nXaC6rBkPOfyHYcFb9+hdkqQkR9bdnkJ0AMZhke0oesPqIO+mFFJ+IdBc7mst4IA==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + + mz@2.7.0: + resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} + + nanoid@3.3.7: + resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true + + natural-compare@1.4.0: + resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} + + negotiator@0.6.3: + resolution: {integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==} + engines: {node: '>= 0.6'} + + node-releases@2.0.18: + resolution: {integrity: sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==} + + normalize-path@3.0.0: + resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} + engines: {node: '>=0.10.0'} + + normalize-range@0.1.2: + resolution: {integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==} + engines: {node: '>=0.10.0'} + + npm-run-path@5.3.0: + resolution: {integrity: sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + object-assign@4.1.1: + resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} + engines: {node: '>=0.10.0'} + + object-hash@3.0.0: + resolution: {integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==} + engines: {node: '>= 6'} + + object-inspect@1.13.2: + resolution: {integrity: sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==} + engines: {node: '>= 0.4'} + + object-is@1.1.6: + resolution: {integrity: sha512-F8cZ+KfGlSGi09lJT7/Nd6KJZ9ygtvYC0/UYYLI9nmQKLMnydpB9yvbv9K1uSkEu7FU9vYPmVwLg328tX+ot3Q==} + engines: {node: '>= 0.4'} + + object-keys@1.1.1: + resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} + engines: {node: '>= 0.4'} + + object.assign@4.1.5: + resolution: {integrity: sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==} + engines: {node: '>= 0.4'} + + object.entries@1.1.8: + resolution: {integrity: sha512-cmopxi8VwRIAw/fkijJohSfpef5PdN0pMQJN6VC/ZKvn0LIknWD8KtgY6KlQdEc4tIjcQ3HxSMmnvtzIscdaYQ==} + engines: {node: '>= 0.4'} + + object.fromentries@2.0.8: + resolution: {integrity: sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==} + engines: {node: '>= 0.4'} + + object.groupby@1.0.3: + resolution: {integrity: sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==} + engines: {node: '>= 0.4'} + + object.values@1.2.0: + resolution: {integrity: sha512-yBYjY9QX2hnRmZHAjG/f13MzmBzxzYgQhFrke06TTyKY5zSTEqkOeukBzIdVA3j3ulu8Qa3MbVFShV7T2RmGtQ==} + engines: {node: '>= 0.4'} + + on-finished@2.4.1: + resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==} + engines: {node: '>= 0.8'} + + once@1.4.0: + resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} + + onetime@6.0.0: + resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==} + engines: {node: '>=12'} + + onetime@7.0.0: + resolution: {integrity: sha512-VXJjc87FScF88uafS3JllDgvAm+c/Slfz06lorj2uAY34rlUu0Nt+v8wreiImcrgAjjIHp1rXpTDlLOGw29WwQ==} + engines: {node: '>=18'} + + open@8.4.2: + resolution: {integrity: sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==} + engines: {node: '>=12'} + + optionator@0.9.4: + resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} + engines: {node: '>= 0.8.0'} + + outvariant@1.4.3: + resolution: {integrity: sha512-+Sl2UErvtsoajRDKCE5/dBz4DIvHXQQnAxtQTF04OJxY0+DyZXSo5P5Bb7XYWOh81syohlYL24hbDwxedPUJCA==} + + p-limit@2.3.0: + resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} + engines: {node: '>=6'} + + p-limit@3.1.0: + resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} + engines: {node: '>=10'} + + p-limit@4.0.0: + resolution: {integrity: sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + p-locate@4.1.0: + resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} + engines: {node: '>=8'} + + p-locate@5.0.0: + resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} + engines: {node: '>=10'} + + p-locate@6.0.0: + resolution: {integrity: sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + p-try@2.2.0: + resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} + engines: {node: '>=6'} + + package-json-from-dist@1.0.1: + resolution: {integrity: sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==} + + parent-module@1.0.1: + resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} + engines: {node: '>=6'} + + parse-json@5.2.0: + resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} + engines: {node: '>=8'} + + parseurl@1.3.3: + resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==} + engines: {node: '>= 0.8'} + + path-exists@4.0.0: + resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} + engines: {node: '>=8'} + + path-exists@5.0.0: + resolution: {integrity: sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + path-is-absolute@1.0.1: + resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} + engines: {node: '>=0.10.0'} + + path-key@3.1.1: + resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} + engines: {node: '>=8'} + + path-key@4.0.0: + resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==} + engines: {node: '>=12'} + + path-parse@1.0.7: + resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} + + path-scurry@1.11.1: + resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==} + engines: {node: '>=16 || 14 >=14.18'} + + path-to-regexp@0.1.10: + resolution: {integrity: sha512-7lf7qcQidTku0Gu3YDPc8DJ1q7OOucfa/BSsIwjuh56VU7katFvuM8hULfkwB3Fns/rsVF7PwPKVw1sl5KQS9w==} + + path-to-regexp@6.3.0: + resolution: {integrity: sha512-Yhpw4T9C6hPpgPeA28us07OJeqZ5EzQTkbfwuhsUg0c237RomFoETJgmp2sa3F/41gfLE6G5cqcYwznmeEeOlQ==} + + path-type@4.0.0: + resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} + engines: {node: '>=8'} + + pathval@2.0.0: + resolution: {integrity: sha512-vE7JKRyES09KiunauX7nd2Q9/L7lhok4smP9RZTDeD4MVs72Dp2qNFVz39Nz5a0FVEW0BJR6C0DYrq6unoziZA==} + engines: {node: '>= 14.16'} + + picocolors@1.1.1: + resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} + + picomatch@2.3.1: + resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} + engines: {node: '>=8.6'} + + pidtree@0.6.0: + resolution: {integrity: sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g==} + engines: {node: '>=0.10'} + hasBin: true + + pify@2.3.0: + resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==} + engines: {node: '>=0.10.0'} + + pirates@4.0.6: + resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==} + engines: {node: '>= 6'} + + pkg-dir@4.2.0: + resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==} + engines: {node: '>=8'} + + polished@4.3.1: + resolution: {integrity: sha512-OBatVyC/N7SCW/FaDHrSd+vn0o5cS855TOmYi4OkdWUMSJCET/xip//ch8xGUvtr3i44X9LVyWwQlRMTN3pwSA==} + engines: {node: '>=10'} + + possible-typed-array-names@1.0.0: + resolution: {integrity: sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==} + engines: {node: '>= 0.4'} + + postcss-import@15.1.0: + resolution: {integrity: sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==} + engines: {node: '>=14.0.0'} + peerDependencies: + postcss: ^8.0.0 + + postcss-js@4.0.1: + resolution: {integrity: sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==} + engines: {node: ^12 || ^14 || >= 16} + peerDependencies: + postcss: ^8.4.21 + + postcss-load-config@4.0.2: + resolution: {integrity: sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==} + engines: {node: '>= 14'} + peerDependencies: + postcss: '>=8.0.9' + ts-node: '>=9.0.0' + peerDependenciesMeta: + postcss: + optional: true + ts-node: + optional: true + + postcss-nested@6.2.0: + resolution: {integrity: sha512-HQbt28KulC5AJzG+cZtj9kvKB93CFCdLvog1WFLf1D+xmMvPGlBstkpTEZfK5+AN9hfJocyBFCNiqyS48bpgzQ==} + engines: {node: '>=12.0'} + peerDependencies: + postcss: ^8.2.14 + + postcss-selector-parser@6.1.2: + resolution: {integrity: sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==} + engines: {node: '>=4'} + + postcss-value-parser@4.2.0: + resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} + + postcss@8.4.47: + resolution: {integrity: sha512-56rxCq7G/XfB4EkXq9Egn5GCqugWvDFjafDOThIdMBsI15iqPqR5r15TfSr1YPYeEI19YeaXMCbY6u88Y76GLQ==} + engines: {node: ^10 || ^12 || >=14} + + prelude-ls@1.2.1: + resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} + engines: {node: '>= 0.8.0'} + + prettier-linter-helpers@1.0.0: + resolution: {integrity: sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==} + engines: {node: '>=6.0.0'} + + prettier@3.3.3: + resolution: {integrity: sha512-i2tDNA0O5IrMO757lfrdQZCc2jPNDVntV0m/+4whiDfWaTKfMNgR7Qz0NAeGz/nRqF4m5/6CLzbP4/liHt12Ew==} + engines: {node: '>=14'} + hasBin: true + + pretty-format@27.5.1: + resolution: {integrity: sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + process@0.11.10: + resolution: {integrity: sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==} + engines: {node: '>= 0.6.0'} + + prop-types@15.8.1: + resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==} + + proxy-addr@2.0.7: + resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==} + engines: {node: '>= 0.10'} + + proxy-from-env@1.1.0: + resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} + + psl@1.9.0: + resolution: {integrity: sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==} + + punycode@2.3.1: + resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} + engines: {node: '>=6'} + + qs@6.13.0: + resolution: {integrity: sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==} + engines: {node: '>=0.6'} + + querystringify@2.2.0: + resolution: {integrity: sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==} + + queue-microtask@1.2.3: + resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} + + ramda@0.29.0: + resolution: {integrity: sha512-BBea6L67bYLtdbOqfp8f58fPMqEwx0doL+pAi8TZyp2YWz8R9G8z9x75CZI8W+ftqhFHCpEX2cRnUUXK130iKA==} + + range-parser@1.2.1: + resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==} + engines: {node: '>= 0.6'} + + raw-body@2.5.2: + resolution: {integrity: sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==} + engines: {node: '>= 0.8'} + + react-colorful@5.6.1: + resolution: {integrity: sha512-1exovf0uGTGyq5mXQT0zgQ80uvj2PCwvF8zY1RN9/vbJVSjSo3fsB/4L3ObbF7u70NduSiK4xu4Y6q1MHoUGEw==} + peerDependencies: + react: '>=16.8.0' + react-dom: '>=16.8.0' + + react-day-picker@8.10.1: + resolution: {integrity: sha512-TMx7fNbhLk15eqcMt+7Z7S2KF7mfTId/XJDjKE8f+IUcFn0l08/kI4FiYTL/0yuOLmEcbR4Fwe3GJf/NiiMnPA==} + peerDependencies: + date-fns: ^2.28.0 || ^3.0.0 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + + react-docgen-typescript@2.2.2: + resolution: {integrity: sha512-tvg2ZtOpOi6QDwsb3GZhOjDkkX0h8Z2gipvTg6OVMUyoYoURhEiRNePT8NZItTVCDh39JJHnLdfCOkzoLbFnTg==} + peerDependencies: + typescript: '>= 4.3.x' + + react-docgen@7.0.3: + resolution: {integrity: sha512-i8aF1nyKInZnANZ4uZrH49qn1paRgBZ7wZiCNBMnenlPzEv0mRl+ShpTVEI6wZNl8sSc79xZkivtgLKQArcanQ==} + engines: {node: '>=16.14.0'} + + react-dom@18.3.1: + resolution: {integrity: sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==} + peerDependencies: + react: ^18.3.1 + + react-element-to-jsx-string@15.0.0: + resolution: {integrity: sha512-UDg4lXB6BzlobN60P8fHWVPX3Kyw8ORrTeBtClmIlGdkOOE+GYQSFvmEU5iLLpwp/6v42DINwNcwOhOLfQ//FQ==} + peerDependencies: + react: ^0.14.8 || ^15.0.1 || ^16.0.0 || ^17.0.1 || ^18.0.0 + react-dom: ^0.14.8 || ^15.0.1 || ^16.0.0 || ^17.0.1 || ^18.0.0 + + react-hook-form@7.53.0: + resolution: {integrity: sha512-M1n3HhqCww6S2hxLxciEXy2oISPnAzxY7gvwVPrtlczTM/1dDadXgUxDpHMrMTblDOcm/AXtXxHwZ3jpg1mqKQ==} + engines: {node: '>=18.0.0'} + peerDependencies: + react: ^16.8.0 || ^17 || ^18 || ^19 + + react-hot-toast@2.4.1: + resolution: {integrity: sha512-j8z+cQbWIM5LY37pR6uZR6D4LfseplqnuAO4co4u8917hBUvXlEqyP1ZzqVLcqoyUesZZv/ImreoCeHVDpE5pQ==} + engines: {node: '>=10'} + peerDependencies: + react: '>=16' + react-dom: '>=16' + + react-is@16.13.1: + resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==} + + react-is@17.0.2: + resolution: {integrity: sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==} + + react-is@18.1.0: + resolution: {integrity: sha512-Fl7FuabXsJnV5Q1qIOQwx/sagGF18kogb4gpfcG4gjLBWO0WDiiz1ko/ExayuxE7InyQkBLkxRFG5oxY6Uu3Kg==} + + react-refresh@0.14.2: + resolution: {integrity: sha512-jCvmsr+1IUSMUyzOkRcvnVbX3ZYC6g9TDrDbFuFmRDq7PD4yaGbLKNQL6k2jnArV8hjYxh7hVhAZB6s9HDGpZA==} + engines: {node: '>=0.10.0'} + + react-remove-scroll-bar@2.3.6: + resolution: {integrity: sha512-DtSYaao4mBmX+HDo5YWYdBWQwYIQQshUV/dVxFxK+KM26Wjwp1gZ6rv6OC3oujI6Bfu6Xyg3TwK533AQutsn/g==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + + react-remove-scroll@2.5.5: + resolution: {integrity: sha512-ImKhrzJJsyXJfBZ4bzu8Bwpka14c/fQt0k+cyFp/PBhTfyDnU5hjOtM4AG/0AMyy8oKzOTR0lDgJIM7pYXI0kw==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + + react-remove-scroll@2.6.0: + resolution: {integrity: sha512-I2U4JVEsQenxDAKaVa3VZ/JeJZe0/2DxPWL8Tj8yLKctQJQiZM52pn/GWFpSp8dftjM3pSAHVJZscAnC/y+ySQ==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + + react-router-dom@6.27.0: + resolution: {integrity: sha512-+bvtFWMC0DgAFrfKXKG9Fc+BcXWRUO1aJIihbB79xaeq0v5UzfvnM5houGUm1Y461WVRcgAQ+Clh5rdb1eCx4g==} + engines: {node: '>=14.0.0'} + peerDependencies: + react: '>=16.8' + react-dom: '>=16.8' + + react-router@6.27.0: + resolution: {integrity: sha512-YA+HGZXz4jaAkVoYBE98VQl+nVzI+cVI2Oj/06F5ZM+0u3TgedN9Y9kmMRo2mnkSK2nCpNQn0DVob4HCsY/WLw==} + engines: {node: '>=14.0.0'} + peerDependencies: + react: '>=16.8' + + react-style-singleton@2.2.1: + resolution: {integrity: sha512-ZWj0fHEMyWkHzKYUr2Bs/4zU6XLmq9HsgBURm7g5pAVfyn49DgUiNgY2d4lXRlYSiCif9YBGpQleewkcqddc7g==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + + react@18.3.1: + resolution: {integrity: sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==} + engines: {node: '>=0.10.0'} + + read-cache@1.0.0: + resolution: {integrity: sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==} + + readdirp@3.6.0: + resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} + engines: {node: '>=8.10.0'} + + recast@0.23.9: + resolution: {integrity: sha512-Hx/BGIbwj+Des3+xy5uAtAbdCyqK9y9wbBcDFDYanLS9JnMqf7OeF87HQwUimE87OEc72mr6tkKUKMBBL+hF9Q==} + engines: {node: '>= 4'} + + redent@3.0.0: + resolution: {integrity: sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==} + engines: {node: '>=8'} + + reflect.getprototypeof@1.0.6: + resolution: {integrity: sha512-fmfw4XgoDke3kdI6h4xcUz1dG8uaiv5q9gcEwLS4Pnth2kxT+GZ7YehS1JTMGBQmtV7Y4GFGbs2re2NqhdozUg==} + engines: {node: '>= 0.4'} + + regenerator-runtime@0.14.1: + resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==} + + regexp.prototype.flags@1.5.3: + resolution: {integrity: sha512-vqlC04+RQoFalODCbCumG2xIOvapzVMHwsyIGM/SIE8fRhFFsXeH8/QQ+s0T0kDAhKc4k30s73/0ydkHQz6HlQ==} + engines: {node: '>= 0.4'} + + rehype-external-links@3.0.0: + resolution: {integrity: sha512-yp+e5N9V3C6bwBeAC4n796kc86M4gJCdlVhiMTxIrJG5UHDMh+PJANf9heqORJbt1nrCbDwIlAZKjANIaVBbvw==} + + rehype-slug@6.0.0: + resolution: {integrity: sha512-lWyvf/jwu+oS5+hL5eClVd3hNdmwM1kAC0BUvEGD19pajQMIzcNUd/k9GsfQ+FfECvX+JE+e9/btsKH0EjJT6A==} + + require-directory@2.1.1: + resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} + engines: {node: '>=0.10.0'} + + require-from-string@2.0.2: + resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} + engines: {node: '>=0.10.0'} + + requireindex@1.2.0: + resolution: {integrity: sha512-L9jEkOi3ASd9PYit2cwRfyppc9NoABujTP8/5gFcbERmo5jUoAKovIC3fsF17pkTnGsrByysqX+Kxd2OTNI1ww==} + engines: {node: '>=0.10.5'} + + requires-port@1.0.0: + resolution: {integrity: sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==} + + resolve-from@4.0.0: + resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} + engines: {node: '>=4'} + + resolve-from@5.0.0: + resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} + engines: {node: '>=8'} + + resolve-pkg-maps@1.0.0: + resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} + + resolve@1.22.8: + resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==} + hasBin: true + + resolve@2.0.0-next.5: + resolution: {integrity: sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==} + hasBin: true + + restore-cursor@5.1.0: + resolution: {integrity: sha512-oMA2dcrw6u0YfxJQXm342bFKX/E4sG9rbTzO9ptUcR/e8A33cHuvStiYOwH7fszkZlZ1z/ta9AAoPk2F4qIOHA==} + engines: {node: '>=18'} + + reusify@1.0.4: + resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} + engines: {iojs: '>=1.0.0', node: '>=0.10.0'} + + rfdc@1.4.1: + resolution: {integrity: sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==} + + rollup@4.24.0: + resolution: {integrity: sha512-DOmrlGSXNk1DM0ljiQA+i+o0rSLhtii1je5wgk60j49d1jHT5YYttBv1iWOnYSTG+fZZESUOSNiAl89SIet+Cg==} + engines: {node: '>=18.0.0', npm: '>=8.0.0'} + hasBin: true + + run-parallel@1.2.0: + resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} + + safe-array-concat@1.1.2: + resolution: {integrity: sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==} + engines: {node: '>=0.4'} + + safe-buffer@5.2.1: + resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} + + safe-regex-test@1.0.3: + resolution: {integrity: sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==} + engines: {node: '>= 0.4'} + + safer-buffer@2.1.2: + resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} + + scheduler@0.23.2: + resolution: {integrity: sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==} + + semver@6.3.1: + resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} + hasBin: true + + semver@7.6.3: + resolution: {integrity: sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==} + engines: {node: '>=10'} + hasBin: true + + send@0.19.0: + resolution: {integrity: sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==} + engines: {node: '>= 0.8.0'} + + serve-static@1.16.2: + resolution: {integrity: sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==} + engines: {node: '>= 0.8.0'} + + set-function-length@1.2.2: + resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==} + engines: {node: '>= 0.4'} + + set-function-name@2.0.2: + resolution: {integrity: sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==} + engines: {node: '>= 0.4'} + + setprototypeof@1.2.0: + resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} + + shebang-command@2.0.0: + resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} + engines: {node: '>=8'} + + shebang-regex@3.0.0: + resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} + engines: {node: '>=8'} + + side-channel@1.0.6: + resolution: {integrity: sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==} + engines: {node: '>= 0.4'} + + signal-exit@4.1.0: + resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} + engines: {node: '>=14'} + + slash@3.0.0: + resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} + engines: {node: '>=8'} + + slice-ansi@5.0.0: + resolution: {integrity: sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==} + engines: {node: '>=12'} + + slice-ansi@7.1.0: + resolution: {integrity: sha512-bSiSngZ/jWeX93BqeIAbImyTbEihizcwNjFoRUIY/T1wWQsfsm2Vw1agPKylXvQTU7iASGdHhyqRlqQzfz+Htg==} + engines: {node: '>=18'} + + source-map-js@1.2.1: + resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} + engines: {node: '>=0.10.0'} + + source-map@0.6.1: + resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} + engines: {node: '>=0.10.0'} + + space-separated-tokens@2.0.2: + resolution: {integrity: sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==} + + split2@4.2.0: + resolution: {integrity: sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==} + engines: {node: '>= 10.x'} + + statuses@2.0.1: + resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==} + engines: {node: '>= 0.8'} + + stop-iteration-iterator@1.0.0: + resolution: {integrity: sha512-iCGQj+0l0HOdZ2AEeBADlsRC+vsnDsZsbdSiH1yNSjcfKM7fdpCMfqAL/dwF5BLiw/XhRft/Wax6zQbhq2BcjQ==} + engines: {node: '>= 0.4'} + + storybook@8.3.6: + resolution: {integrity: sha512-9GVbtej6ZzPRUM7KRQ7848506FfHrUiJGqPuIQdoSJd09EmuEoLjmLAgEOmrHBQKgGYMaM7Vh9GsTLim6vwZTQ==} + hasBin: true + + strict-event-emitter@0.5.1: + resolution: {integrity: sha512-vMgjE/GGEPEFnhFub6pa4FmJBRBVOLpIII2hvCZ8Kzb7K0hlHo7mQv6xYrBvCL2LtAIBwFUK8wvuJgTVSQ5MFQ==} + + string-argv@0.3.2: + resolution: {integrity: sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==} + engines: {node: '>=0.6.19'} + + string-width@4.2.3: + resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} + engines: {node: '>=8'} + + string-width@5.1.2: + resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} + engines: {node: '>=12'} + + string-width@7.2.0: + resolution: {integrity: sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==} + engines: {node: '>=18'} + + string.prototype.includes@2.0.1: + resolution: {integrity: sha512-o7+c9bW6zpAdJHTtujeePODAhkuicdAryFsfVKwA+wGw89wJ4GTY484WTucM9hLtDEOpOvI+aHnzqnC5lHp4Rg==} + engines: {node: '>= 0.4'} + + string.prototype.matchall@4.0.11: + resolution: {integrity: sha512-NUdh0aDavY2og7IbBPenWqR9exH+E26Sv8e0/eTe1tltDGZL+GtBkDAnnyBtmekfK6/Dq3MkcGtzXFEd1LQrtg==} + engines: {node: '>= 0.4'} + + string.prototype.repeat@1.0.0: + resolution: {integrity: sha512-0u/TldDbKD8bFCQ/4f5+mNRrXwZ8hg2w7ZR8wa16e8z9XpePWl3eGEcUD0OXpEH/VJH/2G3gjUtR3ZOiBe2S/w==} + + string.prototype.trim@1.2.9: + resolution: {integrity: sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==} + engines: {node: '>= 0.4'} + + string.prototype.trimend@1.0.8: + resolution: {integrity: sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==} + + string.prototype.trimstart@1.0.8: + resolution: {integrity: sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==} + engines: {node: '>= 0.4'} + + strip-ansi@6.0.1: + resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} + engines: {node: '>=8'} + + strip-ansi@7.1.0: + resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} + engines: {node: '>=12'} + + strip-bom@3.0.0: + resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} + engines: {node: '>=4'} + + strip-final-newline@3.0.0: + resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==} + engines: {node: '>=12'} + + strip-indent@3.0.0: + resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==} + engines: {node: '>=8'} + + strip-indent@4.0.0: + resolution: {integrity: sha512-mnVSV2l+Zv6BLpSD/8V87CW/y9EmmbYzGCIavsnsI6/nwn26DwffM/yztm30Z/I2DY9wdS3vXVCMnHDgZaVNoA==} + engines: {node: '>=12'} + + strip-json-comments@3.1.1: + resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} + engines: {node: '>=8'} + + sucrase@3.35.0: + resolution: {integrity: sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==} + engines: {node: '>=16 || 14 >=14.17'} + hasBin: true + + supports-color@5.5.0: + resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} + engines: {node: '>=4'} + + supports-color@7.2.0: + resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} + engines: {node: '>=8'} + + supports-preserve-symlinks-flag@1.0.0: + resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} + engines: {node: '>= 0.4'} + + synchronous-promise@2.0.17: + resolution: {integrity: sha512-AsS729u2RHUfEra9xJrE39peJcc2stq2+poBXX8bcM08Y6g9j/i/PUzwNQqkaJde7Ntg1TO7bSREbR5sdosQ+g==} + + synckit@0.9.2: + resolution: {integrity: sha512-vrozgXDQwYO72vHjUb/HnFbQx1exDjoKzqx23aXEg2a9VIg2TSFZ8FmeZpTjUCFMYw7mpX4BE2SFu8wI7asYsw==} + engines: {node: ^14.18.0 || >=16.0.0} + + tailwind-merge@2.5.4: + resolution: {integrity: sha512-0q8cfZHMu9nuYP/b5Shb7Y7Sh1B7Nnl5GqNr1U+n2p6+mybvRtayrQ+0042Z5byvTA8ihjlP8Odo8/VnHbZu4Q==} + + tailwindcss-animate@1.0.7: + resolution: {integrity: sha512-bl6mpH3T7I3UFxuvDEXLxy/VuFxBk5bbzplh7tXI68mwMokNYd1t9qPBHlnyTwfa4JGC4zP516I1hYYtQ/vspA==} + peerDependencies: + tailwindcss: '>=3.0.0 || insiders' + + tailwindcss@3.4.14: + resolution: {integrity: sha512-IcSvOcTRcUtQQ7ILQL5quRDg7Xs93PdJEk1ZLbhhvJc7uj/OAhYOnruEiwnGgBvUtaUAJ8/mhSw1o8L2jCiENA==} + engines: {node: '>=14.0.0'} + hasBin: true + + tapable@2.2.1: + resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==} + engines: {node: '>=6'} + + telejson@7.2.0: + resolution: {integrity: sha512-1QTEcJkJEhc8OnStBx/ILRu5J2p0GjvWsBx56bmZRqnrkdBMUe+nX92jxV+p3dB4CP6PZCdJMQJwCggkNBMzkQ==} + + text-extensions@2.4.0: + resolution: {integrity: sha512-te/NtwBwfiNRLf9Ijqx3T0nlqZiQ2XrrtBvu+cLL8ZRrGkO0NHTug8MYFKyoSrv/sHTaSKfilUkizV6XhxMJ3g==} + engines: {node: '>=8'} + + text-table@0.2.0: + resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} + + thenify-all@1.6.0: + resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==} + engines: {node: '>=0.8'} + + thenify@3.3.1: + resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==} + + through@2.3.8: + resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} + + tiny-invariant@1.3.3: + resolution: {integrity: sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg==} + + tinyexec@0.3.1: + resolution: {integrity: sha512-WiCJLEECkO18gwqIp6+hJg0//p23HXp4S+gGtAKu3mI2F2/sXC4FvHvXvB0zJVVaTPhx1/tOwdbRsa1sOBIKqQ==} + + tinyrainbow@1.2.0: + resolution: {integrity: sha512-weEDEq7Z5eTHPDh4xjX789+fHfF+P8boiFB+0vbWzpbnbsEr/GRaohi/uMKxg8RZMXnl1ItAi/IUHWMsjDV7kQ==} + engines: {node: '>=14.0.0'} + + tinyspy@3.0.2: + resolution: {integrity: sha512-n1cw8k1k0x4pgA2+9XrOkFydTerNcJ1zWCO5Nn9scWHTD+5tp8dghT2x1uduQePZTZgd3Tupf+x9BxJjeJi77Q==} + engines: {node: '>=14.0.0'} + + to-fast-properties@2.0.0: + resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} + engines: {node: '>=4'} + + to-regex-range@5.0.1: + resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} + engines: {node: '>=8.0'} + + toidentifier@1.0.1: + resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==} + engines: {node: '>=0.6'} + + tough-cookie@4.1.4: + resolution: {integrity: sha512-Loo5UUvLD9ScZ6jh8beX1T6sO1w2/MpCRpEP7V280GKMVUQ0Jzar2U3UJPsrdbziLEMMhu3Ujnq//rhiFuIeag==} + engines: {node: '>=6'} + + ts-api-utils@1.3.0: + resolution: {integrity: sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==} + engines: {node: '>=16'} + peerDependencies: + typescript: '>=4.2.0' + + ts-dedent@2.2.0: + resolution: {integrity: sha512-q5W7tVM71e2xjHZTlgfTDoPF/SmqKG5hddq9SzR49CH2hayqRKJtQ4mtRlSxKaJlR/+9rEM+mnBHf7I2/BQcpQ==} + engines: {node: '>=6.10'} + + ts-interface-checker@0.1.13: + resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} + + tsconfig-paths@3.15.0: + resolution: {integrity: sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==} + + tsconfig-paths@4.2.0: + resolution: {integrity: sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg==} + engines: {node: '>=6'} + + tslib@1.14.1: + resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} + + tslib@2.8.0: + resolution: {integrity: sha512-jWVzBLplnCmoaTr13V9dYbiQ99wvZRd0vNWaDRg+aVYRcjDF3nDksxFDE/+fkXnKhpnUUkmx5pK/v8mCtLVqZA==} + + tsutils@3.21.0: + resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} + engines: {node: '>= 6'} + peerDependencies: + typescript: '>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta' + + type-check@0.4.0: + resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} + engines: {node: '>= 0.8.0'} + + type-fest@0.21.3: + resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==} + engines: {node: '>=10'} + + type-fest@2.19.0: + resolution: {integrity: sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==} + engines: {node: '>=12.20'} + + type-fest@4.26.1: + resolution: {integrity: sha512-yOGpmOAL7CkKe/91I5O3gPICmJNLJ1G4zFYVAsRHg7M64biSnPtRj0WNQt++bRkjYOqjWXrhnUw1utzmVErAdg==} + engines: {node: '>=16'} + + type-is@1.6.18: + resolution: {integrity: sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==} + engines: {node: '>= 0.6'} + + typed-array-buffer@1.0.2: + resolution: {integrity: sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==} + engines: {node: '>= 0.4'} + + typed-array-byte-length@1.0.1: + resolution: {integrity: sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==} + engines: {node: '>= 0.4'} + + typed-array-byte-offset@1.0.2: + resolution: {integrity: sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==} + engines: {node: '>= 0.4'} + + typed-array-length@1.0.6: + resolution: {integrity: sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g==} + engines: {node: '>= 0.4'} + + typescript-eslint@8.12.2: + resolution: {integrity: sha512-UbuVUWSrHVR03q9CWx+JDHeO6B/Hr9p4U5lRH++5tq/EbFq1faYZe50ZSBePptgfIKLEti0aPQ3hFgnPVcd8ZQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + + typescript@5.6.3: + resolution: {integrity: sha512-hjcS1mhfuyi4WW8IWtjP7brDrG2cuDZukyrYrSauoXGNgx0S7zceP07adYkJycEr56BOUTNPzbInooiN3fn1qw==} + engines: {node: '>=14.17'} + hasBin: true + + unbox-primitive@1.0.2: + resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==} + + undici-types@6.19.8: + resolution: {integrity: sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==} + + unicorn-magic@0.1.0: + resolution: {integrity: sha512-lRfVq8fE8gz6QMBuDM6a+LO3IAzTi05H6gCVaUpir2E1Rwpo4ZUog45KpNXKC/Mn3Yb9UDuHumeFTo9iV/D9FQ==} + engines: {node: '>=18'} + + unist-util-is@6.0.0: + resolution: {integrity: sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==} + + unist-util-visit-parents@6.0.1: + resolution: {integrity: sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==} + + unist-util-visit@5.0.0: + resolution: {integrity: sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==} + + universalify@0.2.0: + resolution: {integrity: sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==} + engines: {node: '>= 4.0.0'} + + universalify@2.0.1: + resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==} + engines: {node: '>= 10.0.0'} + + unpipe@1.0.0: + resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==} + engines: {node: '>= 0.8'} + + unplugin@1.14.1: + resolution: {integrity: sha512-lBlHbfSFPToDYp9pjXlUEFVxYLaue9f9T1HC+4OHlmj+HnMDdz9oZY+erXfoCe/5V/7gKUSY2jpXPb9S7f0f/w==} + engines: {node: '>=14.0.0'} + peerDependencies: + webpack-sources: ^3 + peerDependenciesMeta: + webpack-sources: + optional: true + + update-browserslist-db@1.1.1: + resolution: {integrity: sha512-R8UzCaa9Az+38REPiJ1tXlImTJXlVfgHZsglwBD/k6nj76ctsH1E3q4doGrukiLQd3sGQYu56r5+lo5r94l29A==} + hasBin: true + peerDependencies: + browserslist: '>= 4.21.0' + + uri-js@4.4.1: + resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} + + url-parse@1.5.10: + resolution: {integrity: sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==} + + use-callback-ref@1.3.2: + resolution: {integrity: sha512-elOQwe6Q8gqZgDA8mrh44qRTQqpIHDcZ3hXTLjBe1i4ph8XpNJnO+aQf3NaG+lriLopI4HMx9VjQLfPQ6vhnoA==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + + use-sidecar@1.1.2: + resolution: {integrity: sha512-epTbsLuzZ7lPClpz2TyryBfztm7m+28DlEv2ZCQ3MDr5ssiwyOwGH/e5F9CkfWjJ1t4clvI58yF822/GUkjjhw==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': ^16.9.0 || ^17.0.0 || ^18.0.0 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + + util-deprecate@1.0.2: + resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} + + util@0.12.5: + resolution: {integrity: sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==} + + utils-merge@1.0.1: + resolution: {integrity: sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==} + engines: {node: '>= 0.4.0'} + + uuid@9.0.1: + resolution: {integrity: sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==} + hasBin: true + + validator@13.12.0: + resolution: {integrity: sha512-c1Q0mCiPlgdTVVVIJIrBuxNicYE+t/7oKeI9MWLj3fh/uq2Pxh/3eeWbVZ4OcGW1TUf53At0njHw5SMdA3tmMg==} + engines: {node: '>= 0.10'} + + vary@1.1.2: + resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} + engines: {node: '>= 0.8'} + + vite@5.4.9: + resolution: {integrity: sha512-20OVpJHh0PAM0oSOELa5GaZNWeDjcAvQjGXy2Uyr+Tp+/D2/Hdz6NLgpJLsarPTA2QJ6v8mX2P1ZfbsSKvdMkg==} + engines: {node: ^18.0.0 || >=20.0.0} + hasBin: true + peerDependencies: + '@types/node': ^18.0.0 || >=20.0.0 + less: '*' + lightningcss: ^1.21.0 + sass: '*' + sass-embedded: '*' + stylus: '*' + sugarss: '*' + terser: ^5.4.0 + peerDependenciesMeta: + '@types/node': + optional: true + less: + optional: true + lightningcss: + optional: true + sass: + optional: true + sass-embedded: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + + webpack-virtual-modules@0.6.2: + resolution: {integrity: sha512-66/V2i5hQanC51vBQKPH4aI8NMAcBW59FVBs+rC7eGHupMyfn34q7rZIE+ETlJ+XTevqfUhVVBgSUNSW2flEUQ==} + + which-boxed-primitive@1.0.2: + resolution: {integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==} + + which-builtin-type@1.1.4: + resolution: {integrity: sha512-bppkmBSsHFmIMSl8BO9TbsyzsvGjVoppt8xUiGzwiu/bhDCGxnpOKCxgqj6GuyHE0mINMDecBFPlOm2hzY084w==} + engines: {node: '>= 0.4'} + + which-collection@1.0.2: + resolution: {integrity: sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==} + engines: {node: '>= 0.4'} + + which-typed-array@1.1.15: + resolution: {integrity: sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==} + engines: {node: '>= 0.4'} + + which@2.0.2: + resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} + engines: {node: '>= 8'} + hasBin: true + + word-wrap@1.2.5: + resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} + engines: {node: '>=0.10.0'} + + wrap-ansi@6.2.0: + resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==} + engines: {node: '>=8'} + + wrap-ansi@7.0.0: + resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} + engines: {node: '>=10'} + + wrap-ansi@8.1.0: + resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} + engines: {node: '>=12'} + + wrap-ansi@9.0.0: + resolution: {integrity: sha512-G8ura3S+3Z2G+mkgNRq8dqaFZAuxfsxpBB8OCTGRTCtp+l/v9nbFNmCUP1BZMts3G1142MsZfn6eeUKrr4PD1Q==} + engines: {node: '>=18'} + + wrappy@1.0.2: + resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} + + ws@8.18.0: + resolution: {integrity: sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==} + engines: {node: '>=10.0.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: '>=5.0.2' + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + + y18n@5.0.8: + resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} + engines: {node: '>=10'} + + yallist@3.1.1: + resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} + + yaml@2.5.1: + resolution: {integrity: sha512-bLQOjaX/ADgQ20isPJRvF0iRUHIxVhYvr53Of7wGcWlO2jvtUlH5m87DsmulFVxRpNLOnI4tB6p/oh8D7kpn9Q==} + engines: {node: '>= 14'} + hasBin: true + + yaml@2.6.0: + resolution: {integrity: sha512-a6ae//JvKDEra2kdi1qzCyrJW/WZCgFi8ydDV+eXExl95t+5R+ijnqHJbz9tmMh8FUjx3iv2fCQ4dclAQlO2UQ==} + engines: {node: '>= 14'} + hasBin: true + + yargs-parser@21.1.1: + resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} + engines: {node: '>=12'} + + yargs@17.7.2: + resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} + engines: {node: '>=12'} + + yocto-queue@0.1.0: + resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} + engines: {node: '>=10'} + + yocto-queue@1.1.1: + resolution: {integrity: sha512-b4JR1PFR10y1mKjhHY9LaGo6tmrgjit7hxVIeAmyMw3jegXR4dhYqLaQF5zMXZxY7tLpMyJeLjr1C4rLmkVe8g==} + engines: {node: '>=12.20'} + + yoctocolors-cjs@2.1.2: + resolution: {integrity: sha512-cYVsTjKl8b+FrnidjibDWskAv7UKOfcwaVZdp/it9n1s9fU3IkgDbhdIRKCW4JDsAlECJY0ytoVPT3sK6kideA==} + engines: {node: '>=18'} + + zod@3.23.8: + resolution: {integrity: sha512-XBx9AXhXktjUqnepgTiE5flcKIYWi/rme0Eaj+5Y0lftuGBq+jyRu/md4WnuxqgP1ubdpNCsYEYPxrzVHD8d6g==} + +snapshots: + + '@adobe/css-tools@4.4.0': {} + + '@alloc/quick-lru@5.2.0': {} + + '@ampproject/remapping@2.3.0': + dependencies: + '@jridgewell/gen-mapping': 0.3.5 + '@jridgewell/trace-mapping': 0.3.25 + + '@babel/code-frame@7.25.7': + dependencies: + '@babel/highlight': 7.25.7 + picocolors: 1.1.1 + + '@babel/compat-data@7.25.8': {} + + '@babel/core@7.25.8': + dependencies: + '@ampproject/remapping': 2.3.0 + '@babel/code-frame': 7.25.7 + '@babel/generator': 7.25.7 + '@babel/helper-compilation-targets': 7.25.7 + '@babel/helper-module-transforms': 7.25.7(@babel/core@7.25.8) + '@babel/helpers': 7.25.7 + '@babel/parser': 7.25.8 + '@babel/template': 7.25.7 + '@babel/traverse': 7.25.7 + '@babel/types': 7.25.8 + convert-source-map: 2.0.0 + debug: 4.3.7 + gensync: 1.0.0-beta.2 + json5: 2.2.3 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + + '@babel/generator@7.25.7': + dependencies: + '@babel/types': 7.25.8 + '@jridgewell/gen-mapping': 0.3.5 + '@jridgewell/trace-mapping': 0.3.25 + jsesc: 3.0.2 + + '@babel/helper-compilation-targets@7.25.7': + dependencies: + '@babel/compat-data': 7.25.8 + '@babel/helper-validator-option': 7.25.7 + browserslist: 4.24.0 + lru-cache: 5.1.1 + semver: 6.3.1 + + '@babel/helper-module-imports@7.25.7': + dependencies: + '@babel/traverse': 7.25.7 + '@babel/types': 7.25.8 + transitivePeerDependencies: + - supports-color + + '@babel/helper-module-transforms@7.25.7(@babel/core@7.25.8)': + dependencies: + '@babel/core': 7.25.8 + '@babel/helper-module-imports': 7.25.7 + '@babel/helper-simple-access': 7.25.7 + '@babel/helper-validator-identifier': 7.25.7 + '@babel/traverse': 7.25.7 + transitivePeerDependencies: + - supports-color + + '@babel/helper-plugin-utils@7.25.7': {} + + '@babel/helper-simple-access@7.25.7': + dependencies: + '@babel/traverse': 7.25.7 + '@babel/types': 7.25.8 + transitivePeerDependencies: + - supports-color + + '@babel/helper-string-parser@7.25.7': {} + + '@babel/helper-validator-identifier@7.25.7': {} + + '@babel/helper-validator-option@7.25.7': {} + + '@babel/helpers@7.25.7': + dependencies: + '@babel/template': 7.25.7 + '@babel/types': 7.25.8 + + '@babel/highlight@7.25.7': + dependencies: + '@babel/helper-validator-identifier': 7.25.7 + chalk: 2.4.2 + js-tokens: 4.0.0 + picocolors: 1.1.1 + + '@babel/parser@7.25.8': + dependencies: + '@babel/types': 7.25.8 + + '@babel/plugin-transform-react-jsx-self@7.25.7(@babel/core@7.25.8)': + dependencies: + '@babel/core': 7.25.8 + '@babel/helper-plugin-utils': 7.25.7 + + '@babel/plugin-transform-react-jsx-source@7.25.7(@babel/core@7.25.8)': + dependencies: + '@babel/core': 7.25.8 + '@babel/helper-plugin-utils': 7.25.7 + + '@babel/runtime@7.25.7': + dependencies: + regenerator-runtime: 0.14.1 + + '@babel/template@7.25.7': + dependencies: + '@babel/code-frame': 7.25.7 + '@babel/parser': 7.25.8 + '@babel/types': 7.25.8 + + '@babel/traverse@7.25.7': + dependencies: + '@babel/code-frame': 7.25.7 + '@babel/generator': 7.25.7 + '@babel/parser': 7.25.8 + '@babel/template': 7.25.7 + '@babel/types': 7.25.8 + debug: 4.3.7 + globals: 11.12.0 + transitivePeerDependencies: + - supports-color + + '@babel/types@7.25.8': + dependencies: + '@babel/helper-string-parser': 7.25.7 + '@babel/helper-validator-identifier': 7.25.7 + to-fast-properties: 2.0.0 + + '@base2/pretty-print-object@1.0.1': {} + + '@bundled-es-modules/cookie@2.0.0': + dependencies: + cookie: 0.5.0 + + '@bundled-es-modules/statuses@1.0.1': + dependencies: + statuses: 2.0.1 + + '@bundled-es-modules/tough-cookie@0.1.6': + dependencies: + '@types/tough-cookie': 4.0.5 + tough-cookie: 4.1.4 + + '@commitlint/cli@19.5.0(@types/node@22.7.6)(typescript@5.6.3)': + dependencies: + '@commitlint/format': 19.5.0 + '@commitlint/lint': 19.5.0 + '@commitlint/load': 19.5.0(@types/node@22.7.6)(typescript@5.6.3) + '@commitlint/read': 19.5.0 + '@commitlint/types': 19.5.0 + tinyexec: 0.3.1 + yargs: 17.7.2 + transitivePeerDependencies: + - '@types/node' + - typescript + + '@commitlint/config-conventional@19.5.0': + dependencies: + '@commitlint/types': 19.5.0 + conventional-changelog-conventionalcommits: 7.0.2 + + '@commitlint/config-validator@19.5.0': + dependencies: + '@commitlint/types': 19.5.0 + ajv: 8.17.1 + + '@commitlint/ensure@19.5.0': + dependencies: + '@commitlint/types': 19.5.0 + lodash.camelcase: 4.3.0 + lodash.kebabcase: 4.1.1 + lodash.snakecase: 4.1.1 + lodash.startcase: 4.4.0 + lodash.upperfirst: 4.3.1 + + '@commitlint/execute-rule@19.5.0': {} + + '@commitlint/format@19.5.0': + dependencies: + '@commitlint/types': 19.5.0 + chalk: 5.3.0 + + '@commitlint/is-ignored@19.5.0': + dependencies: + '@commitlint/types': 19.5.0 + semver: 7.6.3 + + '@commitlint/lint@19.5.0': + dependencies: + '@commitlint/is-ignored': 19.5.0 + '@commitlint/parse': 19.5.0 + '@commitlint/rules': 19.5.0 + '@commitlint/types': 19.5.0 + + '@commitlint/load@19.5.0(@types/node@22.7.6)(typescript@5.6.3)': + dependencies: + '@commitlint/config-validator': 19.5.0 + '@commitlint/execute-rule': 19.5.0 + '@commitlint/resolve-extends': 19.5.0 + '@commitlint/types': 19.5.0 + chalk: 5.3.0 + cosmiconfig: 9.0.0(typescript@5.6.3) + cosmiconfig-typescript-loader: 5.0.0(@types/node@22.7.6)(cosmiconfig@9.0.0(typescript@5.6.3))(typescript@5.6.3) + lodash.isplainobject: 4.0.6 + lodash.merge: 4.6.2 + lodash.uniq: 4.5.0 + transitivePeerDependencies: + - '@types/node' + - typescript + + '@commitlint/message@19.5.0': {} + + '@commitlint/parse@19.5.0': + dependencies: + '@commitlint/types': 19.5.0 + conventional-changelog-angular: 7.0.0 + conventional-commits-parser: 5.0.0 + + '@commitlint/read@19.5.0': + dependencies: + '@commitlint/top-level': 19.5.0 + '@commitlint/types': 19.5.0 + git-raw-commits: 4.0.0 + minimist: 1.2.8 + tinyexec: 0.3.1 + + '@commitlint/resolve-extends@19.5.0': + dependencies: + '@commitlint/config-validator': 19.5.0 + '@commitlint/types': 19.5.0 + global-directory: 4.0.1 + import-meta-resolve: 4.1.0 + lodash.mergewith: 4.6.2 + resolve-from: 5.0.0 + + '@commitlint/rules@19.5.0': + dependencies: + '@commitlint/ensure': 19.5.0 + '@commitlint/message': 19.5.0 + '@commitlint/to-lines': 19.5.0 + '@commitlint/types': 19.5.0 + + '@commitlint/to-lines@19.5.0': {} + + '@commitlint/top-level@19.5.0': + dependencies: + find-up: 7.0.0 + + '@commitlint/types@19.5.0': + dependencies: + '@types/conventional-commits-parser': 5.0.0 + chalk: 5.3.0 + + '@esbuild/aix-ppc64@0.21.5': + optional: true + + '@esbuild/aix-ppc64@0.23.1': + optional: true + + '@esbuild/android-arm64@0.21.5': + optional: true + + '@esbuild/android-arm64@0.23.1': + optional: true + + '@esbuild/android-arm@0.21.5': + optional: true + + '@esbuild/android-arm@0.23.1': + optional: true + + '@esbuild/android-x64@0.21.5': + optional: true + + '@esbuild/android-x64@0.23.1': + optional: true + + '@esbuild/darwin-arm64@0.21.5': + optional: true + + '@esbuild/darwin-arm64@0.23.1': + optional: true + + '@esbuild/darwin-x64@0.21.5': + optional: true + + '@esbuild/darwin-x64@0.23.1': + optional: true + + '@esbuild/freebsd-arm64@0.21.5': + optional: true + + '@esbuild/freebsd-arm64@0.23.1': + optional: true + + '@esbuild/freebsd-x64@0.21.5': + optional: true + + '@esbuild/freebsd-x64@0.23.1': + optional: true + + '@esbuild/linux-arm64@0.21.5': + optional: true + + '@esbuild/linux-arm64@0.23.1': + optional: true + + '@esbuild/linux-arm@0.21.5': + optional: true + + '@esbuild/linux-arm@0.23.1': + optional: true + + '@esbuild/linux-ia32@0.21.5': + optional: true + + '@esbuild/linux-ia32@0.23.1': + optional: true + + '@esbuild/linux-loong64@0.21.5': + optional: true + + '@esbuild/linux-loong64@0.23.1': + optional: true + + '@esbuild/linux-mips64el@0.21.5': + optional: true + + '@esbuild/linux-mips64el@0.23.1': + optional: true + + '@esbuild/linux-ppc64@0.21.5': + optional: true + + '@esbuild/linux-ppc64@0.23.1': + optional: true + + '@esbuild/linux-riscv64@0.21.5': + optional: true + + '@esbuild/linux-riscv64@0.23.1': + optional: true + + '@esbuild/linux-s390x@0.21.5': + optional: true + + '@esbuild/linux-s390x@0.23.1': + optional: true + + '@esbuild/linux-x64@0.21.5': + optional: true + + '@esbuild/linux-x64@0.23.1': + optional: true + + '@esbuild/netbsd-x64@0.21.5': + optional: true + + '@esbuild/netbsd-x64@0.23.1': + optional: true + + '@esbuild/openbsd-arm64@0.23.1': + optional: true + + '@esbuild/openbsd-x64@0.21.5': + optional: true + + '@esbuild/openbsd-x64@0.23.1': + optional: true + + '@esbuild/sunos-x64@0.21.5': + optional: true + + '@esbuild/sunos-x64@0.23.1': + optional: true + + '@esbuild/win32-arm64@0.21.5': + optional: true + + '@esbuild/win32-arm64@0.23.1': + optional: true + + '@esbuild/win32-ia32@0.21.5': + optional: true + + '@esbuild/win32-ia32@0.23.1': + optional: true + + '@esbuild/win32-x64@0.21.5': + optional: true + + '@esbuild/win32-x64@0.23.1': + optional: true + + '@eslint-community/eslint-utils@4.4.0(eslint@9.13.0(jiti@1.21.6))': + dependencies: + eslint: 9.13.0(jiti@1.21.6) + eslint-visitor-keys: 3.4.3 + + '@eslint-community/regexpp@4.11.1': {} + + '@eslint/compat@1.2.1(eslint@9.13.0(jiti@1.21.6))': + optionalDependencies: + eslint: 9.13.0(jiti@1.21.6) + + '@eslint/config-array@0.18.0': + dependencies: + '@eslint/object-schema': 2.1.4 + debug: 4.3.7 + minimatch: 3.1.2 + transitivePeerDependencies: + - supports-color + + '@eslint/core@0.7.0': {} + + '@eslint/eslintrc@3.1.0': + dependencies: + ajv: 6.12.6 + debug: 4.3.7 + espree: 10.2.0 + globals: 14.0.0 + ignore: 5.3.2 + import-fresh: 3.3.0 + js-yaml: 4.1.0 + minimatch: 3.1.2 + strip-json-comments: 3.1.1 + transitivePeerDependencies: + - supports-color + + '@eslint/js@9.13.0': {} + + '@eslint/object-schema@2.1.4': {} + + '@eslint/plugin-kit@0.2.1': + dependencies: + levn: 0.4.1 + + '@faker-js/faker@9.0.3': {} + + '@floating-ui/core@1.6.8': + dependencies: + '@floating-ui/utils': 0.2.8 + + '@floating-ui/dom@1.6.11': + dependencies: + '@floating-ui/core': 1.6.8 + '@floating-ui/utils': 0.2.8 + + '@floating-ui/react-dom@2.1.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@floating-ui/dom': 1.6.11 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + + '@floating-ui/utils@0.2.8': {} + + '@hookform/resolvers@3.9.0(react-hook-form@7.53.0(react@18.3.1))': + dependencies: + react-hook-form: 7.53.0(react@18.3.1) + + '@humanfs/core@0.19.0': {} + + '@humanfs/node@0.16.5': + dependencies: + '@humanfs/core': 0.19.0 + '@humanwhocodes/retry': 0.3.1 + + '@humanwhocodes/module-importer@1.0.1': {} + + '@humanwhocodes/retry@0.3.1': {} + + '@inquirer/confirm@3.2.0': + dependencies: + '@inquirer/core': 9.2.1 + '@inquirer/type': 1.5.5 + + '@inquirer/core@9.2.1': + dependencies: + '@inquirer/figures': 1.0.7 + '@inquirer/type': 2.0.0 + '@types/mute-stream': 0.0.4 + '@types/node': 22.7.6 + '@types/wrap-ansi': 3.0.0 + ansi-escapes: 4.3.2 + cli-width: 4.1.0 + mute-stream: 1.0.0 + signal-exit: 4.1.0 + strip-ansi: 6.0.1 + wrap-ansi: 6.2.0 + yoctocolors-cjs: 2.1.2 + + '@inquirer/figures@1.0.7': {} + + '@inquirer/type@1.5.5': + dependencies: + mute-stream: 1.0.0 + + '@inquirer/type@2.0.0': + dependencies: + mute-stream: 1.0.0 + + '@isaacs/cliui@8.0.2': + dependencies: + string-width: 5.1.2 + string-width-cjs: string-width@4.2.3 + strip-ansi: 7.1.0 + strip-ansi-cjs: strip-ansi@6.0.1 + wrap-ansi: 8.1.0 + wrap-ansi-cjs: wrap-ansi@7.0.0 + + '@joshwooding/vite-plugin-react-docgen-typescript@0.3.0(typescript@5.6.3)(vite@5.4.9(@types/node@22.7.6))': + dependencies: + glob: 7.2.3 + glob-promise: 4.2.2(glob@7.2.3) + magic-string: 0.27.0 + react-docgen-typescript: 2.2.2(typescript@5.6.3) + vite: 5.4.9(@types/node@22.7.6) + optionalDependencies: + typescript: 5.6.3 + + '@jridgewell/gen-mapping@0.3.5': + dependencies: + '@jridgewell/set-array': 1.2.1 + '@jridgewell/sourcemap-codec': 1.5.0 + '@jridgewell/trace-mapping': 0.3.25 + + '@jridgewell/resolve-uri@3.1.2': {} + + '@jridgewell/set-array@1.2.1': {} + + '@jridgewell/sourcemap-codec@1.5.0': {} + + '@jridgewell/trace-mapping@0.3.25': + dependencies: + '@jridgewell/resolve-uri': 3.1.2 + '@jridgewell/sourcemap-codec': 1.5.0 + + '@mdx-js/react@3.1.0(@types/react@18.3.11)(react@18.3.1)': + dependencies: + '@types/mdx': 2.0.13 + '@types/react': 18.3.11 + react: 18.3.1 + + '@mswjs/interceptors@0.35.9': + dependencies: + '@open-draft/deferred-promise': 2.2.0 + '@open-draft/logger': 0.3.0 + '@open-draft/until': 2.1.0 + is-node-process: 1.2.0 + outvariant: 1.4.3 + strict-event-emitter: 0.5.1 + + '@nodelib/fs.scandir@2.1.5': + dependencies: + '@nodelib/fs.stat': 2.0.5 + run-parallel: 1.2.0 + + '@nodelib/fs.stat@2.0.5': {} + + '@nodelib/fs.walk@1.2.8': + dependencies: + '@nodelib/fs.scandir': 2.1.5 + fastq: 1.17.1 + + '@nolyfill/is-core-module@1.0.39': {} + + '@open-draft/deferred-promise@2.2.0': {} + + '@open-draft/logger@0.3.0': + dependencies: + is-node-process: 1.2.0 + outvariant: 1.4.3 + + '@open-draft/until@2.1.0': {} + + '@pkgjs/parseargs@0.11.0': + optional: true + + '@pkgr/core@0.1.1': {} + + '@radix-ui/number@1.1.0': {} + + '@radix-ui/number@1.1.1': {} + + '@radix-ui/primitive@1.0.1': + dependencies: + '@babel/runtime': 7.25.7 + + '@radix-ui/primitive@1.1.0': {} + + '@radix-ui/primitive@1.1.2': {} + + '@radix-ui/react-alert-dialog@1.1.2(@types/react-dom@18.3.1)(@types/react@18.3.11)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/primitive': 1.1.0 + '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.11)(react@18.3.1) + '@radix-ui/react-context': 1.1.1(@types/react@18.3.11)(react@18.3.1) + '@radix-ui/react-dialog': 1.1.2(@types/react-dom@18.3.1)(@types/react@18.3.11)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.1)(@types/react@18.3.11)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-slot': 1.1.0(@types/react@18.3.11)(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.11 + '@types/react-dom': 18.3.1 + + '@radix-ui/react-arrow@1.1.0(@types/react-dom@18.3.1)(@types/react@18.3.11)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.1)(@types/react@18.3.11)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.11 + '@types/react-dom': 18.3.1 + + '@radix-ui/react-avatar@1.1.1(@types/react-dom@18.3.1)(@types/react@18.3.11)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/react-context': 1.1.1(@types/react@18.3.11)(react@18.3.1) + '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.1)(@types/react@18.3.11)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.3.11)(react@18.3.1) + '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@18.3.11)(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.11 + '@types/react-dom': 18.3.1 + + '@radix-ui/react-collection@1.1.0(@types/react-dom@18.3.1)(@types/react@18.3.11)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.11)(react@18.3.1) + '@radix-ui/react-context': 1.1.0(@types/react@18.3.11)(react@18.3.1) + '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.1)(@types/react@18.3.11)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-slot': 1.1.0(@types/react@18.3.11)(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.11 + '@types/react-dom': 18.3.1 + + '@radix-ui/react-compose-refs@1.0.1(@types/react@18.3.11)(react@18.3.1)': + dependencies: + '@babel/runtime': 7.25.7 + react: 18.3.1 + optionalDependencies: + '@types/react': 18.3.11 + + '@radix-ui/react-compose-refs@1.1.0(@types/react@18.3.11)(react@18.3.1)': + dependencies: + react: 18.3.1 + optionalDependencies: + '@types/react': 18.3.11 + + '@radix-ui/react-compose-refs@1.1.2(@types/react@18.3.11)(react@18.3.1)': + dependencies: + react: 18.3.1 + optionalDependencies: + '@types/react': 18.3.11 + + '@radix-ui/react-context@1.0.1(@types/react@18.3.11)(react@18.3.1)': + dependencies: + '@babel/runtime': 7.25.7 + react: 18.3.1 + optionalDependencies: + '@types/react': 18.3.11 + + '@radix-ui/react-context@1.1.0(@types/react@18.3.11)(react@18.3.1)': + dependencies: + react: 18.3.1 + optionalDependencies: + '@types/react': 18.3.11 + + '@radix-ui/react-context@1.1.1(@types/react@18.3.11)(react@18.3.1)': + dependencies: + react: 18.3.1 + optionalDependencies: + '@types/react': 18.3.11 + + '@radix-ui/react-context@1.1.2(@types/react@18.3.11)(react@18.3.1)': + dependencies: + react: 18.3.1 + optionalDependencies: + '@types/react': 18.3.11 + + '@radix-ui/react-dialog@1.0.5(@types/react-dom@18.3.1)(@types/react@18.3.11)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@babel/runtime': 7.25.7 + '@radix-ui/primitive': 1.0.1 + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.3.11)(react@18.3.1) + '@radix-ui/react-context': 1.0.1(@types/react@18.3.11)(react@18.3.1) + '@radix-ui/react-dismissable-layer': 1.0.5(@types/react-dom@18.3.1)(@types/react@18.3.11)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-focus-guards': 1.0.1(@types/react@18.3.11)(react@18.3.1) + '@radix-ui/react-focus-scope': 1.0.4(@types/react-dom@18.3.1)(@types/react@18.3.11)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-id': 1.0.1(@types/react@18.3.11)(react@18.3.1) + '@radix-ui/react-portal': 1.0.4(@types/react-dom@18.3.1)(@types/react@18.3.11)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-presence': 1.0.1(@types/react-dom@18.3.1)(@types/react@18.3.11)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.1)(@types/react@18.3.11)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-slot': 1.0.2(@types/react@18.3.11)(react@18.3.1) + '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.3.11)(react@18.3.1) + aria-hidden: 1.2.4 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + react-remove-scroll: 2.5.5(@types/react@18.3.11)(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.11 + '@types/react-dom': 18.3.1 + + '@radix-ui/react-dialog@1.1.2(@types/react-dom@18.3.1)(@types/react@18.3.11)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/primitive': 1.1.0 + '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.11)(react@18.3.1) + '@radix-ui/react-context': 1.1.1(@types/react@18.3.11)(react@18.3.1) + '@radix-ui/react-dismissable-layer': 1.1.1(@types/react-dom@18.3.1)(@types/react@18.3.11)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-focus-guards': 1.1.1(@types/react@18.3.11)(react@18.3.1) + '@radix-ui/react-focus-scope': 1.1.0(@types/react-dom@18.3.1)(@types/react@18.3.11)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-id': 1.1.0(@types/react@18.3.11)(react@18.3.1) + '@radix-ui/react-portal': 1.1.2(@types/react-dom@18.3.1)(@types/react@18.3.11)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-presence': 1.1.1(@types/react-dom@18.3.1)(@types/react@18.3.11)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.1)(@types/react@18.3.11)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-slot': 1.1.0(@types/react@18.3.11)(react@18.3.1) + '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@18.3.11)(react@18.3.1) + aria-hidden: 1.2.4 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + react-remove-scroll: 2.6.0(@types/react@18.3.11)(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.11 + '@types/react-dom': 18.3.1 + + '@radix-ui/react-direction@1.1.0(@types/react@18.3.11)(react@18.3.1)': + dependencies: + react: 18.3.1 + optionalDependencies: + '@types/react': 18.3.11 + + '@radix-ui/react-direction@1.1.1(@types/react@18.3.11)(react@18.3.1)': + dependencies: + react: 18.3.1 + optionalDependencies: + '@types/react': 18.3.11 + + '@radix-ui/react-dismissable-layer@1.0.5(@types/react-dom@18.3.1)(@types/react@18.3.11)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@babel/runtime': 7.25.7 + '@radix-ui/primitive': 1.0.1 + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.3.11)(react@18.3.1) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.1)(@types/react@18.3.11)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.3.11)(react@18.3.1) + '@radix-ui/react-use-escape-keydown': 1.0.3(@types/react@18.3.11)(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.11 + '@types/react-dom': 18.3.1 + + '@radix-ui/react-dismissable-layer@1.1.1(@types/react-dom@18.3.1)(@types/react@18.3.11)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/primitive': 1.1.0 + '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.11)(react@18.3.1) + '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.1)(@types/react@18.3.11)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.3.11)(react@18.3.1) + '@radix-ui/react-use-escape-keydown': 1.1.0(@types/react@18.3.11)(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.11 + '@types/react-dom': 18.3.1 + + '@radix-ui/react-dropdown-menu@2.1.2(@types/react-dom@18.3.1)(@types/react@18.3.11)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/primitive': 1.1.0 + '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.11)(react@18.3.1) + '@radix-ui/react-context': 1.1.1(@types/react@18.3.11)(react@18.3.1) + '@radix-ui/react-id': 1.1.0(@types/react@18.3.11)(react@18.3.1) + '@radix-ui/react-menu': 2.1.2(@types/react-dom@18.3.1)(@types/react@18.3.11)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.1)(@types/react@18.3.11)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@18.3.11)(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.11 + '@types/react-dom': 18.3.1 + + '@radix-ui/react-focus-guards@1.0.1(@types/react@18.3.11)(react@18.3.1)': + dependencies: + '@babel/runtime': 7.25.7 + react: 18.3.1 + optionalDependencies: + '@types/react': 18.3.11 + + '@radix-ui/react-focus-guards@1.1.1(@types/react@18.3.11)(react@18.3.1)': + dependencies: + react: 18.3.1 + optionalDependencies: + '@types/react': 18.3.11 + + '@radix-ui/react-focus-scope@1.0.4(@types/react-dom@18.3.1)(@types/react@18.3.11)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@babel/runtime': 7.25.7 + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.3.11)(react@18.3.1) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.1)(@types/react@18.3.11)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.3.11)(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.11 + '@types/react-dom': 18.3.1 + + '@radix-ui/react-focus-scope@1.1.0(@types/react-dom@18.3.1)(@types/react@18.3.11)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.11)(react@18.3.1) + '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.1)(@types/react@18.3.11)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.3.11)(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.11 + '@types/react-dom': 18.3.1 + + '@radix-ui/react-id@1.0.1(@types/react@18.3.11)(react@18.3.1)': + dependencies: + '@babel/runtime': 7.25.7 + '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.3.11)(react@18.3.1) + react: 18.3.1 + optionalDependencies: + '@types/react': 18.3.11 + + '@radix-ui/react-id@1.1.0(@types/react@18.3.11)(react@18.3.1)': + dependencies: + '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@18.3.11)(react@18.3.1) + react: 18.3.1 + optionalDependencies: + '@types/react': 18.3.11 + + '@radix-ui/react-label@2.1.0(@types/react-dom@18.3.1)(@types/react@18.3.11)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.1)(@types/react@18.3.11)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.11 + '@types/react-dom': 18.3.1 + + '@radix-ui/react-menu@2.1.2(@types/react-dom@18.3.1)(@types/react@18.3.11)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/primitive': 1.1.0 + '@radix-ui/react-collection': 1.1.0(@types/react-dom@18.3.1)(@types/react@18.3.11)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.11)(react@18.3.1) + '@radix-ui/react-context': 1.1.1(@types/react@18.3.11)(react@18.3.1) + '@radix-ui/react-direction': 1.1.0(@types/react@18.3.11)(react@18.3.1) + '@radix-ui/react-dismissable-layer': 1.1.1(@types/react-dom@18.3.1)(@types/react@18.3.11)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-focus-guards': 1.1.1(@types/react@18.3.11)(react@18.3.1) + '@radix-ui/react-focus-scope': 1.1.0(@types/react-dom@18.3.1)(@types/react@18.3.11)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-id': 1.1.0(@types/react@18.3.11)(react@18.3.1) + '@radix-ui/react-popper': 1.2.0(@types/react-dom@18.3.1)(@types/react@18.3.11)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-portal': 1.1.2(@types/react-dom@18.3.1)(@types/react@18.3.11)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-presence': 1.1.1(@types/react-dom@18.3.1)(@types/react@18.3.11)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.1)(@types/react@18.3.11)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-roving-focus': 1.1.0(@types/react-dom@18.3.1)(@types/react@18.3.11)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-slot': 1.1.0(@types/react@18.3.11)(react@18.3.1) + '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.3.11)(react@18.3.1) + aria-hidden: 1.2.4 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + react-remove-scroll: 2.6.0(@types/react@18.3.11)(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.11 + '@types/react-dom': 18.3.1 + + '@radix-ui/react-popover@1.1.2(@types/react-dom@18.3.1)(@types/react@18.3.11)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/primitive': 1.1.0 + '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.11)(react@18.3.1) + '@radix-ui/react-context': 1.1.1(@types/react@18.3.11)(react@18.3.1) + '@radix-ui/react-dismissable-layer': 1.1.1(@types/react-dom@18.3.1)(@types/react@18.3.11)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-focus-guards': 1.1.1(@types/react@18.3.11)(react@18.3.1) + '@radix-ui/react-focus-scope': 1.1.0(@types/react-dom@18.3.1)(@types/react@18.3.11)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-id': 1.1.0(@types/react@18.3.11)(react@18.3.1) + '@radix-ui/react-popper': 1.2.0(@types/react-dom@18.3.1)(@types/react@18.3.11)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-portal': 1.1.2(@types/react-dom@18.3.1)(@types/react@18.3.11)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-presence': 1.1.1(@types/react-dom@18.3.1)(@types/react@18.3.11)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.1)(@types/react@18.3.11)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-slot': 1.1.0(@types/react@18.3.11)(react@18.3.1) + '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@18.3.11)(react@18.3.1) + aria-hidden: 1.2.4 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + react-remove-scroll: 2.6.0(@types/react@18.3.11)(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.11 + '@types/react-dom': 18.3.1 + + '@radix-ui/react-popper@1.2.0(@types/react-dom@18.3.1)(@types/react@18.3.11)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@floating-ui/react-dom': 2.1.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-arrow': 1.1.0(@types/react-dom@18.3.1)(@types/react@18.3.11)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.11)(react@18.3.1) + '@radix-ui/react-context': 1.1.0(@types/react@18.3.11)(react@18.3.1) + '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.1)(@types/react@18.3.11)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.3.11)(react@18.3.1) + '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@18.3.11)(react@18.3.1) + '@radix-ui/react-use-rect': 1.1.0(@types/react@18.3.11)(react@18.3.1) + '@radix-ui/react-use-size': 1.1.0(@types/react@18.3.11)(react@18.3.1) + '@radix-ui/rect': 1.1.0 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.11 + '@types/react-dom': 18.3.1 + + '@radix-ui/react-portal@1.0.4(@types/react-dom@18.3.1)(@types/react@18.3.11)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@babel/runtime': 7.25.7 + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.1)(@types/react@18.3.11)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.11 + '@types/react-dom': 18.3.1 + + '@radix-ui/react-portal@1.1.2(@types/react-dom@18.3.1)(@types/react@18.3.11)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.1)(@types/react@18.3.11)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@18.3.11)(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.11 + '@types/react-dom': 18.3.1 + + '@radix-ui/react-presence@1.0.1(@types/react-dom@18.3.1)(@types/react@18.3.11)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@babel/runtime': 7.25.7 + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.3.11)(react@18.3.1) + '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.3.11)(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.11 + '@types/react-dom': 18.3.1 + + '@radix-ui/react-presence@1.1.1(@types/react-dom@18.3.1)(@types/react@18.3.11)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.11)(react@18.3.1) + '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@18.3.11)(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.11 + '@types/react-dom': 18.3.1 + + '@radix-ui/react-presence@1.1.4(@types/react-dom@18.3.1)(@types/react@18.3.11)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/react-compose-refs': 1.1.2(@types/react@18.3.11)(react@18.3.1) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@18.3.11)(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.11 + '@types/react-dom': 18.3.1 + + '@radix-ui/react-primitive@1.0.3(@types/react-dom@18.3.1)(@types/react@18.3.11)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@babel/runtime': 7.25.7 + '@radix-ui/react-slot': 1.0.2(@types/react@18.3.11)(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.11 + '@types/react-dom': 18.3.1 + + '@radix-ui/react-primitive@2.0.0(@types/react-dom@18.3.1)(@types/react@18.3.11)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/react-slot': 1.1.0(@types/react@18.3.11)(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.11 + '@types/react-dom': 18.3.1 + + '@radix-ui/react-primitive@2.1.0(@types/react-dom@18.3.1)(@types/react@18.3.11)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/react-slot': 1.2.0(@types/react@18.3.11)(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.11 + '@types/react-dom': 18.3.1 + + '@radix-ui/react-roving-focus@1.1.0(@types/react-dom@18.3.1)(@types/react@18.3.11)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/primitive': 1.1.0 + '@radix-ui/react-collection': 1.1.0(@types/react-dom@18.3.1)(@types/react@18.3.11)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.11)(react@18.3.1) + '@radix-ui/react-context': 1.1.0(@types/react@18.3.11)(react@18.3.1) + '@radix-ui/react-direction': 1.1.0(@types/react@18.3.11)(react@18.3.1) + '@radix-ui/react-id': 1.1.0(@types/react@18.3.11)(react@18.3.1) + '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.1)(@types/react@18.3.11)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.3.11)(react@18.3.1) + '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@18.3.11)(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.11 + '@types/react-dom': 18.3.1 + + '@radix-ui/react-scroll-area@1.2.6(@types/react-dom@18.3.1)(@types/react@18.3.11)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/number': 1.1.1 + '@radix-ui/primitive': 1.1.2 + '@radix-ui/react-compose-refs': 1.1.2(@types/react@18.3.11)(react@18.3.1) + '@radix-ui/react-context': 1.1.2(@types/react@18.3.11)(react@18.3.1) + '@radix-ui/react-direction': 1.1.1(@types/react@18.3.11)(react@18.3.1) + '@radix-ui/react-presence': 1.1.4(@types/react-dom@18.3.1)(@types/react@18.3.11)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-primitive': 2.1.0(@types/react-dom@18.3.1)(@types/react@18.3.11)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@18.3.11)(react@18.3.1) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@18.3.11)(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.11 + '@types/react-dom': 18.3.1 + + '@radix-ui/react-select@2.1.2(@types/react-dom@18.3.1)(@types/react@18.3.11)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/number': 1.1.0 + '@radix-ui/primitive': 1.1.0 + '@radix-ui/react-collection': 1.1.0(@types/react-dom@18.3.1)(@types/react@18.3.11)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.11)(react@18.3.1) + '@radix-ui/react-context': 1.1.1(@types/react@18.3.11)(react@18.3.1) + '@radix-ui/react-direction': 1.1.0(@types/react@18.3.11)(react@18.3.1) + '@radix-ui/react-dismissable-layer': 1.1.1(@types/react-dom@18.3.1)(@types/react@18.3.11)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-focus-guards': 1.1.1(@types/react@18.3.11)(react@18.3.1) + '@radix-ui/react-focus-scope': 1.1.0(@types/react-dom@18.3.1)(@types/react@18.3.11)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-id': 1.1.0(@types/react@18.3.11)(react@18.3.1) + '@radix-ui/react-popper': 1.2.0(@types/react-dom@18.3.1)(@types/react@18.3.11)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-portal': 1.1.2(@types/react-dom@18.3.1)(@types/react@18.3.11)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.1)(@types/react@18.3.11)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-slot': 1.1.0(@types/react@18.3.11)(react@18.3.1) + '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.3.11)(react@18.3.1) + '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@18.3.11)(react@18.3.1) + '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@18.3.11)(react@18.3.1) + '@radix-ui/react-use-previous': 1.1.0(@types/react@18.3.11)(react@18.3.1) + '@radix-ui/react-visually-hidden': 1.1.0(@types/react-dom@18.3.1)(@types/react@18.3.11)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + aria-hidden: 1.2.4 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + react-remove-scroll: 2.6.0(@types/react@18.3.11)(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.11 + '@types/react-dom': 18.3.1 + + '@radix-ui/react-slot@1.0.2(@types/react@18.3.11)(react@18.3.1)': + dependencies: + '@babel/runtime': 7.25.7 + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.3.11)(react@18.3.1) + react: 18.3.1 + optionalDependencies: + '@types/react': 18.3.11 + + '@radix-ui/react-slot@1.1.0(@types/react@18.3.11)(react@18.3.1)': + dependencies: + '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.11)(react@18.3.1) + react: 18.3.1 + optionalDependencies: + '@types/react': 18.3.11 + + '@radix-ui/react-slot@1.2.0(@types/react@18.3.11)(react@18.3.1)': + dependencies: + '@radix-ui/react-compose-refs': 1.1.2(@types/react@18.3.11)(react@18.3.1) + react: 18.3.1 + optionalDependencies: + '@types/react': 18.3.11 + + '@radix-ui/react-tabs@1.1.1(@types/react-dom@18.3.1)(@types/react@18.3.11)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/primitive': 1.1.0 + '@radix-ui/react-context': 1.1.1(@types/react@18.3.11)(react@18.3.1) + '@radix-ui/react-direction': 1.1.0(@types/react@18.3.11)(react@18.3.1) + '@radix-ui/react-id': 1.1.0(@types/react@18.3.11)(react@18.3.1) + '@radix-ui/react-presence': 1.1.1(@types/react-dom@18.3.1)(@types/react@18.3.11)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.1)(@types/react@18.3.11)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-roving-focus': 1.1.0(@types/react-dom@18.3.1)(@types/react@18.3.11)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@18.3.11)(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.11 + '@types/react-dom': 18.3.1 + + '@radix-ui/react-tooltip@1.1.3(@types/react-dom@18.3.1)(@types/react@18.3.11)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/primitive': 1.1.0 + '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.11)(react@18.3.1) + '@radix-ui/react-context': 1.1.1(@types/react@18.3.11)(react@18.3.1) + '@radix-ui/react-dismissable-layer': 1.1.1(@types/react-dom@18.3.1)(@types/react@18.3.11)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-id': 1.1.0(@types/react@18.3.11)(react@18.3.1) + '@radix-ui/react-popper': 1.2.0(@types/react-dom@18.3.1)(@types/react@18.3.11)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-portal': 1.1.2(@types/react-dom@18.3.1)(@types/react@18.3.11)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-presence': 1.1.1(@types/react-dom@18.3.1)(@types/react@18.3.11)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.1)(@types/react@18.3.11)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-slot': 1.1.0(@types/react@18.3.11)(react@18.3.1) + '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@18.3.11)(react@18.3.1) + '@radix-ui/react-visually-hidden': 1.1.0(@types/react-dom@18.3.1)(@types/react@18.3.11)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.11 + '@types/react-dom': 18.3.1 + + '@radix-ui/react-use-callback-ref@1.0.1(@types/react@18.3.11)(react@18.3.1)': + dependencies: + '@babel/runtime': 7.25.7 + react: 18.3.1 + optionalDependencies: + '@types/react': 18.3.11 + + '@radix-ui/react-use-callback-ref@1.1.0(@types/react@18.3.11)(react@18.3.1)': + dependencies: + react: 18.3.1 + optionalDependencies: + '@types/react': 18.3.11 + + '@radix-ui/react-use-callback-ref@1.1.1(@types/react@18.3.11)(react@18.3.1)': + dependencies: + react: 18.3.1 + optionalDependencies: + '@types/react': 18.3.11 + + '@radix-ui/react-use-controllable-state@1.0.1(@types/react@18.3.11)(react@18.3.1)': + dependencies: + '@babel/runtime': 7.25.7 + '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.3.11)(react@18.3.1) + react: 18.3.1 + optionalDependencies: + '@types/react': 18.3.11 + + '@radix-ui/react-use-controllable-state@1.1.0(@types/react@18.3.11)(react@18.3.1)': + dependencies: + '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.3.11)(react@18.3.1) + react: 18.3.1 + optionalDependencies: + '@types/react': 18.3.11 + + '@radix-ui/react-use-escape-keydown@1.0.3(@types/react@18.3.11)(react@18.3.1)': + dependencies: + '@babel/runtime': 7.25.7 + '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.3.11)(react@18.3.1) + react: 18.3.1 + optionalDependencies: + '@types/react': 18.3.11 + + '@radix-ui/react-use-escape-keydown@1.1.0(@types/react@18.3.11)(react@18.3.1)': + dependencies: + '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.3.11)(react@18.3.1) + react: 18.3.1 + optionalDependencies: + '@types/react': 18.3.11 + + '@radix-ui/react-use-layout-effect@1.0.1(@types/react@18.3.11)(react@18.3.1)': + dependencies: + '@babel/runtime': 7.25.7 + react: 18.3.1 + optionalDependencies: + '@types/react': 18.3.11 + + '@radix-ui/react-use-layout-effect@1.1.0(@types/react@18.3.11)(react@18.3.1)': + dependencies: + react: 18.3.1 + optionalDependencies: + '@types/react': 18.3.11 + + '@radix-ui/react-use-layout-effect@1.1.1(@types/react@18.3.11)(react@18.3.1)': + dependencies: + react: 18.3.1 + optionalDependencies: + '@types/react': 18.3.11 + + '@radix-ui/react-use-previous@1.1.0(@types/react@18.3.11)(react@18.3.1)': + dependencies: + react: 18.3.1 + optionalDependencies: + '@types/react': 18.3.11 + + '@radix-ui/react-use-rect@1.1.0(@types/react@18.3.11)(react@18.3.1)': + dependencies: + '@radix-ui/rect': 1.1.0 + react: 18.3.1 + optionalDependencies: + '@types/react': 18.3.11 + + '@radix-ui/react-use-size@1.1.0(@types/react@18.3.11)(react@18.3.1)': + dependencies: + '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@18.3.11)(react@18.3.1) + react: 18.3.1 + optionalDependencies: + '@types/react': 18.3.11 + + '@radix-ui/react-visually-hidden@1.1.0(@types/react-dom@18.3.1)(@types/react@18.3.11)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.1)(@types/react@18.3.11)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.11 + '@types/react-dom': 18.3.1 + + '@radix-ui/rect@1.1.0': {} + + '@remix-run/router@1.20.0': {} + + '@rollup/pluginutils@5.1.2(rollup@4.24.0)': + dependencies: + '@types/estree': 1.0.6 + estree-walker: 2.0.2 + picomatch: 2.3.1 + optionalDependencies: + rollup: 4.24.0 + + '@rollup/rollup-android-arm-eabi@4.24.0': + optional: true + + '@rollup/rollup-android-arm64@4.24.0': + optional: true + + '@rollup/rollup-darwin-arm64@4.24.0': + optional: true + + '@rollup/rollup-darwin-x64@4.24.0': + optional: true + + '@rollup/rollup-linux-arm-gnueabihf@4.24.0': + optional: true + + '@rollup/rollup-linux-arm-musleabihf@4.24.0': + optional: true + + '@rollup/rollup-linux-arm64-gnu@4.24.0': + optional: true + + '@rollup/rollup-linux-arm64-musl@4.24.0': + optional: true + + '@rollup/rollup-linux-powerpc64le-gnu@4.24.0': + optional: true + + '@rollup/rollup-linux-riscv64-gnu@4.24.0': + optional: true + + '@rollup/rollup-linux-s390x-gnu@4.24.0': + optional: true + + '@rollup/rollup-linux-x64-gnu@4.24.0': + optional: true + + '@rollup/rollup-linux-x64-musl@4.24.0': + optional: true + + '@rollup/rollup-win32-arm64-msvc@4.24.0': + optional: true + + '@rollup/rollup-win32-ia32-msvc@4.24.0': + optional: true + + '@rollup/rollup-win32-x64-msvc@4.24.0': + optional: true + + '@rtsao/scc@1.1.0': {} + + '@storybook/addon-actions@8.3.6(storybook@8.3.6)': + dependencies: + '@storybook/global': 5.0.0 + '@types/uuid': 9.0.8 + dequal: 2.0.3 + polished: 4.3.1 + storybook: 8.3.6 + uuid: 9.0.1 + + '@storybook/addon-backgrounds@8.3.6(storybook@8.3.6)': + dependencies: + '@storybook/global': 5.0.0 + memoizerific: 1.11.3 + storybook: 8.3.6 + ts-dedent: 2.2.0 + + '@storybook/addon-controls@8.3.6(storybook@8.3.6)': + dependencies: + '@storybook/global': 5.0.0 + dequal: 2.0.3 + lodash: 4.17.21 + storybook: 8.3.6 + ts-dedent: 2.2.0 + + '@storybook/addon-docs@8.3.6(storybook@8.3.6)': + dependencies: + '@mdx-js/react': 3.1.0(@types/react@18.3.11)(react@18.3.1) + '@storybook/blocks': 8.3.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.3.6) + '@storybook/csf-plugin': 8.3.6(storybook@8.3.6) + '@storybook/global': 5.0.0 + '@storybook/react-dom-shim': 8.3.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.3.6) + '@types/react': 18.3.11 + fs-extra: 11.2.0 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + rehype-external-links: 3.0.0 + rehype-slug: 6.0.0 + storybook: 8.3.6 + ts-dedent: 2.2.0 + transitivePeerDependencies: + - webpack-sources + + '@storybook/addon-essentials@8.3.6(storybook@8.3.6)': + dependencies: + '@storybook/addon-actions': 8.3.6(storybook@8.3.6) + '@storybook/addon-backgrounds': 8.3.6(storybook@8.3.6) + '@storybook/addon-controls': 8.3.6(storybook@8.3.6) + '@storybook/addon-docs': 8.3.6(storybook@8.3.6) + '@storybook/addon-highlight': 8.3.6(storybook@8.3.6) + '@storybook/addon-measure': 8.3.6(storybook@8.3.6) + '@storybook/addon-outline': 8.3.6(storybook@8.3.6) + '@storybook/addon-toolbars': 8.3.6(storybook@8.3.6) + '@storybook/addon-viewport': 8.3.6(storybook@8.3.6) + storybook: 8.3.6 + ts-dedent: 2.2.0 + transitivePeerDependencies: + - webpack-sources + + '@storybook/addon-highlight@8.3.6(storybook@8.3.6)': + dependencies: + '@storybook/global': 5.0.0 + storybook: 8.3.6 + + '@storybook/addon-interactions@8.3.6(storybook@8.3.6)': + dependencies: + '@storybook/global': 5.0.0 + '@storybook/instrumenter': 8.3.6(storybook@8.3.6) + '@storybook/test': 8.3.6(storybook@8.3.6) + polished: 4.3.1 + storybook: 8.3.6 + ts-dedent: 2.2.0 + + '@storybook/addon-links@8.3.6(react@18.3.1)(storybook@8.3.6)': + dependencies: + '@storybook/csf': 0.1.11 + '@storybook/global': 5.0.0 + storybook: 8.3.6 + ts-dedent: 2.2.0 + optionalDependencies: + react: 18.3.1 + + '@storybook/addon-measure@8.3.6(storybook@8.3.6)': + dependencies: + '@storybook/global': 5.0.0 + storybook: 8.3.6 + tiny-invariant: 1.3.3 + + '@storybook/addon-outline@8.3.6(storybook@8.3.6)': + dependencies: + '@storybook/global': 5.0.0 + storybook: 8.3.6 + ts-dedent: 2.2.0 + + '@storybook/addon-themes@8.3.6(storybook@8.3.6)': + dependencies: + storybook: 8.3.6 + ts-dedent: 2.2.0 + + '@storybook/addon-toolbars@8.3.6(storybook@8.3.6)': + dependencies: + storybook: 8.3.6 + + '@storybook/addon-viewport@8.3.6(storybook@8.3.6)': + dependencies: + memoizerific: 1.11.3 + storybook: 8.3.6 + + '@storybook/blocks@8.3.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.3.6)': + dependencies: + '@storybook/csf': 0.1.11 + '@storybook/global': 5.0.0 + '@storybook/icons': 1.2.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@types/lodash': 4.17.11 + color-convert: 2.0.1 + dequal: 2.0.3 + lodash: 4.17.21 + markdown-to-jsx: 7.5.0(react@18.3.1) + memoizerific: 1.11.3 + polished: 4.3.1 + react-colorful: 5.6.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + storybook: 8.3.6 + telejson: 7.2.0 + ts-dedent: 2.2.0 + util-deprecate: 1.0.2 + optionalDependencies: + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + + '@storybook/builder-vite@8.3.6(storybook@8.3.6)(typescript@5.6.3)(vite@5.4.9(@types/node@22.7.6))': + dependencies: + '@storybook/csf-plugin': 8.3.6(storybook@8.3.6) + '@types/find-cache-dir': 3.2.1 + browser-assert: 1.2.1 + es-module-lexer: 1.5.4 + express: 4.21.1 + find-cache-dir: 3.3.2 + fs-extra: 11.2.0 + magic-string: 0.30.12 + storybook: 8.3.6 + ts-dedent: 2.2.0 + vite: 5.4.9(@types/node@22.7.6) + optionalDependencies: + typescript: 5.6.3 + transitivePeerDependencies: + - supports-color + - webpack-sources + + '@storybook/channels@7.6.17': + dependencies: + '@storybook/client-logger': 7.6.17 + '@storybook/core-events': 7.6.17 + '@storybook/global': 5.0.0 + qs: 6.13.0 + telejson: 7.2.0 + tiny-invariant: 1.3.3 + + '@storybook/client-logger@7.6.17': + dependencies: + '@storybook/global': 5.0.0 + + '@storybook/components@8.3.6(storybook@8.3.6)': + dependencies: + storybook: 8.3.6 + + '@storybook/core-events@7.6.17': + dependencies: + ts-dedent: 2.2.0 + + '@storybook/core@8.3.6': + dependencies: + '@storybook/csf': 0.1.11 + '@types/express': 4.17.21 + better-opn: 3.0.2 + browser-assert: 1.2.1 + esbuild: 0.23.1 + esbuild-register: 3.6.0(esbuild@0.23.1) + express: 4.21.1 + jsdoc-type-pratt-parser: 4.1.0 + process: 0.11.10 + recast: 0.23.9 + semver: 7.6.3 + util: 0.12.5 + ws: 8.18.0 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + + '@storybook/csf-plugin@8.3.6(storybook@8.3.6)': + dependencies: + storybook: 8.3.6 + unplugin: 1.14.1 + transitivePeerDependencies: + - webpack-sources + + '@storybook/csf@0.0.1': + dependencies: + lodash: 4.17.21 + + '@storybook/csf@0.1.11': + dependencies: + type-fest: 2.19.0 + + '@storybook/global@5.0.0': {} + + '@storybook/icons@1.2.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + + '@storybook/instrumenter@8.3.6(storybook@8.3.6)': + dependencies: + '@storybook/global': 5.0.0 + '@vitest/utils': 2.1.3 + storybook: 8.3.6 + util: 0.12.5 + + '@storybook/manager-api@8.3.6(storybook@8.3.6)': + dependencies: + storybook: 8.3.6 + + '@storybook/preview-api@7.6.17': + dependencies: + '@storybook/channels': 7.6.17 + '@storybook/client-logger': 7.6.17 + '@storybook/core-events': 7.6.17 + '@storybook/csf': 0.1.11 + '@storybook/global': 5.0.0 + '@storybook/types': 7.6.17 + '@types/qs': 6.9.16 + dequal: 2.0.3 + lodash: 4.17.21 + memoizerific: 1.11.3 + qs: 6.13.0 + synchronous-promise: 2.0.17 + ts-dedent: 2.2.0 + util-deprecate: 1.0.2 + + '@storybook/preview-api@8.3.6(storybook@8.3.6)': + dependencies: + storybook: 8.3.6 + + '@storybook/preview-web@7.6.17': + dependencies: + '@storybook/client-logger': 7.6.17 + '@storybook/preview-api': 7.6.17 + + '@storybook/react-dom-shim@8.3.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.3.6)': + dependencies: + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + storybook: 8.3.6 + + '@storybook/react-vite@8.3.6(@storybook/test@8.3.6(storybook@8.3.6))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(rollup@4.24.0)(storybook@8.3.6)(typescript@5.6.3)(vite@5.4.9(@types/node@22.7.6))': + dependencies: + '@joshwooding/vite-plugin-react-docgen-typescript': 0.3.0(typescript@5.6.3)(vite@5.4.9(@types/node@22.7.6)) + '@rollup/pluginutils': 5.1.2(rollup@4.24.0) + '@storybook/builder-vite': 8.3.6(storybook@8.3.6)(typescript@5.6.3)(vite@5.4.9(@types/node@22.7.6)) + '@storybook/react': 8.3.6(@storybook/test@8.3.6(storybook@8.3.6))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.3.6)(typescript@5.6.3) + find-up: 5.0.0 + magic-string: 0.30.12 + react: 18.3.1 + react-docgen: 7.0.3 + react-dom: 18.3.1(react@18.3.1) + resolve: 1.22.8 + storybook: 8.3.6 + tsconfig-paths: 4.2.0 + vite: 5.4.9(@types/node@22.7.6) + transitivePeerDependencies: + - '@preact/preset-vite' + - '@storybook/test' + - rollup + - supports-color + - typescript + - vite-plugin-glimmerx + - webpack-sources + + '@storybook/react@8.3.6(@storybook/test@8.3.6(storybook@8.3.6))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.3.6)(typescript@5.6.3)': + dependencies: + '@storybook/components': 8.3.6(storybook@8.3.6) + '@storybook/global': 5.0.0 + '@storybook/manager-api': 8.3.6(storybook@8.3.6) + '@storybook/preview-api': 8.3.6(storybook@8.3.6) + '@storybook/react-dom-shim': 8.3.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.3.6) + '@storybook/theming': 8.3.6(storybook@8.3.6) + '@types/escodegen': 0.0.6 + '@types/estree': 0.0.51 + '@types/node': 22.7.6 + acorn: 7.4.1 + acorn-jsx: 5.3.2(acorn@7.4.1) + acorn-walk: 7.2.0 + escodegen: 2.1.0 + html-tags: 3.3.1 + prop-types: 15.8.1 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + react-element-to-jsx-string: 15.0.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + semver: 7.6.3 + storybook: 8.3.6 + ts-dedent: 2.2.0 + type-fest: 2.19.0 + util-deprecate: 1.0.2 + optionalDependencies: + '@storybook/test': 8.3.6(storybook@8.3.6) + typescript: 5.6.3 + + '@storybook/test@8.3.6(storybook@8.3.6)': + dependencies: + '@storybook/csf': 0.1.11 + '@storybook/global': 5.0.0 + '@storybook/instrumenter': 8.3.6(storybook@8.3.6) + '@testing-library/dom': 10.4.0 + '@testing-library/jest-dom': 6.5.0 + '@testing-library/user-event': 14.5.2(@testing-library/dom@10.4.0) + '@vitest/expect': 2.0.5 + '@vitest/spy': 2.0.5 + storybook: 8.3.6 + util: 0.12.5 + + '@storybook/theming@8.3.6(storybook@8.3.6)': + dependencies: + storybook: 8.3.6 + + '@storybook/types@7.6.17': + dependencies: + '@storybook/channels': 7.6.17 + '@types/babel__core': 7.20.5 + '@types/express': 4.17.21 + file-system-cache: 2.3.0 + + '@tanstack/eslint-plugin-query@5.59.7(eslint@9.13.0(jiti@1.21.6))(typescript@5.6.3)': + dependencies: + '@typescript-eslint/utils': 8.10.0(eslint@9.13.0(jiti@1.21.6))(typescript@5.6.3) + eslint: 9.13.0(jiti@1.21.6) + transitivePeerDependencies: + - supports-color + - typescript + + '@tanstack/query-core@5.59.13': {} + + '@tanstack/query-devtools@5.58.0': {} + + '@tanstack/react-query-devtools@5.59.15(@tanstack/react-query@5.59.15(react@18.3.1))(react@18.3.1)': + dependencies: + '@tanstack/query-devtools': 5.58.0 + '@tanstack/react-query': 5.59.15(react@18.3.1) + react: 18.3.1 + + '@tanstack/react-query@5.59.15(react@18.3.1)': + dependencies: + '@tanstack/query-core': 5.59.13 + react: 18.3.1 + + '@tanstack/react-table@8.20.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@tanstack/table-core': 8.20.5 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + + '@tanstack/table-core@8.20.5': {} + + '@testing-library/dom@10.4.0': + dependencies: + '@babel/code-frame': 7.25.7 + '@babel/runtime': 7.25.7 + '@types/aria-query': 5.0.4 + aria-query: 5.3.0 + chalk: 4.1.2 + dom-accessibility-api: 0.5.16 + lz-string: 1.5.0 + pretty-format: 27.5.1 + + '@testing-library/jest-dom@6.5.0': + dependencies: + '@adobe/css-tools': 4.4.0 + aria-query: 5.3.2 + chalk: 3.0.0 + css.escape: 1.5.1 + dom-accessibility-api: 0.6.3 + lodash: 4.17.21 + redent: 3.0.0 + + '@testing-library/user-event@14.5.2(@testing-library/dom@10.4.0)': + dependencies: + '@testing-library/dom': 10.4.0 + + '@types/aria-query@5.0.4': {} + + '@types/babel__core@7.20.5': + dependencies: + '@babel/parser': 7.25.8 + '@babel/types': 7.25.8 + '@types/babel__generator': 7.6.8 + '@types/babel__template': 7.4.4 + '@types/babel__traverse': 7.20.6 + + '@types/babel__generator@7.6.8': + dependencies: + '@babel/types': 7.25.8 + + '@types/babel__template@7.4.4': + dependencies: + '@babel/parser': 7.25.8 + '@babel/types': 7.25.8 + + '@types/babel__traverse@7.20.6': + dependencies: + '@babel/types': 7.25.8 + + '@types/body-parser@1.19.5': + dependencies: + '@types/connect': 3.4.38 + '@types/node': 22.7.6 + + '@types/connect@3.4.38': + dependencies: + '@types/node': 22.7.6 + + '@types/conventional-commits-parser@5.0.0': + dependencies: + '@types/node': 22.7.6 + + '@types/cookie@0.6.0': {} + + '@types/doctrine@0.0.9': {} + + '@types/escodegen@0.0.6': {} + + '@types/estree@0.0.51': {} + + '@types/estree@1.0.6': {} + + '@types/express-serve-static-core@4.19.6': + dependencies: + '@types/node': 22.7.6 + '@types/qs': 6.9.16 + '@types/range-parser': 1.2.7 + '@types/send': 0.17.4 + + '@types/express@4.17.21': + dependencies: + '@types/body-parser': 1.19.5 + '@types/express-serve-static-core': 4.19.6 + '@types/qs': 6.9.16 + '@types/serve-static': 1.15.7 + + '@types/find-cache-dir@3.2.1': {} + + '@types/glob@7.2.0': + dependencies: + '@types/minimatch': 5.1.2 + '@types/node': 22.7.6 + + '@types/hast@3.0.4': + dependencies: + '@types/unist': 3.0.3 + + '@types/http-errors@2.0.4': {} + + '@types/json-schema@7.0.15': {} + + '@types/json5@0.0.29': {} + + '@types/lodash@4.17.11': {} + + '@types/mdx@2.0.13': {} + + '@types/mime@1.3.5': {} + + '@types/minimatch@5.1.2': {} + + '@types/mute-stream@0.0.4': + dependencies: + '@types/node': 22.7.6 + + '@types/node@22.7.6': + dependencies: + undici-types: 6.19.8 + + '@types/prop-types@15.7.13': {} + + '@types/qs@6.9.16': {} + + '@types/range-parser@1.2.7': {} + + '@types/react-dom@18.3.1': + dependencies: + '@types/react': 18.3.11 + + '@types/react@18.3.11': + dependencies: + '@types/prop-types': 15.7.13 + csstype: 3.1.3 + + '@types/resolve@1.20.6': {} + + '@types/semver@7.5.8': {} + + '@types/send@0.17.4': + dependencies: + '@types/mime': 1.3.5 + '@types/node': 22.7.6 + + '@types/serve-static@1.15.7': + dependencies: + '@types/http-errors': 2.0.4 + '@types/node': 22.7.6 + '@types/send': 0.17.4 + + '@types/statuses@2.0.5': {} + + '@types/tough-cookie@4.0.5': {} + + '@types/unist@3.0.3': {} + + '@types/uuid@9.0.8': {} + + '@types/validator@13.12.2': {} + + '@types/wrap-ansi@3.0.0': {} + + '@typescript-eslint/eslint-plugin@8.10.0(@typescript-eslint/parser@8.10.0(eslint@9.13.0(jiti@1.21.6))(typescript@5.6.3))(eslint@9.13.0(jiti@1.21.6))(typescript@5.6.3)': + dependencies: + '@eslint-community/regexpp': 4.11.1 + '@typescript-eslint/parser': 8.10.0(eslint@9.13.0(jiti@1.21.6))(typescript@5.6.3) + '@typescript-eslint/scope-manager': 8.10.0 + '@typescript-eslint/type-utils': 8.10.0(eslint@9.13.0(jiti@1.21.6))(typescript@5.6.3) + '@typescript-eslint/utils': 8.10.0(eslint@9.13.0(jiti@1.21.6))(typescript@5.6.3) + '@typescript-eslint/visitor-keys': 8.10.0 + eslint: 9.13.0(jiti@1.21.6) + graphemer: 1.4.0 + ignore: 5.3.2 + natural-compare: 1.4.0 + ts-api-utils: 1.3.0(typescript@5.6.3) + optionalDependencies: + typescript: 5.6.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/eslint-plugin@8.12.2(@typescript-eslint/parser@8.12.2(eslint@9.13.0(jiti@1.21.6))(typescript@5.6.3))(eslint@9.13.0(jiti@1.21.6))(typescript@5.6.3)': + dependencies: + '@eslint-community/regexpp': 4.11.1 + '@typescript-eslint/parser': 8.12.2(eslint@9.13.0(jiti@1.21.6))(typescript@5.6.3) + '@typescript-eslint/scope-manager': 8.12.2 + '@typescript-eslint/type-utils': 8.12.2(eslint@9.13.0(jiti@1.21.6))(typescript@5.6.3) + '@typescript-eslint/utils': 8.12.2(eslint@9.13.0(jiti@1.21.6))(typescript@5.6.3) + '@typescript-eslint/visitor-keys': 8.12.2 + eslint: 9.13.0(jiti@1.21.6) + graphemer: 1.4.0 + ignore: 5.3.2 + natural-compare: 1.4.0 + ts-api-utils: 1.3.0(typescript@5.6.3) + optionalDependencies: + typescript: 5.6.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/parser@8.10.0(eslint@9.13.0(jiti@1.21.6))(typescript@5.6.3)': + dependencies: + '@typescript-eslint/scope-manager': 8.10.0 + '@typescript-eslint/types': 8.10.0 + '@typescript-eslint/typescript-estree': 8.10.0(typescript@5.6.3) + '@typescript-eslint/visitor-keys': 8.10.0 + debug: 4.3.7 + eslint: 9.13.0(jiti@1.21.6) + optionalDependencies: + typescript: 5.6.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/parser@8.12.2(eslint@9.13.0(jiti@1.21.6))(typescript@5.6.3)': + dependencies: + '@typescript-eslint/scope-manager': 8.12.2 + '@typescript-eslint/types': 8.12.2 + '@typescript-eslint/typescript-estree': 8.12.2(typescript@5.6.3) + '@typescript-eslint/visitor-keys': 8.12.2 + debug: 4.3.7 + eslint: 9.13.0(jiti@1.21.6) + optionalDependencies: + typescript: 5.6.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/scope-manager@5.62.0': + dependencies: + '@typescript-eslint/types': 5.62.0 + '@typescript-eslint/visitor-keys': 5.62.0 + + '@typescript-eslint/scope-manager@8.10.0': + dependencies: + '@typescript-eslint/types': 8.10.0 + '@typescript-eslint/visitor-keys': 8.10.0 + + '@typescript-eslint/scope-manager@8.12.2': + dependencies: + '@typescript-eslint/types': 8.12.2 + '@typescript-eslint/visitor-keys': 8.12.2 + + '@typescript-eslint/type-utils@8.10.0(eslint@9.13.0(jiti@1.21.6))(typescript@5.6.3)': + dependencies: + '@typescript-eslint/typescript-estree': 8.10.0(typescript@5.6.3) + '@typescript-eslint/utils': 8.10.0(eslint@9.13.0(jiti@1.21.6))(typescript@5.6.3) + debug: 4.3.7 + ts-api-utils: 1.3.0(typescript@5.6.3) + optionalDependencies: + typescript: 5.6.3 + transitivePeerDependencies: + - eslint + - supports-color + + '@typescript-eslint/type-utils@8.12.2(eslint@9.13.0(jiti@1.21.6))(typescript@5.6.3)': + dependencies: + '@typescript-eslint/typescript-estree': 8.12.2(typescript@5.6.3) + '@typescript-eslint/utils': 8.12.2(eslint@9.13.0(jiti@1.21.6))(typescript@5.6.3) + debug: 4.3.7 + ts-api-utils: 1.3.0(typescript@5.6.3) + optionalDependencies: + typescript: 5.6.3 + transitivePeerDependencies: + - eslint + - supports-color + + '@typescript-eslint/types@5.62.0': {} + + '@typescript-eslint/types@8.10.0': {} + + '@typescript-eslint/types@8.12.2': {} + + '@typescript-eslint/typescript-estree@5.62.0(typescript@5.6.3)': + dependencies: + '@typescript-eslint/types': 5.62.0 + '@typescript-eslint/visitor-keys': 5.62.0 + debug: 4.3.7 + globby: 11.1.0 + is-glob: 4.0.3 + semver: 7.6.3 + tsutils: 3.21.0(typescript@5.6.3) + optionalDependencies: + typescript: 5.6.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/typescript-estree@8.10.0(typescript@5.6.3)': + dependencies: + '@typescript-eslint/types': 8.10.0 + '@typescript-eslint/visitor-keys': 8.10.0 + debug: 4.3.7 + fast-glob: 3.3.2 + is-glob: 4.0.3 + minimatch: 9.0.5 + semver: 7.6.3 + ts-api-utils: 1.3.0(typescript@5.6.3) + optionalDependencies: + typescript: 5.6.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/typescript-estree@8.12.2(typescript@5.6.3)': + dependencies: + '@typescript-eslint/types': 8.12.2 + '@typescript-eslint/visitor-keys': 8.12.2 + debug: 4.3.7 + fast-glob: 3.3.2 + is-glob: 4.0.3 + minimatch: 9.0.5 + semver: 7.6.3 + ts-api-utils: 1.3.0(typescript@5.6.3) + optionalDependencies: + typescript: 5.6.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/utils@5.62.0(eslint@9.13.0(jiti@1.21.6))(typescript@5.6.3)': + dependencies: + '@eslint-community/eslint-utils': 4.4.0(eslint@9.13.0(jiti@1.21.6)) + '@types/json-schema': 7.0.15 + '@types/semver': 7.5.8 + '@typescript-eslint/scope-manager': 5.62.0 + '@typescript-eslint/types': 5.62.0 + '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.6.3) + eslint: 9.13.0(jiti@1.21.6) + eslint-scope: 5.1.1 + semver: 7.6.3 + transitivePeerDependencies: + - supports-color + - typescript + + '@typescript-eslint/utils@8.10.0(eslint@9.13.0(jiti@1.21.6))(typescript@5.6.3)': + dependencies: + '@eslint-community/eslint-utils': 4.4.0(eslint@9.13.0(jiti@1.21.6)) + '@typescript-eslint/scope-manager': 8.10.0 + '@typescript-eslint/types': 8.10.0 + '@typescript-eslint/typescript-estree': 8.10.0(typescript@5.6.3) + eslint: 9.13.0(jiti@1.21.6) + transitivePeerDependencies: + - supports-color + - typescript + + '@typescript-eslint/utils@8.12.2(eslint@9.13.0(jiti@1.21.6))(typescript@5.6.3)': + dependencies: + '@eslint-community/eslint-utils': 4.4.0(eslint@9.13.0(jiti@1.21.6)) + '@typescript-eslint/scope-manager': 8.12.2 + '@typescript-eslint/types': 8.12.2 + '@typescript-eslint/typescript-estree': 8.12.2(typescript@5.6.3) + eslint: 9.13.0(jiti@1.21.6) + transitivePeerDependencies: + - supports-color + - typescript + + '@typescript-eslint/visitor-keys@5.62.0': + dependencies: + '@typescript-eslint/types': 5.62.0 + eslint-visitor-keys: 3.4.3 + + '@typescript-eslint/visitor-keys@8.10.0': + dependencies: + '@typescript-eslint/types': 8.10.0 + eslint-visitor-keys: 3.4.3 + + '@typescript-eslint/visitor-keys@8.12.2': + dependencies: + '@typescript-eslint/types': 8.12.2 + eslint-visitor-keys: 3.4.3 + + '@ungap/structured-clone@1.2.0': {} + + '@vitejs/plugin-react@4.3.2(vite@5.4.9(@types/node@22.7.6))': + dependencies: + '@babel/core': 7.25.8 + '@babel/plugin-transform-react-jsx-self': 7.25.7(@babel/core@7.25.8) + '@babel/plugin-transform-react-jsx-source': 7.25.7(@babel/core@7.25.8) + '@types/babel__core': 7.20.5 + react-refresh: 0.14.2 + vite: 5.4.9(@types/node@22.7.6) + transitivePeerDependencies: + - supports-color + + '@vitest/expect@2.0.5': + dependencies: + '@vitest/spy': 2.0.5 + '@vitest/utils': 2.0.5 + chai: 5.1.1 + tinyrainbow: 1.2.0 + + '@vitest/pretty-format@2.0.5': + dependencies: + tinyrainbow: 1.2.0 + + '@vitest/pretty-format@2.1.3': + dependencies: + tinyrainbow: 1.2.0 + + '@vitest/spy@2.0.5': + dependencies: + tinyspy: 3.0.2 + + '@vitest/utils@2.0.5': + dependencies: + '@vitest/pretty-format': 2.0.5 + estree-walker: 3.0.3 + loupe: 3.1.2 + tinyrainbow: 1.2.0 + + '@vitest/utils@2.1.3': + dependencies: + '@vitest/pretty-format': 2.1.3 + loupe: 3.1.2 + tinyrainbow: 1.2.0 + + JSONStream@1.3.5: + dependencies: + jsonparse: 1.3.1 + through: 2.3.8 + + accepts@1.3.8: + dependencies: + mime-types: 2.1.35 + negotiator: 0.6.3 + + acorn-jsx@5.3.2(acorn@7.4.1): + dependencies: + acorn: 7.4.1 + + acorn-jsx@5.3.2(acorn@8.13.0): + dependencies: + acorn: 8.13.0 + + acorn-walk@7.2.0: {} + + acorn@7.4.1: {} + + acorn@8.13.0: {} + + ajv@6.12.6: + dependencies: + fast-deep-equal: 3.1.3 + fast-json-stable-stringify: 2.1.0 + json-schema-traverse: 0.4.1 + uri-js: 4.4.1 + + ajv@8.17.1: + dependencies: + fast-deep-equal: 3.1.3 + fast-uri: 3.0.3 + json-schema-traverse: 1.0.0 + require-from-string: 2.0.2 + + ansi-escapes@4.3.2: + dependencies: + type-fest: 0.21.3 + + ansi-escapes@7.0.0: + dependencies: + environment: 1.1.0 + + ansi-regex@5.0.1: {} + + ansi-regex@6.1.0: {} + + ansi-styles@3.2.1: + dependencies: + color-convert: 1.9.3 + + ansi-styles@4.3.0: + dependencies: + color-convert: 2.0.1 + + ansi-styles@5.2.0: {} + + ansi-styles@6.2.1: {} + + any-promise@1.3.0: {} + + anymatch@3.1.3: + dependencies: + normalize-path: 3.0.0 + picomatch: 2.3.1 + + arg@5.0.2: {} + + argparse@2.0.1: {} + + aria-hidden@1.2.4: + dependencies: + tslib: 2.8.0 + + aria-query@5.1.3: + dependencies: + deep-equal: 2.2.3 + + aria-query@5.3.0: + dependencies: + dequal: 2.0.3 + + aria-query@5.3.2: {} + + array-buffer-byte-length@1.0.1: + dependencies: + call-bind: 1.0.7 + is-array-buffer: 3.0.4 + + array-flatten@1.1.1: {} + + array-ify@1.0.0: {} + + array-includes@3.1.8: + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-abstract: 1.23.3 + es-object-atoms: 1.0.0 + get-intrinsic: 1.2.4 + is-string: 1.0.7 + + array-union@2.1.0: {} + + array.prototype.findlast@1.2.5: + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-abstract: 1.23.3 + es-errors: 1.3.0 + es-object-atoms: 1.0.0 + es-shim-unscopables: 1.0.2 + + array.prototype.findlastindex@1.2.5: + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-abstract: 1.23.3 + es-errors: 1.3.0 + es-object-atoms: 1.0.0 + es-shim-unscopables: 1.0.2 + + array.prototype.flat@1.3.2: + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-abstract: 1.23.3 + es-shim-unscopables: 1.0.2 + + array.prototype.flatmap@1.3.2: + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-abstract: 1.23.3 + es-shim-unscopables: 1.0.2 + + array.prototype.tosorted@1.1.4: + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-abstract: 1.23.3 + es-errors: 1.3.0 + es-shim-unscopables: 1.0.2 + + arraybuffer.prototype.slice@1.0.3: + dependencies: + array-buffer-byte-length: 1.0.1 + call-bind: 1.0.7 + define-properties: 1.2.1 + es-abstract: 1.23.3 + es-errors: 1.3.0 + get-intrinsic: 1.2.4 + is-array-buffer: 3.0.4 + is-shared-array-buffer: 1.0.3 + + assertion-error@2.0.1: {} + + ast-types-flow@0.0.8: {} + + ast-types@0.16.1: + dependencies: + tslib: 2.8.0 + + asynckit@0.4.0: {} + + autoprefixer@10.4.20(postcss@8.4.47): + dependencies: + browserslist: 4.24.0 + caniuse-lite: 1.0.30001669 + fraction.js: 4.3.7 + normalize-range: 0.1.2 + picocolors: 1.1.1 + postcss: 8.4.47 + postcss-value-parser: 4.2.0 + + available-typed-arrays@1.0.7: + dependencies: + possible-typed-array-names: 1.0.0 + + axe-core@4.10.1: {} + + axios@1.7.7: + dependencies: + follow-redirects: 1.15.9 + form-data: 4.0.1 + proxy-from-env: 1.1.0 + transitivePeerDependencies: + - debug + + axobject-query@4.1.0: {} + + balanced-match@1.0.2: {} + + better-opn@3.0.2: + dependencies: + open: 8.4.2 + + binary-extensions@2.3.0: {} + + body-parser@1.20.3: + dependencies: + bytes: 3.1.2 + content-type: 1.0.5 + debug: 2.6.9 + depd: 2.0.0 + destroy: 1.2.0 + http-errors: 2.0.0 + iconv-lite: 0.4.24 + on-finished: 2.4.1 + qs: 6.13.0 + raw-body: 2.5.2 + type-is: 1.6.18 + unpipe: 1.0.0 + transitivePeerDependencies: + - supports-color + + brace-expansion@1.1.11: + dependencies: + balanced-match: 1.0.2 + concat-map: 0.0.1 + + brace-expansion@2.0.1: + dependencies: + balanced-match: 1.0.2 + + braces@3.0.3: + dependencies: + fill-range: 7.1.1 + + browser-assert@1.2.1: {} + + browserslist@4.24.0: + dependencies: + caniuse-lite: 1.0.30001669 + electron-to-chromium: 1.5.41 + node-releases: 2.0.18 + update-browserslist-db: 1.1.1(browserslist@4.24.0) + + bytes@3.1.2: {} + + call-bind@1.0.7: + dependencies: + es-define-property: 1.0.0 + es-errors: 1.3.0 + function-bind: 1.1.2 + get-intrinsic: 1.2.4 + set-function-length: 1.2.2 + + callsites@3.1.0: {} + + camelcase-css@2.0.1: {} + + caniuse-lite@1.0.30001669: {} + + chai@5.1.1: + dependencies: + assertion-error: 2.0.1 + check-error: 2.1.1 + deep-eql: 5.0.2 + loupe: 3.1.2 + pathval: 2.0.0 + + chalk@2.4.2: + dependencies: + ansi-styles: 3.2.1 + escape-string-regexp: 1.0.5 + supports-color: 5.5.0 + + chalk@3.0.0: + dependencies: + ansi-styles: 4.3.0 + supports-color: 7.2.0 + + chalk@4.1.2: + dependencies: + ansi-styles: 4.3.0 + supports-color: 7.2.0 + + chalk@5.3.0: {} + + check-error@2.1.1: {} + + chokidar@3.6.0: + dependencies: + anymatch: 3.1.3 + braces: 3.0.3 + glob-parent: 5.1.2 + is-binary-path: 2.1.0 + is-glob: 4.0.3 + normalize-path: 3.0.0 + readdirp: 3.6.0 + optionalDependencies: + fsevents: 2.3.3 + + class-variance-authority@0.7.0: + dependencies: + clsx: 2.0.0 + + cli-cursor@5.0.0: + dependencies: + restore-cursor: 5.1.0 + + cli-truncate@4.0.0: + dependencies: + slice-ansi: 5.0.0 + string-width: 7.2.0 + + cli-width@4.1.0: {} + + cliui@8.0.1: + dependencies: + string-width: 4.2.3 + strip-ansi: 6.0.1 + wrap-ansi: 7.0.0 + + clsx@2.0.0: {} + + clsx@2.1.1: {} + + cmdk@1.0.0(@types/react-dom@18.3.1)(@types/react@18.3.11)(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + dependencies: + '@radix-ui/react-dialog': 1.0.5(@types/react-dom@18.3.1)(@types/react@18.3.11)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.1)(@types/react@18.3.11)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + transitivePeerDependencies: + - '@types/react' + - '@types/react-dom' + + color-convert@1.9.3: + dependencies: + color-name: 1.1.3 + + color-convert@2.0.1: + dependencies: + color-name: 1.1.4 + + color-name@1.1.3: {} + + color-name@1.1.4: {} + + colorette@2.0.20: {} + + combined-stream@1.0.8: + dependencies: + delayed-stream: 1.0.0 + + commander@12.1.0: {} + + commander@4.1.1: {} + + commitlint@19.5.0(@types/node@22.7.6)(typescript@5.6.3): + dependencies: + '@commitlint/cli': 19.5.0(@types/node@22.7.6)(typescript@5.6.3) + '@commitlint/types': 19.5.0 + transitivePeerDependencies: + - '@types/node' + - typescript + + commondir@1.0.1: {} + + compare-func@2.0.0: + dependencies: + array-ify: 1.0.0 + dot-prop: 5.3.0 + + concat-map@0.0.1: {} + + confusing-browser-globals@1.0.11: {} + + content-disposition@0.5.4: + dependencies: + safe-buffer: 5.2.1 + + content-type@1.0.5: {} + + conventional-changelog-angular@7.0.0: + dependencies: + compare-func: 2.0.0 + + conventional-changelog-conventionalcommits@7.0.2: + dependencies: + compare-func: 2.0.0 + + conventional-commits-parser@5.0.0: + dependencies: + JSONStream: 1.3.5 + is-text-path: 2.0.0 + meow: 12.1.1 + split2: 4.2.0 + + convert-source-map@2.0.0: {} + + cookie-signature@1.0.6: {} + + cookie@0.5.0: {} + + cookie@0.7.1: {} + + cosmiconfig-typescript-loader@5.0.0(@types/node@22.7.6)(cosmiconfig@9.0.0(typescript@5.6.3))(typescript@5.6.3): + dependencies: + '@types/node': 22.7.6 + cosmiconfig: 9.0.0(typescript@5.6.3) + jiti: 1.21.6 + typescript: 5.6.3 + + cosmiconfig@9.0.0(typescript@5.6.3): + dependencies: + env-paths: 2.2.1 + import-fresh: 3.3.0 + js-yaml: 4.1.0 + parse-json: 5.2.0 + optionalDependencies: + typescript: 5.6.3 + + cross-spawn@7.0.3: + dependencies: + path-key: 3.1.1 + shebang-command: 2.0.0 + which: 2.0.2 + + css.escape@1.5.1: {} + + cssesc@3.0.0: {} + + csstype@3.1.3: {} + + damerau-levenshtein@1.0.8: {} + + dargs@8.1.0: {} + + data-view-buffer@1.0.1: + dependencies: + call-bind: 1.0.7 + es-errors: 1.3.0 + is-data-view: 1.0.1 + + data-view-byte-length@1.0.1: + dependencies: + call-bind: 1.0.7 + es-errors: 1.3.0 + is-data-view: 1.0.1 + + data-view-byte-offset@1.0.0: + dependencies: + call-bind: 1.0.7 + es-errors: 1.3.0 + is-data-view: 1.0.1 + + date-fns@4.1.0: {} + + debug@2.6.9: + dependencies: + ms: 2.0.0 + + debug@3.2.7: + dependencies: + ms: 2.1.3 + + debug@4.3.7: + dependencies: + ms: 2.1.3 + + deep-eql@5.0.2: {} + + deep-equal@2.2.3: + dependencies: + array-buffer-byte-length: 1.0.1 + call-bind: 1.0.7 + es-get-iterator: 1.1.3 + get-intrinsic: 1.2.4 + is-arguments: 1.1.1 + is-array-buffer: 3.0.4 + is-date-object: 1.0.5 + is-regex: 1.1.4 + is-shared-array-buffer: 1.0.3 + isarray: 2.0.5 + object-is: 1.1.6 + object-keys: 1.1.1 + object.assign: 4.1.5 + regexp.prototype.flags: 1.5.3 + side-channel: 1.0.6 + which-boxed-primitive: 1.0.2 + which-collection: 1.0.2 + which-typed-array: 1.1.15 + + deep-is@0.1.4: {} + + define-data-property@1.1.4: + dependencies: + es-define-property: 1.0.0 + es-errors: 1.3.0 + gopd: 1.0.1 + + define-lazy-prop@2.0.0: {} + + define-properties@1.2.1: + dependencies: + define-data-property: 1.1.4 + has-property-descriptors: 1.0.2 + object-keys: 1.1.1 + + delayed-stream@1.0.0: {} + + depd@2.0.0: {} + + dequal@2.0.3: {} + + destroy@1.2.0: {} + + detect-node-es@1.1.0: {} + + didyoumean@1.2.2: {} + + dir-glob@3.0.1: + dependencies: + path-type: 4.0.0 + + dlv@1.1.3: {} + + doctrine@2.1.0: + dependencies: + esutils: 2.0.3 + + doctrine@3.0.0: + dependencies: + esutils: 2.0.3 + + dom-accessibility-api@0.5.16: {} + + dom-accessibility-api@0.6.3: {} + + dot-prop@5.3.0: + dependencies: + is-obj: 2.0.0 + + eastasianwidth@0.2.0: {} + + ee-first@1.1.1: {} + + electron-to-chromium@1.5.41: {} + + emoji-regex@10.4.0: {} + + emoji-regex@8.0.0: {} + + emoji-regex@9.2.2: {} + + encodeurl@1.0.2: {} + + encodeurl@2.0.0: {} + + enhanced-resolve@5.17.1: + dependencies: + graceful-fs: 4.2.11 + tapable: 2.2.1 + + env-paths@2.2.1: {} + + environment@1.1.0: {} + + error-ex@1.3.2: + dependencies: + is-arrayish: 0.2.1 + + es-abstract@1.23.3: + dependencies: + array-buffer-byte-length: 1.0.1 + arraybuffer.prototype.slice: 1.0.3 + available-typed-arrays: 1.0.7 + call-bind: 1.0.7 + data-view-buffer: 1.0.1 + data-view-byte-length: 1.0.1 + data-view-byte-offset: 1.0.0 + es-define-property: 1.0.0 + es-errors: 1.3.0 + es-object-atoms: 1.0.0 + es-set-tostringtag: 2.0.3 + es-to-primitive: 1.2.1 + function.prototype.name: 1.1.6 + get-intrinsic: 1.2.4 + get-symbol-description: 1.0.2 + globalthis: 1.0.4 + gopd: 1.0.1 + has-property-descriptors: 1.0.2 + has-proto: 1.0.3 + has-symbols: 1.0.3 + hasown: 2.0.2 + internal-slot: 1.0.7 + is-array-buffer: 3.0.4 + is-callable: 1.2.7 + is-data-view: 1.0.1 + is-negative-zero: 2.0.3 + is-regex: 1.1.4 + is-shared-array-buffer: 1.0.3 + is-string: 1.0.7 + is-typed-array: 1.1.13 + is-weakref: 1.0.2 + object-inspect: 1.13.2 + object-keys: 1.1.1 + object.assign: 4.1.5 + regexp.prototype.flags: 1.5.3 + safe-array-concat: 1.1.2 + safe-regex-test: 1.0.3 + string.prototype.trim: 1.2.9 + string.prototype.trimend: 1.0.8 + string.prototype.trimstart: 1.0.8 + typed-array-buffer: 1.0.2 + typed-array-byte-length: 1.0.1 + typed-array-byte-offset: 1.0.2 + typed-array-length: 1.0.6 + unbox-primitive: 1.0.2 + which-typed-array: 1.1.15 + + es-define-property@1.0.0: + dependencies: + get-intrinsic: 1.2.4 + + es-errors@1.3.0: {} + + es-get-iterator@1.1.3: + dependencies: + call-bind: 1.0.7 + get-intrinsic: 1.2.4 + has-symbols: 1.0.3 + is-arguments: 1.1.1 + is-map: 2.0.3 + is-set: 2.0.3 + is-string: 1.0.7 + isarray: 2.0.5 + stop-iteration-iterator: 1.0.0 + + es-iterator-helpers@1.1.0: + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-abstract: 1.23.3 + es-errors: 1.3.0 + es-set-tostringtag: 2.0.3 + function-bind: 1.1.2 + get-intrinsic: 1.2.4 + globalthis: 1.0.4 + has-property-descriptors: 1.0.2 + has-proto: 1.0.3 + has-symbols: 1.0.3 + internal-slot: 1.0.7 + iterator.prototype: 1.1.3 + safe-array-concat: 1.1.2 + + es-module-lexer@1.5.4: {} + + es-object-atoms@1.0.0: + dependencies: + es-errors: 1.3.0 + + es-set-tostringtag@2.0.3: + dependencies: + get-intrinsic: 1.2.4 + has-tostringtag: 1.0.2 + hasown: 2.0.2 + + es-shim-unscopables@1.0.2: + dependencies: + hasown: 2.0.2 + + es-to-primitive@1.2.1: + dependencies: + is-callable: 1.2.7 + is-date-object: 1.0.5 + is-symbol: 1.0.4 + + esbuild-register@3.6.0(esbuild@0.23.1): + dependencies: + debug: 4.3.7 + esbuild: 0.23.1 + transitivePeerDependencies: + - supports-color + + esbuild@0.21.5: + optionalDependencies: + '@esbuild/aix-ppc64': 0.21.5 + '@esbuild/android-arm': 0.21.5 + '@esbuild/android-arm64': 0.21.5 + '@esbuild/android-x64': 0.21.5 + '@esbuild/darwin-arm64': 0.21.5 + '@esbuild/darwin-x64': 0.21.5 + '@esbuild/freebsd-arm64': 0.21.5 + '@esbuild/freebsd-x64': 0.21.5 + '@esbuild/linux-arm': 0.21.5 + '@esbuild/linux-arm64': 0.21.5 + '@esbuild/linux-ia32': 0.21.5 + '@esbuild/linux-loong64': 0.21.5 + '@esbuild/linux-mips64el': 0.21.5 + '@esbuild/linux-ppc64': 0.21.5 + '@esbuild/linux-riscv64': 0.21.5 + '@esbuild/linux-s390x': 0.21.5 + '@esbuild/linux-x64': 0.21.5 + '@esbuild/netbsd-x64': 0.21.5 + '@esbuild/openbsd-x64': 0.21.5 + '@esbuild/sunos-x64': 0.21.5 + '@esbuild/win32-arm64': 0.21.5 + '@esbuild/win32-ia32': 0.21.5 + '@esbuild/win32-x64': 0.21.5 + + esbuild@0.23.1: + optionalDependencies: + '@esbuild/aix-ppc64': 0.23.1 + '@esbuild/android-arm': 0.23.1 + '@esbuild/android-arm64': 0.23.1 + '@esbuild/android-x64': 0.23.1 + '@esbuild/darwin-arm64': 0.23.1 + '@esbuild/darwin-x64': 0.23.1 + '@esbuild/freebsd-arm64': 0.23.1 + '@esbuild/freebsd-x64': 0.23.1 + '@esbuild/linux-arm': 0.23.1 + '@esbuild/linux-arm64': 0.23.1 + '@esbuild/linux-ia32': 0.23.1 + '@esbuild/linux-loong64': 0.23.1 + '@esbuild/linux-mips64el': 0.23.1 + '@esbuild/linux-ppc64': 0.23.1 + '@esbuild/linux-riscv64': 0.23.1 + '@esbuild/linux-s390x': 0.23.1 + '@esbuild/linux-x64': 0.23.1 + '@esbuild/netbsd-x64': 0.23.1 + '@esbuild/openbsd-arm64': 0.23.1 + '@esbuild/openbsd-x64': 0.23.1 + '@esbuild/sunos-x64': 0.23.1 + '@esbuild/win32-arm64': 0.23.1 + '@esbuild/win32-ia32': 0.23.1 + '@esbuild/win32-x64': 0.23.1 + + escalade@3.2.0: {} + + escape-html@1.0.3: {} + + escape-string-regexp@1.0.5: {} + + escape-string-regexp@4.0.0: {} + + escodegen@2.1.0: + dependencies: + esprima: 4.0.1 + estraverse: 5.3.0 + esutils: 2.0.3 + optionalDependencies: + source-map: 0.6.1 + + eslint-config-airbnb-base@15.0.0(eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.10.0(eslint@9.13.0(jiti@1.21.6))(typescript@5.6.3))(eslint-import-resolver-typescript@3.6.3)(eslint@9.13.0(jiti@1.21.6)))(eslint@9.13.0(jiti@1.21.6)): + dependencies: + confusing-browser-globals: 1.0.11 + eslint: 9.13.0(jiti@1.21.6) + eslint-plugin-import: 2.31.0(@typescript-eslint/parser@8.10.0(eslint@9.13.0(jiti@1.21.6))(typescript@5.6.3))(eslint-import-resolver-typescript@3.6.3)(eslint@9.13.0(jiti@1.21.6)) + object.assign: 4.1.5 + object.entries: 1.1.8 + semver: 6.3.1 + + eslint-config-airbnb@19.0.4(eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.10.0(eslint@9.13.0(jiti@1.21.6))(typescript@5.6.3))(eslint-import-resolver-typescript@3.6.3)(eslint@9.13.0(jiti@1.21.6)))(eslint-plugin-jsx-a11y@6.10.0(eslint@9.13.0(jiti@1.21.6)))(eslint-plugin-react-hooks@5.0.0(eslint@9.13.0(jiti@1.21.6)))(eslint-plugin-react@7.37.1(eslint@9.13.0(jiti@1.21.6)))(eslint@9.13.0(jiti@1.21.6)): + dependencies: + eslint: 9.13.0(jiti@1.21.6) + eslint-config-airbnb-base: 15.0.0(eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.10.0(eslint@9.13.0(jiti@1.21.6))(typescript@5.6.3))(eslint-import-resolver-typescript@3.6.3)(eslint@9.13.0(jiti@1.21.6)))(eslint@9.13.0(jiti@1.21.6)) + eslint-plugin-import: 2.31.0(@typescript-eslint/parser@8.10.0(eslint@9.13.0(jiti@1.21.6))(typescript@5.6.3))(eslint-import-resolver-typescript@3.6.3)(eslint@9.13.0(jiti@1.21.6)) + eslint-plugin-jsx-a11y: 6.10.0(eslint@9.13.0(jiti@1.21.6)) + eslint-plugin-react: 7.37.1(eslint@9.13.0(jiti@1.21.6)) + eslint-plugin-react-hooks: 5.0.0(eslint@9.13.0(jiti@1.21.6)) + object.assign: 4.1.5 + object.entries: 1.1.8 + + eslint-config-prettier@9.1.0(eslint@9.13.0(jiti@1.21.6)): + dependencies: + eslint: 9.13.0(jiti@1.21.6) + + eslint-import-resolver-node@0.3.9: + dependencies: + debug: 3.2.7 + is-core-module: 2.15.1 + resolve: 1.22.8 + transitivePeerDependencies: + - supports-color + + eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.10.0(eslint@9.13.0(jiti@1.21.6))(typescript@5.6.3))(eslint-plugin-import@2.31.0)(eslint@9.13.0(jiti@1.21.6)): + dependencies: + '@nolyfill/is-core-module': 1.0.39 + debug: 4.3.7 + enhanced-resolve: 5.17.1 + eslint: 9.13.0(jiti@1.21.6) + eslint-module-utils: 2.12.0(@typescript-eslint/parser@8.10.0(eslint@9.13.0(jiti@1.21.6))(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.10.0(eslint@9.13.0(jiti@1.21.6))(typescript@5.6.3))(eslint-plugin-import@2.31.0)(eslint@9.13.0(jiti@1.21.6)))(eslint@9.13.0(jiti@1.21.6)) + fast-glob: 3.3.2 + get-tsconfig: 4.8.1 + is-bun-module: 1.2.1 + is-glob: 4.0.3 + optionalDependencies: + eslint-plugin-import: 2.31.0(@typescript-eslint/parser@8.10.0(eslint@9.13.0(jiti@1.21.6))(typescript@5.6.3))(eslint-import-resolver-typescript@3.6.3)(eslint@9.13.0(jiti@1.21.6)) + transitivePeerDependencies: + - '@typescript-eslint/parser' + - eslint-import-resolver-node + - eslint-import-resolver-webpack + - supports-color + + eslint-module-utils@2.12.0(@typescript-eslint/parser@8.10.0(eslint@9.13.0(jiti@1.21.6))(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.10.0(eslint@9.13.0(jiti@1.21.6))(typescript@5.6.3))(eslint-plugin-import@2.31.0)(eslint@9.13.0(jiti@1.21.6)))(eslint@9.13.0(jiti@1.21.6)): + dependencies: + debug: 3.2.7 + optionalDependencies: + '@typescript-eslint/parser': 8.10.0(eslint@9.13.0(jiti@1.21.6))(typescript@5.6.3) + eslint: 9.13.0(jiti@1.21.6) + eslint-import-resolver-node: 0.3.9 + eslint-import-resolver-typescript: 3.6.3(@typescript-eslint/parser@8.10.0(eslint@9.13.0(jiti@1.21.6))(typescript@5.6.3))(eslint-plugin-import@2.31.0)(eslint@9.13.0(jiti@1.21.6)) + transitivePeerDependencies: + - supports-color + + eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.10.0(eslint@9.13.0(jiti@1.21.6))(typescript@5.6.3))(eslint-import-resolver-typescript@3.6.3)(eslint@9.13.0(jiti@1.21.6)): + dependencies: + '@rtsao/scc': 1.1.0 + array-includes: 3.1.8 + array.prototype.findlastindex: 1.2.5 + array.prototype.flat: 1.3.2 + array.prototype.flatmap: 1.3.2 + debug: 3.2.7 + doctrine: 2.1.0 + eslint: 9.13.0(jiti@1.21.6) + eslint-import-resolver-node: 0.3.9 + eslint-module-utils: 2.12.0(@typescript-eslint/parser@8.10.0(eslint@9.13.0(jiti@1.21.6))(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.10.0(eslint@9.13.0(jiti@1.21.6))(typescript@5.6.3))(eslint-plugin-import@2.31.0)(eslint@9.13.0(jiti@1.21.6)))(eslint@9.13.0(jiti@1.21.6)) + hasown: 2.0.2 + is-core-module: 2.15.1 + is-glob: 4.0.3 + minimatch: 3.1.2 + object.fromentries: 2.0.8 + object.groupby: 1.0.3 + object.values: 1.2.0 + semver: 6.3.1 + string.prototype.trimend: 1.0.8 + tsconfig-paths: 3.15.0 + optionalDependencies: + '@typescript-eslint/parser': 8.10.0(eslint@9.13.0(jiti@1.21.6))(typescript@5.6.3) + transitivePeerDependencies: + - eslint-import-resolver-typescript + - eslint-import-resolver-webpack + - supports-color + + eslint-plugin-jsx-a11y@6.10.0(eslint@9.13.0(jiti@1.21.6)): + dependencies: + aria-query: 5.1.3 + array-includes: 3.1.8 + array.prototype.flatmap: 1.3.2 + ast-types-flow: 0.0.8 + axe-core: 4.10.1 + axobject-query: 4.1.0 + damerau-levenshtein: 1.0.8 + emoji-regex: 9.2.2 + es-iterator-helpers: 1.1.0 + eslint: 9.13.0(jiti@1.21.6) + hasown: 2.0.2 + jsx-ast-utils: 3.3.5 + language-tags: 1.0.9 + minimatch: 3.1.2 + object.fromentries: 2.0.8 + safe-regex-test: 1.0.3 + string.prototype.includes: 2.0.1 + + eslint-plugin-prettier@5.2.1(eslint-config-prettier@9.1.0(eslint@9.13.0(jiti@1.21.6)))(eslint@9.13.0(jiti@1.21.6))(prettier@3.3.3): + dependencies: + eslint: 9.13.0(jiti@1.21.6) + prettier: 3.3.3 + prettier-linter-helpers: 1.0.0 + synckit: 0.9.2 + optionalDependencies: + eslint-config-prettier: 9.1.0(eslint@9.13.0(jiti@1.21.6)) + + eslint-plugin-react-hooks@5.0.0(eslint@9.13.0(jiti@1.21.6)): + dependencies: + eslint: 9.13.0(jiti@1.21.6) + + eslint-plugin-react-refresh@0.4.13(eslint@9.13.0(jiti@1.21.6)): + dependencies: + eslint: 9.13.0(jiti@1.21.6) + + eslint-plugin-react@7.37.1(eslint@9.13.0(jiti@1.21.6)): + dependencies: + array-includes: 3.1.8 + array.prototype.findlast: 1.2.5 + array.prototype.flatmap: 1.3.2 + array.prototype.tosorted: 1.1.4 + doctrine: 2.1.0 + es-iterator-helpers: 1.1.0 + eslint: 9.13.0(jiti@1.21.6) + estraverse: 5.3.0 + hasown: 2.0.2 + jsx-ast-utils: 3.3.5 + minimatch: 3.1.2 + object.entries: 1.1.8 + object.fromentries: 2.0.8 + object.values: 1.2.0 + prop-types: 15.8.1 + resolve: 2.0.0-next.5 + semver: 6.3.1 + string.prototype.matchall: 4.0.11 + string.prototype.repeat: 1.0.0 + + eslint-plugin-storybook@0.9.0(eslint@9.13.0(jiti@1.21.6))(typescript@5.6.3): + dependencies: + '@storybook/csf': 0.0.1 + '@typescript-eslint/utils': 5.62.0(eslint@9.13.0(jiti@1.21.6))(typescript@5.6.3) + eslint: 9.13.0(jiti@1.21.6) + requireindex: 1.2.0 + ts-dedent: 2.2.0 + transitivePeerDependencies: + - supports-color + - typescript + + eslint-scope@5.1.1: + dependencies: + esrecurse: 4.3.0 + estraverse: 4.3.0 + + eslint-scope@8.1.0: + dependencies: + esrecurse: 4.3.0 + estraverse: 5.3.0 + + eslint-visitor-keys@3.4.3: {} + + eslint-visitor-keys@4.1.0: {} + + eslint@9.13.0(jiti@1.21.6): + dependencies: + '@eslint-community/eslint-utils': 4.4.0(eslint@9.13.0(jiti@1.21.6)) + '@eslint-community/regexpp': 4.11.1 + '@eslint/config-array': 0.18.0 + '@eslint/core': 0.7.0 + '@eslint/eslintrc': 3.1.0 + '@eslint/js': 9.13.0 + '@eslint/plugin-kit': 0.2.1 + '@humanfs/node': 0.16.5 + '@humanwhocodes/module-importer': 1.0.1 + '@humanwhocodes/retry': 0.3.1 + '@types/estree': 1.0.6 + '@types/json-schema': 7.0.15 + ajv: 6.12.6 + chalk: 4.1.2 + cross-spawn: 7.0.3 + debug: 4.3.7 + escape-string-regexp: 4.0.0 + eslint-scope: 8.1.0 + eslint-visitor-keys: 4.1.0 + espree: 10.2.0 + esquery: 1.6.0 + esutils: 2.0.3 + fast-deep-equal: 3.1.3 + file-entry-cache: 8.0.0 + find-up: 5.0.0 + glob-parent: 6.0.2 + ignore: 5.3.2 + imurmurhash: 0.1.4 + is-glob: 4.0.3 + json-stable-stringify-without-jsonify: 1.0.1 + lodash.merge: 4.6.2 + minimatch: 3.1.2 + natural-compare: 1.4.0 + optionator: 0.9.4 + text-table: 0.2.0 + optionalDependencies: + jiti: 1.21.6 + transitivePeerDependencies: + - supports-color + + espree@10.2.0: + dependencies: + acorn: 8.13.0 + acorn-jsx: 5.3.2(acorn@8.13.0) + eslint-visitor-keys: 4.1.0 + + esprima@4.0.1: {} + + esquery@1.6.0: + dependencies: + estraverse: 5.3.0 + + esrecurse@4.3.0: + dependencies: + estraverse: 5.3.0 + + estraverse@4.3.0: {} + + estraverse@5.3.0: {} + + estree-walker@2.0.2: {} + + estree-walker@3.0.3: + dependencies: + '@types/estree': 1.0.6 + + esutils@2.0.3: {} + + etag@1.8.1: {} + + eventemitter3@5.0.1: {} + + execa@8.0.1: + dependencies: + cross-spawn: 7.0.3 + get-stream: 8.0.1 + human-signals: 5.0.0 + is-stream: 3.0.0 + merge-stream: 2.0.0 + npm-run-path: 5.3.0 + onetime: 6.0.0 + signal-exit: 4.1.0 + strip-final-newline: 3.0.0 + + express@4.21.1: + dependencies: + accepts: 1.3.8 + array-flatten: 1.1.1 + body-parser: 1.20.3 + content-disposition: 0.5.4 + content-type: 1.0.5 + cookie: 0.7.1 + cookie-signature: 1.0.6 + debug: 2.6.9 + depd: 2.0.0 + encodeurl: 2.0.0 + escape-html: 1.0.3 + etag: 1.8.1 + finalhandler: 1.3.1 + fresh: 0.5.2 + http-errors: 2.0.0 + merge-descriptors: 1.0.3 + methods: 1.1.2 + on-finished: 2.4.1 + parseurl: 1.3.3 + path-to-regexp: 0.1.10 + proxy-addr: 2.0.7 + qs: 6.13.0 + range-parser: 1.2.1 + safe-buffer: 5.2.1 + send: 0.19.0 + serve-static: 1.16.2 + setprototypeof: 1.2.0 + statuses: 2.0.1 + type-is: 1.6.18 + utils-merge: 1.0.1 + vary: 1.1.2 + transitivePeerDependencies: + - supports-color + + fast-deep-equal@3.1.3: {} + + fast-diff@1.3.0: {} + + fast-glob@3.3.2: + dependencies: + '@nodelib/fs.stat': 2.0.5 + '@nodelib/fs.walk': 1.2.8 + glob-parent: 5.1.2 + merge2: 1.4.1 + micromatch: 4.0.8 + + fast-json-stable-stringify@2.1.0: {} + + fast-levenshtein@2.0.6: {} + + fast-uri@3.0.3: {} + + fastq@1.17.1: + dependencies: + reusify: 1.0.4 + + file-entry-cache@8.0.0: + dependencies: + flat-cache: 4.0.1 + + file-system-cache@2.3.0: + dependencies: + fs-extra: 11.1.1 + ramda: 0.29.0 + + fill-range@7.1.1: + dependencies: + to-regex-range: 5.0.1 + + finalhandler@1.3.1: + dependencies: + debug: 2.6.9 + encodeurl: 2.0.0 + escape-html: 1.0.3 + on-finished: 2.4.1 + parseurl: 1.3.3 + statuses: 2.0.1 + unpipe: 1.0.0 + transitivePeerDependencies: + - supports-color + + find-cache-dir@3.3.2: + dependencies: + commondir: 1.0.1 + make-dir: 3.1.0 + pkg-dir: 4.2.0 + + find-up@4.1.0: + dependencies: + locate-path: 5.0.0 + path-exists: 4.0.0 + + find-up@5.0.0: + dependencies: + locate-path: 6.0.0 + path-exists: 4.0.0 + + find-up@7.0.0: + dependencies: + locate-path: 7.2.0 + path-exists: 5.0.0 + unicorn-magic: 0.1.0 + + flat-cache@4.0.1: + dependencies: + flatted: 3.3.1 + keyv: 4.5.4 + + flatted@3.3.1: {} + + follow-redirects@1.15.9: {} + + for-each@0.3.3: + dependencies: + is-callable: 1.2.7 + + foreground-child@3.3.0: + dependencies: + cross-spawn: 7.0.3 + signal-exit: 4.1.0 + + form-data@4.0.1: + dependencies: + asynckit: 0.4.0 + combined-stream: 1.0.8 + mime-types: 2.1.35 + + forwarded@0.2.0: {} + + fraction.js@4.3.7: {} + + fresh@0.5.2: {} + + fs-extra@11.1.1: + dependencies: + graceful-fs: 4.2.11 + jsonfile: 6.1.0 + universalify: 2.0.1 + + fs-extra@11.2.0: + dependencies: + graceful-fs: 4.2.11 + jsonfile: 6.1.0 + universalify: 2.0.1 + + fs.realpath@1.0.0: {} + + fsevents@2.3.3: + optional: true + + function-bind@1.1.2: {} + + function.prototype.name@1.1.6: + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-abstract: 1.23.3 + functions-have-names: 1.2.3 + + functions-have-names@1.2.3: {} + + gensync@1.0.0-beta.2: {} + + get-caller-file@2.0.5: {} + + get-east-asian-width@1.3.0: {} + + get-intrinsic@1.2.4: + dependencies: + es-errors: 1.3.0 + function-bind: 1.1.2 + has-proto: 1.0.3 + has-symbols: 1.0.3 + hasown: 2.0.2 + + get-nonce@1.0.1: {} + + get-stream@8.0.1: {} + + get-symbol-description@1.0.2: + dependencies: + call-bind: 1.0.7 + es-errors: 1.3.0 + get-intrinsic: 1.2.4 + + get-tsconfig@4.8.1: + dependencies: + resolve-pkg-maps: 1.0.0 + + git-raw-commits@4.0.0: + dependencies: + dargs: 8.1.0 + meow: 12.1.1 + split2: 4.2.0 + + github-slugger@2.0.0: {} + + glob-parent@5.1.2: + dependencies: + is-glob: 4.0.3 + + glob-parent@6.0.2: + dependencies: + is-glob: 4.0.3 + + glob-promise@4.2.2(glob@7.2.3): + dependencies: + '@types/glob': 7.2.0 + glob: 7.2.3 + + glob@10.4.5: + dependencies: + foreground-child: 3.3.0 + jackspeak: 3.4.3 + minimatch: 9.0.5 + minipass: 7.1.2 + package-json-from-dist: 1.0.1 + path-scurry: 1.11.1 + + glob@7.2.3: + dependencies: + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 3.1.2 + once: 1.4.0 + path-is-absolute: 1.0.1 + + global-directory@4.0.1: + dependencies: + ini: 4.1.1 + + globals@11.12.0: {} + + globals@14.0.0: {} + + globals@15.11.0: {} + + globalthis@1.0.4: + dependencies: + define-properties: 1.2.1 + gopd: 1.0.1 + + globby@11.1.0: + dependencies: + array-union: 2.1.0 + dir-glob: 3.0.1 + fast-glob: 3.3.2 + ignore: 5.3.2 + merge2: 1.4.1 + slash: 3.0.0 + + goober@2.1.16(csstype@3.1.3): + dependencies: + csstype: 3.1.3 + + gopd@1.0.1: + dependencies: + get-intrinsic: 1.2.4 + + graceful-fs@4.2.11: {} + + graphemer@1.4.0: {} + + graphql@16.9.0: {} + + has-bigints@1.0.2: {} + + has-flag@3.0.0: {} + + has-flag@4.0.0: {} + + has-property-descriptors@1.0.2: + dependencies: + es-define-property: 1.0.0 + + has-proto@1.0.3: {} + + has-symbols@1.0.3: {} + + has-tostringtag@1.0.2: + dependencies: + has-symbols: 1.0.3 + + hasown@2.0.2: + dependencies: + function-bind: 1.1.2 + + hast-util-heading-rank@3.0.0: + dependencies: + '@types/hast': 3.0.4 + + hast-util-is-element@3.0.0: + dependencies: + '@types/hast': 3.0.4 + + hast-util-to-string@3.0.1: + dependencies: + '@types/hast': 3.0.4 + + headers-polyfill@4.0.3: {} + + html-tags@3.3.1: {} + + http-errors@2.0.0: + dependencies: + depd: 2.0.0 + inherits: 2.0.4 + setprototypeof: 1.2.0 + statuses: 2.0.1 + toidentifier: 1.0.1 + + human-signals@5.0.0: {} + + husky@9.1.6: {} + + iconv-lite@0.4.24: + dependencies: + safer-buffer: 2.1.2 + + ignore@5.3.2: {} + + import-fresh@3.3.0: + dependencies: + parent-module: 1.0.1 + resolve-from: 4.0.0 + + import-meta-resolve@4.1.0: {} + + imurmurhash@0.1.4: {} + + indent-string@4.0.0: {} + + inflight@1.0.6: + dependencies: + once: 1.4.0 + wrappy: 1.0.2 + + inherits@2.0.4: {} + + ini@4.1.1: {} + + internal-slot@1.0.7: + dependencies: + es-errors: 1.3.0 + hasown: 2.0.2 + side-channel: 1.0.6 + + invariant@2.2.4: + dependencies: + loose-envify: 1.4.0 + + ipaddr.js@1.9.1: {} + + is-absolute-url@4.0.1: {} + + is-arguments@1.1.1: + dependencies: + call-bind: 1.0.7 + has-tostringtag: 1.0.2 + + is-array-buffer@3.0.4: + dependencies: + call-bind: 1.0.7 + get-intrinsic: 1.2.4 + + is-arrayish@0.2.1: {} + + is-async-function@2.0.0: + dependencies: + has-tostringtag: 1.0.2 + + is-bigint@1.0.4: + dependencies: + has-bigints: 1.0.2 + + is-binary-path@2.1.0: + dependencies: + binary-extensions: 2.3.0 + + is-boolean-object@1.1.2: + dependencies: + call-bind: 1.0.7 + has-tostringtag: 1.0.2 + + is-bun-module@1.2.1: + dependencies: + semver: 7.6.3 + + is-callable@1.2.7: {} + + is-core-module@2.15.1: + dependencies: + hasown: 2.0.2 + + is-data-view@1.0.1: + dependencies: + is-typed-array: 1.1.13 + + is-date-object@1.0.5: + dependencies: + has-tostringtag: 1.0.2 + + is-docker@2.2.1: {} + + is-extglob@2.1.1: {} + + is-finalizationregistry@1.0.2: + dependencies: + call-bind: 1.0.7 + + is-fullwidth-code-point@3.0.0: {} + + is-fullwidth-code-point@4.0.0: {} + + is-fullwidth-code-point@5.0.0: + dependencies: + get-east-asian-width: 1.3.0 + + is-generator-function@1.0.10: + dependencies: + has-tostringtag: 1.0.2 + + is-glob@4.0.3: + dependencies: + is-extglob: 2.1.1 + + is-map@2.0.3: {} + + is-negative-zero@2.0.3: {} + + is-node-process@1.2.0: {} + + is-number-object@1.0.7: + dependencies: + has-tostringtag: 1.0.2 + + is-number@7.0.0: {} + + is-obj@2.0.0: {} + + is-plain-object@5.0.0: {} + + is-regex@1.1.4: + dependencies: + call-bind: 1.0.7 + has-tostringtag: 1.0.2 + + is-set@2.0.3: {} + + is-shared-array-buffer@1.0.3: + dependencies: + call-bind: 1.0.7 + + is-stream@3.0.0: {} + + is-string@1.0.7: + dependencies: + has-tostringtag: 1.0.2 + + is-symbol@1.0.4: + dependencies: + has-symbols: 1.0.3 + + is-text-path@2.0.0: + dependencies: + text-extensions: 2.4.0 + + is-typed-array@1.1.13: + dependencies: + which-typed-array: 1.1.15 + + is-weakmap@2.0.2: {} + + is-weakref@1.0.2: + dependencies: + call-bind: 1.0.7 + + is-weakset@2.0.3: + dependencies: + call-bind: 1.0.7 + get-intrinsic: 1.2.4 + + is-wsl@2.2.0: + dependencies: + is-docker: 2.2.1 + + isarray@2.0.5: {} + + isexe@2.0.0: {} + + iterator.prototype@1.1.3: + dependencies: + define-properties: 1.2.1 + get-intrinsic: 1.2.4 + has-symbols: 1.0.3 + reflect.getprototypeof: 1.0.6 + set-function-name: 2.0.2 + + jackspeak@3.4.3: + dependencies: + '@isaacs/cliui': 8.0.2 + optionalDependencies: + '@pkgjs/parseargs': 0.11.0 + + jiti@1.21.6: {} + + js-tokens@4.0.0: {} + + js-yaml@4.1.0: + dependencies: + argparse: 2.0.1 + + jsdoc-type-pratt-parser@4.1.0: {} + + jsesc@3.0.2: {} + + json-buffer@3.0.1: {} + + json-parse-even-better-errors@2.3.1: {} + + json-schema-traverse@0.4.1: {} + + json-schema-traverse@1.0.0: {} + + json-stable-stringify-without-jsonify@1.0.1: {} + + json5@1.0.2: + dependencies: + minimist: 1.2.8 + + json5@2.2.3: {} + + jsonfile@6.1.0: + dependencies: + universalify: 2.0.1 + optionalDependencies: + graceful-fs: 4.2.11 + + jsonparse@1.3.1: {} + + jsx-ast-utils@3.3.5: + dependencies: + array-includes: 3.1.8 + array.prototype.flat: 1.3.2 + object.assign: 4.1.5 + object.values: 1.2.0 + + keyv@4.5.4: + dependencies: + json-buffer: 3.0.1 + + language-subtag-registry@0.3.23: {} + + language-tags@1.0.9: + dependencies: + language-subtag-registry: 0.3.23 + + levn@0.4.1: + dependencies: + prelude-ls: 1.2.1 + type-check: 0.4.0 + + lilconfig@2.1.0: {} + + lilconfig@3.1.2: {} + + lines-and-columns@1.2.4: {} + + lint-staged@15.2.10: + dependencies: + chalk: 5.3.0 + commander: 12.1.0 + debug: 4.3.7 + execa: 8.0.1 + lilconfig: 3.1.2 + listr2: 8.2.5 + micromatch: 4.0.8 + pidtree: 0.6.0 + string-argv: 0.3.2 + yaml: 2.5.1 + transitivePeerDependencies: + - supports-color + + listr2@8.2.5: + dependencies: + cli-truncate: 4.0.0 + colorette: 2.0.20 + eventemitter3: 5.0.1 + log-update: 6.1.0 + rfdc: 1.4.1 + wrap-ansi: 9.0.0 + + locate-path@5.0.0: + dependencies: + p-locate: 4.1.0 + + locate-path@6.0.0: + dependencies: + p-locate: 5.0.0 + + locate-path@7.2.0: + dependencies: + p-locate: 6.0.0 + + lodash.camelcase@4.3.0: {} + + lodash.isplainobject@4.0.6: {} + + lodash.kebabcase@4.1.1: {} + + lodash.merge@4.6.2: {} + + lodash.mergewith@4.6.2: {} + + lodash.snakecase@4.1.1: {} + + lodash.startcase@4.4.0: {} + + lodash.uniq@4.5.0: {} + + lodash.upperfirst@4.3.1: {} + + lodash@4.17.21: {} + + log-update@6.1.0: + dependencies: + ansi-escapes: 7.0.0 + cli-cursor: 5.0.0 + slice-ansi: 7.1.0 + strip-ansi: 7.1.0 + wrap-ansi: 9.0.0 + + loose-envify@1.4.0: + dependencies: + js-tokens: 4.0.0 + + loupe@3.1.2: {} + + lru-cache@10.4.3: {} + + lru-cache@5.1.1: + dependencies: + yallist: 3.1.1 + + lucide-react@0.453.0(react@18.3.1): + dependencies: + react: 18.3.1 + + lz-string@1.5.0: {} + + magic-string@0.27.0: + dependencies: + '@jridgewell/sourcemap-codec': 1.5.0 + + magic-string@0.30.12: + dependencies: + '@jridgewell/sourcemap-codec': 1.5.0 + + make-dir@3.1.0: + dependencies: + semver: 6.3.1 + + map-or-similar@1.5.0: {} + + markdown-to-jsx@7.5.0(react@18.3.1): + dependencies: + react: 18.3.1 + + media-typer@0.3.0: {} + + memoizerific@1.11.3: + dependencies: + map-or-similar: 1.5.0 + + meow@12.1.1: {} + + merge-descriptors@1.0.3: {} + + merge-stream@2.0.0: {} + + merge2@1.4.1: {} + + methods@1.1.2: {} + + micromatch@4.0.8: + dependencies: + braces: 3.0.3 + picomatch: 2.3.1 + + mime-db@1.52.0: {} + + mime-types@2.1.35: + dependencies: + mime-db: 1.52.0 + + mime@1.6.0: {} + + mimic-fn@4.0.0: {} + + mimic-function@5.0.1: {} + + min-indent@1.0.1: {} + + minimatch@3.1.2: + dependencies: + brace-expansion: 1.1.11 + + minimatch@9.0.5: + dependencies: + brace-expansion: 2.0.1 + + minimist@1.2.8: {} + + minipass@7.1.2: {} + + ms@2.0.0: {} + + ms@2.1.3: {} + + msw@2.4.11(typescript@5.6.3): + dependencies: + '@bundled-es-modules/cookie': 2.0.0 + '@bundled-es-modules/statuses': 1.0.1 + '@bundled-es-modules/tough-cookie': 0.1.6 + '@inquirer/confirm': 3.2.0 + '@mswjs/interceptors': 0.35.9 + '@open-draft/until': 2.1.0 + '@types/cookie': 0.6.0 + '@types/statuses': 2.0.5 + chalk: 4.1.2 + graphql: 16.9.0 + headers-polyfill: 4.0.3 + is-node-process: 1.2.0 + outvariant: 1.4.3 + path-to-regexp: 6.3.0 + strict-event-emitter: 0.5.1 + type-fest: 4.26.1 + yargs: 17.7.2 + optionalDependencies: + typescript: 5.6.3 + + mute-stream@1.0.0: {} + + mz@2.7.0: + dependencies: + any-promise: 1.3.0 + object-assign: 4.1.1 + thenify-all: 1.6.0 + + nanoid@3.3.7: {} + + natural-compare@1.4.0: {} + + negotiator@0.6.3: {} + + node-releases@2.0.18: {} + + normalize-path@3.0.0: {} + + normalize-range@0.1.2: {} + + npm-run-path@5.3.0: + dependencies: + path-key: 4.0.0 + + object-assign@4.1.1: {} + + object-hash@3.0.0: {} + + object-inspect@1.13.2: {} + + object-is@1.1.6: + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + + object-keys@1.1.1: {} + + object.assign@4.1.5: + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + has-symbols: 1.0.3 + object-keys: 1.1.1 + + object.entries@1.1.8: + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-object-atoms: 1.0.0 + + object.fromentries@2.0.8: + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-abstract: 1.23.3 + es-object-atoms: 1.0.0 + + object.groupby@1.0.3: + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-abstract: 1.23.3 + + object.values@1.2.0: + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-object-atoms: 1.0.0 + + on-finished@2.4.1: + dependencies: + ee-first: 1.1.1 + + once@1.4.0: + dependencies: + wrappy: 1.0.2 + + onetime@6.0.0: + dependencies: + mimic-fn: 4.0.0 + + onetime@7.0.0: + dependencies: + mimic-function: 5.0.1 + + open@8.4.2: + dependencies: + define-lazy-prop: 2.0.0 + is-docker: 2.2.1 + is-wsl: 2.2.0 + + optionator@0.9.4: + dependencies: + deep-is: 0.1.4 + fast-levenshtein: 2.0.6 + levn: 0.4.1 + prelude-ls: 1.2.1 + type-check: 0.4.0 + word-wrap: 1.2.5 + + outvariant@1.4.3: {} + + p-limit@2.3.0: + dependencies: + p-try: 2.2.0 + + p-limit@3.1.0: + dependencies: + yocto-queue: 0.1.0 + + p-limit@4.0.0: + dependencies: + yocto-queue: 1.1.1 + + p-locate@4.1.0: + dependencies: + p-limit: 2.3.0 + + p-locate@5.0.0: + dependencies: + p-limit: 3.1.0 + + p-locate@6.0.0: + dependencies: + p-limit: 4.0.0 + + p-try@2.2.0: {} + + package-json-from-dist@1.0.1: {} + + parent-module@1.0.1: + dependencies: + callsites: 3.1.0 + + parse-json@5.2.0: + dependencies: + '@babel/code-frame': 7.25.7 + error-ex: 1.3.2 + json-parse-even-better-errors: 2.3.1 + lines-and-columns: 1.2.4 + + parseurl@1.3.3: {} + + path-exists@4.0.0: {} + + path-exists@5.0.0: {} + + path-is-absolute@1.0.1: {} + + path-key@3.1.1: {} + + path-key@4.0.0: {} + + path-parse@1.0.7: {} + + path-scurry@1.11.1: + dependencies: + lru-cache: 10.4.3 + minipass: 7.1.2 + + path-to-regexp@0.1.10: {} + + path-to-regexp@6.3.0: {} + + path-type@4.0.0: {} + + pathval@2.0.0: {} + + picocolors@1.1.1: {} + + picomatch@2.3.1: {} + + pidtree@0.6.0: {} + + pify@2.3.0: {} + + pirates@4.0.6: {} + + pkg-dir@4.2.0: + dependencies: + find-up: 4.1.0 + + polished@4.3.1: + dependencies: + '@babel/runtime': 7.25.7 + + possible-typed-array-names@1.0.0: {} + + postcss-import@15.1.0(postcss@8.4.47): + dependencies: + postcss: 8.4.47 + postcss-value-parser: 4.2.0 + read-cache: 1.0.0 + resolve: 1.22.8 + + postcss-js@4.0.1(postcss@8.4.47): + dependencies: + camelcase-css: 2.0.1 + postcss: 8.4.47 + + postcss-load-config@4.0.2(postcss@8.4.47): + dependencies: + lilconfig: 3.1.2 + yaml: 2.6.0 + optionalDependencies: + postcss: 8.4.47 + + postcss-nested@6.2.0(postcss@8.4.47): + dependencies: + postcss: 8.4.47 + postcss-selector-parser: 6.1.2 + + postcss-selector-parser@6.1.2: + dependencies: + cssesc: 3.0.0 + util-deprecate: 1.0.2 + + postcss-value-parser@4.2.0: {} + + postcss@8.4.47: + dependencies: + nanoid: 3.3.7 + picocolors: 1.1.1 + source-map-js: 1.2.1 + + prelude-ls@1.2.1: {} + + prettier-linter-helpers@1.0.0: + dependencies: + fast-diff: 1.3.0 + + prettier@3.3.3: {} + + pretty-format@27.5.1: + dependencies: + ansi-regex: 5.0.1 + ansi-styles: 5.2.0 + react-is: 17.0.2 + + process@0.11.10: {} + + prop-types@15.8.1: + dependencies: + loose-envify: 1.4.0 + object-assign: 4.1.1 + react-is: 16.13.1 + + proxy-addr@2.0.7: + dependencies: + forwarded: 0.2.0 + ipaddr.js: 1.9.1 + + proxy-from-env@1.1.0: {} + + psl@1.9.0: {} + + punycode@2.3.1: {} + + qs@6.13.0: + dependencies: + side-channel: 1.0.6 + + querystringify@2.2.0: {} + + queue-microtask@1.2.3: {} + + ramda@0.29.0: {} + + range-parser@1.2.1: {} + + raw-body@2.5.2: + dependencies: + bytes: 3.1.2 + http-errors: 2.0.0 + iconv-lite: 0.4.24 + unpipe: 1.0.0 + + react-colorful@5.6.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + dependencies: + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + + react-day-picker@8.10.1(date-fns@4.1.0)(react@18.3.1): + dependencies: + date-fns: 4.1.0 + react: 18.3.1 + + react-docgen-typescript@2.2.2(typescript@5.6.3): + dependencies: + typescript: 5.6.3 + + react-docgen@7.0.3: + dependencies: + '@babel/core': 7.25.8 + '@babel/traverse': 7.25.7 + '@babel/types': 7.25.8 + '@types/babel__core': 7.20.5 + '@types/babel__traverse': 7.20.6 + '@types/doctrine': 0.0.9 + '@types/resolve': 1.20.6 + doctrine: 3.0.0 + resolve: 1.22.8 + strip-indent: 4.0.0 + transitivePeerDependencies: + - supports-color + + react-dom@18.3.1(react@18.3.1): + dependencies: + loose-envify: 1.4.0 + react: 18.3.1 + scheduler: 0.23.2 + + react-element-to-jsx-string@15.0.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + dependencies: + '@base2/pretty-print-object': 1.0.1 + is-plain-object: 5.0.0 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + react-is: 18.1.0 + + react-hook-form@7.53.0(react@18.3.1): + dependencies: + react: 18.3.1 + + react-hot-toast@2.4.1(csstype@3.1.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + dependencies: + goober: 2.1.16(csstype@3.1.3) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + transitivePeerDependencies: + - csstype + + react-is@16.13.1: {} + + react-is@17.0.2: {} + + react-is@18.1.0: {} + + react-refresh@0.14.2: {} + + react-remove-scroll-bar@2.3.6(@types/react@18.3.11)(react@18.3.1): + dependencies: + react: 18.3.1 + react-style-singleton: 2.2.1(@types/react@18.3.11)(react@18.3.1) + tslib: 2.8.0 + optionalDependencies: + '@types/react': 18.3.11 + + react-remove-scroll@2.5.5(@types/react@18.3.11)(react@18.3.1): + dependencies: + react: 18.3.1 + react-remove-scroll-bar: 2.3.6(@types/react@18.3.11)(react@18.3.1) + react-style-singleton: 2.2.1(@types/react@18.3.11)(react@18.3.1) + tslib: 2.8.0 + use-callback-ref: 1.3.2(@types/react@18.3.11)(react@18.3.1) + use-sidecar: 1.1.2(@types/react@18.3.11)(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.11 + + react-remove-scroll@2.6.0(@types/react@18.3.11)(react@18.3.1): + dependencies: + react: 18.3.1 + react-remove-scroll-bar: 2.3.6(@types/react@18.3.11)(react@18.3.1) + react-style-singleton: 2.2.1(@types/react@18.3.11)(react@18.3.1) + tslib: 2.8.0 + use-callback-ref: 1.3.2(@types/react@18.3.11)(react@18.3.1) + use-sidecar: 1.1.2(@types/react@18.3.11)(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.11 + + react-router-dom@6.27.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + dependencies: + '@remix-run/router': 1.20.0 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + react-router: 6.27.0(react@18.3.1) + + react-router@6.27.0(react@18.3.1): + dependencies: + '@remix-run/router': 1.20.0 + react: 18.3.1 + + react-style-singleton@2.2.1(@types/react@18.3.11)(react@18.3.1): + dependencies: + get-nonce: 1.0.1 + invariant: 2.2.4 + react: 18.3.1 + tslib: 2.8.0 + optionalDependencies: + '@types/react': 18.3.11 + + react@18.3.1: + dependencies: + loose-envify: 1.4.0 + + read-cache@1.0.0: + dependencies: + pify: 2.3.0 + + readdirp@3.6.0: + dependencies: + picomatch: 2.3.1 + + recast@0.23.9: + dependencies: + ast-types: 0.16.1 + esprima: 4.0.1 + source-map: 0.6.1 + tiny-invariant: 1.3.3 + tslib: 2.8.0 + + redent@3.0.0: + dependencies: + indent-string: 4.0.0 + strip-indent: 3.0.0 + + reflect.getprototypeof@1.0.6: + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-abstract: 1.23.3 + es-errors: 1.3.0 + get-intrinsic: 1.2.4 + globalthis: 1.0.4 + which-builtin-type: 1.1.4 + + regenerator-runtime@0.14.1: {} + + regexp.prototype.flags@1.5.3: + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-errors: 1.3.0 + set-function-name: 2.0.2 + + rehype-external-links@3.0.0: + dependencies: + '@types/hast': 3.0.4 + '@ungap/structured-clone': 1.2.0 + hast-util-is-element: 3.0.0 + is-absolute-url: 4.0.1 + space-separated-tokens: 2.0.2 + unist-util-visit: 5.0.0 + + rehype-slug@6.0.0: + dependencies: + '@types/hast': 3.0.4 + github-slugger: 2.0.0 + hast-util-heading-rank: 3.0.0 + hast-util-to-string: 3.0.1 + unist-util-visit: 5.0.0 + + require-directory@2.1.1: {} + + require-from-string@2.0.2: {} + + requireindex@1.2.0: {} + + requires-port@1.0.0: {} + + resolve-from@4.0.0: {} + + resolve-from@5.0.0: {} + + resolve-pkg-maps@1.0.0: {} + + resolve@1.22.8: + dependencies: + is-core-module: 2.15.1 + path-parse: 1.0.7 + supports-preserve-symlinks-flag: 1.0.0 + + resolve@2.0.0-next.5: + dependencies: + is-core-module: 2.15.1 + path-parse: 1.0.7 + supports-preserve-symlinks-flag: 1.0.0 + + restore-cursor@5.1.0: + dependencies: + onetime: 7.0.0 + signal-exit: 4.1.0 + + reusify@1.0.4: {} + + rfdc@1.4.1: {} + + rollup@4.24.0: + dependencies: + '@types/estree': 1.0.6 + optionalDependencies: + '@rollup/rollup-android-arm-eabi': 4.24.0 + '@rollup/rollup-android-arm64': 4.24.0 + '@rollup/rollup-darwin-arm64': 4.24.0 + '@rollup/rollup-darwin-x64': 4.24.0 + '@rollup/rollup-linux-arm-gnueabihf': 4.24.0 + '@rollup/rollup-linux-arm-musleabihf': 4.24.0 + '@rollup/rollup-linux-arm64-gnu': 4.24.0 + '@rollup/rollup-linux-arm64-musl': 4.24.0 + '@rollup/rollup-linux-powerpc64le-gnu': 4.24.0 + '@rollup/rollup-linux-riscv64-gnu': 4.24.0 + '@rollup/rollup-linux-s390x-gnu': 4.24.0 + '@rollup/rollup-linux-x64-gnu': 4.24.0 + '@rollup/rollup-linux-x64-musl': 4.24.0 + '@rollup/rollup-win32-arm64-msvc': 4.24.0 + '@rollup/rollup-win32-ia32-msvc': 4.24.0 + '@rollup/rollup-win32-x64-msvc': 4.24.0 + fsevents: 2.3.3 + + run-parallel@1.2.0: + dependencies: + queue-microtask: 1.2.3 + + safe-array-concat@1.1.2: + dependencies: + call-bind: 1.0.7 + get-intrinsic: 1.2.4 + has-symbols: 1.0.3 + isarray: 2.0.5 + + safe-buffer@5.2.1: {} + + safe-regex-test@1.0.3: + dependencies: + call-bind: 1.0.7 + es-errors: 1.3.0 + is-regex: 1.1.4 + + safer-buffer@2.1.2: {} + + scheduler@0.23.2: + dependencies: + loose-envify: 1.4.0 + + semver@6.3.1: {} + + semver@7.6.3: {} + + send@0.19.0: + dependencies: + debug: 2.6.9 + depd: 2.0.0 + destroy: 1.2.0 + encodeurl: 1.0.2 + escape-html: 1.0.3 + etag: 1.8.1 + fresh: 0.5.2 + http-errors: 2.0.0 + mime: 1.6.0 + ms: 2.1.3 + on-finished: 2.4.1 + range-parser: 1.2.1 + statuses: 2.0.1 + transitivePeerDependencies: + - supports-color + + serve-static@1.16.2: + dependencies: + encodeurl: 2.0.0 + escape-html: 1.0.3 + parseurl: 1.3.3 + send: 0.19.0 + transitivePeerDependencies: + - supports-color + + set-function-length@1.2.2: + dependencies: + define-data-property: 1.1.4 + es-errors: 1.3.0 + function-bind: 1.1.2 + get-intrinsic: 1.2.4 + gopd: 1.0.1 + has-property-descriptors: 1.0.2 + + set-function-name@2.0.2: + dependencies: + define-data-property: 1.1.4 + es-errors: 1.3.0 + functions-have-names: 1.2.3 + has-property-descriptors: 1.0.2 + + setprototypeof@1.2.0: {} + + shebang-command@2.0.0: + dependencies: + shebang-regex: 3.0.0 + + shebang-regex@3.0.0: {} + + side-channel@1.0.6: + dependencies: + call-bind: 1.0.7 + es-errors: 1.3.0 + get-intrinsic: 1.2.4 + object-inspect: 1.13.2 + + signal-exit@4.1.0: {} + + slash@3.0.0: {} + + slice-ansi@5.0.0: + dependencies: + ansi-styles: 6.2.1 + is-fullwidth-code-point: 4.0.0 + + slice-ansi@7.1.0: + dependencies: + ansi-styles: 6.2.1 + is-fullwidth-code-point: 5.0.0 + + source-map-js@1.2.1: {} + + source-map@0.6.1: {} + + space-separated-tokens@2.0.2: {} + + split2@4.2.0: {} + + statuses@2.0.1: {} + + stop-iteration-iterator@1.0.0: + dependencies: + internal-slot: 1.0.7 + + storybook@8.3.6: + dependencies: + '@storybook/core': 8.3.6 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + + strict-event-emitter@0.5.1: {} + + string-argv@0.3.2: {} + + string-width@4.2.3: + dependencies: + emoji-regex: 8.0.0 + is-fullwidth-code-point: 3.0.0 + strip-ansi: 6.0.1 + + string-width@5.1.2: + dependencies: + eastasianwidth: 0.2.0 + emoji-regex: 9.2.2 + strip-ansi: 7.1.0 + + string-width@7.2.0: + dependencies: + emoji-regex: 10.4.0 + get-east-asian-width: 1.3.0 + strip-ansi: 7.1.0 + + string.prototype.includes@2.0.1: + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-abstract: 1.23.3 + + string.prototype.matchall@4.0.11: + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-abstract: 1.23.3 + es-errors: 1.3.0 + es-object-atoms: 1.0.0 + get-intrinsic: 1.2.4 + gopd: 1.0.1 + has-symbols: 1.0.3 + internal-slot: 1.0.7 + regexp.prototype.flags: 1.5.3 + set-function-name: 2.0.2 + side-channel: 1.0.6 + + string.prototype.repeat@1.0.0: + dependencies: + define-properties: 1.2.1 + es-abstract: 1.23.3 + + string.prototype.trim@1.2.9: + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-abstract: 1.23.3 + es-object-atoms: 1.0.0 + + string.prototype.trimend@1.0.8: + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-object-atoms: 1.0.0 + + string.prototype.trimstart@1.0.8: + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-object-atoms: 1.0.0 + + strip-ansi@6.0.1: + dependencies: + ansi-regex: 5.0.1 + + strip-ansi@7.1.0: + dependencies: + ansi-regex: 6.1.0 + + strip-bom@3.0.0: {} + + strip-final-newline@3.0.0: {} + + strip-indent@3.0.0: + dependencies: + min-indent: 1.0.1 + + strip-indent@4.0.0: + dependencies: + min-indent: 1.0.1 + + strip-json-comments@3.1.1: {} + + sucrase@3.35.0: + dependencies: + '@jridgewell/gen-mapping': 0.3.5 + commander: 4.1.1 + glob: 10.4.5 + lines-and-columns: 1.2.4 + mz: 2.7.0 + pirates: 4.0.6 + ts-interface-checker: 0.1.13 + + supports-color@5.5.0: + dependencies: + has-flag: 3.0.0 + + supports-color@7.2.0: + dependencies: + has-flag: 4.0.0 + + supports-preserve-symlinks-flag@1.0.0: {} + + synchronous-promise@2.0.17: {} + + synckit@0.9.2: + dependencies: + '@pkgr/core': 0.1.1 + tslib: 2.8.0 + + tailwind-merge@2.5.4: {} + + tailwindcss-animate@1.0.7(tailwindcss@3.4.14): + dependencies: + tailwindcss: 3.4.14 + + tailwindcss@3.4.14: + dependencies: + '@alloc/quick-lru': 5.2.0 + arg: 5.0.2 + chokidar: 3.6.0 + didyoumean: 1.2.2 + dlv: 1.1.3 + fast-glob: 3.3.2 + glob-parent: 6.0.2 + is-glob: 4.0.3 + jiti: 1.21.6 + lilconfig: 2.1.0 + micromatch: 4.0.8 + normalize-path: 3.0.0 + object-hash: 3.0.0 + picocolors: 1.1.1 + postcss: 8.4.47 + postcss-import: 15.1.0(postcss@8.4.47) + postcss-js: 4.0.1(postcss@8.4.47) + postcss-load-config: 4.0.2(postcss@8.4.47) + postcss-nested: 6.2.0(postcss@8.4.47) + postcss-selector-parser: 6.1.2 + resolve: 1.22.8 + sucrase: 3.35.0 + transitivePeerDependencies: + - ts-node + + tapable@2.2.1: {} + + telejson@7.2.0: + dependencies: + memoizerific: 1.11.3 + + text-extensions@2.4.0: {} + + text-table@0.2.0: {} + + thenify-all@1.6.0: + dependencies: + thenify: 3.3.1 + + thenify@3.3.1: + dependencies: + any-promise: 1.3.0 + + through@2.3.8: {} + + tiny-invariant@1.3.3: {} + + tinyexec@0.3.1: {} + + tinyrainbow@1.2.0: {} + + tinyspy@3.0.2: {} + + to-fast-properties@2.0.0: {} + + to-regex-range@5.0.1: + dependencies: + is-number: 7.0.0 + + toidentifier@1.0.1: {} + + tough-cookie@4.1.4: + dependencies: + psl: 1.9.0 + punycode: 2.3.1 + universalify: 0.2.0 + url-parse: 1.5.10 + + ts-api-utils@1.3.0(typescript@5.6.3): + dependencies: + typescript: 5.6.3 + + ts-dedent@2.2.0: {} + + ts-interface-checker@0.1.13: {} + + tsconfig-paths@3.15.0: + dependencies: + '@types/json5': 0.0.29 + json5: 1.0.2 + minimist: 1.2.8 + strip-bom: 3.0.0 + + tsconfig-paths@4.2.0: + dependencies: + json5: 2.2.3 + minimist: 1.2.8 + strip-bom: 3.0.0 + + tslib@1.14.1: {} + + tslib@2.8.0: {} + + tsutils@3.21.0(typescript@5.6.3): + dependencies: + tslib: 1.14.1 + typescript: 5.6.3 + + type-check@0.4.0: + dependencies: + prelude-ls: 1.2.1 + + type-fest@0.21.3: {} + + type-fest@2.19.0: {} + + type-fest@4.26.1: {} + + type-is@1.6.18: + dependencies: + media-typer: 0.3.0 + mime-types: 2.1.35 + + typed-array-buffer@1.0.2: + dependencies: + call-bind: 1.0.7 + es-errors: 1.3.0 + is-typed-array: 1.1.13 + + typed-array-byte-length@1.0.1: + dependencies: + call-bind: 1.0.7 + for-each: 0.3.3 + gopd: 1.0.1 + has-proto: 1.0.3 + is-typed-array: 1.1.13 + + typed-array-byte-offset@1.0.2: + dependencies: + available-typed-arrays: 1.0.7 + call-bind: 1.0.7 + for-each: 0.3.3 + gopd: 1.0.1 + has-proto: 1.0.3 + is-typed-array: 1.1.13 + + typed-array-length@1.0.6: + dependencies: + call-bind: 1.0.7 + for-each: 0.3.3 + gopd: 1.0.1 + has-proto: 1.0.3 + is-typed-array: 1.1.13 + possible-typed-array-names: 1.0.0 + + typescript-eslint@8.12.2(eslint@9.13.0(jiti@1.21.6))(typescript@5.6.3): + dependencies: + '@typescript-eslint/eslint-plugin': 8.12.2(@typescript-eslint/parser@8.12.2(eslint@9.13.0(jiti@1.21.6))(typescript@5.6.3))(eslint@9.13.0(jiti@1.21.6))(typescript@5.6.3) + '@typescript-eslint/parser': 8.12.2(eslint@9.13.0(jiti@1.21.6))(typescript@5.6.3) + '@typescript-eslint/utils': 8.12.2(eslint@9.13.0(jiti@1.21.6))(typescript@5.6.3) + optionalDependencies: + typescript: 5.6.3 + transitivePeerDependencies: + - eslint + - supports-color + + typescript@5.6.3: {} + + unbox-primitive@1.0.2: + dependencies: + call-bind: 1.0.7 + has-bigints: 1.0.2 + has-symbols: 1.0.3 + which-boxed-primitive: 1.0.2 + + undici-types@6.19.8: {} + + unicorn-magic@0.1.0: {} + + unist-util-is@6.0.0: + dependencies: + '@types/unist': 3.0.3 + + unist-util-visit-parents@6.0.1: + dependencies: + '@types/unist': 3.0.3 + unist-util-is: 6.0.0 + + unist-util-visit@5.0.0: + dependencies: + '@types/unist': 3.0.3 + unist-util-is: 6.0.0 + unist-util-visit-parents: 6.0.1 + + universalify@0.2.0: {} + + universalify@2.0.1: {} + + unpipe@1.0.0: {} + + unplugin@1.14.1: + dependencies: + acorn: 8.13.0 + webpack-virtual-modules: 0.6.2 + + update-browserslist-db@1.1.1(browserslist@4.24.0): + dependencies: + browserslist: 4.24.0 + escalade: 3.2.0 + picocolors: 1.1.1 + + uri-js@4.4.1: + dependencies: + punycode: 2.3.1 + + url-parse@1.5.10: + dependencies: + querystringify: 2.2.0 + requires-port: 1.0.0 + + use-callback-ref@1.3.2(@types/react@18.3.11)(react@18.3.1): + dependencies: + react: 18.3.1 + tslib: 2.8.0 + optionalDependencies: + '@types/react': 18.3.11 + + use-sidecar@1.1.2(@types/react@18.3.11)(react@18.3.1): + dependencies: + detect-node-es: 1.1.0 + react: 18.3.1 + tslib: 2.8.0 + optionalDependencies: + '@types/react': 18.3.11 + + util-deprecate@1.0.2: {} + + util@0.12.5: + dependencies: + inherits: 2.0.4 + is-arguments: 1.1.1 + is-generator-function: 1.0.10 + is-typed-array: 1.1.13 + which-typed-array: 1.1.15 + + utils-merge@1.0.1: {} + + uuid@9.0.1: {} + + validator@13.12.0: {} + + vary@1.1.2: {} + + vite@5.4.9(@types/node@22.7.6): + dependencies: + esbuild: 0.21.5 + postcss: 8.4.47 + rollup: 4.24.0 + optionalDependencies: + '@types/node': 22.7.6 + fsevents: 2.3.3 + + webpack-virtual-modules@0.6.2: {} + + which-boxed-primitive@1.0.2: + dependencies: + is-bigint: 1.0.4 + is-boolean-object: 1.1.2 + is-number-object: 1.0.7 + is-string: 1.0.7 + is-symbol: 1.0.4 + + which-builtin-type@1.1.4: + dependencies: + function.prototype.name: 1.1.6 + has-tostringtag: 1.0.2 + is-async-function: 2.0.0 + is-date-object: 1.0.5 + is-finalizationregistry: 1.0.2 + is-generator-function: 1.0.10 + is-regex: 1.1.4 + is-weakref: 1.0.2 + isarray: 2.0.5 + which-boxed-primitive: 1.0.2 + which-collection: 1.0.2 + which-typed-array: 1.1.15 + + which-collection@1.0.2: + dependencies: + is-map: 2.0.3 + is-set: 2.0.3 + is-weakmap: 2.0.2 + is-weakset: 2.0.3 + + which-typed-array@1.1.15: + dependencies: + available-typed-arrays: 1.0.7 + call-bind: 1.0.7 + for-each: 0.3.3 + gopd: 1.0.1 + has-tostringtag: 1.0.2 + + which@2.0.2: + dependencies: + isexe: 2.0.0 + + word-wrap@1.2.5: {} + + wrap-ansi@6.2.0: + dependencies: + ansi-styles: 4.3.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + + wrap-ansi@7.0.0: + dependencies: + ansi-styles: 4.3.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + + wrap-ansi@8.1.0: + dependencies: + ansi-styles: 6.2.1 + string-width: 5.1.2 + strip-ansi: 7.1.0 + + wrap-ansi@9.0.0: + dependencies: + ansi-styles: 6.2.1 + string-width: 7.2.0 + strip-ansi: 7.1.0 + + wrappy@1.0.2: {} + + ws@8.18.0: {} + + y18n@5.0.8: {} + + yallist@3.1.1: {} + + yaml@2.5.1: {} + + yaml@2.6.0: {} + + yargs-parser@21.1.1: {} + + yargs@17.7.2: + dependencies: + cliui: 8.0.1 + escalade: 3.2.0 + get-caller-file: 2.0.5 + require-directory: 2.1.1 + string-width: 4.2.3 + y18n: 5.0.8 + yargs-parser: 21.1.1 + + yocto-queue@0.1.0: {} + + yocto-queue@1.1.1: {} + + yoctocolors-cjs@2.1.2: {} + + zod@3.23.8: {} diff --git a/postcss.config.js b/postcss.config.js new file mode 100644 index 00000000..33ad091d --- /dev/null +++ b/postcss.config.js @@ -0,0 +1,6 @@ +module.exports = { + plugins: { + tailwindcss: {}, + autoprefixer: {}, + }, +} diff --git a/public/mockServiceWorker.js b/public/mockServiceWorker.js new file mode 100644 index 00000000..7402dafa --- /dev/null +++ b/public/mockServiceWorker.js @@ -0,0 +1,285 @@ +/* eslint-disable */ +/* tslint:disable */ + +/* +/** + * Mock Service Worker. + * @see https://github.com/mswjs/msw + * - Please do NOT modify this file. + * - Please do NOT serve this file on production. + */ + +const PACKAGE_VERSION = '2.4.11' +const INTEGRITY_CHECKSUM = '26357c79639bfa20d64c0efca2a87423' +const IS_MOCKED_RESPONSE = Symbol('isMockedResponse') +const activeClientIds = new Set() + +self.addEventListener('install', function () { + self.skipWaiting() +}) + +self.addEventListener('activate', function (event) { + event.waitUntil(self.clients.claim()) +}) + +self.addEventListener('message', async function (event) { + const clientId = event.source.id + + if (!clientId || !self.clients) { + return + } + + const client = await self.clients.get(clientId) + + if (!client) { + return + } + + const allClients = await self.clients.matchAll({ + type: 'window', + }) + + switch (event.data) { + case 'KEEPALIVE_REQUEST': { + sendToClient(client, { + type: 'KEEPALIVE_RESPONSE', + }) + break + } + + case 'INTEGRITY_CHECK_REQUEST': { + sendToClient(client, { + type: 'INTEGRITY_CHECK_RESPONSE', + payload: { + packageVersion: PACKAGE_VERSION, + checksum: INTEGRITY_CHECKSUM, + }, + }) + break + } + + case 'MOCK_ACTIVATE': { + activeClientIds.add(clientId) + + sendToClient(client, { + type: 'MOCKING_ENABLED', + payload: true, + }) + break + } + + case 'MOCK_DEACTIVATE': { + activeClientIds.delete(clientId) + break + } + + case 'CLIENT_CLOSED': { + activeClientIds.delete(clientId) + + const remainingClients = allClients.filter((client) => { + return client.id !== clientId + }) + + // Unregister itself when there are no more clients + if (remainingClients.length === 0) { + self.registration.unregister() + } + + break + } + } +}) + +self.addEventListener('fetch', function (event) { + const { request } = event + + // Bypass navigation requests. + if (request.mode === 'navigate') { + return + } + + // Opening the DevTools triggers the "only-if-cached" request + // that cannot be handled by the worker. Bypass such requests. + if (request.cache === 'only-if-cached' && request.mode !== 'same-origin') { + return + } + + // Bypass all requests when there are no active clients. + // Prevents the self-unregistered worked from handling requests + // after it's been deleted (still remains active until the next reload). + if (activeClientIds.size === 0) { + return + } + + // Generate unique request ID. + const requestId = crypto.randomUUID() + event.respondWith(handleRequest(event, requestId)) +}) + +async function handleRequest(event, requestId) { + const client = await resolveMainClient(event) + const response = await getResponse(event, client, requestId) + + // Send back the response clone for the "response:*" life-cycle events. + // Ensure MSW is active and ready to handle the message, otherwise + // this message will pend indefinitely. + if (client && activeClientIds.has(client.id)) { + ;(async function () { + const responseClone = response.clone() + + sendToClient( + client, + { + type: 'RESPONSE', + payload: { + requestId, + isMockedResponse: IS_MOCKED_RESPONSE in response, + type: responseClone.type, + status: responseClone.status, + statusText: responseClone.statusText, + body: responseClone.body, + headers: Object.fromEntries(responseClone.headers.entries()), + }, + }, + [responseClone.body], + ) + })() + } + + return response +} + +// Resolve the main client for the given event. +// Client that issues a request doesn't necessarily equal the client +// that registered the worker. It's with the latter the worker should +// communicate with during the response resolving phase. +async function resolveMainClient(event) { + const client = await self.clients.get(event.clientId) + + if (client?.frameType === 'top-level') { + return client + } + + const allClients = await self.clients.matchAll({ + type: 'window', + }) + + return allClients + .filter((client) => { + // Get only those clients that are currently visible. + return client.visibilityState === 'visible' + }) + .find((client) => { + // Find the client ID that's recorded in the + // set of clients that have registered the worker. + return activeClientIds.has(client.id) + }) +} + +async function getResponse(event, client, requestId) { + const { request } = event + + // Clone the request because it might've been already used + // (i.e. its body has been read and sent to the client). + const requestClone = request.clone() + + function passthrough() { + const headers = Object.fromEntries(requestClone.headers.entries()) + + // Remove internal MSW request header so the passthrough request + // complies with any potential CORS preflight checks on the server. + // Some servers forbid unknown request headers. + delete headers['x-msw-intention'] + + return fetch(requestClone, { headers }) + } + + // Bypass mocking when the client is not active. + if (!client) { + return passthrough() + } + + // Bypass initial page load requests (i.e. static assets). + // The absence of the immediate/parent client in the map of the active clients + // means that MSW hasn't dispatched the "MOCK_ACTIVATE" event yet + // and is not ready to handle requests. + if (!activeClientIds.has(client.id)) { + return passthrough() + } + + // Notify the client that a request has been intercepted. + const requestBuffer = await request.arrayBuffer() + const clientMessage = await sendToClient( + client, + { + type: 'REQUEST', + payload: { + id: requestId, + url: request.url, + mode: request.mode, + method: request.method, + headers: Object.fromEntries(request.headers.entries()), + cache: request.cache, + credentials: request.credentials, + destination: request.destination, + integrity: request.integrity, + redirect: request.redirect, + referrer: request.referrer, + referrerPolicy: request.referrerPolicy, + body: requestBuffer, + keepalive: request.keepalive, + }, + }, + [requestBuffer], + ) + + switch (clientMessage.type) { + case 'MOCK_RESPONSE': { + return respondWithMock(clientMessage.data) + } + + case 'PASSTHROUGH': { + return passthrough() + } + } + + return passthrough() +} + +function sendToClient(client, message, transferrables = []) { + return new Promise((resolve, reject) => { + const channel = new MessageChannel() + + channel.port1.onmessage = (event) => { + if (event.data && event.data.error) { + return reject(event.data.error) + } + + resolve(event.data) + } + + client.postMessage( + message, + [channel.port2].concat(transferrables.filter(Boolean)), + ) + }) +} + +async function respondWithMock(response) { + // Setting response status code to 0 is a no-op. + // However, when responding with a "Response.error()", the produced Response + // instance will have status code set to 0. Since it's not possible to create + // a Response instance with status code 0, handle that use-case separately. + if (response.status === 0) { + return Response.error() + } + + const mockedResponse = new Response(response.body, response) + + Reflect.defineProperty(mockedResponse, IS_MOCKED_RESPONSE, { + value: true, + enumerable: true, + }) + + return mockedResponse +} diff --git a/readme.md b/readme.md new file mode 100644 index 00000000..af96ff23 --- /dev/null +++ b/readme.md @@ -0,0 +1,112 @@ +# Instruções de Desenvolvimento Front-End [PT-BR] + +## Estrutura de Componentes + +Ao desenvolver componentes, siga estas diretrizes: + +### Convenções de Codificação + +1. Nomenclatura: + + - Utilize kebab-case para nomes de arquivos e pastas. + - Use PascalCase para nomes de componentes e interfaces/tipos. + - Use camelCase para nomes de funções, variáveis e propriedades. + - Dê sentido ao arquivo, por exemplo se for um caso de uso nomeie o final como `-use-case.ts` + - - **Exemplo:** `get-animals-use-case.ts` + - Implementações dentro da camada de `data` devem seguir o padrão de `remote-` + - - **Exemplo:** `remote-get-animals-use-case.ts` + +2. Declarações: + + - Declare funções de componentes e hooks usando `function` em vez de `const`. + - Utilize `type` para tipagem TypeScript em vez de `interface`. + +3. Extensões de arquivo: + + - `.tsx` para arquivos de componentes React. + - `.ts` para arquivos TypeScript puros. + - `.hook.ts` para arquivos de hooks personalizados. + - `.stories.tsx` para arquivos de Storybook. + +4. Boas práticas: + + - Mantenha funções pequenas e com uma única responsabilidade. + - Utilize nomes descritivos para funções, variáveis, propriedades e arquivos. + - Use bons e poucos comentários somente para explicar lógica complexa ou decisões de design não óbvias. + - Implemente tratamento de erros adequado, especialmente em operações assíncronas. + +5. Estilização: + + - Utilize TailwindCSS estilos de componentes. + - Mantenha a consistência com o design system do projeto. + +6. Performance: + + - Utilize `React.memo()` para componentes que não precisam re-renderizar frequentemente. + - Utilize `React.useMemo()` para evitar cálculos caros em cada renderização. + - Utilize `React.useCallback()` para evitar recriar funções em cada renderização. + - Implemente lazy loading para componentes grandes ou raramente usados. + +7. Acessibilidade: + - Siga as diretrizes WCAG para garantir que os componentes sejam acessíveis. + - Use atributos ARIA quando necessário. + +### Estrutura de Arquivos + +1. Crie uma pasta com o nome do componente em kebab-case (ex.: `nome-do-componente`). +2. Dentro da pasta, crie os seguintes arquivos: + - `nome-do-componente.tsx`: Contém o código do componente. + - `index.ts`: Exporta o componente (`export * from './nome-do-componente'`). + - `nome-do-componente.hook.ts`: Contém a lógica e regras de negócio associadas ao componente (model no MVVM). + - `nome-do-componente.stories.tsx`: Storybook stories para o componente, se aplicável. + +#### Exemplo de Estrutura + +```markdown +nome-do-componente/ +│ +├── nome-do-componente.tsx +├── index.ts +├── nome-do-componente.hook.ts +├── nome-do-componente.stories.tsx (opcional) +``` + +### Gerenciamento de Estado + +- Use Zustand para estado global quando apropriado. +- Use React Context para compartilhar estado entre vários componentes. + +### Documentação + +- Inclua JSDoc para funções e componentes importantes. (Ajustes futuros) +- Mantenha um README.md atualizado na raiz do projeto com instruções de instalação, execução e contribuição. + +### Controle de Versão + +- Faça commits frequentes, mensagens claras e descritivas. +- Utilize feature branches e pull requests para novas funcionalidades. +- Utilize a nomenclatura certa para o commit de acordo com o [guia de convenções de commit](https://www.conventionalcommits.org/en/v1.0.0/) + +### Testes (Futuro) + +- Escreva testes unitários para lógica de negócios. +- Implemente testes de integração para fluxos importantes do usuário. +- Mantenha uma cobertura de testes adequada. + +### Justificativa + +Esta estrutura e estas convenções visam: + +1. Manter a organização, legibilidade e consistência do código. +2. Facilitar a manutenção e colaboração no projeto. +3. Melhorar a performance e acessibilidade da aplicação. +4. Garantir a qualidade do código através de testes e boas práticas. +5. Promover a escalabilidade e sustentabilidade do projeto a longo prazo. + +### Recursos Adicionais + +- [Documentação do React](https://reactjs.org/docs/getting-started.html) +- [Documentação do TailwindCSS](https://tailwindcss.com/docs) +- [Documentação do Zustand](https://zustand.docs.pmnd.rs/getting-started/introduction) +- [Documentação do Storybook](https://storybook.js.org/docs) +- [JSDoc](https://jsdoc.app/) diff --git a/scripts/seed/data/animal-childbirths.mjs b/scripts/seed/data/animal-childbirths.mjs new file mode 100644 index 00000000..9ec6394e --- /dev/null +++ b/scripts/seed/data/animal-childbirths.mjs @@ -0,0 +1,23 @@ +import { faker } from '@faker-js/faker/locale/pt_BR' + +export const animalChildbirthsData = Array.from( + { + length: faker.number.int({ + min: 1, + max: 100, + }), + }, + (_, index) => ({ + id: index + 1, + breed: faker.animal.cow(), + gender: faker.helpers.arrayElement(['MALE', 'FEMALE']), + weight: faker.number + .float({ + min: 1, + max: 1000, + }) + .toFixed(2), + condition: faker.helpers.arrayElement(['ALIVE', 'DEAD']), + date: faker.date.past(), + }) +) diff --git a/scripts/seed/data/animal-deaths.mjs b/scripts/seed/data/animal-deaths.mjs new file mode 100644 index 00000000..cefabf15 --- /dev/null +++ b/scripts/seed/data/animal-deaths.mjs @@ -0,0 +1,15 @@ +import { faker } from '@faker-js/faker/locale/pt_BR' + +export const animalDeathsData = Array.from( + { + length: faker.number.int({ + min: 1, + max: 1, + }), + }, + (_, index) => ({ + id: index + 1, + date: faker.date.past(), + reason: faker.lorem.paragraph(1), + }) +) diff --git a/scripts/seed/data/animal-diseases.mjs b/scripts/seed/data/animal-diseases.mjs new file mode 100644 index 00000000..ffc525dd --- /dev/null +++ b/scripts/seed/data/animal-diseases.mjs @@ -0,0 +1,15 @@ +import { faker } from '@faker-js/faker/locale/pt_BR' + +export const animalDiseasesData = Array.from( + { + length: faker.number.int({ + min: 1, + max: 100, + }), + }, + (_, index) => ({ + id: index + 1, + diagnosticDate: faker.date.past(), + diagnostic: faker.lorem.paragraph(1), + }) +) diff --git a/scripts/seed/data/animal-heifer-calf-stages.mjs b/scripts/seed/data/animal-heifer-calf-stages.mjs new file mode 100644 index 00000000..b6787f1c --- /dev/null +++ b/scripts/seed/data/animal-heifer-calf-stages.mjs @@ -0,0 +1,42 @@ +import { faker } from '@faker-js/faker/locale/pt_BR' + +export const animalHeiferCalfStagesData = Array.from( + { + length: faker.number.int({ + min: 1, + max: 100, + }), + }, + (_, index) => { + const years = faker.number.int({ + min: 0, + max: 6, + }) + + const months = faker.number.int({ + min: 1, + max: 12, + }) + + const age = + years === 0 ? `${months} meses` : `${years} anos e ${months} meses` + + return { + id: index + 1, + weighingDate: faker.date.past(), + weight: faker.number + .float({ + min: 1, + max: 1000, + }) + .toFixed(2), + ecc: faker.number + .float({ + min: 1, + max: 10, + }) + .toFixed(2), + age, + } + } +) diff --git a/scripts/seed/data/animal-pregnancy-diagnoses.mjs b/scripts/seed/data/animal-pregnancy-diagnoses.mjs new file mode 100644 index 00000000..8bf87ee8 --- /dev/null +++ b/scripts/seed/data/animal-pregnancy-diagnoses.mjs @@ -0,0 +1,15 @@ +import { faker } from '@faker-js/faker/locale/pt_BR' + +export const animalPregnancyDiagnosesData = Array.from( + { + length: faker.number.int({ + min: 1, + max: 100, + }), + }, + (_, index) => ({ + id: index + 1, + date: faker.date.past(), + lastInseminationDate: faker.date.past(), + }) +) diff --git a/scripts/seed/data/animals.mjs b/scripts/seed/data/animals.mjs new file mode 100644 index 00000000..4ec7680f --- /dev/null +++ b/scripts/seed/data/animals.mjs @@ -0,0 +1,15 @@ +import { faker } from '@faker-js/faker/locale/pt_BR' + +export const animalsData = Array.from( + { + length: faker.number.int({ + min: 1, + max: 100, + }), + }, + (_, index) => ({ + id: index + 1, + name: faker.lorem.word(), + breed: faker.animal.cow(), + }) +) diff --git a/scripts/seed/data/breeds.mjs b/scripts/seed/data/breeds.mjs new file mode 100644 index 00000000..a7d3be1c --- /dev/null +++ b/scripts/seed/data/breeds.mjs @@ -0,0 +1,14 @@ +import { faker } from '@faker-js/faker/locale/pt_BR' + +export const allBreedsData = Array.from( + { + length: faker.number.int({ + min: 50, + max: 150, + }), + }, + (_, index) => ({ + id: index + 1, + breedName: faker.animal.cow(), + }) +) diff --git a/scripts/seed/data/forages.mjs b/scripts/seed/data/forages.mjs new file mode 100644 index 00000000..07895f4c --- /dev/null +++ b/scripts/seed/data/forages.mjs @@ -0,0 +1,39 @@ +import { faker } from '@faker-js/faker/locale/pt_BR' + +export const foragesData = Array.from( + { + length: faker.number.int({ + min: 1, + max: 100, + }), + }, + (_, index) => ({ + id: index + 1, + cultivation: faker.food.vegetable(), + area: String( + faker.number.float({ + min: 1, + max: 1000, + }) + ), + averageCost: String( + faker.number.float({ + min: 1, + max: 1000, + }) + ), + usefulLife: String( + faker.number.int({ + min: 1, + max: 100, + }) + ), + formation: faker.date.past(), + ownershipType: faker.helpers.arrayElement(['LEASED_LAND', 'OWNED_LAND']), + growthCycle: faker.helpers.arrayElement(['ANNUAL', 'PERENNIAL']), + observation: faker.lorem.sentence({ + min: 10, + max: 20, + }), + }) +) diff --git a/scripts/seed/data/improvements.mjs b/scripts/seed/data/improvements.mjs new file mode 100644 index 00000000..e20993b5 --- /dev/null +++ b/scripts/seed/data/improvements.mjs @@ -0,0 +1,33 @@ +import { faker } from '@faker-js/faker/locale/pt_BR' + +export const improvementsData = Array.from( + { + length: faker.number.int({ + min: 1, + max: 100, + }), + }, + (_, index) => ({ + id: index + 1, + description: faker.lorem.words(5), + amount: faker.number.int(), + unitPrice: faker.number.float({ + fractionDigits: 2, + }), + percentDairyCattle: faker.number.float({ + min: 1, + max: 100, + fractionDigits: 2, + }), + usefulLife: faker.number.int({ + min: 1, + max: 100, + }), + acquisitionDate: faker.date.past(), + moneyDairyCattle: faker.number.float({ + min: 1, + max: 1000, + fractionDigits: 2, + }), + }) +) diff --git a/scripts/seed/data/index.mjs b/scripts/seed/data/index.mjs new file mode 100644 index 00000000..4a93a5c6 --- /dev/null +++ b/scripts/seed/data/index.mjs @@ -0,0 +1,13 @@ +export * from './forages.mjs' +export * from './improvements.mjs' +export * from './machines.mjs' +export * from './properties.mjs' +export * from './users.mjs' +export * from './vegetables.mjs' +export * from './breeds.mjs' +export * from './animals.mjs' +export * from './animal-childbirths.mjs' +export * from './animal-heifer-calf-stages.mjs' +export * from './animal-diseases.mjs' +export * from './animal-pregnancy-diagnoses.mjs' +export * from './animal-deaths.mjs' diff --git a/scripts/seed/data/machines.mjs b/scripts/seed/data/machines.mjs new file mode 100644 index 00000000..2d261cd3 --- /dev/null +++ b/scripts/seed/data/machines.mjs @@ -0,0 +1,33 @@ +import { faker } from '@faker-js/faker/locale/pt_BR' + +export const machinesData = Array.from( + { + length: faker.number.int({ + min: 1, + max: 100, + }), + }, + (_, index) => ({ + id: index + 1, + name: faker.lorem.words(5), + amount: faker.number.int(), + unitPrice: faker.number.float({ + fractionDigits: 2, + }), + percentDairyCattle: faker.number.float({ + min: 1, + max: 100, + fractionDigits: 2, + }), + usefulLife: faker.number.int({ + min: 1, + max: 100, + }), + acquisitionDate: faker.date.past(), + moneyDairyCattle: faker.number.float({ + min: 1, + max: 1000, + fractionDigits: 2, + }), + }) +) diff --git a/scripts/seed/data/properties.mjs b/scripts/seed/data/properties.mjs new file mode 100644 index 00000000..900f8dfb --- /dev/null +++ b/scripts/seed/data/properties.mjs @@ -0,0 +1,17 @@ +import { faker } from '@faker-js/faker/locale/pt_BR' + +export const propertiesData = Array.from( + { + length: faker.number.int({ + min: 20, + max: 100, + }), + }, + (_, index) => ({ + id: index + 1, + name: faker.company.name(), + user: { + displayName: faker.person.fullName(), + }, + }) +) diff --git a/scripts/seed/data/users.mjs b/scripts/seed/data/users.mjs new file mode 100644 index 00000000..54e5a951 --- /dev/null +++ b/scripts/seed/data/users.mjs @@ -0,0 +1,14 @@ +import { faker } from '@faker-js/faker/locale/pt_BR' + +export const allUsersData = Array.from( + { + length: faker.number.int({ + min: 50, + max: 150, + }), + }, + (_, index) => ({ + id: index + 1, + displayName: faker.person.fullName(), + }) +) diff --git a/scripts/seed/data/vegetables.mjs b/scripts/seed/data/vegetables.mjs new file mode 100644 index 00000000..0d96033e --- /dev/null +++ b/scripts/seed/data/vegetables.mjs @@ -0,0 +1,14 @@ +import { faker } from '@faker-js/faker/locale/pt_BR' + +export const allVegetablesData = Array.from( + { + length: faker.number.int({ + min: 50, + max: 150, + }), + }, + (_, index) => ({ + id: index + 1, + cultureName: faker.food.vegetable(), + }) +) diff --git a/scripts/seed/index.mjs b/scripts/seed/index.mjs new file mode 100644 index 00000000..63ce253d --- /dev/null +++ b/scripts/seed/index.mjs @@ -0,0 +1,23 @@ +import fs from 'fs' + +import * as DataModules from './data/index.mjs' + +const dir = './database' + +const convertAndWriteJSON = (data, fileName) => { + const jsonData = JSON.stringify(data, null, 2) + + if (!fs.existsSync(dir)) { + fs.mkdirSync(dir, { recursive: true }) + } + + const jsonFilePath = `${dir}/${fileName}.json` + fs.writeFileSync(jsonFilePath, jsonData) + console.info(`Dados gerados ${jsonFilePath}\n`) +} + +for (const [key, data] of Object.entries(DataModules)) { + if (Array.isArray(data)) { + convertAndWriteJSON(data, key) + } +} diff --git a/src/App.tsx b/src/App.tsx new file mode 100644 index 00000000..3290a13d --- /dev/null +++ b/src/App.tsx @@ -0,0 +1,14 @@ +import { Toaster } from 'react-hot-toast' + +import './core/styles/globals.css' + +import { Router } from './core/main/routes' + +export function App() { + return ( + <> + + + + ) +} diff --git a/src/app/assets/imgs/index.ts b/src/app/assets/imgs/index.ts new file mode 100644 index 00000000..9f9fb4c5 --- /dev/null +++ b/src/app/assets/imgs/index.ts @@ -0,0 +1,3 @@ +export { default as LogoIdr } from './logo-idr.png' +export { default as LogoParana } from './logo-parana.png' +export { default as LogoIdrJustBrand } from './logo-idr-just-brand.png' diff --git a/src/app/assets/imgs/logo-idr-just-brand.png b/src/app/assets/imgs/logo-idr-just-brand.png new file mode 100644 index 0000000000000000000000000000000000000000..c3c2b25e247b9ce36c94ff3b01769d630f237969 GIT binary patch literal 3493 zcmV;W4O;SvP)9Ya%@F+p{R?f9EyyN4l{_(uFB4=i@1a6>cXyz z>w(l`00%*?L5f8RSS(jhXrWggy_>X6nx;+i@{axfFKMj|F0!_>1y zy999axYRH}ltT>(nn;KXj<9Zj?_=xO@5W6dyDE*^uj>1a`1Y*T1a%gAu8*9W=KM1 zo7EJ5vFF;{_p6V^wph#w#@-H4x)o3`b)E@H7mXW`J@s9ATaP#9IY9xmfOd=kBvnfq z5Js;(3c@o1ia!^=DY@2JFgfDtjLzXkmCirDeU095N~Q?tyJ7E(In;DIZ|lX~g?;W} zZNI|_Lv9xUni=KB73~~+Tz*(T!o#=#DZbKeXs~cvR5Jphz2+p0niVB_<`IB21=77p z0HU^<%q%Ds8OlYIr?r-K*45XT8djbgXo9Li69|F~2Jrxv0+GXY5QIpS%Hg+2ro6sx z?zjT64>%003%OGuB|!j>gLuqIGBeTRjI{Jv^lFM+^OEV6Hh21#b)QLQ1bcG7iv}|* z0PCc{!P6k%q2zELM}eEgPhBif2m~kvIGjTXs9_ofD2xk`K9d<_f?ARkczr_jGE0px zP9_Q?Km_ST0sxt3vN|BeU&l-dOalkYmj(ny^rS>iX7&EjLI@oIDp2C50&pm#Ud{%W zm^vuCR;N!<2F`8g?7zZAOXXc%#yltIC}jGsmiX)B_M{ktHHeC@x)UH8g%U*G!#GA+ zWRRD9z++k7NJTW{K_UT?%!|MiD9De_yZlnYx@i(jQIvOgccXuOucW4s3;|ylaD}esMaw{$TEJf5hVI)T(_|)+k*9Y+OStWRj1NKoz=4emKT&f|!7cLn;C6?J zBBkcXFiy_I1cjTPp>GUDM@QeS)9LDdG$D3cYp1mi)~~PbzPy4NY({Y^A;c$^PYuh4 z2w$zN-Bi^fTN)Yhi$(1Kz z%6TU|F+c9iUsvVM9T+er4GlpQEf*$pEVlw#$ly3GWMTIC* z+xz=9LVc?(c3&9-7P|;4r5a671Ri6jD7xX-Q*^LyQTmgqI(caccn33O%9KPBwSIDmQe!R8IonwF_1V62LBmA8C~fo`$PCJY2h;Dp zY&O^Re%JF|L7TH1>}WQ;+Xwt12vWoDYF>~~s4FS!|D>|^#;V#*x7O-#LvFmfXUm$| zXChQWD#y`g5ZI|AC9C5&XDvm^-b2QXX#1n}6b67Wo6WY->2xkZGt*0nm8O}jtgLu| zJFK-T`YYn2#T(}*WuF-y>WM3DE6Z!+`@x08oU9B~ z@&JfaMcGn<)63EoIp@1>So8%m(=G*pa{-Ds0;5qT@Pb<41)3*5B}o3jAhQgb*J-(2 zeh@)Pk<@53Y7yi#e7-~`lg&v@O*Pyxkdg6r#rw<8nX30NtO;1uj+2;+pnx!+FjyA1 z;6#!}bF8APa@%23875^BSWb?hu!_aB73-&WuF%gdUzjlc+2BD;iK4h(aC1+iafs;b zXe2yvqHwb>Sn*t?P$*8L7PgIOieZ>YyuEKRI^QH){d;>6jX#n=Uo z1^NYKyO8HOe;|Sx6RE}?_{@bGI*jjkWM*cTj_~ud%J>hje^Gd#rF>V7y;VCz(^BSj zVr?X{JY=b3ts7@Q_F|v8nfs!>a_42c5nTA*C3?yZ5hWiis9=URiCLYMzhRkv)={Rb zeF3oi7J=st1jNlzY6KV=2nI4TGN^F@LdL1V`n;D;Z=rpQ7GjL zujf8~_@3C5{hPnr^QS$n<%yikQ#_K4PVu6YUm|!vSZ`Qza@n*wYvZXPv>0X``oSv* zBxEE3ia(521V||Y$sf7@+0BQ1OBvV0EkEZ0mtM>_!n4&pS zI8u^UNN%XJcff(VvX2aUy>|Vq2RGg0ueZ{~PcYKa1Uv!56BFX$l(`XJIllW}B`sIy zkhRm&()O!W>L<`ItQdZWu?l$SX8PmWpqr_W+c7sRjgfQStq0j>A%jFa&X ziS@ICl8P22Oy8v8<=%4NV_M$*m<0ZU^@eWyxi9yfvQ$c)#gvqkgMop81*nau!^6Xy zClp8m72dNVWB&F)LFuu5bZ9y2*>lit05?Xgy$$D|tFd)2SvhM#(VEo!QaS4ZEN#RH z7@m^86>xV}+*%#}O+{U$QM5>4CQX`jAw50)vs=-Y!8ngM-+Y~EF`HIiwY2$*(oT>X z-Cz;53=G?W8+Jw9lRW$LFkkg`V|Pbk>rlT6yn#UyfHwq@&zRmWE$8O1oh{m5{h#QL zd+#@l^6#D-lX_f+dw5Sf$g|b;V8L<)#b43hnAhCake45sRys8{t%!8sWReDXDN2ks zEAZFmutGye>$cm`oscH>oRsMYqp(mU(TE}mh44qrMv$xxs`}fYw(a^7GI!m~#ouJ< z^irN6{EvX3z@rggG|MRw`k~v=oDd)>K0ya(C*0*tdR|W_I|i?bvAD6XFd6g6+yqs? zkwud-t7zWC{%G363k|kgpUEyb`Aq)9zrG#K3Hw_iJv_0KVn-Sf)b}kQB5J(2&~`nf zjvbgu=7wr@MH*4zdFg3-L99Xp8*-N(nU^zdt&XDVZbxszfDF4_A4nk;vp2f5y z5|gty?fys0OHx6?#T_z4#Y^oWGViW{Nb9QwtG2(Iw|w!UF&+2+36NOdU{X4I%!`82 zLt-2O4RS6Run**s`$uLj7>?CN_bD+H&ks(%x?$e3Cst?XKX(V@CgzVGGPJY`d{Iue zG0!{=JA^@za-0Vn>xd)IBPfmOty8-{{q6GSbAOjSYsN`<9qx2Y7?5Es3f-jarafIo zq7904Q>6YW-e9d|9deA$eVuXl%W~57T7x;p*aL#dQ z{cle0fVa;d13v^HhqJ-gl9GiJ{Y|hiDPM$$L?j{~Ng@FE8Ifvtw|Ks{MR@1JQFx=~ zAhdf1!DuxDFZ0mial_$`MkvcIeY`8+?npPL?j{~Nj^6KH>fBHet-gmgzq%>`_}KQ zxCH;}x$V$6;D!;!2m#&f^e5X@u*wLlP%Y62g?$0H-m1@Jn3xU*A+Z{BnteDl@^q*7D72oZ@$M6N0~ zJizrTO4+&A5#eBU$GWYjF2VUx1coR($i^rHE*=2Ei&K1fqd}(bDahs&P+1Vi5lbSF z1K>H_Rt`eYJpySaAKX1X0lv7T01C5`r9#Umqq?4OREn1dI)v@DhvCRTJvh)k>ft%? z%5-WT0an3xyv`tgLE0&T8jtS^;WOIeV8jip@@B#6nG2;KE`30Rh(shJSCt!DMQv9U z@km{#uxU>X?C?LLhVD7CeJ+1^=lZIQ9t{!Y zH)L!w{eg_lC>v3I#;d_Uy>1_PNAX_#gm?yMXl(^~zy%SBNJKtdZdeA_>{rB-jUB=- zc2>giZa?tRcEJBLRS)RJZcPU^9zXHg-69=AHpdZdL!eU-G(f=@s)o$i#WAACm>u|C zV3FPM?OO`rv8DM^@il^6x4%>D^7IJr)$W6RjVGa(cflx5DZ>b2PT2t7fD!!2(qsfT zVw3EjTLIgs0%=|&OhLfTNyvc0DY;OPodf7%fW(-1snnKsP1g~Th(kTrRSAr;x+H*TH^_bx7!=Ed8@54*lWrMIkYv`47yJhyI7 z!#=2Y_Q0sg1Vi}SD6%#;GB!7QM7%z|uPsejmw{=t zU^JV-fuQu}nGVQ`G71etPAH6z7O!+|&E9J9bX$e6x8W$9cV2{kZWLTL9y|eZAXtI- z@!)fM!Q*nV>zk354-YI^0xQx>A|@=z$$2mG#dD7i^(XZCfT=!?yJ3B+jqS8P-9~gWTmG= z|KK3}?v>xe&Ye48-n=zP317 zN;YvHgkP6a>3X7Ns8QI}usic~R}G9JP@txXtW9R`P9HM25d;s90SaTY;O1#%_*w`> z_9@j?KrrDfTPNOYr=mQGZ^AG_WTUGcs#@!yrl|p{ni^p?vb+aoFWb1hu<*J;uC=pQ z+;`xh@aEg^!qCVlHX#pw)R~K?7Ql?+Vrj$QKQ7XC?Y+I?{)6Sh8*jY>gM-72;VRhX z9H+La3UVq2(J_qZIEl7dATuK!=Fgi0c{w@Ks^v??k8(}l|It%oYipa()7y`ei-j2! z7?4fqsp_*+0mfuBKunYk3JdaK)ykDngl$roogu=%U`60A0x25^f0 zhUb^ZKn`!*j0`<4CI)h|GvVfCOQEQ!P%0^mWSx9kvTfI1@yN*v;aJ5PFd+#E`u)gB z6!^lu_rUFI)=IepoW}0~g{uBbZ zI`obnu0JFkYT5%$zBU*!19*ZKWNFAi+y+QgEHE!N1Bz!&hmyQfn4VY&c0O9l;7p=^ zj84TX2IZjOLLeRSIHAKe0Kctx1Ip{G;6z(J^bPf?Y}8@_dTh>sAC~3Lc)}fs?!+&y zi#6~@bYz$eV2gM-SGj;Dk%|m?mH~ZEG?0;Qm)R1uiQA;HU=Y@ELJdC zqtt$)nL!w^ljsvDIjOKg`iGs+efk{i-G2x{wm^7y*Ir@P%;`ATJ|5UcWV|$Yc8c%s z-Y-<2zkrjQ2|R8OB-`WROJBGTmMvQ>WhIS0^BW4_4xhOM`;fWSIZZgw&8))*aiDX= z!U(@fwbX_I13SK#=uf~-wJAaITPp$`Z6l-Mb7Pu_fFThkyfF$-d?F&nL*gcuhk z)%SY_g?2~pig&9I!Uab&oat+Xv;ED`=b}w$5F3HB;XsSBtAvtNH&k~o4EMlsM~iJ9 z4BOzkMP_XjK#&N?s(sQ=G0+OxCHc@+1_i2JBO}!~0hIa~xT(Jx*`yFu9W)%rz=&h> zD6%_)3CuATNQ;TbXB32kC(c3D#iq6p-@XL*-gUcBUDp7mMTH_n=(32|y(4%~hF+VWLPmq^J;_Hmlk4FhmZZnwDgP`z-fxfcRl435H}s+y_> zA=N}9%Npwf&V*^!A0szmAjZo_Fx}QM>E*Jwct)nVR81O;p3w1-?D;pApWkMJX zQBc*~30n@FhN-+$m;+_`3n48!SxSKTjkK3Dplqo3cPq^!o$$MJ zZ^4mwe=#y#=l-0|m5k-tCATu_@SgGzfL9lJ^>xF~o zPQoW4+(+Do*IJdbEi6VOB*w*q)nY`}7gW>A@H*Wd1Z$TUnOgt>$jI0gbMFw#ijIY| zl~t5)D{SAr8}44cTD+00~Xiv|x@?Mqe%}CG8W@IDyBUfT7r?aC>5!R} zU!D|~DFwjN==BW>&907t=HU)hIqTtY=LI-9)DC?C55%BdCpG~GEZER70pMn-S#%F7 z15hY-MGmO3$ZVvlSH)B@vNMvl9VELK2Mvy1=p7t|Pg`V}OE8eLH(MNk#<8i1T0SKy5gxefPWRF!i^x{mXyBBWQH?FYp9%s2zt!PztT=W0 zH0<27AHA@BXuGqJXB7bv&r{zBeZ75f?ZT@s#-Pc}sIu1Oix$Ftci-8Ol$iK3&&wZh z0VM$^zDEZfj&+rl=V9-GLr~w+hL!~rf<6JX0hx9mEG(NNG_|%ue)ibClE>KV_X$n} zM=!Fy0D>XeLFwA9Xa|jpjdfdXRw*Mf@rpLq>e@Qy-PVcm8beM%YAWkB@`Ig!nD- z2?=PEwKu|t2&$tZIuZo0#|>_;AG~;-G#)KD;lxH;$rdLSUe=Fp5P+*3QN-u>RSUZt z2Z6K10(+RKg76%vpGIa*;~1g^$M2|&0Un!-H3p}uu^P9V2yP0D?W2qV93L8V3V3A; z*iAEGb#V#I$w}L0H^O=Jbl!7usD9VQjwYz@YJ|ptR%k;Y975F<9j6c*#Q}CZ^!h5` z^as$Wk7^Y2(x%YY!q1=WxUX8*#^iuPjHM(il4dVraO7q5TB>GG;_wL<4*uG;Y;5k{d`4K2fOG;q&oLO-2$T9KFx3&qp%MU?g zM<-0p$${C$)70m3GU*C)L2o0p)W8Ew7;gMjUangnV{I0J(+?)0^)I<%f?#58gj> zPT@AhfTv`ntiNr|>h))9>!dlwMVB47wy8<%?CKHDovVVM|MEHL?Cya<^!9rwt4Esv zjo7|%X#U8Xk|}I{b*nHXD^ps1)AG=otD9g~Q^J{E7|3yB`-Q$^+sGmNoGhbTT0wV#As!s=k##3qkFKj|K84PY z4j43e!G|^=pUnhLGtP#%s}J|}vix}-eE9OCa5z zuth}!A*R(D4b{l-3JVK`=FVQo%~0)AeDLx!QywuVU;RAEcKZiA_8(j^wX0{vVf3b2 zEGG7>JYFvhqjz(3*aO!iWcws9I*CD_B(HKU>+ZS>w(a@=>e@TNh7JdMcI0&)^}3;F zZ~)%k_O`ec2mFb%)sU8wu7=zo@YA-6W=|$iBy&XXunTq_I10P=9o*2{@7U1X-7n>) zjWMZ!qS$bMdV!3#N7h%2_>54?Nlnib4xc;)d-s)tf-EO0Dh4dJXfRr1VE>^L;=X+c zgaZgVMtmNMksL!tutvqHT8qZSXdDc=JaDAqG#oyD9PYYpjc~TQ7Uq@oQ=o);ePd;eiRtDleP~`LVSa`X$Z367_aTM@ z9c8Zah&&X2da=C=Uff>?G4VA>>6<~p0p*J^A#lmy!U4hZOsPy0c_n3h_yla|AtdJJ zlT{xH0TpN=EYuT$NWM{nyWP5_tS)0CjX71*Mq3KUKW zh1}@sko+OQLvmBu9Px#hx5A9+(}f!JC|XecqFYC`7aE%y(GdUcggwSH@39oSt4m^H zA{w1-s;V!mjsap{^x5O{!LLPnWz1-OPYKz7f%OT-_H@5GF2k%}j-Vgvs^x5U{FcxNDs4cV9EC{i(V3-*g z#;KO!hBqaA%!F+-&cM#TmdAml{{yKcJ`?IwPx zyL5>SO0uCEky()1R)Gxf>Y}om50e4xCr+1J-NV4EtQ+4D7$7Dp3a&-SPGsQt5SynL zv1X1y=_=PU=ong;mzlAy>imUJO+RMC!~M)gE2JkSz4+vhpUKS5$`l$~+L>d*>-VZ& zX;2v0knJ!&E)L8%5l|QosmW9_tNQ$TeCA^<&uexm5Q9gi(vn?m_j{h5guSu|ga=rHp0+%K@hegvY)-JUWbO z^>hK%S-5@Wn0lF)mj|uwoowKaqS;{(RcLbPXitTC)k!^##%D|IOKoSuXMMK13i7As z39XKy8-u~QhlfE%+JjvL*^JD*r>ZJyRA(H0c2~wQEgZD8;vtvY+u(8)m8oEQPHLF2 zuB5RS3f~AKJ|TvIXVi}m)Q@&G%4XofL-rHY8j?+Mkd%@N39+dV9~}qDv5Am^uLN5> zIvS!Oidp2$2yP}7*tCbHXmcmcsFZ@{QM~Ag@W7DQ2^|A{(Ad?EDrqxRv^T@0&UP5~ z^g#Z+^bJFS(LuNd@6z>(680{C6xXXJu@=KdpW9{6&CJ-)*44xI=W(VdyU*;B>8sI( zR!(ZBy0zx11&t*VOZf=rcFe zITqa59>*#wVE6t5fNCjA6(rV0wyoaYUSvqq9_s1uuTD)$+8SyrPF2~Mxfbu&gJi&< znGs~1R7OWfp`)W6tauCg>8Wh51@q@adsio`9{tGucf+h%vmiY^ov~}L*9SGVb@1l) z_n@hz6{4e~naUg;69;Xb-7s(N9045%kezaQ*b9pl)cT`t8GTf3|O*g5ftR+pyMNk zOB90FG!HFlGZn6FM5w`E*!hPlNPWBP7SALSkGZzLFu{mQZcw zZBi;1wUw9^!XUo9j*pu+8ZJ%Bh=_)1p{=zI;*c2_10Sx!UAJ(Y8`S_ewv$Z_%hAJe zXas#Yvmzk_`SY9qFc=dP&1QRIaO7~H>dLWkaVz@!hsI@xguLM_T!(|Q`SX9!Jv^MD zm`u;4+icA1*6VbZ(fi=Q;5ziy3U9spXK;GFEX9jdm;m;h!h&2Vo|+FYZ+cEVeXdeC zb+(cLMv&#Y8q_mUTphBOl;k7=8tKt5Jt#7OW8PDa*+?nYk2mlt&|QJS9XWkgJb37+ za1qrc77GZflOh^fMv^^&+JJ3$)55ZiOBOEK76jgrZnsV9LHxxFzY%L{FA5hMn$U}B zW5?=3wmaf)zLO< z^;18567F2PT5Rv`X8UBNO4Z;-qlm^f_j`V-p673!Nl=j)8IK&q$1WrlGan zcFW3}pfEdY(rfG-9)0q?_jUUcLrzj zm}!PFD{a8(97s_hWOEy1Xv#QN#)WoJ#*;P8DG^dKy^KcCm4ka!o3cY7M z0~3xnYfd5pB2?>jfYv;=`c)CY^$qmHpWc4Q_QCEwPw<@KiElkAGLkL*-=BgTS;8e` z86(b70?H8MVUr#nr+8X1+ymwh829G@&dh zn+Ho4E|BhCJ9(_(m4Ho`dGlv(IbU6!pOv1rzN>ctSs4XUTiDtrZFrx$$Y?@QSURK3 zUIAoNak0_l9hM#s12>Wd^Jjv`J&J6u75auo)G=&O?WFV!Cd!q7O_z+gm}hn!I%bB0m?r(@O_2x{7A=zDJ5hH8u*M{#!w#|)k^ z$l{VsR)~R5kvaXvBrFhm65$oa;q&<%A$$MW|E@_~E*Depc@0?9&W$!Aw8@zD+}EI* zf~6KaP`C0UbLj5rg-&D+0a?*3Ph)N)${8hgqn|6!cD|_seF_gxRGtuLy1=eSL##n%mlhmgZ(; z(EVt?bg>W~o7I9gz*wj`br!O-roj2y1}zs?_3l#TX?m8r7-WKPjNM2?t*t@)7@{i(;M5D)uyjf}Dotg-C zWA-i{RHuQKBA_X|YG5a?fm=`wR8T8hQ1%2GYLl(#4)@60qD;nZlU?)R;9vr(NTfoo zK~Tn*G6T_;BAf# zZU%-%)r-b!W(wLi0IH{wT~p^oPF9>^#(5)w1Es=I)(Pb%lYyC<4X=%W zn*keT)qrXn4u9+v+7#qe#{qNs;We7ACY*HQCOtQSIQ3^W&)C3nn-%?j!lbgUNj!G) zltgEm);hV?CB71i3gi0ijeeE2fe8UQy{Tv5F37w-57;xaC%&t zqK7PiI+KE$lc;Dxzg(!guWrUygU@s)Gt2eV<`3N)rO&=9@CCJ)Ag%m4{e+Y}4tyeUzbRu+OwnyjWZ?HJ49GZ6%|Dg3WOv?ZP`!Bg z+%q%MVAb+{2)AgI2&nJq|PGE9$dS?RkEPM|J$32OmI?nJX<{ICdT1{h=tnzU^J1e`px( zeW_{~Bo0yvj-@OD>U$=q3 z8#iqh_w7F<)HXCQFtm^gj_05-7C(+JI-C(fjcj>53%Lm}a3`i5qWZi%=~ayX=IRo% zj4R;=Csit{YsEL-eNXuFu07}_MOJH1Vx|QGfAYwxsyNTQwnmdtwd)$xz?t-T2@UI0AT>5usOs4*B*tdqOcNs| znX*NvyXy&$-z&I0&P-}Jli5c4yOegF(e`;$qTDelHg~|vp^@7MMppJB0D7q&7XOQA z%~QIQqLn=Ym1(I#qST0n5JOQo-Ro*(VHsqFky-wrHVcEA3(A6onL%8Syj57E+Hjl9 zXd@)W8Z-R{ej~aZ{v8bu1qi%raL^TC`zB~b(yh4Xq~La$3av?ah6Sslp&7LGzr){k zCStSMR`>Pwl_w`Be*o7g;har@$raBa&lOmsqY7lk7SzF{+B#*8>3q1n_x>I@f8inn z8H>Thz=5Lf)AMp*0Wyu>{l~wt?f9Uq8LC6wpE)C7Zntig3dr;jKPszFbbJPRJ0BL`6*yPrxpts zv)|IAaJgMDgy2L2&B#`4P0qDp9nGW253Kzkvn$c~{QsHty&i}j7@(e$$5SsK79OX6X&m_WTd z5qR4W5YjYn=|nkrqC(uhYmacDz8+%GPDY^VaeEmklun-pWpidiOmqy|+1${Cp2!Pz zbuc*W)WB8;^~*&!^LzwcQ?~~_aDH;@ukhoi5pV-641`L05wRIYZ*V4hdRHu52^r~W zjCppTqof-9RU4|WvaEV#WsSa2%G-xdzX`T%WORMy_PAtWTK4=EJ%g8^uJsJG^j(Ce zo(s_6IFB8~jPA8~NU~)Jhgx0}2Dmn~o27s$Djpo8!*Hpy9(wxQg+K0lPKb>|+f`}; zvcV*XvnC;!#%(i!O)_&SS2Vh2aNILbyjE$OpB5`rwhjVsiNjm4vc_gCC!}Wb%=oPr z9H;3~c{ns4I#fE6B^hV zsVVT_x;tP|*<8tBwpG*jZ@lw%>B%!^g$oz!5&Ytq`V_!HaP-JgxKvwr*)^ov?N>}E zyOQuM=1nb(%4xOd$hNg)!2$$BGXp`E(u7V0dqN@$vp|59vJx&|(y_I(Tim;Uzu*`g zz-^+yPsVsWUO{#i+_G%Rwma{>LrRGrt4Q4Cb{A~f{F-pQ;`I8y{sE?%0mn`Ld_u-i z*08F|X0}dxPn&=LDzoWDMcJ6`ifmQM2?^+BE#30OUw`?sywHv4&8=%_5-v10<3wXt zs~KO`P?{Gv9Y_MXIIBKw)F$IuZ25Suad$u zDf&j;Yr1=Tg?D!BT(M{WVaA|&US--ci!J>KV&fPyVC+Cqx(YIra)pk;mi5(bXQ6el z4m{idcnn?8>gs^Ts#7=%M?*?{E)?d@guK+LP&5rc^BD+sebCa{1m~*Hp{g*5y1fzN z;_d5_5>nTl>UW~jCDgf6&H&j-20T+umVTdLJ0WcpJ zuTgX@qk+?CuWHiL(mM2_iR{al}treRU5XbO_)p;{XZF_<3dJT?uu;h!`R@5i_93A%qinJ z0XLq4%Xf7f-0nk%!~+Ko3P+Duur#fprsoqonl)n@q$k^7 z*K%3aD^igY^ukq)v0{fkefpeq-)-Xz=3D>zd*8!}GF})Oav{583D?k$GkKCdPIzVO zoA8x~KgQCEydGW2g$k*fPzB1%%7W=dh0?r|BJmoI1_OP4;6R}AxP6R;DT-PVr)XLc zl$Fgt6%KAB6bkdBr+?8z0k_nb7*kdhtrFfu(M&8_pTF9~Lt!UIG7%snBj*jpyrCKm z_uq3@(_~5SR}P>ZVT#opuK2q5@G zle*`EW=}QLRh?x805cNvU|Py-$cdi{^NMciSW;|;{-N&7OTE=_$#E9WbQ}j?vkPp- z7>Ku~;YH_^CdKFe@l@9yiYddF-EB1b&&RHvUcIa+p|rYr0QS`n!TGKcw1)w?ahMm* zYU0^?F=VnJ!zHKSgH%+5HY4EJ|Efqd^_9Pke805b@{_^`%iM+pO?a1}Eg>?X6zO|;jA|E4|S4Xh3s3Ta*+pK zq0}$UabmMXfj#bWV?4$9{p=UNoZr{ii{Ne0a-^vb_#s?H)fGH-ktHp6S>r|%g&aL! zdi=ZgQRfK6m|{@vG?8Tu*{B79>~biee9*0bdTTyq5~-`waay$d6-2kCae6#|b2eZOoW%P!5$E`&e;s38q|8Q3f|A zL?;L{rj%`{YC8?5+m6Ao(hoeUalFllHkTkY4KzYycMI4I@sJjqotd9j2-DK1!R%=_ z!|cFPWOm)C##Tc;GQz>(UKsZEL&M-1>|EqAiGoRNG0V>U}&dV71z@Hhfe>va>I1rtGPA`_d; z@eppCo5_fs{M32&ArVX)KP@90`+w%B=i+@l8DU+!-ap z$+PE~t%|}NtTEAW{$edmD=H8=`yJ>!yY{l>Y=Ef?LTJt5{wL7_WMm0YK};s>zU>G#Ht@ z?zes6%Y#-_ul?kG#DDbO(9{h34jjI0``^Fz#=46QjqAGm90j+zc;UK+o^w#!bP62KPEgD)@R~nI$nXoQnz>k%w_!08Ks z*@lgU_J{z*#;{CZBdBKD0CP4_d=dK_>AJ!yUmIDY2U$YA>eaHMaa#$vA0)W+;xX@HxG11IRX|IshR_OH6J^!Xr5jJ5uCb>k+Bfvjf;a|s z;qPt)wqvJGGeiFM2nCCBYP^AZM`89@`8p1nnw$M9nk3j{XMdjF&7~1_PrWBrh#sM>Un&+=2bowF)V!`e_QarSvmy~A)EHx3+e z+rjIJiR0A+fVwsX8!f71Wg>;+sknhwMS~}H<7Xi`#Ciik%_hU?@q;p(!YO@64_jcB zIB=jOC)nW&cijea=gyQC&ngusyCzws11y(O4bcd&0Ba>Mc{LEa@6$C6gWKPKAKLdH zUYSu_H67VW5&U>bnGM zEJK7{rxJ3$O(qY0@qXC(!Cq)NP>v>{C}xYJG^{R1KfL(+--8Eja#Z7wyqDzBv%n(_-;&zx92{NKO<+ z(3@)_f`Q}HjbnB9kqUTo*FKgf9FLBYXnc{X#xyX4wo)FacSq&ZN!7}*l!(JhS4Vn$ zo>1L>F7t5HerWf!uRHn464$~DzzfJD?pGEyk75m3JVC; zA2W;vrG_&;l8Jv`kEqN4(#zNp;o^E)zBaV8giWIg+nzpSC6J3m4afb zya84LhGLdd6BFQ$TW^Nj*Q|n!v{dP;Dx*rB@j84ekjrXvJ9ibma9&BF_}ccJaH*qR zs5o=>z^ZB3EZ7&*QrWYh(3y+feXw-N5}1#M^+QLG!O-xq8iX4RFmMUzv3fFSi{c=# z1bs|3_h>MD0fyOpuO4*qi>V%2cFp4ZL2R*#S zQwyO6nNn*@ z-+?1Xj=`JTwu93(!fd#tIV9mEnHU$t`l!q4VxHioOBRD0%^qjYRjM6QUmS=k*1)GE zaat^$)7M*;oRTgatv|G`sQ+)v9ll|c|)KXYU`U|$Hm>SBx_OW z%IV7>(_XyoR&-93<}F@V(R>W5S`p}E?59?RH4a6-g9X(k3$j9FdhO0LaO}c)uvA7v zmMv?=oSd03CvTQ}W=WDXy>PDWzT4&s4LvT{ai|X7+E)!t9jy?HYC}w{9Ri#>Qz$H| zljyAn+=E@PxMT|aKMyX0(%g8r**Uu2ACPUx@IF9;@1qD#FQ8qi1KCO^cB@8Yd@o*W zJQ}jQkmH61B6^UB*==yU)zUvkHj^7dz!wf|d}uw`YZqcER6Nw@c7hx2i?n25z%R27 zt_QrbbI6KY_W9gFpVtv} zrmMv#KC*6|c%SAfAtfHO0$eb>YpB zY)+ICfGcnAs}oMN9ba*3;0z3KgKEMw(qa!XEhp} z)D=){pAIoxw3KDCh-Z8KVtq@eu>0^?I8oCD^&@y31I}nf`BABkQJk=5Ru(LuH&wcK zcFHyb=M}K4ui+F!XHaG#Dj k@Y@`&IlWex?vhZfbl?s!B}oKnWXCpz$HO7Rz#o^ zhN)bX#@Hs>;53_uGz({DxDM$W94w%BE1Efi2J;%^a%&K(K1hwVOd2z$SMZn^*6>M6 zug_P;1(kkBhq|rrbB^UPJH6cH0N!4W!RhL=mn-DAtM{E5>$R&+$r9 zQ`aDlI9)>jKtE$wO61F*eHiwMgiN7vV$XF9vWVeM;w(E&c7n2eo@`6}@M{W%9DM zR@hQ&ikd)$N)Y%ss{CmJ4nO#Z1CSS;19ug#f+cx#-HB1Lk`MZAJ&s=Ccw+@rcAmqL zIS77)7a!S*6kuy=vP?o|526*I3^)^_H!5I(>52KUEN?E%%9;)-F^L;fO|eq1Cw@bJ z|FCeOwha!UM|Njr6GS0?tzWwUZog?xd2X!XkikE?9M!lL=-KHY+$11Hwr33}flP#E zwSt3IiI-+EmR6%1he1_035c??vP8HJX>M+21reM$^Qn21>Z79>5MNSp@%Z?lh(shJ ze_?>rrNVJqJl9?=>_Ilyk7{MWC^I$})Pf%goPs<Rm)s`pGwK;~JLZ4$~1L0H}>iag{u#xkQoaYQm0q<85@URIo&ou^RxeTFe zIfAH-g%5<*P0+kUp(31P9wnWHv1+l`33z0$L)DdlZar0hp%UFuQBhLQwH)iqeap?ZoR%M2XXiFh>wK{8Vfv*6vlx)7(0 z4A4aLnHieXLOry_Vn`+i?CR~*Wb5sAp>S^nDq zPL~(XZWb^0HwmW)YQSwp0Mfk0QKi zh|cWvzo{-6Iu))N>>?78h+HoJ?Ep8Z3?>}yJ}c~RJh9o$6OX)0FM?fgN0K{%kvU5k=eGa>RL7+*^HE*im~BnH;LCMshYNY-v0h5h|dmsw%q+izr7>nxe$R1JhT*Ez_57 zDT+&%(m7k>{_Ydv@s@MK_WA=bV06=xLf|7%r0^R9ExN2~kCZk;0OzInAGTB<+Qv|A zwFgX48l3^_=G=nb*ZEtf7~_rwvs+}@35uc>Y1E_L)nHdOu5R*lEM0;uzjZA9 z;|kS6$ktXKQAHyXk!zFB48W0`aMy^3YEKH=YW6^%c@){4!WK-Xuo1?x)a9mF@eoCG zM))ay2lZP2hzxh-Erjnc{sQF2q)XWbo7kXqi)UKS3$LHq0kxy8Xy*gQ3O%Gw5{sh+ zkMI})P6a%2aVx?t+@xU8CA!<^My?ws!ABZNW&jZ!f)a9VB@VL~T*{RekfBO~L+qk{M67KHQ81~{_u8w6U;Iu(GW5Ejvx zV&sCtcgWfRUS(av+DH=({_MXf_{wl!K8`fL&bh|1>L+bPr;H}>@`bT?W%9NmL*-`X_+PwdW{Kg*=kGPa;xhH%7?XWEsg ze}n5w04)q(8ZQbEgrlp*z~{A9q5dnNXQ;hqBc?x`aG>1x<+0^*6TF;KU5IfL%14V7 zMb!O+o!Qma{&bwp7MBh>KoOVhc_{LYwqI)9>3ydP-wGmo^`hgBPIXXB@3-X2F+%*V zyr92^wh?OP@z(hqFg|r1=GvKth>0u)upIN>O7!OsvGfJ9^(3ACu>6Eg-yhce3G96*ozqIx-WA{kbRu8R$3s%pi zRxuX7rzMopm1R8mru~mnoe7dc$=i8N?fEeoc3gh1A(N-c01wTs13v<^3WntdXzmm) zw)1i^X&WJC4Aw(078oQD$yYa1x!LOHC0)2Fp_pgx?bbt|@8s>3=&_q!rmr5!;N#1zCN-K!bb!c5LSy))GqaP4b&63(6AHIXASNsh)_~jGE*F2OC z$RX2szxxf3({h~o-sFtN#aLUE#YywcRGZ;Yi`EEz-$ZWTD5_E2zd?--##-JfN&B4uL=J} z$o$K}t^3X3^r`ngkmT`2x8;L!if1%XuDnNn<*AZYpw0=?b$*YON5CLUfCEN}M+0G) zU^*nRqXhu_)5@YTw1CMADWBJqiSE;tNqu)KEPmA4G%-!u~IxdBZ86t?!z6KL>?4!CaN8pMQz{-h3W??V|#Von%s zQ&xu3k`Nu*AAB0d=WE}$pV)`kWN8kC>BHbf9=XPb@oPzh>%@%=t_npe_2>D1KzoBT zvik#_(cUljib!&ReBdl3tH^I}Q~Pc_<`7_6|#emX6JYwR%H2rX3!fdxMjNElz?ADS1EtulJ!VFPs?#?1c5 zM=YA@RM;{V`k3mM$eznFo##q$y>=_G)i7lpj*!69nwq^yLMVF!8T@;gp@Vz8U(CV7 z2`0rJP=e*Ou!z^qC0_l@INL2$%PFiCV`~emjIW!9edn%WVtVh9yw;+zxhvpaVZJ)u*9a`|ejTX{IZMoeASLRMXyT4Dii3r&& z7m>tyONAQaJgVR_^q#oBD{-^eWFE<>^=XR*W{}m_hrjwb=?5gJ#&@!LHjk&|Cz9C_ z)2yhszWL}HNI-^qEp+Fl${jCg3obc$czR(K!tyw69US(6cIF>(qgIBJizN#`$sNyy zky@29sSuY)BFUzPFI-URH<|3L%R&<)B?|~9{oyn$o0@a&ff01|vgeq;+Fevs@h=IF zwR6?TiQPB{3Px$|E7u|(V}jS%*J2*KiVlCVOO*p_6nYoZ!ZhwIE1b(%V#0Ws3B!b2 z=UW2%*8E;EOUN_#hb%~}#~TBx+Y2j3hdI{ueVu@R~Bz`qSw7ShMHk7h-47K>T?@@bwv6a^H*ZdS1Xh`z7qcu0u* z`LL*wiyuHWtk|2-<{qKG^5ONU@bv?W6;J+*b{GgmaZ-##Gz z7fZ&apKF6%_A0aUj&n$6`b=-BHo>vS-H`s0`_V!nTn>zp%ZOK16;od7{k1Ai8-uor z-O$_0@Yp}4P7`6v(lO4Zlchn+JeEzinXU(O(*#k--jYHLjX&PetuCpwY4AJJcLr9& zAv#2ryq8WGfj)|VN9%2Cgt6E8B4TOh2k)v-iG{@vcv-q{j4o{J8mWG+Z!uF_BcIs+ z7b+q_J5x&PcWGy-GcvKzLJlUz4cA)Y|2(0J8Q~q?jZJSRHPF#(%MA4y9g0wj2^@rX z%3X(~VFthAq{X zfDw{(K#8os@e_8cyo4zYz8#o9nJd?8VPauz+C?|WG;N)jlS(7Qj0>nxY*I;u!X;FHojwdik_)&?M;(P1@aIP2GH4{+2fu6- zdcgfjU>+2*frFPdF)3VGSoltroN-6S$YrM|F5b`mUrc(NbQo#wOnJ(7vo1I1+R7xy z1Ys9!MNda#2QC=X0hJZ#S5?I8hEV=?*7kja#Tsly%ZpHnJ0Iih-ORH=Up-ViS(8>s zqYJV0mhI0=Xdy1yX3sDLe6t5hO5KKLGcqA-CsC9=%gF_M3h8PQY=;2(0)tkPEK$c!^bDM~s#NM_S26yW$ zgMYwD3}zdez#fLL=bqF9Vs}6_S9Ltb#)QRSTPkE?!TpqZ@odo)cehxGQC)3@=z7y-EM+MD2tX(Dn&CSFIlmQitADl!8%|zf~z=x zVbRBC1v&0c8k;rIScjrU27Jph`Fo1#$(@TeFnuHXPn?Z`Oh-2b0M@6L34gPD5+@y6yv<3 zBz1JaBpF_dD1hKZW#bNfv44bi!pEjytnX2Z>c?>B#B?GT1ySPhQRgRKkS7Q@g}K z#c;b6o-Kd9;wM;=w#06cuYPJaK0ckgbquP;RXEia+CJNQxkgKaO#y{-@Ve5ZJ5E^u?8yk@jc9 zT=Ms4#PRbW-*3(hm{WkIKRFCd9)4bB+HSj{DgmEeO}hj^Ed6DSwcU?d)`_jhEO`Rb z4P|9K{bi&)oM9BBM~tSPt}#u#e*D*YVAo&1UqF$T-UtS-S4n zeV-PET{dY3dnZB2GW_X80cmC{j4~=Kd4`!zTSQ#VbZB|O@Hz|d0YZFT@3D;EW{h6R zH8j?Hg(UuUogEO&oD1;PpQC06!r%5>+h;y;%(3+QOIixWinX4-QbLzDmfArZRA#{T zqR4aj{C>a&4je*m0Hmf+7zK*RZAlbQjX^iP%jH?>-peaMJ&xnhk(#bl1 zf#@?&U%Q=)+h1Exl}>tY3>sRwVb!(0Y06JEPU{OBjC=JdOH)%W!?uo&SnF#7DUXjg z+pS)nv6Bv$at7-2AmY@;xnDy!aClL{;zp!s#zl8sKtFdgpl~EOqYal;N5Sm;L5W<) z25&Db71$QNBSqDV-()qJ=OVv;)Dbye+l<|7S9tgMV1SLhD7w5bt2ziMoi`tz+I&{v zUl!>4^zwa$mDpb1ZP%?6;;%Q@F&jH3Ex{(3zC_&?G-9?Fd|_^SiBiSV&}z0S4a9~m z<0s|B2~LZvEz>z&6sx0qN5Itkwfn{+1m`u~t~182^ZkP`H%3oT)rjtWy^v>D)Ckf| z3AgE83;Sdon1CbLi zmjyn0#6(2-rE*+cd_wfsx3|7s=RYSWv>Q#P(2RO58fPbGp&VsXaL0DG+9A_}^6BET zH}2lYm#r?roc$?uI!%;CDWO#~LKFrW+|_UiL;}dL$Y~Px_Kb{14Y;?iZUrFM(gt(u zeRFMq*u+{D&gx_RdymTn~Pesf*R0Mn72;^SR>_$TR?ehSl)Le71m& zCeKS-m%RYNkH+}D>zM*pc1|cfJUrv*1PHwphw(6!K(We-YCR)8bqdbK#YTE23yV9G z-F|jDfvOB}qzkRUPDyJ!C#ToJ={)#=uUm%NXvaip=MJfotAMwwK_kJZ9A0*Ia#TJA zMcIgy11=*rsOBZ=0J!s1eKNYBcpHLK(4TolFhtnk-Jm_KhOsrHsBDRowcT3WEPvuwtL$1fCJfGlUj zjrRstLBX!RQ>jaM; z^k4q|{kvrN(^H60Bv6glr2*nyn55X$s4tKr;4q0L+Bw&CfP**L+fL!7X@TyLW8M|d zO})wDO(PN-l|4Cv4;puNo(MH-zV8QORbeBvaGN&-vX^GOfHX`4ubzGtCrdZ#93O$E zau^sta_B_QkR2WdJCGV}Ck%08MQ0$lV@x|DAs8L(wYBpVD#xx8=WN5QZz!KnwW-+_ zlKuYS0Rp+k;p;i^tIn7XBKw=bedkrrHx|J!h{}J0@0(_cvIN}z(j7Ld4NRHpuHQC^ zTT?Pq$%H{ms&p!Uk7`I2Xc80 z$hcaY5ioRC?y|Wlv?&pwU!doL?BDr#nys_GPb}=>DyY1V^)|OO!CA((@B4jSqZsub zZ+W2m^lpO$6ckWKPWUxgkd~eThyhcrQh&$R_CU_4vlyd zr&)9uxeH5cdNz%l1h>}KsD$o*1sxH;jA<1MfNc4mmqN5Kp$)7Tu5uzlk2Ly@N;N6J zvMIW5*9i80nt@57X`7mvmMBht2rMseGTR3k&ZaF1N%$r8HIQf9=eiODpI33boc*j>4saZRBmIDi>+JqAA2-kf5}AUJ|H0>*js|^&h1SLSZ+E-GD5ywXFi;K0fG8-#e%HFei-saCP%~H?cTWN*a9gemrc1PYRAE^ z3>{P|vvrqckn|uh4mWydFLW~m7kY~>!!b3?Z56iXV$l2$J3dx=%+O4?~W$X zPX0}i4cvNn{mjgSX8=?gABzDHKxObV{-? zlgF!GvEegJ6gp@c5sRc4hDT=;MpW%EmosO|Mlt(|xb~bUIn(me6-Zzs+()W(H?pKV zJJjxZsax1wt(aA|3U}4}WtjHZ_7H#0q8l(EfagvpqZ~E&X+L5s7uc=pkF>Dhq@hf+n8uNXG{eCU7Ii+YvY0qNb=TS|47GLZwJW3iZ3Y542cHDp)M{Tt zRgt=~qKdI29|i_l7i!_d;Xx&tPm@<@0pV^>#13daTKJ=1RFv50r#k!^BB9l9v7qfu zuNdq7(9ggqQClko1ON$xohjbHh3)OSjmxKxO$sHeAUK6_!usMMUjS|UO5X@p zULUz*ZwAlqH1WWF-s^!=S~j*0cul*;Wq0Zk`W;hM7xuJSfVksUQTv8~*m1U;#Fnau z&L=``5kcOSgFD!a-{a;DJEB_qG&oF#hzwd=5XvGS)86`!J@@2g-Va^6DYv!DA_zFD ziiE^?SZOT1@Kc%qP#m3>%%sB_rI|(65^YbQ$SpOgU&U(4ZTFay;I+NE<#N44*0zw0 z^bIFPZ1vrz0DCwE&p-<(EphUGuW+JMj`53swPISGsmGQ*^TrEuD++Pdd)tML?eH6+{F0e}EdQF$gWLh#v%6*bJAEic17zZ(dGBy^=Z$pWWiyEF+Wc;^j zJcg;m*xwXLMb1Ul>buB{K{Fi58Jn~7@PcugCS_xnMn-tktX10Tu}lQPHNLnB^kEx| zp~d8+f*`;GL{1rh%q#xG76V>NR63$VPO3#2wNwohZ(rGic}tXmP-t)Ax*k- zRWNM@w41@^K)kb>KG;)DMKNB#SbO;-T}y+BUX7q68IMn3A;e?Z!Ru!?0^>=9!&2O%Uf`GC?a%(n@u9>DkYnMZ zZ8(v{GKfUb_4~y5C~614-tJMhQ)EiYck=-0;+IBC=h&m^qblrQP#9{5f}cAB^JVFR zgu-A?B>dt^kh{}CTVw%21FeJ5cQ^$BOvtZ(uf>OVN6wEY+H}nHYeX1Cmyal&OWBA+ zrOiA{`@YvtI*nHF=e@63WOQWUQyMub*pu0lSU3mNx)YJ{!uheA98A>1iFP~*NUw8y z;y2IrW^;wN5Z3e%8|C_kyv`1Ow{TdeOL6DFLt8>2*ZxQhjv%R~g ze2eW1c2d__B_#WHSx7M;VeO=VvD%L5KxD*;F;nT`%vwc#MEGG<{VxnM~l^5Sch4a30MY<_0O03|J zs;e(v$5BWkSIVuuuX|v3d=K3~N}F5Rbnr#E25S+lD4B9tjS{UHmiK_&P(|}$@R-^DerWSR#Xmi#cD&o!whv_yAAry2iz2zt9plO5ZyFA>BgFeT{@wdi_5Stsud0Is1#ow3 z8Bf2^>#t7|RXjp`?4qLIAV#i_OJL8++#Gq*?uUq>w<=%It{@*4rJ9rB>!zjH`zVK; zp=V97F*%m9wvB@SS(K@=SGq<(kJR&x@~0%9$8CzSq_e))vcb#jO}$0op3VH8G zD-o@eR}{h(7IzPiI6K$_PptTOBrIzT%+II9Jhi;{-NcjtzehL_#&n(g<5e!N1e{8gx z*697~wrY=Ex4!=;W_r`IzCaH6&v@v@Tq@G;;6YdpBNsl1XMm^oWzv>&S>tM@UH*A> zC`fB-nZPjtFNyihi=uot=#CG+2wEx~rZ=hdX;LRmbuvOfh!l8a!> z8ot>Ya;YZwp3{t^VFcWdq046v}I62t@Y&ok&>UzthS&CBk?>FekYp$=zm%@y(Vd8WuLTKe`axNx?GTVy@Ee zniy3$Gml^dIITLtKkz!#V#ay!;xPgRZ<;wsa!5Lkui>n$c z;i|>(ecX(Q;gWiKQn5v)vRXV=r2t6;Ar5||p3Zw=Z6UYlaP@B7z&rF#s5J6 z$^c<6Fssz~p9I+ucyNNnX=erK4cB(itXK|Qj6#XF_KIdqxEWo!Fch5kUJ?>k(t+tk zmpH?dl*>7X4vsD`7-ak#gR> zV*}w3f^T4{oC$NRerD2I0?`p>*kV1w3oNw^l~BgcKx4%aA{5l{g!OkBBwD{kpQoaK zf%-xckKFi%!>lGYiBz?KQ90x3=l_yYr9ih~{NZvq*}9F%!NDGJ-{elm^K>?}xBYI( z@%B+aEbJ>D#KF%66BQW_vL+67VO+qY;t)_^*+f3{ro8W>1c|a(q!>5rmaIGV8g!)v ztP8A5ChX6aBdfL5_m-9dD6ec)(n@qn%tmigjs-XcLFI8#+HqE)o5+vPP;??e{_h7# z7+4oqCEvz}0)kFf*xXB@pydvWtnyP*py1)7)dD@!cvl~iFv@#_f=iAo!0&7sDKFDA zGXARFFWkk|dQ14!P0gBs*FLN^)KM`D2z2JVx9g`YJzRA8*!u4Efy{fNtfCI0$i&#C z;w~4tXqvm@Ob>sw4z!%y%J+t^lB)iZ}m{RZc4#qoXZ zEU3J^4R@C7|Jov$77G-QnOR?l671NcyUk+y1cFlqAa)3;VE#f*tnPpvi?Na&PyTFx zbS~m-_HBT?n>3k6u@9v&6pF3;~qw`PL1mY-bf(Y}B;efCGviy*YHtn=KJm$B@%aEQB zG0S;HS*6fiTL{Sl3OM}r7St$^q4G3;l1FvMk zEz{HBdi?`2{ND%?qaME!jf9*C@bK!9P!d~>t^`yZ*S${a9K2o%XS^Jkm>3UT{;)wk zD5jHgbHm)axzW0hr6s4l=L-2Di`&@|FdA?g5vlN+@1w2k?+d9kUx6J;@3ZolkjOyS z4#VaeZ1!In1b^1J#ULB7~ZA{$8pu-sKXaHWR_vJsI`XrI{; zmcuzYgw8%2b4ImaF*4g+&0aBwhf(3nEj@jfMmorFJ;7hA@Aj#93)ao^dwYAd{GTpz zvS*iMYFciHm&z;VJe@6Tt)sb`I~b)cD{^B0Ba_b zH%r=#*Sgom_cU&D?`yu2k}`NB?~}kbx;Qc{EF1}cwd5w>c6|t}pN>`J`c-!413sXe4Q_pC(?IM#}q)O`3im{A^)-mr=QFXx|`^o39-JM>U2uECtvn~{{@yJ9( z#A-I=o*@#H2R7EadmeO$b(17bT(}>zxH8;uo)!MB8EJ0&BYy1Q?G z#W9^L09y~|nVE?Gq|!!zenIX94`p|MOQMdbayY?>Sxhhu$H7}^h^-DRD`%DERxW=^2d zZ0>HZ;caur;5-~~zTwpUu!J(D1?X#_lGmm}N*|}|dK}8WE`cRMH3~Xs0twrp;eWrc zJRU#&@PM1FzWnJ2?cu~;$Vm^ecr6);oRUr<*9-gwMSdXCqMQqmY<6=iN& z3K=rNYG_1N*}{tle{5Gt)w&Gpc07rOoL4RyOsKATwtSeW94w|(5yO^%MOBoZP{bGg zN64nnu`a&HAG0VLKNxr_X}mbgx*gG-o9^G8=?mDWn<5{ohys*vT>;C6*ayBx8+cG8 zTp}(-f_L-z{c*{sb=D@CO}>ltNiniLcmMqQBRXD(vZK<4ZI$J;wG4FV0`3Tu>&!m) z(x;=_+h6*lL9FfFuKETwKo_>|;Y3t{f~_OUn(5=kR;S5!g25b6FA(VT#PzzJz3%y= z9?q6X$Y4j@g8^@`|DuZVzcdIuQDVZbI`1xN<<*KX3Yz24;Ly6|WS(ZX?`1Xm=j!uq z5a>K6tT%{$gT^cQ(PQM})@hyC0-w%ofbUg%$@p_sIb`A)2l_c-x}hLPA9<0X5r#B1 zmCJOXgu1Y%UTjQR8Eeogke@eb%fAq7U65dvCf=+;Omg`9@e_Zp#YX^S;=j+G52V1H zI6zuz-`&>>Lk3$TCSc2z!7p%8bFuDWQA^^Oz%xPA$w=h>{t-d5`9a*z3RXiiKPtv8 zbxz`GGi(B=a}b{+3KsIKS;M1{m|iJ28@#atkBN$yfwkTHQ8#}k0$GcF5F&Xw-m#EU3 zOiz{Ysi7PZL6^#@2~ScjyRN?a5@p5J_+!v!3=R&w|ICAA-Sd<{Z+N_0NzYZnArx!Q zVi)OoU#txj2A_(F&zs05CH_d0Xb5724`ko%H#Eu95c-#no%%E6eG`se$eM!ooFKm0B7`ZD58_kd-f`LB8Q{u7&FG&m`Be4TM05}3o~l!}0cI4G)Kubzfy92LIv~5Mai6|t z&Sq4?kINBsp590PMXIot7VeSBN!bDz894<}g4vQ~^~=ZV6kp8v2`HK#vEh-CNCyEC zROY>#QKhBDRrt?m?H^gmeE;x4f`YUyJFo(vp+UL8#VP8I4asJMuzU}_u*58)kF3fz z%j)&WxcfJ=QNtCEnTtzIJuFLGbfO&X>QKRA@l^tLY+2n_T~?Ou;P6mRgE#oBgU_WX zCOW}X2T#I#Yop75*WH3^ZBI@zeH`-Aq1t)ZUyzfB2QpP^OlCSIFAyYt(C`aR<ZZ;*ar3OF)j494Aa#&iDPn=T3MUj;x}6y z%U<5@u(hClL+AN5;(wbx$)cVsQVx6&^|HdrsVX<7f0&c}R+7A7f8z%4%!#La)2C;x z$zTEDlg+5Z`7V$^AaA>~kSu?)3tl!3{oA@RllA~UpvH8#LZjDfGiJg4`KVj@PgRq+ z4dC6X6_IZ;)w=7y%;4!aUOTMeg;tC+8Z`5ypq}Sr3{K}UI zkUB2R;h8>}Nw?YLUEk(*6^MrPFLb@SLWNKtAc2jAhAZX=P*z5H6X4?ZJlD#9R-!{* zcme4y!Bz{=y$=yBWgX_&P}8BIH%a`&8mh6eW#r{p@?JFt43S@t_tSx7N~2?;bIGPh zoP}$4<;V#4*^7S#9jX{nM_XFA!0EAHW^jl>fc?qir_0UWjpGMCm3bjfcHTC9Vy)co zmNs83JqJ){FJxI@ z=;+CRPERclZ$?$}GxM06es_aFk1AM0o^|A5y7k^<;~^yr%)UW^^VGA%1hJ(M0-%&} z0|m~(QQ!3pDxpxN67ne>9SB6KukADMnl{||wL=D;tB^=B;$9rZre@I6^U`812@4lm z=)PRts_#kiw?!%{3aDt=^E&$V@s)LWM+``GjRm)QdW5JzK;N@ zJu)%^BI$WH36O(})q45bj=e5L@?#ekU}vcg0mu4wviA0D>=Fot$%Srs(${xrRYhnx zF!s>*W?@?8`~&CZO(E7U@XyaBF5g}-=rJTpoH7&@;14^ZzT?T~n|kd3?70@p)7&eO z%*%XAWv^A~HsxUacky@CWrmCY^fav)JNSOaYp2yHXsx@{dTZ&v?Ron7wWJv48Le$` zwHeXMvzSUv%<*3&QKy&F$kg-}2z8Ud1eqXKSkh>9H}&LooG;*py)IYH9kNnF;Zd~*2d;vei-sYvy8Ly-W@%N?u0rAdfYjA^_*C2d3zI}X zdJ);2d^_OlBR6^Y7|ru)n+1?ljY;Q2;=s3#&7{v;V-SCjlAq*~>}WqMrqq;6pVQ>| z#1ZLvbWi7LNK(nkj_ha{wiOZxySix&u^v!=CVm`ohaMIx z&2On{53ud}>-*Ne*Zp2m6^M8R(MgjDY z>pLN^|1gYJn&5p^g#zCmct+|W?yM%w3vrgoPft&)$YB-X;;q-k7khu3OP#i0ci=i?1&L0-fVzT^3EnIlNqTs_hjKzg`@}hL?G`Wos02E8=CM=R1t=+b z&g(XV9hF8G3XMK~&tR(td6d?Az-hB|wR=1#s}Bi!KAs94TtUq_mS-$^+)8aLe~5SL zI2tl@V4R4#YP`XF+YZ%cvI=Rq3Iq@yE?9hOV5KZW1Yk9r z(yy*y8mlgZ6hM@UqFz{M%j`4#M01dKQeehUvJziy(gERdNU_}VFLfRMlLm*zkI{Et z1p{_&6GG!!$N~4s7q;e!zk4mJbNC{}aI1gf<-#?h&l%ggQe#qDihBCfn^TvH+KSJ$ zgs*7Rshv`QN-bRuLEAGE4!%h_^ktKTV_lXS*|+#n_5Ebh={y9!QJbHs;iQrIzl!#B z>S*;GMobGIU?_EoQU9CB_k%|ICN=-Y?Fvp9A-P6$jWrdTOF&9kKup8`PV_(N7c|QM jz4iZjd4Q4rMN))%JDwmCy9{ax3nnY6^u0#hIP`x2DA!0E literal 0 HcmV?d00001 diff --git a/src/app/assets/imgs/logo-parana.png b/src/app/assets/imgs/logo-parana.png new file mode 100644 index 0000000000000000000000000000000000000000..eab2ec840ebd2e843cd5a92acc3dbcaf8ef5b82b GIT binary patch literal 10348 zcmV-yD3jNTP)@CK~#7F?R^P+ z6h-#`tLmOBncM+FAR$0V0t7_^Nw^^iAQ13cT<;U{*q^TMZ@pOk!=md?*K<{LT}AOg zMO=jtKrw;Hl>;J|oCzU7LO4S1WUlV6|EmtcM9Fkd4&2rGe$ttqo~rKZ?t1mkdPTqs zFMfp>GGvJHp1bdPFEB7L)?_vX)YmrzIUIKRWW`CvV)1FLuC8*9NE~^9$x6xhJ9q8f znz8BMTMlli|M{6FihcVQ8_LScZ0@c%W5(6-V@8dfGH_7zAX`(@z^b#=J%WRROisz^ z6C50DAwV59cu|ANaPn|T$+o}#b-`0DbqRRk#jg~1-gf6JGiS|w$k*x%etv%7YqbJX z6sWJS2L(SJ4hLBAn9JpY)2GkWSgpQW_WrOpe_htPMc;h$O;vh&x=-w&*r$eFa>*Sv zHPr|6Hssy#S;l84TFyUb&YVkjKQgG2iD8yGps-`_uP`}Xap z7Cg1!&b#iu>(lV?@YG#9cZH`-NfSatLSf&&eGn5Hi^PqD@9(D)I48(}zyR31X=~og zue>y3!-fq-t=s7(LN9)`sHmt=^0(z@#t$A^(SJby#Nop)wfgw_K#v|hAS5^#7?wF( zSqVpu909AZRV7YIk~nt^!gBE$>oVT%)uY#h36myViefFi@sCBEXn%;0jkn))+fDDE ztvuWF)Tz_Zr%yN-3s}(SK@L(X6g3(|^PUsIkd-ep;AhJcTzqRP2k3YDvxVYHy z({_4^(2HL^vNvRZ?`!cbkz{FjXphj)n(7)b7!8124SM(P4Niv>Ib#Ei7?}Xb)qsnX zGty^7AVJ0)DlXpo-G=X``}kO3>(;IC?tAavc;}ou-$Cw~$ca`_7$hboLhjZ)h>eYb z;E-VCs=-Lqz9{0JhE1C`*L=S0iw|FY?d1oms;Z<5wa-h0Ui>Dot#I4^y_@!aP;IMj zjEjpK)g!cr!EU#MEXk^VSX)~MHvG;Bkc*O>J0c;*ul#D|q|swW8Kzz_70Syij1$IB zxa#`re?K-qH=mZ5m&1So{UI+m575|y;-^0dRDhEe6;OwI=k{&e*Y4cC^SU<{y}ksS zz}jn@*D&M7Zw@!yaKq4~5lQcl9y59{azrcVh}?KnxV;ei_wNryMa8JgIUx+WBsb)Y z9XD33#|Ubfc zA!zbNuNKi*q0^7fDKOo0EUneUo3(Ag{ zK^=;(s9(b1A#vb?`rrP2`|P<}b02=}iN_v6-Lb-hW_XFvi{CbKb92vTWoLcqZ}qPq zF>>S#ik3~Y*#u!>VbHg4A63NUR!*+-ojiFGN{^KCKmh0$)em}w^#YU01a`XvGBZ{$ z`RmgQ7C;B!B|VX3XATlyiHRf;vtT<6ozd9o`d+*jC?%7we&(Yqs2T!~tzOoek85e-p zFyqB<0?|_kU#?WaCqkexr|8>V_qJE=nT5~HvHDqm-y@_)&-%vtL+BUmiQ?#ZyUnh0 zzc=4_a|;?_XkbuaG+IYbHZ?ZAz3`cZi`uX0E!5Gzsle2X~Y0i^5jlAImeTbJCt|Hwh*2DYP8LX^71>L zeeT&Ms7nTxmX_9N)sG%`*$|-@eVZ6)9JZkpY8s{;$~jcox{Q|yz4*m2apFX=LGX<< z3dRQ7bj2zAc|1lS? z$;jZo0Z$BxA7-ttsx%tS=0*a{gcefiaPg6fy+^Cs<$i=niciIvkM^C}*Dz?}u;oHu zpRq`UVGP)5xwK)k(C9PwKtaLTmhvKa;l(cmo8bS10BoTwOCX!*1!%NWAy|wO4nCvjKM2qmSKySxyBZUazqgt_F=G}s8NNe&^t#xUyVh{WH{6CnjJy!Zu>I4S*7yYK~gbVkr(=-In&g( zAZu5$rHrvYpb#JCLPEBy0pm`&hP4r6y+r86MF$r{2_=hh*Vt|$hD;3Dy@iGUazQ7s zf93aINu`Zz@N5pLq@hNsa@==lMd5=NDr;p8;44?dP0@8QH~J(@v8{mTuaAeR123$# zMcBRrvs?ucjm@)?1gY_-MHDgE{28?h^+Hb*r(*>I#9asJ?&GZsd5O@Aiw>LM$0xKV zxGRG~;G%-;%v|UMVy{iOH}1xy&BR2LlscD5sdfrrq=~W9FB|dGvOS~f8VvxSalkBeCPvLphI4%Jzv(~I0?z}`w$Z7gt5Wj!uXiO5JkR+XmQ)m+Hm0C z+g3@(n_hGNPE5;kc0?@#N z#ABv@#4OyQ$c#s{oOcuSkWNC#-o-HW`4wRCvB3PN<^x(j;jwv-!$S`|1RpK^5N5_2 zVObHLqv06D`R@m-j{*Lek_FLGPN=9fKzz{&cs+L(L^`wJI1D`B1T@UtMgtAAX`pd{ zOd%v@`tW6P6aCBKobQWU3aLamV#Ze9W(uh@JD|FEZ=bs5%a_a02_#RN zHHJ|()NLUGr}DE_tpuGwk;iN!zC*!7$Odo-PNl|Xl&g2ITh|EPfFZMI8~v*6w`-M? z2>ZG)EAtq50IqAH6|eolm5R3f?3MdK>pZDfg%HIR<+hN{bG62(Dd};FOvbw{#F#68 zedZEyGxIm%5eJZiOWWZU(T| z{&**%kVq_sekhI-rQYSsB-R^Das>X?mIwuzW}sl&A9RAA(?eZIw#TaM_N3IAyHNox zL`wOhV0=OjELfn+2XhXDQFsqOW89Wv;7m%H6`8+2;}qyX1M%-CP_`XBgusUrfr3RA z0q@I+-*yrPTNFyN3&vi)*2804CFC@&DCs3!y6^IW7H2URGufbOLg{{b^b+d`^7C z0DOl)kszg#x*g7%0M)%PRIHEiugJ2Kz#b5W+u}uwq2ge9laG%Niwx`opDtc%PP}}i zBf4i4Te0LbItA=fpQ7wK-_TmW?dvVVe&4oZouT41Og_HIcH)@WxU=O}@P?V)Ri@Mk zJ;6XE5NV@mcb#oruPek+Gj54!^-09f`;s>m9)r~Md3o8HpMZ{$EIDQ76{vv6=(vuN z5q1}TJ_{EQ+;EV{2;LuK4<~IZEGB8`f5*=8E_7m)Mm7Hr`bx4}lcr6Zm%nzcu4sJy zmnZL!oHTR)whgQH!bQZ$DOW}?S(&M)EMt^Eqa5f2iZgeu8#rU|Sn4vqYv^x{mrmL; z6=(fzr8zs)@UpPu2aZ2cW;C~{w0rmY?|gJ|WM}!Fii?Ht6DL41n&65vl|9rSH?@D= zgN)VOe{LVg6G{z2AoVk#V1a#Dbosjk$|bbjE# zxd(I){OqcviPQQ*r!Y~pA9U5Ad!mn2W|QScC7XfY@1rJ0nf0E*gdMsuJPf2)Ux2#D z{{;0$BY1*CS$pQnO|BKFz?~*0QUoq|yX4#5pSCX3eb!OJrrHGix0g(r;@e)4(J9mW zVZkdvKO&k0YdZYG!1t2wGSSu3rcKkWN4Ee+M%{zXIdE~b8zP%nj7gA}&7M8`q6G1C zJs3s8IUZCIK@jhTP9XNirj35%LywA=1cVy~S^dQx#@Eg9{vR0qLmu|zJpRce!61sT z`@jLPSv(^`G|b!%j7~s(kU_mG0_h?yZt7*%wl34%E{bHcY+l&jj|!ojYkSlQ2$1{X zKLewxT;g+{R7gmh9e`ALBY1|vs2@#$?!lC!XB`XRB0$xH0eXRFn46F=*8m;BkRC&< z)ZchH^)*l-(5UuvY86djq9FK+9&uQbw;g&S2khhT565o&J)9nusJpIWF`$PZg=;@U zFWS@WOMS%KU9vK`b(wDW6QZT=k4cl$2mSOo=OQS!-VUB4ZN#KmvGAV&2KP5}bA1q* z<97V;1rLGd^==z@2w{IoPMdihbTjnp!EF#`2&%XmIshKGDc3l5fux`q%q^u%6+@U! zkzI9;98b<=X>0<;Y=ZO~uZJ5R`4c3*|2CXT8lk5up*B|n5ou2zv7m6F~Ex(8@;g2miT z1>FP>_24$ZwsnMfRT!$Ix!CK=c(_`#i$boG57*BtUcGa<-g8uk1VhZL&%+=!H)#;m z*4DxsZ@dY89(@?9tv*`S8Cu%wh!ve)PMN1dWcarmpLlWWLLLwy`v)3&CaW7E*P?v? zI9fFi>#RHdr$;ET4nJJP?e26^yRVv|#VL9lIQR8WNSq!Ym#N8-o$fld1nQ%GI za#oc7^myXrStC$v_y%`_HBJ!$x-QhIL5FAk;`-6wIvY#r22r9wK0!mxw9W=!w1%n& zGrOmHa2pT`T!QG36mfX#?$d*&4c{e~HO*u;cDdeqGIr22ci#pBrcQy~^d)X69wD#awy0IyFjB;DUqAt}D`@{)MN(FDwl9 zKlBLH4vm9j1NuW#W1~8;cf`n%5HWK`yO)y*lMIrg4wl?HN=0!#v&&IviJah)oVP|z zoY=-i(rKR?6_g4^*0iA8S|Uw&I21P1tsaG)-+^c3L9Xsz-X%$C>0|S=GB-mv0Y&Dc z40PO^2G04%w5-59iXy~a0qiu~K=V0tBk*n?O-h}$vs3Y6ZBD0457xSOtDrb;!Ou6q z10*CQ80sU~8{kwT3`6|`nFQA|yBa&K#H3yNW#yrU>I>C#pxC#4&kxYE;v`smhCb z!&k=koZG=?Ni+=%sK0)|fPSD=4k_SwVTdwK(&13**`{ikz2BxtCqh0rBSp`>sJ1jj~0mG6bEqbHc6_IIZdCLs6iNlb!2Ka*1F zIwd<~8631@oDgs0s>IZp&+#oOHGOeX>ddVQA^G@|CK2Gh{F{F!rp@A3(m@)aGMx^MJ#& z2Ob=SZ|RhNq#vD%($S>{^NG6x{b=jDuTJCT)_`_{JhB7q+_|#`8k`H1dZ|GwYea>B z0PX{;m!9Jp&-e;SB@7B>e2WZS5q|yqL&)*+pPh&65hsrvfs*`f(D(QWs9cc&R5U=- znBX~@(vx;YSSH;gkt8W?xylI zr*P1EPRwOAx_GcVP@9PlR$3XnTJ)pNK!R?DAS*nrpnIDGfvj!oR;shi(fFb*`4E`p zX*}tH<%KUBOO?Usuzx`+Z`z0#YEo*Qm$v+#r?5Axj+IrCXI_8->C@nJzY80?`TByA z)Xc1<)n7xez#!;#{p_FV5C3M;=B#58{C(1aW8*(2vT~(-(sn{VWB*#JwBLH@+g)=C zGYgwq*Xed=J!8s)d|n=;KVNxPg+6@PWK`kC7RQa zP{PREw07+ozMq@B+=e%+sS9^RKWbB-0nhEy1lQA#v;Jk$$NeAg>BIeFly__Y(L$ za344fZO0Bf6(BgW9~gs!)XvzWrVfs*Sqm{^$H1}CN$1Oz0ju54*qd>QO#uTZU%G%= zg%}~iCk1SBgmT8w5B0+f&JFEWBE$wiU$8#&E50ufdLQp`ZYvO$pPRL^MSleDzrz=^ z5i~$`h+p+COS9*>PKk7oCqBR3ST>r0`7rs zf*w5>Q74;WMaviN?m~ayQqTmsn-e*70HOphu?DGxh8hQo{e1s{hLTZ2Z}ZbRL;P}= zF=<1uO7E zikC}P$27r5m?re~9YjzU6~Zk*e8fspr(AGKT6awgvZKXoUP0EXSNNAvqh?zaX1_zT z79)YEZ~oK--$T0^r0^Nrx$80yK=*=6AB#mh{CUfkHEwfZny7p`=zPZ%_ z!o>&80joLUNYjwh9`e^`e2h9Uw`@NMT@0=w=-|^f(FRNK-hVuzpnXBRUYK8%;~M<@ z3_OGsL_^Rv8YT2J8;GC5z~l9#<4qJfR!Syu-6zQK-gTRDM~4UkG#W+q<&}l^hK4(C zf(Ya&hYy#i&8xAP!IClwnzD1CCa(ah8FReFTuVPZTKstIv=L*ZTIV|2$M6U-P(S8S zKxuFtkZp2~%cfk=oz=xe$SquSC6(cc+?n{*_!i^!7duITa( z)dq}YVdvGuLD1HM9Z_H8+f{8POQu)Qyproj`8jJf*S~8I7P0bf&q5tQ<#*n?`V`lk*r(oR0z<4;G_Uv^uP9>+N-=tM6F>S^a(3dTsGwAeuJ8l4DAaX)D0$l|i zdTx73Y6Oea*W$_=yqdD*R+{;Qoa?MLPT%bAI?dC25}@EqZ#;nE2mph?@D9B!McI4#g z*HA^^{!Yzl0q)SO2g}-ea2G&fj7ucWlxOE(cJ3RG@izq$lGgaSNQ zNEZb`X@E34n0ZjQ#}_Qf&iDXzBp#c2rTda3fXXsYOf}^~*GWiAk3_L`23#D3p%H|) zc^Py9+rC}16FK}`o|XhU0lj)~7vYw%V`n_EdGqROPbwW)QOFHn=Z#;3QZHGBzTPoUUluN$lJ02~lyv5RP0+)1i5M3U#*Hwn z5&e)h`K(f5FIVcMVp|~NQ!U)Kv0JU9>eLv*x_!cED-2CcoiP?V2$8BBOmn3jB*e7D z)R`AFm5U131ux#Zk4zopI*+{U%%!MSyaF8u3ILvQrcS~~GLg>uOQ9%x_e^RPpU1Wz zK*zLtj1!Y#pl>f0ZoPZZ)cBtds7BL+G}L^DIM{!T80qsU67B?6@2W=P1EtP&5C^lb zz@@xioV)jd;#BIth!FE5c+Ib&1MpzJWCQ59chDits8-lc zM)q)!YF9Q5G)A*p7qBJ?(1ihtO#x%1^-s*kUX8h8_=;A=1tHk@dm+pmr<`<9>L-X; zzQJ{*@pvektiFgC!sOkJ73jkvfDxg z;*wLZOwG$~JI~cq9Nf6OG-k$S8%Zxq3agWtv#jYD2=t$>Gxk3Uy(~t)u3_wT2~Wz3 zaL^cLd;rWe0(cy%uUO$a)Ih=Cuo-pBvf>qaInaSLjorox6E_v|IMM!E<#+(E76EcJ zm(kbo8;>}&~B(}G1df1;-yot|&k3OoRT zDUAE!bY~w|^g*pBuiL33(BQ)8PH|M1 zu0n~TCqhJp4D4M#nrfG1_YyF4n9FZnzvd{4I`j0DWrY2W=Vw6+<8b_%tfR`RmM}Ff z=objO-1sgJV5kmO+bQ!orrs{$^^kDKn=tNzRd4-NJHZBFs@+8@o zJCv7~pXCXn`2N6=@exh2^smHMc!Y+Vhe{PqS1CswsfK=5W*Qc>75nXM$qB0tZ~oz> zqO2cQLnm;qqw)xL#jO}c_{;*G;7NaNYC?YIHlYq-q%1Fc^?uNa?b)kK(2DmW)4^dW zb@kM`K8L~LxZsFiF#hs4lQ(aV#g5=M{E90iqC{t)GG31U4$bRfr}1dLJ(f z1`3Xm6Gc+mz4=?OkDm&WMMY!`i5G!LuvE-~nZ7hZVbg%=$L>G{xxH1NWU z|8k(6pz_SClbTl~dpp4Za%gug9niHf&;uf2^jq-4i~n+Ig(S;uVaKH z6JTca0nOK}zdmGF9Gj z7oE>@&$!I&FMOYJqcA{;U2uHH^Pz$p@I*?C8txHnre}FhP<|{qE&Xl+bbD@AhNeP2 za^mzbBGOwxArbhbcgZ!qKkUk-&5}~nf5(7~;P-^j?yw?BYqsUA(TodiL1OC6bbMzM z@f9{Qg?-5bx1o!WG;Nwca~K|JdsO+pB?V@C;C;g`*yf^@C6WQ%A=iX`;_jJ^n>MY7 z!(sSYg0F({m(Oomgs466DQ_-?JxGkwv-xY+YUdaNK5ug7L)gc|@VPmWc=oz1u&OXK zQ&$dGJ{_+~@V^NdOTc$lj_3F|cYS8L>Z0Il@rjJ=WWWaC&6nfnZ8pJQS5~p4)R|vm zM?jM>JB7p>fgP?eF=b|oyGrWp00v{74#WA#f4&GNUVEt4v?jhN3L3&@5W-w78>NEV zXn&_c@>R2k6A%<0?a$yAi)`ZgOx;chWd=hSp8rY3$9{etM7+oA6$LGD8sIZ4s37bi zK!!CxaF{CwR%})${&p1zna-c%xqF(1*W0W0>|2nSlKv*P={5AP@d?ubgpy4-nCe}1 zSQCnD4B*dBT{5WUJu#}e?x9V@XU)iT>=4JXliq0vJmEGogDjiz5iBQue^f`I!Gj*H31xa`jANYHDS()lgeZHWoA)w;>YNx>O@ipioAn|17XJstl z`^eeu!GUHmXv{K6o^)jrKI@wmS&nJpoJfGVIG8S)J$v>SUAahT!T1qRYjLDDU@Tst z@KL`Y^Q+hn&GjLh*Rg=dd6ol3U~>zyS3R!&kiE)nJ)R3!X7;-YA^(FN>IuB>*Y(~v zU$7`|{VMeW_{`q{D)V+;>#mL==;RzwAiz}}et8RLPfD5fcd7_4aZbp&!3aEYrusu_ z`a;~6VSy!})fj98{`+prmW&@Ko>Dcd@?b7jxT{+iY~fR1f|4iA8lAX#+hpXvQo-1f zI-_^k)yRPls9Re4O3;b3F5y}}+9LtJgdF4tB*3%UwMZjT$nQ|xdnswsj0DgN!V(o| zex@AigC}eacJxlHP^<-kr_hf|n0k%db(|H#cpC~^i>_w5fj`IKV>LF5Db0^zhWk`o~pqtwEbW}wWQi5*6BRahKFDzNszHWyPEe~Gmya=O*G z_`)o%mb)W|=EN6;qyPDdxOUOEKcDPq zaak&$3xT5hwJq<;B-IvamFM#qrJCNokyGD}L=x|G3X7oYfv1KCurGwG8Q&S0kV^gt z9RO*5$2t-)GkmV3O@F{an$t>|ce$a*hT%*{`W%@L-I@T;~ZX=4E1pbzkl72!_l-+_T%*N+3RRLuXn!}JqC4wWPH(2BQw%W!YnXxu}tKhNGlIBN&Zw24DmST{U84Hv}%}%46?j{ ztn#18mEK2Dt&CBagCo&wtrK&7ic)0)jw+Wc1oqY>$^EcR& zmTBu|=fL=)8e}vYlD4*N4uhY&+23HcFfQwt9JN{*&r^x_h7XPXdFJk2+wwQ z-s);mOn<;@Zvx6R^S+>N@-OT_3vtYS1q~(#kyx%~l%(+N0MJFizRfMm>G*Qjp}71g zUgNdAaS57nliZpo5tfQ)2$qTPJ?fQTVQ0+3L8{A^5kN_U8`#S6{9DeyD}lJ}7phT? z(Dle&79s%_V_!<8gzCzEhf)T=o~|VUu=8Jq|6VLupRt^8IKY06M_(t@yX8X4COC{o_Uxwlret?O4DrVO9C0#~a20hCu!B3Z~2i~WBf_@wK|NNMx{0000< KMNUMnLSTZY`VEc% literal 0 HcmV?d00001 diff --git a/src/app/modules/animals/data/use-cases/animal-childbirths-use-cases/index.ts b/src/app/modules/animals/data/use-cases/animal-childbirths-use-cases/index.ts new file mode 100644 index 00000000..ec7e9129 --- /dev/null +++ b/src/app/modules/animals/data/use-cases/animal-childbirths-use-cases/index.ts @@ -0,0 +1,5 @@ +export * from './remote-create-animal-childbirth-use-case' +export * from './remote-delete-animal-childbirth-use-case' +export * from './remote-get-animal-childbirth-use-case' +export * from './remote-get-animal-childbirths-use-case' +export * from './remote-update-animal-childbirth-use-case' diff --git a/src/app/modules/animals/data/use-cases/animal-childbirths-use-cases/remote-create-animal-childbirth-use-case.ts b/src/app/modules/animals/data/use-cases/animal-childbirths-use-cases/remote-create-animal-childbirth-use-case.ts new file mode 100644 index 00000000..0bd1db41 --- /dev/null +++ b/src/app/modules/animals/data/use-cases/animal-childbirths-use-cases/remote-create-animal-childbirth-use-case.ts @@ -0,0 +1,45 @@ +import { type HttpClient, HttpStatusCode } from '@/core/data/protocols/http' +import { + BadRequestError, + ForbiddenError, + UnexpectedError, +} from '@/core/domain/errors' + +import type { CreateAnimalChildbirthUseCase } from '../../../domain/use-cases/animal-childbirths-use-cases' + +export class RemoteCreateAnimalChildbirthUseCase + implements CreateAnimalChildbirthUseCase +{ + constructor( + private readonly url: string, + private readonly httpClient: HttpClient + ) {} + + execute: CreateAnimalChildbirthUseCase['execute'] = async ({ + propertyId, + animalId, + animalChildbirth, + }) => { + const url = this.url + .replace(':propertyId', String(propertyId)) + .replace(':animalId', String(animalId)) + + const { statusCode } = await this.httpClient.request({ + url, + method: 'post', + body: animalChildbirth, + }) + + if (statusCode === HttpStatusCode.created) return + + if (statusCode === HttpStatusCode.badRequest) throw new BadRequestError() + + if (statusCode === HttpStatusCode.forbidden) { + throw new ForbiddenError( + 'Você não tem permissão para criar um novo parto para esse animal' + ) + } + + throw new UnexpectedError() + } +} diff --git a/src/app/modules/animals/data/use-cases/animal-childbirths-use-cases/remote-delete-animal-childbirth-use-case.ts b/src/app/modules/animals/data/use-cases/animal-childbirths-use-cases/remote-delete-animal-childbirth-use-case.ts new file mode 100644 index 00000000..8eeb91e9 --- /dev/null +++ b/src/app/modules/animals/data/use-cases/animal-childbirths-use-cases/remote-delete-animal-childbirth-use-case.ts @@ -0,0 +1,46 @@ +import { type HttpClient, HttpStatusCode } from '@/core/data/protocols/http' +import { + UnexpectedError, + NotFoundError, + ForbiddenError, +} from '@/core/domain/errors' + +import type { DeleteAnimalChildbirthUseCase } from '../../../domain/use-cases/animal-childbirths-use-cases' + +export class RemoteDeleteAnimalChildbirthUseCase + implements DeleteAnimalChildbirthUseCase +{ + constructor( + private readonly url: string, + private readonly httpClient: HttpClient + ) {} + + execute: DeleteAnimalChildbirthUseCase['execute'] = async ({ + propertyId, + animalId, + id, + }) => { + const url = this.url + .replace(':propertyId', String(propertyId)) + .replace(':animalId', String(animalId)) + + const { statusCode } = await this.httpClient.request({ + url: `${url}/${id}`, + method: 'delete', + }) + + if (statusCode === HttpStatusCode.noContent) return + + if (statusCode === HttpStatusCode.notFound) { + throw new NotFoundError('Parto do Animal') + } + + if (statusCode === HttpStatusCode.forbidden) { + throw new ForbiddenError( + 'Você não tem permissão para excluir o parto deste animal' + ) + } + + throw new UnexpectedError() + } +} diff --git a/src/app/modules/animals/data/use-cases/animal-childbirths-use-cases/remote-get-animal-childbirth-use-case.ts b/src/app/modules/animals/data/use-cases/animal-childbirths-use-cases/remote-get-animal-childbirth-use-case.ts new file mode 100644 index 00000000..1dcc7ed7 --- /dev/null +++ b/src/app/modules/animals/data/use-cases/animal-childbirths-use-cases/remote-get-animal-childbirth-use-case.ts @@ -0,0 +1,62 @@ +import { type HttpClient, HttpStatusCode } from '@/core/data/protocols/http' +import { + UnexpectedError, + NotFoundError, + ForbiddenError, +} from '@/core/domain/errors' + +import type { + AnimalChildbirthCondition, + AnimalChildbirthDetailsApiResponse, + AnimalChildbirthDetailsModel, + AnimalChildbirthGender, +} from '../../../domain/models/animal-childbirths-model' +import type { GetAnimalChildbirthUseCase } from '../../../domain/use-cases/animal-childbirths-use-cases' + +export class RemoteGetAnimalChildbirthUseCase + implements GetAnimalChildbirthUseCase +{ + constructor( + private readonly url: string, + private readonly httpClient: HttpClient< + AnimalChildbirthDetailsModel, + AnimalChildbirthDetailsApiResponse + > + ) {} + + execute: GetAnimalChildbirthUseCase['execute'] = async ({ + id, + animalId, + propertyId, + }) => { + const url = this.url + .replace(':propertyId', String(propertyId)) + .replace(':animalId', String(animalId)) + + const { statusCode, body } = await this.httpClient.request({ + url: `${url}/${id}`, + method: 'get', + }) + + if (statusCode === HttpStatusCode.ok && !!body) { + return { + date: new Date(body.date), + breed: body.breed, + condition: body.condition as AnimalChildbirthCondition, + gender: body.gender as AnimalChildbirthGender, + weight: body.weight, + } + } + + if (statusCode === HttpStatusCode.notFound) + throw new NotFoundError('Parto do Animal') + + if (statusCode === HttpStatusCode.forbidden) { + throw new ForbiddenError( + 'Você não tem permissão para buscar um parto do animal' + ) + } + + throw new UnexpectedError() + } +} diff --git a/src/app/modules/animals/data/use-cases/animal-childbirths-use-cases/remote-get-animal-childbirths-use-case.ts b/src/app/modules/animals/data/use-cases/animal-childbirths-use-cases/remote-get-animal-childbirths-use-case.ts new file mode 100644 index 00000000..0f554174 --- /dev/null +++ b/src/app/modules/animals/data/use-cases/animal-childbirths-use-cases/remote-get-animal-childbirths-use-case.ts @@ -0,0 +1,92 @@ +import { format } from 'date-fns' + +import { type HttpClient, HttpStatusCode } from '@/core/data/protocols/http' +import { + UnexpectedError, + NotFoundError, + ForbiddenError, +} from '@/core/domain/errors' + +import type { + AnimalChildbirthApiResponse, + AnimalChildbirthModel, +} from '../../../domain/models/animal-childbirths-model' +import type { GetAnimalChildbirthsUseCase } from '../../../domain/use-cases/animal-childbirths-use-cases' +import type { ListApiResponse, MapApiProperties } from '@/core/domain/types' + +export class RemoteGetAnimalChildbirthsUseCase + implements GetAnimalChildbirthsUseCase +{ + constructor( + private readonly url: string, + private readonly httpClient: HttpClient< + AnimalChildbirthModel, + AnimalChildbirthApiResponse, + ListApiResponse + > + ) {} + + execute: GetAnimalChildbirthsUseCase['execute'] = async ({ + propertyId, + animalId, + filters, + pagination, + sort, + }) => { + const mapApiProperties: MapApiProperties< + AnimalChildbirthModel, + AnimalChildbirthApiResponse + > = { + id: 'id', + breed: 'breed', + condition: 'condition', + date: 'date', + gender: 'gender', + weight: 'weight', + } + + const url = this.url + .replace(':propertyId', String(propertyId)) + .replace(':animalId', String(animalId)) + + const { statusCode, body } = await this.httpClient.request({ + url: `${url}/search`, + method: 'post', + filters, + pagination, + sort, + mapApiProperties, + }) + + if (statusCode === HttpStatusCode.ok && !!body) { + return { + resources: body.content.map((item) => { + const condition = item.condition === 'ALIVE' ? 'Vivo' : 'Morto' + const gender = item.gender === 'MALE' ? 'Macho' : 'Fêmea' + + return { + id: item.id, + breed: item.breed, + condition, + gender, + date: format(new Date(item.date), 'dd/MM/yyyy'), + weight: item.weight, + } + }), + totalPages: Math.ceil(body.numberOfElements / body.pageable.pageSize), + } + } + + if (statusCode === HttpStatusCode.notFound) { + throw new NotFoundError('Partos do Animal') + } + + if (statusCode === HttpStatusCode.forbidden) { + throw new ForbiddenError( + 'Você não tem permissão para buscar os partos do animal' + ) + } + + throw new UnexpectedError() + } +} diff --git a/src/app/modules/animals/data/use-cases/animal-childbirths-use-cases/remote-update-animal-childbirth-use-case.ts b/src/app/modules/animals/data/use-cases/animal-childbirths-use-cases/remote-update-animal-childbirth-use-case.ts new file mode 100644 index 00000000..2f4cfd08 --- /dev/null +++ b/src/app/modules/animals/data/use-cases/animal-childbirths-use-cases/remote-update-animal-childbirth-use-case.ts @@ -0,0 +1,45 @@ +import { type HttpClient, HttpStatusCode } from '@/core/data/protocols/http' +import { + BadRequestError, + ForbiddenError, + UnexpectedError, +} from '@/core/domain/errors' + +import type { UpdateAnimalChildbirthUseCase } from '../../../domain/use-cases/animal-childbirths-use-cases' + +export class RemoteUpdateAnimalChildbirthUseCase + implements UpdateAnimalChildbirthUseCase +{ + constructor( + private readonly url: string, + private readonly httpClient: HttpClient + ) {} + + execute: UpdateAnimalChildbirthUseCase['execute'] = async ({ + propertyId, + animalId, + animalChildbirth: { id, ...animalChildbirth }, + }) => { + const url = this.url + .replace(':propertyId', String(propertyId)) + .replace(':animalId', String(animalId)) + + const { statusCode } = await this.httpClient.request({ + url: `${url}/${id}`, + method: 'patch', + body: animalChildbirth, + }) + + if (statusCode === HttpStatusCode.noContent) return + + if (statusCode === HttpStatusCode.badRequest) throw new BadRequestError() + + if (statusCode === HttpStatusCode.forbidden) { + throw new ForbiddenError( + 'Você não tem permissão para editar um parto do animal' + ) + } + + throw new UnexpectedError() + } +} diff --git a/src/app/modules/animals/data/use-cases/animal-deaths-use-cases/index.ts b/src/app/modules/animals/data/use-cases/animal-deaths-use-cases/index.ts new file mode 100644 index 00000000..14436bed --- /dev/null +++ b/src/app/modules/animals/data/use-cases/animal-deaths-use-cases/index.ts @@ -0,0 +1,5 @@ +export * from './remote-create-animal-death-use-case' +export * from './remote-delete-animal-death-use-case' +export * from './remote-get-animal-death-use-case' +export * from './remote-get-animal-deaths-use-case' +export * from './remote-update-animal-death-use-case' diff --git a/src/app/modules/animals/data/use-cases/animal-deaths-use-cases/remote-create-animal-death-use-case.ts b/src/app/modules/animals/data/use-cases/animal-deaths-use-cases/remote-create-animal-death-use-case.ts new file mode 100644 index 00000000..5dc1ba10 --- /dev/null +++ b/src/app/modules/animals/data/use-cases/animal-deaths-use-cases/remote-create-animal-death-use-case.ts @@ -0,0 +1,45 @@ +import { type HttpClient, HttpStatusCode } from '@/core/data/protocols/http' +import { + BadRequestError, + ForbiddenError, + UnexpectedError, +} from '@/core/domain/errors' + +import type { CreateAnimalDeathUseCase } from '../../../domain/use-cases/animal-deaths-use-cases' + +export class RemoteCreateAnimalDeathUseCase + implements CreateAnimalDeathUseCase +{ + constructor( + private readonly url: string, + private readonly httpClient: HttpClient + ) {} + + execute: CreateAnimalDeathUseCase['execute'] = async ({ + propertyId, + animalId, + animalDeath, + }) => { + const url = this.url + .replace(':propertyId', String(propertyId)) + .replace(':animalId', String(animalId)) + + const { statusCode } = await this.httpClient.request({ + url, + method: 'post', + body: animalDeath, + }) + + if (statusCode === HttpStatusCode.created) return + + if (statusCode === HttpStatusCode.badRequest) throw new BadRequestError() + + if (statusCode === HttpStatusCode.forbidden) { + throw new ForbiddenError( + 'Você não tem permissão para criar óbito para este animal.' + ) + } + + throw new UnexpectedError() + } +} diff --git a/src/app/modules/animals/data/use-cases/animal-deaths-use-cases/remote-delete-animal-death-use-case.ts b/src/app/modules/animals/data/use-cases/animal-deaths-use-cases/remote-delete-animal-death-use-case.ts new file mode 100644 index 00000000..a3a70052 --- /dev/null +++ b/src/app/modules/animals/data/use-cases/animal-deaths-use-cases/remote-delete-animal-death-use-case.ts @@ -0,0 +1,46 @@ +import { type HttpClient, HttpStatusCode } from '@/core/data/protocols/http' +import { + UnexpectedError, + NotFoundError, + ForbiddenError, +} from '@/core/domain/errors' + +import type { DeleteAnimalDeathUseCase } from '../../../domain/use-cases/animal-deaths-use-cases' + +export class RemoteDeleteAnimalDeathUseCase + implements DeleteAnimalDeathUseCase +{ + constructor( + private readonly url: string, + private readonly httpClient: HttpClient + ) {} + + execute: DeleteAnimalDeathUseCase['execute'] = async ({ + propertyId, + animalId, + id, + }) => { + const url = this.url + .replace(':propertyId', String(propertyId)) + .replace(':animalId', String(animalId)) + + const { statusCode } = await this.httpClient.request({ + url: `${url}/${id}`, + method: 'delete', + }) + + if (statusCode === HttpStatusCode.noContent) return + + if (statusCode === HttpStatusCode.notFound) { + throw new NotFoundError('Óbito do Animal') + } + + if (statusCode === HttpStatusCode.forbidden) { + throw new ForbiddenError( + 'Você não tem permissão para excluir este óbito do animal.' + ) + } + + throw new UnexpectedError() + } +} diff --git a/src/app/modules/animals/data/use-cases/animal-deaths-use-cases/remote-get-animal-death-use-case.ts b/src/app/modules/animals/data/use-cases/animal-deaths-use-cases/remote-get-animal-death-use-case.ts new file mode 100644 index 00000000..82b89fc1 --- /dev/null +++ b/src/app/modules/animals/data/use-cases/animal-deaths-use-cases/remote-get-animal-death-use-case.ts @@ -0,0 +1,55 @@ +import { type HttpClient, HttpStatusCode } from '@/core/data/protocols/http' +import { + UnexpectedError, + NotFoundError, + ForbiddenError, +} from '@/core/domain/errors' + +import type { + AnimalDeathDetailsModel, + AnimalDeathDetailsApiResponse, +} from '../../../domain/models/animal-deaths-model' +import type { GetAnimalDeathUseCase } from '../../../domain/use-cases/animal-deaths-use-cases' + +export class RemoteGetAnimalDeathUseCase implements GetAnimalDeathUseCase { + constructor( + private readonly url: string, + private readonly httpClient: HttpClient< + AnimalDeathDetailsModel, + AnimalDeathDetailsApiResponse + > + ) {} + + execute: GetAnimalDeathUseCase['execute'] = async ({ + id, + animalId, + propertyId, + }) => { + const url = this.url + .replace(':propertyId', String(propertyId)) + .replace(':animalId', String(animalId)) + + const { statusCode, body } = await this.httpClient.request({ + url: `${url}/${id}`, + method: 'get', + }) + + if (statusCode === HttpStatusCode.ok && !!body) { + return { + date: new Date(body.date), + reason: body.reason, + } + } + + if (statusCode === HttpStatusCode.notFound) + throw new NotFoundError('Óbito do Animal') + + if (statusCode === HttpStatusCode.forbidden) { + throw new ForbiddenError( + 'Você não tem permissão para buscar óbito deste animal.' + ) + } + + throw new UnexpectedError() + } +} diff --git a/src/app/modules/animals/data/use-cases/animal-deaths-use-cases/remote-get-animal-deaths-use-case.ts b/src/app/modules/animals/data/use-cases/animal-deaths-use-cases/remote-get-animal-deaths-use-case.ts new file mode 100644 index 00000000..aac0a92f --- /dev/null +++ b/src/app/modules/animals/data/use-cases/animal-deaths-use-cases/remote-get-animal-deaths-use-case.ts @@ -0,0 +1,79 @@ +import { type HttpClient, HttpStatusCode } from '@/core/data/protocols/http' +import { + UnexpectedError, + NotFoundError, + ForbiddenError, +} from '@/core/domain/errors' + +import type { + AnimalDeathApiResponse, + AnimalDeathModel, +} from '../../../domain/models/animal-deaths-model' +import type { GetAnimalDeathsUseCase } from '../../../domain/use-cases/animal-deaths-use-cases' +import type { ListApiResponse, MapApiProperties } from '@/core/domain/types' + +export class RemoteGetAnimalDeathsUseCase implements GetAnimalDeathsUseCase { + constructor( + private readonly url: string, + private readonly httpClient: HttpClient< + AnimalDeathModel, + AnimalDeathApiResponse, + ListApiResponse + > + ) {} + + execute: GetAnimalDeathsUseCase['execute'] = async ({ + propertyId, + animalId, + filters, + pagination, + sort, + }) => { + const mapApiProperties: MapApiProperties< + AnimalDeathModel, + AnimalDeathApiResponse + > = { + id: 'id', + date: 'date', + reason: 'reason', + } + + const url = this.url + .replace(':propertyId', String(propertyId)) + .replace(':animalId', String(animalId)) + + const { statusCode, body } = await this.httpClient.request({ + url: `${url}/search`, + method: 'post', + filters, + pagination, + sort, + mapApiProperties, + }) + + if (statusCode === HttpStatusCode.ok && !!body) { + return { + resources: body.content.map((item) => { + return { + id: item.id, + date: new Date(item.date), + reason: item.reason, + } + }), + totalPages: Math.ceil(body.numberOfElements / body.pageable.pageSize), + } + } + + if (statusCode === HttpStatusCode.notFound) { + throw new NotFoundError('Óbitos do Animal') + } + + if (statusCode === HttpStatusCode.forbidden) { + throw new ForbiddenError( + 'Você não tem permissão para buscar óbitos deste animal.' + ) + } + + throw new UnexpectedError() + } +} diff --git a/src/app/modules/animals/data/use-cases/animal-deaths-use-cases/remote-update-animal-death-use-case.ts b/src/app/modules/animals/data/use-cases/animal-deaths-use-cases/remote-update-animal-death-use-case.ts new file mode 100644 index 00000000..fe31a31b --- /dev/null +++ b/src/app/modules/animals/data/use-cases/animal-deaths-use-cases/remote-update-animal-death-use-case.ts @@ -0,0 +1,45 @@ +import { type HttpClient, HttpStatusCode } from '@/core/data/protocols/http' +import { + BadRequestError, + ForbiddenError, + UnexpectedError, +} from '@/core/domain/errors' + +import type { UpdateAnimalDeathUseCase } from '../../../domain/use-cases/animal-deaths-use-cases' + +export class RemoteUpdateAnimalDeathUseCase + implements UpdateAnimalDeathUseCase +{ + constructor( + private readonly url: string, + private readonly httpClient: HttpClient + ) {} + + execute: UpdateAnimalDeathUseCase['execute'] = async ({ + propertyId, + animalId, + animalDeath: { id, ...animalDeath }, + }) => { + const url = this.url + .replace(':propertyId', String(propertyId)) + .replace(':animalId', String(animalId)) + + const { statusCode } = await this.httpClient.request({ + url: `${url}/${id}`, + method: 'patch', + body: animalDeath, + }) + + if (statusCode === HttpStatusCode.noContent) return + + if (statusCode === HttpStatusCode.badRequest) throw new BadRequestError() + + if (statusCode === HttpStatusCode.forbidden) { + throw new ForbiddenError( + 'Você não tem permissão para editar este óbito do animal.' + ) + } + + throw new UnexpectedError() + } +} diff --git a/src/app/modules/animals/data/use-cases/animal-diseases-use-cases/index.ts b/src/app/modules/animals/data/use-cases/animal-diseases-use-cases/index.ts new file mode 100644 index 00000000..d09eecd7 --- /dev/null +++ b/src/app/modules/animals/data/use-cases/animal-diseases-use-cases/index.ts @@ -0,0 +1,5 @@ +export * from './remote-create-animal-disease-use-case' +export * from './remote-delete-animal-disease-use-case' +export * from './remote-get-animal-disease-use-case' +export * from './remote-get-animal-diseases-use-case' +export * from './remote-update-animal-disease-use-case' diff --git a/src/app/modules/animals/data/use-cases/animal-diseases-use-cases/remote-create-animal-disease-use-case.ts b/src/app/modules/animals/data/use-cases/animal-diseases-use-cases/remote-create-animal-disease-use-case.ts new file mode 100644 index 00000000..4035e64d --- /dev/null +++ b/src/app/modules/animals/data/use-cases/animal-diseases-use-cases/remote-create-animal-disease-use-case.ts @@ -0,0 +1,45 @@ +import { type HttpClient, HttpStatusCode } from '@/core/data/protocols/http' +import { + BadRequestError, + ForbiddenError, + UnexpectedError, +} from '@/core/domain/errors' + +import type { CreateAnimalDiseaseUseCase } from '../../../domain/use-cases/animal-diseases-use-cases' + +export class RemoteCreateAnimalDiseaseUseCase + implements CreateAnimalDiseaseUseCase +{ + constructor( + private readonly url: string, + private readonly httpClient: HttpClient + ) {} + + execute: CreateAnimalDiseaseUseCase['execute'] = async ({ + propertyId, + animalId, + animalDisease, + }) => { + const url = this.url + .replace(':propertyId', String(propertyId)) + .replace(':animalId', String(animalId)) + + const { statusCode } = await this.httpClient.request({ + url, + method: 'post', + body: animalDisease, + }) + + if (statusCode === HttpStatusCode.created) return + + if (statusCode === HttpStatusCode.badRequest) throw new BadRequestError() + + if (statusCode === HttpStatusCode.forbidden) { + throw new ForbiddenError( + 'Você não tem permissão para criar uma nova doença para o animal' + ) + } + + throw new UnexpectedError() + } +} diff --git a/src/app/modules/animals/data/use-cases/animal-diseases-use-cases/remote-delete-animal-disease-use-case.ts b/src/app/modules/animals/data/use-cases/animal-diseases-use-cases/remote-delete-animal-disease-use-case.ts new file mode 100644 index 00000000..046002cd --- /dev/null +++ b/src/app/modules/animals/data/use-cases/animal-diseases-use-cases/remote-delete-animal-disease-use-case.ts @@ -0,0 +1,46 @@ +import { type HttpClient, HttpStatusCode } from '@/core/data/protocols/http' +import { + UnexpectedError, + NotFoundError, + ForbiddenError, +} from '@/core/domain/errors' + +import type { DeleteAnimalDiseaseUseCase } from '../../../domain/use-cases/animal-diseases-use-cases' + +export class RemoteDeleteAnimalDiseaseUseCase + implements DeleteAnimalDiseaseUseCase +{ + constructor( + private readonly url: string, + private readonly httpClient: HttpClient + ) {} + + execute: DeleteAnimalDiseaseUseCase['execute'] = async ({ + propertyId, + animalId, + id, + }) => { + const url = this.url + .replace(':propertyId', String(propertyId)) + .replace(':animalId', String(animalId)) + + const { statusCode } = await this.httpClient.request({ + url: `${url}/${id}`, + method: 'delete', + }) + + if (statusCode === HttpStatusCode.noContent) return + + if (statusCode === HttpStatusCode.notFound) { + throw new NotFoundError('Doença do Animal') + } + + if (statusCode === HttpStatusCode.forbidden) { + throw new ForbiddenError( + 'Você não tem permissão para excluir a doença deste animal' + ) + } + + throw new UnexpectedError() + } +} diff --git a/src/app/modules/animals/data/use-cases/animal-diseases-use-cases/remote-get-animal-disease-use-case.ts b/src/app/modules/animals/data/use-cases/animal-diseases-use-cases/remote-get-animal-disease-use-case.ts new file mode 100644 index 00000000..0b40a1e6 --- /dev/null +++ b/src/app/modules/animals/data/use-cases/animal-diseases-use-cases/remote-get-animal-disease-use-case.ts @@ -0,0 +1,55 @@ +import { type HttpClient, HttpStatusCode } from '@/core/data/protocols/http' +import { + UnexpectedError, + NotFoundError, + ForbiddenError, +} from '@/core/domain/errors' + +import type { + AnimalDiseaseDetailsModel, + AnimalDiseaseDetailsApiResponse, +} from '../../../domain/models/animal-diseases-model' +import type { GetAnimalDiseaseUseCase } from '../../../domain/use-cases/animal-diseases-use-cases' + +export class RemoteGetAnimalDiseaseUseCase implements GetAnimalDiseaseUseCase { + constructor( + private readonly url: string, + private readonly httpClient: HttpClient< + AnimalDiseaseDetailsModel, + AnimalDiseaseDetailsApiResponse + > + ) {} + + execute: GetAnimalDiseaseUseCase['execute'] = async ({ + id, + animalId, + propertyId, + }) => { + const url = this.url + .replace(':propertyId', String(propertyId)) + .replace(':animalId', String(animalId)) + + const { statusCode, body } = await this.httpClient.request({ + url: `${url}/${id}`, + method: 'get', + }) + + if (statusCode === HttpStatusCode.ok && !!body) { + return { + diagnosticDate: new Date(body.diagnosticDate), + diagnostic: body.diagnostic, + } + } + + if (statusCode === HttpStatusCode.notFound) + throw new NotFoundError('Doença do Animal') + + if (statusCode === HttpStatusCode.forbidden) { + throw new ForbiddenError( + 'Você não tem permissão para buscar uma doença do animal' + ) + } + + throw new UnexpectedError() + } +} diff --git a/src/app/modules/animals/data/use-cases/animal-diseases-use-cases/remote-get-animal-diseases-use-case.ts b/src/app/modules/animals/data/use-cases/animal-diseases-use-cases/remote-get-animal-diseases-use-case.ts new file mode 100644 index 00000000..1a170de2 --- /dev/null +++ b/src/app/modules/animals/data/use-cases/animal-diseases-use-cases/remote-get-animal-diseases-use-case.ts @@ -0,0 +1,81 @@ +import { type HttpClient, HttpStatusCode } from '@/core/data/protocols/http' +import { + UnexpectedError, + NotFoundError, + ForbiddenError, +} from '@/core/domain/errors' + +import type { + AnimalDiseaseApiResponse, + AnimalDiseaseModel, +} from '../../../domain/models/animal-diseases-model' +import type { GetAnimalDiseasesUseCase } from '../../../domain/use-cases/animal-diseases-use-cases' +import type { ListApiResponse, MapApiProperties } from '@/core/domain/types' + +export class RemoteGetAnimalDiseasesUseCase + implements GetAnimalDiseasesUseCase +{ + constructor( + private readonly url: string, + private readonly httpClient: HttpClient< + AnimalDiseaseModel, + AnimalDiseaseApiResponse, + ListApiResponse + > + ) {} + + execute: GetAnimalDiseasesUseCase['execute'] = async ({ + propertyId, + animalId, + filters, + pagination, + sort, + }) => { + const mapApiProperties: MapApiProperties< + AnimalDiseaseModel, + AnimalDiseaseApiResponse + > = { + id: 'id', + diagnosticDate: 'diagnosticDate', + diagnostic: 'diagnostic', + } + + const url = this.url + .replace(':propertyId', String(propertyId)) + .replace(':animalId', String(animalId)) + + const { statusCode, body } = await this.httpClient.request({ + url: `${url}/search`, + method: 'post', + filters, + pagination, + sort, + mapApiProperties, + }) + + if (statusCode === HttpStatusCode.ok && !!body) { + return { + resources: body.content.map((item) => { + return { + id: item.id, + diagnosticDate: new Date(item.diagnosticDate), + diagnostic: item.diagnostic, + } + }), + totalPages: Math.ceil(body.numberOfElements / body.pageable.pageSize), + } + } + + if (statusCode === HttpStatusCode.notFound) { + throw new NotFoundError('Doenças do Animal') + } + + if (statusCode === HttpStatusCode.forbidden) { + throw new ForbiddenError( + 'Você não tem permissão para buscar as doenças do animal' + ) + } + + throw new UnexpectedError() + } +} diff --git a/src/app/modules/animals/data/use-cases/animal-diseases-use-cases/remote-update-animal-disease-use-case.ts b/src/app/modules/animals/data/use-cases/animal-diseases-use-cases/remote-update-animal-disease-use-case.ts new file mode 100644 index 00000000..32593dd2 --- /dev/null +++ b/src/app/modules/animals/data/use-cases/animal-diseases-use-cases/remote-update-animal-disease-use-case.ts @@ -0,0 +1,45 @@ +import { type HttpClient, HttpStatusCode } from '@/core/data/protocols/http' +import { + BadRequestError, + ForbiddenError, + UnexpectedError, +} from '@/core/domain/errors' + +import type { UpdateAnimalDiseaseUseCase } from '../../../domain/use-cases/animal-diseases-use-cases' + +export class RemoteUpdateAnimalDiseaseUseCase + implements UpdateAnimalDiseaseUseCase +{ + constructor( + private readonly url: string, + private readonly httpClient: HttpClient + ) {} + + execute: UpdateAnimalDiseaseUseCase['execute'] = async ({ + propertyId, + animalId, + animalDisease: { id, ...animalDisease }, + }) => { + const url = this.url + .replace(':propertyId', String(propertyId)) + .replace(':animalId', String(animalId)) + + const { statusCode } = await this.httpClient.request({ + url: `${url}/${id}`, + method: 'patch', + body: animalDisease, + }) + + if (statusCode === HttpStatusCode.noContent) return + + if (statusCode === HttpStatusCode.badRequest) throw new BadRequestError() + + if (statusCode === HttpStatusCode.forbidden) { + throw new ForbiddenError( + 'Você não tem permissão para editar uma doença do animal' + ) + } + + throw new UnexpectedError() + } +} diff --git a/src/app/modules/animals/data/use-cases/animal-heifer-calf-stages-use-cases/index.ts b/src/app/modules/animals/data/use-cases/animal-heifer-calf-stages-use-cases/index.ts new file mode 100644 index 00000000..8b4eb2a7 --- /dev/null +++ b/src/app/modules/animals/data/use-cases/animal-heifer-calf-stages-use-cases/index.ts @@ -0,0 +1,6 @@ +export * from './remote-create-animal-heifer-calf-stage-use-case' +export * from './remote-delete-animal-heifer-calf-stage-use-case' +export * from './remote-get-animal-heifer-calf-stage-use-case' +export * from './remote-get-animal-heifer-calf-stages-use-case' +export * from './remote-update-animal-heifer-calf-stage-use-case' +export * from './remote-get-animal-heifer-calf-stage-additional-data-use-case' diff --git a/src/app/modules/animals/data/use-cases/animal-heifer-calf-stages-use-cases/remote-create-animal-heifer-calf-stage-use-case.ts b/src/app/modules/animals/data/use-cases/animal-heifer-calf-stages-use-cases/remote-create-animal-heifer-calf-stage-use-case.ts new file mode 100644 index 00000000..f704b357 --- /dev/null +++ b/src/app/modules/animals/data/use-cases/animal-heifer-calf-stages-use-cases/remote-create-animal-heifer-calf-stage-use-case.ts @@ -0,0 +1,45 @@ +import { type HttpClient, HttpStatusCode } from '@/core/data/protocols/http' +import { + BadRequestError, + ForbiddenError, + UnexpectedError, +} from '@/core/domain/errors' + +import type { CreateAnimalHeiferCalfStageUseCase } from '../../../domain/use-cases/animal-heifer-calf-stages-use-cases' + +export class RemoteCreateAnimalHeiferCalfStageUseCase + implements CreateAnimalHeiferCalfStageUseCase +{ + constructor( + private readonly url: string, + private readonly httpClient: HttpClient + ) {} + + execute: CreateAnimalHeiferCalfStageUseCase['execute'] = async ({ + propertyId, + animalId, + animalHeiferCalfStage, + }) => { + const url = this.url + .replace(':propertyId', String(propertyId)) + .replace(':animalId', String(animalId)) + + const { statusCode } = await this.httpClient.request({ + url, + method: 'post', + body: animalHeiferCalfStage, + }) + + if (statusCode === HttpStatusCode.created) return + + if (statusCode === HttpStatusCode.badRequest) throw new BadRequestError() + + if (statusCode === HttpStatusCode.forbidden) { + throw new ForbiddenError( + 'Você não tem permissão para criar um novo registro em fase bezerra novilha' + ) + } + + throw new UnexpectedError() + } +} diff --git a/src/app/modules/animals/data/use-cases/animal-heifer-calf-stages-use-cases/remote-delete-animal-heifer-calf-stage-use-case.ts b/src/app/modules/animals/data/use-cases/animal-heifer-calf-stages-use-cases/remote-delete-animal-heifer-calf-stage-use-case.ts new file mode 100644 index 00000000..73303633 --- /dev/null +++ b/src/app/modules/animals/data/use-cases/animal-heifer-calf-stages-use-cases/remote-delete-animal-heifer-calf-stage-use-case.ts @@ -0,0 +1,46 @@ +import { type HttpClient, HttpStatusCode } from '@/core/data/protocols/http' +import { + UnexpectedError, + NotFoundError, + ForbiddenError, +} from '@/core/domain/errors' + +import type { DeleteAnimalHeiferCalfStageUseCase } from '../../../domain/use-cases/animal-heifer-calf-stages-use-cases' + +export class RemoteDeleteAnimalHeiferCalfStageUseCase + implements DeleteAnimalHeiferCalfStageUseCase +{ + constructor( + private readonly url: string, + private readonly httpClient: HttpClient + ) {} + + execute: DeleteAnimalHeiferCalfStageUseCase['execute'] = async ({ + propertyId, + animalId, + id, + }) => { + const url = this.url + .replace(':propertyId', String(propertyId)) + .replace(':animalId', String(animalId)) + + const { statusCode } = await this.httpClient.request({ + url: `${url}/${id}`, + method: 'delete', + }) + + if (statusCode === HttpStatusCode.noContent) return + + if (statusCode === HttpStatusCode.notFound) { + throw new NotFoundError('Fase bezerra novilha') + } + + if (statusCode === HttpStatusCode.forbidden) { + throw new ForbiddenError( + 'Você não tem permissão para excluir a fase bezerra novilha' + ) + } + + throw new UnexpectedError() + } +} diff --git a/src/app/modules/animals/data/use-cases/animal-heifer-calf-stages-use-cases/remote-get-animal-heifer-calf-stage-additional-data-use-case.ts b/src/app/modules/animals/data/use-cases/animal-heifer-calf-stages-use-cases/remote-get-animal-heifer-calf-stage-additional-data-use-case.ts new file mode 100644 index 00000000..197a5743 --- /dev/null +++ b/src/app/modules/animals/data/use-cases/animal-heifer-calf-stages-use-cases/remote-get-animal-heifer-calf-stage-additional-data-use-case.ts @@ -0,0 +1,78 @@ +import { type HttpClient, HttpStatusCode } from '@/core/data/protocols/http' +import { + UnexpectedError, + NotFoundError, + ForbiddenError, +} from '@/core/domain/errors' + +import type { + AnimalHeiferCalfStageAdditionalDataApiResponse, + AnimalHeiferCalfStageAdditionalDataModel, + GMDStatus, + ReproductionStatus, +} from '../../../domain/models/animal-heifer-calf-stages-model' +import type { GetAnimalHeiferCalfStageAdditionalDataUseCase } from '../../../domain/use-cases/animal-heifer-calf-stages-use-cases' + +export class RemoteGetAnimalHeiferCalfStageAdditionalDataUseCase + implements GetAnimalHeiferCalfStageAdditionalDataUseCase +{ + constructor( + private readonly url: string, + private readonly httpClient: HttpClient< + AnimalHeiferCalfStageAdditionalDataModel, + AnimalHeiferCalfStageAdditionalDataApiResponse + > + ) {} + + execute: GetAnimalHeiferCalfStageAdditionalDataUseCase['execute'] = async ({ + animalId, + propertyId, + }) => { + const url = this.url + .replace(':propertyId', String(propertyId)) + .replace(':animalId', String(animalId)) + + const { statusCode, body } = await this.httpClient.request({ + url, + method: 'get', + }) + + if (statusCode === HttpStatusCode.ok && !!body) { + return { + age: body.age, + weighing: body.weighing, + ageWeightEstimate: body.ageWeightEstimate, + gmd: { + ...body.gmd, + status: body.gmd.status as GMDStatus, + }, + amountOfMilk: body.amountOfMilk, + weaningDate: { + first: new Date(body.weaningDate.first), + second: new Date(body.weaningDate.second), + }, + removeLittleHouseDate: new Date(body.removeLittleHouseDate), + amountOfEstimateConcentrate: body.amountOfEstimateConcentrate, + bulky: body.bulky, + dateToProvideSilage: new Date(body.dateToProvideSilage), + reproduction: { + ...body.reproduction, + status: body.reproduction.status as ReproductionStatus, + carriedOut: new Date(body.reproduction.carriedOut), + fromDate: new Date(body.reproduction.fromDate), + }, + } + } + + if (statusCode === HttpStatusCode.notFound) + throw new NotFoundError('Dados adicionais de Fase bezerra novilha') + + if (statusCode === HttpStatusCode.forbidden) { + throw new ForbiddenError( + 'Você não tem permissão para buscar os dados adicionais de uma fase bezerra novilha' + ) + } + + throw new UnexpectedError() + } +} diff --git a/src/app/modules/animals/data/use-cases/animal-heifer-calf-stages-use-cases/remote-get-animal-heifer-calf-stage-use-case.ts b/src/app/modules/animals/data/use-cases/animal-heifer-calf-stages-use-cases/remote-get-animal-heifer-calf-stage-use-case.ts new file mode 100644 index 00000000..e0cb7d3f --- /dev/null +++ b/src/app/modules/animals/data/use-cases/animal-heifer-calf-stages-use-cases/remote-get-animal-heifer-calf-stage-use-case.ts @@ -0,0 +1,81 @@ +import { type HttpClient, HttpStatusCode } from '@/core/data/protocols/http' +import { + UnexpectedError, + NotFoundError, + ForbiddenError, +} from '@/core/domain/errors' + +import type { + AnimalHeiferCalfStageDetailsApiResponse, + AnimalHeiferCalfStageDetailsModel, + GMDStatus, + ReproductionStatus, +} from '../../../domain/models/animal-heifer-calf-stages-model' +import type { GetAnimalHeiferCalfStageUseCase } from '../../../domain/use-cases/animal-heifer-calf-stages-use-cases' + +export class RemoteGetAnimalHeiferCalfStageUseCase + implements GetAnimalHeiferCalfStageUseCase +{ + constructor( + private readonly url: string, + private readonly httpClient: HttpClient< + AnimalHeiferCalfStageDetailsModel, + AnimalHeiferCalfStageDetailsApiResponse + > + ) {} + + execute: GetAnimalHeiferCalfStageUseCase['execute'] = async ({ + id, + animalId, + propertyId, + }) => { + const url = this.url + .replace(':propertyId', String(propertyId)) + .replace(':animalId', String(animalId)) + + const { statusCode, body } = await this.httpClient.request({ + url: `${url}/${id}`, + method: 'get', + }) + + if (statusCode === HttpStatusCode.ok && !!body) { + return { + weighingDate: new Date(body.weighingDate), + ecc: body.ecc, + age: body.age, + weighing: body.weighing, + ageWeightEstimate: body.ageWeightEstimate, + gmd: { + ...body.gmd, + status: body.gmd.status as GMDStatus, + }, + amountOfMilk: body.amountOfMilk, + weaningDate: { + first: new Date(body.weaningDate.first), + second: new Date(body.weaningDate.second), + }, + removeLittleHouseDate: new Date(body.removeLittleHouseDate), + amountOfEstimateConcentrate: body.amountOfEstimateConcentrate, + bulky: body.bulky, + dateToProvideSilage: new Date(body.dateToProvideSilage), + reproduction: { + ...body.reproduction, + status: body.reproduction.status as ReproductionStatus, + carriedOut: new Date(body.reproduction.carriedOut), + fromDate: new Date(body.reproduction.fromDate), + }, + } + } + + if (statusCode === HttpStatusCode.notFound) + throw new NotFoundError('Fase bezerra novilha') + + if (statusCode === HttpStatusCode.forbidden) { + throw new ForbiddenError( + 'Você não tem permissão para buscar uma fase bezerra novilha' + ) + } + + throw new UnexpectedError() + } +} diff --git a/src/app/modules/animals/data/use-cases/animal-heifer-calf-stages-use-cases/remote-get-animal-heifer-calf-stages-use-case.ts b/src/app/modules/animals/data/use-cases/animal-heifer-calf-stages-use-cases/remote-get-animal-heifer-calf-stages-use-case.ts new file mode 100644 index 00000000..ecdfae8e --- /dev/null +++ b/src/app/modules/animals/data/use-cases/animal-heifer-calf-stages-use-cases/remote-get-animal-heifer-calf-stages-use-case.ts @@ -0,0 +1,85 @@ +import { type HttpClient, HttpStatusCode } from '@/core/data/protocols/http' +import { + UnexpectedError, + NotFoundError, + ForbiddenError, +} from '@/core/domain/errors' + +import type { + AnimalHeiferCalfStageApiResponse, + AnimalHeiferCalfStageModel, +} from '../../../domain/models/animal-heifer-calf-stages-model' +import type { GetAnimalHeiferCalfStagesUseCase } from '../../../domain/use-cases/animal-heifer-calf-stages-use-cases' +import type { ListApiResponse, MapApiProperties } from '@/core/domain/types' + +export class RemoteGetAnimalHeiferCalfStagesUseCase + implements GetAnimalHeiferCalfStagesUseCase +{ + constructor( + private readonly url: string, + private readonly httpClient: HttpClient< + AnimalHeiferCalfStageModel, + AnimalHeiferCalfStageApiResponse, + ListApiResponse + > + ) {} + + execute: GetAnimalHeiferCalfStagesUseCase['execute'] = async ({ + propertyId, + animalId, + filters, + pagination, + sort, + }) => { + const mapApiProperties: MapApiProperties< + AnimalHeiferCalfStageModel, + AnimalHeiferCalfStageApiResponse + > = { + id: 'id', + weighingDate: 'weighingDate', + weight: 'weight', + ecc: 'ecc', + age: 'age', + } + + const url = this.url + .replace(':propertyId', String(propertyId)) + .replace(':animalId', String(animalId)) + + const { statusCode, body } = await this.httpClient.request({ + url: `${url}/search`, + method: 'post', + filters, + pagination, + sort, + mapApiProperties, + }) + + if (statusCode === HttpStatusCode.ok && !!body) { + return { + resources: body.content.map((item) => { + return { + id: item.id, + weighingDate: new Date(item.weighingDate), + weight: item.weight, + ecc: item.ecc, + age: item.age, + } + }), + totalPages: Math.ceil(body.numberOfElements / body.pageable.pageSize), + } + } + + if (statusCode === HttpStatusCode.notFound) { + throw new NotFoundError('Fases bezerra novilha') + } + + if (statusCode === HttpStatusCode.forbidden) { + throw new ForbiddenError( + 'Você não tem permissão para buscar as fases bezerra novilha' + ) + } + + throw new UnexpectedError() + } +} diff --git a/src/app/modules/animals/data/use-cases/animal-heifer-calf-stages-use-cases/remote-update-animal-heifer-calf-stage-use-case.ts b/src/app/modules/animals/data/use-cases/animal-heifer-calf-stages-use-cases/remote-update-animal-heifer-calf-stage-use-case.ts new file mode 100644 index 00000000..db084f69 --- /dev/null +++ b/src/app/modules/animals/data/use-cases/animal-heifer-calf-stages-use-cases/remote-update-animal-heifer-calf-stage-use-case.ts @@ -0,0 +1,45 @@ +import { type HttpClient, HttpStatusCode } from '@/core/data/protocols/http' +import { + BadRequestError, + ForbiddenError, + UnexpectedError, +} from '@/core/domain/errors' + +import type { UpdateAnimalHeiferCalfStageUseCase } from '../../../domain/use-cases/animal-heifer-calf-stages-use-cases' + +export class RemoteUpdateAnimalHeiferCalfStageUseCase + implements UpdateAnimalHeiferCalfStageUseCase +{ + constructor( + private readonly url: string, + private readonly httpClient: HttpClient + ) {} + + execute: UpdateAnimalHeiferCalfStageUseCase['execute'] = async ({ + propertyId, + animalId, + animalHeiferCalfStage: { id, ...animalHeiferCalfStage }, + }) => { + const url = this.url + .replace(':propertyId', String(propertyId)) + .replace(':animalId', String(animalId)) + + const { statusCode } = await this.httpClient.request({ + url: `${url}/${id}`, + method: 'patch', + body: animalHeiferCalfStage, + }) + + if (statusCode === HttpStatusCode.noContent) return + + if (statusCode === HttpStatusCode.badRequest) throw new BadRequestError() + + if (statusCode === HttpStatusCode.forbidden) { + throw new ForbiddenError( + 'Você não tem permissão para editar uma fase bezerra novilha' + ) + } + + throw new UnexpectedError() + } +} diff --git a/src/app/modules/animals/data/use-cases/animal-pregnancy-diagnoses-use-cases/index.ts b/src/app/modules/animals/data/use-cases/animal-pregnancy-diagnoses-use-cases/index.ts new file mode 100644 index 00000000..f9a94364 --- /dev/null +++ b/src/app/modules/animals/data/use-cases/animal-pregnancy-diagnoses-use-cases/index.ts @@ -0,0 +1,5 @@ +export * from './remote-create-animal-pregnancy-diagnosis-use-case' +export * from './remote-delete-animal-pregnancy-diagnosis-use-case' +export * from './remote-get-animal-pregnancy-diagnosis-use-case' +export * from './remote-get-animal-pregnancy-diagnoses-use-case' +export * from './remote-update-animal-pregnancy-diagnosis-use-case' diff --git a/src/app/modules/animals/data/use-cases/animal-pregnancy-diagnoses-use-cases/remote-create-animal-pregnancy-diagnosis-use-case.ts b/src/app/modules/animals/data/use-cases/animal-pregnancy-diagnoses-use-cases/remote-create-animal-pregnancy-diagnosis-use-case.ts new file mode 100644 index 00000000..42d474db --- /dev/null +++ b/src/app/modules/animals/data/use-cases/animal-pregnancy-diagnoses-use-cases/remote-create-animal-pregnancy-diagnosis-use-case.ts @@ -0,0 +1,45 @@ +import { type HttpClient, HttpStatusCode } from '@/core/data/protocols/http' +import { + BadRequestError, + ForbiddenError, + UnexpectedError, +} from '@/core/domain/errors' + +import type { CreateAnimalPregnancyDiagnosisUseCase } from '../../../domain/use-cases/animal-pregnancy-diagnoses-use-cases' + +export class RemoteCreateAnimalPregnancyDiagnosisUseCase + implements CreateAnimalPregnancyDiagnosisUseCase +{ + constructor( + private readonly url: string, + private readonly httpClient: HttpClient + ) {} + + execute: CreateAnimalPregnancyDiagnosisUseCase['execute'] = async ({ + propertyId, + animalId, + animalPregnancyDiagnosis, + }) => { + const url = this.url + .replace(':propertyId', String(propertyId)) + .replace(':animalId', String(animalId)) + + const { statusCode } = await this.httpClient.request({ + url, + method: 'post', + body: animalPregnancyDiagnosis, + }) + + if (statusCode === HttpStatusCode.created) return + + if (statusCode === HttpStatusCode.badRequest) throw new BadRequestError() + + if (statusCode === HttpStatusCode.forbidden) { + throw new ForbiddenError( + 'Você não tem permissão para criar um diagnóstico de gestação para este animal' + ) + } + + throw new UnexpectedError() + } +} diff --git a/src/app/modules/animals/data/use-cases/animal-pregnancy-diagnoses-use-cases/remote-delete-animal-pregnancy-diagnosis-use-case.ts b/src/app/modules/animals/data/use-cases/animal-pregnancy-diagnoses-use-cases/remote-delete-animal-pregnancy-diagnosis-use-case.ts new file mode 100644 index 00000000..e28f6a8e --- /dev/null +++ b/src/app/modules/animals/data/use-cases/animal-pregnancy-diagnoses-use-cases/remote-delete-animal-pregnancy-diagnosis-use-case.ts @@ -0,0 +1,46 @@ +import { type HttpClient, HttpStatusCode } from '@/core/data/protocols/http' +import { + UnexpectedError, + NotFoundError, + ForbiddenError, +} from '@/core/domain/errors' + +import type { DeleteAnimalPregnancyDiagnosisUseCase } from '../../../domain/use-cases/animal-pregnancy-diagnoses-use-cases' + +export class RemoteDeleteAnimalPregnancyDiagnosisUseCase + implements DeleteAnimalPregnancyDiagnosisUseCase +{ + constructor( + private readonly url: string, + private readonly httpClient: HttpClient + ) {} + + execute: DeleteAnimalPregnancyDiagnosisUseCase['execute'] = async ({ + propertyId, + animalId, + id, + }) => { + const url = this.url + .replace(':propertyId', String(propertyId)) + .replace(':animalId', String(animalId)) + + const { statusCode } = await this.httpClient.request({ + url: `${url}/${id}`, + method: 'delete', + }) + + if (statusCode === HttpStatusCode.noContent) return + + if (statusCode === HttpStatusCode.notFound) { + throw new NotFoundError('Diagnóstico de Gestação do Animal') + } + + if (statusCode === HttpStatusCode.forbidden) { + throw new ForbiddenError( + 'Você não tem permissão para excluir o diagnóstico de gestação deste animal' + ) + } + + throw new UnexpectedError() + } +} diff --git a/src/app/modules/animals/data/use-cases/animal-pregnancy-diagnoses-use-cases/remote-get-animal-pregnancy-diagnoses-use-case.ts b/src/app/modules/animals/data/use-cases/animal-pregnancy-diagnoses-use-cases/remote-get-animal-pregnancy-diagnoses-use-case.ts new file mode 100644 index 00000000..42f88196 --- /dev/null +++ b/src/app/modules/animals/data/use-cases/animal-pregnancy-diagnoses-use-cases/remote-get-animal-pregnancy-diagnoses-use-case.ts @@ -0,0 +1,81 @@ +import { type HttpClient, HttpStatusCode } from '@/core/data/protocols/http' +import { + UnexpectedError, + NotFoundError, + ForbiddenError, +} from '@/core/domain/errors' + +import type { + AnimalPregnancyDiagnosisModel, + AnimalPregnancyDiagnosisApiResponse, +} from '../../../domain/models/animal-pregnancy-diagnoses-model' +import type { GetAnimalPregnancyDiagnosesUseCase } from '../../../domain/use-cases/animal-pregnancy-diagnoses-use-cases' +import type { ListApiResponse, MapApiProperties } from '@/core/domain/types' + +export class RemoteGetAnimalPregnancyDiagnosesUseCase + implements GetAnimalPregnancyDiagnosesUseCase +{ + constructor( + private readonly url: string, + private readonly httpClient: HttpClient< + AnimalPregnancyDiagnosisModel, + AnimalPregnancyDiagnosisApiResponse, + ListApiResponse + > + ) {} + + execute: GetAnimalPregnancyDiagnosesUseCase['execute'] = async ({ + propertyId, + animalId, + filters, + pagination, + sort, + }) => { + const mapApiProperties: MapApiProperties< + AnimalPregnancyDiagnosisModel, + AnimalPregnancyDiagnosisApiResponse + > = { + id: 'id', + date: 'date', + lastInseminationDate: 'lastInseminationDate', + } + + const url = this.url + .replace(':propertyId', String(propertyId)) + .replace(':animalId', String(animalId)) + + const { statusCode, body } = await this.httpClient.request({ + url: `${url}/search`, + method: 'post', + filters, + pagination, + sort, + mapApiProperties, + }) + + if (statusCode === HttpStatusCode.ok && !!body) { + return { + resources: body.content.map((item) => { + return { + id: item.id, + date: new Date(item.date), + lastInseminationDate: new Date(item.lastInseminationDate), + } + }), + totalPages: Math.ceil(body.numberOfElements / body.pageable.pageSize), + } + } + + if (statusCode === HttpStatusCode.notFound) { + throw new NotFoundError('Diagnósticos de Gestação do Animal') + } + + if (statusCode === HttpStatusCode.forbidden) { + throw new ForbiddenError( + 'Você não tem permissão para buscar os diagnósticos de gestação do animal' + ) + } + + throw new UnexpectedError() + } +} diff --git a/src/app/modules/animals/data/use-cases/animal-pregnancy-diagnoses-use-cases/remote-get-animal-pregnancy-diagnosis-use-case.ts b/src/app/modules/animals/data/use-cases/animal-pregnancy-diagnoses-use-cases/remote-get-animal-pregnancy-diagnosis-use-case.ts new file mode 100644 index 00000000..81c14cbe --- /dev/null +++ b/src/app/modules/animals/data/use-cases/animal-pregnancy-diagnoses-use-cases/remote-get-animal-pregnancy-diagnosis-use-case.ts @@ -0,0 +1,57 @@ +import { type HttpClient, HttpStatusCode } from '@/core/data/protocols/http' +import { + UnexpectedError, + NotFoundError, + ForbiddenError, +} from '@/core/domain/errors' + +import type { + AnimalPregnancyDiagnosisDetailsApiResponse, + AnimalPregnancyDiagnosisDetailsModel, +} from '../../../domain/models/animal-pregnancy-diagnoses-model' +import type { GetAnimalPregnancyDiagnosisUseCase } from '../../../domain/use-cases/animal-pregnancy-diagnoses-use-cases' + +export class RemoteGetAnimalPregnancyDiagnosisUseCase + implements GetAnimalPregnancyDiagnosisUseCase +{ + constructor( + private readonly url: string, + private readonly httpClient: HttpClient< + AnimalPregnancyDiagnosisDetailsModel, + AnimalPregnancyDiagnosisDetailsApiResponse + > + ) {} + + execute: GetAnimalPregnancyDiagnosisUseCase['execute'] = async ({ + id, + animalId, + propertyId, + }) => { + const url = this.url + .replace(':propertyId', String(propertyId)) + .replace(':animalId', String(animalId)) + + const { statusCode, body } = await this.httpClient.request({ + url: `${url}/${id}`, + method: 'get', + }) + + if (statusCode === HttpStatusCode.ok && !!body) { + return { + date: new Date(body.date), + lastInseminationDate: new Date(body.lastInseminationDate), + } + } + + if (statusCode === HttpStatusCode.notFound) + throw new NotFoundError('Diagnóstico de Gestação do Animal') + + if (statusCode === HttpStatusCode.forbidden) { + throw new ForbiddenError( + 'Você não tem permissão para buscar um diagnóstico de gestação do animal' + ) + } + + throw new UnexpectedError() + } +} diff --git a/src/app/modules/animals/data/use-cases/animal-pregnancy-diagnoses-use-cases/remote-update-animal-pregnancy-diagnosis-use-case.ts b/src/app/modules/animals/data/use-cases/animal-pregnancy-diagnoses-use-cases/remote-update-animal-pregnancy-diagnosis-use-case.ts new file mode 100644 index 00000000..486b2835 --- /dev/null +++ b/src/app/modules/animals/data/use-cases/animal-pregnancy-diagnoses-use-cases/remote-update-animal-pregnancy-diagnosis-use-case.ts @@ -0,0 +1,45 @@ +import { type HttpClient, HttpStatusCode } from '@/core/data/protocols/http' +import { + BadRequestError, + ForbiddenError, + UnexpectedError, +} from '@/core/domain/errors' + +import type { UpdateAnimalPregnancyDiagnosisUseCase } from '../../../domain/use-cases/animal-pregnancy-diagnoses-use-cases' + +export class RemoteUpdateAnimalPregnancyDiagnosisUseCase + implements UpdateAnimalPregnancyDiagnosisUseCase +{ + constructor( + private readonly url: string, + private readonly httpClient: HttpClient + ) {} + + execute: UpdateAnimalPregnancyDiagnosisUseCase['execute'] = async ({ + propertyId, + animalId, + animalPregnancyDiagnosis: { id, ...animalPregnancyDiagnosis }, + }) => { + const url = this.url + .replace(':propertyId', String(propertyId)) + .replace(':animalId', String(animalId)) + + const { statusCode } = await this.httpClient.request({ + url: `${url}/${id}`, + method: 'patch', + body: animalPregnancyDiagnosis, + }) + + if (statusCode === HttpStatusCode.noContent) return + + if (statusCode === HttpStatusCode.badRequest) throw new BadRequestError() + + if (statusCode === HttpStatusCode.forbidden) { + throw new ForbiddenError( + 'Você não tem permissão para editar um diagnóstico de gestação para este animal' + ) + } + + throw new UnexpectedError() + } +} diff --git a/src/app/modules/animals/data/use-cases/index.ts b/src/app/modules/animals/data/use-cases/index.ts new file mode 100644 index 00000000..cff4e7d6 --- /dev/null +++ b/src/app/modules/animals/data/use-cases/index.ts @@ -0,0 +1,5 @@ +export * from './remote-create-animal-use-case' +export * from './remote-delete-animal-use-case' +export * from './remote-get-animal-use-case' +export * from './remote-get-animals-use-case' +export * from './remote-update-animal-use-case' diff --git a/src/app/modules/animals/data/use-cases/remote-create-animal-use-case.ts b/src/app/modules/animals/data/use-cases/remote-create-animal-use-case.ts new file mode 100644 index 00000000..e6fa8a2f --- /dev/null +++ b/src/app/modules/animals/data/use-cases/remote-create-animal-use-case.ts @@ -0,0 +1,37 @@ +import { type HttpClient, HttpStatusCode } from '@/core/data/protocols/http' +import { + BadRequestError, + ForbiddenError, + UnexpectedError, +} from '@/core/domain/errors' + +import type { CreateAnimalUseCase } from '../../domain/use-cases' + +export class RemoteCreateAnimalUseCase implements CreateAnimalUseCase { + constructor( + private readonly url: string, + private readonly httpClient: HttpClient + ) {} + + execute: CreateAnimalUseCase['execute'] = async ({ propertyId, animal }) => { + const url = this.url.replace(':propertyId', String(propertyId)) + + const { statusCode } = await this.httpClient.request({ + url, + method: 'post', + body: animal, + }) + + if (statusCode === HttpStatusCode.created) return + + if (statusCode === HttpStatusCode.badRequest) throw new BadRequestError() + + if (statusCode === HttpStatusCode.forbidden) { + throw new ForbiddenError( + 'Você não tem permissão para criar um novo animal' + ) + } + + throw new UnexpectedError() + } +} diff --git a/src/app/modules/animals/data/use-cases/remote-delete-animal-use-case.ts b/src/app/modules/animals/data/use-cases/remote-delete-animal-use-case.ts new file mode 100644 index 00000000..da84f730 --- /dev/null +++ b/src/app/modules/animals/data/use-cases/remote-delete-animal-use-case.ts @@ -0,0 +1,39 @@ +import { type HttpClient, HttpStatusCode } from '@/core/data/protocols/http' +import { + UnexpectedError, + NotFoundError, + ForbiddenError, +} from '@/core/domain/errors' + +import type { DeleteAnimalUseCase } from '../../domain/use-cases' + +export class RemoteDeleteAnimalUseCase implements DeleteAnimalUseCase { + constructor( + private readonly url: string, + private readonly httpClient: HttpClient + ) {} + + execute: DeleteAnimalUseCase['execute'] = async ({ + propertyId, + animalId, + }) => { + const url = this.url.replace(':propertyId', String(propertyId)) + + const { statusCode } = await this.httpClient.request({ + url: `${url}/${animalId}`, + method: 'delete', + }) + + if (statusCode === HttpStatusCode.noContent) return + + if (statusCode === HttpStatusCode.notFound) { + throw new NotFoundError('Animal') + } + + if (statusCode === HttpStatusCode.forbidden) { + throw new ForbiddenError('Você não tem permissão para excluir um animal') + } + + throw new UnexpectedError() + } +} diff --git a/src/app/modules/animals/data/use-cases/remote-get-animal-use-case.ts b/src/app/modules/animals/data/use-cases/remote-get-animal-use-case.ts new file mode 100644 index 00000000..526e8574 --- /dev/null +++ b/src/app/modules/animals/data/use-cases/remote-get-animal-use-case.ts @@ -0,0 +1,47 @@ +import { type HttpClient, HttpStatusCode } from '@/core/data/protocols/http' +import { + UnexpectedError, + NotFoundError, + ForbiddenError, +} from '@/core/domain/errors' + +import type { + AnimalDetailsApiResponse, + AnimalDetailsModel, +} from '../../domain/models/animals-model' +import type { GetAnimalUseCase } from '../../domain/use-cases' + +export class RemoteGetAnimalUseCase implements GetAnimalUseCase { + constructor( + private readonly url: string, + private readonly httpClient: HttpClient< + AnimalDetailsModel, + AnimalDetailsApiResponse + > + ) {} + + execute: GetAnimalUseCase['execute'] = async ({ animalId, propertyId }) => { + const url = this.url.replace(':propertyId', String(propertyId)) + + const { statusCode, body } = await this.httpClient.request({ + url: `${url}/${animalId}`, + method: 'get', + }) + + if (statusCode === HttpStatusCode.ok && !!body) { + return { + name: body.name, + breed: body.breed, + } + } + + if (statusCode === HttpStatusCode.notFound) + throw new NotFoundError('Animal') + + if (statusCode === HttpStatusCode.forbidden) { + throw new ForbiddenError('Você não tem permissão para buscar um animal') + } + + throw new UnexpectedError() + } +} diff --git a/src/app/modules/animals/data/use-cases/remote-get-animals-use-case.ts b/src/app/modules/animals/data/use-cases/remote-get-animals-use-case.ts new file mode 100644 index 00000000..96ef4b4f --- /dev/null +++ b/src/app/modules/animals/data/use-cases/remote-get-animals-use-case.ts @@ -0,0 +1,68 @@ +import { type HttpClient, HttpStatusCode } from '@/core/data/protocols/http' +import { + UnexpectedError, + NotFoundError, + ForbiddenError, +} from '@/core/domain/errors' + +import type { + AnimalApiResponse, + AnimalModel, +} from '../../domain/models/animals-model' +import type { GetAnimalsUseCase } from '../../domain/use-cases' +import type { ListApiResponse, MapApiProperties } from '@/core/domain/types' + +export class RemoteGetAnimalsUseCase implements GetAnimalsUseCase { + constructor( + private readonly url: string, + private readonly httpClient: HttpClient< + AnimalModel, + AnimalApiResponse, + ListApiResponse + > + ) {} + + execute: GetAnimalsUseCase['execute'] = async ({ + propertyId, + filters, + pagination, + sort, + }) => { + const mapApiProperties: MapApiProperties = { + name: 'name', + breed: 'breed', + } + + const url = this.url.replace(':propertyId', String(propertyId)) + + const { statusCode, body } = await this.httpClient.request({ + url: `${url}/search`, + method: 'post', + filters, + pagination, + sort, + mapApiProperties, + }) + + if (statusCode === HttpStatusCode.ok && !!body) { + return { + resources: body.content.map((item) => ({ + id: item.id, + name: item.name, + breed: item.breed, + })), + totalPages: Math.ceil(body.numberOfElements / body.pageable.pageSize), + } + } + + if (statusCode === HttpStatusCode.notFound) { + throw new NotFoundError('Animais') + } + + if (statusCode === HttpStatusCode.forbidden) { + throw new ForbiddenError('Você não tem permissão para buscar os animais') + } + + throw new UnexpectedError() + } +} diff --git a/src/app/modules/animals/data/use-cases/remote-update-animal-use-case.ts b/src/app/modules/animals/data/use-cases/remote-update-animal-use-case.ts new file mode 100644 index 00000000..ee5e9769 --- /dev/null +++ b/src/app/modules/animals/data/use-cases/remote-update-animal-use-case.ts @@ -0,0 +1,38 @@ +import { type HttpClient, HttpStatusCode } from '@/core/data/protocols/http' +import { + BadRequestError, + ForbiddenError, + UnexpectedError, +} from '@/core/domain/errors' + +import type { UpdateAnimalUseCase } from '../../domain/use-cases' + +export class RemoteUpdateAnimalUseCase implements UpdateAnimalUseCase { + constructor( + private readonly url: string, + private readonly httpClient: HttpClient + ) {} + + execute: UpdateAnimalUseCase['execute'] = async ({ + propertyId, + animal: { id, ...animal }, + }) => { + const url = this.url.replace(':propertyId', String(propertyId)) + + const { statusCode } = await this.httpClient.request({ + url: `${url}/${id}`, + method: 'patch', + body: animal, + }) + + if (statusCode === HttpStatusCode.noContent) return + + if (statusCode === HttpStatusCode.badRequest) throw new BadRequestError() + + if (statusCode === HttpStatusCode.forbidden) { + throw new ForbiddenError('Você não tem permissão para editar um animal') + } + + throw new UnexpectedError() + } +} diff --git a/src/app/modules/animals/domain/models/animal-childbirths-model.ts b/src/app/modules/animals/domain/models/animal-childbirths-model.ts new file mode 100644 index 00000000..9bfe1f86 --- /dev/null +++ b/src/app/modules/animals/domain/models/animal-childbirths-model.ts @@ -0,0 +1,31 @@ +import type { Option, WithId } from '@/core/domain/types' + +export type AnimalChildbirthCondition = 'ALIVE' | 'DEAD' + +export type AnimalChildbirthGender = 'MALE' | 'FEMALE' + +export type AnimalChildbirthDetailsModel = { + date: Date + gender: AnimalChildbirthGender + weight: string + condition: AnimalChildbirthCondition + breed: Option +} + +export type AnimalChildbirthDetailsApiResponse = { + date: string + gender: string + weight: string + condition: string + breed: Option +} + +export type AnimalChildbirthModel = WithId<{ + date: string + gender: string + weight: string + condition: string + breed: string +}> + +export type AnimalChildbirthApiResponse = AnimalChildbirthModel diff --git a/src/app/modules/animals/domain/models/animal-deaths-model.ts b/src/app/modules/animals/domain/models/animal-deaths-model.ts new file mode 100644 index 00000000..917780ec --- /dev/null +++ b/src/app/modules/animals/domain/models/animal-deaths-model.ts @@ -0,0 +1,22 @@ +import type { WithId } from '@/core/domain/types' + +export type AnimalDeathDetailsModel = { + date: Date + reason: string +} + +export type AnimalDeathDetailsApiResponse = { + date: string + reason: string +} + +export type AnimalDeathModel = WithId<{ + date: Date + reason: string +}> + +// todo: refactor to be consistent with Api response +export type AnimalDeathApiResponse = WithId<{ + date: string + reason: string +}> diff --git a/src/app/modules/animals/domain/models/animal-diseases-model.ts b/src/app/modules/animals/domain/models/animal-diseases-model.ts new file mode 100644 index 00000000..ceb55a16 --- /dev/null +++ b/src/app/modules/animals/domain/models/animal-diseases-model.ts @@ -0,0 +1,22 @@ +import type { WithId } from '@/core/domain/types' + +export type AnimalDiseaseDetailsModel = { + diagnosticDate: Date + diagnostic: string +} + +export type AnimalDiseaseDetailsApiResponse = { + diagnosticDate: string + diagnostic: string +} + +export type AnimalDiseaseModel = WithId<{ + diagnosticDate: Date + diagnostic: string +}> + +// todo: refactor to be consistent with Api response +export type AnimalDiseaseApiResponse = WithId<{ + diagnosticDate: string + diagnostic: string +}> diff --git a/src/app/modules/animals/domain/models/animal-heifer-calf-stages-model.ts b/src/app/modules/animals/domain/models/animal-heifer-calf-stages-model.ts new file mode 100644 index 00000000..682ed3dd --- /dev/null +++ b/src/app/modules/animals/domain/models/animal-heifer-calf-stages-model.ts @@ -0,0 +1,120 @@ +import type { WithId } from '@/core/domain/types' + +export type GMDStatus = 'normal' | 'overweight' | 'underweight' + +export type ReproductionStatus = 'fit' | 'unfit' + +export type AnimalHeiferCalfStageAdditionalDataModel = { + age: { + years: string + months: string + } + weighing: { + last: string + current: string + } + ageWeightEstimate: { + min: string + max: string + } + gmd: { + min: string + max: string + real: string + status: GMDStatus + } + amountOfMilk: { + correction: string + morning: string + afternoon: string + } + weaningDate: { + first: Date + second: Date + } + removeLittleHouseDate: Date + amountOfEstimateConcentrate: { + correction: string + heifer: string + calf: string + } + bulky: string + dateToProvideSilage: Date + reproduction: { + status: ReproductionStatus + minWeight: string + fromDate: Date + carriedOut: Date + artificialInseminationNumber: string + } +} + +export type AnimalHeiferCalfStageAdditionalDataApiResponse = { + age: { + years: string + months: string + } + weighing: { + last: string + current: string + } + ageWeightEstimate: { + min: string + max: string + } + gmd: { + min: string + max: string + real: string + status: string + } + amountOfMilk: { + correction: string + morning: string + afternoon: string + } + weaningDate: { + first: string + second: string + } + removeLittleHouseDate: string + amountOfEstimateConcentrate: { + correction: string + heifer: string + calf: string + } + bulky: string + dateToProvideSilage: string + reproduction: { + status: string + minWeight: string + fromDate: string + carriedOut: string + artificialInseminationNumber: string + } +} + +export type AnimalHeiferCalfStageDetailsModel = { + weighingDate: Date + ecc: string +} & AnimalHeiferCalfStageAdditionalDataModel + +export type AnimalHeiferCalfStageDetailsApiResponse = { + weighingDate: string + ecc: string +} & AnimalHeiferCalfStageAdditionalDataApiResponse + +export type AnimalHeiferCalfStageModel = WithId<{ + weighingDate: Date + weight: string + ecc: string + age: string +}> + +// todo: refactor to be consistent with Api response +export type AnimalHeiferCalfStageApiResponse = WithId<{ + weighingDate: string + weight: string + ecc: string + age: string +}> diff --git a/src/app/modules/animals/domain/models/animal-pregnancy-diagnoses-model.ts b/src/app/modules/animals/domain/models/animal-pregnancy-diagnoses-model.ts new file mode 100644 index 00000000..caf7fa8b --- /dev/null +++ b/src/app/modules/animals/domain/models/animal-pregnancy-diagnoses-model.ts @@ -0,0 +1,21 @@ +import type { WithId } from '@/core/domain/types' + +export type AnimalPregnancyDiagnosisDetailsModel = { + date: Date + lastInseminationDate: Date +} + +export type AnimalPregnancyDiagnosisDetailsApiResponse = { + date: string + lastInseminationDate: string +} + +export type AnimalPregnancyDiagnosisModel = WithId<{ + date: Date + lastInseminationDate: Date +}> + +export type AnimalPregnancyDiagnosisApiResponse = WithId<{ + date: string + lastInseminationDate: string +}> diff --git a/src/app/modules/animals/domain/models/animals-model.ts b/src/app/modules/animals/domain/models/animals-model.ts new file mode 100644 index 00000000..e390f0bc --- /dev/null +++ b/src/app/modules/animals/domain/models/animals-model.ts @@ -0,0 +1,19 @@ +import type { Option, WithId } from '@/core/domain/types' + +export type AnimalDetailsModel = { + name: string + breed: Option +} + +export type AnimalDetailsApiResponse = { + name: string + breed: Option +} + +export type AnimalModel = WithId<{ + name: string + breed: string +}> + +// todo: refactor to be consistent with Api response +export type AnimalApiResponse = AnimalModel diff --git a/src/app/modules/animals/domain/use-cases/animal-childbirths-use-cases/create-animal-childbirth-use-case.ts b/src/app/modules/animals/domain/use-cases/animal-childbirths-use-cases/create-animal-childbirth-use-case.ts new file mode 100644 index 00000000..05979314 --- /dev/null +++ b/src/app/modules/animals/domain/use-cases/animal-childbirths-use-cases/create-animal-childbirth-use-case.ts @@ -0,0 +1,11 @@ +import type { AnimalChildbirthDetailsModel } from '../../models/animal-childbirths-model' +import type { RequestInterface } from '@/core/domain/types' + +export type CreateAnimalChildbirthUseCase = RequestInterface< + { + propertyId: number + animalId: number + animalChildbirth: AnimalChildbirthDetailsModel + }, + void +> diff --git a/src/app/modules/animals/domain/use-cases/animal-childbirths-use-cases/delete-animal-childbirth-use-case.ts b/src/app/modules/animals/domain/use-cases/animal-childbirths-use-cases/delete-animal-childbirth-use-case.ts new file mode 100644 index 00000000..adff6ae6 --- /dev/null +++ b/src/app/modules/animals/domain/use-cases/animal-childbirths-use-cases/delete-animal-childbirth-use-case.ts @@ -0,0 +1,10 @@ +import type { RequestInterface } from '@/core/domain/types' + +export type DeleteAnimalChildbirthUseCase = RequestInterface< + { + propertyId: number + animalId: number + id: number + }, + void +> diff --git a/src/app/modules/animals/domain/use-cases/animal-childbirths-use-cases/get-animal-childbirth-use-case.ts b/src/app/modules/animals/domain/use-cases/animal-childbirths-use-cases/get-animal-childbirth-use-case.ts new file mode 100644 index 00000000..6dd6a9ef --- /dev/null +++ b/src/app/modules/animals/domain/use-cases/animal-childbirths-use-cases/get-animal-childbirth-use-case.ts @@ -0,0 +1,11 @@ +import type { AnimalChildbirthDetailsModel } from '../../models/animal-childbirths-model' +import type { RequestInterface } from '@/core/domain/types' + +export type GetAnimalChildbirthUseCase = RequestInterface< + { + propertyId: number + animalId: number + id: number + }, + AnimalChildbirthDetailsModel +> diff --git a/src/app/modules/animals/domain/use-cases/animal-childbirths-use-cases/get-animal-childbirths-use-case.ts b/src/app/modules/animals/domain/use-cases/animal-childbirths-use-cases/get-animal-childbirths-use-case.ts new file mode 100644 index 00000000..17146e63 --- /dev/null +++ b/src/app/modules/animals/domain/use-cases/animal-childbirths-use-cases/get-animal-childbirths-use-case.ts @@ -0,0 +1,11 @@ +import type { AnimalChildbirthModel } from '../../models/animal-childbirths-model' +import type { + RequestInterface, + ListParams, + ListResponse, +} from '@/core/domain/types' + +export type GetAnimalChildbirthsUseCase = RequestInterface< + ListParams & { propertyId: number; animalId: number }, + ListResponse +> diff --git a/src/app/modules/animals/domain/use-cases/animal-childbirths-use-cases/index.ts b/src/app/modules/animals/domain/use-cases/animal-childbirths-use-cases/index.ts new file mode 100644 index 00000000..241abfd7 --- /dev/null +++ b/src/app/modules/animals/domain/use-cases/animal-childbirths-use-cases/index.ts @@ -0,0 +1,5 @@ +export * from './create-animal-childbirth-use-case' +export * from './delete-animal-childbirth-use-case' +export * from './get-animal-childbirths-use-case' +export * from './get-animal-childbirth-use-case' +export * from './update-animal-childbirth-use-case' diff --git a/src/app/modules/animals/domain/use-cases/animal-childbirths-use-cases/update-animal-childbirth-use-case.ts b/src/app/modules/animals/domain/use-cases/animal-childbirths-use-cases/update-animal-childbirth-use-case.ts new file mode 100644 index 00000000..1d049f36 --- /dev/null +++ b/src/app/modules/animals/domain/use-cases/animal-childbirths-use-cases/update-animal-childbirth-use-case.ts @@ -0,0 +1,12 @@ +import type { AnimalChildbirthDetailsModel } from '../../models/animal-childbirths-model' +import type { RequestInterface } from '@/core/domain/types' +import type { WithId } from '@/core/domain/types/with-id-type' + +export type UpdateAnimalChildbirthUseCase = RequestInterface< + { + propertyId: number + animalId: number + animalChildbirth: WithId + }, + void +> diff --git a/src/app/modules/animals/domain/use-cases/animal-deaths-use-cases/create-animal-death-use-case.ts b/src/app/modules/animals/domain/use-cases/animal-deaths-use-cases/create-animal-death-use-case.ts new file mode 100644 index 00000000..e0375453 --- /dev/null +++ b/src/app/modules/animals/domain/use-cases/animal-deaths-use-cases/create-animal-death-use-case.ts @@ -0,0 +1,11 @@ +import type { AnimalDeathDetailsModel } from '../../models/animal-deaths-model' +import type { RequestInterface } from '@/core/domain/types' + +export type CreateAnimalDeathUseCase = RequestInterface< + { + propertyId: number + animalId: number + animalDeath: AnimalDeathDetailsModel + }, + void +> diff --git a/src/app/modules/animals/domain/use-cases/animal-deaths-use-cases/delete-animal-death-use-case.ts b/src/app/modules/animals/domain/use-cases/animal-deaths-use-cases/delete-animal-death-use-case.ts new file mode 100644 index 00000000..f1a21fa6 --- /dev/null +++ b/src/app/modules/animals/domain/use-cases/animal-deaths-use-cases/delete-animal-death-use-case.ts @@ -0,0 +1,10 @@ +import type { RequestInterface } from '@/core/domain/types' + +export type DeleteAnimalDeathUseCase = RequestInterface< + { + propertyId: number + animalId: number + id: number + }, + void +> diff --git a/src/app/modules/animals/domain/use-cases/animal-deaths-use-cases/get-animal-death-use-case.ts b/src/app/modules/animals/domain/use-cases/animal-deaths-use-cases/get-animal-death-use-case.ts new file mode 100644 index 00000000..98aaf27a --- /dev/null +++ b/src/app/modules/animals/domain/use-cases/animal-deaths-use-cases/get-animal-death-use-case.ts @@ -0,0 +1,11 @@ +import type { AnimalDeathDetailsModel } from '../../models/animal-deaths-model' +import type { RequestInterface } from '@/core/domain/types' + +export type GetAnimalDeathUseCase = RequestInterface< + { + propertyId: number + animalId: number + id: number + }, + AnimalDeathDetailsModel +> diff --git a/src/app/modules/animals/domain/use-cases/animal-deaths-use-cases/get-animal-deaths-use-case.ts b/src/app/modules/animals/domain/use-cases/animal-deaths-use-cases/get-animal-deaths-use-case.ts new file mode 100644 index 00000000..acedb17d --- /dev/null +++ b/src/app/modules/animals/domain/use-cases/animal-deaths-use-cases/get-animal-deaths-use-case.ts @@ -0,0 +1,14 @@ +import type { AnimalDeathModel } from '../../models/animal-deaths-model' +import type { + RequestInterface, + ListParams, + ListResponse, +} from '@/core/domain/types' + +export type GetAnimalDeathsUseCase = RequestInterface< + ListParams & { + propertyId: number + animalId: number + }, + ListResponse +> diff --git a/src/app/modules/animals/domain/use-cases/animal-deaths-use-cases/index.ts b/src/app/modules/animals/domain/use-cases/animal-deaths-use-cases/index.ts new file mode 100644 index 00000000..2237a992 --- /dev/null +++ b/src/app/modules/animals/domain/use-cases/animal-deaths-use-cases/index.ts @@ -0,0 +1,5 @@ +export * from './create-animal-death-use-case' +export * from './delete-animal-death-use-case' +export * from './get-animal-deaths-use-case' +export * from './get-animal-death-use-case' +export * from './update-animal-death-use-case' diff --git a/src/app/modules/animals/domain/use-cases/animal-deaths-use-cases/update-animal-death-use-case.ts b/src/app/modules/animals/domain/use-cases/animal-deaths-use-cases/update-animal-death-use-case.ts new file mode 100644 index 00000000..ba60f4be --- /dev/null +++ b/src/app/modules/animals/domain/use-cases/animal-deaths-use-cases/update-animal-death-use-case.ts @@ -0,0 +1,12 @@ +import type { AnimalDeathDetailsModel } from '../../models/animal-deaths-model' +import type { RequestInterface } from '@/core/domain/types' +import type { WithId } from '@/core/domain/types/with-id-type' + +export type UpdateAnimalDeathUseCase = RequestInterface< + { + propertyId: number + animalId: number + animalDeath: WithId + }, + void +> diff --git a/src/app/modules/animals/domain/use-cases/animal-diseases-use-cases/create-animal-disease-use-case.ts b/src/app/modules/animals/domain/use-cases/animal-diseases-use-cases/create-animal-disease-use-case.ts new file mode 100644 index 00000000..0b2452c1 --- /dev/null +++ b/src/app/modules/animals/domain/use-cases/animal-diseases-use-cases/create-animal-disease-use-case.ts @@ -0,0 +1,11 @@ +import type { AnimalDiseaseDetailsModel } from '../../models/animal-diseases-model' +import type { RequestInterface } from '@/core/domain/types' + +export type CreateAnimalDiseaseUseCase = RequestInterface< + { + propertyId: number + animalId: number + animalDisease: AnimalDiseaseDetailsModel + }, + void +> diff --git a/src/app/modules/animals/domain/use-cases/animal-diseases-use-cases/delete-animal-disease-use-case.ts b/src/app/modules/animals/domain/use-cases/animal-diseases-use-cases/delete-animal-disease-use-case.ts new file mode 100644 index 00000000..eabd891c --- /dev/null +++ b/src/app/modules/animals/domain/use-cases/animal-diseases-use-cases/delete-animal-disease-use-case.ts @@ -0,0 +1,10 @@ +import type { RequestInterface } from '@/core/domain/types' + +export type DeleteAnimalDiseaseUseCase = RequestInterface< + { + propertyId: number + animalId: number + id: number + }, + void +> diff --git a/src/app/modules/animals/domain/use-cases/animal-diseases-use-cases/get-animal-disease-use-case.ts b/src/app/modules/animals/domain/use-cases/animal-diseases-use-cases/get-animal-disease-use-case.ts new file mode 100644 index 00000000..9bc426a7 --- /dev/null +++ b/src/app/modules/animals/domain/use-cases/animal-diseases-use-cases/get-animal-disease-use-case.ts @@ -0,0 +1,11 @@ +import type { AnimalDiseaseDetailsModel } from '../../models/animal-diseases-model' +import type { RequestInterface } from '@/core/domain/types' + +export type GetAnimalDiseaseUseCase = RequestInterface< + { + propertyId: number + animalId: number + id: number + }, + AnimalDiseaseDetailsModel +> diff --git a/src/app/modules/animals/domain/use-cases/animal-diseases-use-cases/get-animal-diseases-use-case.ts b/src/app/modules/animals/domain/use-cases/animal-diseases-use-cases/get-animal-diseases-use-case.ts new file mode 100644 index 00000000..86291c0b --- /dev/null +++ b/src/app/modules/animals/domain/use-cases/animal-diseases-use-cases/get-animal-diseases-use-case.ts @@ -0,0 +1,14 @@ +import type { AnimalDiseaseModel } from '../../models/animal-diseases-model' +import type { + RequestInterface, + ListParams, + ListResponse, +} from '@/core/domain/types' + +export type GetAnimalDiseasesUseCase = RequestInterface< + ListParams & { + propertyId: number + animalId: number + }, + ListResponse +> diff --git a/src/app/modules/animals/domain/use-cases/animal-diseases-use-cases/index.ts b/src/app/modules/animals/domain/use-cases/animal-diseases-use-cases/index.ts new file mode 100644 index 00000000..16df63e1 --- /dev/null +++ b/src/app/modules/animals/domain/use-cases/animal-diseases-use-cases/index.ts @@ -0,0 +1,5 @@ +export * from './create-animal-disease-use-case' +export * from './delete-animal-disease-use-case' +export * from './get-animal-diseases-use-case' +export * from './get-animal-disease-use-case' +export * from './update-animal-disease-use-case' diff --git a/src/app/modules/animals/domain/use-cases/animal-diseases-use-cases/update-animal-disease-use-case.ts b/src/app/modules/animals/domain/use-cases/animal-diseases-use-cases/update-animal-disease-use-case.ts new file mode 100644 index 00000000..e20e43ad --- /dev/null +++ b/src/app/modules/animals/domain/use-cases/animal-diseases-use-cases/update-animal-disease-use-case.ts @@ -0,0 +1,12 @@ +import type { AnimalDiseaseDetailsModel } from '../../models/animal-diseases-model' +import type { RequestInterface } from '@/core/domain/types' +import type { WithId } from '@/core/domain/types/with-id-type' + +export type UpdateAnimalDiseaseUseCase = RequestInterface< + { + propertyId: number + animalId: number + animalDisease: WithId + }, + void +> diff --git a/src/app/modules/animals/domain/use-cases/animal-heifer-calf-stages-use-cases/create-animal-heifer-calf-stage-use-case.ts b/src/app/modules/animals/domain/use-cases/animal-heifer-calf-stages-use-cases/create-animal-heifer-calf-stage-use-case.ts new file mode 100644 index 00000000..1fded586 --- /dev/null +++ b/src/app/modules/animals/domain/use-cases/animal-heifer-calf-stages-use-cases/create-animal-heifer-calf-stage-use-case.ts @@ -0,0 +1,11 @@ +import type { AnimalHeiferCalfStageDetailsModel } from '../../models/animal-heifer-calf-stages-model' +import type { RequestInterface } from '@/core/domain/types' + +export type CreateAnimalHeiferCalfStageUseCase = RequestInterface< + { + propertyId: number + animalId: number + animalHeiferCalfStage: AnimalHeiferCalfStageDetailsModel + }, + void +> diff --git a/src/app/modules/animals/domain/use-cases/animal-heifer-calf-stages-use-cases/delete-animal-heifer-calf-stage-use-case.ts b/src/app/modules/animals/domain/use-cases/animal-heifer-calf-stages-use-cases/delete-animal-heifer-calf-stage-use-case.ts new file mode 100644 index 00000000..7bc9e400 --- /dev/null +++ b/src/app/modules/animals/domain/use-cases/animal-heifer-calf-stages-use-cases/delete-animal-heifer-calf-stage-use-case.ts @@ -0,0 +1,10 @@ +import type { RequestInterface } from '@/core/domain/types' + +export type DeleteAnimalHeiferCalfStageUseCase = RequestInterface< + { + propertyId: number + animalId: number + id: number + }, + void +> diff --git a/src/app/modules/animals/domain/use-cases/animal-heifer-calf-stages-use-cases/get-animal-heifer-calf-stage-additional-data-use-case.ts b/src/app/modules/animals/domain/use-cases/animal-heifer-calf-stages-use-cases/get-animal-heifer-calf-stage-additional-data-use-case.ts new file mode 100644 index 00000000..72c0c2f8 --- /dev/null +++ b/src/app/modules/animals/domain/use-cases/animal-heifer-calf-stages-use-cases/get-animal-heifer-calf-stage-additional-data-use-case.ts @@ -0,0 +1,10 @@ +import type { AnimalHeiferCalfStageAdditionalDataModel } from '../../models/animal-heifer-calf-stages-model' +import type { RequestInterface } from '@/core/domain/types' + +export type GetAnimalHeiferCalfStageAdditionalDataUseCase = RequestInterface< + { + propertyId: number + animalId: number + }, + AnimalHeiferCalfStageAdditionalDataModel +> diff --git a/src/app/modules/animals/domain/use-cases/animal-heifer-calf-stages-use-cases/get-animal-heifer-calf-stage-use-case.ts b/src/app/modules/animals/domain/use-cases/animal-heifer-calf-stages-use-cases/get-animal-heifer-calf-stage-use-case.ts new file mode 100644 index 00000000..bc760dfc --- /dev/null +++ b/src/app/modules/animals/domain/use-cases/animal-heifer-calf-stages-use-cases/get-animal-heifer-calf-stage-use-case.ts @@ -0,0 +1,11 @@ +import type { AnimalHeiferCalfStageDetailsModel } from '../../models/animal-heifer-calf-stages-model' +import type { RequestInterface } from '@/core/domain/types' + +export type GetAnimalHeiferCalfStageUseCase = RequestInterface< + { + propertyId: number + animalId: number + id: number + }, + AnimalHeiferCalfStageDetailsModel +> diff --git a/src/app/modules/animals/domain/use-cases/animal-heifer-calf-stages-use-cases/get-animal-heifer-calf-stages-use-case.ts b/src/app/modules/animals/domain/use-cases/animal-heifer-calf-stages-use-cases/get-animal-heifer-calf-stages-use-case.ts new file mode 100644 index 00000000..a2de6c38 --- /dev/null +++ b/src/app/modules/animals/domain/use-cases/animal-heifer-calf-stages-use-cases/get-animal-heifer-calf-stages-use-case.ts @@ -0,0 +1,14 @@ +import type { AnimalHeiferCalfStageModel } from '../../models/animal-heifer-calf-stages-model' +import type { + RequestInterface, + ListParams, + ListResponse, +} from '@/core/domain/types' + +export type GetAnimalHeiferCalfStagesUseCase = RequestInterface< + ListParams & { + propertyId: number + animalId: number + }, + ListResponse +> diff --git a/src/app/modules/animals/domain/use-cases/animal-heifer-calf-stages-use-cases/index.ts b/src/app/modules/animals/domain/use-cases/animal-heifer-calf-stages-use-cases/index.ts new file mode 100644 index 00000000..8a7bdb2d --- /dev/null +++ b/src/app/modules/animals/domain/use-cases/animal-heifer-calf-stages-use-cases/index.ts @@ -0,0 +1,6 @@ +export * from './create-animal-heifer-calf-stage-use-case' +export * from './delete-animal-heifer-calf-stage-use-case' +export * from './get-animal-heifer-calf-stages-use-case' +export * from './get-animal-heifer-calf-stage-use-case' +export * from './update-animal-heifer-calf-stage-use-case' +export * from './get-animal-heifer-calf-stage-additional-data-use-case' diff --git a/src/app/modules/animals/domain/use-cases/animal-heifer-calf-stages-use-cases/update-animal-heifer-calf-stage-use-case.ts b/src/app/modules/animals/domain/use-cases/animal-heifer-calf-stages-use-cases/update-animal-heifer-calf-stage-use-case.ts new file mode 100644 index 00000000..38f81835 --- /dev/null +++ b/src/app/modules/animals/domain/use-cases/animal-heifer-calf-stages-use-cases/update-animal-heifer-calf-stage-use-case.ts @@ -0,0 +1,12 @@ +import type { AnimalHeiferCalfStageDetailsModel } from '../../models/animal-heifer-calf-stages-model' +import type { RequestInterface } from '@/core/domain/types' +import type { WithId } from '@/core/domain/types/with-id-type' + +export type UpdateAnimalHeiferCalfStageUseCase = RequestInterface< + { + propertyId: number + animalId: number + animalHeiferCalfStage: WithId + }, + void +> diff --git a/src/app/modules/animals/domain/use-cases/animal-pregnancy-diagnoses-use-cases/create-animal-pregnancy-diagnosis-use-case.ts b/src/app/modules/animals/domain/use-cases/animal-pregnancy-diagnoses-use-cases/create-animal-pregnancy-diagnosis-use-case.ts new file mode 100644 index 00000000..c75aa1d8 --- /dev/null +++ b/src/app/modules/animals/domain/use-cases/animal-pregnancy-diagnoses-use-cases/create-animal-pregnancy-diagnosis-use-case.ts @@ -0,0 +1,11 @@ +import type { AnimalPregnancyDiagnosisDetailsModel } from '../../models/animal-pregnancy-diagnoses-model' +import type { RequestInterface } from '@/core/domain/types' + +export type CreateAnimalPregnancyDiagnosisUseCase = RequestInterface< + { + propertyId: number + animalId: number + animalPregnancyDiagnosis: AnimalPregnancyDiagnosisDetailsModel + }, + void +> diff --git a/src/app/modules/animals/domain/use-cases/animal-pregnancy-diagnoses-use-cases/delete-animal-pregnancy-diagnosis-use-case.ts b/src/app/modules/animals/domain/use-cases/animal-pregnancy-diagnoses-use-cases/delete-animal-pregnancy-diagnosis-use-case.ts new file mode 100644 index 00000000..e906cbc3 --- /dev/null +++ b/src/app/modules/animals/domain/use-cases/animal-pregnancy-diagnoses-use-cases/delete-animal-pregnancy-diagnosis-use-case.ts @@ -0,0 +1,10 @@ +import type { RequestInterface } from '@/core/domain/types' + +export type DeleteAnimalPregnancyDiagnosisUseCase = RequestInterface< + { + propertyId: number + animalId: number + id: number + }, + void +> diff --git a/src/app/modules/animals/domain/use-cases/animal-pregnancy-diagnoses-use-cases/get-animal-pregnancy-diagnoses-use-case.ts b/src/app/modules/animals/domain/use-cases/animal-pregnancy-diagnoses-use-cases/get-animal-pregnancy-diagnoses-use-case.ts new file mode 100644 index 00000000..8557e8ef --- /dev/null +++ b/src/app/modules/animals/domain/use-cases/animal-pregnancy-diagnoses-use-cases/get-animal-pregnancy-diagnoses-use-case.ts @@ -0,0 +1,14 @@ +import type { AnimalPregnancyDiagnosisModel } from '../../models/animal-pregnancy-diagnoses-model' +import type { + RequestInterface, + ListParams, + ListResponse, +} from '@/core/domain/types' + +export type GetAnimalPregnancyDiagnosesUseCase = RequestInterface< + ListParams & { + propertyId: number + animalId: number + }, + ListResponse +> diff --git a/src/app/modules/animals/domain/use-cases/animal-pregnancy-diagnoses-use-cases/get-animal-pregnancy-diagnosis-use-case.ts b/src/app/modules/animals/domain/use-cases/animal-pregnancy-diagnoses-use-cases/get-animal-pregnancy-diagnosis-use-case.ts new file mode 100644 index 00000000..08a49bf6 --- /dev/null +++ b/src/app/modules/animals/domain/use-cases/animal-pregnancy-diagnoses-use-cases/get-animal-pregnancy-diagnosis-use-case.ts @@ -0,0 +1,11 @@ +import type { AnimalPregnancyDiagnosisDetailsModel } from '../../models/animal-pregnancy-diagnoses-model' +import type { RequestInterface } from '@/core/domain/types' + +export type GetAnimalPregnancyDiagnosisUseCase = RequestInterface< + { + propertyId: number + animalId: number + id: number + }, + AnimalPregnancyDiagnosisDetailsModel +> diff --git a/src/app/modules/animals/domain/use-cases/animal-pregnancy-diagnoses-use-cases/index.ts b/src/app/modules/animals/domain/use-cases/animal-pregnancy-diagnoses-use-cases/index.ts new file mode 100644 index 00000000..85148203 --- /dev/null +++ b/src/app/modules/animals/domain/use-cases/animal-pregnancy-diagnoses-use-cases/index.ts @@ -0,0 +1,5 @@ +export * from './create-animal-pregnancy-diagnosis-use-case' +export * from './delete-animal-pregnancy-diagnosis-use-case' +export * from './get-animal-pregnancy-diagnoses-use-case' +export * from './get-animal-pregnancy-diagnosis-use-case' +export * from './update-animal-pregnancy-diagnosis-use-case' diff --git a/src/app/modules/animals/domain/use-cases/animal-pregnancy-diagnoses-use-cases/update-animal-pregnancy-diagnosis-use-case.ts b/src/app/modules/animals/domain/use-cases/animal-pregnancy-diagnoses-use-cases/update-animal-pregnancy-diagnosis-use-case.ts new file mode 100644 index 00000000..a1a768f9 --- /dev/null +++ b/src/app/modules/animals/domain/use-cases/animal-pregnancy-diagnoses-use-cases/update-animal-pregnancy-diagnosis-use-case.ts @@ -0,0 +1,12 @@ +import type { AnimalPregnancyDiagnosisDetailsModel } from '../../models/animal-pregnancy-diagnoses-model' +import type { RequestInterface } from '@/core/domain/types' +import type { WithId } from '@/core/domain/types/with-id-type' + +export type UpdateAnimalPregnancyDiagnosisUseCase = RequestInterface< + { + propertyId: number + animalId: number + animalPregnancyDiagnosis: WithId + }, + void +> diff --git a/src/app/modules/animals/domain/use-cases/create-animal-use-case.ts b/src/app/modules/animals/domain/use-cases/create-animal-use-case.ts new file mode 100644 index 00000000..cba9ef90 --- /dev/null +++ b/src/app/modules/animals/domain/use-cases/create-animal-use-case.ts @@ -0,0 +1,7 @@ +import type { AnimalDetailsModel } from '../models/animals-model' +import type { RequestInterface } from '@/core/domain/types' + +export type CreateAnimalUseCase = RequestInterface< + { propertyId: number; animal: AnimalDetailsModel }, + void +> diff --git a/src/app/modules/animals/domain/use-cases/delete-animal-use-case.ts b/src/app/modules/animals/domain/use-cases/delete-animal-use-case.ts new file mode 100644 index 00000000..97416bcf --- /dev/null +++ b/src/app/modules/animals/domain/use-cases/delete-animal-use-case.ts @@ -0,0 +1,9 @@ +import type { RequestInterface } from '@/core/domain/types' + +export type DeleteAnimalUseCase = RequestInterface< + { + propertyId: number + animalId: number + }, + void +> diff --git a/src/app/modules/animals/domain/use-cases/get-animal-use-case.ts b/src/app/modules/animals/domain/use-cases/get-animal-use-case.ts new file mode 100644 index 00000000..e11a9517 --- /dev/null +++ b/src/app/modules/animals/domain/use-cases/get-animal-use-case.ts @@ -0,0 +1,10 @@ +import type { AnimalDetailsModel } from '../models/animals-model' +import type { RequestInterface } from '@/core/domain/types' + +export type GetAnimalUseCase = RequestInterface< + { + propertyId: number + animalId: number + }, + AnimalDetailsModel +> diff --git a/src/app/modules/animals/domain/use-cases/get-animals-use-case.ts b/src/app/modules/animals/domain/use-cases/get-animals-use-case.ts new file mode 100644 index 00000000..bf36fdff --- /dev/null +++ b/src/app/modules/animals/domain/use-cases/get-animals-use-case.ts @@ -0,0 +1,11 @@ +import type { AnimalModel } from '../models/animals-model' +import type { + RequestInterface, + ListParams, + ListResponse, +} from '@/core/domain/types' + +export type GetAnimalsUseCase = RequestInterface< + ListParams & { propertyId: number }, + ListResponse +> diff --git a/src/app/modules/animals/domain/use-cases/index.ts b/src/app/modules/animals/domain/use-cases/index.ts new file mode 100644 index 00000000..9e49b32c --- /dev/null +++ b/src/app/modules/animals/domain/use-cases/index.ts @@ -0,0 +1,5 @@ +export * from './create-animal-use-case' +export * from './delete-animal-use-case' +export * from './get-animals-use-case' +export * from './get-animal-use-case' +export * from './update-animal-use-case' diff --git a/src/app/modules/animals/domain/use-cases/update-animal-use-case.ts b/src/app/modules/animals/domain/use-cases/update-animal-use-case.ts new file mode 100644 index 00000000..ebd5a59e --- /dev/null +++ b/src/app/modules/animals/domain/use-cases/update-animal-use-case.ts @@ -0,0 +1,10 @@ +import type { AnimalDetailsModel } from '../models/animals-model' +import type { RequestInterface, WithId } from '@/core/domain/types' + +export type UpdateAnimalUseCase = RequestInterface< + { + propertyId: number + animal: WithId + }, + void +> diff --git a/src/app/modules/animals/main/factories/use-cases/animal-childbirths-use-cases/index.ts b/src/app/modules/animals/main/factories/use-cases/animal-childbirths-use-cases/index.ts new file mode 100644 index 00000000..f46d3253 --- /dev/null +++ b/src/app/modules/animals/main/factories/use-cases/animal-childbirths-use-cases/index.ts @@ -0,0 +1,5 @@ +export * from './remote-create-animal-childbirth-use-case-factory' +export * from './remote-delete-animal-childbirth-use-case-factory' +export * from './remote-get-animal-childbirth-use-case-factory' +export * from './remote-get-animal-childbirths-use-case-factory' +export * from './remote-update-animal-childbirth-use-case-factory' diff --git a/src/app/modules/animals/main/factories/use-cases/animal-childbirths-use-cases/remote-create-animal-childbirth-use-case-factory.ts b/src/app/modules/animals/main/factories/use-cases/animal-childbirths-use-cases/remote-create-animal-childbirth-use-case-factory.ts new file mode 100644 index 00000000..c9f4341f --- /dev/null +++ b/src/app/modules/animals/main/factories/use-cases/animal-childbirths-use-cases/remote-create-animal-childbirth-use-case-factory.ts @@ -0,0 +1,12 @@ +import { makeApiHttpClient } from '@/core/main/factories/http' + +import { RemoteCreateAnimalChildbirthUseCase } from '../../../../data/use-cases/animal-childbirths-use-cases' + +import type { CreateAnimalChildbirthUseCase } from '../../../../domain/use-cases/animal-childbirths-use-cases' + +export function makeRemoteCreateAnimalChildbirthUseCase(): CreateAnimalChildbirthUseCase { + return new RemoteCreateAnimalChildbirthUseCase( + 'properties/:propertyId/animals/:animalId/childbirths', + makeApiHttpClient() + ) +} diff --git a/src/app/modules/animals/main/factories/use-cases/animal-childbirths-use-cases/remote-delete-animal-childbirth-use-case-factory.ts b/src/app/modules/animals/main/factories/use-cases/animal-childbirths-use-cases/remote-delete-animal-childbirth-use-case-factory.ts new file mode 100644 index 00000000..d61d4b7a --- /dev/null +++ b/src/app/modules/animals/main/factories/use-cases/animal-childbirths-use-cases/remote-delete-animal-childbirth-use-case-factory.ts @@ -0,0 +1,12 @@ +import { makeApiHttpClient } from '@/core/main/factories/http' + +import { RemoteDeleteAnimalChildbirthUseCase } from '../../../../data/use-cases/animal-childbirths-use-cases' + +import type { DeleteAnimalChildbirthUseCase } from '../../../../domain/use-cases/animal-childbirths-use-cases' + +export function makeRemoteDeleteAnimalChildbirthUseCase(): DeleteAnimalChildbirthUseCase { + return new RemoteDeleteAnimalChildbirthUseCase( + 'properties/:propertyId/animals/:animalId/childbirths', + makeApiHttpClient() + ) +} diff --git a/src/app/modules/animals/main/factories/use-cases/animal-childbirths-use-cases/remote-get-animal-childbirth-use-case-factory.ts b/src/app/modules/animals/main/factories/use-cases/animal-childbirths-use-cases/remote-get-animal-childbirth-use-case-factory.ts new file mode 100644 index 00000000..175b2b43 --- /dev/null +++ b/src/app/modules/animals/main/factories/use-cases/animal-childbirths-use-cases/remote-get-animal-childbirth-use-case-factory.ts @@ -0,0 +1,19 @@ +import { makeApiHttpClient } from '@/core/main/factories/http' + +import { RemoteGetAnimalChildbirthUseCase } from '../../../../data/use-cases/animal-childbirths-use-cases' + +import type { + AnimalChildbirthDetailsApiResponse, + AnimalChildbirthDetailsModel, +} from '../../../../domain/models/animal-childbirths-model' +import type { GetAnimalChildbirthUseCase } from '../../../../domain/use-cases/animal-childbirths-use-cases' + +export function makeRemoteGetAnimalChildbirthUseCase(): GetAnimalChildbirthUseCase { + return new RemoteGetAnimalChildbirthUseCase( + 'properties/:propertyId/animals/:animalId/childbirths', + makeApiHttpClient< + AnimalChildbirthDetailsModel, + AnimalChildbirthDetailsApiResponse + >() + ) +} diff --git a/src/app/modules/animals/main/factories/use-cases/animal-childbirths-use-cases/remote-get-animal-childbirths-use-case-factory.ts b/src/app/modules/animals/main/factories/use-cases/animal-childbirths-use-cases/remote-get-animal-childbirths-use-case-factory.ts new file mode 100644 index 00000000..05073505 --- /dev/null +++ b/src/app/modules/animals/main/factories/use-cases/animal-childbirths-use-cases/remote-get-animal-childbirths-use-case-factory.ts @@ -0,0 +1,21 @@ +import { makeApiHttpClient } from '@/core/main/factories/http' + +import { RemoteGetAnimalChildbirthsUseCase } from '../../../../data/use-cases/animal-childbirths-use-cases' +import { + type AnimalChildbirthApiResponse, + type AnimalChildbirthModel, +} from '../../../../domain/models/animal-childbirths-model' + +import type { GetAnimalChildbirthsUseCase } from '../../../../domain/use-cases/animal-childbirths-use-cases' +import type { ListApiResponse } from '@/core/domain/types' + +export function makeRemoteGetAnimalChildbirthsUseCase(): GetAnimalChildbirthsUseCase { + return new RemoteGetAnimalChildbirthsUseCase( + 'properties/:propertyId/animals/:animalId/childbirths', + makeApiHttpClient< + AnimalChildbirthModel, + AnimalChildbirthApiResponse, + ListApiResponse + >() + ) +} diff --git a/src/app/modules/animals/main/factories/use-cases/animal-childbirths-use-cases/remote-update-animal-childbirth-use-case-factory.ts b/src/app/modules/animals/main/factories/use-cases/animal-childbirths-use-cases/remote-update-animal-childbirth-use-case-factory.ts new file mode 100644 index 00000000..a6bb1b04 --- /dev/null +++ b/src/app/modules/animals/main/factories/use-cases/animal-childbirths-use-cases/remote-update-animal-childbirth-use-case-factory.ts @@ -0,0 +1,12 @@ +import { makeApiHttpClient } from '@/core/main/factories/http' + +import { RemoteUpdateAnimalChildbirthUseCase } from '../../../../data/use-cases/animal-childbirths-use-cases' + +import type { UpdateAnimalChildbirthUseCase } from '../../../../domain/use-cases/animal-childbirths-use-cases' + +export function makeRemoteUpdateAnimalChildbirthUseCase(): UpdateAnimalChildbirthUseCase { + return new RemoteUpdateAnimalChildbirthUseCase( + 'properties/:propertyId/animals/:animalId/childbirths', + makeApiHttpClient() + ) +} diff --git a/src/app/modules/animals/main/factories/use-cases/animal-deaths-use-cases/index.ts b/src/app/modules/animals/main/factories/use-cases/animal-deaths-use-cases/index.ts new file mode 100644 index 00000000..c213605b --- /dev/null +++ b/src/app/modules/animals/main/factories/use-cases/animal-deaths-use-cases/index.ts @@ -0,0 +1,5 @@ +export * from './remote-create-animal-death-use-case-factory' +export * from './remote-delete-animal-death-use-case-factory' +export * from './remote-get-animal-death-use-case-factory' +export * from './remote-get-animal-deaths-use-case-factory' +export * from './remote-update-animal-death-use-case-factory' diff --git a/src/app/modules/animals/main/factories/use-cases/animal-deaths-use-cases/remote-create-animal-death-use-case-factory.ts b/src/app/modules/animals/main/factories/use-cases/animal-deaths-use-cases/remote-create-animal-death-use-case-factory.ts new file mode 100644 index 00000000..84769138 --- /dev/null +++ b/src/app/modules/animals/main/factories/use-cases/animal-deaths-use-cases/remote-create-animal-death-use-case-factory.ts @@ -0,0 +1,12 @@ +import { makeApiHttpClient } from '@/core/main/factories/http' + +import { RemoteCreateAnimalDeathUseCase } from '../../../../data/use-cases/animal-deaths-use-cases' + +import type { CreateAnimalDeathUseCase } from '../../../../domain/use-cases/animal-deaths-use-cases' + +export function makeRemoteCreateAnimalDeathUseCase(): CreateAnimalDeathUseCase { + return new RemoteCreateAnimalDeathUseCase( + 'properties/:propertyId/animals/:animalId/deaths', + makeApiHttpClient() + ) +} diff --git a/src/app/modules/animals/main/factories/use-cases/animal-deaths-use-cases/remote-delete-animal-death-use-case-factory.ts b/src/app/modules/animals/main/factories/use-cases/animal-deaths-use-cases/remote-delete-animal-death-use-case-factory.ts new file mode 100644 index 00000000..960e7a65 --- /dev/null +++ b/src/app/modules/animals/main/factories/use-cases/animal-deaths-use-cases/remote-delete-animal-death-use-case-factory.ts @@ -0,0 +1,12 @@ +import { makeApiHttpClient } from '@/core/main/factories/http' + +import { RemoteDeleteAnimalDeathUseCase } from '../../../../data/use-cases/animal-deaths-use-cases' + +import type { DeleteAnimalDeathUseCase } from '../../../../domain/use-cases/animal-deaths-use-cases' + +export function makeRemoteDeleteAnimalDeathUseCase(): DeleteAnimalDeathUseCase { + return new RemoteDeleteAnimalDeathUseCase( + 'properties/:propertyId/animals/:animalId/deaths', + makeApiHttpClient() + ) +} diff --git a/src/app/modules/animals/main/factories/use-cases/animal-deaths-use-cases/remote-get-animal-death-use-case-factory.ts b/src/app/modules/animals/main/factories/use-cases/animal-deaths-use-cases/remote-get-animal-death-use-case-factory.ts new file mode 100644 index 00000000..c1014156 --- /dev/null +++ b/src/app/modules/animals/main/factories/use-cases/animal-deaths-use-cases/remote-get-animal-death-use-case-factory.ts @@ -0,0 +1,16 @@ +import { makeApiHttpClient } from '@/core/main/factories/http' + +import { RemoteGetAnimalDeathUseCase } from '../../../../data/use-cases/animal-deaths-use-cases' + +import type { + AnimalDeathDetailsModel, + AnimalDeathDetailsApiResponse, +} from '../../../../domain/models/animal-deaths-model' +import type { GetAnimalDeathUseCase } from '../../../../domain/use-cases/animal-deaths-use-cases' + +export function makeRemoteGetAnimalDeathUseCase(): GetAnimalDeathUseCase { + return new RemoteGetAnimalDeathUseCase( + 'properties/:propertyId/animals/:animalId/deaths', + makeApiHttpClient() + ) +} diff --git a/src/app/modules/animals/main/factories/use-cases/animal-deaths-use-cases/remote-get-animal-deaths-use-case-factory.ts b/src/app/modules/animals/main/factories/use-cases/animal-deaths-use-cases/remote-get-animal-deaths-use-case-factory.ts new file mode 100644 index 00000000..789579c9 --- /dev/null +++ b/src/app/modules/animals/main/factories/use-cases/animal-deaths-use-cases/remote-get-animal-deaths-use-case-factory.ts @@ -0,0 +1,21 @@ +import { makeApiHttpClient } from '@/core/main/factories/http' + +import { RemoteGetAnimalDeathsUseCase } from '../../../../data/use-cases/animal-deaths-use-cases' + +import type { + AnimalDeathApiResponse, + AnimalDeathModel, +} from '../../../../domain/models/animal-deaths-model' +import type { GetAnimalDeathsUseCase } from '../../../../domain/use-cases/animal-deaths-use-cases' +import type { ListApiResponse } from '@/core/domain/types' + +export function makeRemoteGetAnimalDeathsUseCase(): GetAnimalDeathsUseCase { + return new RemoteGetAnimalDeathsUseCase( + 'properties/:propertyId/animals/:animalId/deaths', + makeApiHttpClient< + AnimalDeathModel, + AnimalDeathApiResponse, + ListApiResponse + >() + ) +} diff --git a/src/app/modules/animals/main/factories/use-cases/animal-deaths-use-cases/remote-update-animal-death-use-case-factory.ts b/src/app/modules/animals/main/factories/use-cases/animal-deaths-use-cases/remote-update-animal-death-use-case-factory.ts new file mode 100644 index 00000000..45019964 --- /dev/null +++ b/src/app/modules/animals/main/factories/use-cases/animal-deaths-use-cases/remote-update-animal-death-use-case-factory.ts @@ -0,0 +1,12 @@ +import { makeApiHttpClient } from '@/core/main/factories/http' + +import { RemoteUpdateAnimalDeathUseCase } from '../../../../data/use-cases/animal-deaths-use-cases' + +import type { UpdateAnimalDeathUseCase } from '../../../../domain/use-cases/animal-deaths-use-cases' + +export function makeRemoteUpdateAnimalDeathUseCase(): UpdateAnimalDeathUseCase { + return new RemoteUpdateAnimalDeathUseCase( + 'properties/:propertyId/animals/:animalId/deaths', + makeApiHttpClient() + ) +} diff --git a/src/app/modules/animals/main/factories/use-cases/animal-diseases-use-cases/index.ts b/src/app/modules/animals/main/factories/use-cases/animal-diseases-use-cases/index.ts new file mode 100644 index 00000000..7dc07692 --- /dev/null +++ b/src/app/modules/animals/main/factories/use-cases/animal-diseases-use-cases/index.ts @@ -0,0 +1,5 @@ +export * from './remote-create-animal-disease-use-case-factory' +export * from './remote-delete-animal-disease-use-case-factory' +export * from './remote-get-animal-disease-use-case-factory' +export * from './remote-get-animal-diseases-use-case-factory' +export * from './remote-update-animal-disease-use-case-factory' diff --git a/src/app/modules/animals/main/factories/use-cases/animal-diseases-use-cases/remote-create-animal-disease-use-case-factory.ts b/src/app/modules/animals/main/factories/use-cases/animal-diseases-use-cases/remote-create-animal-disease-use-case-factory.ts new file mode 100644 index 00000000..f7728a06 --- /dev/null +++ b/src/app/modules/animals/main/factories/use-cases/animal-diseases-use-cases/remote-create-animal-disease-use-case-factory.ts @@ -0,0 +1,12 @@ +import { makeApiHttpClient } from '@/core/main/factories/http' + +import { RemoteCreateAnimalDiseaseUseCase } from '../../../../data/use-cases/animal-diseases-use-cases' + +import type { CreateAnimalDiseaseUseCase } from '../../../../domain/use-cases/animal-diseases-use-cases' + +export function makeRemoteCreateAnimalDiseaseUseCase(): CreateAnimalDiseaseUseCase { + return new RemoteCreateAnimalDiseaseUseCase( + 'properties/:propertyId/animals/:animalId/diseases', + makeApiHttpClient() + ) +} diff --git a/src/app/modules/animals/main/factories/use-cases/animal-diseases-use-cases/remote-delete-animal-disease-use-case-factory.ts b/src/app/modules/animals/main/factories/use-cases/animal-diseases-use-cases/remote-delete-animal-disease-use-case-factory.ts new file mode 100644 index 00000000..cd166373 --- /dev/null +++ b/src/app/modules/animals/main/factories/use-cases/animal-diseases-use-cases/remote-delete-animal-disease-use-case-factory.ts @@ -0,0 +1,12 @@ +import { makeApiHttpClient } from '@/core/main/factories/http' + +import { RemoteDeleteAnimalDiseaseUseCase } from '../../../../data/use-cases/animal-diseases-use-cases' + +import type { DeleteAnimalDiseaseUseCase } from '../../../../domain/use-cases/animal-diseases-use-cases' + +export function makeRemoteDeleteAnimalDiseaseUseCase(): DeleteAnimalDiseaseUseCase { + return new RemoteDeleteAnimalDiseaseUseCase( + 'properties/:propertyId/animals/:animalId/diseases', + makeApiHttpClient() + ) +} diff --git a/src/app/modules/animals/main/factories/use-cases/animal-diseases-use-cases/remote-get-animal-disease-use-case-factory.ts b/src/app/modules/animals/main/factories/use-cases/animal-diseases-use-cases/remote-get-animal-disease-use-case-factory.ts new file mode 100644 index 00000000..fb18fc6a --- /dev/null +++ b/src/app/modules/animals/main/factories/use-cases/animal-diseases-use-cases/remote-get-animal-disease-use-case-factory.ts @@ -0,0 +1,19 @@ +import { makeApiHttpClient } from '@/core/main/factories/http' + +import { RemoteGetAnimalDiseaseUseCase } from '../../../../data/use-cases/animal-diseases-use-cases' + +import type { + AnimalDiseaseDetailsModel, + AnimalDiseaseDetailsApiResponse, +} from '../../../../domain/models/animal-diseases-model' +import type { GetAnimalDiseaseUseCase } from '../../../../domain/use-cases/animal-diseases-use-cases' + +export function makeRemoteGetAnimalDiseaseUseCase(): GetAnimalDiseaseUseCase { + return new RemoteGetAnimalDiseaseUseCase( + 'properties/:propertyId/animals/:animalId/diseases', + makeApiHttpClient< + AnimalDiseaseDetailsModel, + AnimalDiseaseDetailsApiResponse + >() + ) +} diff --git a/src/app/modules/animals/main/factories/use-cases/animal-diseases-use-cases/remote-get-animal-diseases-use-case-factory.ts b/src/app/modules/animals/main/factories/use-cases/animal-diseases-use-cases/remote-get-animal-diseases-use-case-factory.ts new file mode 100644 index 00000000..7458f0f9 --- /dev/null +++ b/src/app/modules/animals/main/factories/use-cases/animal-diseases-use-cases/remote-get-animal-diseases-use-case-factory.ts @@ -0,0 +1,21 @@ +import { makeApiHttpClient } from '@/core/main/factories/http' + +import { RemoteGetAnimalDiseasesUseCase } from '../../../../data/use-cases/animal-diseases-use-cases' + +import type { + AnimalDiseaseApiResponse, + AnimalDiseaseModel, +} from '../../../../domain/models/animal-diseases-model' +import type { GetAnimalDiseasesUseCase } from '../../../../domain/use-cases/animal-diseases-use-cases' +import type { ListApiResponse } from '@/core/domain/types' + +export function makeRemoteGetAnimalDiseasesUseCase(): GetAnimalDiseasesUseCase { + return new RemoteGetAnimalDiseasesUseCase( + 'properties/:propertyId/animals/:animalId/diseases', + makeApiHttpClient< + AnimalDiseaseModel, + AnimalDiseaseApiResponse, + ListApiResponse + >() + ) +} diff --git a/src/app/modules/animals/main/factories/use-cases/animal-diseases-use-cases/remote-update-animal-disease-use-case-factory.ts b/src/app/modules/animals/main/factories/use-cases/animal-diseases-use-cases/remote-update-animal-disease-use-case-factory.ts new file mode 100644 index 00000000..96de306a --- /dev/null +++ b/src/app/modules/animals/main/factories/use-cases/animal-diseases-use-cases/remote-update-animal-disease-use-case-factory.ts @@ -0,0 +1,12 @@ +import { makeApiHttpClient } from '@/core/main/factories/http' + +import { RemoteUpdateAnimalDiseaseUseCase } from '../../../../data/use-cases/animal-diseases-use-cases' + +import type { UpdateAnimalDiseaseUseCase } from '../../../../domain/use-cases/animal-diseases-use-cases' + +export function makeRemoteUpdateAnimalDiseaseUseCase(): UpdateAnimalDiseaseUseCase { + return new RemoteUpdateAnimalDiseaseUseCase( + 'properties/:propertyId/animals/:animalId/diseases', + makeApiHttpClient() + ) +} diff --git a/src/app/modules/animals/main/factories/use-cases/animal-heifer-calf-stages-use-cases/index.ts b/src/app/modules/animals/main/factories/use-cases/animal-heifer-calf-stages-use-cases/index.ts new file mode 100644 index 00000000..20475118 --- /dev/null +++ b/src/app/modules/animals/main/factories/use-cases/animal-heifer-calf-stages-use-cases/index.ts @@ -0,0 +1,5 @@ +export * from './remote-create-animal-heifer-calf-stage-use-case-factory' +export * from './remote-delete-animal-heifer-calf-stage-use-case-factory' +export * from './remote-get-animal-heifer-calf-stage-use-case-factory' +export * from './remote-get-animal-heifer-calf-stages-use-case-factory' +export * from './remote-update-animal-heifer-calf-stage-use-case-factory' diff --git a/src/app/modules/animals/main/factories/use-cases/animal-heifer-calf-stages-use-cases/remote-create-animal-heifer-calf-stage-use-case-factory.ts b/src/app/modules/animals/main/factories/use-cases/animal-heifer-calf-stages-use-cases/remote-create-animal-heifer-calf-stage-use-case-factory.ts new file mode 100644 index 00000000..b1b12415 --- /dev/null +++ b/src/app/modules/animals/main/factories/use-cases/animal-heifer-calf-stages-use-cases/remote-create-animal-heifer-calf-stage-use-case-factory.ts @@ -0,0 +1,12 @@ +import { makeApiHttpClient } from '@/core/main/factories/http' + +import { RemoteCreateAnimalHeiferCalfStageUseCase } from '../../../../data/use-cases/animal-heifer-calf-stages-use-cases' + +import type { CreateAnimalHeiferCalfStageUseCase } from '../../../../domain/use-cases/animal-heifer-calf-stages-use-cases' + +export function makeRemoteCreateAnimalHeiferCalfStageUseCase(): CreateAnimalHeiferCalfStageUseCase { + return new RemoteCreateAnimalHeiferCalfStageUseCase( + 'properties/:propertyId/animals/:animalId/heifer-calf-stages', + makeApiHttpClient() + ) +} diff --git a/src/app/modules/animals/main/factories/use-cases/animal-heifer-calf-stages-use-cases/remote-delete-animal-heifer-calf-stage-use-case-factory.ts b/src/app/modules/animals/main/factories/use-cases/animal-heifer-calf-stages-use-cases/remote-delete-animal-heifer-calf-stage-use-case-factory.ts new file mode 100644 index 00000000..6307d7fd --- /dev/null +++ b/src/app/modules/animals/main/factories/use-cases/animal-heifer-calf-stages-use-cases/remote-delete-animal-heifer-calf-stage-use-case-factory.ts @@ -0,0 +1,12 @@ +import { makeApiHttpClient } from '@/core/main/factories/http' + +import { RemoteDeleteAnimalHeiferCalfStageUseCase } from '../../../../data/use-cases/animal-heifer-calf-stages-use-cases' + +import type { DeleteAnimalHeiferCalfStageUseCase } from '../../../../domain/use-cases/animal-heifer-calf-stages-use-cases' + +export function makeRemoteDeleteAnimalHeiferCalfStageUseCase(): DeleteAnimalHeiferCalfStageUseCase { + return new RemoteDeleteAnimalHeiferCalfStageUseCase( + 'properties/:propertyId/animals/:animalId/heifer-calf-stages', + makeApiHttpClient() + ) +} diff --git a/src/app/modules/animals/main/factories/use-cases/animal-heifer-calf-stages-use-cases/remote-get-animal-heifer-calf-stage-additional-data-use-case-factory.ts b/src/app/modules/animals/main/factories/use-cases/animal-heifer-calf-stages-use-cases/remote-get-animal-heifer-calf-stage-additional-data-use-case-factory.ts new file mode 100644 index 00000000..f26df813 --- /dev/null +++ b/src/app/modules/animals/main/factories/use-cases/animal-heifer-calf-stages-use-cases/remote-get-animal-heifer-calf-stage-additional-data-use-case-factory.ts @@ -0,0 +1,19 @@ +import { makeApiHttpClient } from '@/core/main/factories/http' + +import { RemoteGetAnimalHeiferCalfStageAdditionalDataUseCase } from '../../../../data/use-cases/animal-heifer-calf-stages-use-cases' + +import type { + AnimalHeiferCalfStageAdditionalDataApiResponse, + AnimalHeiferCalfStageAdditionalDataModel, +} from '../../../../domain/models/animal-heifer-calf-stages-model' +import type { GetAnimalHeiferCalfStageAdditionalDataUseCase } from '../../../../domain/use-cases/animal-heifer-calf-stages-use-cases' + +export function makeRemoteGetAnimalHeiferCalfStageAdditionalDataUseCase(): GetAnimalHeiferCalfStageAdditionalDataUseCase { + return new RemoteGetAnimalHeiferCalfStageAdditionalDataUseCase( + 'properties/:propertyId/animals/:animalId/heifer-calf-stages/additional-data', + makeApiHttpClient< + AnimalHeiferCalfStageAdditionalDataModel, + AnimalHeiferCalfStageAdditionalDataApiResponse + >() + ) +} diff --git a/src/app/modules/animals/main/factories/use-cases/animal-heifer-calf-stages-use-cases/remote-get-animal-heifer-calf-stage-use-case-factory.ts b/src/app/modules/animals/main/factories/use-cases/animal-heifer-calf-stages-use-cases/remote-get-animal-heifer-calf-stage-use-case-factory.ts new file mode 100644 index 00000000..3b538b38 --- /dev/null +++ b/src/app/modules/animals/main/factories/use-cases/animal-heifer-calf-stages-use-cases/remote-get-animal-heifer-calf-stage-use-case-factory.ts @@ -0,0 +1,19 @@ +import { makeApiHttpClient } from '@/core/main/factories/http' + +import { RemoteGetAnimalHeiferCalfStageUseCase } from '../../../../data/use-cases/animal-heifer-calf-stages-use-cases' + +import type { + AnimalHeiferCalfStageDetailsApiResponse, + AnimalHeiferCalfStageDetailsModel, +} from '../../../../domain/models/animal-heifer-calf-stages-model' +import type { GetAnimalHeiferCalfStageUseCase } from '../../../../domain/use-cases/animal-heifer-calf-stages-use-cases' + +export function makeRemoteGetAnimalHeiferCalfStageUseCase(): GetAnimalHeiferCalfStageUseCase { + return new RemoteGetAnimalHeiferCalfStageUseCase( + 'properties/:propertyId/animals/:animalId/heifer-calf-stages', + makeApiHttpClient< + AnimalHeiferCalfStageDetailsModel, + AnimalHeiferCalfStageDetailsApiResponse + >() + ) +} diff --git a/src/app/modules/animals/main/factories/use-cases/animal-heifer-calf-stages-use-cases/remote-get-animal-heifer-calf-stages-use-case-factory.ts b/src/app/modules/animals/main/factories/use-cases/animal-heifer-calf-stages-use-cases/remote-get-animal-heifer-calf-stages-use-case-factory.ts new file mode 100644 index 00000000..d48f9936 --- /dev/null +++ b/src/app/modules/animals/main/factories/use-cases/animal-heifer-calf-stages-use-cases/remote-get-animal-heifer-calf-stages-use-case-factory.ts @@ -0,0 +1,21 @@ +import { makeApiHttpClient } from '@/core/main/factories/http' + +import { RemoteGetAnimalHeiferCalfStagesUseCase } from '../../../../data/use-cases/animal-heifer-calf-stages-use-cases' +import { + AnimalHeiferCalfStageApiResponse, + type AnimalHeiferCalfStageModel, +} from '../../../../domain/models/animal-heifer-calf-stages-model' + +import type { GetAnimalHeiferCalfStagesUseCase } from '../../../../domain/use-cases/animal-heifer-calf-stages-use-cases' +import type { ListApiResponse } from '@/core/domain/types' + +export function makeRemoteGetAnimalHeiferCalfStagesUseCase(): GetAnimalHeiferCalfStagesUseCase { + return new RemoteGetAnimalHeiferCalfStagesUseCase( + 'properties/:propertyId/animals/:animalId/heifer-calf-stages', + makeApiHttpClient< + AnimalHeiferCalfStageModel, + AnimalHeiferCalfStageApiResponse, + ListApiResponse + >() + ) +} diff --git a/src/app/modules/animals/main/factories/use-cases/animal-heifer-calf-stages-use-cases/remote-update-animal-heifer-calf-stage-use-case-factory.ts b/src/app/modules/animals/main/factories/use-cases/animal-heifer-calf-stages-use-cases/remote-update-animal-heifer-calf-stage-use-case-factory.ts new file mode 100644 index 00000000..a4521689 --- /dev/null +++ b/src/app/modules/animals/main/factories/use-cases/animal-heifer-calf-stages-use-cases/remote-update-animal-heifer-calf-stage-use-case-factory.ts @@ -0,0 +1,12 @@ +import { makeApiHttpClient } from '@/core/main/factories/http' + +import { RemoteUpdateAnimalHeiferCalfStageUseCase } from '../../../../data/use-cases/animal-heifer-calf-stages-use-cases' + +import type { UpdateAnimalHeiferCalfStageUseCase } from '../../../../domain/use-cases/animal-heifer-calf-stages-use-cases' + +export function makeRemoteUpdateAnimalHeiferCalfStageUseCase(): UpdateAnimalHeiferCalfStageUseCase { + return new RemoteUpdateAnimalHeiferCalfStageUseCase( + 'properties/:propertyId/animals/:animalId/heifer-calf-stages', + makeApiHttpClient() + ) +} diff --git a/src/app/modules/animals/main/factories/use-cases/animal-pregnancy-diagnoses-use-cases/index.ts b/src/app/modules/animals/main/factories/use-cases/animal-pregnancy-diagnoses-use-cases/index.ts new file mode 100644 index 00000000..e1ce9874 --- /dev/null +++ b/src/app/modules/animals/main/factories/use-cases/animal-pregnancy-diagnoses-use-cases/index.ts @@ -0,0 +1,5 @@ +export * from './remote-create-animal-pregnancy-diagnosis-use-case-factory' +export * from './remote-delete-animal-pregnancy-diagnosis-use-case-factory' +export * from './remote-get-animal-pregnancy-diagnosis-use-case-factory' +export * from './remote-get-animal-pregnancy-diagnoses-use-case-factory' +export * from './remote-update-animal-pregnancy-diagnosis-use-case-factory' diff --git a/src/app/modules/animals/main/factories/use-cases/animal-pregnancy-diagnoses-use-cases/remote-create-animal-pregnancy-diagnosis-use-case-factory.ts b/src/app/modules/animals/main/factories/use-cases/animal-pregnancy-diagnoses-use-cases/remote-create-animal-pregnancy-diagnosis-use-case-factory.ts new file mode 100644 index 00000000..c69c1778 --- /dev/null +++ b/src/app/modules/animals/main/factories/use-cases/animal-pregnancy-diagnoses-use-cases/remote-create-animal-pregnancy-diagnosis-use-case-factory.ts @@ -0,0 +1,11 @@ +import { RemoteCreateAnimalPregnancyDiagnosisUseCase } from '@/app/modules/animals/data/use-cases/animal-pregnancy-diagnoses-use-cases' +import { makeApiHttpClient } from '@/core/main/factories/http' + +import type { CreateAnimalPregnancyDiagnosisUseCase } from '@/app/modules/animals/domain/use-cases/animal-pregnancy-diagnoses-use-cases' + +export function makeRemoteCreateAnimalPregnancyDiagnosisUseCase(): CreateAnimalPregnancyDiagnosisUseCase { + return new RemoteCreateAnimalPregnancyDiagnosisUseCase( + 'properties/:propertyId/animals/:animalId/pregnancy-diagnoses', + makeApiHttpClient() + ) +} diff --git a/src/app/modules/animals/main/factories/use-cases/animal-pregnancy-diagnoses-use-cases/remote-delete-animal-pregnancy-diagnosis-use-case-factory.ts b/src/app/modules/animals/main/factories/use-cases/animal-pregnancy-diagnoses-use-cases/remote-delete-animal-pregnancy-diagnosis-use-case-factory.ts new file mode 100644 index 00000000..83867a9d --- /dev/null +++ b/src/app/modules/animals/main/factories/use-cases/animal-pregnancy-diagnoses-use-cases/remote-delete-animal-pregnancy-diagnosis-use-case-factory.ts @@ -0,0 +1,11 @@ +import { RemoteDeleteAnimalPregnancyDiagnosisUseCase } from '@/app/modules/animals/data/use-cases/animal-pregnancy-diagnoses-use-cases' +import { makeApiHttpClient } from '@/core/main/factories/http' + +import type { DeleteAnimalPregnancyDiagnosisUseCase } from '@/app/modules/animals/domain/use-cases/animal-pregnancy-diagnoses-use-cases' + +export function makeRemoteDeleteAnimalPregnancyDiagnosisUseCase(): DeleteAnimalPregnancyDiagnosisUseCase { + return new RemoteDeleteAnimalPregnancyDiagnosisUseCase( + 'properties/:propertyId/animals/:animalId/pregnancy-diagnoses', + makeApiHttpClient() + ) +} diff --git a/src/app/modules/animals/main/factories/use-cases/animal-pregnancy-diagnoses-use-cases/remote-get-animal-pregnancy-diagnoses-use-case-factory.ts b/src/app/modules/animals/main/factories/use-cases/animal-pregnancy-diagnoses-use-cases/remote-get-animal-pregnancy-diagnoses-use-case-factory.ts new file mode 100644 index 00000000..961d581b --- /dev/null +++ b/src/app/modules/animals/main/factories/use-cases/animal-pregnancy-diagnoses-use-cases/remote-get-animal-pregnancy-diagnoses-use-case-factory.ts @@ -0,0 +1,20 @@ +import { RemoteGetAnimalPregnancyDiagnosesUseCase } from '@/app/modules/animals/data/use-cases/animal-pregnancy-diagnoses-use-cases/remote-get-animal-pregnancy-diagnoses-use-case' +import { makeApiHttpClient } from '@/core/main/factories/http' + +import type { + AnimalPregnancyDiagnosisModel, + AnimalPregnancyDiagnosisApiResponse, +} from '@/app/modules/animals/domain/models/animal-pregnancy-diagnoses-model' +import type { GetAnimalPregnancyDiagnosesUseCase } from '@/app/modules/animals/domain/use-cases/animal-pregnancy-diagnoses-use-cases' +import type { ListApiResponse } from '@/core/domain/types' + +export function makeRemoteGetAnimalPregnancyDiagnosesUseCase(): GetAnimalPregnancyDiagnosesUseCase { + return new RemoteGetAnimalPregnancyDiagnosesUseCase( + 'properties/:propertyId/animals/:animalId/pregnancy-diagnoses', + makeApiHttpClient< + AnimalPregnancyDiagnosisModel, + AnimalPregnancyDiagnosisApiResponse, + ListApiResponse + >() + ) +} diff --git a/src/app/modules/animals/main/factories/use-cases/animal-pregnancy-diagnoses-use-cases/remote-get-animal-pregnancy-diagnosis-use-case-factory.ts b/src/app/modules/animals/main/factories/use-cases/animal-pregnancy-diagnoses-use-cases/remote-get-animal-pregnancy-diagnosis-use-case-factory.ts new file mode 100644 index 00000000..c3407866 --- /dev/null +++ b/src/app/modules/animals/main/factories/use-cases/animal-pregnancy-diagnoses-use-cases/remote-get-animal-pregnancy-diagnosis-use-case-factory.ts @@ -0,0 +1,18 @@ +import { RemoteGetAnimalPregnancyDiagnosisUseCase } from '@/app/modules/animals/data/use-cases/animal-pregnancy-diagnoses-use-cases' +import { makeApiHttpClient } from '@/core/main/factories/http' + +import type { + AnimalPregnancyDiagnosisDetailsApiResponse, + AnimalPregnancyDiagnosisDetailsModel, +} from '@/app/modules/animals/domain/models/animal-pregnancy-diagnoses-model' +import type { GetAnimalPregnancyDiagnosisUseCase } from '@/app/modules/animals/domain/use-cases/animal-pregnancy-diagnoses-use-cases' + +export function makeRemoteGetAnimalPregnancyDiagnosisUseCase(): GetAnimalPregnancyDiagnosisUseCase { + return new RemoteGetAnimalPregnancyDiagnosisUseCase( + 'properties/:propertyId/animals/:animalId/pregnancy-diagnoses', + makeApiHttpClient< + AnimalPregnancyDiagnosisDetailsModel, + AnimalPregnancyDiagnosisDetailsApiResponse + >() + ) +} diff --git a/src/app/modules/animals/main/factories/use-cases/animal-pregnancy-diagnoses-use-cases/remote-update-animal-pregnancy-diagnosis-use-case-factory.ts b/src/app/modules/animals/main/factories/use-cases/animal-pregnancy-diagnoses-use-cases/remote-update-animal-pregnancy-diagnosis-use-case-factory.ts new file mode 100644 index 00000000..900bf427 --- /dev/null +++ b/src/app/modules/animals/main/factories/use-cases/animal-pregnancy-diagnoses-use-cases/remote-update-animal-pregnancy-diagnosis-use-case-factory.ts @@ -0,0 +1,11 @@ +import { RemoteUpdateAnimalPregnancyDiagnosisUseCase } from '@/app/modules/animals/data/use-cases/animal-pregnancy-diagnoses-use-cases' +import { makeApiHttpClient } from '@/core/main/factories/http' + +import type { UpdateAnimalPregnancyDiagnosisUseCase } from '@/app/modules/animals/domain/use-cases/animal-pregnancy-diagnoses-use-cases' + +export function makeRemoteUpdateAnimalPregnancyDiagnosisUseCase(): UpdateAnimalPregnancyDiagnosisUseCase { + return new RemoteUpdateAnimalPregnancyDiagnosisUseCase( + 'properties/:propertyId/animals/:animalId/pregnancy-diagnoses', + makeApiHttpClient() + ) +} diff --git a/src/app/modules/animals/main/factories/use-cases/index.ts b/src/app/modules/animals/main/factories/use-cases/index.ts new file mode 100644 index 00000000..e5b42f5f --- /dev/null +++ b/src/app/modules/animals/main/factories/use-cases/index.ts @@ -0,0 +1,5 @@ +export * from './remote-create-animal-use-case-factory' +export * from './remote-delete-animal-use-case-factory' +export * from './remote-get-animal-use-case-factory' +export * from './remote-get-animals-use-case-factory' +export * from './remote-update-animal-use-case-factory' diff --git a/src/app/modules/animals/main/factories/use-cases/remote-create-animal-use-case-factory.ts b/src/app/modules/animals/main/factories/use-cases/remote-create-animal-use-case-factory.ts new file mode 100644 index 00000000..d69a581b --- /dev/null +++ b/src/app/modules/animals/main/factories/use-cases/remote-create-animal-use-case-factory.ts @@ -0,0 +1,12 @@ +import { makeApiHttpClient } from '@/core/main/factories/http' + +import { RemoteCreateAnimalUseCase } from '../../../data/use-cases' + +import type { CreateAnimalUseCase } from '../../../domain/use-cases' + +export function makeRemoteCreateAnimalUseCase(): CreateAnimalUseCase { + return new RemoteCreateAnimalUseCase( + 'properties/:propertyId/animals', + makeApiHttpClient() + ) +} diff --git a/src/app/modules/animals/main/factories/use-cases/remote-delete-animal-use-case-factory.ts b/src/app/modules/animals/main/factories/use-cases/remote-delete-animal-use-case-factory.ts new file mode 100644 index 00000000..2b1bc9ec --- /dev/null +++ b/src/app/modules/animals/main/factories/use-cases/remote-delete-animal-use-case-factory.ts @@ -0,0 +1,12 @@ +import { makeApiHttpClient } from '@/core/main/factories/http' + +import { RemoteDeleteAnimalUseCase } from '../../../data/use-cases' + +import type { DeleteAnimalUseCase } from '../../../domain/use-cases' + +export function makeRemoteDeleteAnimalUseCase(): DeleteAnimalUseCase { + return new RemoteDeleteAnimalUseCase( + 'properties/:propertyId/animals', + makeApiHttpClient() + ) +} diff --git a/src/app/modules/animals/main/factories/use-cases/remote-get-animal-use-case-factory.ts b/src/app/modules/animals/main/factories/use-cases/remote-get-animal-use-case-factory.ts new file mode 100644 index 00000000..d4c1adc8 --- /dev/null +++ b/src/app/modules/animals/main/factories/use-cases/remote-get-animal-use-case-factory.ts @@ -0,0 +1,16 @@ +import { makeApiHttpClient } from '@/core/main/factories/http' + +import { RemoteGetAnimalUseCase } from '../../../data/use-cases' + +import type { + AnimalDetailsApiResponse, + AnimalDetailsModel, +} from '../../../domain/models/animals-model' +import type { GetAnimalUseCase } from '../../../domain/use-cases' + +export function makeRemoteGetAnimalUseCase(): GetAnimalUseCase { + return new RemoteGetAnimalUseCase( + 'properties/:propertyId/animals', + makeApiHttpClient() + ) +} diff --git a/src/app/modules/animals/main/factories/use-cases/remote-get-animals-use-case-factory.ts b/src/app/modules/animals/main/factories/use-cases/remote-get-animals-use-case-factory.ts new file mode 100644 index 00000000..4341ab5c --- /dev/null +++ b/src/app/modules/animals/main/factories/use-cases/remote-get-animals-use-case-factory.ts @@ -0,0 +1,21 @@ +import { makeApiHttpClient } from '@/core/main/factories/http' + +import { RemoteGetAnimalsUseCase } from '../../../data/use-cases' + +import type { + AnimalApiResponse, + AnimalModel, +} from '../../../domain/models/animals-model' +import type { GetAnimalsUseCase } from '../../../domain/use-cases' +import type { ListApiResponse } from '@/core/domain/types' + +export function makeRemoteGetAnimalsUseCase(): GetAnimalsUseCase { + return new RemoteGetAnimalsUseCase( + 'properties/:propertyId/animals', + makeApiHttpClient< + AnimalModel, + AnimalApiResponse, + ListApiResponse + >() + ) +} diff --git a/src/app/modules/animals/main/factories/use-cases/remote-update-animal-use-case-factory.ts b/src/app/modules/animals/main/factories/use-cases/remote-update-animal-use-case-factory.ts new file mode 100644 index 00000000..2792bd3e --- /dev/null +++ b/src/app/modules/animals/main/factories/use-cases/remote-update-animal-use-case-factory.ts @@ -0,0 +1,12 @@ +import { makeApiHttpClient } from '@/core/main/factories/http' + +import { RemoteUpdateAnimalUseCase } from '../../../data/use-cases' + +import type { UpdateAnimalUseCase } from '../../../domain/use-cases' + +export function makeRemoteUpdateAnimalUseCase(): UpdateAnimalUseCase { + return new RemoteUpdateAnimalUseCase( + 'properties/:propertyId/animals', + makeApiHttpClient() + ) +} diff --git a/src/app/modules/animals/mocks/handlers/animal-childbirths-handlers/create-animal-childbirth-handler.ts b/src/app/modules/animals/mocks/handlers/animal-childbirths-handlers/create-animal-childbirth-handler.ts new file mode 100644 index 00000000..d96e1642 --- /dev/null +++ b/src/app/modules/animals/mocks/handlers/animal-childbirths-handlers/create-animal-childbirth-handler.ts @@ -0,0 +1,19 @@ +import { HttpResponse, PathParams } from 'msw' + +import { HttpStatusCode } from '@/core/data/protocols/http' +import { httpWithMiddleware } from '@/core/mocks/lib' +import { withAuth, withDelay } from '@/core/mocks/middleware' + +import type { AnimalChildbirthDetailsModel } from '../../../domain/models/animal-childbirths-model' + +export const createAnimalChildbirthHandler = httpWithMiddleware< + PathParams<'propertyId' | 'animalId'>, + AnimalChildbirthDetailsModel, + never +>({ + routePath: '/api/properties/:propertyId/animals/:animalId/childbirths', + method: 'post', + middlewares: [withDelay(), withAuth], + resolver: async () => + HttpResponse.json({}, { status: HttpStatusCode.created }), +}) diff --git a/src/app/modules/animals/mocks/handlers/animal-childbirths-handlers/delete-animal-childbirth-handler.ts b/src/app/modules/animals/mocks/handlers/animal-childbirths-handlers/delete-animal-childbirth-handler.ts new file mode 100644 index 00000000..5ef51935 --- /dev/null +++ b/src/app/modules/animals/mocks/handlers/animal-childbirths-handlers/delete-animal-childbirth-handler.ts @@ -0,0 +1,18 @@ +import { HttpResponse, type PathParams } from 'msw' + +import { httpWithMiddleware } from '@/core/mocks/lib' +import { withDelay, withAuth } from '@/core/mocks/middleware' + +export const deleteAnimalChildbirthHandler = httpWithMiddleware< + PathParams<'propertyId' | 'animalId' | 'id'>, + never, + never +>({ + routePath: '/api/properties/:propertyId/animals/:animalId/childbirths/:id', + method: 'delete', + middlewares: [withDelay(), withAuth], + resolver: async () => + HttpResponse.json(undefined, { + status: 204, + }), +}) diff --git a/src/app/modules/animals/mocks/handlers/animal-childbirths-handlers/get-animal-childbirth-handler.ts b/src/app/modules/animals/mocks/handlers/animal-childbirths-handlers/get-animal-childbirth-handler.ts new file mode 100644 index 00000000..11352fc2 --- /dev/null +++ b/src/app/modules/animals/mocks/handlers/animal-childbirths-handlers/get-animal-childbirth-handler.ts @@ -0,0 +1,51 @@ +import { faker } from '@faker-js/faker/locale/pt_BR' +import { HttpResponse, type PathParams } from 'msw' + +import { HttpStatusCode } from '@/core/data/protocols/http' +import { httpWithMiddleware } from '@/core/mocks/lib' +import { withDelay, withAuth } from '@/core/mocks/middleware' + +import animalChildbirthsData from '@database/animalChildbirthsData.json' + +import type { AnimalChildbirthDetailsApiResponse } from '../../../domain/models/animal-childbirths-model' + +export const getAnimalChildbirthHandler = httpWithMiddleware< + PathParams<'propertyId' | 'animalId' | 'id'>, + never, + AnimalChildbirthDetailsApiResponse +>({ + routePath: '/api/properties/:propertyId/animals/:animalId/childbirths/:id', + method: 'get', + middlewares: [withDelay(), withAuth], + resolver: async ({ params }) => { + if (!animalChildbirthsData.length) { + return HttpResponse.json({} as AnimalChildbirthDetailsApiResponse, { + status: 404, + }) + } + + const animalChildbirthFound = animalChildbirthsData.find( + (animal) => animal.id === Number(params.id) + ) + + if (!animalChildbirthFound) { + return HttpResponse.json({} as AnimalChildbirthDetailsApiResponse, { + status: 404, + }) + } + + return HttpResponse.json( + { + date: animalChildbirthFound.date, + gender: animalChildbirthFound.gender, + weight: animalChildbirthFound.weight, + condition: animalChildbirthFound.condition, + breed: { + label: animalChildbirthFound.breed, + value: faker.number.int({ min: 1, max: 1000 }), + }, + }, + { status: HttpStatusCode.ok } + ) + }, +}) diff --git a/src/app/modules/animals/mocks/handlers/animal-childbirths-handlers/get-animal-childbirths-handler.ts b/src/app/modules/animals/mocks/handlers/animal-childbirths-handlers/get-animal-childbirths-handler.ts new file mode 100644 index 00000000..47f50038 --- /dev/null +++ b/src/app/modules/animals/mocks/handlers/animal-childbirths-handlers/get-animal-childbirths-handler.ts @@ -0,0 +1,72 @@ +import { HttpResponse, type PathParams } from 'msw' + +import { HttpStatusCode } from '@/core/data/protocols/http' +import { httpWithMiddleware } from '@/core/mocks/lib' +import { withDelay, withAuth } from '@/core/mocks/middleware' +import { filterData, sortData, paginateData } from '@/core/mocks/utils' + +import animalChildbirthsData from '@database/animalChildbirthsData.json' + +import type { AnimalChildbirthApiResponse } from '../../../domain/models/animal-childbirths-model' +import type { MockParams } from '@/core/mocks/types/mock-params-type' +import type { MockResponse } from '@/core/mocks/types/mock-response-type' + +export const getAnimalChildbirthsHandler = httpWithMiddleware< + PathParams<'propertyId' | 'animalId'>, + MockParams, + MockResponse +>({ + routePath: '/api/properties/:propertyId/animals/:animalId/childbirths/search', + method: 'post', + middlewares: [withDelay(), withAuth], + resolver: async ({ request }) => { + const { filters, page, rows, sort } = await request.json() + + if (!animalChildbirthsData.length) { + return HttpResponse.json( + { + content: [], + numberOfElements: 0, + pageable: { + pageSize: 0, + }, + }, + { + status: 404, + } + ) + } + + let animalChildbirths = + animalChildbirthsData as AnimalChildbirthApiResponse[] + + if (filters) + animalChildbirths = filterData( + filters, + animalChildbirths + ) + if (sort) + animalChildbirths = sortData( + sort, + animalChildbirths + ) + const numberOfElements = animalChildbirths.length + + if (page) + animalChildbirths = paginateData( + { page, perPage: rows }, + animalChildbirths + ) + + return HttpResponse.json( + { + content: animalChildbirths, + numberOfElements, + pageable: { + pageSize: rows, + }, + }, + { status: HttpStatusCode.ok } + ) + }, +}) diff --git a/src/app/modules/animals/mocks/handlers/animal-childbirths-handlers/index.ts b/src/app/modules/animals/mocks/handlers/animal-childbirths-handlers/index.ts new file mode 100644 index 00000000..0fc8dfcd --- /dev/null +++ b/src/app/modules/animals/mocks/handlers/animal-childbirths-handlers/index.ts @@ -0,0 +1,5 @@ +export * from './create-animal-childbirth-handler' +export * from './delete-animal-childbirth-handler' +export * from './get-animal-childbirth-handler' +export * from './get-animal-childbirths-handler' +export * from './update-animal-childbirth-handler' diff --git a/src/app/modules/animals/mocks/handlers/animal-childbirths-handlers/update-animal-childbirth-handler.ts b/src/app/modules/animals/mocks/handlers/animal-childbirths-handlers/update-animal-childbirth-handler.ts new file mode 100644 index 00000000..7588bf38 --- /dev/null +++ b/src/app/modules/animals/mocks/handlers/animal-childbirths-handlers/update-animal-childbirth-handler.ts @@ -0,0 +1,17 @@ +import { HttpResponse, PathParams } from 'msw' + +import { HttpStatusCode } from '@/core/data/protocols/http' +import { httpWithMiddleware } from '@/core/mocks/lib' +import { withDelay, withAuth } from '@/core/mocks/middleware' + +export const updateAnimalChildbirthHandler = httpWithMiddleware< + PathParams<'propertyId' | 'animalId' | 'id'>, + never, + never +>({ + routePath: '/api/properties/:propertyId/animals/:animalId/childbirths/:id', + method: 'patch', + middlewares: [withDelay(), withAuth], + resolver: async () => + HttpResponse.json(undefined, { status: HttpStatusCode.noContent }), +}) diff --git a/src/app/modules/animals/mocks/handlers/animal-deaths-handlers/create-animal-death-handler.ts b/src/app/modules/animals/mocks/handlers/animal-deaths-handlers/create-animal-death-handler.ts new file mode 100644 index 00000000..833d2fa5 --- /dev/null +++ b/src/app/modules/animals/mocks/handlers/animal-deaths-handlers/create-animal-death-handler.ts @@ -0,0 +1,19 @@ +import { HttpResponse, PathParams } from 'msw' + +import { HttpStatusCode } from '@/core/data/protocols/http' +import { httpWithMiddleware } from '@/core/mocks/lib' +import { withAuth, withDelay } from '@/core/mocks/middleware' + +import type { AnimalDeathDetailsModel } from '../../../domain/models/animal-deaths-model' + +export const createAnimalDeathHandler = httpWithMiddleware< + PathParams<'propertyId' | 'animalId'>, + AnimalDeathDetailsModel, + never +>({ + routePath: '/api/properties/:propertyId/animals/:animalId/deaths', + method: 'post', + middlewares: [withDelay(), withAuth], + resolver: async () => + HttpResponse.json({}, { status: HttpStatusCode.created }), +}) diff --git a/src/app/modules/animals/mocks/handlers/animal-deaths-handlers/delete-animal-death-handler.ts b/src/app/modules/animals/mocks/handlers/animal-deaths-handlers/delete-animal-death-handler.ts new file mode 100644 index 00000000..5e356972 --- /dev/null +++ b/src/app/modules/animals/mocks/handlers/animal-deaths-handlers/delete-animal-death-handler.ts @@ -0,0 +1,18 @@ +import { HttpResponse, type PathParams } from 'msw' + +import { httpWithMiddleware } from '@/core/mocks/lib' +import { withDelay, withAuth } from '@/core/mocks/middleware' + +export const deleteAnimalDeathHandler = httpWithMiddleware< + PathParams<'propertyId' | 'animalId' | 'id'>, + never, + never +>({ + routePath: '/api/properties/:propertyId/animals/:animalId/deaths/:id', + method: 'delete', + middlewares: [withDelay(), withAuth], + resolver: async () => + HttpResponse.json(undefined, { + status: 204, + }), +}) diff --git a/src/app/modules/animals/mocks/handlers/animal-deaths-handlers/get-animal-death-handler.ts b/src/app/modules/animals/mocks/handlers/animal-deaths-handlers/get-animal-death-handler.ts new file mode 100644 index 00000000..fcd97d77 --- /dev/null +++ b/src/app/modules/animals/mocks/handlers/animal-deaths-handlers/get-animal-death-handler.ts @@ -0,0 +1,44 @@ +import { HttpResponse, type PathParams } from 'msw' + +import { HttpStatusCode } from '@/core/data/protocols/http' +import { httpWithMiddleware } from '@/core/mocks/lib' +import { withDelay, withAuth } from '@/core/mocks/middleware' + +import animalDeathsData from '@database/animalDeathsData.json' + +import type { AnimalDeathDetailsApiResponse } from '../../../domain/models/animal-deaths-model' + +export const getAnimalDeathHandler = httpWithMiddleware< + PathParams<'propertyId' | 'animalId' | 'id'>, + never, + AnimalDeathDetailsApiResponse +>({ + routePath: '/api/properties/:propertyId/animals/:animalId/deaths/:id', + method: 'get', + middlewares: [withDelay(), withAuth], + resolver: async ({ params }) => { + if (!animalDeathsData.length) { + return HttpResponse.json({} as AnimalDeathDetailsApiResponse, { + status: 404, + }) + } + + const animalDeathFound = animalDeathsData.find( + (animal) => animal.id === Number(params.id) + ) + + if (!animalDeathFound) { + return HttpResponse.json({} as AnimalDeathDetailsApiResponse, { + status: 404, + }) + } + + return HttpResponse.json( + { + date: animalDeathFound.date, + reason: animalDeathFound.reason, + }, + { status: HttpStatusCode.ok } + ) + }, +}) diff --git a/src/app/modules/animals/mocks/handlers/animal-deaths-handlers/get-animal-deaths-handler.ts b/src/app/modules/animals/mocks/handlers/animal-deaths-handlers/get-animal-deaths-handler.ts new file mode 100644 index 00000000..7626dc69 --- /dev/null +++ b/src/app/modules/animals/mocks/handlers/animal-deaths-handlers/get-animal-deaths-handler.ts @@ -0,0 +1,66 @@ +import { HttpResponse, type PathParams } from 'msw' + +import { HttpStatusCode } from '@/core/data/protocols/http' +import { httpWithMiddleware } from '@/core/mocks/lib' +import { withDelay, withAuth } from '@/core/mocks/middleware' +import { filterData, sortData, paginateData } from '@/core/mocks/utils' + +import animalDeathsData from '@database/animalDeathsData.json' + +import type { AnimalDeathApiResponse } from '../../../domain/models/animal-deaths-model' +import type { MockParams } from '@/core/mocks/types/mock-params-type' +import type { MockResponse } from '@/core/mocks/types/mock-response-type' + +export const getAnimalDeathsHandler = httpWithMiddleware< + PathParams<'propertyId' | 'animalId'>, + MockParams, + MockResponse +>({ + routePath: '/api/properties/:propertyId/animals/:animalId/deaths/search', + method: 'post', + middlewares: [withDelay(), withAuth], + resolver: async ({ request }) => { + const { filters, page, rows, sort } = await request.json() + + if (!animalDeathsData.length) { + return HttpResponse.json( + { + content: [], + numberOfElements: 0, + pageable: { + pageSize: 0, + }, + }, + { + status: 404, + } + ) + } + + let animalDeaths = animalDeathsData + + if (filters) + animalDeaths = filterData(filters, animalDeaths) + if (sort) + animalDeaths = sortData(sort, animalDeaths) + + const numberOfElements = animalDeaths.length + + if (page) + animalDeaths = paginateData( + { page, perPage: rows }, + animalDeaths + ) + + return HttpResponse.json( + { + content: animalDeaths, + numberOfElements, + pageable: { + pageSize: rows, + }, + }, + { status: HttpStatusCode.ok } + ) + }, +}) diff --git a/src/app/modules/animals/mocks/handlers/animal-deaths-handlers/index.ts b/src/app/modules/animals/mocks/handlers/animal-deaths-handlers/index.ts new file mode 100644 index 00000000..5c7ba347 --- /dev/null +++ b/src/app/modules/animals/mocks/handlers/animal-deaths-handlers/index.ts @@ -0,0 +1,5 @@ +export * from './create-animal-death-handler' +export * from './delete-animal-death-handler' +export * from './get-animal-death-handler' +export * from './get-animal-deaths-handler' +export * from './update-animal-death-handler' diff --git a/src/app/modules/animals/mocks/handlers/animal-deaths-handlers/update-animal-death-handler.ts b/src/app/modules/animals/mocks/handlers/animal-deaths-handlers/update-animal-death-handler.ts new file mode 100644 index 00000000..9acd1791 --- /dev/null +++ b/src/app/modules/animals/mocks/handlers/animal-deaths-handlers/update-animal-death-handler.ts @@ -0,0 +1,17 @@ +import { HttpResponse, PathParams } from 'msw' + +import { HttpStatusCode } from '@/core/data/protocols/http' +import { httpWithMiddleware } from '@/core/mocks/lib' +import { withDelay, withAuth } from '@/core/mocks/middleware' + +export const updateAnimalDeathHandler = httpWithMiddleware< + PathParams<'propertyId' | 'animalId' | 'id'>, + never, + never +>({ + routePath: '/api/properties/:propertyId/animals/:animalId/deaths/:id', + method: 'patch', + middlewares: [withDelay(), withAuth], + resolver: async () => + HttpResponse.json(undefined, { status: HttpStatusCode.noContent }), +}) diff --git a/src/app/modules/animals/mocks/handlers/animal-diseases-handlers/create-animal-disease-handler.ts b/src/app/modules/animals/mocks/handlers/animal-diseases-handlers/create-animal-disease-handler.ts new file mode 100644 index 00000000..5938704d --- /dev/null +++ b/src/app/modules/animals/mocks/handlers/animal-diseases-handlers/create-animal-disease-handler.ts @@ -0,0 +1,19 @@ +import { HttpResponse, PathParams } from 'msw' + +import { HttpStatusCode } from '@/core/data/protocols/http' +import { httpWithMiddleware } from '@/core/mocks/lib' +import { withAuth, withDelay } from '@/core/mocks/middleware' + +import type { AnimalDiseaseDetailsModel } from '../../../domain/models/animal-diseases-model' + +export const createAnimalDiseaseHandler = httpWithMiddleware< + PathParams<'propertyId' | 'animalId'>, + AnimalDiseaseDetailsModel, + never +>({ + routePath: '/api/properties/:propertyId/animals/:animalId/diseases', + method: 'post', + middlewares: [withDelay(), withAuth], + resolver: async () => + HttpResponse.json({}, { status: HttpStatusCode.created }), +}) diff --git a/src/app/modules/animals/mocks/handlers/animal-diseases-handlers/delete-animal-disease-handler.ts b/src/app/modules/animals/mocks/handlers/animal-diseases-handlers/delete-animal-disease-handler.ts new file mode 100644 index 00000000..9ef3749d --- /dev/null +++ b/src/app/modules/animals/mocks/handlers/animal-diseases-handlers/delete-animal-disease-handler.ts @@ -0,0 +1,18 @@ +import { HttpResponse, type PathParams } from 'msw' + +import { httpWithMiddleware } from '@/core/mocks/lib' +import { withDelay, withAuth } from '@/core/mocks/middleware' + +export const deleteAnimalDiseaseHandler = httpWithMiddleware< + PathParams<'propertyId' | 'animalId' | 'id'>, + never, + never +>({ + routePath: '/api/properties/:propertyId/animals/:animalId/diseases/:id', + method: 'delete', + middlewares: [withDelay(), withAuth], + resolver: async () => + HttpResponse.json(undefined, { + status: 204, + }), +}) diff --git a/src/app/modules/animals/mocks/handlers/animal-diseases-handlers/get-animal-disease-handler.ts b/src/app/modules/animals/mocks/handlers/animal-diseases-handlers/get-animal-disease-handler.ts new file mode 100644 index 00000000..2dad1547 --- /dev/null +++ b/src/app/modules/animals/mocks/handlers/animal-diseases-handlers/get-animal-disease-handler.ts @@ -0,0 +1,44 @@ +import { HttpResponse, type PathParams } from 'msw' + +import { HttpStatusCode } from '@/core/data/protocols/http' +import { httpWithMiddleware } from '@/core/mocks/lib' +import { withDelay, withAuth } from '@/core/mocks/middleware' + +import animalDiseasesData from '@database/animalDiseasesData.json' + +import type { AnimalDiseaseDetailsApiResponse } from '../../../domain/models/animal-diseases-model' + +export const getAnimalDiseaseHandler = httpWithMiddleware< + PathParams<'propertyId' | 'animalId' | 'id'>, + never, + AnimalDiseaseDetailsApiResponse +>({ + routePath: '/api/properties/:propertyId/animals/:animalId/diseases/:id', + method: 'get', + middlewares: [withDelay(), withAuth], + resolver: async ({ params }) => { + if (!animalDiseasesData.length) { + return HttpResponse.json({} as AnimalDiseaseDetailsApiResponse, { + status: 404, + }) + } + + const animalDiseaseFound = animalDiseasesData.find( + (animal) => animal.id === Number(params.id) + ) + + if (!animalDiseaseFound) { + return HttpResponse.json({} as AnimalDiseaseDetailsApiResponse, { + status: 404, + }) + } + + return HttpResponse.json( + { + diagnosticDate: animalDiseaseFound.diagnosticDate, + diagnostic: animalDiseaseFound.diagnostic, + }, + { status: HttpStatusCode.ok } + ) + }, +}) diff --git a/src/app/modules/animals/mocks/handlers/animal-diseases-handlers/get-animal-diseases-handler.ts b/src/app/modules/animals/mocks/handlers/animal-diseases-handlers/get-animal-diseases-handler.ts new file mode 100644 index 00000000..f1a9a467 --- /dev/null +++ b/src/app/modules/animals/mocks/handlers/animal-diseases-handlers/get-animal-diseases-handler.ts @@ -0,0 +1,69 @@ +import { HttpResponse, type PathParams } from 'msw' + +import { HttpStatusCode } from '@/core/data/protocols/http' +import { httpWithMiddleware } from '@/core/mocks/lib' +import { withDelay, withAuth } from '@/core/mocks/middleware' +import { filterData, sortData, paginateData } from '@/core/mocks/utils' + +import animalDiseasesData from '@database/animalDiseasesData.json' + +import type { AnimalDiseaseApiResponse } from '../../../domain/models/animal-diseases-model' +import type { MockParams } from '@/core/mocks/types/mock-params-type' +import type { MockResponse } from '@/core/mocks/types/mock-response-type' + +export const getAnimalDiseasesHandler = httpWithMiddleware< + PathParams<'propertyId' | 'animalId'>, + MockParams, + MockResponse +>({ + routePath: '/api/properties/:propertyId/animals/:animalId/diseases/search', + method: 'post', + middlewares: [withDelay(), withAuth], + resolver: async ({ request }) => { + const { filters, page, rows, sort } = await request.json() + + if (!animalDiseasesData.length) { + return HttpResponse.json( + { + content: [], + numberOfElements: 0, + pageable: { + pageSize: 0, + }, + }, + { + status: 404, + } + ) + } + + let animalDiseases = animalDiseasesData + + if (filters) + animalDiseases = filterData( + filters, + animalDiseases + ) + if (sort) + animalDiseases = sortData(sort, animalDiseases) + + const numberOfElements = animalDiseases.length + + if (page) + animalDiseases = paginateData( + { page, perPage: rows }, + animalDiseases + ) + + return HttpResponse.json( + { + content: animalDiseases, + numberOfElements, + pageable: { + pageSize: rows, + }, + }, + { status: HttpStatusCode.ok } + ) + }, +}) diff --git a/src/app/modules/animals/mocks/handlers/animal-diseases-handlers/index.ts b/src/app/modules/animals/mocks/handlers/animal-diseases-handlers/index.ts new file mode 100644 index 00000000..6b36c36d --- /dev/null +++ b/src/app/modules/animals/mocks/handlers/animal-diseases-handlers/index.ts @@ -0,0 +1,5 @@ +export * from './create-animal-disease-handler' +export * from './delete-animal-disease-handler' +export * from './get-animal-disease-handler' +export * from './get-animal-diseases-handler' +export * from './update-animal-disease-handler' diff --git a/src/app/modules/animals/mocks/handlers/animal-diseases-handlers/update-animal-disease-handler.ts b/src/app/modules/animals/mocks/handlers/animal-diseases-handlers/update-animal-disease-handler.ts new file mode 100644 index 00000000..b88bcfed --- /dev/null +++ b/src/app/modules/animals/mocks/handlers/animal-diseases-handlers/update-animal-disease-handler.ts @@ -0,0 +1,17 @@ +import { HttpResponse, PathParams } from 'msw' + +import { HttpStatusCode } from '@/core/data/protocols/http' +import { httpWithMiddleware } from '@/core/mocks/lib' +import { withDelay, withAuth } from '@/core/mocks/middleware' + +export const updateAnimalDiseaseHandler = httpWithMiddleware< + PathParams<'propertyId' | 'animalId' | 'id'>, + never, + never +>({ + routePath: '/api/properties/:propertyId/animals/:animalId/diseases/:id', + method: 'patch', + middlewares: [withDelay(), withAuth], + resolver: async () => + HttpResponse.json(undefined, { status: HttpStatusCode.noContent }), +}) diff --git a/src/app/modules/animals/mocks/handlers/animal-heifer-calf-stages-handlers/create-animal-heifer-calf-stage-handler.ts b/src/app/modules/animals/mocks/handlers/animal-heifer-calf-stages-handlers/create-animal-heifer-calf-stage-handler.ts new file mode 100644 index 00000000..a5de75ad --- /dev/null +++ b/src/app/modules/animals/mocks/handlers/animal-heifer-calf-stages-handlers/create-animal-heifer-calf-stage-handler.ts @@ -0,0 +1,19 @@ +import { HttpResponse, PathParams } from 'msw' + +import { HttpStatusCode } from '@/core/data/protocols/http' +import { httpWithMiddleware } from '@/core/mocks/lib' +import { withAuth, withDelay } from '@/core/mocks/middleware' + +import type { AnimalHeiferCalfStageDetailsModel } from '../../../domain/models/animal-heifer-calf-stages-model' + +export const createAnimalHeiferCalfStageHandler = httpWithMiddleware< + PathParams<'propertyId' | 'animalId'>, + AnimalHeiferCalfStageDetailsModel, + never +>({ + routePath: '/api/properties/:propertyId/animals/:animalId/heifer-calf-stages', + method: 'post', + middlewares: [withDelay(), withAuth], + resolver: async () => + HttpResponse.json({}, { status: HttpStatusCode.created }), +}) diff --git a/src/app/modules/animals/mocks/handlers/animal-heifer-calf-stages-handlers/delete-animal-heifer-calf-stage-handler.ts b/src/app/modules/animals/mocks/handlers/animal-heifer-calf-stages-handlers/delete-animal-heifer-calf-stage-handler.ts new file mode 100644 index 00000000..0efd18da --- /dev/null +++ b/src/app/modules/animals/mocks/handlers/animal-heifer-calf-stages-handlers/delete-animal-heifer-calf-stage-handler.ts @@ -0,0 +1,19 @@ +import { HttpResponse, type PathParams } from 'msw' + +import { httpWithMiddleware } from '@/core/mocks/lib' +import { withDelay, withAuth } from '@/core/mocks/middleware' + +export const deleteAnimalHeiferCalfStageHandler = httpWithMiddleware< + PathParams<'propertyId' | 'animalId' | 'id'>, + never, + never +>({ + routePath: + '/api/properties/:propertyId/animals/:animalId/heifer-calf-stages/:id', + method: 'delete', + middlewares: [withDelay(), withAuth], + resolver: async () => + HttpResponse.json(undefined, { + status: 204, + }), +}) diff --git a/src/app/modules/animals/mocks/handlers/animal-heifer-calf-stages-handlers/get-animal-heifer-calf-stage-additional-data-handler.ts b/src/app/modules/animals/mocks/handlers/animal-heifer-calf-stages-handlers/get-animal-heifer-calf-stage-additional-data-handler.ts new file mode 100644 index 00000000..ab0f010e --- /dev/null +++ b/src/app/modules/animals/mocks/handlers/animal-heifer-calf-stages-handlers/get-animal-heifer-calf-stage-additional-data-handler.ts @@ -0,0 +1,151 @@ +import { faker } from '@faker-js/faker/locale/pt_BR' +import { HttpResponse, type PathParams } from 'msw' + +import { HttpStatusCode } from '@/core/data/protocols/http' +import { httpWithMiddleware } from '@/core/mocks/lib' +import { withDelay, withAuth } from '@/core/mocks/middleware' + +import type { AnimalHeiferCalfStageAdditionalDataApiResponse } from '../../../domain/models/animal-heifer-calf-stages-model' + +export const getAnimalHeiferCalfStageAdditionalDataHandler = httpWithMiddleware< + PathParams<'propertyId' | 'animalId'>, + never, + AnimalHeiferCalfStageAdditionalDataApiResponse +>({ + routePath: + '/api/properties/:propertyId/animals/:animalId/heifer-calf-stages/additional-data', + method: 'get', + middlewares: [withDelay(), withAuth], + resolver: async () => { + return HttpResponse.json( + { + weighing: { + last: String( + faker.number.float({ + min: 0, + max: 100, + fractionDigits: 2, + }) + ), + current: '0', + }, + age: { + years: String(faker.number.int({ min: 1, max: 6 })), + months: String(faker.number.int({ min: 1, max: 12 })), + }, + ageWeightEstimate: { + min: String( + faker.number.float({ + min: 0, + max: 100, + fractionDigits: 2, + }) + ), + max: String( + faker.number.float({ + min: 0, + max: 100, + fractionDigits: 2, + }) + ), + }, + gmd: { + min: String( + faker.number.float({ + min: 0, + max: 100, + fractionDigits: 2, + }) + ), + max: String( + faker.number.float({ + min: 0, + max: 100, + fractionDigits: 2, + }) + ), + real: String( + faker.number.float({ + min: 0, + max: 100, + fractionDigits: 2, + }) + ), + status: faker.helpers.arrayElement([ + 'normal', + 'overweight', + 'underweight', + ]), + }, + amountOfMilk: (() => { + const correction = faker.number.float({ + min: 0, + max: 100, + fractionDigits: 2, + }) + + return { + correction: String(correction), + morning: (correction / 2).toFixed(2), + afternoon: (correction / 2).toFixed(2), + } + })(), + weaningDate: { + first: faker.date.future().toISOString(), + second: faker.date.future().toISOString(), + }, + removeLittleHouseDate: faker.date.future().toISOString(), + amountOfEstimateConcentrate: { + correction: String( + faker.number.float({ + min: 0, + max: 100, + fractionDigits: 2, + }) + ), + heifer: String( + faker.number.float({ + min: 0, + max: 100, + fractionDigits: 2, + }) + ), + calf: String( + faker.number.float({ + min: 0, + max: 100, + fractionDigits: 2, + }) + ), + }, + bulky: String( + faker.number.float({ + min: 0, + max: 100, + fractionDigits: 2, + }) + ), + dateToProvideSilage: faker.date.future().toISOString(), + reproduction: { + status: faker.helpers.arrayElement(['fit', 'unfit']), + minWeight: String( + faker.number.float({ + min: 0, + max: 100, + fractionDigits: 2, + }) + ), + fromDate: faker.date.future().toISOString(), + carriedOut: faker.date.past().toISOString(), + artificialInseminationNumber: String( + faker.number.int({ + min: 1, + max: 10, + }) + ), + }, + }, + { status: HttpStatusCode.ok } + ) + }, +}) diff --git a/src/app/modules/animals/mocks/handlers/animal-heifer-calf-stages-handlers/get-animal-heifer-calf-stage-handler.ts b/src/app/modules/animals/mocks/handlers/animal-heifer-calf-stages-handlers/get-animal-heifer-calf-stage-handler.ts new file mode 100644 index 00000000..2d47f225 --- /dev/null +++ b/src/app/modules/animals/mocks/handlers/animal-heifer-calf-stages-handlers/get-animal-heifer-calf-stage-handler.ts @@ -0,0 +1,171 @@ +import { faker } from '@faker-js/faker/locale/pt_BR' +import { HttpResponse, type PathParams } from 'msw' + +import { HttpStatusCode } from '@/core/data/protocols/http' +import { httpWithMiddleware } from '@/core/mocks/lib' +import { withDelay, withAuth } from '@/core/mocks/middleware' + +import animalHeiferCalfStagesData from '@database/animalHeiferCalfStagesData.json' + +import type { AnimalHeiferCalfStageDetailsApiResponse } from '../../../domain/models/animal-heifer-calf-stages-model' + +export const getAnimalHeiferCalfStageHandler = httpWithMiddleware< + PathParams<'propertyId' | 'animalId' | 'id'>, + never, + AnimalHeiferCalfStageDetailsApiResponse +>({ + routePath: + '/api/properties/:propertyId/animals/:animalId/heifer-calf-stages/:id', + method: 'get', + middlewares: [withDelay(), withAuth], + resolver: async ({ params }) => { + if (!animalHeiferCalfStagesData.length) { + return HttpResponse.json({} as AnimalHeiferCalfStageDetailsApiResponse, { + status: 404, + }) + } + + const animalHeiferCalfStageFound = animalHeiferCalfStagesData.find( + (animal) => animal.id === Number(params.id) + ) + + if (!animalHeiferCalfStageFound) { + return HttpResponse.json({} as AnimalHeiferCalfStageDetailsApiResponse, { + status: 404, + }) + } + + return HttpResponse.json( + { + weighingDate: animalHeiferCalfStageFound.weighingDate, + weighing: { + last: String( + faker.number.float({ + min: 0, + max: 100, + fractionDigits: 2, + }) + ), + current: animalHeiferCalfStageFound.weight, + }, + ecc: animalHeiferCalfStageFound.ecc, + age: { + years: String(faker.number.int({ min: 1, max: 6 })), + months: String(faker.number.int({ min: 1, max: 12 })), + }, + ageWeightEstimate: { + min: String( + faker.number.float({ + min: 0, + max: 100, + fractionDigits: 2, + }) + ), + max: String( + faker.number.float({ + min: 0, + max: 100, + fractionDigits: 2, + }) + ), + }, + gmd: { + min: String( + faker.number.float({ + min: 0, + max: 100, + fractionDigits: 2, + }) + ), + max: String( + faker.number.float({ + min: 0, + max: 100, + fractionDigits: 2, + }) + ), + real: String( + faker.number.float({ + min: 0, + max: 100, + fractionDigits: 2, + }) + ), + status: faker.helpers.arrayElement([ + 'normal', + 'overweight', + 'underweight', + ]), + }, + amountOfMilk: (() => { + const correction = faker.number.float({ + min: 0, + max: 100, + fractionDigits: 2, + }) + + return { + correction: String(correction), + morning: (correction / 2).toFixed(2), + afternoon: (correction / 2).toFixed(2), + } + })(), + weaningDate: { + first: faker.date.future().toISOString(), + second: faker.date.future().toISOString(), + }, + removeLittleHouseDate: faker.date.future().toISOString(), + amountOfEstimateConcentrate: { + correction: String( + faker.number.float({ + min: 0, + max: 100, + fractionDigits: 2, + }) + ), + heifer: String( + faker.number.float({ + min: 0, + max: 100, + fractionDigits: 2, + }) + ), + calf: String( + faker.number.float({ + min: 0, + max: 100, + fractionDigits: 2, + }) + ), + }, + bulky: String( + faker.number.float({ + min: 0, + max: 100, + fractionDigits: 2, + }) + ), + dateToProvideSilage: faker.date.future().toISOString(), + reproduction: { + status: faker.helpers.arrayElement(['fit', 'unfit']), + minWeight: String( + faker.number.float({ + min: 0, + max: 100, + fractionDigits: 2, + }) + ), + fromDate: faker.date.future().toISOString(), + carriedOut: faker.date.past().toISOString(), + artificialInseminationNumber: String( + faker.number.int({ + min: 1, + max: 10, + }) + ), + }, + }, + { status: HttpStatusCode.ok } + ) + }, +}) diff --git a/src/app/modules/animals/mocks/handlers/animal-heifer-calf-stages-handlers/get-animal-heifer-calf-stages-handler.ts b/src/app/modules/animals/mocks/handlers/animal-heifer-calf-stages-handlers/get-animal-heifer-calf-stages-handler.ts new file mode 100644 index 00000000..cb87e606 --- /dev/null +++ b/src/app/modules/animals/mocks/handlers/animal-heifer-calf-stages-handlers/get-animal-heifer-calf-stages-handler.ts @@ -0,0 +1,73 @@ +import { HttpResponse, type PathParams } from 'msw' + +import { HttpStatusCode } from '@/core/data/protocols/http' +import { httpWithMiddleware } from '@/core/mocks/lib' +import { withDelay, withAuth } from '@/core/mocks/middleware' +import { filterData, sortData, paginateData } from '@/core/mocks/utils' + +import animalHeiferCalfStagesData from '@database/animalHeiferCalfStagesData.json' + +import type { AnimalHeiferCalfStageApiResponse } from '../../../domain/models/animal-heifer-calf-stages-model' +import type { MockParams } from '@/core/mocks/types/mock-params-type' +import type { MockResponse } from '@/core/mocks/types/mock-response-type' + +export const getAnimalHeiferCalfStagesHandler = httpWithMiddleware< + PathParams<'propertyId' | 'animalId'>, + MockParams, + MockResponse +>({ + routePath: + '/api/properties/:propertyId/animals/:animalId/heifer-calf-stages/search', + method: 'post', + middlewares: [withDelay(), withAuth], + resolver: async ({ request }) => { + const { filters, page, rows, sort } = await request.json() + + if (!animalHeiferCalfStagesData.length) { + return HttpResponse.json( + { + content: [], + numberOfElements: 0, + pageable: { + pageSize: 0, + }, + }, + { + status: 404, + } + ) + } + + let animalHeiferCalfStages = + animalHeiferCalfStagesData as AnimalHeiferCalfStageApiResponse[] + + if (filters) + animalHeiferCalfStages = filterData( + filters, + animalHeiferCalfStages + ) + if (sort) + animalHeiferCalfStages = sortData( + sort, + animalHeiferCalfStages + ) + const numberOfElements = animalHeiferCalfStages.length + + if (page) + animalHeiferCalfStages = paginateData( + { page, perPage: rows }, + animalHeiferCalfStages + ) + + return HttpResponse.json( + { + content: animalHeiferCalfStages, + numberOfElements, + pageable: { + pageSize: rows, + }, + }, + { status: HttpStatusCode.ok } + ) + }, +}) diff --git a/src/app/modules/animals/mocks/handlers/animal-heifer-calf-stages-handlers/index.ts b/src/app/modules/animals/mocks/handlers/animal-heifer-calf-stages-handlers/index.ts new file mode 100644 index 00000000..feb4cb7d --- /dev/null +++ b/src/app/modules/animals/mocks/handlers/animal-heifer-calf-stages-handlers/index.ts @@ -0,0 +1,6 @@ +export * from './create-animal-heifer-calf-stage-handler' +export * from './delete-animal-heifer-calf-stage-handler' +export * from './get-animal-heifer-calf-stage-handler' +export * from './get-animal-heifer-calf-stages-handler' +export * from './update-animal-heifer-calf-stage-handler' +export * from './get-animal-heifer-calf-stage-additional-data-handler' diff --git a/src/app/modules/animals/mocks/handlers/animal-heifer-calf-stages-handlers/update-animal-heifer-calf-stage-handler.ts b/src/app/modules/animals/mocks/handlers/animal-heifer-calf-stages-handlers/update-animal-heifer-calf-stage-handler.ts new file mode 100644 index 00000000..00c986b7 --- /dev/null +++ b/src/app/modules/animals/mocks/handlers/animal-heifer-calf-stages-handlers/update-animal-heifer-calf-stage-handler.ts @@ -0,0 +1,18 @@ +import { HttpResponse, PathParams } from 'msw' + +import { HttpStatusCode } from '@/core/data/protocols/http' +import { httpWithMiddleware } from '@/core/mocks/lib' +import { withDelay, withAuth } from '@/core/mocks/middleware' + +export const updateAnimalHeiferCalfStageHandler = httpWithMiddleware< + PathParams<'propertyId' | 'animalId' | 'id'>, + never, + never +>({ + routePath: + '/api/properties/:propertyId/animals/:animalId/heifer-calf-stages/:id', + method: 'patch', + middlewares: [withDelay(), withAuth], + resolver: async () => + HttpResponse.json(undefined, { status: HttpStatusCode.noContent }), +}) diff --git a/src/app/modules/animals/mocks/handlers/animal-pregnancy-diagnoses-handlers/create-animal-pregnancy-diagnosis-handler.ts b/src/app/modules/animals/mocks/handlers/animal-pregnancy-diagnoses-handlers/create-animal-pregnancy-diagnosis-handler.ts new file mode 100644 index 00000000..97d0c1df --- /dev/null +++ b/src/app/modules/animals/mocks/handlers/animal-pregnancy-diagnoses-handlers/create-animal-pregnancy-diagnosis-handler.ts @@ -0,0 +1,20 @@ +import { HttpResponse, PathParams } from 'msw' + +import { HttpStatusCode } from '@/core/data/protocols/http' +import { httpWithMiddleware } from '@/core/mocks/lib' +import { withAuth, withDelay } from '@/core/mocks/middleware' + +import type { AnimalPregnancyDiagnosisDetailsApiResponse } from '../../../domain/models/animal-pregnancy-diagnoses-model' + +export const createAnimalPregnancyDiagnosisHandler = httpWithMiddleware< + PathParams<'propertyId' | 'animalId'>, + AnimalPregnancyDiagnosisDetailsApiResponse, + never +>({ + routePath: + '/api/properties/:propertyId/animals/:animalId/pregnancy-diagnoses', + method: 'post', + middlewares: [withDelay(), withAuth], + resolver: async () => + HttpResponse.json({}, { status: HttpStatusCode.created }), +}) diff --git a/src/app/modules/animals/mocks/handlers/animal-pregnancy-diagnoses-handlers/delete-animal-pregnancy-diagnosis-handler.ts b/src/app/modules/animals/mocks/handlers/animal-pregnancy-diagnoses-handlers/delete-animal-pregnancy-diagnosis-handler.ts new file mode 100644 index 00000000..e4258cf3 --- /dev/null +++ b/src/app/modules/animals/mocks/handlers/animal-pregnancy-diagnoses-handlers/delete-animal-pregnancy-diagnosis-handler.ts @@ -0,0 +1,19 @@ +import { HttpResponse, type PathParams } from 'msw' + +import { httpWithMiddleware } from '@/core/mocks/lib' +import { withDelay, withAuth } from '@/core/mocks/middleware' + +export const deleteAnimalPregnancyDiagnosisHandler = httpWithMiddleware< + PathParams<'propertyId' | 'animalId' | 'id'>, + never, + never +>({ + routePath: + '/api/properties/:propertyId/animals/:animalId/pregnancy-diagnoses/:id', + method: 'delete', + middlewares: [withDelay(), withAuth], + resolver: async () => + HttpResponse.json(undefined, { + status: 204, + }), +}) diff --git a/src/app/modules/animals/mocks/handlers/animal-pregnancy-diagnoses-handlers/get-animal-pregnancy-diagnoses-handler.ts b/src/app/modules/animals/mocks/handlers/animal-pregnancy-diagnoses-handlers/get-animal-pregnancy-diagnoses-handler.ts new file mode 100644 index 00000000..a1916f98 --- /dev/null +++ b/src/app/modules/animals/mocks/handlers/animal-pregnancy-diagnoses-handlers/get-animal-pregnancy-diagnoses-handler.ts @@ -0,0 +1,75 @@ +import { HttpResponse, type PathParams } from 'msw' + +import { HttpStatusCode } from '@/core/data/protocols/http' +import { httpWithMiddleware } from '@/core/mocks/lib' +import { withDelay, withAuth } from '@/core/mocks/middleware' +import { filterData, sortData, paginateData } from '@/core/mocks/utils' + +import animalPregnancyDiagnosesData from '@database/animalPregnancyDiagnosesData.json' + +import type { AnimalPregnancyDiagnosisApiResponse } from '../../../domain/models/animal-pregnancy-diagnoses-model' +import type { MockParams } from '@/core/mocks/types/mock-params-type' +import type { MockResponse } from '@/core/mocks/types/mock-response-type' + +export const getAnimalPregnancyDiagnosesHandler = httpWithMiddleware< + PathParams<'propertyId' | 'animalId'>, + MockParams, + MockResponse +>({ + routePath: + '/api/properties/:propertyId/animals/:animalId/pregnancy-diagnoses/search', + method: 'post', + middlewares: [withDelay(), withAuth], + resolver: async ({ request }) => { + const { filters, page, rows, sort } = await request.json() + + if (!animalPregnancyDiagnosesData.length) { + return HttpResponse.json( + { + content: [], + numberOfElements: 0, + pageable: { + pageSize: 0, + }, + }, + { + status: 404, + } + ) + } + + let animalPregnancyDiagnoses = animalPregnancyDiagnosesData + + if (filters) + animalPregnancyDiagnoses = + filterData( + filters, + animalPregnancyDiagnoses + ) + if (sort) + animalPregnancyDiagnoses = sortData( + sort, + animalPregnancyDiagnoses + ) + + const numberOfElements = animalPregnancyDiagnoses.length + + if (page) + animalPregnancyDiagnoses = + paginateData( + { page, perPage: rows }, + animalPregnancyDiagnoses + ) + + return HttpResponse.json( + { + content: animalPregnancyDiagnoses, + numberOfElements, + pageable: { + pageSize: rows, + }, + }, + { status: HttpStatusCode.ok } + ) + }, +}) diff --git a/src/app/modules/animals/mocks/handlers/animal-pregnancy-diagnoses-handlers/get-animal-pregnancy-diagnosis-handler.ts b/src/app/modules/animals/mocks/handlers/animal-pregnancy-diagnoses-handlers/get-animal-pregnancy-diagnosis-handler.ts new file mode 100644 index 00000000..1e26b2db --- /dev/null +++ b/src/app/modules/animals/mocks/handlers/animal-pregnancy-diagnoses-handlers/get-animal-pregnancy-diagnosis-handler.ts @@ -0,0 +1,52 @@ +import { HttpResponse, type PathParams } from 'msw' + +import { HttpStatusCode } from '@/core/data/protocols/http' +import { httpWithMiddleware } from '@/core/mocks/lib' +import { withDelay, withAuth } from '@/core/mocks/middleware' + +import animalPregnancyDiagnosesData from '@database/animalPregnancyDiagnosesData.json' + +import type { AnimalPregnancyDiagnosisDetailsApiResponse } from '../../../domain/models/animal-pregnancy-diagnoses-model' + +export const getAnimalPregnancyDiagnosisHandler = httpWithMiddleware< + PathParams<'propertyId' | 'animalId' | 'id'>, + never, + AnimalPregnancyDiagnosisDetailsApiResponse +>({ + routePath: + '/api/properties/:propertyId/animals/:animalId/pregnancy-diagnoses/:id', + method: 'get', + middlewares: [withDelay(), withAuth], + resolver: async ({ params }) => { + if (!animalPregnancyDiagnosesData.length) { + return HttpResponse.json( + {} as AnimalPregnancyDiagnosisDetailsApiResponse, + { + status: 404, + } + ) + } + + const animalPregnancyDiagnosisFound = animalPregnancyDiagnosesData.find( + (animal) => animal.id === Number(params.id) + ) + + if (!animalPregnancyDiagnosisFound) { + return HttpResponse.json( + {} as AnimalPregnancyDiagnosisDetailsApiResponse, + { + status: 404, + } + ) + } + + return HttpResponse.json( + { + date: animalPregnancyDiagnosisFound.date, + lastInseminationDate: + animalPregnancyDiagnosisFound.lastInseminationDate, + }, + { status: HttpStatusCode.ok } + ) + }, +}) diff --git a/src/app/modules/animals/mocks/handlers/animal-pregnancy-diagnoses-handlers/index.ts b/src/app/modules/animals/mocks/handlers/animal-pregnancy-diagnoses-handlers/index.ts new file mode 100644 index 00000000..a9fcad6a --- /dev/null +++ b/src/app/modules/animals/mocks/handlers/animal-pregnancy-diagnoses-handlers/index.ts @@ -0,0 +1,5 @@ +export * from './create-animal-pregnancy-diagnosis-handler' +export * from './delete-animal-pregnancy-diagnosis-handler' +export * from './get-animal-pregnancy-diagnosis-handler' +export * from './get-animal-pregnancy-diagnoses-handler' +export * from './update-animal-pregnancy-diagnosis-handler' diff --git a/src/app/modules/animals/mocks/handlers/animal-pregnancy-diagnoses-handlers/update-animal-pregnancy-diagnosis-handler.ts b/src/app/modules/animals/mocks/handlers/animal-pregnancy-diagnoses-handlers/update-animal-pregnancy-diagnosis-handler.ts new file mode 100644 index 00000000..af007ab2 --- /dev/null +++ b/src/app/modules/animals/mocks/handlers/animal-pregnancy-diagnoses-handlers/update-animal-pregnancy-diagnosis-handler.ts @@ -0,0 +1,18 @@ +import { HttpResponse, PathParams } from 'msw' + +import { HttpStatusCode } from '@/core/data/protocols/http' +import { httpWithMiddleware } from '@/core/mocks/lib' +import { withDelay, withAuth } from '@/core/mocks/middleware' + +export const updateAnimalPregnancyDiagnosisHandler = httpWithMiddleware< + PathParams<'propertyId' | 'animalId' | 'id'>, + never, + never +>({ + routePath: + '/api/properties/:propertyId/animals/:animalId/pregnancy-diagnoses/:id', + method: 'patch', + middlewares: [withDelay(), withAuth], + resolver: async () => + HttpResponse.json(undefined, { status: HttpStatusCode.noContent }), +}) diff --git a/src/app/modules/animals/mocks/handlers/create-animal-handler.ts b/src/app/modules/animals/mocks/handlers/create-animal-handler.ts new file mode 100644 index 00000000..401a4db5 --- /dev/null +++ b/src/app/modules/animals/mocks/handlers/create-animal-handler.ts @@ -0,0 +1,19 @@ +import { HttpResponse, PathParams } from 'msw' + +import { HttpStatusCode } from '@/core/data/protocols/http' +import { httpWithMiddleware } from '@/core/mocks/lib' +import { withAuth, withDelay } from '@/core/mocks/middleware' + +import type { AnimalDetailsModel } from '../../domain/models/animals-model' + +export const createAnimalHandler = httpWithMiddleware< + PathParams<'propertyId'>, + AnimalDetailsModel, + never +>({ + routePath: '/api/properties/:propertyId/animals', + method: 'post', + middlewares: [withDelay(), withAuth], + resolver: async () => + HttpResponse.json({}, { status: HttpStatusCode.created }), +}) diff --git a/src/app/modules/animals/mocks/handlers/delete-animal-handler.ts b/src/app/modules/animals/mocks/handlers/delete-animal-handler.ts new file mode 100644 index 00000000..d5c0ee27 --- /dev/null +++ b/src/app/modules/animals/mocks/handlers/delete-animal-handler.ts @@ -0,0 +1,18 @@ +import { HttpResponse, type PathParams } from 'msw' + +import { httpWithMiddleware } from '@/core/mocks/lib' +import { withDelay, withAuth } from '@/core/mocks/middleware' + +export const deleteAnimalHandler = httpWithMiddleware< + PathParams<'propertyId' | 'id'>, + never, + never +>({ + routePath: '/api/properties/:propertyId/animals/:id', + method: 'delete', + middlewares: [withDelay(), withAuth], + resolver: async () => + HttpResponse.json(undefined, { + status: 204, + }), +}) diff --git a/src/app/modules/animals/mocks/handlers/get-animal-handler.ts b/src/app/modules/animals/mocks/handlers/get-animal-handler.ts new file mode 100644 index 00000000..377bfe8f --- /dev/null +++ b/src/app/modules/animals/mocks/handlers/get-animal-handler.ts @@ -0,0 +1,48 @@ +import { faker } from '@faker-js/faker/locale/pt_BR' +import { HttpResponse, type PathParams } from 'msw' + +import { HttpStatusCode } from '@/core/data/protocols/http' +import { httpWithMiddleware } from '@/core/mocks/lib' +import { withDelay, withAuth } from '@/core/mocks/middleware' + +import animalsData from '@database/animalsData.json' + +import type { AnimalDetailsApiResponse } from '../../domain/models/animals-model' + +export const getAnimalHandler = httpWithMiddleware< + PathParams<'propertyId' | 'id'>, + never, + AnimalDetailsApiResponse +>({ + routePath: '/api/properties/:propertyId/animals/:id', + method: 'get', + middlewares: [withDelay(), withAuth], + resolver: async ({ params }) => { + if (!animalsData.length) { + return HttpResponse.json({} as AnimalDetailsApiResponse, { + status: 404, + }) + } + + const animalFound = animalsData.find( + (animal) => animal.id === Number(params.id) + ) + + if (!animalFound) { + return HttpResponse.json({} as AnimalDetailsApiResponse, { + status: 404, + }) + } + + return HttpResponse.json( + { + name: animalFound.name, + breed: { + label: animalFound.breed, + value: faker.number.int({ min: 1, max: 1000 }), + }, + }, + { status: HttpStatusCode.ok } + ) + }, +}) diff --git a/src/app/modules/animals/mocks/handlers/get-animals-handler.ts b/src/app/modules/animals/mocks/handlers/get-animals-handler.ts new file mode 100644 index 00000000..ad37345f --- /dev/null +++ b/src/app/modules/animals/mocks/handlers/get-animals-handler.ts @@ -0,0 +1,63 @@ +import { HttpResponse, type PathParams } from 'msw' + +import { HttpStatusCode } from '@/core/data/protocols/http' +import { httpWithMiddleware } from '@/core/mocks/lib' +import { withDelay, withAuth } from '@/core/mocks/middleware' +import { filterData, sortData, paginateData } from '@/core/mocks/utils' + +import animalsData from '@database/animalsData.json' + +import type { AnimalApiResponse } from '../../domain/models/animals-model' +import type { MockParams } from '@/core/mocks/types/mock-params-type' +import type { MockResponse } from '@/core/mocks/types/mock-response-type' + +export const getAnimalsHandler = httpWithMiddleware< + PathParams<'propertyId'>, + MockParams, + MockResponse +>({ + routePath: '/api/properties/:propertyId/animals/search', + method: 'post', + middlewares: [withDelay(), withAuth], + resolver: async ({ request }) => { + const { filters, page, rows, sort } = await request.json() + + if (!animalsData.length) { + return HttpResponse.json( + { + content: [], + numberOfElements: 0, + pageable: { + pageSize: 0, + }, + }, + { + status: 404, + } + ) + } + + let animals = animalsData as AnimalApiResponse[] + + if (filters) animals = filterData(filters, animals) + if (sort) animals = sortData(sort, animals) + const numberOfElements = animals.length + + if (page) + animals = paginateData( + { page, perPage: rows }, + animals + ) + + return HttpResponse.json( + { + content: animals, + numberOfElements, + pageable: { + pageSize: rows, + }, + }, + { status: HttpStatusCode.ok } + ) + }, +}) diff --git a/src/app/modules/animals/mocks/handlers/index.ts b/src/app/modules/animals/mocks/handlers/index.ts new file mode 100644 index 00000000..cc4124dd --- /dev/null +++ b/src/app/modules/animals/mocks/handlers/index.ts @@ -0,0 +1,5 @@ +export * from './create-animal-handler' +export * from './delete-animal-handler' +export * from './get-animal-handler' +export * from './get-animals-handler' +export * from './update-animal-handler' diff --git a/src/app/modules/animals/mocks/handlers/update-animal-handler.ts b/src/app/modules/animals/mocks/handlers/update-animal-handler.ts new file mode 100644 index 00000000..b8288ffc --- /dev/null +++ b/src/app/modules/animals/mocks/handlers/update-animal-handler.ts @@ -0,0 +1,17 @@ +import { HttpResponse, PathParams } from 'msw' + +import { HttpStatusCode } from '@/core/data/protocols/http' +import { httpWithMiddleware } from '@/core/mocks/lib' +import { withDelay, withAuth } from '@/core/mocks/middleware' + +export const updateAnimalHandler = httpWithMiddleware< + PathParams<'propertyId' | 'id'>, + never, + never +>({ + routePath: '/api/properties/:propertyId/animals/:id', + method: 'patch', + middlewares: [withDelay(), withAuth], + resolver: async () => + HttpResponse.json(undefined, { status: HttpStatusCode.noContent }), +}) diff --git a/src/app/modules/animals/presentation/components/animal-childbirth-data-table/animal-childbirth-data-table.hook.tsx b/src/app/modules/animals/presentation/components/animal-childbirth-data-table/animal-childbirth-data-table.hook.tsx new file mode 100644 index 00000000..7a081d01 --- /dev/null +++ b/src/app/modules/animals/presentation/components/animal-childbirth-data-table/animal-childbirth-data-table.hook.tsx @@ -0,0 +1,109 @@ +import { useMemo, useState } from 'react' + +import { MoreHorizontalIcon, PencilIcon, Trash2Icon } from 'lucide-react' + +import { DropdownMenu } from '@/core/presentation/components/ui' +import { useDebounce } from '@/core/presentation/hooks' + +import { useAnimalChildbirthContext } from '../../hooks/animal-childbirth-context.hook' +import { useAnimalChildbirthsQuery } from '../../hooks/queries/animal-childbirths-query.hook' + +import type { AnimalChildbirthModel } from '../../../domain/models/animal-childbirths-model' +import type { AnimalChildbirthSort } from '../../types/animal-childbirth-types' +import type { ColumnDef } from '@tanstack/react-table' + +export function useAnimalChildbirthDataTable() { + const { + propertyId, + animalId, + filters, + openEditAnimalChildbirthForm, + openDeleteAnimalChildbirthContainer, + } = useAnimalChildbirthContext() + + const [page, setPage] = useState(1) + const [sort, setSort] = useState() + + const debouncedFilters = useDebounce({ value: filters, delayInMs: 1000 }) + + const { isLoading, animalChildbirths } = useAnimalChildbirthsQuery({ + propertyId, + animalId, + filters: debouncedFilters, + page, + sort, + }) + + const columns = useMemo[]>( + () => [ + { + accessorKey: 'date', + header: 'Data do parto', + }, + { + accessorKey: 'gender', + header: 'Sexo', + }, + { + accessorKey: 'weight', + header: 'Peso', + cell: ({ row }) => { + const { original: animalChildbirth } = row + + return animalChildbirth.weight ? `${animalChildbirth.weight} kg` : '-' + }, + }, + { + accessorKey: 'condition', + header: 'Condição', + }, + { + accessorKey: 'breed', + header: 'Raça', + }, + { + id: 'row-actions', + header: '', + cell: ({ row }) => { + const { original: animalChildbirth } = row + + return ( + + + + + + openEditAnimalChildbirthForm(animalChildbirth)} + > + Editar + + + + openDeleteAnimalChildbirthContainer(animalChildbirth) + } + > + Excluir + + + + ) + }, + }, + ], + [openDeleteAnimalChildbirthContainer, openEditAnimalChildbirthForm] + ) + + return { + columns, + animalChildbirths, + isLoading, + page, + sort, + setSort, + setPage, + } +} diff --git a/src/app/modules/animals/presentation/components/animal-childbirth-data-table/animal-childbirth-data-table.tsx b/src/app/modules/animals/presentation/components/animal-childbirth-data-table/animal-childbirth-data-table.tsx new file mode 100644 index 00000000..5bd21de1 --- /dev/null +++ b/src/app/modules/animals/presentation/components/animal-childbirth-data-table/animal-childbirth-data-table.tsx @@ -0,0 +1,36 @@ +import { DataTable } from '@/core/presentation/components/ui' + +import { useAnimalChildbirthDataTable } from './animal-childbirth-data-table.hook' + +import type { AnimalChildbirthModel } from '../../../domain/models/animal-childbirths-model' + +export function AnimalChildbirthDataTable() { + const { + columns, + animalChildbirths, + isLoading, + page, + sort, + setSort, + setPage, + } = useAnimalChildbirthDataTable() + + return ( + + columns={columns} + data={animalChildbirths.resources} + totalPages={animalChildbirths.totalPages} + pagination={{ + currentPage: page, + onPageChange: setPage, + }} + sorting={{ + currentSorting: sort, + onSorting: setSort, + }} + loading={isLoading} + /> + ) +} + +AnimalChildbirthDataTable.displayName = 'AnimalChildbirthDataTable' diff --git a/src/app/modules/animals/presentation/components/animal-childbirth-data-table/index.ts b/src/app/modules/animals/presentation/components/animal-childbirth-data-table/index.ts new file mode 100644 index 00000000..889b5c83 --- /dev/null +++ b/src/app/modules/animals/presentation/components/animal-childbirth-data-table/index.ts @@ -0,0 +1 @@ +export * from './animal-childbirth-data-table' diff --git a/src/app/modules/animals/presentation/components/animal-childbirth-delete-dialog/animal-childbirth-delete-dialog.tsx b/src/app/modules/animals/presentation/components/animal-childbirth-delete-dialog/animal-childbirth-delete-dialog.tsx new file mode 100644 index 00000000..c1141fb5 --- /dev/null +++ b/src/app/modules/animals/presentation/components/animal-childbirth-delete-dialog/animal-childbirth-delete-dialog.tsx @@ -0,0 +1,87 @@ +import { useCallback } from 'react' + +import { useMutation, useQueryClient } from '@tanstack/react-query' +import toast from 'react-hot-toast' + +import { AlertDialog } from '@/core/presentation/components/ui' + +import { makeRemoteDeleteAnimalChildbirthUseCase } from '../../../main/factories/use-cases/animal-childbirths-use-cases' +import { useAnimalChildbirthContext } from '../../hooks/animal-childbirth-context.hook' + +export function AnimalChildbirthDeleteDialog() { + const deleteAnimalChildbirthUseCase = + makeRemoteDeleteAnimalChildbirthUseCase() + + const { + propertyId, + animalId, + selectedAnimalChildbirth, + isOpenDeleteAnimalChildbirthContainer, + closeDeleteAnimalChildbirthContainer, + } = useAnimalChildbirthContext() + + const queryClient = useQueryClient() + + const { mutateAsync: mutateHandleDeleteAnimalChildbirth } = useMutation({ + mutationFn: deleteAnimalChildbirthUseCase.execute, + }) + + const handleDeleteAnimalChildbirth = useCallback(async () => { + if (!selectedAnimalChildbirth?.id) { + toast.error('Erro ao remover parto do animal') + return + } + + try { + await mutateHandleDeleteAnimalChildbirth({ + propertyId, + animalId, + id: selectedAnimalChildbirth.id, + }) + + queryClient.invalidateQueries({ + queryKey: ['animal-childbirths'], + exact: false, + }) + + toast.success('Parto do animal removido com sucesso') + } catch { + toast.error('Erro ao remover parto do animal') + } finally { + closeDeleteAnimalChildbirthContainer() + } + }, [ + animalId, + closeDeleteAnimalChildbirthContainer, + mutateHandleDeleteAnimalChildbirth, + propertyId, + queryClient, + selectedAnimalChildbirth, + ]) + + return ( + + + + + {`Deseja remover o parto do animal ${selectedAnimalChildbirth?.breed}`} + + + Não será possível desfazer essa ação! + + + + Cancelar + + Remover + + + + + ) +} + +AnimalChildbirthDeleteDialog.displayName = 'AnimalChildbirthDeleteDialog' diff --git a/src/app/modules/animals/presentation/components/animal-childbirth-delete-dialog/index.ts b/src/app/modules/animals/presentation/components/animal-childbirth-delete-dialog/index.ts new file mode 100644 index 00000000..9c592ed7 --- /dev/null +++ b/src/app/modules/animals/presentation/components/animal-childbirth-delete-dialog/index.ts @@ -0,0 +1 @@ +export * from './animal-childbirth-delete-dialog' diff --git a/src/app/modules/animals/presentation/components/animal-data-table/animal-data-table.hook.tsx b/src/app/modules/animals/presentation/components/animal-data-table/animal-data-table.hook.tsx new file mode 100644 index 00000000..e7d153e0 --- /dev/null +++ b/src/app/modules/animals/presentation/components/animal-data-table/animal-data-table.hook.tsx @@ -0,0 +1,90 @@ +import { useMemo, useState } from 'react' + +import { MoreHorizontalIcon, PencilIcon, Trash2Icon } from 'lucide-react' + +import { DropdownMenu } from '@/core/presentation/components/ui' +import { useDebounce } from '@/core/presentation/hooks' + +import { useAnimalContext } from '../../hooks/animal-context.hook' +import { useAnimalsQuery } from '../../hooks/queries/animals-query.hook' + +import type { AnimalModel } from '../../../domain/models/animals-model' +import type { AnimalSort } from '../../types/animal-types' +import type { ColumnDef } from '@tanstack/react-table' + +export function useAnimalDataTable() { + const { propertyId, filters, openEditAnimalForm, openDeleteAnimalContainer } = + useAnimalContext() + + const [page, setPage] = useState(1) + const [sort, setSort] = useState() + + const debouncedFilters = useDebounce({ value: filters }) + + const { isLoading, animals } = useAnimalsQuery({ + propertyId, + filters: debouncedFilters, + page, + sort, + }) + + const columns = useMemo[]>( + () => [ + { + accessorKey: 'name', + header: 'Identificação do Animal', + }, + { + accessorKey: 'breed', + header: 'Tipo de Raça', + }, + { + id: 'row-actions', + header: '', + cell: ({ row }) => { + const { original: animal } = row + + return ( + + + + + + { + event.stopPropagation() + openEditAnimalForm(animal) + }} + > + Editar + + + { + event.stopPropagation() + openDeleteAnimalContainer(animal) + }} + > + Excluir + + + + ) + }, + }, + ], + [openDeleteAnimalContainer, openEditAnimalForm] + ) + + return { + columns, + animals, + isLoading, + page, + sort, + setSort, + setPage, + } +} diff --git a/src/app/modules/animals/presentation/components/animal-data-table/animal-data-table.tsx b/src/app/modules/animals/presentation/components/animal-data-table/animal-data-table.tsx new file mode 100644 index 00000000..10c45660 --- /dev/null +++ b/src/app/modules/animals/presentation/components/animal-data-table/animal-data-table.tsx @@ -0,0 +1,36 @@ +import { DataTable } from '@/core/presentation/components/ui' + +import { useAnimalDataTable } from './animal-data-table.hook' + +import type { AnimalModel } from '../../../domain/models/animals-model' + +type AnimalDataTableProps = { + onClickRow: (animalId: number) => void +} + +export function AnimalDataTable({ + onClickRow, +}: Readonly) { + const { columns, animals, isLoading, page, sort, setSort, setPage } = + useAnimalDataTable() + + return ( + + columns={columns} + data={animals.resources} + totalPages={animals.totalPages} + onClickRow={(animal) => onClickRow(animal.id)} + pagination={{ + currentPage: page, + onPageChange: setPage, + }} + sorting={{ + currentSorting: sort, + onSorting: setSort, + }} + loading={isLoading} + /> + ) +} + +AnimalDataTable.displayName = 'AnimalDataTable' diff --git a/src/app/modules/animals/presentation/components/animal-data-table/index.ts b/src/app/modules/animals/presentation/components/animal-data-table/index.ts new file mode 100644 index 00000000..2eba8c37 --- /dev/null +++ b/src/app/modules/animals/presentation/components/animal-data-table/index.ts @@ -0,0 +1 @@ +export * from './animal-data-table' diff --git a/src/app/modules/animals/presentation/components/animal-death-data-table/animal-death-data-table.hook.tsx b/src/app/modules/animals/presentation/components/animal-death-data-table/animal-death-data-table.hook.tsx new file mode 100644 index 00000000..fd46aaca --- /dev/null +++ b/src/app/modules/animals/presentation/components/animal-death-data-table/animal-death-data-table.hook.tsx @@ -0,0 +1,99 @@ +import { useMemo, useState } from 'react' + +import { format } from 'date-fns' +import { MoreHorizontalIcon, PencilIcon, Trash2Icon } from 'lucide-react' + +import { DropdownMenu } from '@/core/presentation/components/ui' +import { useDebounce } from '@/core/presentation/hooks' + +import { useAnimalDeathContext } from '../../hooks/animal-death-context.hook' +import { useAnimalDeathsQuery } from '../../hooks/queries/animal-deaths-query.hook' + +import type { AnimalDeathModel } from '../../../domain/models/animal-deaths-model' +import type { AnimalDeathSort } from '../../types/animal-death-types' +import type { ColumnDef } from '@tanstack/react-table' + +export function useAnimalDeathDataTable() { + const { + propertyId, + animalId, + filters, + openEditAnimalDeathForm, + openDeleteAnimalDeathContainer, + } = useAnimalDeathContext() + + const [page, setPage] = useState(1) + const [sort, setSort] = useState() + + const debouncedFilters = useDebounce({ value: filters, delayInMs: 1000 }) + + const { isLoading, animalDeaths } = useAnimalDeathsQuery({ + propertyId, + animalId, + filters: debouncedFilters, + page, + sort, + }) + + const columns = useMemo[]>( + () => [ + { + accessorKey: 'date', + header: 'Data do Óbito', + cell: ({ row }) => { + const { original: animalDeath } = row + + return animalDeath.date + ? format(new Date(animalDeath.date), 'dd/MM/yyyy') + : '-' + }, + }, + { + accessorKey: 'reason', + header: 'Causa do Óbito', + }, + + { + id: 'row-actions', + header: '', + cell: ({ row }) => { + const { original: animalDeath } = row + + return ( + + + + + + openEditAnimalDeathForm(animalDeath)} + > + Editar + + + openDeleteAnimalDeathContainer(animalDeath)} + > + Excluir + + + + ) + }, + }, + ], + [openDeleteAnimalDeathContainer, openEditAnimalDeathForm] + ) + + return { + columns, + animalDeaths, + isLoading, + page, + sort, + setSort, + setPage, + } +} diff --git a/src/app/modules/animals/presentation/components/animal-death-data-table/animal-death-data-table.tsx b/src/app/modules/animals/presentation/components/animal-death-data-table/animal-death-data-table.tsx new file mode 100644 index 00000000..615495ca --- /dev/null +++ b/src/app/modules/animals/presentation/components/animal-death-data-table/animal-death-data-table.tsx @@ -0,0 +1,29 @@ +import { DataTable } from '@/core/presentation/components/ui' + +import { useAnimalDeathDataTable } from './animal-death-data-table.hook' + +import type { AnimalDeathModel } from '../../../domain/models/animal-deaths-model' + +export function AnimalDeathDataTable() { + const { columns, animalDeaths, isLoading, page, sort, setSort, setPage } = + useAnimalDeathDataTable() + + return ( + + columns={columns} + data={animalDeaths.resources} + totalPages={animalDeaths.totalPages} + pagination={{ + currentPage: page, + onPageChange: setPage, + }} + sorting={{ + currentSorting: sort, + onSorting: setSort, + }} + loading={isLoading} + /> + ) +} + +AnimalDeathDataTable.displayName = 'AnimalDeathDataTable' diff --git a/src/app/modules/animals/presentation/components/animal-death-data-table/index.ts b/src/app/modules/animals/presentation/components/animal-death-data-table/index.ts new file mode 100644 index 00000000..dd2a5649 --- /dev/null +++ b/src/app/modules/animals/presentation/components/animal-death-data-table/index.ts @@ -0,0 +1 @@ +export * from './animal-death-data-table' diff --git a/src/app/modules/animals/presentation/components/animal-death-delete-dialog/animal-death-delete-dialog.tsx b/src/app/modules/animals/presentation/components/animal-death-delete-dialog/animal-death-delete-dialog.tsx new file mode 100644 index 00000000..06cadd83 --- /dev/null +++ b/src/app/modules/animals/presentation/components/animal-death-delete-dialog/animal-death-delete-dialog.tsx @@ -0,0 +1,92 @@ +import { useCallback } from 'react' + +import { useMutation, useQueryClient } from '@tanstack/react-query' +import { format } from 'date-fns' +import toast from 'react-hot-toast' + +import { AlertDialog } from '@/core/presentation/components/ui' + +import { makeRemoteDeleteAnimalDeathUseCase } from '../../../main/factories/use-cases/animal-deaths-use-cases' +import { useAnimalDeathContext } from '../../hooks/animal-death-context.hook' + +export function AnimalDeathDeleteDialog() { + const deleteAnimalDeathUseCase = makeRemoteDeleteAnimalDeathUseCase() + + const { + propertyId, + animalId, + selectedAnimalDeath, + isOpenDeleteAnimalDeathContainer, + closeDeleteAnimalDeathContainer, + } = useAnimalDeathContext() + + const queryClient = useQueryClient() + + const { mutateAsync: mutateHandleDeleteAnimalDeath } = useMutation({ + mutationFn: deleteAnimalDeathUseCase.execute, + }) + + const handleDeleteAnimalDeath = useCallback(async () => { + if (!selectedAnimalDeath?.id) { + toast.error('Erro ao remover óbito do animal') + return + } + + try { + await mutateHandleDeleteAnimalDeath({ + propertyId, + animalId, + id: selectedAnimalDeath.id, + }) + + queryClient.invalidateQueries({ + queryKey: ['animal-deaths'], + exact: false, + }) + + toast.success('Óbito do animal removido com sucesso') + } catch { + toast.error('Erro ao remover óbito do animal') + } finally { + closeDeleteAnimalDeathContainer() + } + }, [ + animalId, + closeDeleteAnimalDeathContainer, + mutateHandleDeleteAnimalDeath, + propertyId, + queryClient, + selectedAnimalDeath, + ]) + + return ( + + + + + {`Deseja remover o óbito do animal do dia + ${ + selectedAnimalDeath?.date + ? format(selectedAnimalDeath.date, 'dd/MM/yyyy') + : '-' + }`} + + + Não será possível desfazer essa ação! + + + + Cancelar + + Remover + + + + + ) +} + +AnimalDeathDeleteDialog.displayName = 'AnimalDeathDeleteDialog' diff --git a/src/app/modules/animals/presentation/components/animal-death-delete-dialog/index.ts b/src/app/modules/animals/presentation/components/animal-death-delete-dialog/index.ts new file mode 100644 index 00000000..3d8f7f3d --- /dev/null +++ b/src/app/modules/animals/presentation/components/animal-death-delete-dialog/index.ts @@ -0,0 +1 @@ +export * from './animal-death-delete-dialog' diff --git a/src/app/modules/animals/presentation/components/animal-delete-dialog/animal-delete-dialog.tsx b/src/app/modules/animals/presentation/components/animal-delete-dialog/animal-delete-dialog.tsx new file mode 100644 index 00000000..3cd27b9b --- /dev/null +++ b/src/app/modules/animals/presentation/components/animal-delete-dialog/animal-delete-dialog.tsx @@ -0,0 +1,81 @@ +import { useCallback } from 'react' + +import { useMutation, useQueryClient } from '@tanstack/react-query' +import toast from 'react-hot-toast' + +import { AlertDialog } from '@/core/presentation/components/ui' + +import { makeRemoteDeleteAnimalUseCase } from '../../../main/factories/use-cases' +import { useAnimalContext } from '../../hooks/animal-context.hook' + +export function AnimalDeleteDialog() { + const deleteAnimalUseCase = makeRemoteDeleteAnimalUseCase() + + const { + propertyId, + selectedAnimal, + isOpenDeleteAnimalContainer, + closeDeleteAnimalContainer, + } = useAnimalContext() + + const queryClient = useQueryClient() + + const { mutateAsync: mutateHandleDeleteAnimal } = useMutation({ + mutationFn: deleteAnimalUseCase.execute, + }) + + const handleDeleteAnimal = useCallback(async () => { + if (!selectedAnimal) { + toast.error('Erro ao remover animal') + return + } + + try { + await mutateHandleDeleteAnimal({ + propertyId, + animalId: selectedAnimal.id, + }) + + queryClient.invalidateQueries({ + queryKey: ['animals'], + exact: false, + }) + + toast.success('Animal removido com sucesso') + } catch { + toast.error('Erro ao remover animal') + } finally { + closeDeleteAnimalContainer() + } + }, [ + closeDeleteAnimalContainer, + mutateHandleDeleteAnimal, + propertyId, + queryClient, + selectedAnimal, + ]) + + return ( + + + + {`Deseja remover o animal ${selectedAnimal?.name}`} + + Não será possível desfazer essa ação! + + + + Cancelar + + Remover + + + + + ) +} + +AnimalDeleteDialog.displayName = 'AnimalDeleteDialog' diff --git a/src/app/modules/animals/presentation/components/animal-delete-dialog/index.ts b/src/app/modules/animals/presentation/components/animal-delete-dialog/index.ts new file mode 100644 index 00000000..54c444f2 --- /dev/null +++ b/src/app/modules/animals/presentation/components/animal-delete-dialog/index.ts @@ -0,0 +1 @@ +export * from './animal-delete-dialog' diff --git a/src/app/modules/animals/presentation/components/animal-disease-data-table/animal-disease-data-table.hook.tsx b/src/app/modules/animals/presentation/components/animal-disease-data-table/animal-disease-data-table.hook.tsx new file mode 100644 index 00000000..4892e416 --- /dev/null +++ b/src/app/modules/animals/presentation/components/animal-disease-data-table/animal-disease-data-table.hook.tsx @@ -0,0 +1,101 @@ +import { useMemo, useState } from 'react' + +import { format } from 'date-fns' +import { MoreHorizontalIcon, PencilIcon, Trash2Icon } from 'lucide-react' + +import { DropdownMenu } from '@/core/presentation/components/ui' +import { useDebounce } from '@/core/presentation/hooks' + +import { useAnimalDiseaseContext } from '../../hooks/animal-disease-context.hook' +import { useAnimalDiseasesQuery } from '../../hooks/queries/animal-diseases-query.hook' + +import type { AnimalDiseaseModel } from '../../../domain/models/animal-diseases-model' +import type { AnimalDiseaseSort } from '../../types/animal-disease-types' +import type { ColumnDef } from '@tanstack/react-table' + +export function useAnimalDiseaseDataTable() { + const { + propertyId, + animalId, + filters, + openEditAnimalDiseaseForm, + openDeleteAnimalDiseaseContainer, + } = useAnimalDiseaseContext() + + const [page, setPage] = useState(1) + const [sort, setSort] = useState() + + const debouncedFilters = useDebounce({ value: filters, delayInMs: 1000 }) + + const { isLoading, animalDiseases } = useAnimalDiseasesQuery({ + propertyId, + animalId, + filters: debouncedFilters, + page, + sort, + }) + + const columns = useMemo[]>( + () => [ + { + accessorKey: 'diagnosticDate', + header: 'Data do diagnóstico', + cell: ({ row }) => { + const { original: animalDisease } = row + + return animalDisease.diagnosticDate + ? format(new Date(animalDisease.diagnosticDate), 'dd/MM/yyyy') + : '-' + }, + }, + { + accessorKey: 'diagnostic', + header: 'Diagnóstico', + }, + + { + id: 'row-actions', + header: '', + cell: ({ row }) => { + const { original: animalDisease } = row + + return ( + + + + + + openEditAnimalDiseaseForm(animalDisease)} + > + Editar + + + + openDeleteAnimalDiseaseContainer(animalDisease) + } + > + Excluir + + + + ) + }, + }, + ], + [openDeleteAnimalDiseaseContainer, openEditAnimalDiseaseForm] + ) + + return { + columns, + animalDiseases, + isLoading, + page, + sort, + setSort, + setPage, + } +} diff --git a/src/app/modules/animals/presentation/components/animal-disease-data-table/animal-disease-data-table.tsx b/src/app/modules/animals/presentation/components/animal-disease-data-table/animal-disease-data-table.tsx new file mode 100644 index 00000000..f3fae343 --- /dev/null +++ b/src/app/modules/animals/presentation/components/animal-disease-data-table/animal-disease-data-table.tsx @@ -0,0 +1,29 @@ +import { DataTable } from '@/core/presentation/components/ui' + +import { useAnimalDiseaseDataTable } from './animal-disease-data-table.hook' + +import type { AnimalDiseaseModel } from '../../../domain/models/animal-diseases-model' + +export function AnimalDiseaseDataTable() { + const { columns, animalDiseases, isLoading, page, sort, setSort, setPage } = + useAnimalDiseaseDataTable() + + return ( + + columns={columns} + data={animalDiseases.resources} + totalPages={animalDiseases.totalPages} + pagination={{ + currentPage: page, + onPageChange: setPage, + }} + sorting={{ + currentSorting: sort, + onSorting: setSort, + }} + loading={isLoading} + /> + ) +} + +AnimalDiseaseDataTable.displayName = 'AnimalDiseaseDataTable' diff --git a/src/app/modules/animals/presentation/components/animal-disease-data-table/index.ts b/src/app/modules/animals/presentation/components/animal-disease-data-table/index.ts new file mode 100644 index 00000000..a06cce57 --- /dev/null +++ b/src/app/modules/animals/presentation/components/animal-disease-data-table/index.ts @@ -0,0 +1 @@ +export * from './animal-disease-data-table' diff --git a/src/app/modules/animals/presentation/components/animal-disease-delete-dialog/animal-disease-delete-dialog.tsx b/src/app/modules/animals/presentation/components/animal-disease-delete-dialog/animal-disease-delete-dialog.tsx new file mode 100644 index 00000000..f29b7153 --- /dev/null +++ b/src/app/modules/animals/presentation/components/animal-disease-delete-dialog/animal-disease-delete-dialog.tsx @@ -0,0 +1,92 @@ +import { useCallback } from 'react' + +import { useMutation, useQueryClient } from '@tanstack/react-query' +import { format } from 'date-fns' +import toast from 'react-hot-toast' + +import { AlertDialog } from '@/core/presentation/components/ui' + +import { makeRemoteDeleteAnimalDiseaseUseCase } from '../../../main/factories/use-cases/animal-diseases-use-cases' +import { useAnimalDiseaseContext } from '../../hooks/animal-disease-context.hook' + +export function AnimalDiseaseDeleteDialog() { + const deleteAnimalDiseaseUseCase = makeRemoteDeleteAnimalDiseaseUseCase() + + const { + propertyId, + animalId, + selectedAnimalDisease, + isOpenDeleteAnimalDiseaseContainer, + closeDeleteAnimalDiseaseContainer, + } = useAnimalDiseaseContext() + + const queryClient = useQueryClient() + + const { mutateAsync: mutateHandleDeleteAnimalDisease } = useMutation({ + mutationFn: deleteAnimalDiseaseUseCase.execute, + }) + + const handleDeleteAnimalDisease = useCallback(async () => { + if (!selectedAnimalDisease?.id) { + toast.error('Erro ao remover doença do animal') + return + } + + try { + await mutateHandleDeleteAnimalDisease({ + propertyId, + animalId, + id: selectedAnimalDisease.id, + }) + + queryClient.invalidateQueries({ + queryKey: ['animal-diseases'], + exact: false, + }) + + toast.success('Doença do animal removido com sucesso') + } catch { + toast.error('Erro ao remover doença do animal') + } finally { + closeDeleteAnimalDiseaseContainer() + } + }, [ + animalId, + closeDeleteAnimalDiseaseContainer, + mutateHandleDeleteAnimalDisease, + propertyId, + queryClient, + selectedAnimalDisease, + ]) + + return ( + + + + + {`Deseja remover a doença do animal do dia + ${ + selectedAnimalDisease?.diagnosticDate + ? format(selectedAnimalDisease.diagnosticDate, 'dd/MM/yyyy') + : '-' + }`} + + + Não será possível desfazer essa ação! + + + + Cancelar + + Remover + + + + + ) +} + +AnimalDiseaseDeleteDialog.displayName = 'AnimalDiseaseDeleteDialog' diff --git a/src/app/modules/animals/presentation/components/animal-disease-delete-dialog/index.ts b/src/app/modules/animals/presentation/components/animal-disease-delete-dialog/index.ts new file mode 100644 index 00000000..51197d28 --- /dev/null +++ b/src/app/modules/animals/presentation/components/animal-disease-delete-dialog/index.ts @@ -0,0 +1 @@ +export * from './animal-disease-delete-dialog' diff --git a/src/app/modules/animals/presentation/components/animal-heifer-calf-stage-data-table/animal-heifer-calf-stage-data-table.hook.tsx b/src/app/modules/animals/presentation/components/animal-heifer-calf-stage-data-table/animal-heifer-calf-stage-data-table.hook.tsx new file mode 100644 index 00000000..abd8c598 --- /dev/null +++ b/src/app/modules/animals/presentation/components/animal-heifer-calf-stage-data-table/animal-heifer-calf-stage-data-table.hook.tsx @@ -0,0 +1,116 @@ +import { useMemo, useState } from 'react' + +import { format } from 'date-fns' +import { MoreHorizontalIcon, PencilIcon, Trash2Icon } from 'lucide-react' + +import { DropdownMenu } from '@/core/presentation/components/ui' +import { useDebounce } from '@/core/presentation/hooks' + +import { useAnimalHeiferCalfStageContext } from '../../hooks/animal-heifer-calf-stage-context.hook' +import { useAnimalHeiferCalfStagesQuery } from '../../hooks/queries/animal-heifer-calf-stages-query.hook' + +import type { AnimalHeiferCalfStageModel } from '../../../domain/models/animal-heifer-calf-stages-model' +import type { AnimalHeiferCalfStageSort } from '../../types/animal-heifer-calf-stage-types' +import type { ColumnDef } from '@tanstack/react-table' + +export function useAnimalHeiferCalfStageDataTable() { + const { + propertyId, + animalId, + filters, + openEditAnimalHeiferCalfStageForm, + openDeleteAnimalHeiferCalfStageContainer, + } = useAnimalHeiferCalfStageContext() + + const [page, setPage] = useState(1) + const [sort, setSort] = useState() + + const debouncedFilters = useDebounce({ value: filters, delayInMs: 1000 }) + + const { isLoading, animalHeiferCalfStages } = useAnimalHeiferCalfStagesQuery({ + propertyId, + animalId, + filters: debouncedFilters, + page, + sort, + }) + + const columns = useMemo[]>( + () => [ + { + accessorKey: 'weighingDate', + header: 'Data da pesagem', + cell: ({ row }) => { + const { original: animalHeiferCalf } = row + + return format(animalHeiferCalf.weighingDate, 'dd/MM/yyyy') + }, + }, + { + accessorKey: 'weight', + header: 'Peso do Animal', + cell: ({ row }) => { + const { original: animalHeiferCalf } = row + + return animalHeiferCalf.weight ? `${animalHeiferCalf.weight} kg` : '-' + }, + }, + { + accessorKey: 'ecc', + header: 'ECC', + }, + { + accessorKey: 'age', + header: 'Idade', + }, + { + id: 'row-actions', + header: '', + cell: ({ row }) => { + const { original: animalHeiferCalf } = row + + return ( + + + + + + + openEditAnimalHeiferCalfStageForm(animalHeiferCalf) + } + > + Editar + + + + openDeleteAnimalHeiferCalfStageContainer(animalHeiferCalf) + } + > + Excluir + + + + ) + }, + }, + ], + [ + openDeleteAnimalHeiferCalfStageContainer, + openEditAnimalHeiferCalfStageForm, + ] + ) + + return { + columns, + animalHeiferCalfStages, + isLoading, + page, + sort, + setSort, + setPage, + } +} diff --git a/src/app/modules/animals/presentation/components/animal-heifer-calf-stage-data-table/animal-heifer-calf-stage-data-table.tsx b/src/app/modules/animals/presentation/components/animal-heifer-calf-stage-data-table/animal-heifer-calf-stage-data-table.tsx new file mode 100644 index 00000000..37e09719 --- /dev/null +++ b/src/app/modules/animals/presentation/components/animal-heifer-calf-stage-data-table/animal-heifer-calf-stage-data-table.tsx @@ -0,0 +1,36 @@ +import { DataTable } from '@/core/presentation/components/ui' + +import { useAnimalHeiferCalfStageDataTable } from './animal-heifer-calf-stage-data-table.hook' + +import type { AnimalHeiferCalfStageModel } from '../../../domain/models/animal-heifer-calf-stages-model' + +export function AnimalHeiferCalfStageDataTable() { + const { + columns, + animalHeiferCalfStages, + isLoading, + page, + sort, + setSort, + setPage, + } = useAnimalHeiferCalfStageDataTable() + + return ( + + columns={columns} + data={animalHeiferCalfStages.resources} + totalPages={animalHeiferCalfStages.totalPages} + pagination={{ + currentPage: page, + onPageChange: setPage, + }} + sorting={{ + currentSorting: sort, + onSorting: setSort, + }} + loading={isLoading} + /> + ) +} + +AnimalHeiferCalfStageDataTable.displayName = 'AnimalHeiferCalfStageDataTable' diff --git a/src/app/modules/animals/presentation/components/animal-heifer-calf-stage-data-table/index.ts b/src/app/modules/animals/presentation/components/animal-heifer-calf-stage-data-table/index.ts new file mode 100644 index 00000000..98a2a760 --- /dev/null +++ b/src/app/modules/animals/presentation/components/animal-heifer-calf-stage-data-table/index.ts @@ -0,0 +1 @@ +export * from './animal-heifer-calf-stage-data-table' diff --git a/src/app/modules/animals/presentation/components/animal-heifer-calf-stage-delete-dialog/animal-heifer-calf-stage-delete-dialog.tsx b/src/app/modules/animals/presentation/components/animal-heifer-calf-stage-delete-dialog/animal-heifer-calf-stage-delete-dialog.tsx new file mode 100644 index 00000000..4c71190a --- /dev/null +++ b/src/app/modules/animals/presentation/components/animal-heifer-calf-stage-delete-dialog/animal-heifer-calf-stage-delete-dialog.tsx @@ -0,0 +1,97 @@ +import { useCallback } from 'react' + +import { useMutation, useQueryClient } from '@tanstack/react-query' +import { format } from 'date-fns' +import toast from 'react-hot-toast' + +import { AlertDialog } from '@/core/presentation/components/ui' + +import { makeRemoteDeleteAnimalHeiferCalfStageUseCase } from '../../../main/factories/use-cases/animal-heifer-calf-stages-use-cases' +import { useAnimalHeiferCalfStageContext } from '../../hooks/animal-heifer-calf-stage-context.hook' + +export function AnimalHeiferCalfStageDeleteDialog() { + const deleteAnimalHeiferCalfStageUseCase = + makeRemoteDeleteAnimalHeiferCalfStageUseCase() + + const { + propertyId, + animalId, + selectedAnimalHeiferCalfStage, + isOpenDeleteAnimalHeiferCalfStageContainer, + closeDeleteAnimalHeiferCalfStageContainer, + } = useAnimalHeiferCalfStageContext() + + const queryClient = useQueryClient() + + const { mutateAsync: mutateHandleDeleteAnimalHeiferCalfStage } = useMutation({ + mutationFn: deleteAnimalHeiferCalfStageUseCase.execute, + }) + + const handleDeleteAnimalHeiferCalfStage = useCallback(async () => { + if (!selectedAnimalHeiferCalfStage?.id) { + toast.error('Erro ao remover a fase bezerra novilha') + return + } + + try { + await mutateHandleDeleteAnimalHeiferCalfStage({ + propertyId, + animalId, + id: selectedAnimalHeiferCalfStage.id, + }) + + queryClient.invalidateQueries({ + queryKey: ['animal-heifer-calf-stages'], + exact: false, + }) + + toast.success('Fase bezerra novilha removido com sucesso') + } catch { + toast.error('Erro ao remover fase bezerra novilha') + } finally { + closeDeleteAnimalHeiferCalfStageContainer() + } + }, [ + animalId, + closeDeleteAnimalHeiferCalfStageContainer, + mutateHandleDeleteAnimalHeiferCalfStage, + propertyId, + queryClient, + selectedAnimalHeiferCalfStage, + ]) + + return ( + + + + + {`Deseja remover a fase bezerra novilha do dia + ${ + selectedAnimalHeiferCalfStage?.weighingDate + ? format( + selectedAnimalHeiferCalfStage?.weighingDate, + 'dd/MM/yyyy' + ) + : '-' + }`} + + + Não será possível desfazer essa ação! + + + + Cancelar + + Remover + + + + + ) +} + +AnimalHeiferCalfStageDeleteDialog.displayName = + 'AnimalHeiferCalfStageDeleteDialog' diff --git a/src/app/modules/animals/presentation/components/animal-heifer-calf-stage-delete-dialog/index.ts b/src/app/modules/animals/presentation/components/animal-heifer-calf-stage-delete-dialog/index.ts new file mode 100644 index 00000000..2006638d --- /dev/null +++ b/src/app/modules/animals/presentation/components/animal-heifer-calf-stage-delete-dialog/index.ts @@ -0,0 +1 @@ +export * from './animal-heifer-calf-stage-delete-dialog' diff --git a/src/app/modules/animals/presentation/components/animal-pregnancy-diagnosis-data-table/animal-pregnancy-diagnosis-data-table.hook.tsx b/src/app/modules/animals/presentation/components/animal-pregnancy-diagnosis-data-table/animal-pregnancy-diagnosis-data-table.hook.tsx new file mode 100644 index 00000000..8298e908 --- /dev/null +++ b/src/app/modules/animals/presentation/components/animal-pregnancy-diagnosis-data-table/animal-pregnancy-diagnosis-data-table.hook.tsx @@ -0,0 +1,121 @@ +import { useMemo, useState } from 'react' + +import { format } from 'date-fns' +import { MoreHorizontalIcon, PencilIcon, Trash2Icon } from 'lucide-react' + +import { DropdownMenu } from '@/core/presentation/components/ui' +import { useDebounce } from '@/core/presentation/hooks' + +import { useAnimalPregnancyDiagnosisContext } from '../../hooks/animal-pregnancy-diagnosis-context.hook' +import { useAnimalPregnancyDiagnosesQuery } from '../../hooks/queries/animal-pregnancy-diagnoses-query.hook' + +import type { AnimalPregnancyDiagnosisModel } from '../../../domain/models/animal-pregnancy-diagnoses-model' +import type { AnimalPregnancyDiagnosisSort } from '../../types/animal-pregnancy-diagnosis-types' +import type { ColumnDef } from '@tanstack/react-table' + +export function useAnimalPregnancyDiagnosisDataTable() { + const { + propertyId, + animalId, + filters, + openEditAnimalPregnancyDiagnosisForm, + openDeleteAnimalPregnancyDiagnosisContainer, + } = useAnimalPregnancyDiagnosisContext() + + const [page, setPage] = useState(1) + const [sort, setSort] = useState() + + const debouncedFilters = useDebounce({ value: filters, delayInMs: 1000 }) + + const { isLoading, animalPregnancyDiagnoses } = + useAnimalPregnancyDiagnosesQuery({ + propertyId, + animalId, + filters: debouncedFilters, + page, + sort, + }) + + const columns = useMemo[]>( + () => [ + { + accessorKey: 'date', + header: 'Data do diagnóstico', + cell: ({ row }) => { + const { original: animalPregnancyDiagnosis } = row + + return animalPregnancyDiagnosis.date + ? format(new Date(animalPregnancyDiagnosis.date), 'dd/MM/yyyy') + : '-' + }, + }, + { + accessorKey: 'lastInseminationDate', + header: 'Última data de inseminação', + cell: ({ row }) => { + const { original: animalPregnancyDiagnosis } = row + + return animalPregnancyDiagnosis.lastInseminationDate + ? format( + new Date(animalPregnancyDiagnosis.lastInseminationDate), + 'dd/MM/yyyy' + ) + : '-' + }, + }, + + { + id: 'row-actions', + header: '', + cell: ({ row }) => { + const { original: animalPregnancyDiagnosis } = row + + return ( + + + + + + + openEditAnimalPregnancyDiagnosisForm( + animalPregnancyDiagnosis + ) + } + > + Editar + + + + openDeleteAnimalPregnancyDiagnosisContainer( + animalPregnancyDiagnosis + ) + } + > + Excluir + + + + ) + }, + }, + ], + [ + openDeleteAnimalPregnancyDiagnosisContainer, + openEditAnimalPregnancyDiagnosisForm, + ] + ) + + return { + columns, + animalPregnancyDiagnoses, + isLoading, + page, + sort, + setSort, + setPage, + } +} diff --git a/src/app/modules/animals/presentation/components/animal-pregnancy-diagnosis-data-table/animal-pregnancy-diagnosis-data-table.tsx b/src/app/modules/animals/presentation/components/animal-pregnancy-diagnosis-data-table/animal-pregnancy-diagnosis-data-table.tsx new file mode 100644 index 00000000..6de74426 --- /dev/null +++ b/src/app/modules/animals/presentation/components/animal-pregnancy-diagnosis-data-table/animal-pregnancy-diagnosis-data-table.tsx @@ -0,0 +1,37 @@ +import { DataTable } from '@/core/presentation/components/ui' + +import { useAnimalPregnancyDiagnosisDataTable } from './animal-pregnancy-diagnosis-data-table.hook' + +import type { AnimalPregnancyDiagnosisModel } from '../../../domain/models/animal-pregnancy-diagnoses-model' + +export function AnimalPregnancyDiagnosisDataTable() { + const { + columns, + animalPregnancyDiagnoses, + isLoading, + page, + sort, + setSort, + setPage, + } = useAnimalPregnancyDiagnosisDataTable() + + return ( + + columns={columns} + data={animalPregnancyDiagnoses.resources} + totalPages={animalPregnancyDiagnoses.totalPages} + pagination={{ + currentPage: page, + onPageChange: setPage, + }} + sorting={{ + currentSorting: sort, + onSorting: setSort, + }} + loading={isLoading} + /> + ) +} + +AnimalPregnancyDiagnosisDataTable.displayName = + 'AnimalPregnancyDiagnosisDataTable' diff --git a/src/app/modules/animals/presentation/components/animal-pregnancy-diagnosis-data-table/index.ts b/src/app/modules/animals/presentation/components/animal-pregnancy-diagnosis-data-table/index.ts new file mode 100644 index 00000000..401959b6 --- /dev/null +++ b/src/app/modules/animals/presentation/components/animal-pregnancy-diagnosis-data-table/index.ts @@ -0,0 +1 @@ +export * from './animal-pregnancy-diagnosis-data-table' diff --git a/src/app/modules/animals/presentation/components/animal-pregnancy-diagnosis-delete-dialog/animal-pregnancy-diagnosis-delete-dialog.tsx b/src/app/modules/animals/presentation/components/animal-pregnancy-diagnosis-delete-dialog/animal-pregnancy-diagnosis-delete-dialog.tsx new file mode 100644 index 00000000..15188e85 --- /dev/null +++ b/src/app/modules/animals/presentation/components/animal-pregnancy-diagnosis-delete-dialog/animal-pregnancy-diagnosis-delete-dialog.tsx @@ -0,0 +1,98 @@ +import { useCallback } from 'react' + +import { useMutation, useQueryClient } from '@tanstack/react-query' +import { format } from 'date-fns' +import toast from 'react-hot-toast' + +import { AlertDialog } from '@/core/presentation/components/ui' + +import { makeRemoteDeleteAnimalPregnancyDiagnosisUseCase } from '../../../main/factories/use-cases/animal-pregnancy-diagnoses-use-cases' +import { useAnimalPregnancyDiagnosisContext } from '../../hooks/animal-pregnancy-diagnosis-context.hook' + +export function AnimalPregnancyDiagnosisDeleteDialog() { + const deleteAnimalPregnancyDiagnosisUseCase = + makeRemoteDeleteAnimalPregnancyDiagnosisUseCase() + + const { + propertyId, + animalId, + selectedAnimalPregnancyDiagnosis, + isOpenDeleteAnimalPregnancyDiagnosisContainer, + closeDeleteAnimalPregnancyDiagnosisContainer, + } = useAnimalPregnancyDiagnosisContext() + + const queryClient = useQueryClient() + + const { mutateAsync: mutateHandleDeleteAnimalPregnancyDiagnosis, error } = + useMutation({ + mutationFn: deleteAnimalPregnancyDiagnosisUseCase.execute, + }) + + const handleDeleteAnimalPregnancyDiagnosis = useCallback(async () => { + if (!selectedAnimalPregnancyDiagnosis?.id) { + toast.error( + error?.message ?? 'Selecione um diagnóstico de gestação para remover' + ) + return + } + + try { + await mutateHandleDeleteAnimalPregnancyDiagnosis({ + propertyId, + animalId, + id: selectedAnimalPregnancyDiagnosis.id, + }) + + queryClient.invalidateQueries({ + queryKey: ['animal-pregnancy-diagnoses'], + exact: false, + }) + + toast.success('Diagnóstico de gestação removido com sucesso') + } catch { + toast.error(error?.message ?? 'Erro ao remover diagnóstico de gestação') + } finally { + closeDeleteAnimalPregnancyDiagnosisContainer() + } + }, [ + animalId, + closeDeleteAnimalPregnancyDiagnosisContainer, + error, + mutateHandleDeleteAnimalPregnancyDiagnosis, + propertyId, + queryClient, + selectedAnimalPregnancyDiagnosis, + ]) + + return ( + + + + + {`Deseja remover a gestação do animal do dia + ${ + selectedAnimalPregnancyDiagnosis?.date + ? format(selectedAnimalPregnancyDiagnosis.date, 'dd/MM/yyyy') + : '-' + }`} + + + Não será possível desfazer essa ação! + + + + Cancelar + + Remover + + + + + ) +} + +AnimalPregnancyDiagnosisDeleteDialog.displayName = + 'AnimalPregnancyDiagnosisDeleteDialog' diff --git a/src/app/modules/animals/presentation/components/animal-pregnancy-diagnosis-delete-dialog/index.ts b/src/app/modules/animals/presentation/components/animal-pregnancy-diagnosis-delete-dialog/index.ts new file mode 100644 index 00000000..6e7ee16d --- /dev/null +++ b/src/app/modules/animals/presentation/components/animal-pregnancy-diagnosis-delete-dialog/index.ts @@ -0,0 +1 @@ +export * from './animal-pregnancy-diagnosis-delete-dialog' diff --git a/src/app/modules/animals/presentation/contexts/animal-childbirth-context.tsx b/src/app/modules/animals/presentation/contexts/animal-childbirth-context.tsx new file mode 100644 index 00000000..5ccbe40f --- /dev/null +++ b/src/app/modules/animals/presentation/contexts/animal-childbirth-context.tsx @@ -0,0 +1,150 @@ +import { + createContext, + useCallback, + useMemo, + useState, + type PropsWithChildren, +} from 'react' + +import { useParams } from 'react-router-dom' + +import type { AnimalChildbirthModel } from '../../domain/models/animal-childbirths-model' +import type { AnimalChildbirthFilters } from '../types/animal-childbirth-types' + +type AnimalChildbirthContextValue = { + propertyId: number + animalId: number + selectedAnimalChildbirth?: AnimalChildbirthModel + filters: AnimalChildbirthFilters + handleChangeFilters: (newFilters: AnimalChildbirthFilters) => void + isOpenNewAnimalChildbirthForm: boolean + isOpenEditAnimalChildbirthForm: boolean + isOpenDeleteAnimalChildbirthContainer: boolean + openNewAnimalChildbirthForm: () => void + closeNewAnimalChildbirthForm: () => void + openEditAnimalChildbirthForm: ( + animalChildbirth: AnimalChildbirthModel + ) => void + closeEditAnimalChildbirthForm: () => void + openDeleteAnimalChildbirthContainer: ( + animalChildbirth: AnimalChildbirthModel + ) => void + closeDeleteAnimalChildbirthContainer: () => void +} + +export const AnimalChildbirthContext = + createContext( + {} as AnimalChildbirthContextValue + ) + +type AnimalChildbirthProviderProps = PropsWithChildren<{ + animalId: number +}> + +export function AnimalChildbirthProvider({ + children, + animalId, +}: AnimalChildbirthProviderProps) { + const params = useParams<{ propertyId: string }>() + + const [filters, setFilters] = useState({}) + + const handleChangeFilters = useCallback( + (newFilters: AnimalChildbirthFilters) => { + setFilters((prevState) => ({ + ...prevState, + ...newFilters, + })) + }, + [] + ) + + const [isOpenNewAnimalChildbirthForm, setIsOpenNewAnimalChildbirthForm] = + useState(false) + + const [isOpenEditAnimalChildbirthForm, setIsOpenEditAnimalChildbirthForm] = + useState(false) + + const [ + isOpenDeleteAnimalChildbirthContainer, + setIsOpenDeleteAnimalChildbirthContainer, + ] = useState(false) + + const [selectedAnimalChildbirth, setSelectedAnimalChildbirth] = + useState() + + const openNewAnimalChildbirthForm = useCallback(() => { + setIsOpenNewAnimalChildbirthForm(true) + }, []) + + const closeNewAnimalChildbirthForm = useCallback(() => { + setIsOpenNewAnimalChildbirthForm(false) + }, []) + + const openEditAnimalChildbirthForm = useCallback( + (animalChildbirth: AnimalChildbirthModel) => { + setSelectedAnimalChildbirth(animalChildbirth) + setIsOpenEditAnimalChildbirthForm(true) + }, + [] + ) + + const closeEditAnimalChildbirthForm = useCallback(() => { + setSelectedAnimalChildbirth(undefined) + setIsOpenEditAnimalChildbirthForm(false) + }, []) + + const openDeleteAnimalChildbirthContainer = useCallback( + (animalChildbirth: AnimalChildbirthModel) => { + setSelectedAnimalChildbirth(animalChildbirth) + setIsOpenDeleteAnimalChildbirthContainer(true) + }, + [] + ) + + const closeDeleteAnimalChildbirthContainer = useCallback(() => { + setSelectedAnimalChildbirth(undefined) + setIsOpenDeleteAnimalChildbirthContainer(false) + }, []) + + const providerValues = useMemo( + () => ({ + propertyId: Number(params.propertyId), + animalId, + filters, + handleChangeFilters, + selectedAnimalChildbirth, + isOpenNewAnimalChildbirthForm, + isOpenEditAnimalChildbirthForm, + isOpenDeleteAnimalChildbirthContainer, + openNewAnimalChildbirthForm, + closeNewAnimalChildbirthForm, + openEditAnimalChildbirthForm, + closeEditAnimalChildbirthForm, + openDeleteAnimalChildbirthContainer, + closeDeleteAnimalChildbirthContainer, + }), + [ + params.propertyId, + animalId, + filters, + handleChangeFilters, + selectedAnimalChildbirth, + isOpenNewAnimalChildbirthForm, + isOpenEditAnimalChildbirthForm, + isOpenDeleteAnimalChildbirthContainer, + openNewAnimalChildbirthForm, + closeNewAnimalChildbirthForm, + openEditAnimalChildbirthForm, + closeEditAnimalChildbirthForm, + openDeleteAnimalChildbirthContainer, + closeDeleteAnimalChildbirthContainer, + ] + ) + + return ( + + {children} + + ) +} diff --git a/src/app/modules/animals/presentation/contexts/animal-context.tsx b/src/app/modules/animals/presentation/contexts/animal-context.tsx new file mode 100644 index 00000000..9a882c1a --- /dev/null +++ b/src/app/modules/animals/presentation/contexts/animal-context.tsx @@ -0,0 +1,127 @@ +import { + createContext, + useCallback, + useMemo, + useState, + type PropsWithChildren, +} from 'react' + +import { useParams } from 'react-router-dom' + +import type { AnimalModel } from '../../domain/models/animals-model' +import type { AnimalFilters } from '../types/animal-types' + +type AnimalContextValue = { + propertyId: number + filters: AnimalFilters + handleChangeFilters: (newFilters: AnimalFilters) => void + selectedAnimal?: AnimalModel + isOpenNewAnimalForm: boolean + isOpenEditAnimalForm: boolean + isOpenDeleteAnimalContainer: boolean + openNewAnimalForm: () => void + closeNewAnimalForm: () => void + openEditAnimalForm: (animal: AnimalModel) => void + closeEditAnimalForm: () => void + openDeleteAnimalContainer: (animal: AnimalModel) => void + closeDeleteAnimalContainer: () => void +} + +export const AnimalContext = createContext( + {} as AnimalContextValue +) + +export function AnimalProvider({ children }: Readonly) { + const params = useParams<{ propertyId: string }>() + + const [filters, setFilters] = useState({}) + + const handleChangeFilters = useCallback((newFilters: AnimalFilters) => { + setFilters((prevState) => ({ + ...prevState, + ...newFilters, + })) + }, []) + + const [isOpenNewAnimalForm, setIsOpenNewAnimalForm] = useState(false) + + const [isOpenEditAnimalForm, setIsOpenEditAnimalForm] = useState(false) + + const [isOpenDeleteAnimalContainer, setIsOpenDeleteAnimalContainer] = + useState(false) + + const [selectedAnimal, setSelectedAnimal] = useState() + + const openNewAnimalForm = useCallback(() => { + setIsOpenNewAnimalForm(true) + }, []) + + const closeNewAnimalForm = useCallback(() => { + setIsOpenNewAnimalForm(false) + }, []) + + const openEditAnimalForm = useCallback((animal: AnimalModel) => { + setSelectedAnimal(animal) + setIsOpenEditAnimalForm(true) + }, []) + + const closeEditAnimalForm = useCallback(() => { + setSelectedAnimal(undefined) + setIsOpenEditAnimalForm(false) + }, []) + + const openDeleteAnimalContainer = useCallback((animal: AnimalModel) => { + setSelectedAnimal(animal) + setIsOpenDeleteAnimalContainer(true) + }, []) + + const closeDeleteAnimalContainer = useCallback(() => { + setSelectedAnimal(undefined) + setIsOpenDeleteAnimalContainer(false) + }, []) + + const providerValues = useMemo( + () => ({ + propertyId: Number(params.propertyId), + filters, + handleChangeFilters, + selectedAnimal, + isOpenNewAnimalForm, + isOpenEditAnimalForm, + isOpenDeleteAnimalContainer, + openNewAnimalForm, + closeNewAnimalForm, + openEditAnimalForm, + closeEditAnimalForm, + openDeleteAnimalContainer, + closeDeleteAnimalContainer, + }), + [ + params.propertyId, + filters, + handleChangeFilters, + selectedAnimal, + isOpenNewAnimalForm, + isOpenEditAnimalForm, + isOpenDeleteAnimalContainer, + openNewAnimalForm, + closeNewAnimalForm, + openEditAnimalForm, + closeEditAnimalForm, + openDeleteAnimalContainer, + closeDeleteAnimalContainer, + ] + ) + + if (!params.propertyId) { + return null + } + + return ( + + {children} + + ) +} + +AnimalProvider.displayName = 'AnimalProvider' diff --git a/src/app/modules/animals/presentation/contexts/animal-death-context.tsx b/src/app/modules/animals/presentation/contexts/animal-death-context.tsx new file mode 100644 index 00000000..4a1a7911 --- /dev/null +++ b/src/app/modules/animals/presentation/contexts/animal-death-context.tsx @@ -0,0 +1,142 @@ +import { + createContext, + useCallback, + useMemo, + useState, + type PropsWithChildren, +} from 'react' + +import { useParams } from 'react-router-dom' + +import type { AnimalDeathModel } from '../../domain/models/animal-deaths-model' +import type { AnimalDeathFilters } from '../types/animal-death-types' + +type AnimalDeathValue = { + propertyId: number + animalId: number + selectedAnimalDeath?: AnimalDeathModel + filters: AnimalDeathFilters + handleChangeFilters: (newFilters: AnimalDeathFilters) => void + isOpenNewAnimalDeathForm: boolean + isOpenEditAnimalDeathForm: boolean + isOpenDeleteAnimalDeathContainer: boolean + openNewAnimalDeathForm: () => void + closeNewAnimalDeathForm: () => void + openEditAnimalDeathForm: (animalDeath: AnimalDeathModel) => void + closeEditAnimalDeathForm: () => void + openDeleteAnimalDeathContainer: (animalDeath: AnimalDeathModel) => void + closeDeleteAnimalDeathContainer: () => void +} + +export const AnimalDeathContext = createContext( + {} as AnimalDeathValue +) + +type AnimalDeathProviderProps = PropsWithChildren<{ + animalId: number +}> + +export function AnimalDeathProvider({ + children, + animalId, +}: AnimalDeathProviderProps) { + const params = useParams<{ propertyId: string }>() + + const [filters, setFilters] = useState({}) + + const handleChangeFilters = useCallback((newFilters: AnimalDeathFilters) => { + setFilters((prevState) => ({ + ...prevState, + ...newFilters, + })) + }, []) + + const [isOpenNewAnimalDeathForm, setIsOpenNewAnimalDeathForm] = + useState(false) + + const [isOpenEditAnimalDeathForm, setIsOpenEditAnimalDeathForm] = + useState(false) + + const [ + isOpenDeleteAnimalDeathContainer, + setIsOpenDeleteAnimalDeathContainer, + ] = useState(false) + + const [selectedAnimalDeath, setSelectedAnimalDeath] = + useState() + + const openNewAnimalDeathForm = useCallback(() => { + setIsOpenNewAnimalDeathForm(true) + }, []) + + const closeNewAnimalDeathForm = useCallback(() => { + setIsOpenNewAnimalDeathForm(false) + }, []) + + const openEditAnimalDeathForm = useCallback( + (animalDeath: AnimalDeathModel) => { + setSelectedAnimalDeath(animalDeath) + setIsOpenEditAnimalDeathForm(true) + }, + [] + ) + + const closeEditAnimalDeathForm = useCallback(() => { + setSelectedAnimalDeath(undefined) + setIsOpenEditAnimalDeathForm(false) + }, []) + + const openDeleteAnimalDeathContainer = useCallback( + (animalDeath: AnimalDeathModel) => { + setSelectedAnimalDeath(animalDeath) + setIsOpenDeleteAnimalDeathContainer(true) + }, + [] + ) + + const closeDeleteAnimalDeathContainer = useCallback(() => { + setSelectedAnimalDeath(undefined) + setIsOpenDeleteAnimalDeathContainer(false) + }, []) + + const providerValues = useMemo( + () => ({ + propertyId: Number(params.propertyId), + animalId, + filters, + handleChangeFilters, + selectedAnimalDeath, + isOpenNewAnimalDeathForm, + isOpenEditAnimalDeathForm, + isOpenDeleteAnimalDeathContainer, + openNewAnimalDeathForm, + closeNewAnimalDeathForm, + openEditAnimalDeathForm, + closeEditAnimalDeathForm, + openDeleteAnimalDeathContainer, + closeDeleteAnimalDeathContainer, + }), + [ + params.propertyId, + animalId, + filters, + handleChangeFilters, + selectedAnimalDeath, + isOpenNewAnimalDeathForm, + isOpenEditAnimalDeathForm, + isOpenDeleteAnimalDeathContainer, + openNewAnimalDeathForm, + closeNewAnimalDeathForm, + openEditAnimalDeathForm, + closeEditAnimalDeathForm, + openDeleteAnimalDeathContainer, + closeDeleteAnimalDeathContainer, + ] + ) + + return ( + + {children} + + ) +} diff --git a/src/app/modules/animals/presentation/contexts/animal-disease-context.tsx b/src/app/modules/animals/presentation/contexts/animal-disease-context.tsx new file mode 100644 index 00000000..c3f1af67 --- /dev/null +++ b/src/app/modules/animals/presentation/contexts/animal-disease-context.tsx @@ -0,0 +1,145 @@ +import { + createContext, + useCallback, + useMemo, + useState, + type PropsWithChildren, +} from 'react' + +import { useParams } from 'react-router-dom' + +import type { AnimalDiseaseModel } from '../../domain/models/animal-diseases-model' +import type { AnimalDiseaseFilters } from '../types/animal-disease-types' + +type AnimalDiseaseValue = { + propertyId: number + animalId: number + selectedAnimalDisease?: AnimalDiseaseModel + filters: AnimalDiseaseFilters + handleChangeFilters: (newFilters: AnimalDiseaseFilters) => void + isOpenNewAnimalDiseaseForm: boolean + isOpenEditAnimalDiseaseForm: boolean + isOpenDeleteAnimalDiseaseContainer: boolean + openNewAnimalDiseaseForm: () => void + closeNewAnimalDiseaseForm: () => void + openEditAnimalDiseaseForm: (animalDisease: AnimalDiseaseModel) => void + closeEditAnimalDiseaseForm: () => void + openDeleteAnimalDiseaseContainer: (animalDisease: AnimalDiseaseModel) => void + closeDeleteAnimalDiseaseContainer: () => void +} + +export const AnimalDiseaseContext = createContext( + {} as AnimalDiseaseValue +) + +type AnimalDiseaseProviderProps = PropsWithChildren<{ + animalId: number +}> + +export function AnimalDiseaseProvider({ + children, + animalId, +}: AnimalDiseaseProviderProps) { + const params = useParams<{ propertyId: string }>() + + const [filters, setFilters] = useState({}) + + const handleChangeFilters = useCallback( + (newFilters: AnimalDiseaseFilters) => { + setFilters((prevState) => ({ + ...prevState, + ...newFilters, + })) + }, + [] + ) + + const [isOpenNewAnimalDiseaseForm, setIsOpenNewAnimalDiseaseForm] = + useState(false) + + const [isOpenEditAnimalDiseaseForm, setIsOpenEditAnimalDiseaseForm] = + useState(false) + + const [ + isOpenDeleteAnimalDiseaseContainer, + setIsOpenDeleteAnimalDiseaseContainer, + ] = useState(false) + + const [selectedAnimalDisease, setSelectedAnimalDisease] = + useState() + + const openNewAnimalDiseaseForm = useCallback(() => { + setIsOpenNewAnimalDiseaseForm(true) + }, []) + + const closeNewAnimalDiseaseForm = useCallback(() => { + setIsOpenNewAnimalDiseaseForm(false) + }, []) + + const openEditAnimalDiseaseForm = useCallback( + (animalDisease: AnimalDiseaseModel) => { + setSelectedAnimalDisease(animalDisease) + setIsOpenEditAnimalDiseaseForm(true) + }, + [] + ) + + const closeEditAnimalDiseaseForm = useCallback(() => { + setSelectedAnimalDisease(undefined) + setIsOpenEditAnimalDiseaseForm(false) + }, []) + + const openDeleteAnimalDiseaseContainer = useCallback( + (animalDisease: AnimalDiseaseModel) => { + setSelectedAnimalDisease(animalDisease) + setIsOpenDeleteAnimalDiseaseContainer(true) + }, + [] + ) + + const closeDeleteAnimalDiseaseContainer = useCallback(() => { + setSelectedAnimalDisease(undefined) + setIsOpenDeleteAnimalDiseaseContainer(false) + }, []) + + const providerValues = useMemo( + () => ({ + propertyId: Number(params.propertyId), + animalId, + filters, + handleChangeFilters, + selectedAnimalDisease, + isOpenNewAnimalDiseaseForm, + isOpenEditAnimalDiseaseForm, + isOpenDeleteAnimalDiseaseContainer, + openNewAnimalDiseaseForm, + closeNewAnimalDiseaseForm, + openEditAnimalDiseaseForm, + closeEditAnimalDiseaseForm, + openDeleteAnimalDiseaseContainer, + closeDeleteAnimalDiseaseContainer, + }), + [ + params.propertyId, + animalId, + filters, + handleChangeFilters, + selectedAnimalDisease, + isOpenNewAnimalDiseaseForm, + isOpenEditAnimalDiseaseForm, + isOpenDeleteAnimalDiseaseContainer, + openNewAnimalDiseaseForm, + closeNewAnimalDiseaseForm, + openEditAnimalDiseaseForm, + closeEditAnimalDiseaseForm, + openDeleteAnimalDiseaseContainer, + closeDeleteAnimalDiseaseContainer, + ] + ) + + return ( + + {children} + + ) +} diff --git a/src/app/modules/animals/presentation/contexts/animal-heifer-calf-stage-context.tsx b/src/app/modules/animals/presentation/contexts/animal-heifer-calf-stage-context.tsx new file mode 100644 index 00000000..58562233 --- /dev/null +++ b/src/app/modules/animals/presentation/contexts/animal-heifer-calf-stage-context.tsx @@ -0,0 +1,154 @@ +import { + createContext, + useCallback, + useMemo, + useState, + type PropsWithChildren, +} from 'react' + +import { useParams } from 'react-router-dom' + +import type { AnimalHeiferCalfStageModel } from '../../domain/models/animal-heifer-calf-stages-model' +import type { AnimalHeiferCalfStageFilters } from '../types/animal-heifer-calf-stage-types' + +type AnimalHeiferCalfStageContextValue = { + propertyId: number + animalId: number + selectedAnimalHeiferCalfStage?: AnimalHeiferCalfStageModel + filters: AnimalHeiferCalfStageFilters + handleChangeFilters: (newFilters: AnimalHeiferCalfStageFilters) => void + isOpenNewAnimalHeiferCalfStageForm: boolean + isOpenEditAnimalHeiferCalfStageForm: boolean + isOpenDeleteAnimalHeiferCalfStageContainer: boolean + openNewAnimalHeiferCalfStageForm: () => void + closeNewAnimalHeiferCalfStageForm: () => void + openEditAnimalHeiferCalfStageForm: ( + animalHeiferCalfStage: AnimalHeiferCalfStageModel + ) => void + closeEditAnimalHeiferCalfStageForm: () => void + openDeleteAnimalHeiferCalfStageContainer: ( + animalHeiferCalfStage: AnimalHeiferCalfStageModel + ) => void + closeDeleteAnimalHeiferCalfStageContainer: () => void +} + +export const AnimalHeiferCalfStageContext = + createContext( + {} as AnimalHeiferCalfStageContextValue + ) + +type AnimalHeiferCalfStageProviderProps = PropsWithChildren<{ + animalId: number +}> + +export function AnimalHeiferCalfStageProvider({ + children, + animalId, +}: AnimalHeiferCalfStageProviderProps) { + const params = useParams<{ propertyId: string }>() + + const [filters, setFilters] = useState({}) + + const handleChangeFilters = useCallback( + (newFilters: AnimalHeiferCalfStageFilters) => { + setFilters((prevState) => ({ + ...prevState, + ...newFilters, + })) + }, + [] + ) + + const [ + isOpenNewAnimalHeiferCalfStageForm, + setIsOpenNewAnimalHeiferCalfStageForm, + ] = useState(false) + + const [ + isOpenEditAnimalHeiferCalfStageForm, + setIsOpenEditAnimalHeiferCalfStageForm, + ] = useState(false) + + const [ + isOpenDeleteAnimalHeiferCalfStageContainer, + setIsOpenDeleteAnimalHeiferCalfStageContainer, + ] = useState(false) + + const [selectedAnimalHeiferCalfStage, setSelectedAnimalHeiferCalfStage] = + useState() + + const openNewAnimalHeiferCalfStageForm = useCallback(() => { + setIsOpenNewAnimalHeiferCalfStageForm(true) + }, []) + + const closeNewAnimalHeiferCalfStageForm = useCallback(() => { + setIsOpenNewAnimalHeiferCalfStageForm(false) + }, []) + + const openEditAnimalHeiferCalfStageForm = useCallback( + (animalHeiferCalfStage: AnimalHeiferCalfStageModel) => { + setSelectedAnimalHeiferCalfStage(animalHeiferCalfStage) + setIsOpenEditAnimalHeiferCalfStageForm(true) + }, + [] + ) + + const closeEditAnimalHeiferCalfStageForm = useCallback(() => { + setSelectedAnimalHeiferCalfStage(undefined) + setIsOpenEditAnimalHeiferCalfStageForm(false) + }, []) + + const openDeleteAnimalHeiferCalfStageContainer = useCallback( + (animalHeiferCalfStage: AnimalHeiferCalfStageModel) => { + setSelectedAnimalHeiferCalfStage(animalHeiferCalfStage) + setIsOpenDeleteAnimalHeiferCalfStageContainer(true) + }, + [] + ) + + const closeDeleteAnimalHeiferCalfStageContainer = useCallback(() => { + setSelectedAnimalHeiferCalfStage(undefined) + setIsOpenDeleteAnimalHeiferCalfStageContainer(false) + }, []) + + const providerValues = useMemo( + () => ({ + propertyId: Number(params.propertyId), + animalId, + filters, + handleChangeFilters, + selectedAnimalHeiferCalfStage, + isOpenNewAnimalHeiferCalfStageForm, + isOpenEditAnimalHeiferCalfStageForm, + isOpenDeleteAnimalHeiferCalfStageContainer, + openNewAnimalHeiferCalfStageForm, + closeNewAnimalHeiferCalfStageForm, + openEditAnimalHeiferCalfStageForm, + closeEditAnimalHeiferCalfStageForm, + openDeleteAnimalHeiferCalfStageContainer, + closeDeleteAnimalHeiferCalfStageContainer, + }), + [ + params.propertyId, + animalId, + filters, + handleChangeFilters, + selectedAnimalHeiferCalfStage, + isOpenNewAnimalHeiferCalfStageForm, + isOpenEditAnimalHeiferCalfStageForm, + isOpenDeleteAnimalHeiferCalfStageContainer, + openNewAnimalHeiferCalfStageForm, + closeNewAnimalHeiferCalfStageForm, + openEditAnimalHeiferCalfStageForm, + closeEditAnimalHeiferCalfStageForm, + openDeleteAnimalHeiferCalfStageContainer, + closeDeleteAnimalHeiferCalfStageContainer, + ] + ) + + return ( + + {children} + + ) +} diff --git a/src/app/modules/animals/presentation/contexts/animal-pregnancy-diagnosis-context.tsx b/src/app/modules/animals/presentation/contexts/animal-pregnancy-diagnosis-context.tsx new file mode 100644 index 00000000..74882292 --- /dev/null +++ b/src/app/modules/animals/presentation/contexts/animal-pregnancy-diagnosis-context.tsx @@ -0,0 +1,156 @@ +import { + createContext, + useCallback, + useMemo, + useState, + type PropsWithChildren, +} from 'react' + +import { useParams } from 'react-router-dom' + +import type { AnimalPregnancyDiagnosisModel } from '../../domain/models/animal-pregnancy-diagnoses-model' +import type { AnimalPregnancyDiagnosisFilters } from '../types/animal-pregnancy-diagnosis-types' + +type AnimalPregnancyDiagnosisValue = { + propertyId: number + animalId: number + selectedAnimalPregnancyDiagnosis?: AnimalPregnancyDiagnosisModel + filters: AnimalPregnancyDiagnosisFilters + handleChangeFilters: (newFilters: AnimalPregnancyDiagnosisFilters) => void + isOpenNewAnimalPregnancyDiagnosisForm: boolean + isOpenEditAnimalPregnancyDiagnosisForm: boolean + isOpenDeleteAnimalPregnancyDiagnosisContainer: boolean + openNewAnimalPregnancyDiagnosisForm: () => void + closeNewAnimalPregnancyDiagnosisForm: () => void + openEditAnimalPregnancyDiagnosisForm: ( + animalPregnancyDiagnosis: AnimalPregnancyDiagnosisModel + ) => void + closeEditAnimalPregnancyDiagnosisForm: () => void + openDeleteAnimalPregnancyDiagnosisContainer: ( + animalPregnancyDiagnosis: AnimalPregnancyDiagnosisModel + ) => void + closeDeleteAnimalPregnancyDiagnosisContainer: () => void +} + +export const AnimalPregnancyDiagnosisContext = + createContext( + {} as AnimalPregnancyDiagnosisValue + ) + +type AnimalPregnancyDiagnosisProviderProps = PropsWithChildren<{ + animalId: number +}> + +export function AnimalPregnancyDiagnosisProvider({ + children, + animalId, +}: AnimalPregnancyDiagnosisProviderProps) { + const params = useParams<{ propertyId: string }>() + + const [filters, setFilters] = useState({}) + + const handleChangeFilters = useCallback( + (newFilters: AnimalPregnancyDiagnosisFilters) => { + setFilters((prevState) => ({ + ...prevState, + ...newFilters, + })) + }, + [] + ) + + const [ + isOpenNewAnimalPregnancyDiagnosisForm, + setIsOpenNewAnimalPregnancyDiagnosisForm, + ] = useState(false) + + const [ + isOpenEditAnimalPregnancyDiagnosisForm, + setIsOpenEditAnimalPregnancyDiagnosisForm, + ] = useState(false) + + const [ + isOpenDeleteAnimalPregnancyDiagnosisContainer, + setIsOpenDeleteAnimalPregnancyDiagnosisContainer, + ] = useState(false) + + const [ + selectedAnimalPregnancyDiagnosis, + setSelectedAnimalPregnancyDiagnosis, + ] = useState() + + const openNewAnimalPregnancyDiagnosisForm = useCallback(() => { + setIsOpenNewAnimalPregnancyDiagnosisForm(true) + }, []) + + const closeNewAnimalPregnancyDiagnosisForm = useCallback(() => { + setIsOpenNewAnimalPregnancyDiagnosisForm(false) + }, []) + + const openEditAnimalPregnancyDiagnosisForm = useCallback( + (animalPregnancyDiagnosis: AnimalPregnancyDiagnosisModel) => { + setSelectedAnimalPregnancyDiagnosis(animalPregnancyDiagnosis) + setIsOpenEditAnimalPregnancyDiagnosisForm(true) + }, + [] + ) + + const closeEditAnimalPregnancyDiagnosisForm = useCallback(() => { + setSelectedAnimalPregnancyDiagnosis(undefined) + setIsOpenEditAnimalPregnancyDiagnosisForm(false) + }, []) + + const openDeleteAnimalPregnancyDiagnosisContainer = useCallback( + (animalPregnancyDiagnosis: AnimalPregnancyDiagnosisModel) => { + setSelectedAnimalPregnancyDiagnosis(animalPregnancyDiagnosis) + setIsOpenDeleteAnimalPregnancyDiagnosisContainer(true) + }, + [] + ) + + const closeDeleteAnimalPregnancyDiagnosisContainer = useCallback(() => { + setSelectedAnimalPregnancyDiagnosis(undefined) + setIsOpenDeleteAnimalPregnancyDiagnosisContainer(false) + }, []) + + const providerValues = useMemo( + () => ({ + propertyId: Number(params.propertyId), + animalId, + filters, + handleChangeFilters, + selectedAnimalPregnancyDiagnosis, + isOpenNewAnimalPregnancyDiagnosisForm, + isOpenEditAnimalPregnancyDiagnosisForm, + isOpenDeleteAnimalPregnancyDiagnosisContainer, + openNewAnimalPregnancyDiagnosisForm, + closeNewAnimalPregnancyDiagnosisForm, + openEditAnimalPregnancyDiagnosisForm, + closeEditAnimalPregnancyDiagnosisForm, + openDeleteAnimalPregnancyDiagnosisContainer, + closeDeleteAnimalPregnancyDiagnosisContainer, + }), + [ + params.propertyId, + animalId, + filters, + handleChangeFilters, + selectedAnimalPregnancyDiagnosis, + isOpenNewAnimalPregnancyDiagnosisForm, + isOpenEditAnimalPregnancyDiagnosisForm, + isOpenDeleteAnimalPregnancyDiagnosisContainer, + openNewAnimalPregnancyDiagnosisForm, + closeNewAnimalPregnancyDiagnosisForm, + openEditAnimalPregnancyDiagnosisForm, + closeEditAnimalPregnancyDiagnosisForm, + openDeleteAnimalPregnancyDiagnosisContainer, + closeDeleteAnimalPregnancyDiagnosisContainer, + ] + ) + + return ( + + {children} + + ) +} diff --git a/src/app/modules/animals/presentation/forms/animal-childbirth-form/animal-childbirth-form-inputs.tsx b/src/app/modules/animals/presentation/forms/animal-childbirth-form/animal-childbirth-form-inputs.tsx new file mode 100644 index 00000000..baa56cef --- /dev/null +++ b/src/app/modules/animals/presentation/forms/animal-childbirth-form/animal-childbirth-form-inputs.tsx @@ -0,0 +1,164 @@ +import { useState } from 'react' + +import { useFormContext } from 'react-hook-form' + +import { floatMask } from '@/core/masker' +import { + DatePicker, + Form, + Select, + Input, + Combobox, +} from '@/core/presentation/components/ui' +import { useAllBreedsQuery, useDebounce } from '@/core/presentation/hooks' + +import { AnimalChildbirthFormSchema } from '../../validations/animal-childbirth-form-schema' + +export function AnimalChildbirthFormInputs() { + const form = useFormContext() + + const [searchBreed, setSearchBreed] = useState('') + + const debouncedBreed = useDebounce({ value: searchBreed }) + + const { allBreeds, isLoading } = useAllBreedsQuery({ + filters: { + name: { + value: debouncedBreed, + type: 'LIKE', + }, + }, + }) + + return ( + <> + { + const { error } = fieldState + + return ( + + Data do Parto* + + + + + + ) + }} + /> + + { + const { error } = fieldState + + return ( + + Sexo do Bezerro* + + + + + + + + Macho + Fêmea + + + + + ) + }} + /> + + { + const { error } = fieldState + + return ( + + Peso do Bezerro* + + + + + + ) + }} + /> + + { + const { error } = fieldState + + return ( + + Condição do Nascimento* + + + + + + + + Vivo + Morto + + + + + ) + }} + /> + + { + const { error } = fieldState + + return ( + + Raça* + + + + + + ) + }} + /> + + ) +} + +AnimalChildbirthFormInputs.displayName = 'AnimalChildbirthFormInputs' diff --git a/src/app/modules/animals/presentation/forms/animal-childbirth-form/animal-childbirth-form.tsx b/src/app/modules/animals/presentation/forms/animal-childbirth-form/animal-childbirth-form.tsx new file mode 100644 index 00000000..9ff4d2d7 --- /dev/null +++ b/src/app/modules/animals/presentation/forms/animal-childbirth-form/animal-childbirth-form.tsx @@ -0,0 +1,18 @@ +import { CreateAnimalChildbirthForm } from './create-animal-childbirth-form' +import { EditAnimalChildbirthForm } from './edit-animal-childbirth-form' + +type AnimalChildbirthFormProps = { + id?: number +} + +export function AnimalChildbirthForm({ + id, +}: Readonly) { + if (id) { + return + } + + return +} + +AnimalChildbirthForm.displayName = 'AnimalChildbirthForm' diff --git a/src/app/modules/animals/presentation/forms/animal-childbirth-form/animal-childbirth-initial-data.ts b/src/app/modules/animals/presentation/forms/animal-childbirth-form/animal-childbirth-initial-data.ts new file mode 100644 index 00000000..6146cd0f --- /dev/null +++ b/src/app/modules/animals/presentation/forms/animal-childbirth-form/animal-childbirth-initial-data.ts @@ -0,0 +1,12 @@ +import type { AnimalChildbirthFormSchema } from '../../validations/animal-childbirth-form-schema' + +export const ANIMAL_CHILDBIRTH_INITIAL_FORM_DATA: AnimalChildbirthFormSchema = { + date: new Date(), + condition: 'ALIVE', + gender: 'MALE', + weight: '', + breed: { + label: '', + value: 0, + }, +} diff --git a/src/app/modules/animals/presentation/forms/animal-childbirth-form/create-animal-childbirth-form.tsx b/src/app/modules/animals/presentation/forms/animal-childbirth-form/create-animal-childbirth-form.tsx new file mode 100644 index 00000000..0ebf54bc --- /dev/null +++ b/src/app/modules/animals/presentation/forms/animal-childbirth-form/create-animal-childbirth-form.tsx @@ -0,0 +1,120 @@ +import { useCallback } from 'react' + +import { zodResolver } from '@hookform/resolvers/zod' +import { useMutation, useQueryClient } from '@tanstack/react-query' +import toast from 'react-hot-toast' + +import { + Button, + Form, + ScrollArea, + Sheet, +} from '@/core/presentation/components/ui' +import { useHookForm } from '@/core/presentation/hooks' + +import { makeRemoteCreateAnimalChildbirthUseCase } from '../../../main/factories/use-cases/animal-childbirths-use-cases' +import { useAnimalChildbirthContext } from '../../hooks/animal-childbirth-context.hook' +import { + animalChildbirthFormSchema, + AnimalChildbirthFormSchema, +} from '../../validations/animal-childbirth-form-schema' + +import { AnimalChildbirthFormInputs } from './animal-childbirth-form-inputs' +import { ANIMAL_CHILDBIRTH_INITIAL_FORM_DATA } from './animal-childbirth-initial-data' + +export function CreateAnimalChildbirthForm() { + const { + propertyId, + animalId, + isOpenNewAnimalChildbirthForm, + closeNewAnimalChildbirthForm, + } = useAnimalChildbirthContext() + + const createAnimalChildbirthUseCase = + makeRemoteCreateAnimalChildbirthUseCase() + + const queryClient = useQueryClient() + + const form = useHookForm({ + defaultValues: ANIMAL_CHILDBIRTH_INITIAL_FORM_DATA, + resolver: zodResolver(animalChildbirthFormSchema), + }) + + const { mutateAsync: mutateHandleCreateAnimalChildbirth } = useMutation({ + mutationFn: createAnimalChildbirthUseCase.execute, + }) + + const handleCreateAnimalChildbirth = useCallback( + async (data: AnimalChildbirthFormSchema) => { + try { + await mutateHandleCreateAnimalChildbirth({ + propertyId, + animalId, + animalChildbirth: data, + }) + + queryClient.invalidateQueries({ + queryKey: ['animal-childbirths'], + exact: false, + }) + + toast.success('Parto de animal foi cadastrado com sucesso') + + form.reset(ANIMAL_CHILDBIRTH_INITIAL_FORM_DATA) + + closeNewAnimalChildbirthForm() + } catch { + toast.error('Erro ao cadastrar parto de animal') + } + }, + [ + animalId, + closeNewAnimalChildbirthForm, + form, + mutateHandleCreateAnimalChildbirth, + propertyId, + queryClient, + ] + ) + + return ( + + + + Novo Parto + + Preencha o formulário para criar um novo parto + + + + + +
+ + +
+
+ + + + +
+
+ ) +} + +CreateAnimalChildbirthForm.displayName = 'CreateAnimalChildbirthForm' diff --git a/src/app/modules/animals/presentation/forms/animal-childbirth-form/edit-animal-childbirth-form.tsx b/src/app/modules/animals/presentation/forms/animal-childbirth-form/edit-animal-childbirth-form.tsx new file mode 100644 index 00000000..118e947a --- /dev/null +++ b/src/app/modules/animals/presentation/forms/animal-childbirth-form/edit-animal-childbirth-form.tsx @@ -0,0 +1,144 @@ +import { useCallback } from 'react' + +import { zodResolver } from '@hookform/resolvers/zod' +import { useMutation, useQueryClient } from '@tanstack/react-query' +import toast from 'react-hot-toast' + +import { + Button, + Form, + Loading, + ScrollArea, + Sheet, +} from '@/core/presentation/components/ui' +import { useHookForm } from '@/core/presentation/hooks' + +import { makeRemoteUpdateAnimalChildbirthUseCase } from '../../../main/factories/use-cases/animal-childbirths-use-cases' +import { useAnimalChildbirthContext } from '../../hooks/animal-childbirth-context.hook' +import { useAnimalChildbirthQuery } from '../../hooks/queries/animal-childbirth-query.hook' +import { + animalChildbirthFormSchema, + type AnimalChildbirthFormSchema, +} from '../../validations/animal-childbirth-form-schema' + +import { AnimalChildbirthFormInputs } from './animal-childbirth-form-inputs' +import { ANIMAL_CHILDBIRTH_INITIAL_FORM_DATA } from './animal-childbirth-initial-data' + +export function EditAnimalChildbirthForm() { + const { + propertyId, + animalId, + isOpenEditAnimalChildbirthForm, + closeEditAnimalChildbirthForm, + selectedAnimalChildbirth, + } = useAnimalChildbirthContext() + + const { isLoading, animalChildbirth } = useAnimalChildbirthQuery({ + id: selectedAnimalChildbirth!.id, + propertyId, + animalId, + }) + + const updateAnimalChildbirthUseCase = + makeRemoteUpdateAnimalChildbirthUseCase() + + const queryClient = useQueryClient() + + const form = useHookForm({ + defaultValues: ANIMAL_CHILDBIRTH_INITIAL_FORM_DATA, + ...(animalChildbirth && { + values: { + ...animalChildbirth, + }, + }), + resolver: zodResolver(animalChildbirthFormSchema), + }) + + const { mutateAsync: mutateHandleUpdateAnimalChildbirth } = useMutation({ + mutationFn: updateAnimalChildbirthUseCase.execute, + }) + + const handleUpdateAnimalChildbirth = useCallback( + async (data: AnimalChildbirthFormSchema) => { + try { + if (!selectedAnimalChildbirth) { + toast.error('Erro ao atualizar parto do animal') + return + } + + await mutateHandleUpdateAnimalChildbirth({ + animalChildbirth: { + ...data, + id: selectedAnimalChildbirth.id, + }, + animalId, + propertyId, + }) + queryClient.invalidateQueries({ + queryKey: ['animal-childbirths'], + exact: false, + }) + toast.success('Parto de animal foi editado com sucesso') + form.reset(ANIMAL_CHILDBIRTH_INITIAL_FORM_DATA) + closeEditAnimalChildbirthForm() + } catch { + toast.error('Erro ao salvar alterações') + } + }, + [ + animalId, + closeEditAnimalChildbirthForm, + form, + mutateHandleUpdateAnimalChildbirth, + propertyId, + queryClient, + selectedAnimalChildbirth, + ] + ) + + return ( + + + + {`Editar Parto do Animal ${selectedAnimalChildbirth?.breed}`} + + Preencha o formulário para editar o parto do animal + + + + +
+ {isLoading ? ( +
+ +
+ ) : ( + + )} + +
+
+ + + + +
+
+ ) +} + +EditAnimalChildbirthForm.displayName = 'EditAnimalChildbirthForm' diff --git a/src/app/modules/animals/presentation/forms/animal-childbirth-form/index.ts b/src/app/modules/animals/presentation/forms/animal-childbirth-form/index.ts new file mode 100644 index 00000000..b89c25ff --- /dev/null +++ b/src/app/modules/animals/presentation/forms/animal-childbirth-form/index.ts @@ -0,0 +1 @@ +export * from './animal-childbirth-form' diff --git a/src/app/modules/animals/presentation/forms/animal-death-form/animal-death-form-inputs.tsx b/src/app/modules/animals/presentation/forms/animal-death-form/animal-death-form-inputs.tsx new file mode 100644 index 00000000..e4714a6c --- /dev/null +++ b/src/app/modules/animals/presentation/forms/animal-death-form/animal-death-form-inputs.tsx @@ -0,0 +1,55 @@ +import { useFormContext } from 'react-hook-form' + +import { DatePicker, Form, Textarea } from '@/core/presentation/components/ui' + +import { AnimalDeathFormSchema } from '../../validations/animal-death-form-schema' + +export function AnimalDeathFormInputs() { + const form = useFormContext() + + return ( + <> + { + const { error } = fieldState + + return ( + + Data do óbito* + + + + + + ) + }} + /> + + { + const { error } = fieldState + + return ( + + Causa do óbito* + +